@macrostrat/column-views 2.1.4 → 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 +7 -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.77b49a43.js → column-views.0859feb3.js} +52 -23
  7. package/dist/esm/column-views.0859feb3.js.map +1 -0
  8. package/dist/esm/{column-views.1f7fb650.js → column-views.0a8a07f4.js} +3 -3
  9. package/dist/esm/{column-views.1f7fb650.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.448c0687.css → column-views.1151416d.css} +5 -5
  13. package/dist/esm/column-views.1151416d.css.map +1 -0
  14. package/dist/esm/{column-views.676cb1d3.js → column-views.1b644998.js} +3 -3
  15. package/dist/esm/{column-views.676cb1d3.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.02f3732a.js → column-views.285cbb65.js} +40 -20
  19. package/dist/esm/column-views.285cbb65.js.map +1 -0
  20. package/dist/esm/{column-views.97d542eb.js → column-views.2d602a57.js} +4 -4
  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.78bd3f09.js → column-views.3e1b8c7d.js} +2 -2
  27. package/dist/esm/{column-views.78bd3f09.js.map → column-views.3e1b8c7d.js.map} +1 -1
  28. package/dist/esm/{column-views.42b89c52.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.769fa0ee.js → column-views.53186d53.js} +2 -2
  33. package/dist/esm/{column-views.769fa0ee.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.775846c9.js → column-views.5a49cd68.js} +8 -38
  41. package/dist/esm/column-views.5a49cd68.js.map +1 -0
  42. package/dist/esm/{column-views.f20eb583.js → column-views.5d969bc5.js} +4 -5
  43. package/dist/esm/column-views.5d969bc5.js.map +1 -0
  44. package/dist/esm/{column-views.243da806.js → column-views.63b7e5aa.js} +3 -3
  45. package/dist/esm/{column-views.243da806.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.7ca9e1cd.js → column-views.73b8ff16.js} +19 -21
  55. package/dist/esm/column-views.73b8ff16.js.map +1 -0
  56. package/dist/esm/{column-views.cc5244c4.js → column-views.77561197.js} +91 -55
  57. package/dist/esm/column-views.77561197.js.map +1 -0
  58. package/dist/esm/{column-views.e7ab5af0.js → column-views.83395185.js} +3 -3
  59. package/dist/esm/{column-views.e7ab5af0.js.map → column-views.83395185.js.map} +1 -1
  60. package/dist/esm/{column-views.8e3dec90.js → column-views.86a51ce7.js} +2 -2
  61. package/dist/esm/{column-views.8e3dec90.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.ab0380ed.js → column-views.8d24b179.js} +3 -3
  67. package/dist/esm/{column-views.ab0380ed.js.map → column-views.8d24b179.js.map} +1 -1
  68. package/dist/esm/{column-views.a6301a41.js → column-views.986e7566.js} +7 -7
  69. package/dist/esm/{column-views.a6301a41.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.2ff3dd8b.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.a195109e.js → column-views.ba0381cc.js} +2 -2
  79. package/dist/esm/{column-views.a195109e.js.map → column-views.ba0381cc.js.map} +1 -1
  80. package/dist/esm/{column-views.75ea6dbe.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.fbc7401f.js → column-views.d406665d.js} +5 -5
  91. package/dist/esm/{column-views.fbc7401f.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.547b2730.js → column-views.d9c6b527.js} +15 -12
  95. package/dist/esm/column-views.d9c6b527.js.map +1 -0
  96. package/dist/esm/{column-views.8d4ce558.css → column-views.e33ac5c9.css} +26 -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.38a305a0.js.map → column-views.e3bf5384.js.map} +1 -1
  100. package/dist/esm/{column-views.e3b9a317.js → column-views.e4c26185.js} +2 -2
  101. package/dist/esm/{column-views.e3b9a317.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.0a159282.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.935ef6f7.js → column-views.f46a0b36.js} +2 -2
  111. package/dist/esm/{column-views.935ef6f7.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 +217 -406
  115. package/dist/esm/index.d.ts.map +1 -1
  116. package/dist/esm/index.js +12 -12
  117. package/dist/node/{column-views.858b5cf4.js → column-views.01debc76.js} +2 -2
  118. package/dist/node/{column-views.858b5cf4.js.map → column-views.01debc76.js.map} +1 -1
  119. package/dist/node/{column-views.51bc87ca.js → column-views.040499c9.js} +2 -2
  120. package/dist/node/{column-views.51bc87ca.js.map → column-views.040499c9.js.map} +1 -1
  121. package/dist/node/{column-views.e3ba0594.js → column-views.07ff1fdf.js} +2 -2
  122. package/dist/node/{column-views.e3ba0594.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.45fab61b.js → column-views.13e69859.js} +2 -2
  134. package/dist/node/{column-views.45fab61b.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.58d2f993.js → column-views.1a7f8afd.js} +2 -2
  138. package/dist/node/{column-views.58d2f993.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.492b4917.js → column-views.9dda582d.js} +2 -2
  180. package/dist/node/{column-views.492b4917.js.map → column-views.9dda582d.js.map} +1 -1
  181. package/dist/node/{column-views.2a6b842d.js → column-views.9e155f20.js} +2 -2
  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.eeca917f.js → column-views.a34732e7.js} +2 -2
  186. package/dist/node/{column-views.eeca917f.js.map → column-views.a34732e7.js.map} +1 -1
  187. package/dist/node/{column-views.65f091ea.js → column-views.a396d3ac.js} +2 -2
  188. package/dist/node/{column-views.65f091ea.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.a372c943.js → column-views.ac1b58b7.js} +2 -2
  192. package/dist/node/{column-views.a372c943.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.2d957a97.js → column-views.b6cd4360.js} +2 -2
  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.df97f28e.js → column-views.cd77a1d8.js} +2 -2
  208. package/dist/node/{column-views.df97f28e.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.2ca669bc.js → column-views.e08f8715.js} +2 -2
  220. package/dist/node/{column-views.2ca669bc.js.map → column-views.e08f8715.js.map} +1 -1
  221. package/dist/node/{column-views.91043465.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 +13 -13
  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 +29 -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 +32 -24
  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 +232 -158
  248. package/src/facets/fossils/provider.ts +121 -25
  249. package/src/facets/index.ts +1 -0
  250. package/src/facets/measurements/index.ts +1 -2
  251. package/src/prepare-units/composite-scale.ts +183 -155
  252. package/src/prepare-units/dynamic-scales.ts +298 -0
  253. package/src/prepare-units/helpers.ts +99 -87
  254. package/src/prepare-units/index.ts +77 -51
  255. package/src/prepare-units/types.ts +138 -0
  256. package/src/prepare-units/utils.ts +29 -1
  257. package/src/section.ts +46 -9
  258. package/src/unit-details/panel.module.sass +8 -1
  259. package/src/unit-details/panel.ts +123 -53
  260. package/src/unit-details/popover.ts +5 -0
  261. package/src/units/boxes.ts +1 -5
  262. package/src/units/composite.ts +3 -49
  263. package/src/units/selection.ts +21 -7
  264. package/dist/esm/column-views.02f3732a.js.map +0 -1
  265. package/dist/esm/column-views.0a159282.js +0 -13
  266. package/dist/esm/column-views.1e055ed5.js.map +0 -1
  267. package/dist/esm/column-views.2ff3dd8b.js.map +0 -1
  268. package/dist/esm/column-views.3048acc1.js +0 -66
  269. package/dist/esm/column-views.3048acc1.js.map +0 -1
  270. package/dist/esm/column-views.38a305a0.js +0 -13
  271. package/dist/esm/column-views.39657bbf.js.map +0 -1
  272. package/dist/esm/column-views.3f246167.js.map +0 -1
  273. package/dist/esm/column-views.42b89c52.js.map +0 -1
  274. package/dist/esm/column-views.448c0687.css.map +0 -1
  275. package/dist/esm/column-views.4ab0ec82.js.map +0 -1
  276. package/dist/esm/column-views.4d22c21c.js.map +0 -1
  277. package/dist/esm/column-views.547b2730.js.map +0 -1
  278. package/dist/esm/column-views.64a84c43.js.map +0 -1
  279. package/dist/esm/column-views.75ea6dbe.js.map +0 -1
  280. package/dist/esm/column-views.775846c9.js.map +0 -1
  281. package/dist/esm/column-views.77b49a43.js.map +0 -1
  282. package/dist/esm/column-views.7ca9e1cd.js.map +0 -1
  283. package/dist/esm/column-views.8703a35b.js +0 -163
  284. package/dist/esm/column-views.8703a35b.js.map +0 -1
  285. package/dist/esm/column-views.8d4ce558.css.map +0 -1
  286. package/dist/esm/column-views.97d542eb.js.map +0 -1
  287. package/dist/esm/column-views.9892f825.js.map +0 -1
  288. package/dist/esm/column-views.b17f793f.css.map +0 -1
  289. package/dist/esm/column-views.b3c1eb9e.js +0 -16
  290. package/dist/esm/column-views.b3c1eb9e.js.map +0 -1
  291. package/dist/esm/column-views.b72918ce.css.map +0 -1
  292. package/dist/esm/column-views.c71c321c.js +0 -104
  293. package/dist/esm/column-views.c71c321c.js.map +0 -1
  294. package/dist/esm/column-views.cc5244c4.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.f20eb583.js.map +0 -1
  299. package/dist/node/column-views.085f4a51.js +0 -2
  300. package/dist/node/column-views.085f4a51.js.map +0 -1
  301. package/dist/node/column-views.0dfc7ef7.js +0 -2
  302. package/dist/node/column-views.0dfc7ef7.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.2926f656.css +0 -2
  306. package/dist/node/column-views.2926f656.css.map +0 -1
  307. package/dist/node/column-views.2a6b842d.js.map +0 -1
  308. package/dist/node/column-views.2d957a97.js.map +0 -1
  309. package/dist/node/column-views.307661d1.css +0 -2
  310. package/dist/node/column-views.307661d1.css.map +0 -1
  311. package/dist/node/column-views.33752461.js +0 -2
  312. package/dist/node/column-views.33752461.js.map +0 -1
  313. package/dist/node/column-views.38357d4a.js +0 -2
  314. package/dist/node/column-views.38357d4a.js.map +0 -1
  315. package/dist/node/column-views.3a55ecd7.css.map +0 -1
  316. package/dist/node/column-views.3eeac38d.js +0 -2
  317. package/dist/node/column-views.3eeac38d.js.map +0 -1
  318. package/dist/node/column-views.45168c80.js +0 -2
  319. package/dist/node/column-views.45168c80.js.map +0 -1
  320. package/dist/node/column-views.4ca62e5d.js +0 -2
  321. package/dist/node/column-views.4ca62e5d.js.map +0 -1
  322. package/dist/node/column-views.6ae7bb69.js +0 -2
  323. package/dist/node/column-views.6ae7bb69.js.map +0 -1
  324. package/dist/node/column-views.6f7a432f.js +0 -2
  325. package/dist/node/column-views.6f7a432f.js.map +0 -1
  326. package/dist/node/column-views.755f726e.js +0 -2
  327. package/dist/node/column-views.755f726e.js.map +0 -1
  328. package/dist/node/column-views.758b9bc1.js +0 -2
  329. package/dist/node/column-views.758b9bc1.js.map +0 -1
  330. package/dist/node/column-views.78d3f3c5.js +0 -2
  331. package/dist/node/column-views.78d3f3c5.js.map +0 -1
  332. package/dist/node/column-views.80fcf105.js +0 -2
  333. package/dist/node/column-views.80fcf105.js.map +0 -1
  334. package/dist/node/column-views.8cfed88b.js +0 -2
  335. package/dist/node/column-views.8cfed88b.js.map +0 -1
  336. package/dist/node/column-views.91043465.js.map +0 -1
  337. package/dist/node/column-views.976a829b.js +0 -2
  338. package/dist/node/column-views.976a829b.js.map +0 -1
  339. package/dist/node/column-views.99fb74c0.js +0 -2
  340. package/dist/node/column-views.99fb74c0.js.map +0 -1
  341. package/dist/node/column-views.9b7a9ae1.js +0 -2
  342. package/dist/node/column-views.9b7a9ae1.js.map +0 -1
  343. package/dist/node/column-views.9de31cdb.js +0 -2
  344. package/dist/node/column-views.9de31cdb.js.map +0 -1
  345. package/dist/node/column-views.a4e6d4ad.js +0 -2
  346. package/dist/node/column-views.a4e6d4ad.js.map +0 -1
  347. package/dist/node/column-views.a501cea0.js +0 -2
  348. package/dist/node/column-views.a501cea0.js.map +0 -1
  349. package/dist/node/column-views.a7256aa7.js +0 -2
  350. package/dist/node/column-views.a7256aa7.js.map +0 -1
  351. package/dist/node/column-views.c4b409e1.css +0 -2
  352. package/dist/node/column-views.c4b409e1.css.map +0 -1
  353. package/dist/node/column-views.cef1b814.js +0 -2
  354. package/dist/node/column-views.cef1b814.js.map +0 -1
  355. package/dist/node/column-views.d6708353.js +0 -2
  356. package/dist/node/column-views.d6708353.js.map +0 -1
  357. package/dist/node/column-views.d9add589.js +0 -2
  358. package/dist/node/column-views.d9add589.js.map +0 -1
  359. package/dist/node/column-views.dfb2361a.js +0 -2
  360. package/dist/node/column-views.dfb2361a.js.map +0 -1
  361. package/dist/node/column-views.e9515ec1.js +0 -2
  362. package/dist/node/column-views.e9515ec1.js.map +0 -1
@@ -1,16 +1,27 @@
1
- import { getUnitHeightRange } from "../../prepare-units";
2
- import { useMacrostratColumnData } from "../../data-provider";
3
1
  import hyper from "@macrostrat/hyper";
4
- import { PBDBCollection, useFossilData } from "./provider";
5
- import { useMacrostratUnits } from "../../data-provider";
6
- import { ColumnNotes } from "../../notes";
7
- import { useMemo } from "react";
2
+ import {
3
+ FossilDataType,
4
+ PBDBCollection,
5
+ PBDBOccurrence,
6
+ useFossilData,
7
+ } from "./provider";
8
8
  import type { IUnit } from "../../units";
9
+ import { BaseMeasurementsColumn, TruncatedList } from "../base-sample-column";
10
+ import { Box, useElementSize } from "@macrostrat/ui-components";
11
+ import { InternMap } from "d3-array";
12
+ import { ColumnAxisType, ColumnSVG } from "@macrostrat/column-components";
13
+ import {
14
+ useMacrostratColumnData,
15
+ useCompositeScale,
16
+ } from "../../data-provider";
17
+ import { UnitLong } from "@macrostrat/api-types";
9
18
  import styles from "./index.module.sass";
10
- import { useCallback } from "react";
19
+ import { useRef } from "react";
11
20
 
12
21
  const h = hyper.styled(styles);
13
22
 
23
+ export { FossilDataType };
24
+
14
25
  interface FossilItemProps {
15
26
  note: {
16
27
  data: PBDBCollection[];
@@ -36,177 +47,240 @@ function FossilInfo(props: FossilItemProps) {
36
47
  });
37
48
  }
38
49
 
39
- interface TruncatedListProps {
40
- data: any[];
41
- className?: string;
42
- maxItems?: number;
43
- itemRenderer?: (props: { data: any }) => any;
50
+ function PBDBCollectionLink({
51
+ data,
52
+ }: {
53
+ data: PBDBCollection | PBDBOccurrence;
54
+ }) {
55
+ /** A link to a PBDB collection that handles either an occurrence or collection object */
56
+ return h(
57
+ "a.link-id",
58
+ {
59
+ href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${data.cltn_id}`,
60
+ },
61
+ data.best_name ?? data.cltn_name,
62
+ );
44
63
  }
45
64
 
46
- export function TruncatedList({
47
- data,
48
- className,
49
- maxItems = 5,
50
- itemRenderer = (p) => h("span", p.data),
51
- }: TruncatedListProps) {
52
- let tooMany = null;
53
- let d1 = data;
54
- if (data.length > maxItems) {
55
- const n = data.length - maxItems;
56
- d1 = data.slice(0, maxItems);
57
- tooMany = h("li.too-many", `and ${n} more`);
58
- }
65
+ const matchingUnit = (dz) => (d) => d.unit_id == dz[0].unit_id;
66
+
67
+ export function PBDBFossilsColumn({
68
+ columnID,
69
+ type = FossilDataType.Collections,
70
+ }: {
71
+ columnID: number;
72
+ type: FossilDataType;
73
+ }) {
74
+ const data = useFossilData(columnID, type);
75
+
76
+ return h(BaseMeasurementsColumn, {
77
+ data,
78
+ noteComponent: FossilInfo,
79
+ className: "fossil-collections",
80
+ matchingUnit,
81
+ });
82
+ }
83
+
84
+ export function PBDBOccurrencesMatrix({ columnID }) {
85
+ /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will
86
+ eventually be extended with first/last occurrence markers and range bars.
87
+ */
88
+ const data = useFossilData(columnID, FossilDataType.Occurrences) as InternMap<
89
+ number,
90
+ PBDBOccurrence[]
91
+ >;
92
+
93
+ // convert the data to a map
94
+ const occurrenceMap = new Map(data);
95
+
96
+ const col = useMacrostratColumnData();
97
+ const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);
98
+
99
+ const scale = useCompositeScale();
100
+
101
+ const { taxonRanges } = matrix;
102
+
103
+ const padding = 16;
104
+ const spacing = 16;
105
+
106
+ const taxonEntries = Array.from(taxonRanges.entries());
107
+ //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa
108
+
109
+ const width = padding * 2 + spacing * taxonEntries.length;
110
+
111
+ return h(Box, { className: "taxon-ranges", width, height: col.totalHeight }, [
112
+ h(TaxonOccurrenceLabels, {
113
+ taxonEntries,
114
+ padding,
115
+ spacing,
116
+ scale,
117
+ }),
118
+ h(
119
+ ColumnSVG,
120
+ {
121
+ width: padding * 2 + spacing * taxonEntries.length,
122
+ },
123
+ h(
124
+ "g.taxa-occurrences-matrix",
125
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
126
+ const xPosition = padding + rowIndex * spacing;
127
+ return h("g", { transform: `translate(${xPosition})` }, [
128
+ ranges.map(([top, bottom]) => {
129
+ return h("line", {
130
+ y1: scale(top),
131
+ y2: scale(bottom),
132
+ });
133
+ }),
134
+ ]);
135
+ }),
136
+ ),
137
+ ),
138
+ ]);
139
+ }
59
140
 
60
- return h("ul.truncated-list", { className }, [
61
- d1.map((d, i) => {
62
- return h("li.element", { key: i }, h(itemRenderer, { data: d }));
141
+ function TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {
142
+ return h("div.taxon-labels", [
143
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
144
+ const top = ranges[0]?.[0] ?? 0;
145
+ let topPx = scale(top) - 20;
146
+ if (topPx < 200) topPx = 0;
147
+
148
+ return h(TaxonLabel, {
149
+ top: topPx,
150
+ left: padding + rowIndex * spacing,
151
+ taxonName,
152
+ });
63
153
  }),
64
- tooMany,
65
154
  ]);
66
155
  }
67
156
 
68
- function PBDBCollectionLink({ data }: { data: PBDBCollection }) {
157
+ function TaxonLabel({ top, left, taxonName }) {
158
+ const ref = useRef();
159
+ const textSize = useElementSize(ref);
160
+ const labelWidth = textSize?.height ?? 200;
69
161
  return h(
70
- "a.link-id",
162
+ "div.taxon-label",
71
163
  {
72
- href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${data.cltn_id}`,
164
+ style: {
165
+ top: `${top}px`,
166
+ marginLeft: `${left}px`,
167
+ "--label-width": `${labelWidth}px`,
168
+ },
73
169
  },
74
- data.cltn_name,
170
+ h("div.taxon-label-inner", h("div.taxon-label-text", { ref }, taxonName)),
75
171
  );
76
172
  }
77
173
 
78
- const matchingUnit = (dz) => (d) => d.unit_id == dz.unit_id;
79
-
80
- export function PBDBFossilsColumn({ columnID, color = "magenta" }) {
81
- const data = useFossilData({ col_id: columnID });
82
-
83
- const { axisType, units } = useMacrostratColumnData();
84
-
85
- const notes: any[] = useMemo(() => {
86
- if (data == null || units == null) return [];
87
- let unitRefData = Array.from(data.values())
88
- .map((d) => {
89
- return {
90
- data: d,
91
- unit: units.find(matchingUnit(d[0])),
92
- };
93
- })
94
- .filter((d) => d.unit != null);
95
-
96
- unitRefData.sort((a, b) => {
97
- const v1 = units.indexOf(a.unit);
98
- const v2 = units.indexOf(b.unit);
99
- return v1 - v2;
100
- });
101
-
102
- return unitRefData.map((d) => {
103
- const { unit, data } = d;
104
- const heightRange = getUnitHeightRange(unit, axisType);
105
-
106
- return {
107
- top_height: heightRange[1],
108
- height: heightRange[0],
109
- data,
110
- unit,
111
- id: unit.unit_id,
112
- };
113
- });
114
- }, [data, units]);
115
-
116
- const width = 500;
117
- const paddingLeft = 40;
118
-
119
- const noteComponent = useMemo(() => {
120
- return (props) => {
121
- return h(FossilInfo, {
122
- color,
123
- ...props,
124
- });
125
- };
126
- }, [width, color]);
174
+ type TaxonUnitMap = Map<string, Set<number>>;
127
175
 
128
- if (data == null || units == null) return null;
176
+ interface OccurrenceMatrixData {
177
+ occurrenceMap: Map<number, PBDBOccurrence[]>; // Map of unit IDs to occurrences (original data)
178
+ taxonUnitMap: TaxonUnitMap; // Map of taxon names to sets of unit IDs
179
+ taxonOccurrenceMap: Map<string, PBDBOccurrence[]>; // Map of taxon names to occurrences
180
+ taxonRanges: Map<string, [number, number][]>; // Map of taxon names to [top, bottom] pixel ranges
181
+ }
129
182
 
130
- return h(
131
- "div.dz-spectra",
132
- h(ColumnNotes, {
133
- width,
134
- paddingLeft,
135
- notes,
136
- noteComponent,
183
+ function TaxonOccurrenceEntry({
184
+ xPosition,
185
+ ranges,
186
+ scale,
187
+ name,
188
+ }: {
189
+ xPosition: number;
190
+ units: Set<number>;
191
+ }) {
192
+ return h("g", { transform: `translate(${xPosition})` }, [
193
+ ranges.map(([top, bottom]) => {
194
+ return h("line", {
195
+ y1: scale(top),
196
+ y2: scale(bottom),
197
+ });
137
198
  }),
138
- );
199
+ ]);
139
200
  }
140
201
 
141
- export interface BaseMeasurementsColumnProps<T> {
142
- data: T[];
143
- noteComponent?: any;
144
- width?: number;
145
- paddingLeft?: number;
146
- className?: string;
147
- getUnitID?: (d: T) => number | string;
202
+ function createOccurrenceMatrix(
203
+ units: UnitLong[],
204
+ data: Map<number, PBDBOccurrence[]>,
205
+ axisType: ColumnAxisType = ColumnAxisType.AGE,
206
+ ): OccurrenceMatrixData {
207
+ const taxonUnitMap = new Map<string, Set<number>>();
208
+ const taxonOccurrenceMap = new Map<string, PBDBOccurrence[]>();
209
+
210
+ for (const [unit_id, occurrences] of data.entries()) {
211
+ for (const occ of occurrences) {
212
+ const taxonName = occ.best_name ?? occ.taxon_name;
213
+ if (!taxonUnitMap.has(taxonName)) {
214
+ taxonUnitMap.set(taxonName, new Set());
215
+ taxonOccurrenceMap.set(taxonName, []);
216
+ }
217
+ taxonUnitMap.get(taxonName).add(unit_id);
218
+ taxonOccurrenceMap.get(taxonName).push(occ);
219
+ }
220
+ }
221
+
222
+ // sort the taxon occurrence map by number of occurrences
223
+ const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {
224
+ // Sort alphabetically by taxon name
225
+ return b[0].localeCompare(a[0]);
226
+ });
227
+
228
+ const taxonRanges = new Map<string, [number, number][]>();
229
+ for (const [taxonName, unitSet] of taxonUnitMap.entries()) {
230
+ taxonRanges.set(
231
+ taxonName,
232
+ accumulatePresenceDomains(units, unitSet, axisType),
233
+ );
234
+ }
235
+
236
+ return {
237
+ occurrenceMap: data,
238
+ taxonUnitMap: new Map(sortedTaxa),
239
+ taxonOccurrenceMap: taxonOccurrenceMap,
240
+ taxonRanges,
241
+ };
148
242
  }
149
243
 
150
- export function BaseMeasurementsColumn({
151
- data,
152
- noteComponent,
153
- width = 500,
154
- paddingLeft = 40,
155
- className,
156
- getUnitID = (d) => d.unit_id,
157
- }: BaseMeasurementsColumnProps<any>) {
158
- const { axisType, units } = useMacrostratColumnData();
159
-
160
- const matchingUnit = useCallback(
161
- (dz) => {
162
- return (d) => {
163
- return getUnitID(d) === dz.unit_id;
164
- };
165
- },
166
- [getUnitID],
167
- );
244
+ function accumulatePresenceDomains(
245
+ unit: UnitLong[],
246
+ presenceUnits: Set<number>,
247
+ axisType: ColumnAxisType,
248
+ ): Array<[number, number]> {
249
+ const domains: Array<[number, number]> = [];
250
+ let currentDomain: [number, number] | null = null;
168
251
 
169
- const notes: any[] = useMemo(() => {
170
- if (data == null || units == null) return [];
171
- let unitRefData = Array.from(data.values())
172
- .map((d) => {
173
- return {
174
- data: d,
175
- unit: units.find(matchingUnit(d)),
176
- };
177
- })
178
- .filter((d) => d.unit != null);
179
-
180
- unitRefData.sort((a, b) => {
181
- const v1 = units.indexOf(a.unit);
182
- const v2 = units.indexOf(b.unit);
183
- return v1 - v2;
184
- });
185
-
186
- return unitRefData.map((d) => {
187
- const { unit, data } = d;
188
- const heightRange = getUnitHeightRange(unit, axisType);
189
-
190
- return {
191
- top_height: heightRange[1],
192
- height: heightRange[0],
193
- data,
194
- unit,
195
- id: unit.unit_id,
196
- };
197
- });
198
- }, [data, units, matchingUnit]);
199
-
200
- if (data == null || units == null) return null;
252
+ for (const u of unit) {
253
+ if (presenceUnits.has(u.unit_id)) {
254
+ if (currentDomain == null) {
255
+ if (
256
+ axisType == ColumnAxisType.DEPTH ||
257
+ axisType == ColumnAxisType.HEIGHT
258
+ ) {
259
+ currentDomain = [u.t_pos, u.b_pos];
260
+ } else {
261
+ currentDomain = [u.t_age, u.b_age];
262
+ }
263
+ } else {
264
+ if (
265
+ axisType == ColumnAxisType.DEPTH ||
266
+ axisType == ColumnAxisType.HEIGHT
267
+ ) {
268
+ currentDomain[1] = u.b_pos;
269
+ } else {
270
+ currentDomain[1] = u.b_age;
271
+ }
272
+ }
273
+ } else {
274
+ if (currentDomain != null) {
275
+ domains.push(currentDomain);
276
+ currentDomain = null;
277
+ }
278
+ }
279
+ }
201
280
 
202
- return h(
203
- "div",
204
- { className },
205
- h(ColumnNotes, {
206
- width,
207
- paddingLeft,
208
- notes,
209
- noteComponent,
210
- }),
211
- );
281
+ if (currentDomain != null) {
282
+ domains.push(currentDomain);
283
+ }
284
+
285
+ return domains;
212
286
  }
@@ -1,10 +1,14 @@
1
- import { group } from "d3-array";
2
- import { createAPIContext, useAPIResult } from "@macrostrat/ui-components";
1
+ import { group, InternMap } from "d3-array";
2
+ import {
3
+ createAPIContext,
4
+ useAPIResult,
5
+ useAsyncMemo,
6
+ } from "@macrostrat/ui-components";
3
7
 
4
8
  const responseUnwrapper = (d) => d.records;
5
9
 
6
10
  const pbdbAPIContext = createAPIContext({
7
- baseURL: "https://training.paleobiodb.org/data1.2",
11
+ baseURL: "https://paleobiodb.org/data1.2",
8
12
  unwrapResponse: responseUnwrapper,
9
13
  });
10
14
 
@@ -26,10 +30,13 @@ export function usePBDBFossilData(
26
30
  });
27
31
  }
28
32
 
29
- export interface PBDBCollection {
33
+ export interface PBDBIdentifier {
30
34
  unit_id: number;
31
35
  col_id: number;
32
36
  cltn_id: number;
37
+ }
38
+
39
+ export interface PBDBCollection extends PBDBIdentifier {
33
40
  cltn_name: string;
34
41
  pbdb_occs: number;
35
42
  t_age: number;
@@ -37,44 +44,133 @@ export interface PBDBCollection {
37
44
  [key: string]: any; // Allow for additional properties
38
45
  }
39
46
 
40
- function useMacrostratFossilData({ col_id }): PBDBCollection[] | null {
41
- return useAPIResult("/fossils", { col_id });
47
+ export interface PBDBOccurrence extends PBDBIdentifier {
48
+ occ_id: number;
49
+ cltn_id: number;
50
+ taxon_name: string;
51
+ best_name: string;
52
+ [key: string]: any; // Allow for additional properties
53
+ }
54
+
55
+ export function useFossilData(
56
+ col_id: number,
57
+ type = FossilDataType.Collections,
58
+ ) {
59
+ // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here
60
+ // we create a unified view of data over both sources.
61
+ return useAsyncMemo(async () => {
62
+ if (col_id == null) return null;
63
+ return await fetchFossilData(col_id, type);
64
+ }, [col_id, type]);
65
+ }
66
+
67
+ async function fetchMacrostratFossilData(
68
+ col_id: number,
69
+ type: FossilDataType,
70
+ ): Promise<PBDBCollection[]> {
71
+ if (type !== FossilDataType.Collections) {
72
+ // Macrostrat API only supports collections
73
+ return [];
74
+ }
75
+
76
+ // Fetch fossil collections linked to columns from the Macrostrat API
77
+ const resp = await fetch(
78
+ `https://macrostrat.org/api/fossils?col_id=${col_id}`,
79
+ );
80
+ const res = await resp.json();
81
+ // Create collections from Macrostrat data
82
+ return res.success.data;
83
+ }
84
+
85
+ async function fetchPDBDFossilData(
86
+ col_id: number,
87
+ type: FossilDataType,
88
+ ): Promise<PBDBCollection[]> {
89
+ const resp = await fetch(
90
+ `https://paleobiodb.org/data1.2/${type}/list.json?ms_column=${col_id}&show=mslink,full`,
91
+ );
92
+ const res = await resp.json();
93
+ return res.records.map(
94
+ type == FossilDataType.Collections
95
+ ? createMacrostratCollection
96
+ : preprocessOccurrence,
97
+ );
98
+ }
99
+
100
+ async function fetchFossilData(
101
+ colID: number,
102
+ type: FossilDataType,
103
+ ): Promise<InternMap<number, PBDBOccurrence[] | PBDBCollection[]>> {
104
+ const [macrostratData, pbdbData] = await Promise.all([
105
+ fetchMacrostratFossilData(colID, type),
106
+ fetchPDBDFossilData(colID, type),
107
+ ]);
108
+
109
+ const data = [...macrostratData, ...pbdbData];
110
+
111
+ return group(data, (d) => d.unit_id);
112
+ }
113
+
114
+ function preprocessOccurrence(d): PBDBOccurrence {
115
+ /* Preprocess data for an occurrence into a Macrostrat-like format */
116
+ // Standardize names of Macrostrat units and columns
117
+ const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
118
+ const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
119
+
120
+ // taxon names may be stored in different fields
121
+ const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
122
+ const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
123
+
124
+ return {
125
+ ...d,
126
+ unit_id,
127
+ col_id,
128
+ taxon_name: d.tna,
129
+ best_name: d.idn ?? d.tna,
130
+ occ_id,
131
+ cltn_id,
132
+ cltn_name: d.nam,
133
+ };
42
134
  }
43
135
 
44
136
  function createMacrostratCollection(d): PBDBCollection {
137
+ /* Preprocess data for a collection into a Macrostrat-like format */
45
138
  let unit_id = null;
46
139
  let col_id = null;
47
140
  // Standardize names of Macrostrat units and columns
48
- if (d.msu !== null) {
141
+ if (d.msu != null) {
49
142
  unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
50
143
  }
51
- if (d.msc !== null) {
144
+ if (d.msc != null) {
52
145
  col_id = parseInt(d.msc.replace(/^\w+:/, ""));
53
146
  }
54
147
 
148
+ // taxon names may be stored in different fields
149
+ let taxon_name = d.tna;
150
+ let occ_id = null;
151
+ if (d.oid != null && d.oid.startsWith("occ:")) {
152
+ occ_id = parseInt(d.oid.replace(/^occ:/, ""));
153
+ }
154
+ if (d.idn != null) {
155
+ taxon_name = d.idn;
156
+ }
157
+
158
+ let cltn_id = d.cltn_id;
159
+ if (d.oid != null && d.oid.startsWith("col:")) {
160
+ cltn_id = parseInt(d.oid.replace(/^col:/, ""));
161
+ } else if (d.cid != null && d.cid.startsWith("col:")) {
162
+ cltn_id = parseInt(d.cid.replace(/^col:/, ""));
163
+ }
164
+
55
165
  return {
56
166
  ...d,
57
167
  unit_id,
58
168
  col_id,
59
- cltn_id: parseInt(d.oid.replace(/^col:/, "")),
169
+ taxon_name,
170
+ occ_id,
171
+ cltn_id,
60
172
  cltn_name: d.nam,
61
173
  t_age: d.t_age,
62
174
  b_age: d.b_age,
63
175
  };
64
176
  }
65
-
66
- export function useFossilData({ col_id }) {
67
- // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here
68
- // we create a unified view of data over both sources.
69
-
70
- const r1 = usePBDBFossilData(FossilDataType.Collections, { col_id });
71
-
72
- const r2 = useMacrostratFossilData({ col_id });
73
-
74
- if (r1 == null || r2 == null) return null;
75
- const r1a = r1.map(createMacrostratCollection);
76
-
77
- const data = [...r1a, ...r2];
78
-
79
- return group(data, (d) => d.unit_id);
80
- }
@@ -2,3 +2,4 @@ export * from "./fossils";
2
2
  export * from "./detrital-zircon";
3
3
  export * from "./carbon-isotopes";
4
4
  export * from "./measurements";
5
+ export * from "./base-sample-column";
@@ -1,6 +1,6 @@
1
1
  import h from "@macrostrat/hyper";
2
2
  import { useAPIResult } from "@macrostrat/ui-components";
3
- import { BaseMeasurementsColumn, TruncatedList } from "../fossils";
3
+ import { BaseMeasurementsColumn, TruncatedList } from "../base-sample-column";
4
4
 
5
5
  function useSGPData({ col_id }) {
6
6
  const res = useAPIResult(
@@ -10,7 +10,6 @@ function useSGPData({ col_id }) {
10
10
  },
11
11
  (d) => d,
12
12
  );
13
-
14
13
  return res;
15
14
  }
16
15