@macrostrat/column-views 2.1.3 → 2.2.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 (362) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/{column-views.4ab0ec82.js → column-views.073c42da.js} +142 -76
  3. package/dist/esm/column-views.073c42da.js.map +1 -0
  4. package/dist/esm/column-views.079119f4.js +17 -0
  5. package/dist/esm/column-views.079119f4.js.map +1 -0
  6. package/dist/esm/{column-views.0e06c069.js → column-views.0859feb3.js} +52 -23
  7. package/dist/esm/column-views.0859feb3.js.map +1 -0
  8. package/dist/esm/{column-views.d099eaf9.js → column-views.0a8a07f4.js} +3 -3
  9. package/dist/esm/{column-views.d099eaf9.js.map → column-views.0a8a07f4.js.map} +1 -1
  10. package/dist/esm/{column-views.0732894f.js → column-views.0f7f6ee6.js} +2 -2
  11. package/dist/esm/{column-views.0732894f.js.map → column-views.0f7f6ee6.js.map} +1 -1
  12. package/dist/esm/{column-views.57636733.css → column-views.1151416d.css} +5 -5
  13. package/dist/esm/column-views.1151416d.css.map +1 -0
  14. package/dist/esm/{column-views.53f4160e.js → column-views.1b644998.js} +3 -3
  15. package/dist/esm/{column-views.53f4160e.js.map → column-views.1b644998.js.map} +1 -1
  16. package/dist/esm/{column-views.686d21ad.js → column-views.22ec902b.js} +4 -1
  17. package/dist/esm/column-views.22ec902b.js.map +1 -0
  18. package/dist/esm/{column-views.3b637517.js → column-views.285cbb65.js} +40 -20
  19. package/dist/esm/column-views.285cbb65.js.map +1 -0
  20. package/dist/esm/column-views.2d602a57.js +37 -0
  21. package/dist/esm/column-views.2d602a57.js.map +1 -0
  22. package/dist/esm/{column-views.b17f793f.css → column-views.321af3ae.css} +7 -1
  23. package/dist/esm/{column-views.686d21ad.js.map → column-views.321af3ae.css.map} +1 -1
  24. package/dist/esm/column-views.3a7179c4.js +137 -0
  25. package/dist/esm/column-views.3a7179c4.js.map +1 -0
  26. package/dist/esm/{column-views.49adc09e.js → column-views.3e1b8c7d.js} +2 -2
  27. package/dist/esm/{column-views.49adc09e.js.map → column-views.3e1b8c7d.js.map} +1 -1
  28. package/dist/esm/{column-views.a23b2c92.js → column-views.3f528c5c.js} +50 -22
  29. package/dist/esm/column-views.3f528c5c.js.map +1 -0
  30. package/dist/esm/{column-views.1e055ed5.js → column-views.4fd4ec92.js} +17 -3
  31. package/dist/esm/column-views.4fd4ec92.js.map +1 -0
  32. package/dist/esm/{column-views.6ca980ae.js → column-views.53186d53.js} +2 -2
  33. package/dist/esm/{column-views.6ca980ae.js.map → column-views.53186d53.js.map} +1 -1
  34. package/dist/esm/{column-views.39657bbf.js → column-views.54f8b909.js} +7 -2
  35. package/dist/esm/column-views.54f8b909.js.map +1 -0
  36. package/dist/esm/{column-views.b72918ce.css → column-views.562db43a.css} +10 -2
  37. package/dist/esm/column-views.562db43a.css.map +1 -0
  38. package/dist/esm/{column-views.9e1c82fe.js → column-views.58b891df.js} +2 -2
  39. package/dist/esm/{column-views.9e1c82fe.js.map → column-views.58b891df.js.map} +1 -1
  40. package/dist/esm/{column-views.a2cf8f33.js → column-views.5a49cd68.js} +8 -38
  41. package/dist/esm/column-views.5a49cd68.js.map +1 -0
  42. package/dist/esm/{column-views.2e0ff311.js → column-views.5d969bc5.js} +6 -58
  43. package/dist/esm/column-views.5d969bc5.js.map +1 -0
  44. package/dist/esm/{column-views.43fb819d.js → column-views.63b7e5aa.js} +3 -3
  45. package/dist/esm/{column-views.43fb819d.js.map → column-views.63b7e5aa.js.map} +1 -1
  46. package/dist/esm/column-views.6698b95a.js +108 -0
  47. package/dist/esm/column-views.6698b95a.js.map +1 -0
  48. package/dist/esm/column-views.6c644353.js +184 -0
  49. package/dist/esm/column-views.6c644353.js.map +1 -0
  50. package/dist/esm/column-views.6e7082db.js +16 -0
  51. package/dist/esm/column-views.6e7082db.js.map +1 -0
  52. package/dist/esm/column-views.70164236.js +206 -0
  53. package/dist/esm/column-views.70164236.js.map +1 -0
  54. package/dist/esm/{column-views.34a1ac4f.js → column-views.73b8ff16.js} +20 -22
  55. package/dist/esm/column-views.73b8ff16.js.map +1 -0
  56. package/dist/esm/{column-views.9771145a.js → column-views.77561197.js} +91 -55
  57. package/dist/esm/column-views.77561197.js.map +1 -0
  58. package/dist/esm/{column-views.572b70fd.js → column-views.83395185.js} +3 -3
  59. package/dist/esm/{column-views.572b70fd.js.map → column-views.83395185.js.map} +1 -1
  60. package/dist/esm/{column-views.6dc251d3.js → column-views.86a51ce7.js} +2 -2
  61. package/dist/esm/{column-views.6dc251d3.js.map → column-views.86a51ce7.js.map} +1 -1
  62. package/dist/esm/{column-views.f08929e2.js → column-views.88d63dd0.js} +5 -3
  63. package/dist/esm/column-views.88d63dd0.js.map +1 -0
  64. package/dist/esm/{column-views.3f246167.js → column-views.8c296309.js} +5 -5
  65. package/dist/esm/column-views.8c296309.js.map +1 -0
  66. package/dist/esm/{column-views.7d47a72a.js → column-views.8d24b179.js} +3 -3
  67. package/dist/esm/{column-views.7d47a72a.js.map → column-views.8d24b179.js.map} +1 -1
  68. package/dist/esm/{column-views.3d001ab8.js → column-views.986e7566.js} +7 -7
  69. package/dist/esm/{column-views.3d001ab8.js.map → column-views.986e7566.js.map} +1 -1
  70. package/dist/esm/{column-views.86619334.js → column-views.9ddbe7df.js} +2 -2
  71. package/dist/esm/{column-views.86619334.js.map → column-views.9ddbe7df.js.map} +1 -1
  72. package/dist/esm/{column-views.abe90091.js → column-views.ae7c0a2b.js} +31 -60
  73. package/dist/esm/column-views.ae7c0a2b.js.map +1 -0
  74. package/dist/esm/{column-views.9892f825.js → column-views.aecf25bc.js} +75 -42
  75. package/dist/esm/column-views.aecf25bc.js.map +1 -0
  76. package/dist/esm/column-views.b7016f82.css +54 -0
  77. package/dist/esm/column-views.b7016f82.css.map +1 -0
  78. package/dist/esm/{column-views.a5c1bbf0.js → column-views.ba0381cc.js} +2 -2
  79. package/dist/esm/{column-views.a5c1bbf0.js.map → column-views.ba0381cc.js.map} +1 -1
  80. package/dist/esm/{column-views.ff031876.js → column-views.c518ef14.js} +9 -4
  81. package/dist/esm/column-views.c518ef14.js.map +1 -0
  82. package/dist/esm/{column-views.f7523c1d.js → column-views.c92a359e.js} +2 -2
  83. package/dist/esm/{column-views.f7523c1d.js.map → column-views.c92a359e.js.map} +1 -1
  84. package/dist/esm/{column-views.cdadc5c2.js → column-views.cc733361.js} +7 -1
  85. package/dist/esm/column-views.cc733361.js.map +1 -0
  86. package/dist/esm/{column-views.4d22c21c.js → column-views.d15d8655.js} +22 -4
  87. package/dist/esm/column-views.d15d8655.js.map +1 -0
  88. package/dist/esm/{column-views.5e2dc19d.js → column-views.d261b02d.js} +3 -3
  89. package/dist/esm/{column-views.5e2dc19d.js.map → column-views.d261b02d.js.map} +1 -1
  90. package/dist/esm/{column-views.323cad41.js → column-views.d406665d.js} +5 -5
  91. package/dist/esm/{column-views.323cad41.js.map → column-views.d406665d.js.map} +1 -1
  92. package/dist/esm/{column-views.7715e35e.js → column-views.d69c4a9f.js} +3 -3
  93. package/dist/esm/{column-views.7715e35e.js.map → column-views.d69c4a9f.js.map} +1 -1
  94. package/dist/esm/{column-views.07db2ab1.js → column-views.d9c6b527.js} +15 -12
  95. package/dist/esm/column-views.d9c6b527.js.map +1 -0
  96. package/dist/esm/{column-views.b12a6374.css → column-views.e33ac5c9.css} +30 -9
  97. package/dist/esm/column-views.e33ac5c9.css.map +1 -0
  98. package/dist/esm/column-views.e3bf5384.js +15 -0
  99. package/dist/esm/{column-views.6d5e3098.js.map → column-views.e3bf5384.js.map} +1 -1
  100. package/dist/esm/{column-views.a8926321.js → column-views.e4c26185.js} +2 -2
  101. package/dist/esm/{column-views.a8926321.js.map → column-views.e4c26185.js.map} +1 -1
  102. package/dist/esm/column-views.e84bd756.js +92 -0
  103. package/dist/esm/column-views.e84bd756.js.map +1 -0
  104. package/dist/esm/column-views.ea4ebbb7.js +31 -0
  105. package/dist/esm/column-views.ea4ebbb7.js.map +1 -0
  106. package/dist/esm/column-views.ed05e233.js +13 -0
  107. package/dist/esm/{column-views.3729c372.js.map → column-views.ed05e233.js.map} +1 -1
  108. package/dist/esm/{column-views.64a84c43.js → column-views.f2fd0e4a.js} +10 -2
  109. package/dist/esm/column-views.f2fd0e4a.js.map +1 -0
  110. package/dist/esm/{column-views.103b1cb0.js → column-views.f46a0b36.js} +2 -2
  111. package/dist/esm/{column-views.103b1cb0.js.map → column-views.f46a0b36.js.map} +1 -1
  112. package/dist/esm/{column-views.d48cb0d8.js → column-views.fcf25ec6.js} +7 -1
  113. package/dist/esm/column-views.fcf25ec6.js.map +1 -0
  114. package/dist/esm/index.d.ts +235 -397
  115. package/dist/esm/index.d.ts.map +1 -1
  116. package/dist/esm/index.js +12 -12
  117. package/dist/node/{column-views.36094762.js → column-views.01debc76.js} +2 -2
  118. package/dist/node/{column-views.36094762.js.map → column-views.01debc76.js.map} +1 -1
  119. package/dist/node/{column-views.31f57130.js → column-views.040499c9.js} +2 -2
  120. package/dist/node/{column-views.31f57130.js.map → column-views.040499c9.js.map} +1 -1
  121. package/dist/node/{column-views.50034105.js → column-views.07ff1fdf.js} +2 -2
  122. package/dist/node/{column-views.50034105.js.map → column-views.07ff1fdf.js.map} +1 -1
  123. package/dist/node/{column-views.3a55ecd7.css → column-views.0840b115.css} +2 -2
  124. package/dist/node/column-views.0840b115.css.map +1 -0
  125. package/dist/node/column-views.0b3a384e.js +2 -0
  126. package/dist/node/column-views.0b3a384e.js.map +1 -0
  127. package/dist/node/column-views.0bd15ee4.js +2 -0
  128. package/dist/node/column-views.0bd15ee4.js.map +1 -0
  129. package/dist/node/column-views.105f6ad2.js +2 -0
  130. package/dist/node/column-views.105f6ad2.js.map +1 -0
  131. package/dist/node/column-views.1261be59.js +2 -0
  132. package/dist/node/column-views.1261be59.js.map +1 -0
  133. package/dist/node/{column-views.4381c411.js → column-views.13e69859.js} +2 -2
  134. package/dist/node/{column-views.4381c411.js.map → column-views.13e69859.js.map} +1 -1
  135. package/dist/node/column-views.16f336ee.js +2 -0
  136. package/dist/node/column-views.16f336ee.js.map +1 -0
  137. package/dist/node/{column-views.c18d5bf5.js → column-views.1a7f8afd.js} +2 -2
  138. package/dist/node/{column-views.c18d5bf5.js.map → column-views.1a7f8afd.js.map} +1 -1
  139. package/dist/node/column-views.29eb25bd.css +2 -0
  140. package/dist/node/column-views.29eb25bd.css.map +1 -0
  141. package/dist/node/column-views.2bd97c2e.js +2 -0
  142. package/dist/node/column-views.2bd97c2e.js.map +1 -0
  143. package/dist/node/column-views.3b37363f.js +2 -0
  144. package/dist/node/column-views.3b37363f.js.map +1 -0
  145. package/dist/node/column-views.45296250.js +2 -0
  146. package/dist/node/column-views.45296250.js.map +1 -0
  147. package/dist/node/{column-views.0cbd4a3f.js → column-views.48a3cfa3.js} +2 -2
  148. package/dist/node/{column-views.0cbd4a3f.js.map → column-views.48a3cfa3.js.map} +1 -1
  149. package/dist/node/{column-views.42db0bb8.js → column-views.492c2c72.js} +2 -2
  150. package/dist/node/{column-views.42db0bb8.js.map → column-views.492c2c72.js.map} +1 -1
  151. package/dist/node/column-views.50a992d3.css +2 -0
  152. package/dist/node/column-views.50a992d3.css.map +1 -0
  153. package/dist/node/column-views.573cb29d.js +2 -0
  154. package/dist/node/column-views.573cb29d.js.map +1 -0
  155. package/dist/node/column-views.576e3c5a.js +2 -0
  156. package/dist/node/column-views.576e3c5a.js.map +1 -0
  157. package/dist/node/column-views.5f3b0b04.js +2 -0
  158. package/dist/node/column-views.5f3b0b04.js.map +1 -0
  159. package/dist/node/column-views.6fd5a922.js +2 -0
  160. package/dist/node/column-views.6fd5a922.js.map +1 -0
  161. package/dist/node/column-views.7150ba18.js +2 -0
  162. package/dist/node/column-views.7150ba18.js.map +1 -0
  163. package/dist/node/column-views.728c8dfc.js +2 -0
  164. package/dist/node/column-views.728c8dfc.js.map +1 -0
  165. package/dist/node/column-views.7425d37b.js +2 -0
  166. package/dist/node/column-views.7425d37b.js.map +1 -0
  167. package/dist/node/{column-views.2e4e357d.js → column-views.75582658.js} +2 -2
  168. package/dist/node/{column-views.2e4e357d.js.map → column-views.75582658.js.map} +1 -1
  169. package/dist/node/column-views.77ace3a2.js +2 -0
  170. package/dist/node/column-views.77ace3a2.js.map +1 -0
  171. package/dist/node/column-views.7f9c7448.js +2 -0
  172. package/dist/node/column-views.7f9c7448.js.map +1 -0
  173. package/dist/node/{column-views.a2274834.js → column-views.81294fb7.js} +2 -2
  174. package/dist/node/{column-views.a2274834.js.map → column-views.81294fb7.js.map} +1 -1
  175. package/dist/node/column-views.827a9894.js +2 -0
  176. package/dist/node/column-views.827a9894.js.map +1 -0
  177. package/dist/node/column-views.87b1439e.js +2 -0
  178. package/dist/node/column-views.87b1439e.js.map +1 -0
  179. package/dist/node/{column-views.e4f18ff7.js → column-views.9dda582d.js} +2 -2
  180. package/dist/node/{column-views.e4f18ff7.js.map → column-views.9dda582d.js.map} +1 -1
  181. package/dist/node/column-views.9e155f20.js +2 -0
  182. package/dist/node/column-views.9e155f20.js.map +1 -0
  183. package/dist/node/column-views.a16cd1f2.js +2 -0
  184. package/dist/node/column-views.a16cd1f2.js.map +1 -0
  185. package/dist/node/{column-views.adf9e5b3.js → column-views.a34732e7.js} +2 -2
  186. package/dist/node/{column-views.adf9e5b3.js.map → column-views.a34732e7.js.map} +1 -1
  187. package/dist/node/{column-views.f17b6142.js → column-views.a396d3ac.js} +2 -2
  188. package/dist/node/{column-views.f17b6142.js.map → column-views.a396d3ac.js.map} +1 -1
  189. package/dist/node/column-views.aae09aca.js +2 -0
  190. package/dist/node/column-views.aae09aca.js.map +1 -0
  191. package/dist/node/{column-views.db5d74bd.js → column-views.ac1b58b7.js} +2 -2
  192. package/dist/node/{column-views.db5d74bd.js.map → column-views.ac1b58b7.js.map} +1 -1
  193. package/dist/node/column-views.aef76eee.js +2 -0
  194. package/dist/node/column-views.aef76eee.js.map +1 -0
  195. package/dist/node/column-views.b64cd0ea.js +2 -0
  196. package/dist/node/column-views.b64cd0ea.js.map +1 -0
  197. package/dist/node/column-views.b6cd4360.js +2 -0
  198. package/dist/node/column-views.b6cd4360.js.map +1 -0
  199. package/dist/node/column-views.c0be1157.js +2 -0
  200. package/dist/node/column-views.c0be1157.js.map +1 -0
  201. package/dist/node/column-views.c29e9eb8.js +2 -0
  202. package/dist/node/column-views.c29e9eb8.js.map +1 -0
  203. package/dist/node/column-views.c8df6435.js +2 -0
  204. package/dist/node/column-views.c8df6435.js.map +1 -0
  205. package/dist/node/column-views.cd2a5c85.js +2 -0
  206. package/dist/node/column-views.cd2a5c85.js.map +1 -0
  207. package/dist/node/{column-views.3d220e0c.js → column-views.cd77a1d8.js} +2 -2
  208. package/dist/node/{column-views.3d220e0c.js.map → column-views.cd77a1d8.js.map} +1 -1
  209. package/dist/node/column-views.cd7b223b.css +2 -0
  210. package/dist/node/column-views.cd7b223b.css.map +1 -0
  211. package/dist/node/column-views.cf2a78c1.js +2 -0
  212. package/dist/node/column-views.cf2a78c1.js.map +1 -0
  213. package/dist/node/{column-views.c7f6fc0a.js → column-views.d529d3aa.js} +2 -2
  214. package/dist/node/{column-views.c7f6fc0a.js.map → column-views.d529d3aa.js.map} +1 -1
  215. package/dist/node/{column-views.7010a03b.js → column-views.dd972321.js} +2 -2
  216. package/dist/node/{column-views.7010a03b.js.map → column-views.dd972321.js.map} +1 -1
  217. package/dist/node/column-views.e065152e.js +2 -0
  218. package/dist/node/column-views.e065152e.js.map +1 -0
  219. package/dist/node/{column-views.6c7a40e0.js → column-views.e08f8715.js} +2 -2
  220. package/dist/node/{column-views.6c7a40e0.js.map → column-views.e08f8715.js.map} +1 -1
  221. package/dist/node/{column-views.507635e2.js → column-views.e0d9865e.js} +2 -2
  222. package/dist/node/column-views.e0d9865e.js.map +1 -0
  223. package/dist/node/column-views.e2562224.js +2 -0
  224. package/dist/node/column-views.e2562224.js.map +1 -0
  225. package/dist/node/column-views.e803e4ae.css +2 -0
  226. package/dist/node/column-views.e803e4ae.css.map +1 -0
  227. package/dist/node/column-views.edb4ba54.js +2 -0
  228. package/dist/node/column-views.edb4ba54.js.map +1 -0
  229. package/dist/node/index.js +1 -1
  230. package/dist/node/index.js.map +1 -1
  231. package/package.json +14 -14
  232. package/src/age-axis.module.sass +4 -2
  233. package/src/age-axis.ts +49 -15
  234. package/src/age-model-overlay.ts +22 -1
  235. package/src/column.module.sass +32 -9
  236. package/src/column.ts +91 -19
  237. package/src/correlation-chart/main.ts +10 -2
  238. package/src/correlation-chart/prepare-data.ts +7 -4
  239. package/src/correlation-chart/stories/correlation-chart.stories.ts +26 -1
  240. package/src/data-provider/base.ts +33 -25
  241. package/src/data-provider/fetch.ts +10 -3
  242. package/src/data-provider/store.ts +16 -10
  243. package/src/facets/base-sample-column.module.sass +14 -0
  244. package/src/facets/base-sample-column.ts +114 -0
  245. package/src/facets/detrital-zircon/index.ts +31 -63
  246. package/src/facets/fossils/index.module.sass +43 -13
  247. package/src/facets/fossils/index.ts +246 -80
  248. package/src/facets/fossils/provider.ts +121 -25
  249. package/src/facets/index.ts +2 -0
  250. package/src/facets/measurements/index.ts +38 -0
  251. package/src/facets/measurements/provider.ts +80 -0
  252. package/src/prepare-units/composite-scale.ts +183 -155
  253. package/src/prepare-units/dynamic-scales.ts +298 -0
  254. package/src/prepare-units/helpers.ts +99 -87
  255. package/src/prepare-units/index.ts +77 -51
  256. package/src/prepare-units/types.ts +138 -0
  257. package/src/prepare-units/utils.ts +29 -1
  258. package/src/section.ts +46 -9
  259. package/src/unit-details/panel.module.sass +8 -1
  260. package/src/unit-details/panel.ts +123 -53
  261. package/src/unit-details/popover.ts +5 -0
  262. package/src/units/boxes.ts +2 -69
  263. package/src/units/composite.ts +3 -49
  264. package/src/units/selection.ts +21 -7
  265. package/dist/esm/column-views.07db2ab1.js.map +0 -1
  266. package/dist/esm/column-views.0e06c069.js.map +0 -1
  267. package/dist/esm/column-views.1c92b88f.js +0 -16
  268. package/dist/esm/column-views.1c92b88f.js.map +0 -1
  269. package/dist/esm/column-views.1e055ed5.js.map +0 -1
  270. package/dist/esm/column-views.2e0ff311.js.map +0 -1
  271. package/dist/esm/column-views.3048acc1.js +0 -66
  272. package/dist/esm/column-views.3048acc1.js.map +0 -1
  273. package/dist/esm/column-views.34a1ac4f.js.map +0 -1
  274. package/dist/esm/column-views.3729c372.js +0 -13
  275. package/dist/esm/column-views.39657bbf.js.map +0 -1
  276. package/dist/esm/column-views.3b637517.js.map +0 -1
  277. package/dist/esm/column-views.3f246167.js.map +0 -1
  278. package/dist/esm/column-views.4ab0ec82.js.map +0 -1
  279. package/dist/esm/column-views.4d22c21c.js.map +0 -1
  280. package/dist/esm/column-views.57636733.css.map +0 -1
  281. package/dist/esm/column-views.60dc6bfc.js +0 -108
  282. package/dist/esm/column-views.60dc6bfc.js.map +0 -1
  283. package/dist/esm/column-views.64a84c43.js.map +0 -1
  284. package/dist/esm/column-views.6d5e3098.js +0 -11
  285. package/dist/esm/column-views.9771145a.js.map +0 -1
  286. package/dist/esm/column-views.9892f825.js.map +0 -1
  287. package/dist/esm/column-views.a23b2c92.js.map +0 -1
  288. package/dist/esm/column-views.a2cf8f33.js.map +0 -1
  289. package/dist/esm/column-views.abe90091.js.map +0 -1
  290. package/dist/esm/column-views.b12a6374.css.map +0 -1
  291. package/dist/esm/column-views.b17f793f.css.map +0 -1
  292. package/dist/esm/column-views.b72918ce.css.map +0 -1
  293. package/dist/esm/column-views.c71c321c.js +0 -104
  294. package/dist/esm/column-views.c71c321c.js.map +0 -1
  295. package/dist/esm/column-views.cdadc5c2.js.map +0 -1
  296. package/dist/esm/column-views.d48cb0d8.js.map +0 -1
  297. package/dist/esm/column-views.f08929e2.js.map +0 -1
  298. package/dist/esm/column-views.ff031876.js.map +0 -1
  299. package/dist/node/column-views.0bb1ec93.js +0 -2
  300. package/dist/node/column-views.0bb1ec93.js.map +0 -1
  301. package/dist/node/column-views.13c4ea85.js +0 -2
  302. package/dist/node/column-views.13c4ea85.js.map +0 -1
  303. package/dist/node/column-views.1a0b56fc.js +0 -2
  304. package/dist/node/column-views.1a0b56fc.js.map +0 -1
  305. package/dist/node/column-views.226d0bdb.js +0 -2
  306. package/dist/node/column-views.226d0bdb.js.map +0 -1
  307. package/dist/node/column-views.2926f656.css +0 -2
  308. package/dist/node/column-views.2926f656.css.map +0 -1
  309. package/dist/node/column-views.2ab1c2f8.js +0 -2
  310. package/dist/node/column-views.2ab1c2f8.js.map +0 -1
  311. package/dist/node/column-views.3345cd7a.js +0 -2
  312. package/dist/node/column-views.3345cd7a.js.map +0 -1
  313. package/dist/node/column-views.33752461.js +0 -2
  314. package/dist/node/column-views.33752461.js.map +0 -1
  315. package/dist/node/column-views.372bbee2.js +0 -2
  316. package/dist/node/column-views.372bbee2.js.map +0 -1
  317. package/dist/node/column-views.38357d4a.js +0 -2
  318. package/dist/node/column-views.38357d4a.js.map +0 -1
  319. package/dist/node/column-views.3a55ecd7.css.map +0 -1
  320. package/dist/node/column-views.3eeac38d.js +0 -2
  321. package/dist/node/column-views.3eeac38d.js.map +0 -1
  322. package/dist/node/column-views.3f032518.js +0 -2
  323. package/dist/node/column-views.3f032518.js.map +0 -1
  324. package/dist/node/column-views.45168c80.js +0 -2
  325. package/dist/node/column-views.45168c80.js.map +0 -1
  326. package/dist/node/column-views.507635e2.js.map +0 -1
  327. package/dist/node/column-views.556e8f69.js +0 -2
  328. package/dist/node/column-views.556e8f69.js.map +0 -1
  329. package/dist/node/column-views.5f05b73f.js +0 -2
  330. package/dist/node/column-views.5f05b73f.js.map +0 -1
  331. package/dist/node/column-views.6ae7bb69.js +0 -2
  332. package/dist/node/column-views.6ae7bb69.js.map +0 -1
  333. package/dist/node/column-views.755f726e.js +0 -2
  334. package/dist/node/column-views.755f726e.js.map +0 -1
  335. package/dist/node/column-views.75b0a8f8.js +0 -2
  336. package/dist/node/column-views.75b0a8f8.js.map +0 -1
  337. package/dist/node/column-views.78d3f3c5.js +0 -2
  338. package/dist/node/column-views.78d3f3c5.js.map +0 -1
  339. package/dist/node/column-views.8cfed88b.js +0 -2
  340. package/dist/node/column-views.8cfed88b.js.map +0 -1
  341. package/dist/node/column-views.99fb74c0.js +0 -2
  342. package/dist/node/column-views.99fb74c0.js.map +0 -1
  343. package/dist/node/column-views.a501cea0.js +0 -2
  344. package/dist/node/column-views.a501cea0.js.map +0 -1
  345. package/dist/node/column-views.af275c48.js +0 -2
  346. package/dist/node/column-views.af275c48.js.map +0 -1
  347. package/dist/node/column-views.afbf351c.js +0 -2
  348. package/dist/node/column-views.afbf351c.js.map +0 -1
  349. package/dist/node/column-views.b180e8c9.js +0 -2
  350. package/dist/node/column-views.b180e8c9.js.map +0 -1
  351. package/dist/node/column-views.cd468adb.css +0 -2
  352. package/dist/node/column-views.cd468adb.css.map +0 -1
  353. package/dist/node/column-views.d6708353.js +0 -2
  354. package/dist/node/column-views.d6708353.js.map +0 -1
  355. package/dist/node/column-views.e1a43131.css +0 -2
  356. package/dist/node/column-views.e1a43131.css.map +0 -1
  357. package/dist/node/column-views.e9515ec1.js +0 -2
  358. package/dist/node/column-views.e9515ec1.js.map +0 -1
  359. package/dist/node/column-views.f15a6ed4.js +0 -2
  360. package/dist/node/column-views.f15a6ed4.js.map +0 -1
  361. package/dist/node/column-views.fc05616e.js +0 -2
  362. package/dist/node/column-views.fc05616e.js.map +0 -1
@@ -1,44 +1,32 @@
1
1
  import {
2
2
  getSectionAgeRange,
3
- groupUnitsIntoSections,
3
+ getSectionPosRange,
4
+ groupUnitsIntoSectionsByOverlap,
5
+ groupUnitsIntoSectionsBySectionID,
4
6
  mergeOverlappingSections,
7
+ preprocessSectionUnit,
5
8
  preprocessUnits,
6
9
  } from "./helpers";
7
10
  import { ColumnAxisType } from "@macrostrat/column-components";
8
11
  import { useMemo } from "react";
9
- import type { ExtUnit } from "./helpers";
10
12
  import { UnitLong } from "@macrostrat/api-types";
11
13
  import {
12
14
  collapseUnconformitiesByPixelHeight,
13
- ColumnScaleOptions,
14
- CompositeColumnData,
15
15
  computeSectionHeights,
16
16
  finalizeSectionHeights,
17
- PackageLayoutData,
18
17
  } from "./composite-scale";
19
- import type { SectionInfo } from "./helpers";
20
- import { agesOverlap, getUnitHeightRange, unitsOverlap } from "./utils";
18
+ import {
19
+ agesOverlap,
20
+ MergeSectionsMode,
21
+ PrepareColumnOptions,
22
+ PreparedColumnData,
23
+ unitsOverlap,
24
+ } from "./utils";
25
+ import { SectionInfo } from "./types";
21
26
 
22
27
  export * from "./utils";
23
- export { preprocessUnits, groupUnitsIntoSections };
24
-
25
- export interface PrepareColumnOptions extends ColumnScaleOptions {
26
- axisType: ColumnAxisType;
27
- t_age?: number;
28
- b_age?: number;
29
- mergeSections?: MergeSectionsMode;
30
- collapseSmallUnconformities?: boolean | number;
31
- }
32
-
33
- export enum MergeSectionsMode {
34
- ALL = "all",
35
- OVERLAPPING = "overlapping",
36
- }
37
-
38
- export interface PreparedColumnData extends CompositeColumnData {
39
- sections: PackageLayoutData[];
40
- units: ExtUnit[];
41
- }
28
+ export * from "./types";
29
+ export { preprocessUnits };
42
30
 
43
31
  export function usePreparedColumnUnits(
44
32
  data: UnitLong[],
@@ -58,27 +46,55 @@ export function prepareColumnUnits(
58
46
  ): PreparedColumnData {
59
47
  /** Prepare units for rendering into Macrostrat columns */
60
48
 
49
+ let { t_age, b_age, t_pos, b_pos } = options;
50
+
61
51
  const {
62
- t_age,
63
- b_age,
64
52
  mergeSections = MergeSectionsMode.OVERLAPPING,
65
53
  axisType,
66
54
  unconformityHeight,
67
55
  collapseSmallUnconformities = false,
56
+ hybridScale,
57
+ scale,
68
58
  } = options;
69
59
 
60
+ if (scale != null) {
61
+ // Set t_age and b_age based on scale domain if not already set
62
+ const domain = scale.domain();
63
+ if (axisType == ColumnAxisType.AGE) {
64
+ if (t_age == null) t_age = Math.min(...domain);
65
+ if (b_age == null) b_age = Math.max(...domain);
66
+ } else {
67
+ if (t_pos == null) t_pos = Math.min(...domain);
68
+ if (b_pos == null) b_pos = Math.max(...domain);
69
+ }
70
+ }
71
+
72
+ // Start by ensuring that ages and positions are numbers
73
+ // also set up some values for eODP-style columns
74
+ let units1 = units.map(preprocessSectionUnit);
75
+
70
76
  /** Prototype filtering to age range */
71
- let units1 = units.filter((d) => {
77
+ units1 = units1.filter((d) => {
72
78
  // Filter units by t_age and b_age, inclusive
73
- return agesOverlap(d, { t_age, b_age });
79
+ if (axisType == ColumnAxisType.AGE) {
80
+ return agesOverlap(d, { t_age, b_age });
81
+ } else {
82
+ return unitsOverlap(d, { t_pos, b_pos } as any, axisType);
83
+ }
74
84
  });
75
85
 
86
+ let mergeMode = mergeSections;
87
+ // if (axisType != ColumnAxisType.AGE) {
88
+ // // For non-age columns, we always merge sections.
89
+ // // This is because the "groupUnitsIntoSections" function is not well-defined
90
+ // // for non-age columns.
91
+ // mergeMode = MergeSectionsMode.ALL;
92
+ // }
93
+
76
94
  let sections0: SectionInfo<UnitLong>[];
77
- if (
78
- mergeSections == MergeSectionsMode.ALL &&
79
- axisType != ColumnAxisType.ORDINAL
80
- ) {
95
+ if (mergeMode == MergeSectionsMode.ALL) {
81
96
  // For the "merge sections" mode, we need to create a single section
97
+ const [b_unit_pos, t_unit_pos] = getSectionPosRange(units1, axisType);
82
98
  const [b_unit_age, t_unit_age] = getSectionAgeRange(units1);
83
99
  sections0 = [
84
100
  {
@@ -86,13 +102,31 @@ export function prepareColumnUnits(
86
102
  /**
87
103
  * If ages limits are directly specified, use them to define the section bounds.
88
104
  * */
89
- t_age: t_age ?? t_unit_age,
90
- b_age: b_age ?? b_unit_age,
105
+ t_pos: t_unit_pos,
106
+ b_pos: b_unit_pos,
107
+ t_age: t_unit_age,
108
+ b_age: b_unit_age,
91
109
  units: units1,
92
110
  },
93
111
  ];
112
+ } else if (axisType == ColumnAxisType.AGE) {
113
+ sections0 = groupUnitsIntoSectionsBySectionID(units1, axisType);
94
114
  } else {
95
- sections0 = groupUnitsIntoSections(units1, axisType);
115
+ sections0 = groupUnitsIntoSectionsByOverlap(units1, axisType);
116
+ }
117
+
118
+ // Limit sections to the range specified by t_age/b_age or t_pos/b_pos global options
119
+ for (let section of sections0) {
120
+ if (axisType == ColumnAxisType.AGE) {
121
+ section.t_age = Math.max(section.t_age, t_age ?? -Infinity);
122
+ section.b_age = Math.min(section.b_age, b_age ?? Infinity);
123
+ } else if (axisType == ColumnAxisType.DEPTH) {
124
+ section.t_pos = Math.max(section.t_pos, t_pos ?? -Infinity);
125
+ section.b_pos = Math.min(section.b_pos, b_pos ?? Infinity);
126
+ } else if (axisType == ColumnAxisType.HEIGHT) {
127
+ section.t_pos = Math.max(section.t_pos, t_pos ?? -Infinity);
128
+ section.b_pos = Math.min(section.b_pos, b_pos ?? Infinity);
129
+ }
96
130
  }
97
131
 
98
132
  /** Merging overlapping sections really only makes sense for age/height/depth
@@ -102,24 +136,14 @@ export function prepareColumnUnits(
102
136
  let sections = sections0;
103
137
  if (
104
138
  mergeSections == MergeSectionsMode.OVERLAPPING &&
105
- axisType != ColumnAxisType.ORDINAL
139
+ axisType == ColumnAxisType.AGE
106
140
  ) {
107
141
  sections = mergeOverlappingSections(sections);
108
142
  }
109
143
  // Filter out undefined sections just in case
110
144
  sections = sections.filter((d) => d != null);
111
145
 
112
- /* Now that we are done merging sections, we can ensure that our sections
113
- * are correctly limited to the t_age and b_age applied to the overall column.
114
- */
115
- sections = sections.map((section) => {
116
- const { t_age, b_age } = section;
117
- return {
118
- ...section,
119
- t_age: Math.max(t_age, options.t_age ?? -Infinity),
120
- b_age: Math.min(b_age, options.b_age ?? Infinity),
121
- };
122
- });
146
+ // SCALES
123
147
 
124
148
  /* Compute pixel scales etc. for sections
125
149
  * We need to do this now to determine which unconformities
@@ -127,7 +151,9 @@ export function prepareColumnUnits(
127
151
  */
128
152
  let sectionsWithScales = computeSectionHeights(sections, options);
129
153
 
130
- if (collapseSmallUnconformities ?? false) {
154
+ if (collapseSmallUnconformities && hybridScale == null) {
155
+ // Collapse small unconformities in pixel height space
156
+ // TODO: this doesn't seem to work properly for non-age columns?
131
157
  let threshold = unconformityHeight ?? 30;
132
158
  if (typeof collapseSmallUnconformities == "number") {
133
159
  threshold = collapseSmallUnconformities;
@@ -141,7 +167,7 @@ export function prepareColumnUnits(
141
167
  }
142
168
 
143
169
  /** Prepare section scale information using groups */
144
- const { totalHeight, sections: sections2 } = finalizeSectionHeights(
170
+ let { totalHeight, sections: sections2 } = finalizeSectionHeights(
145
171
  sectionsWithScales,
146
172
  unconformityHeight,
147
173
  );
@@ -0,0 +1,138 @@
1
+ import type { UnitLong } from "@macrostrat/api-types";
2
+ import type { ColumnAxisType } from "@macrostrat/column-components";
3
+ import type { ScaleContinuousNumeric } from "d3-scale";
4
+
5
+ export interface ColumnHeightScaleOptions {
6
+ /** A fixed pixel scale to use for the section (pixels per Myr) */
7
+ pixelScale?: number;
8
+ /** The target height of a constituent unit in pixels, for dynamic
9
+ * scale generation */
10
+ targetUnitHeight?: number;
11
+ /** Min height of a section in pixels. Will override minPixelScale in some cases. */
12
+ minSectionHeight?: number;
13
+ /** The minimum pixel scale to use for the section (pixels per Myr). This is mostly
14
+ * needed because small sections (<1-2 units) don't necessarily have space to comfortably
15
+ * render two axis labels */
16
+ minPixelScale?: number;
17
+ // Axis scale type
18
+ axisType?: ColumnAxisType;
19
+ // Unconformity height in pixels
20
+ unconformityHeight?: number;
21
+ // Whether to collapse unconformities that are less than a height threshold
22
+ collapseSmallUnconformities?: boolean | number;
23
+ // A continuous scale to use instead of generating one
24
+ // TODO: discontinuous scales are not yet supported
25
+ scale?: ScaleContinuousNumeric<number, number>;
26
+ // Hybrid scale type.
27
+ // This overrides parameters such as the axis type
28
+ hybridScale?: HybridScaleDefinition;
29
+ }
30
+
31
+ export enum HybridScaleType {
32
+ // An age-domain scale that puts equal vertical space between surfaces
33
+ EquidistantSurfaces = "equidistant-surfaces",
34
+ // A height-domain scale that is based on the average height of units between surfaces
35
+ ApproximateHeight = "approximate-height",
36
+ }
37
+
38
+ export enum HeightMethod {
39
+ Minimum = "minimum",
40
+ Average = "average",
41
+ Maximum = "maximum",
42
+ }
43
+
44
+ export interface HybridScaleOptions {
45
+ pixelOffset?: number;
46
+ pixelScale?: number;
47
+ }
48
+
49
+ export type ApproxHeightScaleOptions = {
50
+ minHeight?: number;
51
+ defaultHeight?: number;
52
+ heightMethod?: HeightMethod;
53
+ };
54
+
55
+ export type HybridScaleDefinition =
56
+ | ({
57
+ type: HybridScaleType.ApproximateHeight;
58
+ } & ApproxHeightScaleOptions)
59
+ | {
60
+ type: HybridScaleType.EquidistantSurfaces;
61
+ };
62
+
63
+ export interface SectionScaleOptions extends ColumnHeightScaleOptions {
64
+ axisType: ColumnAxisType;
65
+ domain: [number, number];
66
+ }
67
+
68
+ /** Output of a section scale. For now, this assumes that the
69
+ * mapping is linear, but it could be extended to support arbitrary
70
+ * scale functions.
71
+ */
72
+ export interface PackageScaleInfo {
73
+ domain: [number, number];
74
+ pixelHeight: number;
75
+ // TODO: add a function
76
+ scale: ScaleContinuousNumeric<number, number>;
77
+ pixelScale?: number; // if it's a linear scale, this could be defined
78
+ // Subsidiary scale for height mapping (for hybrid scales)
79
+ heightScale?: ScaleContinuousNumeric<number, number>;
80
+ }
81
+
82
+ export type PackageScaleLayoutData = PackageScaleInfo & {
83
+ // A unique key for the section to use in React
84
+ key: string;
85
+ offset: number;
86
+ // How much to
87
+ paddingTop: number;
88
+ };
89
+ export interface StratigraphicPackage {
90
+ /** A collection of stratigraphic information organized in time, corresponding
91
+ * to single or multiple columns. */
92
+ t_age: number;
93
+ b_age: number;
94
+ }
95
+
96
+ export interface SectionInfo<
97
+ T extends UnitLong = ExtUnit,
98
+ > extends StratigraphicPackage {
99
+ /** A time-bounded part of a single stratigraphic column. */
100
+ section_id: number | number[];
101
+ units: T[];
102
+ b_pos?: number;
103
+ t_pos?: number;
104
+ }
105
+
106
+ export interface ExtUnit extends UnitLong {
107
+ bottomOverlap: boolean;
108
+ overlappingUnits: number[];
109
+ column?: number;
110
+ /* Positions (ages or heights) where the unit is clipped to its containing section.
111
+ * This is relevant if we are filtering by age/height/depth range.
112
+ */
113
+ t_clip_pos?: number;
114
+ b_clip_pos?: number;
115
+ }
116
+
117
+ export type PackageLayoutData<T extends UnitLong = ExtUnit> = SectionInfo<T> & {
118
+ scaleInfo: PackageScaleLayoutData;
119
+ // A unique key for the section to use in React
120
+ key: string;
121
+ };
122
+
123
+ export interface CompositeScaleData {
124
+ totalHeight: number;
125
+ sections: PackageScaleLayoutData[];
126
+ }
127
+
128
+ export interface ColumnScaleOptions extends ColumnHeightScaleOptions {
129
+ axisType: ColumnAxisType;
130
+ unconformityHeight: number;
131
+ }
132
+
133
+ export interface CompositeColumnData<T extends UnitLong = ExtUnit> extends Omit<
134
+ CompositeScaleData,
135
+ "sections"
136
+ > {
137
+ sections: PackageLayoutData<T>[];
138
+ }
@@ -4,10 +4,38 @@ import {
4
4
  compareAgeRanges,
5
5
  } from "@macrostrat/stratigraphy-utils";
6
6
  import { ColumnAxisType } from "@macrostrat/column-components";
7
- import { StratigraphicPackage } from "./helpers";
7
+ import { ScaleContinuousNumeric } from "d3-scale";
8
+ import type {
9
+ ColumnScaleOptions,
10
+ CompositeColumnData,
11
+ ExtUnit,
12
+ PackageLayoutData,
13
+ StratigraphicPackage,
14
+ } from "./types";
8
15
 
9
16
  const dt = 0.001;
10
17
 
18
+ export interface PrepareColumnOptions extends ColumnScaleOptions {
19
+ axisType: ColumnAxisType;
20
+ t_age?: number;
21
+ b_age?: number;
22
+ t_pos?: number;
23
+ b_pos?: number;
24
+ mergeSections?: MergeSectionsMode;
25
+ collapseSmallUnconformities?: boolean | number;
26
+ scale?: ScaleContinuousNumeric<any, any>;
27
+ }
28
+
29
+ export enum MergeSectionsMode {
30
+ ALL = "all",
31
+ OVERLAPPING = "overlapping",
32
+ }
33
+
34
+ export interface PreparedColumnData extends CompositeColumnData {
35
+ sections: PackageLayoutData[];
36
+ units: ExtUnit[];
37
+ }
38
+
11
39
  interface UnitsOverlap {
12
40
  (
13
41
  a: StratigraphicPackage,
package/src/section.ts CHANGED
@@ -4,18 +4,23 @@ import {
4
4
  SectionLabelsColumn,
5
5
  } from "./units";
6
6
  import { ReactNode, FunctionComponent, useMemo } from "react";
7
- import { Timescale, TimescaleOrientation } from "@macrostrat/timescale";
7
+ import {
8
+ Timescale,
9
+ TimescaleOrientation,
10
+ useMacrostratIntervals,
11
+ } from "@macrostrat/timescale";
8
12
  import { ColumnAxisType, SVG } from "@macrostrat/column-components";
9
13
  import hyper from "@macrostrat/hyper";
10
14
  import styles from "./column.module.sass";
11
- import type { ExtUnit } from "./prepare-units/helpers";
12
- import { PackageScaleLayoutData } from "./prepare-units/composite-scale";
13
15
  import {
14
16
  useMacrostratColumnData,
15
17
  useMacrostratUnits,
16
18
  MacrostratColumnProvider,
19
+ useMacrostratBaseURL,
17
20
  } from "./data-provider";
18
21
  import { Duration } from "./unit-details";
22
+ import { Value } from "@macrostrat/data-components";
23
+ import type { ExtUnit, PackageScaleLayoutData } from "./prepare-units/types";
19
24
 
20
25
  const h = hyper.styled(styles);
21
26
 
@@ -84,6 +89,7 @@ function SectionUnitsColumn(props: SectionSharedProps) {
84
89
  unitComponentProps,
85
90
  clipUnits,
86
91
  maxInternalColumns,
92
+ axisType,
87
93
  unconformityLabels = true,
88
94
  } = props;
89
95
 
@@ -127,6 +133,7 @@ function SectionUnitsColumn(props: SectionSharedProps) {
127
133
  h.if(unconformityLabels)(UnconformityLabels, {
128
134
  width,
129
135
  sections: scaleData,
136
+ verbose: false,
130
137
  }),
131
138
  ]);
132
139
  }
@@ -145,7 +152,7 @@ function SectionUnits(props: SectionProps) {
145
152
  maxInternalColumns,
146
153
  } = props;
147
154
 
148
- const { domain, pixelScale, pixelHeight } = scaleInfo;
155
+ const { domain, pixelScale, pixelHeight, scale } = scaleInfo;
149
156
 
150
157
  /** Ensure that we can arrange units into the maximum number
151
158
  * of columns defined by unitComponentProps, but that we don't
@@ -177,6 +184,7 @@ function SectionUnits(props: SectionProps) {
177
184
  units,
178
185
  domain,
179
186
  pixelScale, // Actually pixels per myr,
187
+ scale,
180
188
  },
181
189
  h(CompositeUnitsColumn, {
182
190
  width,
@@ -213,6 +221,10 @@ type CompositeTimescaleCoreProps = CompositeTimescaleProps & {
213
221
  export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
214
222
  const { levels = 3, packages, unconformityLabels = false } = props;
215
223
 
224
+ // Use intervals from Macrostrat API
225
+ const baseURL = useMacrostratBaseURL();
226
+ const intervals = useMacrostratIntervals(baseURL);
227
+
216
228
  let _levels: [number, number];
217
229
  if (typeof levels === "number") {
218
230
  // If levels is a number, use the most common starting level
@@ -227,7 +239,7 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
227
239
  h(
228
240
  "div.timescales",
229
241
  packages.map((group) => {
230
- const { domain, pixelHeight, paddingTop, key } = group;
242
+ const { pixelHeight, paddingTop, key, scale } = group;
231
243
  return h(
232
244
  "div.timescale-container",
233
245
  { style: { paddingTop, "--timescale-level-count": nCols }, key },
@@ -238,7 +250,8 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
238
250
  levels: _levels,
239
251
  absoluteAgeScale: true,
240
252
  showAgeAxis: false,
241
- ageRange: domain as [number, number],
253
+ scale,
254
+ intervals,
242
255
  }),
243
256
  ],
244
257
  );
@@ -248,6 +261,7 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
248
261
  width: "100%",
249
262
  sections: packages,
250
263
  className: "unconformity-labels",
264
+ axisType: ColumnAxisType.AGE,
251
265
  }),
252
266
  ]);
253
267
  }
@@ -255,9 +269,11 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
255
269
  export function UnconformityLabels(props: {
256
270
  width: string | number;
257
271
  sections: PackageScaleLayoutData[];
272
+ axisType?: ColumnAxisType;
258
273
  className?: string;
274
+ verbose?: boolean;
259
275
  }) {
260
- const { width, sections, className } = props;
276
+ const { width, sections, className, axisType, verbose } = props;
261
277
 
262
278
  return h(
263
279
  "div.unconformity-labels",
@@ -273,6 +289,7 @@ export function UnconformityLabels(props: {
273
289
  const upperAge = lastGroup?.domain[0];
274
290
  const lowerAge = scaleInfo.domain[1];
275
291
  return h(Unconformity, {
292
+ axisType,
276
293
  upperAge,
277
294
  lowerAge,
278
295
  style: {
@@ -280,12 +297,19 @@ export function UnconformityLabels(props: {
280
297
  height: scaleInfo.paddingTop,
281
298
  top,
282
299
  },
300
+ verbose,
283
301
  });
284
302
  }),
285
303
  );
286
304
  }
287
305
 
288
- function Unconformity({ upperAge, lowerAge, style }) {
306
+ function Unconformity({
307
+ upperAge,
308
+ lowerAge,
309
+ style,
310
+ axisType,
311
+ verbose = false,
312
+ }) {
289
313
  if (upperAge == null || lowerAge == null) {
290
314
  return null;
291
315
  }
@@ -303,7 +327,20 @@ function Unconformity({ upperAge, lowerAge, style }) {
303
327
  className = "small";
304
328
  }
305
329
 
330
+ let val: ReactNode;
331
+ if (axisType === ColumnAxisType.DEPTH || axisType === ColumnAxisType.HEIGHT) {
332
+ const _txt = ageGap.toLocaleString("en-US", { maximumFractionDigits: 2 });
333
+ val = h(Value, { value: _txt, unit: "m" });
334
+ } else {
335
+ val = h(Duration, { value: ageGap });
336
+ }
337
+
338
+ let prefix: ReactNode = null;
339
+ if (verbose) {
340
+ prefix = h([" ", h("span.prefix", " gap")]);
341
+ }
342
+
306
343
  return h("div.unconformity", { style, className }, [
307
- h("div.unconformity-text", h(Duration, { value: ageGap })),
344
+ h("div.unconformity-inner", h("div.unconformity-text", [val, prefix])),
308
345
  ]);
309
346
  }
@@ -13,7 +13,7 @@
13
13
  overflow: hidden
14
14
  .title-container
15
15
  gap: 0.5em
16
- align-items: center
16
+ align-items: baseline
17
17
  margin: 0
18
18
  flex-grow: 1
19
19
  z-index: 5
@@ -50,6 +50,13 @@
50
50
  position: relative
51
51
  margin: 1em
52
52
 
53
+ .units-list
54
+ .item
55
+ &:after
56
+ content: ', '
57
+ &:last-child:after
58
+ content: ''
59
+
53
60
  .proportion, .sep, .no-units, .strat-name-text
54
61
  color: var(--secondary-color)
55
62
  font-style: italic