@macrostrat/column-views 2.0.1 → 2.1.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 (375) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/{column-views.8dd877af.js → column-views.006d5180.js} +2 -1
  3. package/dist/esm/column-views.006d5180.js.map +1 -0
  4. package/dist/esm/column-views.05586d1f.js +22 -0
  5. package/dist/esm/column-views.05586d1f.js.map +1 -0
  6. package/dist/esm/column-views.0732894f.js +86 -0
  7. package/dist/esm/column-views.0732894f.js.map +1 -0
  8. package/dist/esm/{column-views.134b2e2a.js → column-views.08440694.js} +2 -2
  9. package/dist/esm/{column-views.134b2e2a.js.map → column-views.08440694.js.map} +1 -1
  10. package/dist/esm/{column-views.aa9fcdba.js → column-views.0c14e18e.js} +18 -15
  11. package/dist/esm/column-views.0c14e18e.js.map +1 -0
  12. package/dist/esm/column-views.10eba967.js +11 -0
  13. package/dist/esm/column-views.10eba967.js.map +1 -0
  14. package/dist/esm/{column-views.8e51206e.js → column-views.1af9761e.js} +19 -3
  15. package/dist/esm/column-views.1af9761e.js.map +1 -0
  16. package/dist/esm/column-views.1c92b88f.js +16 -0
  17. package/dist/esm/column-views.1c92b88f.js.map +1 -0
  18. package/dist/esm/{column-views.ea237aa8.js → column-views.1e055ed5.js} +6 -5
  19. package/dist/esm/column-views.1e055ed5.js.map +1 -0
  20. package/dist/esm/{column-views.1ece326b.js → column-views.1f123354.js} +60 -11
  21. package/dist/esm/column-views.1f123354.js.map +1 -0
  22. package/dist/esm/{column-views.240ef158.css → column-views.217078ab.css} +4 -3
  23. package/dist/esm/column-views.217078ab.css.map +1 -0
  24. package/dist/esm/column-views.2c45a7b5.js +25 -0
  25. package/dist/esm/column-views.2c45a7b5.js.map +1 -0
  26. package/dist/esm/column-views.2ca34210.js +151 -0
  27. package/dist/esm/column-views.2ca34210.js.map +1 -0
  28. package/dist/esm/{column-views.3bec70d6.js → column-views.2d8e0e0f.js} +9 -8
  29. package/dist/esm/column-views.2d8e0e0f.js.map +1 -0
  30. package/dist/esm/column-views.3048acc1.js +66 -0
  31. package/dist/esm/column-views.3048acc1.js.map +1 -0
  32. package/dist/esm/column-views.39657bbf.js.map +1 -1
  33. package/dist/esm/{column-views.28ee5f43.js → column-views.3ba9213d.js} +16 -5
  34. package/dist/esm/column-views.3ba9213d.js.map +1 -0
  35. package/dist/esm/column-views.3de4dc43.js.map +1 -1
  36. package/dist/esm/column-views.403a7b48.css +24 -0
  37. package/dist/esm/column-views.403a7b48.css.map +1 -0
  38. package/dist/esm/column-views.4637f4ce.js.map +1 -1
  39. package/dist/esm/{column-views.86c4b36f.js → column-views.4ab0ec82.js} +44 -13
  40. package/dist/esm/column-views.4ab0ec82.js.map +1 -0
  41. package/dist/esm/{column-views.9bdd477a.js → column-views.4d22c21c.js} +2 -2
  42. package/dist/esm/{column-views.9bdd477a.js.map → column-views.4d22c21c.js.map} +1 -1
  43. package/dist/esm/{column-views.fa6f3292.js → column-views.4df0b803.js} +7 -8
  44. package/dist/esm/column-views.4df0b803.js.map +1 -0
  45. package/dist/esm/{column-views.b775c0a3.js → column-views.52a6eb47.js} +3 -3
  46. package/dist/esm/{column-views.b775c0a3.js.map → column-views.52a6eb47.js.map} +1 -1
  47. package/dist/esm/column-views.57636733.css +22 -0
  48. package/dist/esm/column-views.57636733.css.map +1 -0
  49. package/dist/esm/{column-views.68409161.js → column-views.59bb0cba.js} +2 -3
  50. package/dist/esm/column-views.59bb0cba.js.map +1 -0
  51. package/dist/esm/column-views.5cc09c1d.js.map +1 -1
  52. package/dist/esm/column-views.5e2dc19d.js +187 -0
  53. package/dist/esm/column-views.5e2dc19d.js.map +1 -0
  54. package/dist/esm/{column-views.33dbc778.js → column-views.633c42a3.js} +2 -1
  55. package/dist/esm/column-views.633c42a3.js.map +1 -0
  56. package/dist/esm/{column-views.e77b9d6b.js → column-views.6549388a.js} +4 -5
  57. package/dist/esm/column-views.6549388a.js.map +1 -0
  58. package/dist/esm/{column-views.dff52504.js → column-views.686d21ad.js} +10 -1
  59. package/dist/esm/column-views.686d21ad.js.map +1 -0
  60. package/dist/esm/column-views.6992ca88.js +25 -0
  61. package/dist/esm/column-views.6992ca88.js.map +1 -0
  62. package/dist/esm/column-views.6d6b73b4.js.map +1 -1
  63. package/dist/esm/column-views.708140ab.css +36 -0
  64. package/dist/esm/column-views.708140ab.css.map +1 -0
  65. package/dist/esm/{column-views.650bd9f5.js → column-views.7715e35e.js} +17 -13
  66. package/dist/esm/column-views.7715e35e.js.map +1 -0
  67. package/dist/esm/{column-views.a98214b2.js → column-views.7e350ae2.js} +3 -3
  68. package/dist/esm/{column-views.a98214b2.js.map → column-views.7e350ae2.js.map} +1 -1
  69. package/dist/esm/{column-views.30646469.js → column-views.85c6a716.js} +2 -2
  70. package/dist/esm/column-views.85c6a716.js.map +1 -0
  71. package/dist/esm/column-views.86619334.js +9 -0
  72. package/dist/esm/column-views.86619334.js.map +1 -0
  73. package/dist/esm/{column-views.40c1f361.js → column-views.89b9e542.js} +11 -18
  74. package/dist/esm/column-views.89b9e542.js.map +1 -0
  75. package/dist/esm/{column-views.1c589cc4.js → column-views.9892f825.js} +55 -4
  76. package/dist/esm/column-views.9892f825.js.map +1 -0
  77. package/dist/esm/{column-views.1edc7300.js → column-views.9b77388d.js} +6 -5
  78. package/dist/esm/column-views.9b77388d.js.map +1 -0
  79. package/dist/esm/column-views.a7c5ae16.js +25 -0
  80. package/dist/esm/column-views.a7c5ae16.js.map +1 -0
  81. package/dist/esm/{column-views.5c02fee2.js → column-views.a91dde4a.js} +10 -9
  82. package/dist/esm/column-views.a91dde4a.js.map +1 -0
  83. package/dist/esm/{column-views.fc2b4611.js → column-views.a94e99a2.js} +2 -2
  84. package/dist/esm/{column-views.fc2b4611.js.map → column-views.a94e99a2.js.map} +1 -1
  85. package/dist/esm/{column-views.e2b9c23c.css → column-views.b17f793f.css} +21 -1
  86. package/dist/esm/column-views.b17f793f.css.map +1 -0
  87. package/dist/esm/{column-views.9804efda.js → column-views.b9fe5176.js} +14 -8
  88. package/dist/esm/column-views.b9fe5176.js.map +1 -0
  89. package/dist/esm/{column-views.b2e5f1d9.js → column-views.bcffe6e5.js} +4 -4
  90. package/dist/esm/{column-views.b2e5f1d9.js.map → column-views.bcffe6e5.js.map} +1 -1
  91. package/dist/esm/{column-views.f1efcc2c.js → column-views.c25e8b32.js} +3 -3
  92. package/dist/esm/{column-views.f1efcc2c.js.map → column-views.c25e8b32.js.map} +1 -1
  93. package/dist/esm/{column-views.9ced149e.js → column-views.c32d6ad0.js} +25 -6
  94. package/dist/esm/column-views.c32d6ad0.js.map +1 -0
  95. package/dist/esm/{column-views.34636ec7.js → column-views.c71c321c.js} +11 -11
  96. package/dist/esm/column-views.c71c321c.js.map +1 -0
  97. package/dist/esm/{column-views.f2e5a72f.js → column-views.c8cc249a.js} +3 -3
  98. package/dist/esm/{column-views.f2e5a72f.js.map → column-views.c8cc249a.js.map} +1 -1
  99. package/dist/esm/{column-views.5b2635fd.js → column-views.c8e2983a.js} +4 -4
  100. package/dist/esm/{column-views.5b2635fd.js.map → column-views.c8e2983a.js.map} +1 -1
  101. package/dist/esm/{column-views.88de2cee.js → column-views.cfcf6096.js} +4 -4
  102. package/dist/esm/{column-views.88de2cee.js.map → column-views.cfcf6096.js.map} +1 -1
  103. package/dist/esm/{column-views.4c4c5bac.js → column-views.d2037465.js} +14 -8
  104. package/dist/esm/column-views.d2037465.js.map +1 -0
  105. package/dist/esm/column-views.dc42f5d0.js.map +1 -1
  106. package/dist/esm/column-views.e20f6a4b.js +124 -0
  107. package/dist/esm/column-views.e20f6a4b.js.map +1 -0
  108. package/dist/esm/{column-views.57c4ddf3.js → column-views.f08929e2.js} +2 -2
  109. package/dist/esm/column-views.f08929e2.js.map +1 -0
  110. package/dist/esm/column-views.f13a1d6e.js +37 -0
  111. package/dist/esm/column-views.f13a1d6e.js.map +1 -0
  112. package/dist/esm/column-views.f9dab157.js.map +1 -1
  113. package/dist/esm/column-views.fa19cea0.js +108 -0
  114. package/dist/esm/column-views.fa19cea0.js.map +1 -0
  115. package/dist/esm/{column-views.f71ec4b4.js → column-views.fdb0e9ec.js} +67 -30
  116. package/dist/esm/column-views.fdb0e9ec.js.map +1 -0
  117. package/dist/esm/index.d.ts +325 -296
  118. package/dist/esm/index.d.ts.map +1 -1
  119. package/dist/esm/index.js +13 -11
  120. package/dist/esm/index.js.map +1 -1
  121. package/dist/node/column-views.04407342.js +2 -0
  122. package/dist/node/column-views.04407342.js.map +1 -0
  123. package/dist/node/column-views.06951a55.js +2 -0
  124. package/dist/node/column-views.06951a55.js.map +1 -0
  125. package/dist/node/column-views.06b0534e.js +2 -0
  126. package/dist/node/column-views.06b0534e.js.map +1 -0
  127. package/dist/node/column-views.0859f5d2.js +2 -0
  128. package/dist/node/column-views.0859f5d2.js.map +1 -0
  129. package/dist/node/column-views.10a2bad6.js +2 -0
  130. package/dist/node/column-views.10a2bad6.js.map +1 -0
  131. package/dist/node/column-views.12a70e9d.js +2 -0
  132. package/dist/node/column-views.12a70e9d.js.map +1 -0
  133. package/dist/node/column-views.139b0855.js +2 -0
  134. package/dist/node/column-views.139b0855.js.map +1 -0
  135. package/dist/node/column-views.1a0b56fc.js +2 -0
  136. package/dist/node/column-views.1a0b56fc.js.map +1 -0
  137. package/dist/node/column-views.1de87649.js +2 -0
  138. package/dist/node/column-views.1de87649.js.map +1 -0
  139. package/dist/node/column-views.1e94d562.js +2 -0
  140. package/dist/node/column-views.1e94d562.js.map +1 -0
  141. package/dist/node/column-views.28609db2.css +2 -0
  142. package/dist/node/column-views.28609db2.css.map +1 -0
  143. package/dist/node/column-views.286d444d.js +2 -0
  144. package/dist/node/column-views.286d444d.js.map +1 -0
  145. package/dist/node/column-views.2877f398.js +2 -0
  146. package/dist/node/column-views.2877f398.js.map +1 -0
  147. package/dist/node/column-views.2a70b9a2.js +2 -0
  148. package/dist/node/column-views.2a70b9a2.js.map +1 -0
  149. package/dist/node/column-views.2e4e357d.js +2 -0
  150. package/dist/node/column-views.2e4e357d.js.map +1 -0
  151. package/dist/node/column-views.3345cd7a.js +2 -0
  152. package/dist/node/column-views.3345cd7a.js.map +1 -0
  153. package/dist/node/column-views.33752461.js +2 -0
  154. package/dist/node/column-views.33752461.js.map +1 -0
  155. package/dist/node/column-views.39d3a0be.js +2 -0
  156. package/dist/node/column-views.39d3a0be.js.map +1 -0
  157. package/dist/node/column-views.3a55ecd7.css +2 -0
  158. package/dist/node/column-views.3a55ecd7.css.map +1 -0
  159. package/dist/node/column-views.3bd09ad6.js +2 -0
  160. package/dist/node/column-views.3bd09ad6.js.map +1 -0
  161. package/dist/node/column-views.3cb3345e.js +2 -0
  162. package/dist/node/column-views.3cb3345e.js.map +1 -0
  163. package/dist/node/column-views.41876859.js +2 -0
  164. package/dist/node/column-views.41876859.js.map +1 -0
  165. package/dist/node/column-views.45168c80.js +2 -0
  166. package/dist/node/column-views.45168c80.js.map +1 -0
  167. package/dist/node/column-views.4e2bdf9b.js +2 -0
  168. package/dist/node/column-views.4e2bdf9b.js.map +1 -0
  169. package/dist/node/column-views.51fbed89.js +2 -0
  170. package/dist/node/column-views.51fbed89.js.map +1 -0
  171. package/dist/node/column-views.536dc54e.js +2 -0
  172. package/dist/node/column-views.536dc54e.js.map +1 -0
  173. package/dist/node/column-views.5b6833f0.js +2 -0
  174. package/dist/node/column-views.5b6833f0.js.map +1 -0
  175. package/dist/node/column-views.5c1b0eeb.css +2 -0
  176. package/dist/node/column-views.5c1b0eeb.css.map +1 -0
  177. package/dist/node/column-views.664dc6c9.js +2 -0
  178. package/dist/node/column-views.664dc6c9.js.map +1 -0
  179. package/dist/node/column-views.6a0a35e7.js +2 -0
  180. package/dist/node/column-views.6a0a35e7.js.map +1 -0
  181. package/dist/node/column-views.6a4c2100.css +2 -0
  182. package/dist/node/column-views.6a4c2100.css.map +1 -0
  183. package/dist/node/column-views.6a9da051.js +2 -0
  184. package/dist/node/column-views.6a9da051.js.map +1 -0
  185. package/dist/node/column-views.6b441349.js +2 -0
  186. package/dist/node/column-views.6b441349.js.map +1 -0
  187. package/dist/node/column-views.6b6b756b.js +2 -0
  188. package/dist/node/column-views.6b6b756b.js.map +1 -0
  189. package/dist/node/column-views.6bba8c57.js +2 -0
  190. package/dist/node/column-views.6bba8c57.js.map +1 -0
  191. package/dist/node/column-views.6da49480.js +2 -0
  192. package/dist/node/column-views.6da49480.js.map +1 -0
  193. package/dist/node/column-views.7350ac73.js +2 -0
  194. package/dist/node/column-views.7350ac73.js.map +1 -0
  195. package/dist/node/column-views.755f726e.js +2 -0
  196. package/dist/node/column-views.755f726e.js.map +1 -0
  197. package/dist/node/column-views.770d2c95.js +2 -0
  198. package/dist/node/column-views.770d2c95.js.map +1 -0
  199. package/dist/node/column-views.78d3f3c5.js +2 -0
  200. package/dist/node/column-views.78d3f3c5.js.map +1 -0
  201. package/dist/node/column-views.7b9bd06e.css +2 -0
  202. package/dist/node/column-views.7b9bd06e.css.map +1 -0
  203. package/dist/node/column-views.7d45bbeb.js +2 -0
  204. package/dist/node/column-views.7d45bbeb.js.map +1 -0
  205. package/dist/node/column-views.82cf7c0d.js +2 -0
  206. package/dist/node/column-views.82cf7c0d.js.map +1 -0
  207. package/dist/node/column-views.869c7199.js +2 -0
  208. package/dist/node/column-views.869c7199.js.map +1 -0
  209. package/dist/node/column-views.8c00beb4.js +2 -0
  210. package/dist/node/column-views.8c00beb4.js.map +1 -0
  211. package/dist/node/column-views.8cfed88b.js +2 -0
  212. package/dist/node/column-views.8cfed88b.js.map +1 -0
  213. package/dist/node/column-views.8f54691f.js +2 -0
  214. package/dist/node/column-views.8f54691f.js.map +1 -0
  215. package/dist/node/column-views.95411f1b.js +2 -0
  216. package/dist/node/column-views.95411f1b.js.map +1 -0
  217. package/dist/node/column-views.9cb13e51.css +2 -0
  218. package/dist/node/column-views.9cb13e51.css.map +1 -0
  219. package/dist/node/column-views.a025fbe3.js +2 -0
  220. package/dist/node/column-views.a025fbe3.js.map +1 -0
  221. package/dist/node/column-views.a0aac838.js +2 -0
  222. package/dist/node/column-views.a0aac838.js.map +1 -0
  223. package/dist/node/column-views.a501cea0.js +2 -0
  224. package/dist/node/column-views.a501cea0.js.map +1 -0
  225. package/dist/node/column-views.a8ffe072.js +2 -0
  226. package/dist/node/column-views.a8ffe072.js.map +1 -0
  227. package/dist/node/column-views.aff245a8.js +2 -0
  228. package/dist/node/column-views.aff245a8.js.map +1 -0
  229. package/dist/node/column-views.b169b4b5.css +2 -0
  230. package/dist/node/column-views.b169b4b5.css.map +1 -0
  231. package/dist/node/column-views.b773edb8.js +2 -0
  232. package/dist/node/column-views.b773edb8.js.map +1 -0
  233. package/dist/node/column-views.c968a185.css +2 -0
  234. package/dist/node/column-views.c968a185.css.map +1 -0
  235. package/dist/node/column-views.cd3c430b.js +2 -0
  236. package/dist/node/column-views.cd3c430b.js.map +1 -0
  237. package/dist/node/column-views.cd468adb.css +2 -0
  238. package/dist/node/column-views.cd468adb.css.map +1 -0
  239. package/dist/node/column-views.cdcce702.js +2 -0
  240. package/dist/node/column-views.cdcce702.js.map +1 -0
  241. package/dist/node/column-views.ce6808fe.js +2 -0
  242. package/dist/node/column-views.ce6808fe.js.map +1 -0
  243. package/dist/node/column-views.cf90f63d.js +2 -0
  244. package/dist/node/column-views.cf90f63d.js.map +1 -0
  245. package/dist/node/column-views.d6708353.js +2 -0
  246. package/dist/node/column-views.d6708353.js.map +1 -0
  247. package/dist/node/column-views.d9bbd6fb.css +2 -0
  248. package/dist/node/column-views.d9bbd6fb.css.map +1 -0
  249. package/dist/node/column-views.e6720522.js +2 -0
  250. package/dist/node/column-views.e6720522.js.map +1 -0
  251. package/dist/node/column-views.e7e26765.js +2 -0
  252. package/dist/node/column-views.e7e26765.js.map +1 -0
  253. package/dist/node/column-views.e9515ec1.js +2 -0
  254. package/dist/node/column-views.e9515ec1.js.map +1 -0
  255. package/dist/node/column-views.ebb44b7d.js +2 -0
  256. package/dist/node/column-views.ebb44b7d.js.map +1 -0
  257. package/dist/node/column-views.ecc2394a.js +2 -0
  258. package/dist/node/column-views.ecc2394a.js.map +1 -0
  259. package/dist/node/column-views.eea80478.js +2 -0
  260. package/dist/node/column-views.eea80478.js.map +1 -0
  261. package/dist/node/column-views.f7315cbc.css +2 -0
  262. package/dist/node/column-views.f7315cbc.css.map +1 -0
  263. package/dist/node/column-views.f76ba19f.js +2 -0
  264. package/dist/node/column-views.f76ba19f.js.map +1 -0
  265. package/dist/node/column-views.fdaa2963.js +2 -0
  266. package/dist/node/column-views.fdaa2963.js.map +1 -0
  267. package/dist/node/column-views.fea32686.js +2 -0
  268. package/dist/node/column-views.fea32686.js.map +1 -0
  269. package/dist/node/index.js +1 -1
  270. package/dist/node/index.js.map +1 -1
  271. package/package.json +16 -15
  272. package/src/age-axis.module.sass +20 -0
  273. package/src/age-axis.ts +25 -3
  274. package/src/age-model-overlay.ts +2 -2
  275. package/src/column.module.sass +3 -3
  276. package/src/column.ts +92 -19
  277. package/src/correlation-chart/main.ts +25 -12
  278. package/src/correlation-chart/prepare-data.ts +6 -6
  279. package/src/correlation-chart/stories/correlation-chart.stories.ts +12 -6
  280. package/src/data-provider/base.ts +20 -11
  281. package/src/data-provider/column-nav.ts +2 -2
  282. package/src/data-provider/fetch.ts +9 -9
  283. package/src/data-provider/store.ts +15 -10
  284. package/src/{carbon-isotopes → facets/carbon-isotopes}/data-area.ts +5 -4
  285. package/src/{carbon-isotopes → facets/carbon-isotopes}/index.ts +0 -1
  286. package/src/facets/carbon-isotopes/isotopes-column.module.sass +31 -0
  287. package/src/{carbon-isotopes → facets/carbon-isotopes}/isotopes-column.ts +119 -87
  288. package/src/facets/detrital-zircon/index.module.sass +22 -0
  289. package/src/facets/detrital-zircon/index.ts +132 -0
  290. package/src/facets/detrital-zircon/provider.ts +51 -0
  291. package/src/facets/fossils/index.module.sass +14 -0
  292. package/src/facets/fossils/index.ts +120 -0
  293. package/src/facets/fossils/provider.ts +80 -0
  294. package/src/facets/index.ts +3 -0
  295. package/src/index.ts +2 -1
  296. package/src/maps/_shared/inset-map.stories.ts +1 -1
  297. package/src/maps/_shared/inset-map.ts +2 -2
  298. package/src/maps/_shared/styles.ts +3 -1
  299. package/src/maps/column-correlation/column-correlation-map.stories.ts +3 -3
  300. package/src/maps/column-correlation/core.ts +17 -26
  301. package/src/maps/column-correlation/state.ts +9 -9
  302. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +177 -1
  303. package/src/maps/column-navigation/mapbox/index.ts +18 -15
  304. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +4 -4
  305. package/src/maps/column-navigation/mapbox/state.ts +16 -6
  306. package/src/maps/column-navigation/svg/animated.ts +2 -2
  307. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +2 -2
  308. package/src/maps/column-navigation/svg/index.ts +2 -4
  309. package/src/maps/column-navigation/svg/layers.ts +5 -7
  310. package/src/maps/column-navigation/utils/keyboard-navigation.ts +1 -1
  311. package/src/notes.ts +49 -0
  312. package/src/prepare-units/composite-scale.ts +73 -25
  313. package/src/prepare-units/helpers.ts +78 -13
  314. package/src/prepare-units/index.ts +17 -17
  315. package/src/prepare-units/utils.ts +7 -7
  316. package/src/section.ts +8 -8
  317. package/src/unit-details/panel.ts +100 -17
  318. package/src/unit-details/popover.ts +5 -5
  319. package/src/units/boxes.ts +20 -10
  320. package/src/units/colors.ts +12 -5
  321. package/src/units/composite.ts +16 -11
  322. package/src/units/index.ts +77 -10
  323. package/src/units/names.ts +19 -16
  324. package/src/units/resolvers.ts +3 -0
  325. package/src/units/selection.ts +44 -11
  326. package/src/units/types.ts +2 -0
  327. package/dist/esm/column-views.062d164a.js +0 -86
  328. package/dist/esm/column-views.062d164a.js.map +0 -1
  329. package/dist/esm/column-views.07521ce6.js +0 -25
  330. package/dist/esm/column-views.07521ce6.js.map +0 -1
  331. package/dist/esm/column-views.1c589cc4.js.map +0 -1
  332. package/dist/esm/column-views.1ece326b.js.map +0 -1
  333. package/dist/esm/column-views.1edc7300.js.map +0 -1
  334. package/dist/esm/column-views.240ef158.css.map +0 -1
  335. package/dist/esm/column-views.28ee5f43.js.map +0 -1
  336. package/dist/esm/column-views.30646469.js.map +0 -1
  337. package/dist/esm/column-views.33dbc778.js.map +0 -1
  338. package/dist/esm/column-views.343b5aa2.js +0 -98
  339. package/dist/esm/column-views.343b5aa2.js.map +0 -1
  340. package/dist/esm/column-views.34636ec7.js.map +0 -1
  341. package/dist/esm/column-views.3bec70d6.js.map +0 -1
  342. package/dist/esm/column-views.3f4db8cb.js +0 -117
  343. package/dist/esm/column-views.3f4db8cb.js.map +0 -1
  344. package/dist/esm/column-views.40c1f361.js.map +0 -1
  345. package/dist/esm/column-views.4c4c5bac.js.map +0 -1
  346. package/dist/esm/column-views.57c4ddf3.js.map +0 -1
  347. package/dist/esm/column-views.5c02fee2.js.map +0 -1
  348. package/dist/esm/column-views.650bd9f5.js.map +0 -1
  349. package/dist/esm/column-views.68409161.js.map +0 -1
  350. package/dist/esm/column-views.86c4b36f.js.map +0 -1
  351. package/dist/esm/column-views.8dd877af.js.map +0 -1
  352. package/dist/esm/column-views.8e51206e.js.map +0 -1
  353. package/dist/esm/column-views.94b5cca1.js +0 -34
  354. package/dist/esm/column-views.94b5cca1.js.map +0 -1
  355. package/dist/esm/column-views.9804efda.js.map +0 -1
  356. package/dist/esm/column-views.9ced149e.js.map +0 -1
  357. package/dist/esm/column-views.a7be0a4a.css +0 -157
  358. package/dist/esm/column-views.a7be0a4a.css.map +0 -1
  359. package/dist/esm/column-views.aa9fcdba.js.map +0 -1
  360. package/dist/esm/column-views.ac9fb5e1.js +0 -163
  361. package/dist/esm/column-views.ac9fb5e1.js.map +0 -1
  362. package/dist/esm/column-views.c58aad3f.js +0 -88
  363. package/dist/esm/column-views.c58aad3f.js.map +0 -1
  364. package/dist/esm/column-views.d1ad48eb.js +0 -11
  365. package/dist/esm/column-views.d1ad48eb.js.map +0 -1
  366. package/dist/esm/column-views.dff52504.js.map +0 -1
  367. package/dist/esm/column-views.e2b9c23c.css.map +0 -1
  368. package/dist/esm/column-views.e77b9d6b.js.map +0 -1
  369. package/dist/esm/column-views.ea237aa8.js.map +0 -1
  370. package/dist/esm/column-views.f71ec4b4.js.map +0 -1
  371. package/dist/esm/column-views.fa6f3292.js.map +0 -1
  372. package/src/carbon-isotopes/column.module.sass +0 -136
  373. package/src/carbon-isotopes/column.ts +0 -133
  374. package/src/carbon-isotopes/core.ts +0 -81
  375. /package/src/{carbon-isotopes → facets/carbon-isotopes}/data-provider.ts +0 -0
@@ -1,7 +1,6 @@
1
1
  import { hyperStyled } from "@macrostrat/hyper";
2
2
  import {
3
3
  LithologyColumn,
4
- ColumnAxisType,
5
4
  SVG,
6
5
  ColumnContext,
7
6
  } from "@macrostrat/column-components";
@@ -18,6 +17,7 @@ import { BaseUnit } from "@macrostrat/api-types";
18
17
  import { LabeledUnit, UnitBoxes } from "./boxes";
19
18
  import styles from "./composite.module.sass";
20
19
  import { useMacrostratColumnData } from "../data-provider";
20
+ import { useUnitSelectionDispatch } from "../units";
21
21
 
22
22
  const h = hyperStyled(styles);
23
23
 
@@ -49,11 +49,11 @@ export function LabelTrackerProvider(props) {
49
49
  units.filter((d) => {
50
50
  const id = findUnitID(d);
51
51
  return labelTrackerRef.current[id] == false;
52
- })
52
+ }),
53
53
  );
54
54
  }
55
55
  },
56
- [labelTrackerRef, units, findUnitID]
56
+ [labelTrackerRef, units, findUnitID],
57
57
  );
58
58
 
59
59
  const value = trackLabelVisibility;
@@ -63,8 +63,8 @@ export function LabelTrackerProvider(props) {
63
63
  h(
64
64
  UnlabeledDivisionsContext.Provider,
65
65
  { value: unlabeledDivisions },
66
- children
67
- )
66
+ children,
67
+ ),
68
68
  );
69
69
  }
70
70
 
@@ -141,7 +141,7 @@ export function CompositeUnitsColumn(props: CompositeUnitProps) {
141
141
  export function AnnotatedUnitsColumn(props: ICompositeUnitProps) {
142
142
  useEffect(() => {
143
143
  console.warn(
144
- "AnnotatedUnitsColumn is deprecated and currently renders a no-op for transition purposes"
144
+ "AnnotatedUnitsColumn is deprecated and currently renders a no-op for transition purposes",
145
145
  );
146
146
  }, []);
147
147
  return null;
@@ -164,6 +164,8 @@ export function SectionLabelsColumn(props: ICompositeUnitProps) {
164
164
 
165
165
  const _compositeScale = compositeScale(sections);
166
166
 
167
+ const selectUnit = useUnitSelectionDispatch();
168
+
167
169
  return h("div.section-labels-column", [
168
170
  h(
169
171
  ColumnNotesProvider,
@@ -188,8 +190,11 @@ export function SectionLabelsColumn(props: ICompositeUnitProps) {
188
190
  noteComponent,
189
191
  shouldRenderNote,
190
192
  scale: _compositeScale,
191
- })
192
- )
193
+ onClickNote(note) {
194
+ selectUnit(note.data, null, null);
195
+ },
196
+ }),
197
+ ),
193
198
  ),
194
199
  ]);
195
200
  }
@@ -206,7 +211,7 @@ export interface CompositeColumnScale {
206
211
 
207
212
  export function compositeScale(
208
213
  sections,
209
- opts: CompositeScaleOpts = {}
214
+ opts: CompositeScaleOpts = {},
210
215
  ): CompositeColumnScale {
211
216
  /** A basic composite scale that works across all sections. This isn't a fully featured,
212
217
  * contiuous D3 scale, but it shares enough attributes to be useful for
@@ -245,7 +250,7 @@ export function compositeScale(
245
250
  return baseScale as CompositeColumnScale;
246
251
  }
247
252
 
248
- function ColumnNotesProvider(props) {
253
+ export function ColumnNotesProvider(props) {
249
254
  // A fake column axis provider that allows scales to cross
250
255
  const { children, scale, totalHeight, pixelScale } = props;
251
256
 
@@ -264,7 +269,7 @@ function ColumnNotesProvider(props) {
264
269
  zoom: 1,
265
270
  },
266
271
  },
267
- children
272
+ children,
268
273
  );
269
274
  }
270
275
 
@@ -5,12 +5,12 @@ import {
5
5
  } from "@macrostrat/column-components";
6
6
  import { UnitNamesColumn } from "./names";
7
7
  import { ICompositeUnitProps } from "./composite";
8
- import { UnitBoxes } from "./boxes";
8
+ import { UnitBoxes, UnitProps } from "./boxes";
9
9
  import { useColumnLayout } from "@macrostrat/column-components";
10
10
  import { useInDarkMode } from "@macrostrat/ui-components";
11
11
  import { getMixedUnitColor } from "./colors";
12
12
  import { TrackedLabeledUnit } from "./composite";
13
- import { useLithologies } from "../data-provider";
13
+ import { useEnvironments, useLithologies } from "../data-provider";
14
14
  import { useMemo } from "react";
15
15
  import { resolveID } from "./resolvers";
16
16
  import { Lithology } from "@macrostrat/api-types";
@@ -46,33 +46,100 @@ export function SimpleUnitsColumn(props: ICompositeUnitProps) {
46
46
  ]);
47
47
  }
48
48
 
49
+ export function BasicUnitComponent({ division, ...rest }) {
50
+ /** A unit that allows directly setting colors and patterns. */
51
+
52
+ return h(UnitComponent, {
53
+ division,
54
+ ...rest,
55
+ backgroundColor: division.color,
56
+ patternID: division.patternID,
57
+ });
58
+ }
59
+
49
60
  export function UnitComponent({ division, nColumns = 2, ...rest }) {
50
61
  const width = rest.width ?? useColumnLayout()?.width;
51
62
 
52
63
  const nOverlappingUnits = division.overlappingUnits?.length ?? 0;
53
- const columnIx = (division.column ?? 0) % nColumns;
64
+ const _nColumns = nOverlappingUnits == 0 ? 1 : nColumns;
65
+ const columnIx = (division.column ?? 0) % _nColumns;
66
+ const reducedWidth = width / _nColumns;
67
+ const x = (columnIx * width) / _nColumns;
54
68
 
55
69
  return h(TrackedLabeledUnit, {
56
70
  division,
57
71
  ...rest,
58
- width: nOverlappingUnits > 0 ? width / nColumns : width,
59
- x: (columnIx * width) / nColumns,
72
+ width: reducedWidth,
73
+ x,
60
74
  });
61
75
  }
62
76
 
77
+ interface UnitColorOptions {
78
+ asBackground?: boolean;
79
+ }
80
+
81
+ export function useUnitColor(unit, opts: UnitColorOptions = {}): string | null {
82
+ /** Get the color for a unit based on its lithology */
83
+ const lithMap = useLithologies();
84
+ const inDarkMode = useInDarkMode();
85
+ const { asBackground = true } = opts;
86
+
87
+ return useMemo(() => {
88
+ if (unit == null || lithMap == null) return null;
89
+ return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);
90
+ }, [unit?.unit_id, lithMap, inDarkMode, asBackground]);
91
+ }
92
+
63
93
  export function ColoredUnitComponent(props) {
64
94
  /** A unit component that is colored using a mixture of lithologies.
65
95
  * This is a separate component because it depends on more providers/contexts to determine coloring. */
96
+ const backgroundColor = useUnitColor(props.division);
97
+
98
+ const patternID = useMemo(() => {
99
+ return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);
100
+ }, [props.division?.unit_id]);
101
+
102
+ const fill = useGeologicPattern(patternID);
103
+
104
+ return h(UnitComponent, {
105
+ fill,
106
+ backgroundColor,
107
+ ...props,
108
+ });
109
+ }
110
+
111
+ export function useUnitColorByEnvironment(
112
+ unit,
113
+ opts: UnitColorOptions = {},
114
+ ): string | null {
115
+ /** Get the color for a unit based on its lithology */
116
+ const environmentMap = useEnvironments();
66
117
  const lithMap = useLithologies();
67
118
  const inDarkMode = useInDarkMode();
119
+ const { asBackground = true } = opts;
120
+
121
+ return useMemo(() => {
122
+ if (unit == null || environmentMap == null) return null;
123
+ let c = getMixedUnitColor(unit, environmentMap, inDarkMode, asBackground, {
124
+ key: "environ",
125
+ id_key: "environ_id",
126
+ });
127
+ if (c != null) {
128
+ return c;
129
+ }
130
+ // Fallback to lithology color if no environment color is found
131
+ return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);
132
+ }, [unit?.unit_id, environmentMap, lithMap, inDarkMode, asBackground]);
133
+ }
68
134
 
69
- const backgroundColor = useMemo(() => {
70
- return getMixedUnitColor(props.division, lithMap, inDarkMode);
71
- }, [props.division?.unit_id, lithMap, inDarkMode]);
135
+ export function EnvironmentColoredUnitComponent(props) {
136
+ /** A unit component that is colored using a mixture of lithologies.
137
+ * This is a separate component because it depends on more providers/contexts to determine coloring. */
138
+ const backgroundColor = useUnitColorByEnvironment(props.division);
72
139
 
73
140
  const patternID = useMemo(() => {
74
141
  return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);
75
- }, [props.division?.unit_id, lithMap]);
142
+ }, [props.division?.unit_id]);
76
143
 
77
144
  const fill = useGeologicPattern(patternID);
78
145
 
@@ -85,7 +152,7 @@ export function ColoredUnitComponent(props) {
85
152
 
86
153
  function getPatternID(
87
154
  liths: Array<Lithology>,
88
- lithMap: Map<number, Lithology>
155
+ lithMap: Map<number, Lithology>,
89
156
  ): string | null {
90
157
  if (lithMap == null || liths == null || liths.length == 0) {
91
158
  return null;
@@ -1,7 +1,6 @@
1
1
  import h from "@macrostrat/hyper";
2
- import { useContext, useCallback } from "react";
2
+ import { useCallback, useMemo } from "react";
3
3
  import {
4
- ColumnContext,
5
4
  ColumnAxisType,
6
5
  NotesColumn,
7
6
  NotesColumnProps,
@@ -11,6 +10,7 @@ import { IUnit } from "./types";
11
10
  import React from "react";
12
11
  import { getUnitHeightRange } from "../prepare-units/utils";
13
12
  import { CompositeColumnScale } from "./composite";
13
+ import { useCompositeScale, useMacrostratColumnData } from "../data-provider";
14
14
 
15
15
  interface UnitDataProps extends NotesColumnProps {
16
16
  left?: number;
@@ -31,7 +31,7 @@ type UnitNote = {
31
31
 
32
32
  function noteForDivision(
33
33
  div: IUnit,
34
- opts: { axisType: ColumnAxisType }
34
+ opts: { axisType: ColumnAxisType },
35
35
  ): UnitNote {
36
36
  const { axisType } = opts;
37
37
 
@@ -53,35 +53,34 @@ const defaultNameFunction = (div) => {
53
53
  };
54
54
 
55
55
  function UnitDataColumn_(props: UnitDataProps) {
56
- const ctx = useContext(ColumnContext);
56
+ const { axisType, units } = useMacrostratColumnData();
57
+ const scale = useCompositeScale();
57
58
  const {
58
- left,
59
+ left = 0,
59
60
  noteComponent,
60
61
  shouldRenderNote = (note: ColumnDivision | IUnit, i: number) => true,
61
62
  minimumHeight = 0,
62
- divisions = ctx?.divisions,
63
+ divisions = units,
63
64
  ...rest
64
65
  } = props;
65
66
 
66
- const { scale } = ctx;
67
-
68
67
  const minimumHeightFilter = useCallback(
69
68
  (d) => {
70
69
  if (minimumHeight == 0) return true;
71
70
  const dy = Math.abs(scale(d.top_height) - scale(d.height));
72
71
  return dy > minimumHeight;
73
72
  },
74
- [scale, minimumHeight]
73
+ [scale, minimumHeight],
75
74
  );
76
75
 
77
76
  if (divisions == null) return null;
78
77
  const notes: UnitNote[] = divisions
79
78
  .filter(shouldRenderNote)
80
- .map((d: IUnit) => noteForDivision(d, { axisType: ctx.axisType }))
79
+ .map((d: IUnit) => noteForDivision(d, { axisType }))
81
80
  .filter(minimumHeightFilter);
82
81
 
83
82
  return h(NotesColumn, {
84
- transform: `translate(${left || 0})`,
83
+ transform: `translate(${left})`,
85
84
  editable: false,
86
85
  noteComponent,
87
86
  notes,
@@ -98,6 +97,7 @@ interface UnitNamesProps extends UnitDataProps {
98
97
  nameForDivision?(obj: IUnit): string;
99
98
  paddingLeft?: number;
100
99
  width: number;
100
+ onClickNote?: (note: any) => void;
101
101
  }
102
102
 
103
103
  export function UnitNamesColumn(props: UnitNamesProps) {
@@ -107,13 +107,16 @@ export function UnitNamesColumn(props: UnitNamesProps) {
107
107
  ...rest
108
108
  } = props;
109
109
 
110
- const NoteComponent = (props) => {
111
- const { note } = props;
112
- return h("p.col-note-label", nameForDivision(note.data));
113
- };
110
+ const defaultNoteComponent = useMemo(
111
+ () => (props) => {
112
+ const { note } = props;
113
+ return h("p.col-note-label", nameForDivision(note.data));
114
+ },
115
+ [nameForDivision],
116
+ );
114
117
 
115
118
  return h(UnitDataColumn, {
116
- noteComponent: noteComponent ?? NoteComponent,
119
+ noteComponent: noteComponent ?? defaultNoteComponent,
117
120
  ...rest,
118
121
  });
119
122
  }
@@ -55,6 +55,9 @@ const symbolIndex = {
55
55
  };
56
56
 
57
57
  const resolveID = (d: any) => {
58
+ if (d.lith == null || d.lith.length == 0) {
59
+ return null;
60
+ }
58
61
  let liths = [...d.lith];
59
62
  let environs = d.environ.map((d) => d.name).join(" ");
60
63
  liths.sort((a, b) => b.prop - a.prop);
@@ -10,14 +10,19 @@ import {
10
10
  RefObject,
11
11
  useRef,
12
12
  useCallback,
13
+ MouseEvent,
13
14
  } from "react";
14
15
  import { createStore, StoreApi, useStore } from "zustand";
15
16
  import type { RectBounds, IUnit } from "./types";
17
+ import {
18
+ getUnitHeightRange,
19
+ useMacrostratColumnData,
20
+ } from "@macrostrat/column-views";
16
21
 
17
22
  type UnitSelectDispatch = (
18
23
  unit: BaseUnit | null,
19
24
  target: HTMLElement | null,
20
- event: Event | null
25
+ event: Event | null,
21
26
  ) => void;
22
27
 
23
28
  const UnitSelectionContext = createContext<StoreApi<UnitSelectionStore>>(null);
@@ -31,13 +36,11 @@ export function useUnitSelectionDispatch(): UnitSelectDispatch {
31
36
  }
32
37
 
33
38
  export function useUnitSelectionStore<T>(
34
- selector: (state: UnitSelectionStore) => T
39
+ selector: (state: UnitSelectionStore) => T,
35
40
  ): T {
36
41
  const store = useContext(UnitSelectionContext);
37
42
  if (store == null) {
38
- throw new Error(
39
- "useUnitSelectionStore must be used within a UnitSelectionProvider"
40
- );
43
+ return null;
41
44
  }
42
45
  return useStore(store, selector);
43
46
  }
@@ -54,11 +57,20 @@ interface UnitSelectionStore {
54
57
  setSelectedUnit: (unit: number | null) => void;
55
58
  }
56
59
 
60
+ export interface ColumnClickData {
61
+ unitID: number | null;
62
+ unit: BaseUnit | null;
63
+ target: HTMLElement | null;
64
+ height: number;
65
+ // Room for boundary IDs eventually
66
+ }
67
+
57
68
  export function UnitSelectionProvider<T extends BaseUnit>(props: {
58
69
  children: ReactNode;
59
70
  columnRef?: RefObject<HTMLElement>;
60
71
  units: T[];
61
72
  selectedUnit: number | null;
73
+ onClickedColumn?: (columnClickData: ColumnClickData, event: Event) => void;
62
74
  onUnitSelected?: (unitID: number | null, unit: T | null) => void;
63
75
  }) {
64
76
  const [store] = useState(() =>
@@ -80,10 +92,30 @@ export function UnitSelectionProvider<T extends BaseUnit>(props: {
80
92
  });
81
93
  }
82
94
  },
83
- onUnitSelected: (unit: T, target: HTMLElement, event: Event) => {
95
+ onUnitSelected: (unit: T, target: HTMLElement, event: PointerEvent) => {
84
96
  console.log("onUnitSelected", unit, target, event);
85
97
  const el = props.columnRef?.current;
86
98
  let overlayPosition = null;
99
+
100
+ /** This is not the natural place to get positions within the column,
101
+ * but it will work for now.
102
+ */
103
+ if (props.onClickedColumn) {
104
+ // Infer height from top and bottom height of unit (because that's passed back with the call)
105
+ //const py = event.y;
106
+ //const [bottom, top] = getUnitHeightRange(unit, axisType);
107
+ //const height = Math.abs(bottom - top);
108
+
109
+ /** Ideally this would be defined at the column level */
110
+ const columnClickData: ColumnClickData = {
111
+ unitID: unit?.unit_id,
112
+ unit,
113
+ target,
114
+ height: el?.getBoundingClientRect().height || 0,
115
+ };
116
+ props.onClickedColumn(columnClickData, event);
117
+ }
118
+
87
119
  if (unit != null && el != null && target != null) {
88
120
  const rect = el.getBoundingClientRect();
89
121
  const targetRect = target.getBoundingClientRect();
@@ -103,7 +135,7 @@ export function UnitSelectionProvider<T extends BaseUnit>(props: {
103
135
  overlayPosition,
104
136
  });
105
137
  },
106
- }))
138
+ })),
107
139
  );
108
140
 
109
141
  const { units, selectedUnit } = props;
@@ -122,7 +154,7 @@ export function UnitSelectionProvider<T extends BaseUnit>(props: {
122
154
  }
123
155
 
124
156
  export function useUnitSelectionTarget(
125
- unit: IUnit
157
+ unit: IUnit,
126
158
  ): [React.RefObject<HTMLElement>, boolean, (evt: Event) => void] {
127
159
  const ref = useRef<HTMLElement>();
128
160
  const selectedUnit = useSelectedUnit();
@@ -131,14 +163,15 @@ export function useUnitSelectionTarget(
131
163
 
132
164
  const onClick = useCallback(
133
165
  (evt: Event) => {
166
+ if (onSelectUnit == null) return;
134
167
  onSelectUnit(unit, ref.current, evt);
135
168
  evt.stopPropagation();
136
169
  },
137
- [unit, onSelectUnit]
170
+ [unit, onSelectUnit],
138
171
  );
139
172
 
140
173
  useEffect(() => {
141
- if (!selected) return;
174
+ if (!selected || onSelectUnit == null) return;
142
175
  // In case we haven't set the position of the unit (if we don't have a target), set the selected unit
143
176
  onSelectUnit(unit, ref.current, null);
144
177
 
@@ -175,7 +208,7 @@ export function UnitKeyboardNavigation<T extends BaseUnit>({
175
208
  selectUnit(units[nextIx], null, null);
176
209
  event.stopPropagation();
177
210
  },
178
- [units, ix]
211
+ [units, ix],
179
212
  );
180
213
  return null;
181
214
  }
@@ -5,6 +5,8 @@ export interface IUnit {
5
5
  t_age: number;
6
6
  b_age: number;
7
7
  [x: string]: any;
8
+ patternID?: string | number;
9
+ color?: string;
8
10
  }
9
11
 
10
12
  export interface RectBounds {
@@ -1,86 +0,0 @@
1
- import {line as $8epey$line} from "d3-shape";
2
- import {createContext as $8epey$createContext, useContext as $8epey$useContext} from "react";
3
- import $8epey$macrostrathyper from "@macrostrat/hyper";
4
- import {ColumnLayoutContext as $8epey$ColumnLayoutContext} from "@macrostrat/column-components";
5
-
6
-
7
-
8
-
9
-
10
- const $1dbd903fb3e2f029$var$inDomain = (scale, num)=>{
11
- const domain = scale.domain();
12
- return domain[0] < num < domain[1];
13
- };
14
- const $1dbd903fb3e2f029$var$createPointLocator = function(opts) {
15
- const { xScale: xScale, scale: scale, getHeight: getHeight, ...rest } = opts;
16
- return function(d, s = 0) {
17
- const height = getHeight(d);
18
- if (!$1dbd903fb3e2f029$var$inDomain(scale, height)) return null;
19
- return [
20
- xScale(d.value),
21
- scale(height)
22
- ];
23
- };
24
- };
25
- const $1dbd903fb3e2f029$var$IsotopesDataContext = (0, $8epey$createContext)(null);
26
- const $1dbd903fb3e2f029$export$309ef8546e07d921 = function(props) {
27
- const { xScale: xScale, scale: scale } = (0, $8epey$useContext)((0, $8epey$ColumnLayoutContext)) ?? {};
28
- let { corrected: corrected, system: system, children: children, getHeight: getHeight, clipY: clipY } = props;
29
- if (getHeight == null) getHeight = function(d) {
30
- if (d.height == null) console.log(d);
31
- return d.height;
32
- };
33
- // Handlers for creating points and lines
34
- const pointLocator = $1dbd903fb3e2f029$var$createPointLocator({
35
- xScale: xScale,
36
- scale: scale,
37
- corrected: corrected,
38
- system: system,
39
- getHeight: getHeight
40
- });
41
- let column = "avg_" + system;
42
- if (corrected) column += "_corr";
43
- const lineLocator = (0, $8epey$line)().x((d)=>xScale(d[column]))// @ts-ignore
44
- .y((d)=>scale(d.height));
45
- const value = {
46
- pointLocator: pointLocator,
47
- lineLocator: lineLocator,
48
- corrected: corrected,
49
- system: system,
50
- clipY: clipY
51
- };
52
- return (0, $8epey$macrostrathyper)($1dbd903fb3e2f029$var$IsotopesDataContext.Provider, {
53
- value: value
54
- }, (0, $8epey$macrostrathyper)("g.data", children));
55
- };
56
- $1dbd903fb3e2f029$export$309ef8546e07d921.defaultProps = {
57
- clipY: false
58
- };
59
- const $1dbd903fb3e2f029$export$4cb5d059db4e2bd = function(props) {
60
- const { pointLocator: pointLocator } = (0, $8epey$useContext)($1dbd903fb3e2f029$var$IsotopesDataContext);
61
- const { datum: datum, strokeWidth: strokeWidth, ...rest } = props;
62
- const loc = pointLocator(datum);
63
- if (loc == null) return null;
64
- const [cx, cy] = loc;
65
- return (0, $8epey$macrostrathyper)("circle", {
66
- key: datum.sample_id,
67
- cx: cx,
68
- cy: cy,
69
- r: 2,
70
- ...rest
71
- });
72
- };
73
- const $1dbd903fb3e2f029$export$628a3ef6eb9c3a89 = function(props) {
74
- const { values: lineValues, ...rest } = props;
75
- const { lineLocator: lineLocator } = (0, $8epey$useContext)($1dbd903fb3e2f029$var$IsotopesDataContext);
76
- return (0, $8epey$macrostrathyper)("path", {
77
- d: lineLocator(lineValues),
78
- fill: "transparent",
79
- ...rest
80
- });
81
- };
82
- const $1dbd903fb3e2f029$export$919dbb10b6b5b75 = ()=>(0, $8epey$useContext)($1dbd903fb3e2f029$var$IsotopesDataContext);
83
-
84
-
85
- export {$1dbd903fb3e2f029$export$309ef8546e07d921 as IsotopesDataArea, $1dbd903fb3e2f029$export$4cb5d059db4e2bd as IsotopeDataPoint, $1dbd903fb3e2f029$export$628a3ef6eb9c3a89 as IsotopeDataLine, $1dbd903fb3e2f029$export$919dbb10b6b5b75 as useDataLocator};
86
- //# sourceMappingURL=column-views.062d164a.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;AAKA,MAAM,iCAAW,CAAC,OAAO;IACvB,MAAM,SAAS,MAAM,MAAM;IAC3B,OAAO,MAAM,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE;AACpC;AAEA,MAAM,2CAAqB,SAAU,IAAI;IACvC,MAAM,UAAE,MAAM,SAAE,KAAK,aAAE,SAAS,EAAE,GAAG,MAAM,GAAG;IAC9C,OAAO,SAAU,CAAC,EAAE,IAAI,CAAC;QACvB,MAAM,SAAS,UAAU;QACzB,IAAI,CAAC,+BAAS,OAAO,SAAS,OAAO;QACrC,OAAO;YAAC,OAAO,EAAE,KAAK;YAAG,MAAM;SAAQ;IACzC;AACF;AAEA,MAAM,4CAAsB,CAAA,GAAA,oBAAY,EAAE;AAW1C,MAAM,4CAAmB,SAAU,KAAoB;IACrD,MAAM,UAAE,MAAM,SAAE,KAAK,EAAE,GAAG,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,0BAAkB,MAAM,CAAC;IAE9D,IAAI,aAAE,SAAS,UAAE,MAAM,YAAE,QAAQ,aAAE,SAAS,SAAE,KAAK,EAAE,GAAG;IACxD,IAAI,aAAa,MACf,YAAY,SAAU,CAAC;QACrB,IAAI,EAAE,MAAM,IAAI,MACd,QAAQ,GAAG,CAAC;QAEd,OAAO,EAAE,MAAM;IACjB;IAGF,yCAAyC;IACzC,MAAM,eAAe,yCAAmB;gBACtC;eACA;mBACA;gBACA;mBACA;IACF;IAEA,IAAI,SAAS,SAAS;IACtB,IAAI,WACF,UAAU;IAEZ,MAAM,cAAc,CAAA,GAAA,WAAG,IACpB,CAAC,CAAC,CAAC,IAAM,OAAO,CAAC,CAAC,OAAO,EAC1B,aAAa;KACZ,CAAC,CAAC,CAAC,IAAM,MAAM,EAAE,MAAM;IAE1B,MAAM,QAAQ;sBAAE;qBAAc;mBAAa;gBAAW;eAAQ;IAAM;IACpE,OAAO,CAAA,GAAA,sBAAA,EAAE,0CAAoB,QAAQ,EAAE;eAAE;IAAM,GAAG,CAAA,GAAA,sBAAA,EAAE,UAAU;AAChE;AAEA,0CAAiB,YAAY,GAAG;IAAE,OAAO;AAAM;AAE/C,MAAM,2CAAmB,SAAU,KAAK;IACtC,MAAM,gBAAE,YAAY,EAAE,GAAG,CAAA,GAAA,iBAAS,EAAE;IACpC,MAAM,SAAE,KAAK,eAAE,WAAW,EAAE,GAAG,MAAM,GAAG;IACxC,MAAM,MAAM,aAAa;IACzB,IAAI,OAAO,MAAM,OAAO;IACxB,MAAM,CAAC,IAAI,GAAG,GAAG;IAEjB,OAAO,CAAA,GAAA,sBAAA,EAAE,UAAU;QACjB,KAAK,MAAM,SAAS;YACpB;YACA;QACA,GAAG;QACH,GAAG,IAAI;IACT;AACF;AAEA,MAAM,4CAAkB,SAAU,KAAK;IACrC,MAAM,EAAE,QAAQ,UAAU,EAAE,GAAG,MAAM,GAAG;IACxC,MAAM,eAAE,WAAW,EAAE,GAAG,CAAA,GAAA,iBAAS,EAAE;IACnC,OAAO,CAAA,GAAA,sBAAA,EAAE,QAAQ;QACf,GAAG,YAAY;QACf,MAAM;QACN,GAAG,IAAI;IACT;AACF;AAEA,MAAM,2CAAiB,IAAM,CAAA,GAAA,iBAAS,EAAE","sources":["packages/column-views/src/carbon-isotopes/data-area.ts"],"sourcesContent":["import { line } from \"d3-shape\";\nimport { createContext, useContext } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { ColumnLayoutContext } from \"@macrostrat/column-components\";\n\nconst inDomain = (scale, num) => {\n const domain = scale.domain();\n return domain[0] < num < domain[1];\n};\n\nconst createPointLocator = function (opts) {\n const { xScale, scale, getHeight, ...rest } = opts;\n return function (d, s = 0) {\n const height = getHeight(d);\n if (!inDomain(scale, height)) return null;\n return [xScale(d.value), scale(height)];\n };\n};\n\nconst IsotopesDataContext = createContext(null);\n\nexport interface DataAreaProps {\n clipY: boolean;\n parameter: string;\n corrected: boolean;\n system: string;\n children: React.ReactNode;\n getHeight?: Function;\n}\n\nconst IsotopesDataArea = function (props: DataAreaProps) {\n const { xScale, scale } = useContext(ColumnLayoutContext) ?? {};\n\n let { corrected, system, children, getHeight, clipY } = props;\n if (getHeight == null) {\n getHeight = function (d) {\n if (d.height == null) {\n console.log(d);\n }\n return d.height;\n };\n }\n\n // Handlers for creating points and lines\n const pointLocator = createPointLocator({\n xScale,\n scale,\n corrected,\n system,\n getHeight,\n });\n\n let column = \"avg_\" + system;\n if (corrected) {\n column += \"_corr\";\n }\n const lineLocator = line()\n .x((d) => xScale(d[column]))\n // @ts-ignore\n .y((d) => scale(d.height));\n\n const value = { pointLocator, lineLocator, corrected, system, clipY };\n return h(IsotopesDataContext.Provider, { value }, h(\"g.data\", children));\n};\n\nIsotopesDataArea.defaultProps = { clipY: false };\n\nconst IsotopeDataPoint = function (props) {\n const { pointLocator } = useContext(IsotopesDataContext);\n const { datum, strokeWidth, ...rest } = props;\n const loc = pointLocator(datum);\n if (loc == null) return null;\n const [cx, cy] = loc;\n\n return h(\"circle\", {\n key: datum.sample_id,\n cx,\n cy,\n r: 2,\n ...rest,\n });\n};\n\nconst IsotopeDataLine = function (props) {\n const { values: lineValues, ...rest } = props;\n const { lineLocator } = useContext(IsotopesDataContext);\n return h(\"path\", {\n d: lineLocator(lineValues),\n fill: \"transparent\",\n ...rest,\n });\n};\n\nconst useDataLocator = () => useContext(IsotopesDataContext);\n\nexport { IsotopesDataArea, IsotopeDataPoint, IsotopeDataLine, useDataLocator };\n"],"names":[],"version":3,"file":"column-views.062d164a.js.map"}
@@ -1,25 +0,0 @@
1
- import $hiXDY$macrostrathyper from "@macrostrat/hyper";
2
- import {createContext as $hiXDY$createContext, useContext as $hiXDY$useContext} from "react";
3
- import {useAPIResult as $hiXDY$useAPIResult} from "@macrostrat/ui-components";
4
-
5
-
6
-
7
-
8
- const $8adf39b8c41fe3cc$export$c644ef985ce7a4c4 = (0, $hiXDY$createContext)(null);
9
- function $8adf39b8c41fe3cc$export$5f01d5b342a89841(props) {
10
- const { children: children, ...params } = props;
11
- const res = (0, $hiXDY$useAPIResult)("/measurements", {
12
- ...params,
13
- show_values: true,
14
- response: "long"
15
- });
16
- return (0, $hiXDY$macrostrathyper)($8adf39b8c41fe3cc$export$c644ef985ce7a4c4.Provider, {
17
- value: res,
18
- children: children
19
- });
20
- }
21
- const $8adf39b8c41fe3cc$export$8a0335fd9ff72150 = ()=>(0, $hiXDY$useContext)($8adf39b8c41fe3cc$export$c644ef985ce7a4c4);
22
-
23
-
24
- export {$8adf39b8c41fe3cc$export$c644ef985ce7a4c4 as MeasurementDataContext, $8adf39b8c41fe3cc$export$5f01d5b342a89841 as MeasurementDataProvider, $8adf39b8c41fe3cc$export$8a0335fd9ff72150 as useMeasurementData};
25
- //# sourceMappingURL=column-views.07521ce6.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;AAIA,MAAM,4CAAyB,CAAA,GAAA,oBAAY,EAAE;AAEtC,SAAS,0CAAwB,KAAK;IAC3C,MAAM,YAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG;IAChC,MAAM,MAAM,CAAA,GAAA,mBAAW,EAAE,iBAAiB;QACxC,GAAG,MAAM;QACT,aAAa;QACb,UAAU;IACZ;IACA,OAAO,CAAA,GAAA,sBAAA,EAAE,0CAAuB,QAAQ,EAAE;QAAE,OAAO;kBAAK;IAAS;AACnE;AAEA,MAAM,4CAAqB,IAAM,CAAA,GAAA,iBAAS,EAAE","sources":["packages/column-views/src/carbon-isotopes/data-provider.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { useContext, createContext } from \"react\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\n\nconst MeasurementDataContext = createContext(null);\n\nexport function MeasurementDataProvider(props) {\n const { children, ...params } = props;\n const res = useAPIResult(\"/measurements\", {\n ...params,\n show_values: true,\n response: \"long\",\n });\n return h(MeasurementDataContext.Provider, { value: res, children });\n}\n\nconst useMeasurementData = () => useContext(MeasurementDataContext);\n\nexport { useMeasurementData, MeasurementDataContext };\n"],"names":[],"version":3,"file":"column-views.07521ce6.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;AAWA,MAAM,2BAAK;AA2BJ,SAAS,0CACd,OAAuB,EACvB,WAA2B,CAAA,GAAA,qBAAa,EAAE,GAAG;IAE7C,2DAA2D,GAC3D,MAAM,QAAQ,QAAQ,KAAK;IAC3B,IAAI,YAAY,MAAM,GAAG,CAAC,CAAC,GAAG,OAAS,wCAAkB,MAAM;IAC/D,KAAK,IAAI,KAAK,UAAW;QACvB,MAAM,mBAAmB,UAAU,MAAM,CAAC,CAAC,IACzC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO;QAGvC,sBAAsB;QACtB,MAAM,UAAU,iBAAiB,GAAG,CAAC,CAAC,IAAM,EAAE,MAAM;QAEpD,IAAI,QAAQ,QAAQ,CAAC,EAAE,MAAM,GAAG;YAC9B,IAAI,MAAM;YACV,4CAA4C;YAC5C,MAAO,QAAQ,QAAQ,CAAC,KACtB;YAEF,EAAE,MAAM,GAAG;QACb;QAEA,kEAAkE;QAClE,IAAI,YAAY,CAAA,GAAA,qBAAa,EAAE,GAAG,EAAE;YAClC,MAAM,CAAC,OAAO,MAAM,GAAG,CAAA,GAAA,wCAAiB,EAAE,GAAG;YAC7C,IAAI,QAAQ,QAAQ,KAAK,EACvB,EAAE,UAAU,GAAG,QAAQ,KAAK;YAE9B,IAAI,QAAQ,QAAQ,KAAK,EACvB,EAAE,UAAU,GAAG,QAAQ,KAAK;QAEhC;IACF;IAEA,IAAI,YAAY,CAAA,GAAA,qBAAa,EAAE,GAAG,EAChC,OAAO,6CAAuB,WAAW;IAG3C,OAAO;AACT;AAEA,SAAS,qCACP,IAAc,EACd,CAAS,EACT,SAAqB,EACrB,WAA2B,CAAA,GAAA,qBAAa,EAAE,GAAG;IAE7C,MAAM,mBAAmB,UAAU,MAAM,CACvC,CAAC,IAAM,EAAE,OAAO,IAAI,KAAK,OAAO,IAAI,CAAA,GAAA,wCAAW,EAAE,MAAM,GAAG;IAE5D,MAAM,QAAQ,CAAA,GAAA,wCAAiB,EAAE,MAAM;IACvC,MAAM,gBAAgB,iBAAiB,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,CAAA,GAAA,wCAAiB,EAAE,GAAG;QACpC,8CAA8C;QAC9C,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG;IAC/B;IACA,IAAI,SAAS;IACb,IAAI,iBAAiB,MAAM,IAAI,GAC7B,SAAS;IAGX,OAAO;QACL,GAAG,IAAI;uBACP;gBACA;QACA,kBAAkB,iBAAiB,GAAG,CAAC,CAAC,IAAM,EAAE,OAAO;IACzD;AACF;AAEO,SAAS,0CACd,KAAU,EACV,WAA2B,CAAA,GAAA,qBAAa,EAAE,GAAG;IAE7C,IAAI,SAAS,MAAM,IAAI,CAAC,CAAA,GAAA,YAAI,EAAE,OAAO,CAAC,IAAM,EAAE,UAAU;IACxD,MAAM,iBAAiB,CAAA,GAAA,yCAAe,EAAE;IAExC,MAAM,UAAU,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,aAAa;QACpD,MAAM,CAAC,OAAO,MAAM,GAAG,0CAAmB;QAC1C,yBAAyB;QACzB,aAAa,IAAI,CAAC;QAClB,OAAO;wBAAE;mBAAY;mBAAO;YAAO,OAAO;QAAa;IACzD;IACA,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,kBAAkB,CAAA,GAAA,yCAAe,EAAE,CAAA,GAAA,qBAAa,EAAE,GAAG;IAI3D,QAAQ,IAAI,CAAC;IACb,OAAO;AACT;AAEO,SAAS,0CAAmB,KAAiB;IAClD,iDAAiD,GACjD,MAAM,SAAS,MAAM,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IACvC,MAAM,SAAS,MAAM,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK;IACvC,MAAM,QAAQ,KAAK,GAAG,IAAI;IAC1B,MAAM,QAAQ,KAAK,GAAG,IAAI;IAC1B,OAAO;QAAC;QAAO;KAAM;AACvB;AAEO,SAAS,0CACd,QAA0B;IAE1B;;GAEC,GACD,MAAM,CAAC,cAAc,GAAG,KAAK,GAAG;IAChC,MAAM,cAAc;QAAC;KAAa;IAClC,KAAK,MAAM,WAAW,KAAM;QAC1B,MAAM,cAAc,WAAW,CAAC,YAAY,MAAM,GAAG,EAAE;QACvD,IACE,YAAY,KAAK,GAAG,QAAQ,KAAK,IACjC,YAAY,KAAK,GAAG,QAAQ,KAAK,EACjC;YACA,wCAAwC;YACxC,YAAY,IAAI,CAAC;YACjB;QACF;QAEA,8BAA8B;QAC9B,YAAY,UAAU,GAAG;eACpB,CAAA,GAAA,yCAAU,EAAE,YAAY,UAAU;eAClC,CAAA,GAAA,yCAAU,EAAE,QAAQ,UAAU;SAClC;QACD,YAAY,KAAK,CAAC,IAAI,IAAI,QAAQ,KAAK;QACvC,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC,YAAY,KAAK,EAAE,QAAQ,KAAK;QAC7D,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC,YAAY,KAAK,EAAE,QAAQ,KAAK;IAC/D;IACA,OAAO;AACT;AAEA,SAAS,6CACP,KAAiB,EACjB,WAA2B,CAAA,GAAA,qBAAa,EAAE,KAAK;IAE/C,qFAAqF,GACrF,6CAA6C;IAC7C,IAAI,YAAY;IAChB,OAAO,MAAM,GAAG,CAAC,CAAC,MAAM;QACtB,IAAI,KAAK,4CAAsB,MAAM,GAAG,OAAO,WAAW;QAC1D,aAAa,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,KAAK;QACzC,OAAO;IACT;AACF;AAEA,SAAS,4CACP,IAAc,EACd,CAAS,EACT,KAAiB,EACjB,uBAA+B,CAAC,EAChC,WAA2B,CAAA,GAAA,qBAAa,EAAE,KAAK;IAE/C;;KAEG,GAEH,IAAI,QAAQ,KAAK,KAAK;IACtB,IAAI,QAAQ,KAAK,KAAK;IAEtB,IAAI,SAAS,SAAS,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EACtD,QAAQ,QAAQ;IAGlB,IAAI,YAAY,KAAK,SAAS;IAE9B,6FAA6F;IAC7F,2BAA2B;IAC3B,MAAM,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC;IAEnC,IAAI,OAAO;QACT,2EAA2E;QAC3E,UAAU,CAAA,GAAA,yCAAc,EAAE,KAAK,CAAC,EAAE;QAClC,UAAU,CAAA,GAAA,yCAAc,EAAE,KAAK,CAAC,EAAE;QAClC,YAAY,KAAK,CAAC,EAAE;IACtB;IAEA,OAAO;QACL,GAAG,IAAI;QACP,OAAO,CAAA,GAAA,yCAAc,EAAE;QACvB,OAAO,CAAA,GAAA,yCAAc,EAAE;mBACvB;QACA,eAAe;QACf,kBAAkB,EAAE;IACtB;AACF","sources":["packages/column-views/src/prepare-units/helpers.ts"],"sourcesContent":["import type { BaseUnit, UnitLong } from \"@macrostrat/api-types\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n unitsOverlap,\n getUnitHeightRange,\n createUnitSorter,\n ensureArray,\n ensureRealFloat,\n} from \"./utils\";\n\nconst dt = 0.001;\n\nexport interface StratigraphicPackage {\n /** A collection of stratigraphic information organized in time, corresponding\n * to single or multiple columns. */\n t_age: number;\n b_age: number;\n}\n\nexport interface SectionInfo<T extends UnitLong = ExtUnit>\n extends StratigraphicPackage {\n /** A time-bounded part of a single stratigraphic column. */\n section_id: number | number[];\n units: T[];\n}\n\nexport interface ExtUnit extends UnitLong {\n bottomOverlap: boolean;\n overlappingUnits: number[];\n column?: number;\n /* Positions (ages or heights) where the unit is clipped to its containing section.\n * This is relevant if we are filtering by age/height/depth range.\n */\n t_clip_pos?: number;\n b_clip_pos?: number;\n}\n\nexport function preprocessUnits<T extends UnitLong = UnitLong>(\n section: SectionInfo<T>,\n axisType: ColumnAxisType = ColumnAxisType.AGE\n): ExtUnit[] {\n /** Preprocess units to add overlapping units and columns. */\n const units = section.units;\n let divisions = units.map((...args) => extendDivision(...args, axisType));\n for (let d of divisions) {\n const overlappingUnits = divisions.filter((u) =>\n d.overlappingUnits.includes(u.unit_id)\n );\n\n // Overlapping columns\n const columns = overlappingUnits.map((d) => d.column);\n\n if (columns.includes(d.column)) {\n let col = 0;\n // Go through columns to find a better index\n while (columns.includes(col)) {\n col++;\n }\n d.column = col;\n }\n\n // If unit overlaps the edges of a section, set the clip positions\n if (axisType == ColumnAxisType.AGE) {\n const [b_pos, t_pos] = getUnitHeightRange(d, axisType);\n if (b_pos > section.b_age) {\n d.b_clip_pos = section.b_age;\n }\n if (t_pos < section.t_age) {\n d.t_clip_pos = section.t_age;\n }\n }\n }\n\n if (axisType != ColumnAxisType.AGE) {\n return preprocessSectionUnits(divisions, axisType);\n }\n\n return divisions;\n}\n\nfunction extendDivision(\n unit: UnitLong,\n i: number,\n divisions: UnitLong[],\n axisType: ColumnAxisType = ColumnAxisType.AGE\n): ExtUnit {\n const overlappingUnits = divisions.filter(\n (d) => d.unit_id != unit.unit_id && unitsOverlap(unit, d, axisType)\n );\n const u_pos = getUnitHeightRange(unit, axisType);\n const bottomOverlap = overlappingUnits.some((d) => {\n const d_pos = getUnitHeightRange(d, axisType);\n // Check if the unit is below the current unit\n return d_pos[0] < u_pos[0] + dt;\n });\n let column = 0;\n if (overlappingUnits.length == 1) {\n column = 1;\n }\n\n return {\n ...unit,\n bottomOverlap,\n column,\n overlappingUnits: overlappingUnits.map((d) => d.unit_id),\n };\n}\n\nexport function groupUnitsIntoSections<T extends UnitLong>(\n units: T[],\n axisType: ColumnAxisType = ColumnAxisType.AGE\n): SectionInfo<T>[] {\n let groups = Array.from(group(units, (d) => d.section_id));\n const unitComparator = createUnitSorter(axisType);\n\n const groups1 = groups.map(([section_id, sectionUnits]) => {\n const [b_age, t_age] = getSectionAgeRange(sectionUnits);\n // sort units by position\n sectionUnits.sort(unitComparator);\n return { section_id, t_age, b_age, units: sectionUnits };\n });\n // Sort sections by increasing top age, then increasing bottom age.\n // Sections have no relative ordinal position other than age...\n const compareSections = createUnitSorter(ColumnAxisType.AGE) as (\n a: StratigraphicPackage,\n b: StratigraphicPackage\n ) => number;\n groups1.sort(compareSections);\n return groups1;\n}\n\nexport function getSectionAgeRange(units: BaseUnit[]): [number, number] {\n /** Get the overall age range of a set of units. */\n const t_ages = units.map((d) => d.t_age);\n const b_ages = units.map((d) => d.b_age);\n const t_age = Math.min(...t_ages);\n const b_age = Math.max(...b_ages);\n return [b_age, t_age];\n}\n\nexport function mergeOverlappingSections<T extends UnitLong>(\n sections: SectionInfo<T>[]\n): SectionInfo<T>[] {\n /** Columns can have sections that overlap in time. Here, we merge overlapping\n * sections into a single section to correctly render gap-bound packages.\n */\n const [firstSection, ...rest] = sections;\n const newSections = [firstSection];\n for (const section of rest) {\n const lastSection = newSections[newSections.length - 1];\n if (\n lastSection.b_age < section.t_age ||\n lastSection.t_age > section.b_age\n ) {\n // No overlap, add the section as normal\n newSections.push(section);\n continue;\n }\n\n // Overlap, merge the sections\n lastSection.section_id = [\n ...ensureArray(lastSection.section_id),\n ...ensureArray(section.section_id),\n ];\n lastSection.units.push(...section.units);\n lastSection.b_age = Math.max(lastSection.b_age, section.b_age);\n lastSection.t_age = Math.min(lastSection.t_age, section.t_age);\n }\n return newSections;\n}\n\nfunction preprocessSectionUnits(\n units: UnitLong[],\n axisType: ColumnAxisType = ColumnAxisType.DEPTH\n): ExtUnit[] {\n /** Preprocess units for a \"section\" column type, which is guaranteed to be simpler. */\n // We have to assume the units are ordered...\n let thickness = 0;\n return units.map((unit, i) => {\n let u1 = preprocessSectionUnit(unit, i, units, thickness, axisType);\n thickness += Math.abs(u1.t_pos - u1.b_pos);\n return u1;\n });\n}\n\nfunction preprocessSectionUnit(\n unit: UnitLong,\n i: number,\n units: UnitLong[],\n accumulatedThickness: number = 0,\n axisType: ColumnAxisType = ColumnAxisType.DEPTH\n): ExtUnit {\n /** Preprocess a single unit for a \"section\" column type.\n * No provision for overlapping units.\n * */\n\n let b_pos = unit.b_pos;\n let t_pos = unit.t_pos;\n\n if (b_pos == t_pos && axisType == ColumnAxisType.ORDINAL) {\n t_pos = t_pos - 1;\n }\n\n let unit_name = unit.unit_name;\n\n // eODP columns sometimes have overlapping core sections, which are encoded in the name field\n // Match eODP section names\n const match = unit.unit_name.match(/^(\\d+(\\.\\d+)?)-(\\d+(\\.\\d+)?): (.+)/);\n\n if (match) {\n // These values should already be set if we've used the show_positions flag\n t_pos ??= ensureRealFloat(match[1]);\n b_pos ??= ensureRealFloat(match[3]);\n unit_name = match[5];\n }\n\n return {\n ...unit,\n b_pos: ensureRealFloat(b_pos),\n t_pos: ensureRealFloat(t_pos),\n unit_name,\n bottomOverlap: false,\n overlappingUnits: [],\n };\n}\n"],"names":[],"version":3,"file":"column-views.1c589cc4.js.map"}