@macrostrat/column-views 2.0.0 → 2.1.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 (539) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/{resolvers.36013b49.js → column-views.006d5180.js} +5 -2
  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.09f22f45.js +64 -0
  9. package/dist/esm/column-views.09f22f45.js.map +1 -0
  10. package/dist/esm/column-views.10eba967.js +11 -0
  11. package/dist/esm/column-views.10eba967.js.map +1 -0
  12. package/dist/esm/{popover.module.c4d6bfb0.css → column-views.16cc7a58.css} +1 -1
  13. package/dist/esm/{popover.module.c4d6bfb0.css.map → column-views.16cc7a58.css.map} +1 -1
  14. package/dist/esm/{selection.f5b0297e.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/{store.c4d7a8a4.js → column-views.1e055ed5.js} +6 -5
  19. package/dist/esm/column-views.1e055ed5.js.map +1 -0
  20. package/dist/esm/column-views.210514ec.js +11 -0
  21. package/dist/esm/column-views.210514ec.js.map +1 -0
  22. package/dist/esm/{column.module.a67a6b4c.css → column-views.217078ab.css} +4 -3
  23. package/dist/esm/column-views.217078ab.css.map +1 -0
  24. package/dist/esm/{panel.module.3d2ea3c6.css → column-views.25471fe0.css} +1 -1
  25. package/dist/esm/{panel.module.3d2ea3c6.css.map → column-views.25471fe0.css.map} +1 -1
  26. package/dist/esm/column-views.2c43c055.js +156 -0
  27. package/dist/esm/column-views.2c43c055.js.map +1 -0
  28. package/dist/esm/column-views.2c45a7b5.js +25 -0
  29. package/dist/esm/column-views.2c45a7b5.js.map +1 -0
  30. package/dist/esm/column-views.2ca34210.js +151 -0
  31. package/dist/esm/column-views.2ca34210.js.map +1 -0
  32. package/dist/esm/{unit-details.071cefed.js → column-views.2cb87813.js} +4 -4
  33. package/dist/esm/{unit-details.071cefed.js.map → column-views.2cb87813.js.map} +1 -1
  34. package/dist/esm/{mapbox.cac42eed.js → column-views.2d8e0e0f.js} +10 -9
  35. package/dist/esm/column-views.2d8e0e0f.js.map +1 -0
  36. package/dist/esm/column-views.3048acc1.js +66 -0
  37. package/dist/esm/column-views.3048acc1.js.map +1 -0
  38. package/dist/esm/column-views.3199d35a.css +61 -0
  39. package/dist/esm/column-views.3199d35a.css.map +1 -0
  40. package/dist/esm/{main.module.3dd9500b.css → column-views.338a7a83.css} +1 -1
  41. package/dist/esm/{main.module.3dd9500b.css.map → column-views.338a7a83.css.map} +1 -1
  42. package/dist/esm/{age-model-overlay.module.cd985dcb.js → column-views.3465c8ad.js} +1 -1
  43. package/dist/esm/{age-model-overlay.module.cd985dcb.js.map → column-views.3465c8ad.js.map} +1 -1
  44. package/dist/esm/column-views.34a52db7.js +31 -0
  45. package/dist/esm/column-views.34a52db7.js.map +1 -0
  46. package/dist/esm/{utils.d7a43a2a.js → column-views.39657bbf.js} +1 -1
  47. package/dist/esm/column-views.39657bbf.js.map +1 -0
  48. package/dist/esm/column-views.3b972a9b.css +4 -0
  49. package/dist/esm/{composite.module.69a38fd1.css.map → column-views.3b972a9b.css.map} +1 -1
  50. package/dist/esm/{base.910b80b4.js → column-views.3ba9213d.js} +16 -5
  51. package/dist/esm/column-views.3ba9213d.js.map +1 -0
  52. package/dist/esm/{inset-map.3c18106d.js → column-views.3de4dc43.js} +1 -1
  53. package/dist/esm/{inset-map.3c18106d.js.map → column-views.3de4dc43.js.map} +1 -1
  54. package/dist/esm/column-views.403a7b48.css +24 -0
  55. package/dist/esm/column-views.403a7b48.css.map +1 -0
  56. package/dist/esm/{composite.module.0638e7ee.js → column-views.40cd59b5.js} +1 -1
  57. package/dist/esm/{composite.module.0638e7ee.js.map → column-views.40cd59b5.js.map} +1 -1
  58. package/dist/esm/{column.module.1b776e15.js → column-views.4637f4ce.js} +1 -1
  59. package/dist/esm/column-views.4637f4ce.js.map +1 -0
  60. package/dist/esm/column-views.494447ef.css +2 -0
  61. package/dist/esm/column-views.494447ef.css.map +1 -0
  62. package/dist/esm/column-views.4950ea28.js +28 -0
  63. package/dist/esm/column-views.4950ea28.js.map +1 -0
  64. package/dist/esm/{composite-scale.577bf64a.js → column-views.4ab0ec82.js} +44 -13
  65. package/dist/esm/column-views.4ab0ec82.js.map +1 -0
  66. package/dist/esm/{age-model-overlay.c7226855.js → column-views.4d22c21c.js} +5 -5
  67. package/dist/esm/{age-model-overlay.c7226855.js.map → column-views.4d22c21c.js.map} +1 -1
  68. package/dist/esm/{boxes.module.4ebc7796.js → column-views.4d374a35.js} +1 -1
  69. package/dist/esm/{boxes.module.4ebc7796.js.map → column-views.4d374a35.js.map} +1 -1
  70. package/dist/esm/{keyboard-navigation.a9fc80dd.js → column-views.52a6eb47.js} +3 -3
  71. package/dist/esm/{keyboard-navigation.a9fc80dd.js.map → column-views.52a6eb47.js.map} +1 -1
  72. package/dist/esm/{popover.a810b7bc.js → column-views.52b03330.js} +6 -6
  73. package/dist/esm/{popover.a810b7bc.js.map → column-views.52b03330.js.map} +1 -1
  74. package/dist/esm/column-views.57636733.css +22 -0
  75. package/dist/esm/column-views.57636733.css.map +1 -0
  76. package/dist/esm/{panel.module.386166cc.js → column-views.58b82432.js} +1 -1
  77. package/dist/esm/{panel.module.386166cc.js.map → column-views.58b82432.js.map} +1 -1
  78. package/dist/esm/{main.2e0375a5.js → column-views.59792b70.js} +21 -18
  79. package/dist/esm/column-views.59792b70.js.map +1 -0
  80. package/dist/esm/{svg.4b9a96c1.js → column-views.59bb0cba.js} +2 -3
  81. package/dist/esm/column-views.59bb0cba.js.map +1 -0
  82. package/dist/esm/{correlation-chart.abd8b346.js → column-views.5ae1d963.js} +3 -3
  83. package/dist/esm/{correlation-chart.abd8b346.js.map → column-views.5ae1d963.js.map} +1 -1
  84. package/dist/esm/{fetch.99aec438.js → column-views.5cc09c1d.js} +1 -1
  85. package/dist/esm/column-views.5cc09c1d.js.map +1 -0
  86. package/dist/esm/column-views.5e2dc19d.js +187 -0
  87. package/dist/esm/column-views.5e2dc19d.js.map +1 -0
  88. package/dist/esm/{styles.7bc776d1.js → column-views.633c42a3.js} +2 -1
  89. package/dist/esm/column-views.633c42a3.js.map +1 -0
  90. package/dist/esm/{layers.033d3fb0.js → column-views.6549388a.js} +5 -6
  91. package/dist/esm/column-views.6549388a.js.map +1 -0
  92. package/dist/esm/{panel.598f76a5.js → column-views.66f823ba.js} +66 -15
  93. package/dist/esm/column-views.66f823ba.js.map +1 -0
  94. package/dist/esm/{age-axis.module.3cc91335.js → column-views.686d21ad.js} +10 -1
  95. package/dist/esm/column-views.686d21ad.js.map +1 -0
  96. package/dist/esm/column-views.68afac63.js +90 -0
  97. package/dist/esm/column-views.68afac63.js.map +1 -0
  98. package/dist/esm/column-views.6992ca88.js +25 -0
  99. package/dist/esm/column-views.6992ca88.js.map +1 -0
  100. package/dist/esm/column-views.69c0e90d.js +5 -0
  101. package/dist/esm/column-views.69c0e90d.js.map +1 -0
  102. package/dist/esm/{main.module.c09154b1.js → column-views.6a954628.js} +1 -1
  103. package/dist/esm/{main.module.c09154b1.js.map → column-views.6a954628.js.map} +1 -1
  104. package/dist/esm/{boxes.module.2b5fb18e.css → column-views.6c670c13.css} +1 -1
  105. package/dist/esm/{boxes.module.2b5fb18e.css.map → column-views.6c670c13.css.map} +1 -1
  106. package/dist/esm/{column-nav.5414677c.js → column-views.6d6b73b4.js} +1 -1
  107. package/dist/esm/{column-nav.5414677c.js.map → column-views.6d6b73b4.js.map} +1 -1
  108. package/dist/esm/column-views.708140ab.css +36 -0
  109. package/dist/esm/column-views.708140ab.css.map +1 -0
  110. package/dist/esm/column-views.7631c221.js +13 -0
  111. package/dist/esm/column-views.7631c221.js.map +1 -0
  112. package/dist/esm/{names.a8f2b452.js → column-views.7715e35e.js} +18 -14
  113. package/dist/esm/column-views.7715e35e.js.map +1 -0
  114. package/dist/esm/column-views.7a414dd1.css +56 -0
  115. package/dist/esm/column-views.7a414dd1.css.map +1 -0
  116. package/dist/esm/column-views.7a726ca9.js +24 -0
  117. package/dist/esm/column-views.7a726ca9.js.map +1 -0
  118. package/dist/esm/column-views.7e21d1ec.js +34 -0
  119. package/dist/esm/column-views.7e21d1ec.js.map +1 -0
  120. package/dist/esm/{column-correlation.c8dcfe98.js → column-views.7e350ae2.js} +3 -3
  121. package/dist/esm/{column-correlation.c8dcfe98.js.map → column-views.7e350ae2.js.map} +1 -1
  122. package/dist/esm/column-views.83a557b3.js +11 -0
  123. package/dist/esm/column-views.83a557b3.js.map +1 -0
  124. package/dist/esm/{state.2952cbca.js → column-views.85c6a716.js} +2 -2
  125. package/dist/esm/column-views.85c6a716.js.map +1 -0
  126. package/dist/esm/column-views.86619334.js +9 -0
  127. package/dist/esm/column-views.86619334.js.map +1 -0
  128. package/dist/esm/{age-axis.4a8cf5e6.js → column-views.8833218c.js} +25 -6
  129. package/dist/esm/column-views.8833218c.js.map +1 -0
  130. package/dist/esm/column-views.88984b34.js +92 -0
  131. package/dist/esm/column-views.88984b34.js.map +1 -0
  132. package/dist/esm/{core.91ede078.js → column-views.89b9e542.js} +12 -19
  133. package/dist/esm/column-views.89b9e542.js.map +1 -0
  134. package/dist/esm/column-views.8a1db14e.js +105 -0
  135. package/dist/esm/column-views.8a1db14e.js.map +1 -0
  136. package/dist/esm/column-views.8e7b01d2.js +43 -0
  137. package/dist/esm/column-views.8e7b01d2.js.map +1 -0
  138. package/dist/esm/column-views.8f108485.js +128 -0
  139. package/dist/esm/column-views.8f108485.js.map +1 -0
  140. package/dist/esm/column-views.904b9365.js +57 -0
  141. package/dist/esm/column-views.904b9365.js.map +1 -0
  142. package/dist/esm/column-views.90a863af.js +11 -0
  143. package/dist/esm/column-views.90a863af.js.map +1 -0
  144. package/dist/esm/{column.01d68dd8.js → column-views.91385fdc.js} +69 -32
  145. package/dist/esm/column-views.91385fdc.js.map +1 -0
  146. package/dist/esm/{helpers.2f0a0cb7.js → column-views.9892f825.js} +55 -4
  147. package/dist/esm/column-views.9892f825.js.map +1 -0
  148. package/dist/esm/{colors.395c6db5.js → column-views.9b77388d.js} +6 -5
  149. package/dist/esm/column-views.9b77388d.js.map +1 -0
  150. package/dist/esm/column-views.a582d4b5.js +7 -0
  151. package/dist/esm/column-views.a582d4b5.js.map +1 -0
  152. package/dist/esm/column-views.a7c5ae16.js +25 -0
  153. package/dist/esm/column-views.a7c5ae16.js.map +1 -0
  154. package/dist/esm/{boxes.8292cff2.js → column-views.a91dde4a.js} +14 -13
  155. package/dist/esm/column-views.a91dde4a.js.map +1 -0
  156. package/dist/esm/{_shared.f7eec55a.js → column-views.a94e99a2.js} +3 -3
  157. package/dist/esm/{_shared.f7eec55a.js.map → column-views.a94e99a2.js.map} +1 -1
  158. package/dist/esm/column-views.ad472a38.css +54 -0
  159. package/dist/esm/column-views.ad472a38.css.map +1 -0
  160. package/dist/esm/{age-axis.module.03773a80.css → column-views.b17f793f.css} +21 -1
  161. package/dist/esm/column-views.b17f793f.css.map +1 -0
  162. package/dist/esm/column-views.b2b5f52c.js +19 -0
  163. package/dist/esm/column-views.b2b5f52c.js.map +1 -0
  164. package/dist/esm/column-views.b324842f.css +57 -0
  165. package/dist/esm/column-views.b324842f.css.map +1 -0
  166. package/dist/esm/{state.178ef364.js → column-views.b9fe5176.js} +14 -8
  167. package/dist/esm/column-views.b9fe5176.js.map +1 -0
  168. package/dist/esm/{section.a34d379a.js → column-views.bb46641f.js} +9 -10
  169. package/dist/esm/column-views.bb46641f.js.map +1 -0
  170. package/dist/esm/column-views.bba13f77.css +54 -0
  171. package/dist/esm/column-views.bba13f77.css.map +1 -0
  172. package/dist/esm/{maps.bcdea9c1.js → column-views.bcffe6e5.js} +4 -4
  173. package/dist/esm/{maps.bcdea9c1.js.map → column-views.bcffe6e5.js.map} +1 -1
  174. package/dist/esm/{hash-string.285b37fb.js → column-views.beb54e95.js} +1 -1
  175. package/dist/esm/{hash-string.285b37fb.js.map → column-views.beb54e95.js.map} +1 -1
  176. package/dist/esm/{column-navigation.37cd3245.js → column-views.c25e8b32.js} +3 -3
  177. package/dist/esm/{column-navigation.37cd3245.js.map → column-views.c25e8b32.js.map} +1 -1
  178. package/dist/esm/column-views.c5e108f9.js +34 -0
  179. package/dist/esm/column-views.c5e108f9.js.map +1 -0
  180. package/dist/esm/{prepare-units.6c890a96.js → column-views.c71c321c.js} +12 -12
  181. package/dist/esm/column-views.c71c321c.js.map +1 -0
  182. package/dist/esm/{data-provider.f10c6d0b.js → column-views.c8e2983a.js} +6 -6
  183. package/dist/esm/{data-provider.f10c6d0b.js.map → column-views.c8e2983a.js.map} +1 -1
  184. package/dist/esm/column-views.cae5a0ad.js +37 -0
  185. package/dist/esm/column-views.cae5a0ad.js.map +1 -0
  186. package/dist/esm/{composite.039e4798.js → column-views.d2037465.js} +17 -11
  187. package/dist/esm/column-views.d2037465.js.map +1 -0
  188. package/dist/esm/{keyboard-navigation.6713401b.js → column-views.dc42f5d0.js} +1 -1
  189. package/dist/esm/column-views.dc42f5d0.js.map +1 -0
  190. package/dist/esm/column-views.e20f6a4b.js +124 -0
  191. package/dist/esm/column-views.e20f6a4b.js.map +1 -0
  192. package/dist/esm/{age-model-overlay.module.5d9e78fb.css → column-views.e40b8bfb.css} +1 -1
  193. package/dist/esm/{age-model-overlay.module.5d9e78fb.css.map → column-views.e40b8bfb.css.map} +1 -1
  194. package/dist/esm/column-views.e4975dd6.css +146 -0
  195. package/dist/esm/column-views.e4975dd6.css.map +1 -0
  196. package/dist/esm/column-views.e9f8b2a7.js +20 -0
  197. package/dist/esm/column-views.e9f8b2a7.js.map +1 -0
  198. package/dist/esm/column-views.edeab611.js +204 -0
  199. package/dist/esm/column-views.edeab611.js.map +1 -0
  200. package/dist/esm/{popover.module.c4ba4189.js → column-views.edf77621.js} +1 -1
  201. package/dist/esm/{popover.module.c4ba4189.js.map → column-views.edf77621.js.map} +1 -1
  202. package/dist/esm/{prepare-data.d4284b4a.js → column-views.f08929e2.js} +2 -2
  203. package/dist/esm/column-views.f08929e2.js.map +1 -0
  204. package/dist/esm/column-views.f13a1d6e.js +37 -0
  205. package/dist/esm/column-views.f13a1d6e.js.map +1 -0
  206. package/dist/esm/column-views.f2948ff8.js +101 -0
  207. package/dist/esm/column-views.f2948ff8.js.map +1 -0
  208. package/dist/esm/column-views.f9dab157.js +3 -0
  209. package/dist/esm/column-views.f9dab157.js.map +1 -0
  210. package/dist/esm/column-views.fa19cea0.js +108 -0
  211. package/dist/esm/column-views.fa19cea0.js.map +1 -0
  212. package/dist/esm/index.d.ts +325 -296
  213. package/dist/esm/index.d.ts.map +1 -1
  214. package/dist/esm/index.js +13 -11
  215. package/dist/esm/index.js.map +1 -1
  216. package/dist/node/column-views.007bf6c1.js +2 -0
  217. package/dist/node/column-views.007bf6c1.js.map +1 -0
  218. package/dist/node/column-views.00848c9a.js +2 -0
  219. package/dist/node/column-views.00848c9a.js.map +1 -0
  220. package/dist/node/column-views.0278b7e5.js +2 -0
  221. package/dist/node/column-views.0278b7e5.js.map +1 -0
  222. package/dist/node/column-views.04407342.js +2 -0
  223. package/dist/node/column-views.04407342.js.map +1 -0
  224. package/dist/node/column-views.072d3dcd.js +2 -0
  225. package/dist/node/column-views.072d3dcd.js.map +1 -0
  226. package/dist/node/column-views.0859f5d2.js +2 -0
  227. package/dist/node/column-views.0859f5d2.js.map +1 -0
  228. package/dist/node/column-views.0b579299.css +2 -0
  229. package/dist/node/column-views.0b579299.css.map +1 -0
  230. package/dist/node/column-views.0b72c188.js +2 -0
  231. package/dist/node/column-views.0b72c188.js.map +1 -0
  232. package/dist/node/column-views.1064fcfb.js +2 -0
  233. package/dist/node/column-views.1064fcfb.js.map +1 -0
  234. package/dist/node/column-views.10a2bad6.js +2 -0
  235. package/dist/node/column-views.10a2bad6.js.map +1 -0
  236. package/dist/node/column-views.12864efd.js +2 -0
  237. package/dist/node/column-views.12864efd.js.map +1 -0
  238. package/dist/node/column-views.12a70e9d.js +2 -0
  239. package/dist/node/column-views.12a70e9d.js.map +1 -0
  240. package/dist/node/column-views.139b0855.js +2 -0
  241. package/dist/node/column-views.139b0855.js.map +1 -0
  242. package/dist/node/column-views.1a0b56fc.js +2 -0
  243. package/dist/node/column-views.1a0b56fc.js.map +1 -0
  244. package/dist/node/column-views.1de87649.js +2 -0
  245. package/dist/node/column-views.1de87649.js.map +1 -0
  246. package/dist/node/column-views.22673dc1.js +2 -0
  247. package/dist/node/column-views.22673dc1.js.map +1 -0
  248. package/dist/node/column-views.273ac4a8.js +2 -0
  249. package/dist/node/column-views.273ac4a8.js.map +1 -0
  250. package/dist/node/column-views.28609db2.css +2 -0
  251. package/dist/node/column-views.28609db2.css.map +1 -0
  252. package/dist/node/column-views.286d444d.js +2 -0
  253. package/dist/node/column-views.286d444d.js.map +1 -0
  254. package/dist/node/column-views.2877f398.js +2 -0
  255. package/dist/node/column-views.2877f398.js.map +1 -0
  256. package/dist/node/column-views.2a70b9a2.js +2 -0
  257. package/dist/node/column-views.2a70b9a2.js.map +1 -0
  258. package/dist/node/column-views.2e4e357d.js +2 -0
  259. package/dist/node/column-views.2e4e357d.js.map +1 -0
  260. package/dist/node/column-views.2fa1c4e6.css +2 -0
  261. package/dist/node/column-views.2fa1c4e6.css.map +1 -0
  262. package/dist/node/column-views.33102ceb.js +2 -0
  263. package/dist/node/column-views.33102ceb.js.map +1 -0
  264. package/dist/node/column-views.3345cd7a.js +2 -0
  265. package/dist/node/column-views.3345cd7a.js.map +1 -0
  266. package/dist/node/column-views.33752461.js +2 -0
  267. package/dist/node/column-views.33752461.js.map +1 -0
  268. package/dist/node/column-views.34b48ee4.js +2 -0
  269. package/dist/node/column-views.34b48ee4.js.map +1 -0
  270. package/dist/node/column-views.39d3a0be.js +2 -0
  271. package/dist/node/column-views.39d3a0be.js.map +1 -0
  272. package/dist/node/column-views.3a55ecd7.css +2 -0
  273. package/dist/node/column-views.3a55ecd7.css.map +1 -0
  274. package/dist/node/column-views.3bd09ad6.js +2 -0
  275. package/dist/node/column-views.3bd09ad6.js.map +1 -0
  276. package/dist/node/column-views.3cb3345e.js +2 -0
  277. package/dist/node/column-views.3cb3345e.js.map +1 -0
  278. package/dist/node/column-views.3f3cfcce.js +2 -0
  279. package/dist/node/column-views.3f3cfcce.js.map +1 -0
  280. package/dist/node/column-views.41876859.js +2 -0
  281. package/dist/node/column-views.41876859.js.map +1 -0
  282. package/dist/node/column-views.41d01674.js +2 -0
  283. package/dist/node/column-views.41d01674.js.map +1 -0
  284. package/dist/node/column-views.44b75011.js +2 -0
  285. package/dist/node/column-views.44b75011.js.map +1 -0
  286. package/dist/node/column-views.45168c80.js +2 -0
  287. package/dist/node/column-views.45168c80.js.map +1 -0
  288. package/dist/node/column-views.47f67ad4.js +2 -0
  289. package/dist/node/column-views.47f67ad4.js.map +1 -0
  290. package/dist/node/column-views.4e2bdf9b.js +2 -0
  291. package/dist/node/column-views.4e2bdf9b.js.map +1 -0
  292. package/dist/node/column-views.51fbed89.js +2 -0
  293. package/dist/node/column-views.51fbed89.js.map +1 -0
  294. package/dist/node/column-views.5b6833f0.js +2 -0
  295. package/dist/node/column-views.5b6833f0.js.map +1 -0
  296. package/dist/node/column-views.5c1b0eeb.css +2 -0
  297. package/dist/node/column-views.5c1b0eeb.css.map +1 -0
  298. package/dist/node/column-views.63165cf3.css +2 -0
  299. package/dist/node/column-views.63165cf3.css.map +1 -0
  300. package/dist/node/column-views.65ad6310.css +2 -0
  301. package/dist/node/column-views.65ad6310.css.map +1 -0
  302. package/dist/node/column-views.664dc6c9.js +2 -0
  303. package/dist/node/column-views.664dc6c9.js.map +1 -0
  304. package/dist/node/column-views.68224fdd.css +2 -0
  305. package/dist/node/column-views.68224fdd.css.map +1 -0
  306. package/dist/node/column-views.68ded006.js +2 -0
  307. package/dist/node/column-views.68ded006.js.map +1 -0
  308. package/dist/node/column-views.6a0a35e7.js +2 -0
  309. package/dist/node/column-views.6a0a35e7.js.map +1 -0
  310. package/dist/node/column-views.6a4c2100.css +2 -0
  311. package/dist/node/column-views.6a4c2100.css.map +1 -0
  312. package/dist/node/column-views.6a9da051.js +2 -0
  313. package/dist/node/column-views.6a9da051.js.map +1 -0
  314. package/dist/node/column-views.6b441349.js +2 -0
  315. package/dist/node/column-views.6b441349.js.map +1 -0
  316. package/dist/node/column-views.6b6b756b.js +2 -0
  317. package/dist/node/column-views.6b6b756b.js.map +1 -0
  318. package/dist/node/column-views.6bba8c57.js +2 -0
  319. package/dist/node/column-views.6bba8c57.js.map +1 -0
  320. package/dist/node/column-views.6d1551bd.js +2 -0
  321. package/dist/node/column-views.6d1551bd.js.map +1 -0
  322. package/dist/node/column-views.6da49480.js +2 -0
  323. package/dist/node/column-views.6da49480.js.map +1 -0
  324. package/dist/node/column-views.71c48a11.js +2 -0
  325. package/dist/node/column-views.71c48a11.js.map +1 -0
  326. package/dist/node/column-views.7350ac73.js +2 -0
  327. package/dist/node/column-views.7350ac73.js.map +1 -0
  328. package/dist/node/column-views.755f726e.js +2 -0
  329. package/dist/node/column-views.755f726e.js.map +1 -0
  330. package/dist/node/column-views.770d2c95.js +2 -0
  331. package/dist/node/column-views.770d2c95.js.map +1 -0
  332. package/dist/node/column-views.78d3f3c5.js +2 -0
  333. package/dist/node/column-views.78d3f3c5.js.map +1 -0
  334. package/dist/node/column-views.7b9bd06e.css +2 -0
  335. package/dist/node/column-views.7b9bd06e.css.map +1 -0
  336. package/dist/node/column-views.7be87c6b.js +2 -0
  337. package/dist/node/column-views.7be87c6b.js.map +1 -0
  338. package/dist/node/column-views.7d45bbeb.js +2 -0
  339. package/dist/node/column-views.7d45bbeb.js.map +1 -0
  340. package/dist/node/column-views.7f621850.js +2 -0
  341. package/dist/node/column-views.7f621850.js.map +1 -0
  342. package/dist/node/column-views.82cf7c0d.js +2 -0
  343. package/dist/node/column-views.82cf7c0d.js.map +1 -0
  344. package/dist/node/column-views.869c7199.js +2 -0
  345. package/dist/node/column-views.869c7199.js.map +1 -0
  346. package/dist/node/column-views.8a02b1fe.js +2 -0
  347. package/dist/node/column-views.8a02b1fe.js.map +1 -0
  348. package/dist/node/column-views.8acd24ca.js +2 -0
  349. package/dist/node/column-views.8acd24ca.js.map +1 -0
  350. package/dist/node/column-views.8c00beb4.js +2 -0
  351. package/dist/node/column-views.8c00beb4.js.map +1 -0
  352. package/dist/node/column-views.8cfed88b.js +2 -0
  353. package/dist/node/column-views.8cfed88b.js.map +1 -0
  354. package/dist/node/column-views.8f54691f.js +2 -0
  355. package/dist/node/column-views.8f54691f.js.map +1 -0
  356. package/dist/node/column-views.95411f1b.js +2 -0
  357. package/dist/node/column-views.95411f1b.js.map +1 -0
  358. package/dist/node/column-views.9cb13e51.css +2 -0
  359. package/dist/node/column-views.9cb13e51.css.map +1 -0
  360. package/dist/node/column-views.a0aac838.js +2 -0
  361. package/dist/node/column-views.a0aac838.js.map +1 -0
  362. package/dist/node/column-views.a208338e.js +2 -0
  363. package/dist/node/column-views.a208338e.js.map +1 -0
  364. package/dist/node/column-views.a501cea0.js +2 -0
  365. package/dist/node/column-views.a501cea0.js.map +1 -0
  366. package/dist/node/column-views.a634ac7f.js +2 -0
  367. package/dist/node/column-views.a634ac7f.js.map +1 -0
  368. package/dist/node/column-views.a8ffe072.js +2 -0
  369. package/dist/node/column-views.a8ffe072.js.map +1 -0
  370. package/dist/node/column-views.b169b4b5.css +2 -0
  371. package/dist/node/column-views.b169b4b5.css.map +1 -0
  372. package/dist/node/column-views.b55bd885.css +2 -0
  373. package/dist/node/column-views.b55bd885.css.map +1 -0
  374. package/dist/node/column-views.b773edb8.js +2 -0
  375. package/dist/node/column-views.b773edb8.js.map +1 -0
  376. package/dist/node/column-views.baf032f1.js +2 -0
  377. package/dist/node/column-views.baf032f1.js.map +1 -0
  378. package/dist/node/column-views.bb510980.js +2 -0
  379. package/dist/node/column-views.bb510980.js.map +1 -0
  380. package/dist/node/column-views.c968a185.css +2 -0
  381. package/dist/node/column-views.c968a185.css.map +1 -0
  382. package/dist/node/column-views.ca16625d.js +2 -0
  383. package/dist/node/column-views.ca16625d.js.map +1 -0
  384. package/dist/node/column-views.cd3c430b.js +2 -0
  385. package/dist/node/column-views.cd3c430b.js.map +1 -0
  386. package/dist/node/column-views.cd468adb.css +2 -0
  387. package/dist/node/column-views.cd468adb.css.map +1 -0
  388. package/dist/node/column-views.cdcce702.js +2 -0
  389. package/dist/node/column-views.cdcce702.js.map +1 -0
  390. package/dist/node/column-views.ce6808fe.js +2 -0
  391. package/dist/node/column-views.ce6808fe.js.map +1 -0
  392. package/dist/node/column-views.cf90f63d.js +2 -0
  393. package/dist/node/column-views.cf90f63d.js.map +1 -0
  394. package/dist/node/column-views.d0ee3385.js +2 -0
  395. package/dist/node/column-views.d0ee3385.js.map +1 -0
  396. package/dist/node/column-views.d6708353.js +2 -0
  397. package/dist/node/column-views.d6708353.js.map +1 -0
  398. package/dist/node/column-views.d9bbd6fb.css +2 -0
  399. package/dist/node/column-views.d9bbd6fb.css.map +1 -0
  400. package/dist/node/column-views.dfe9f0a9.js +2 -0
  401. package/dist/node/column-views.dfe9f0a9.js.map +1 -0
  402. package/dist/node/column-views.e52994ea.js +2 -0
  403. package/dist/node/column-views.e52994ea.js.map +1 -0
  404. package/dist/node/column-views.e6720522.js +2 -0
  405. package/dist/node/column-views.e6720522.js.map +1 -0
  406. package/dist/node/column-views.e77dd525.js +2 -0
  407. package/dist/node/column-views.e77dd525.js.map +1 -0
  408. package/dist/node/column-views.e7cd811c.css +2 -0
  409. package/dist/node/column-views.e7cd811c.css.map +1 -0
  410. package/dist/node/column-views.e7e26765.js +2 -0
  411. package/dist/node/column-views.e7e26765.js.map +1 -0
  412. package/dist/node/column-views.e9515ec1.js +2 -0
  413. package/dist/node/column-views.e9515ec1.js.map +1 -0
  414. package/dist/node/column-views.ebb44b7d.js +2 -0
  415. package/dist/node/column-views.ebb44b7d.js.map +1 -0
  416. package/dist/node/column-views.ee8cb107.js +2 -0
  417. package/dist/node/column-views.ee8cb107.js.map +1 -0
  418. package/dist/node/column-views.eea80478.js +2 -0
  419. package/dist/node/column-views.eea80478.js.map +1 -0
  420. package/dist/node/column-views.f7315cbc.css +2 -0
  421. package/dist/node/column-views.f7315cbc.css.map +1 -0
  422. package/dist/node/column-views.f76ba19f.js +2 -0
  423. package/dist/node/column-views.f76ba19f.js.map +1 -0
  424. package/dist/node/column-views.fea32686.js +2 -0
  425. package/dist/node/column-views.fea32686.js.map +1 -0
  426. package/dist/node/index.js +1 -1
  427. package/dist/node/index.js.map +1 -1
  428. package/package.json +23 -23
  429. package/src/age-axis.module.sass +20 -0
  430. package/src/age-axis.ts +25 -3
  431. package/src/age-model-overlay.ts +2 -2
  432. package/src/column.module.sass +3 -3
  433. package/src/column.ts +92 -19
  434. package/src/correlation-chart/main.ts +25 -12
  435. package/src/correlation-chart/prepare-data.ts +6 -6
  436. package/src/correlation-chart/stories/correlation-chart.stories.ts +12 -6
  437. package/src/data-provider/base.ts +20 -11
  438. package/src/data-provider/column-nav.ts +2 -2
  439. package/src/data-provider/fetch.ts +9 -9
  440. package/src/data-provider/store.ts +15 -10
  441. package/src/{carbon-isotopes → facets/carbon-isotopes}/data-area.ts +5 -4
  442. package/src/{carbon-isotopes → facets/carbon-isotopes}/index.ts +0 -1
  443. package/src/facets/carbon-isotopes/isotopes-column.module.sass +31 -0
  444. package/src/{carbon-isotopes → facets/carbon-isotopes}/isotopes-column.ts +119 -87
  445. package/src/facets/detrital-zircon/index.module.sass +22 -0
  446. package/src/facets/detrital-zircon/index.ts +132 -0
  447. package/src/facets/detrital-zircon/provider.ts +51 -0
  448. package/src/facets/fossils/index.module.sass +14 -0
  449. package/src/facets/fossils/index.ts +120 -0
  450. package/src/facets/fossils/provider.ts +80 -0
  451. package/src/facets/index.ts +3 -0
  452. package/src/index.ts +2 -1
  453. package/src/maps/_shared/inset-map.stories.ts +1 -1
  454. package/src/maps/_shared/inset-map.ts +2 -2
  455. package/src/maps/_shared/styles.ts +3 -1
  456. package/src/maps/column-correlation/column-correlation-map.stories.ts +3 -3
  457. package/src/maps/column-correlation/core.ts +17 -26
  458. package/src/maps/column-correlation/state.ts +9 -9
  459. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +177 -1
  460. package/src/maps/column-navigation/mapbox/index.ts +18 -15
  461. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +4 -4
  462. package/src/maps/column-navigation/mapbox/state.ts +16 -6
  463. package/src/maps/column-navigation/svg/animated.ts +2 -2
  464. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +2 -2
  465. package/src/maps/column-navigation/svg/index.ts +2 -4
  466. package/src/maps/column-navigation/svg/layers.ts +5 -7
  467. package/src/maps/column-navigation/utils/keyboard-navigation.ts +1 -1
  468. package/src/notes.ts +49 -0
  469. package/src/prepare-units/composite-scale.ts +73 -25
  470. package/src/prepare-units/helpers.ts +78 -13
  471. package/src/prepare-units/index.ts +17 -17
  472. package/src/prepare-units/utils.ts +7 -7
  473. package/src/section.ts +8 -8
  474. package/src/unit-details/panel.ts +103 -19
  475. package/src/unit-details/popover.ts +5 -5
  476. package/src/units/boxes.ts +20 -10
  477. package/src/units/colors.ts +12 -5
  478. package/src/units/composite.ts +16 -11
  479. package/src/units/index.ts +77 -10
  480. package/src/units/names.ts +19 -16
  481. package/src/units/resolvers.ts +4 -1
  482. package/src/units/selection.ts +44 -11
  483. package/src/units/types.ts +2 -0
  484. package/dist/esm/age-axis.4a8cf5e6.js.map +0 -1
  485. package/dist/esm/age-axis.module.03773a80.css.map +0 -1
  486. package/dist/esm/age-axis.module.3cc91335.js.map +0 -1
  487. package/dist/esm/base.910b80b4.js.map +0 -1
  488. package/dist/esm/boxes.8292cff2.js.map +0 -1
  489. package/dist/esm/carbon-isotopes.10db8285.js +0 -11
  490. package/dist/esm/carbon-isotopes.10db8285.js.map +0 -1
  491. package/dist/esm/colors.395c6db5.js.map +0 -1
  492. package/dist/esm/column.01d68dd8.js.map +0 -1
  493. package/dist/esm/column.a25f8ebd.js +0 -117
  494. package/dist/esm/column.a25f8ebd.js.map +0 -1
  495. package/dist/esm/column.module.1b776e15.js.map +0 -1
  496. package/dist/esm/column.module.7f47d25a.js +0 -34
  497. package/dist/esm/column.module.7f47d25a.js.map +0 -1
  498. package/dist/esm/column.module.a67a6b4c.css.map +0 -1
  499. package/dist/esm/column.module.cbb072df.css +0 -157
  500. package/dist/esm/column.module.cbb072df.css.map +0 -1
  501. package/dist/esm/composite-scale.577bf64a.js.map +0 -1
  502. package/dist/esm/composite.039e4798.js.map +0 -1
  503. package/dist/esm/composite.module.69a38fd1.css +0 -4
  504. package/dist/esm/core.843310d3.js +0 -88
  505. package/dist/esm/core.843310d3.js.map +0 -1
  506. package/dist/esm/core.91ede078.js.map +0 -1
  507. package/dist/esm/data-area.daff8da0.js +0 -86
  508. package/dist/esm/data-area.daff8da0.js.map +0 -1
  509. package/dist/esm/data-provider.1506eb64.js +0 -25
  510. package/dist/esm/data-provider.1506eb64.js.map +0 -1
  511. package/dist/esm/fetch.99aec438.js.map +0 -1
  512. package/dist/esm/helpers.2f0a0cb7.js.map +0 -1
  513. package/dist/esm/isotopes-column.7cb5cc45.js +0 -163
  514. package/dist/esm/isotopes-column.7cb5cc45.js.map +0 -1
  515. package/dist/esm/keyboard-navigation.6713401b.js.map +0 -1
  516. package/dist/esm/layers.033d3fb0.js.map +0 -1
  517. package/dist/esm/main.2e0375a5.js.map +0 -1
  518. package/dist/esm/mapbox.cac42eed.js.map +0 -1
  519. package/dist/esm/names.a8f2b452.js.map +0 -1
  520. package/dist/esm/panel.598f76a5.js.map +0 -1
  521. package/dist/esm/prepare-data.d4284b4a.js.map +0 -1
  522. package/dist/esm/prepare-units.6c890a96.js.map +0 -1
  523. package/dist/esm/resolvers.36013b49.js.map +0 -1
  524. package/dist/esm/section.a34d379a.js.map +0 -1
  525. package/dist/esm/selection.f5b0297e.js.map +0 -1
  526. package/dist/esm/state.178ef364.js.map +0 -1
  527. package/dist/esm/state.2952cbca.js.map +0 -1
  528. package/dist/esm/store.c4d7a8a4.js.map +0 -1
  529. package/dist/esm/styles.7bc776d1.js.map +0 -1
  530. package/dist/esm/svg.4b9a96c1.js.map +0 -1
  531. package/dist/esm/types.0f0b57c9.js +0 -3
  532. package/dist/esm/types.0f0b57c9.js.map +0 -1
  533. package/dist/esm/units.5a4fc058.js +0 -98
  534. package/dist/esm/units.5a4fc058.js.map +0 -1
  535. package/dist/esm/utils.d7a43a2a.js.map +0 -1
  536. package/src/carbon-isotopes/column.module.sass +0 -136
  537. package/src/carbon-isotopes/column.ts +0 -133
  538. package/src/carbon-isotopes/core.ts +0 -81
  539. /package/src/{carbon-isotopes → facets/carbon-isotopes}/data-provider.ts +0 -0
@@ -7,7 +7,9 @@ import {
7
7
  createUnitSorter,
8
8
  ensureArray,
9
9
  ensureRealFloat,
10
+ PossiblyClippedUnit,
10
11
  } from "./utils";
12
+ import { compareAgeRanges } from "@macrostrat/stratigraphy-utils";
11
13
 
12
14
  const dt = 0.001;
13
15
 
@@ -38,14 +40,14 @@ export interface ExtUnit extends UnitLong {
38
40
 
39
41
  export function preprocessUnits<T extends UnitLong = UnitLong>(
40
42
  section: SectionInfo<T>,
41
- axisType: ColumnAxisType = ColumnAxisType.AGE
43
+ axisType: ColumnAxisType = ColumnAxisType.AGE,
42
44
  ): ExtUnit[] {
43
45
  /** Preprocess units to add overlapping units and columns. */
44
46
  const units = section.units;
45
47
  let divisions = units.map((...args) => extendDivision(...args, axisType));
46
48
  for (let d of divisions) {
47
49
  const overlappingUnits = divisions.filter((u) =>
48
- d.overlappingUnits.includes(u.unit_id)
50
+ d.overlappingUnits.includes(u.unit_id),
49
51
  );
50
52
 
51
53
  // Overlapping columns
@@ -72,10 +74,12 @@ export function preprocessUnits<T extends UnitLong = UnitLong>(
72
74
  }
73
75
  }
74
76
 
75
- if (axisType != ColumnAxisType.AGE) {
76
- return preprocessSectionUnits(divisions, axisType);
77
- }
78
-
77
+ // TODO: we may want to re-enable this simpler processing for sections,
78
+ // but we want it to be less universally applied.
79
+ // if (axisType != ColumnAxisType.AGE) {
80
+ // return preprocessSectionUnits(divisions, axisType);
81
+ // }
82
+ //
79
83
  return divisions;
80
84
  }
81
85
 
@@ -83,10 +87,10 @@ function extendDivision(
83
87
  unit: UnitLong,
84
88
  i: number,
85
89
  divisions: UnitLong[],
86
- axisType: ColumnAxisType = ColumnAxisType.AGE
90
+ axisType: ColumnAxisType = ColumnAxisType.AGE,
87
91
  ): ExtUnit {
88
92
  const overlappingUnits = divisions.filter(
89
- (d) => d.unit_id != unit.unit_id && unitsOverlap(unit, d, axisType)
93
+ (d) => d.unit_id != unit.unit_id && unitsOverlap(unit, d, axisType),
90
94
  );
91
95
  const u_pos = getUnitHeightRange(unit, axisType);
92
96
  const bottomOverlap = overlappingUnits.some((d) => {
@@ -109,8 +113,15 @@ function extendDivision(
109
113
 
110
114
  export function groupUnitsIntoSections<T extends UnitLong>(
111
115
  units: T[],
112
- axisType: ColumnAxisType = ColumnAxisType.AGE
116
+ axisType: ColumnAxisType = ColumnAxisType.AGE,
113
117
  ): SectionInfo<T>[] {
118
+ if (axisType != ColumnAxisType.AGE) {
119
+ return groupUnitsIntoSectionByOverlap(units, axisType);
120
+ }
121
+
122
+ /** Group units into sections by section_id.
123
+ * This works for large-scale Macrostrat columns, where units are grouped by section_id.
124
+ * */
114
125
  let groups = Array.from(group(units, (d) => d.section_id));
115
126
  const unitComparator = createUnitSorter(axisType);
116
127
 
@@ -124,12 +135,66 @@ export function groupUnitsIntoSections<T extends UnitLong>(
124
135
  // Sections have no relative ordinal position other than age...
125
136
  const compareSections = createUnitSorter(ColumnAxisType.AGE) as (
126
137
  a: StratigraphicPackage,
127
- b: StratigraphicPackage
138
+ b: StratigraphicPackage,
128
139
  ) => number;
129
140
  groups1.sort(compareSections);
130
141
  return groups1;
131
142
  }
132
143
 
144
+ interface WorkingSection {
145
+ units: UnitLong[];
146
+ // Position or age
147
+ heightRange?: [number, number];
148
+ }
149
+
150
+ function groupUnitsIntoSectionByOverlap<T extends UnitLong>(
151
+ units: T[],
152
+ axisType: ColumnAxisType = ColumnAxisType.AGE,
153
+ ): SectionInfo<T>[] {
154
+ /** Group units into sections by overlap.
155
+ * This creates "synthetic" sections that correspond to packages bound by scale gaps.
156
+ * This is most useful in the height and depth domains, where gaps (e.g., missing core) are
157
+ * common.
158
+ * */
159
+ // Start with each unit as its own "section", and progressively merge...
160
+ const sectionList: WorkingSection[] = [];
161
+ for (const unit of units) {
162
+ // Check if the unit overlaps with any existing section
163
+ const heightRange = getUnitHeightRange(unit, axisType);
164
+ let section: WorkingSection | undefined = sectionList.find((s) =>
165
+ compareAgeRanges(heightRange, s.heightRange),
166
+ );
167
+ if (section == null) {
168
+ // No overlap, create a new section
169
+ sectionList.push({
170
+ heightRange,
171
+ units: [unit],
172
+ });
173
+ } else {
174
+ // Overlap, merge the unit into the section
175
+ section.units.push(unit);
176
+ // Update the height range
177
+ section.heightRange = [
178
+ Math.max(section.heightRange[0], heightRange[0]),
179
+ Math.min(section.heightRange[1], heightRange[1]),
180
+ ];
181
+ }
182
+ }
183
+ // We should have a section for each unit, now we can convert to SectionInfo
184
+ // Ages have to be really actually ages, not heights
185
+
186
+ return sectionList.map((section, i) => {
187
+ const [b_age, t_age] = getSectionAgeRange(section.units);
188
+ return {
189
+ // Negative section IDs are used to indicate that these are synthetic sections
190
+ section_id: -i,
191
+ t_age: t_age,
192
+ b_age: b_age,
193
+ units: section.units as T[],
194
+ };
195
+ });
196
+ }
197
+
133
198
  export function getSectionAgeRange(units: BaseUnit[]): [number, number] {
134
199
  /** Get the overall age range of a set of units. */
135
200
  const t_ages = units.map((d) => d.t_age);
@@ -140,7 +205,7 @@ export function getSectionAgeRange(units: BaseUnit[]): [number, number] {
140
205
  }
141
206
 
142
207
  export function mergeOverlappingSections<T extends UnitLong>(
143
- sections: SectionInfo<T>[]
208
+ sections: SectionInfo<T>[],
144
209
  ): SectionInfo<T>[] {
145
210
  /** Columns can have sections that overlap in time. Here, we merge overlapping
146
211
  * sections into a single section to correctly render gap-bound packages.
@@ -172,7 +237,7 @@ export function mergeOverlappingSections<T extends UnitLong>(
172
237
 
173
238
  function preprocessSectionUnits(
174
239
  units: UnitLong[],
175
- axisType: ColumnAxisType = ColumnAxisType.DEPTH
240
+ axisType: ColumnAxisType = ColumnAxisType.DEPTH,
176
241
  ): ExtUnit[] {
177
242
  /** Preprocess units for a "section" column type, which is guaranteed to be simpler. */
178
243
  // We have to assume the units are ordered...
@@ -189,7 +254,7 @@ function preprocessSectionUnit(
189
254
  i: number,
190
255
  units: UnitLong[],
191
256
  accumulatedThickness: number = 0,
192
- axisType: ColumnAxisType = ColumnAxisType.DEPTH
257
+ axisType: ColumnAxisType = ColumnAxisType.DEPTH,
193
258
  ): ExtUnit {
194
259
  /** Preprocess a single unit for a "section" column type.
195
260
  * No provision for overlapping units.
@@ -17,7 +17,7 @@ import {
17
17
  PackageLayoutData,
18
18
  } from "./composite-scale";
19
19
  import type { SectionInfo } from "./helpers";
20
- import { agesOverlap, unitsOverlap } from "./utils";
20
+ import { agesOverlap, getUnitHeightRange, unitsOverlap } from "./utils";
21
21
 
22
22
  export * from "./utils";
23
23
  export { preprocessUnits, groupUnitsIntoSections };
@@ -42,7 +42,7 @@ export interface PreparedColumnData extends CompositeColumnData {
42
42
 
43
43
  export function usePreparedColumnUnits(
44
44
  data: UnitLong[],
45
- options: PrepareColumnOptions
45
+ options: PrepareColumnOptions,
46
46
  ): PreparedColumnData {
47
47
  /** This function wraps and memoizes all preparation steps for converting
48
48
  * an array of units from the /units route to a form ready for usage.
@@ -54,7 +54,7 @@ export function usePreparedColumnUnits(
54
54
 
55
55
  export function prepareColumnUnits(
56
56
  units: UnitLong[],
57
- options: PrepareColumnOptions
57
+ options: PrepareColumnOptions,
58
58
  ): PreparedColumnData {
59
59
  /** Prepare units for rendering into Macrostrat columns */
60
60
 
@@ -136,26 +136,14 @@ export function prepareColumnUnits(
136
136
  sectionsWithScales = collapseUnconformitiesByPixelHeight(
137
137
  sectionsWithScales,
138
138
  threshold,
139
- options
139
+ options,
140
140
  );
141
141
  }
142
142
 
143
- /** Reconstitute the units so that they are sorted by section.
144
- * This is mostly important so that unit keyboard navigation
145
- * predictably selects adjacent units.
146
- */
147
- const units2 = sectionsWithScales.reduce((acc, group) => {
148
- const { units } = group;
149
- for (const unit of units) {
150
- acc.push(unit);
151
- }
152
- return acc;
153
- }, []);
154
-
155
143
  /** Prepare section scale information using groups */
156
144
  const { totalHeight, sections: sections2 } = finalizeSectionHeights(
157
145
  sectionsWithScales,
158
- unconformityHeight
146
+ unconformityHeight,
159
147
  );
160
148
 
161
149
  /** For each section, find units that are overlapping.
@@ -169,6 +157,18 @@ export function prepareColumnUnits(
169
157
  };
170
158
  });
171
159
 
160
+ /** Reconstitute the units so that they are sorted by section and properly enhanced.
161
+ * This is mostly important so that unit keyboard navigation
162
+ * predictably selects adjacent units.
163
+ */
164
+ const units2 = sectionsOut.reduce((acc, group) => {
165
+ const { units } = group;
166
+ for (const unit of units) {
167
+ acc.push(unit);
168
+ }
169
+ return acc;
170
+ }, []);
171
+
172
172
  return {
173
173
  units: units2,
174
174
  totalHeight,
@@ -13,13 +13,13 @@ interface UnitsOverlap {
13
13
  a: StratigraphicPackage,
14
14
  b: StratigraphicPackage,
15
15
  axisType?: ColumnAxisType.AGE,
16
- tolerance?: number
16
+ tolerance?: number,
17
17
  ): boolean;
18
18
  (
19
19
  a: BaseUnit,
20
20
  b: BaseUnit,
21
21
  axisType: ColumnAxisType,
22
- tolerance?: number
22
+ tolerance?: number,
23
23
  ): boolean;
24
24
  }
25
25
 
@@ -27,12 +27,12 @@ export const unitsOverlap: UnitsOverlap = function (
27
27
  a,
28
28
  b,
29
29
  axisType: ColumnAxisType = ColumnAxisType.AGE,
30
- tolerance: number = 0.001
30
+ tolerance: number = 0.001,
31
31
  ): boolean {
32
32
  const rel = compareAgeRanges(
33
33
  getUnitHeightRange(a, axisType),
34
34
  getUnitHeightRange(b, axisType),
35
- tolerance
35
+ tolerance,
36
36
  );
37
37
  return rel != AgeRangeRelationship.Disjoint;
38
38
  };
@@ -41,12 +41,12 @@ export const unitsOverlap: UnitsOverlap = function (
41
41
  export function agesOverlap(
42
42
  a: StratigraphicPackage,
43
43
  b: StratigraphicPackage,
44
- tolerance: number = dt
44
+ tolerance: number = dt,
45
45
  ): boolean {
46
46
  return unitsOverlap(a, b, ColumnAxisType.AGE, tolerance);
47
47
  }
48
48
 
49
- interface PossiblyClippedUnit extends BaseUnit {
49
+ export interface PossiblyClippedUnit extends BaseUnit {
50
50
  // Internally created clipped positions
51
51
  t_clip_pos?: number;
52
52
  b_clip_pos?: number;
@@ -54,7 +54,7 @@ interface PossiblyClippedUnit extends BaseUnit {
54
54
 
55
55
  export function getUnitHeightRange(
56
56
  unit: PossiblyClippedUnit,
57
- axisType: ColumnAxisType
57
+ axisType: ColumnAxisType,
58
58
  ): [number, number] {
59
59
  switch (axisType) {
60
60
  case ColumnAxisType.AGE:
package/src/section.ts CHANGED
@@ -120,9 +120,9 @@ function SectionUnitsColumn(props: SectionSharedProps) {
120
120
  width: innerWidth,
121
121
  clipUnits,
122
122
  maxInternalColumns,
123
- } // This unconformity is with the section _above_
123
+ }, // This unconformity is with the section _above_
124
124
  );
125
- })
125
+ }),
126
126
  ),
127
127
  h.if(unconformityLabels)(UnconformityLabels, {
128
128
  width,
@@ -157,7 +157,7 @@ function SectionUnits(props: SectionProps) {
157
157
  nColumns: Math.min(
158
158
  maxInternalColumns ?? Math.floor(width / 10),
159
159
  unitComponentProps?.nColumns ?? Infinity,
160
- Math.max(...units.map((d) => d.column)) + 1
160
+ Math.max(...units.map((d) => d.column)) + 1,
161
161
  ),
162
162
  //axisType,
163
163
  };
@@ -184,8 +184,8 @@ function SectionUnits(props: SectionProps) {
184
184
  unitComponent,
185
185
  unitComponentProps: _unitComponentProps,
186
186
  clipToFrame: clipUnits,
187
- })
188
- )
187
+ }),
188
+ ),
189
189
  );
190
190
  }
191
191
 
@@ -240,9 +240,9 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
240
240
  showAgeAxis: false,
241
241
  ageRange: domain as [number, number],
242
242
  }),
243
- ]
243
+ ],
244
244
  );
245
- })
245
+ }),
246
246
  ),
247
247
  h.if(unconformityLabels)(UnconformityLabels, {
248
248
  width: "100%",
@@ -281,7 +281,7 @@ export function UnconformityLabels(props: {
281
281
  top,
282
282
  },
283
283
  });
284
- })
284
+ }),
285
285
  );
286
286
  }
287
287
 
@@ -5,17 +5,24 @@ import { Button, ButtonGroup } from "@blueprintjs/core";
5
5
  import { ReactNode, useMemo, useState } from "react";
6
6
  import {
7
7
  DataField,
8
- EnvironmentsList,
8
+ // EnvironmentsList,
9
9
  IntervalShort,
10
10
  IntervalTag,
11
11
  ItemList,
12
- LithologyList,
12
+ // LithologyList,
13
13
  LithologyTagFeature,
14
14
  Parenthetical,
15
15
  Value,
16
16
  } from "@macrostrat/data-components";
17
+ import { LithologyList, EnvironmentsList } from "../../../data-components/src";
17
18
  import { useMacrostratData, useMacrostratDefs } from "../data-provider";
18
- import { Environment, UnitLong, UnitLongFull } from "@macrostrat/api-types";
19
+ import {
20
+ Environment,
21
+ UnitLong,
22
+ UnitLongFull,
23
+ Lithology,
24
+ Interval,
25
+ } from "@macrostrat/api-types";
19
26
  import { defaultNameFunction } from "../units/names";
20
27
  import classNames from "classnames";
21
28
 
@@ -35,6 +42,7 @@ export function UnitDetailsPanel({
35
42
  actions,
36
43
  selectUnit,
37
44
  columnUnits,
45
+ onClickItem,
38
46
  }: {
39
47
  unit: any;
40
48
  onClose?: any;
@@ -45,6 +53,7 @@ export function UnitDetailsPanel({
45
53
  lithologyFeatures?: Set<LithologyTagFeature>;
46
54
  columnUnits?: UnitLong[];
47
55
  selectUnit?: (unitID: number) => void;
56
+ onClickItem?: (item: any) => void;
48
57
  }) {
49
58
  const [showJSON, setShowJSON] = useState(false);
50
59
 
@@ -52,7 +61,12 @@ export function UnitDetailsPanel({
52
61
  if (showJSON) {
53
62
  content = h(JSONView, { data: unit, showRoot: false });
54
63
  } else {
55
- content = h(UnitDetailsContent, { unit, features, lithologyFeatures });
64
+ content = h(UnitDetailsContent, {
65
+ unit,
66
+ features,
67
+ lithologyFeatures,
68
+ onClickItem,
69
+ });
56
70
  }
57
71
 
58
72
  let title = defaultNameFunction(unit);
@@ -136,12 +150,19 @@ function UnitDetailsContent({
136
150
  UnitDetailsFeature.AdjacentUnits,
137
151
  UnitDetailsFeature.OutcropType,
138
152
  ]),
153
+ onClickItem,
154
+ getItemHref,
139
155
  }: {
140
156
  unit: UnitLong;
141
157
  selectUnit?: (unitID: number) => void;
142
158
  columnUnits?: UnitLong[];
143
159
  lithologyFeatures?: Set<LithologyTagFeature>;
144
160
  features?: Set<UnitDetailsFeature>;
161
+ onClickItem?: (
162
+ event: MouseEvent,
163
+ item: Lithology | Environment | UnitLong | Interval,
164
+ ) => void;
165
+ getItemHref?: (item: Lithology | Environment | UnitLong) => string | null;
145
166
  }) {
146
167
  const lithMap = useMacrostratDefs("lithologies");
147
168
  const envMap = useMacrostratDefs("environments");
@@ -190,7 +211,7 @@ function UnitDetailsContent({
190
211
  value: formatRange(unit.b_pos, unit.t_pos),
191
212
  children: h(
192
213
  Parenthetical,
193
- h(Value, { value: thickness, unit: thicknessUnit })
214
+ h(Value, { value: thickness, unit: thicknessUnit }),
194
215
  ),
195
216
  });
196
217
  }
@@ -215,37 +236,46 @@ function UnitDetailsContent({
215
236
  label: "Lithology",
216
237
  lithologies,
217
238
  features: lithologyFeatures,
239
+ getItemHref,
240
+ onClickItem,
218
241
  }),
219
242
  h(AgeField, { unit }, [
220
243
  h(Parenthetical, h(Duration, { value: unit.b_age - unit.t_age })),
221
- h(IntervalProportions, { unit }),
244
+ h(IntervalProportions, {
245
+ unit,
246
+ onClickItem,
247
+ }),
222
248
  ]),
223
- h(EnvironmentsList, { environments }),
249
+ h(EnvironmentsList, {
250
+ environments,
251
+ onClickItem,
252
+ getItemHref,
253
+ }),
224
254
  h.if(unit.strat_name_id != null)(
225
255
  DataField,
226
256
  {
227
257
  label: "Stratigraphic name",
228
258
  },
229
- h("span.strat-name-id", unit.strat_name_id)
259
+ h("span.strat-name-id", unit.strat_name_id),
230
260
  ),
231
261
  outcropField,
232
262
  h.if(features.has(UnitDetailsFeature.AdjacentUnits))([
233
263
  h(
234
264
  DataField,
235
265
  { label: "Above" },
236
- h(UnitIDList, { units: unit.units_above, selectUnit })
266
+ h(UnitIDList, { units: unit.units_above, selectUnit }),
237
267
  ),
238
268
  h(
239
269
  DataField,
240
270
  { label: "Below" },
241
- h(UnitIDList, { units: unit.units_below, selectUnit })
271
+ h(UnitIDList, { units: unit.units_below, selectUnit }),
242
272
  ),
243
273
  ]),
244
274
  colorSwatch,
245
275
  h(
246
276
  DataField,
247
277
  { label: "Source", inline: true },
248
- h(BibInfo, { refs: unit.refs })
278
+ h(BibInfo, { refs: unit.refs }),
249
279
  ),
250
280
  ]);
251
281
  }
@@ -300,7 +330,7 @@ function BibInfo({ refs }) {
300
330
 
301
331
  return h(
302
332
  "ul.refs",
303
- refData.map((data, i) => h(Citation, { data, tag: "li", key: i }))
333
+ refData.map((data, i) => h(Citation, { data, tag: "li", key: i })),
304
334
  );
305
335
  }
306
336
 
@@ -324,7 +354,7 @@ function AgeField({ unit, children }) {
324
354
  value: formatRange(b_age, t_age),
325
355
  unit: _unit,
326
356
  },
327
- children
357
+ children,
328
358
  );
329
359
  }
330
360
 
@@ -346,6 +376,48 @@ function getAgeRange(_unit) {
346
376
  return [b_age, t_age, unit];
347
377
  }
348
378
 
379
+ function getAge(value) {
380
+ /** Get the age value in Ma, ka, or Ga as appropriate */
381
+ let unit = "Ma";
382
+ if (value < 0.8) {
383
+ unit = "ka";
384
+ value *= 1000;
385
+ if (value < 5) {
386
+ unit = "yr";
387
+ value *= 1000;
388
+ }
389
+ } else if (value > 1000) {
390
+ unit = "Ga";
391
+ value /= 1000;
392
+ }
393
+
394
+ return [value, unit];
395
+ }
396
+
397
+ export function AgeLabel({
398
+ age,
399
+ maximumFractionDigits = 2,
400
+ minimumFractionDigits = 0,
401
+ className,
402
+ }: {
403
+ age: number;
404
+ className?: string;
405
+ maximumFractionDigits?: number;
406
+ minimumFractionDigits?: number;
407
+ }) {
408
+ /** Component to display a single age value with unit conversion from
409
+ * Ma to ka or Ga as appropriate.
410
+ */
411
+ const [value, unit] = getAge(age);
412
+
413
+ const _value = value.toLocaleString("en-US", {
414
+ maximumFractionDigits,
415
+ minimumFractionDigits,
416
+ });
417
+
418
+ return h(Value, { value: _value, unit, className });
419
+ }
420
+
349
421
  export function Duration({
350
422
  value,
351
423
  maximumFractionDigits = 2,
@@ -374,7 +446,7 @@ export function Duration({
374
446
 
375
447
  function enhanceEnvironments(
376
448
  environments: Partial<Environment>[],
377
- envMap: Map<number, Environment>
449
+ envMap: Map<number, Environment>,
378
450
  ) {
379
451
  return environments.map((env) => {
380
452
  return {
@@ -386,7 +458,7 @@ function enhanceEnvironments(
386
458
 
387
459
  function enhanceLithologies(
388
460
  lithologies: Partial<UnitLong["lith"]>,
389
- lithMap: Map<number, any>
461
+ lithMap: Map<number, any>,
390
462
  ) {
391
463
  return lithologies.map((lith) => {
392
464
  return {
@@ -422,13 +494,13 @@ function UnitIDList({ units, selectUnit }) {
422
494
  },
423
495
  key: unit.id,
424
496
  },
425
- unit
497
+ unit,
426
498
  );
427
- })
499
+ }),
428
500
  );
429
501
  }
430
502
 
431
- function IntervalProportions({ unit }) {
503
+ function IntervalProportions({ unit, onClickItem }) {
432
504
  const i0 = unit.b_int_id;
433
505
  const i1 = unit.t_int_id;
434
506
  let b_prop = unit.b_prop ?? 0;
@@ -456,14 +528,26 @@ function IntervalProportions({ unit }) {
456
528
  p0 = h("span.joint-proportion", [p0, h("span.sep", "to"), p1]);
457
529
  }
458
530
 
531
+ const clickable = onClickItem != null;
532
+
533
+ const handleClick = (event: MouseEvent) => {
534
+ if (onClickItem) {
535
+ onClickItem({ event, data: interval0 });
536
+ }
537
+ };
538
+
459
539
  return h("div.interval-proportions", [
460
540
  h(IntervalTag, {
541
+ className: clickable ? "clickable" : "",
542
+ onClick: clickable ? handleClick : undefined,
461
543
  interval: interval0,
462
544
  prefix: p0,
463
545
  }),
464
546
  h.if(i0 != i1)("span.discourage-break", [
465
547
  h("span.sep", "to"),
466
548
  h(IntervalTag, {
549
+ className: clickable ? "clickable" : "",
550
+ onClick: clickable ? handleClick : undefined,
467
551
  interval: {
468
552
  ...int1,
469
553
  id: i1,
@@ -501,7 +585,7 @@ function formatRange(min, max, precision = null) {
501
585
 
502
586
  return `${formatSignificance(min, precision)}–${formatSignificance(
503
587
  max,
504
- precision
588
+ precision,
505
589
  )}`;
506
590
  }
507
591
 
@@ -34,8 +34,8 @@ export function UnitDetailsPopover({
34
34
  preventOverflow: { options: { padding: viewportPadding } },
35
35
  },
36
36
  },
37
- h("span.popover-target")
38
- )
37
+ h("span.popover-target"),
38
+ ),
39
39
  );
40
40
  }
41
41
 
@@ -48,7 +48,7 @@ function InteractionBarrier({ children }) {
48
48
  e.stopPropagation();
49
49
  },
50
50
  },
51
- children
51
+ children,
52
52
  );
53
53
  }
54
54
 
@@ -76,7 +76,7 @@ export function UnitSelectionPopover() {
76
76
  unit,
77
77
  showLithologyProportions: true,
78
78
  className: "legend-panel",
79
- })
80
- )
79
+ }),
80
+ ),
81
81
  );
82
82
  }