@macrostrat/column-views 2.4.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/age-axis.cjs +123 -0
  3. package/dist/age-axis.cjs.map +1 -0
  4. package/dist/age-axis.d.ts +33 -0
  5. package/dist/age-axis.js +123 -0
  6. package/dist/age-axis.js.map +1 -0
  7. package/dist/age-axis.module.sass.cjs +18 -0
  8. package/dist/age-axis.module.sass.cjs.map +1 -0
  9. package/dist/age-axis.module.sass.js +18 -0
  10. package/dist/age-axis.module.sass.js.map +1 -0
  11. package/dist/age-model-overlay.cjs +48 -0
  12. package/dist/age-model-overlay.cjs.map +1 -0
  13. package/dist/age-model-overlay.d.ts +24 -0
  14. package/dist/age-model-overlay.js +48 -0
  15. package/dist/age-model-overlay.js.map +1 -0
  16. package/dist/age-model-overlay.module.sass.cjs +8 -0
  17. package/dist/age-model-overlay.module.sass.cjs.map +1 -0
  18. package/dist/age-model-overlay.module.sass.js +8 -0
  19. package/dist/age-model-overlay.module.sass.js.map +1 -0
  20. package/dist/column-views.css +685 -0
  21. package/dist/column.cjs +247 -0
  22. package/dist/column.cjs.map +1 -0
  23. package/dist/column.d.ts +44 -0
  24. package/dist/column.js +247 -0
  25. package/dist/column.js.map +1 -0
  26. package/dist/column.module.sass.cjs +33 -0
  27. package/dist/column.module.sass.cjs.map +1 -0
  28. package/dist/column.module.sass.js +33 -0
  29. package/dist/column.module.sass.js.map +1 -0
  30. package/dist/correlation-chart/hash-string.cjs +46 -0
  31. package/dist/correlation-chart/hash-string.cjs.map +1 -0
  32. package/dist/correlation-chart/hash-string.d.ts +3 -0
  33. package/dist/correlation-chart/hash-string.js +46 -0
  34. package/dist/correlation-chart/hash-string.js.map +1 -0
  35. package/dist/correlation-chart/index.d.ts +2 -0
  36. package/dist/correlation-chart/main.cjs +202 -0
  37. package/dist/correlation-chart/main.cjs.map +1 -0
  38. package/dist/correlation-chart/main.d.ts +15 -0
  39. package/dist/correlation-chart/main.js +202 -0
  40. package/dist/correlation-chart/main.js.map +1 -0
  41. package/dist/correlation-chart/main.module.sass.cjs +28 -0
  42. package/dist/correlation-chart/main.module.sass.cjs.map +1 -0
  43. package/dist/correlation-chart/main.module.sass.js +28 -0
  44. package/dist/correlation-chart/main.module.sass.js.map +1 -0
  45. package/dist/correlation-chart/prepare-data.cjs +62 -0
  46. package/dist/correlation-chart/prepare-data.cjs.map +1 -0
  47. package/dist/correlation-chart/prepare-data.d.ts +52 -0
  48. package/dist/correlation-chart/prepare-data.js +62 -0
  49. package/dist/correlation-chart/prepare-data.js.map +1 -0
  50. package/dist/correlation-chart/stories/utils.d.ts +6 -0
  51. package/dist/correlation-chart/unconformity-line.d.ts +3 -0
  52. package/dist/data-provider/base.cjs +349 -0
  53. package/dist/data-provider/base.cjs.map +1 -0
  54. package/dist/data-provider/base.d.ts +65 -0
  55. package/dist/data-provider/base.js +349 -0
  56. package/dist/data-provider/base.js.map +1 -0
  57. package/dist/data-provider/column-nav.cjs +36 -0
  58. package/dist/data-provider/column-nav.cjs.map +1 -0
  59. package/dist/data-provider/column-nav.d.ts +13 -0
  60. package/dist/data-provider/column-nav.js +36 -0
  61. package/dist/data-provider/column-nav.js.map +1 -0
  62. package/dist/data-provider/core.cjs +56 -0
  63. package/dist/data-provider/core.cjs.map +1 -0
  64. package/dist/data-provider/core.d.ts +31 -0
  65. package/dist/data-provider/core.js +56 -0
  66. package/dist/{esm/column-views.67804ce5.js.map → data-provider/core.js.map} +1 -1
  67. package/dist/data-provider/fetch.cjs +210 -0
  68. package/dist/data-provider/fetch.cjs.map +1 -0
  69. package/dist/data-provider/fetch.d.ts +27 -0
  70. package/dist/data-provider/fetch.js +210 -0
  71. package/dist/data-provider/fetch.js.map +1 -0
  72. package/dist/data-provider/index.d.ts +5 -0
  73. package/dist/data-provider/store.cjs +107 -0
  74. package/dist/data-provider/store.cjs.map +1 -0
  75. package/dist/data-provider/store.d.ts +34 -0
  76. package/dist/data-provider/store.js +107 -0
  77. package/dist/data-provider/store.js.map +1 -0
  78. package/dist/data-provider/unit-selection.cjs +225 -0
  79. package/dist/data-provider/unit-selection.cjs.map +1 -0
  80. package/dist/data-provider/unit-selection.d.ts +49 -0
  81. package/dist/data-provider/unit-selection.js +225 -0
  82. package/dist/data-provider/unit-selection.js.map +1 -0
  83. package/dist/facets/carbon-isotopes/data-area.cjs +64 -0
  84. package/dist/facets/carbon-isotopes/data-area.cjs.map +1 -0
  85. package/dist/facets/carbon-isotopes/data-area.d.ts +13 -0
  86. package/dist/facets/carbon-isotopes/data-area.js +64 -0
  87. package/dist/facets/carbon-isotopes/data-area.js.map +1 -0
  88. package/dist/facets/carbon-isotopes/data-provider.cjs +20 -0
  89. package/dist/facets/carbon-isotopes/data-provider.cjs.map +1 -0
  90. package/dist/facets/carbon-isotopes/data-provider.d.ts +4 -0
  91. package/dist/facets/carbon-isotopes/data-provider.js +20 -0
  92. package/dist/facets/carbon-isotopes/data-provider.js.map +1 -0
  93. package/dist/facets/carbon-isotopes/index.d.ts +2 -0
  94. package/dist/facets/carbon-isotopes/isotopes-column.cjs +174 -0
  95. package/dist/facets/carbon-isotopes/isotopes-column.cjs.map +1 -0
  96. package/dist/facets/carbon-isotopes/isotopes-column.d.ts +19 -0
  97. package/dist/facets/carbon-isotopes/isotopes-column.js +174 -0
  98. package/dist/facets/carbon-isotopes/isotopes-column.js.map +1 -0
  99. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs +15 -0
  100. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs.map +1 -0
  101. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js +15 -0
  102. package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js.map +1 -0
  103. package/dist/facets/detrital-zircon/index.cjs +108 -0
  104. package/dist/facets/detrital-zircon/index.cjs.map +1 -0
  105. package/dist/facets/detrital-zircon/index.d.ts +24 -0
  106. package/dist/facets/detrital-zircon/index.js +108 -0
  107. package/dist/facets/detrital-zircon/index.js.map +1 -0
  108. package/dist/facets/detrital-zircon/index.module.sass.cjs +11 -0
  109. package/dist/facets/detrital-zircon/index.module.sass.cjs.map +1 -0
  110. package/dist/facets/detrital-zircon/index.module.sass.js +11 -0
  111. package/dist/facets/detrital-zircon/index.module.sass.js.map +1 -0
  112. package/dist/facets/detrital-zircon/provider.cjs +22 -0
  113. package/dist/facets/detrital-zircon/provider.cjs.map +1 -0
  114. package/dist/facets/detrital-zircon/provider.d.ts +31 -0
  115. package/dist/facets/detrital-zircon/provider.js +22 -0
  116. package/dist/facets/detrital-zircon/provider.js.map +1 -0
  117. package/dist/facets/fossils/index.cjs +120 -0
  118. package/dist/facets/fossils/index.cjs.map +1 -0
  119. package/dist/facets/fossils/index.d.ts +7 -0
  120. package/dist/facets/fossils/index.js +120 -0
  121. package/dist/facets/fossils/index.js.map +1 -0
  122. package/dist/facets/fossils/provider.cjs +99 -0
  123. package/dist/facets/fossils/provider.cjs.map +1 -0
  124. package/dist/facets/fossils/provider.d.ts +29 -0
  125. package/dist/facets/fossils/provider.js +99 -0
  126. package/dist/facets/fossils/provider.js.map +1 -0
  127. package/dist/facets/fossils/taxon-ranges.cjs +145 -0
  128. package/dist/facets/fossils/taxon-ranges.cjs.map +1 -0
  129. package/dist/facets/fossils/taxon-ranges.d.ts +3 -0
  130. package/dist/facets/fossils/taxon-ranges.js +145 -0
  131. package/dist/facets/fossils/taxon-ranges.js.map +1 -0
  132. package/dist/facets/fossils/taxon-ranges.module.sass.cjs +13 -0
  133. package/dist/facets/fossils/taxon-ranges.module.sass.cjs.map +1 -0
  134. package/dist/facets/fossils/taxon-ranges.module.sass.js +13 -0
  135. package/dist/facets/fossils/taxon-ranges.module.sass.js.map +1 -0
  136. package/dist/facets/index.d.ts +4 -0
  137. package/dist/facets/measurements/base.cjs +128 -0
  138. package/dist/facets/measurements/base.cjs.map +1 -0
  139. package/dist/facets/measurements/base.d.ts +46 -0
  140. package/dist/facets/measurements/base.js +128 -0
  141. package/dist/facets/measurements/base.js.map +1 -0
  142. package/dist/facets/measurements/base.module.sass.cjs +8 -0
  143. package/dist/facets/measurements/base.module.sass.cjs.map +1 -0
  144. package/dist/facets/measurements/base.module.sass.js +8 -0
  145. package/dist/facets/measurements/base.module.sass.js.map +1 -0
  146. package/dist/facets/measurements/index.d.ts +2 -0
  147. package/dist/facets/measurements/sgp.cjs +62 -0
  148. package/dist/facets/measurements/sgp.cjs.map +1 -0
  149. package/dist/facets/measurements/sgp.d.ts +3 -0
  150. package/dist/facets/measurements/sgp.js +62 -0
  151. package/dist/facets/measurements/sgp.js.map +1 -0
  152. package/dist/index.cjs +164 -0
  153. package/dist/index.cjs.map +1 -0
  154. package/dist/index.d.ts +11 -0
  155. package/dist/index.js +164 -0
  156. package/dist/index.js.map +1 -0
  157. package/dist/maps/_shared/index.d.ts +2 -0
  158. package/dist/maps/_shared/inset-map.cjs +69 -0
  159. package/dist/maps/_shared/inset-map.cjs.map +1 -0
  160. package/dist/maps/_shared/inset-map.d.ts +16 -0
  161. package/dist/maps/_shared/inset-map.js +69 -0
  162. package/dist/maps/_shared/inset-map.js.map +1 -0
  163. package/dist/maps/_shared/styles.cjs +68 -0
  164. package/dist/maps/_shared/styles.cjs.map +1 -0
  165. package/dist/maps/_shared/styles.d.ts +2 -0
  166. package/dist/maps/_shared/styles.js +68 -0
  167. package/dist/maps/_shared/styles.js.map +1 -0
  168. package/dist/maps/column-correlation/core.cjs +185 -0
  169. package/dist/maps/column-correlation/core.cjs.map +1 -0
  170. package/dist/maps/column-correlation/core.d.ts +9 -0
  171. package/dist/maps/column-correlation/core.js +185 -0
  172. package/dist/maps/column-correlation/core.js.map +1 -0
  173. package/dist/maps/column-correlation/index.d.ts +2 -0
  174. package/dist/maps/column-correlation/state.cjs +129 -0
  175. package/dist/maps/column-correlation/state.cjs.map +1 -0
  176. package/dist/maps/column-correlation/state.d.ts +31 -0
  177. package/dist/maps/column-correlation/state.js +129 -0
  178. package/dist/maps/column-correlation/state.js.map +1 -0
  179. package/dist/maps/column-navigation/index.d.ts +2 -0
  180. package/dist/maps/column-navigation/mapbox/index.cjs +175 -0
  181. package/dist/maps/column-navigation/mapbox/index.cjs.map +1 -0
  182. package/dist/maps/column-navigation/mapbox/index.d.ts +17 -0
  183. package/dist/maps/column-navigation/mapbox/index.js +175 -0
  184. package/dist/maps/column-navigation/mapbox/index.js.map +1 -0
  185. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +99 -0
  186. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +1 -0
  187. package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +31 -0
  188. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +99 -0
  189. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +1 -0
  190. package/dist/maps/column-navigation/mapbox/state.cjs +71 -0
  191. package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -0
  192. package/dist/maps/column-navigation/mapbox/state.d.ts +23 -0
  193. package/dist/maps/column-navigation/mapbox/state.js +71 -0
  194. package/dist/maps/column-navigation/mapbox/state.js.map +1 -0
  195. package/dist/maps/column-navigation/svg/animated.d.ts +1 -0
  196. package/dist/maps/column-navigation/svg/index.cjs +92 -0
  197. package/dist/maps/column-navigation/svg/index.cjs.map +1 -0
  198. package/dist/maps/column-navigation/svg/index.d.ts +9 -0
  199. package/dist/maps/column-navigation/svg/index.js +93 -0
  200. package/dist/maps/column-navigation/svg/index.js.map +1 -0
  201. package/dist/maps/column-navigation/svg/layers.cjs +175 -0
  202. package/dist/maps/column-navigation/svg/layers.cjs.map +1 -0
  203. package/dist/maps/column-navigation/svg/layers.d.ts +54 -0
  204. package/dist/maps/column-navigation/svg/layers.js +175 -0
  205. package/dist/maps/column-navigation/svg/layers.js.map +1 -0
  206. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +50 -0
  207. package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +1 -0
  208. package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +10 -0
  209. package/dist/maps/column-navigation/utils/keyboard-navigation.js +50 -0
  210. package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +1 -0
  211. package/dist/maps/index.d.ts +3 -0
  212. package/dist/notes.cjs +41 -0
  213. package/dist/notes.cjs.map +1 -0
  214. package/dist/notes.d.ts +12 -0
  215. package/dist/notes.js +41 -0
  216. package/dist/notes.js.map +1 -0
  217. package/dist/prepare-units/composite-scale.cjs +284 -0
  218. package/dist/prepare-units/composite-scale.cjs.map +1 -0
  219. package/dist/prepare-units/composite-scale.d.ts +19 -0
  220. package/dist/prepare-units/composite-scale.js +284 -0
  221. package/dist/prepare-units/composite-scale.js.map +1 -0
  222. package/dist/prepare-units/dynamic-scales.cjs +190 -0
  223. package/dist/prepare-units/dynamic-scales.cjs.map +1 -0
  224. package/dist/prepare-units/dynamic-scales.d.ts +13 -0
  225. package/dist/prepare-units/dynamic-scales.js +190 -0
  226. package/dist/prepare-units/dynamic-scales.js.map +1 -0
  227. package/dist/prepare-units/helpers.cjs +198 -0
  228. package/dist/prepare-units/helpers.cjs.map +1 -0
  229. package/dist/prepare-units/helpers.d.ts +10 -0
  230. package/dist/prepare-units/helpers.js +198 -0
  231. package/dist/prepare-units/helpers.js.map +1 -0
  232. package/dist/prepare-units/index.cjs +130 -0
  233. package/dist/prepare-units/index.cjs.map +1 -0
  234. package/dist/prepare-units/index.d.ts +10 -0
  235. package/dist/prepare-units/index.js +131 -0
  236. package/dist/prepare-units/index.js.map +1 -0
  237. package/dist/prepare-units/types.cjs +16 -0
  238. package/dist/prepare-units/types.cjs.map +1 -0
  239. package/dist/prepare-units/types.d.ts +99 -0
  240. package/dist/prepare-units/types.js +16 -0
  241. package/dist/prepare-units/types.js.map +1 -0
  242. package/dist/prepare-units/utils.cjs +99 -0
  243. package/dist/prepare-units/utils.cjs.map +1 -0
  244. package/dist/prepare-units/utils.d.ts +39 -0
  245. package/dist/prepare-units/utils.js +99 -0
  246. package/dist/prepare-units/utils.js.map +1 -0
  247. package/dist/section.cjs +269 -0
  248. package/dist/section.cjs.map +1 -0
  249. package/dist/section.d.ts +45 -0
  250. package/dist/section.js +269 -0
  251. package/dist/section.js.map +1 -0
  252. package/dist/unit-details/index.d.ts +3 -0
  253. package/dist/unit-details/modal-panel.cjs +57 -0
  254. package/dist/unit-details/modal-panel.cjs.map +1 -0
  255. package/dist/unit-details/modal-panel.d.ts +1 -0
  256. package/dist/unit-details/modal-panel.js +57 -0
  257. package/dist/unit-details/modal-panel.js.map +1 -0
  258. package/dist/unit-details/panel.cjs +627 -0
  259. package/dist/unit-details/panel.cjs.map +1 -0
  260. package/dist/unit-details/panel.d.ts +87 -0
  261. package/dist/unit-details/panel.js +627 -0
  262. package/dist/unit-details/panel.js.map +1 -0
  263. package/dist/unit-details/panel.module.sass.cjs +42 -0
  264. package/dist/unit-details/panel.module.sass.cjs.map +1 -0
  265. package/dist/unit-details/panel.module.sass.js +42 -0
  266. package/dist/unit-details/panel.module.sass.js.map +1 -0
  267. package/dist/unit-details/popover.cjs +81 -0
  268. package/dist/unit-details/popover.cjs.map +1 -0
  269. package/dist/unit-details/popover.d.ts +9 -0
  270. package/dist/unit-details/popover.js +81 -0
  271. package/dist/unit-details/popover.js.map +1 -0
  272. package/dist/unit-details/popover.module.sass.cjs +10 -0
  273. package/dist/unit-details/popover.module.sass.cjs.map +1 -0
  274. package/dist/unit-details/popover.module.sass.js +10 -0
  275. package/dist/unit-details/popover.module.sass.js.map +1 -0
  276. package/dist/units/boxes.cjs +187 -0
  277. package/dist/units/boxes.cjs.map +1 -0
  278. package/dist/units/boxes.d.ts +54 -0
  279. package/dist/units/boxes.js +187 -0
  280. package/dist/units/boxes.js.map +1 -0
  281. package/dist/units/boxes.module.sass.cjs +11 -0
  282. package/dist/units/boxes.module.sass.cjs.map +1 -0
  283. package/dist/units/boxes.module.sass.js +11 -0
  284. package/dist/units/boxes.module.sass.js.map +1 -0
  285. package/dist/units/colors.cjs +52 -0
  286. package/dist/units/colors.cjs.map +1 -0
  287. package/dist/units/colors.d.ts +7 -0
  288. package/dist/units/colors.js +52 -0
  289. package/dist/units/colors.js.map +1 -0
  290. package/dist/units/composite.cjs +157 -0
  291. package/dist/units/composite.cjs.map +1 -0
  292. package/dist/units/composite.d.ts +39 -0
  293. package/dist/units/composite.js +157 -0
  294. package/dist/units/composite.js.map +1 -0
  295. package/dist/units/composite.module.sass.cjs +7 -0
  296. package/dist/units/composite.module.sass.cjs.map +1 -0
  297. package/dist/units/composite.module.sass.js +7 -0
  298. package/dist/units/composite.module.sass.js.map +1 -0
  299. package/dist/units/index.cjs +117 -0
  300. package/dist/units/index.cjs.map +1 -0
  301. package/dist/units/index.d.ts +40 -0
  302. package/dist/units/index.js +118 -0
  303. package/dist/units/index.js.map +1 -0
  304. package/dist/units/names.cjs +72 -0
  305. package/dist/units/names.cjs.map +1 -0
  306. package/dist/units/names.d.ts +33 -0
  307. package/dist/units/names.js +72 -0
  308. package/dist/units/names.js.map +1 -0
  309. package/dist/units/resolvers.cjs +114 -0
  310. package/dist/units/resolvers.cjs.map +1 -0
  311. package/dist/units/resolvers.d.ts +3 -0
  312. package/dist/units/resolvers.js +114 -0
  313. package/dist/units/resolvers.js.map +1 -0
  314. package/dist/units/types.d.ts +16 -0
  315. package/package.json +52 -55
  316. package/src/facets/measurements/sgp.ts +10 -3
  317. package/src/unit-details/popover.module.sass +3 -3
  318. package/dist/esm/column-views.006d5180.js +0 -97
  319. package/dist/esm/column-views.006d5180.js.map +0 -1
  320. package/dist/esm/column-views.052498a6.js +0 -93
  321. package/dist/esm/column-views.052498a6.js.map +0 -1
  322. package/dist/esm/column-views.079119f4.js +0 -17
  323. package/dist/esm/column-views.079119f4.js.map +0 -1
  324. package/dist/esm/column-views.0b3c0d18.js +0 -322
  325. package/dist/esm/column-views.0b3c0d18.js.map +0 -1
  326. package/dist/esm/column-views.0ed9da35.js +0 -141
  327. package/dist/esm/column-views.0ed9da35.js.map +0 -1
  328. package/dist/esm/column-views.0faf79a9.js +0 -142
  329. package/dist/esm/column-views.0faf79a9.js.map +0 -1
  330. package/dist/esm/column-views.16cc7a58.css +0 -37
  331. package/dist/esm/column-views.16cc7a58.css.map +0 -1
  332. package/dist/esm/column-views.17a70358.js +0 -16
  333. package/dist/esm/column-views.17a70358.js.map +0 -1
  334. package/dist/esm/column-views.19539293.js +0 -86
  335. package/dist/esm/column-views.19539293.js.map +0 -1
  336. package/dist/esm/column-views.1af3ec1f.js +0 -139
  337. package/dist/esm/column-views.1af3ec1f.js.map +0 -1
  338. package/dist/esm/column-views.1cd55918.js +0 -206
  339. package/dist/esm/column-views.1cd55918.js.map +0 -1
  340. package/dist/esm/column-views.22ec902b.js +0 -34
  341. package/dist/esm/column-views.22ec902b.js.map +0 -1
  342. package/dist/esm/column-views.2a0010a3.js +0 -15
  343. package/dist/esm/column-views.2a0010a3.js.map +0 -1
  344. package/dist/esm/column-views.2c45a7b5.js +0 -25
  345. package/dist/esm/column-views.2c45a7b5.js.map +0 -1
  346. package/dist/esm/column-views.321af3ae.css +0 -59
  347. package/dist/esm/column-views.321af3ae.css.map +0 -1
  348. package/dist/esm/column-views.334c3947.js +0 -75
  349. package/dist/esm/column-views.334c3947.js.map +0 -1
  350. package/dist/esm/column-views.33796541.js +0 -88
  351. package/dist/esm/column-views.33796541.js.map +0 -1
  352. package/dist/esm/column-views.337b40a2.js +0 -199
  353. package/dist/esm/column-views.337b40a2.js.map +0 -1
  354. package/dist/esm/column-views.338a7a83.css +0 -134
  355. package/dist/esm/column-views.338a7a83.css.map +0 -1
  356. package/dist/esm/column-views.33d35a44.js +0 -118
  357. package/dist/esm/column-views.33d35a44.js.map +0 -1
  358. package/dist/esm/column-views.3465c8ad.js +0 -16
  359. package/dist/esm/column-views.3465c8ad.js.map +0 -1
  360. package/dist/esm/column-views.362aae9a.js +0 -113
  361. package/dist/esm/column-views.362aae9a.js.map +0 -1
  362. package/dist/esm/column-views.3b972a9b.css +0 -4
  363. package/dist/esm/column-views.3b972a9b.css.map +0 -1
  364. package/dist/esm/column-views.3de4dc43.js +0 -66
  365. package/dist/esm/column-views.3de4dc43.js.map +0 -1
  366. package/dist/esm/column-views.40cd59b5.js +0 -13
  367. package/dist/esm/column-views.40cd59b5.js.map +0 -1
  368. package/dist/esm/column-views.4252a555.js +0 -248
  369. package/dist/esm/column-views.4252a555.js.map +0 -1
  370. package/dist/esm/column-views.45c70ba4.js +0 -38
  371. package/dist/esm/column-views.45c70ba4.js.map +0 -1
  372. package/dist/esm/column-views.47b7d9ca.js +0 -206
  373. package/dist/esm/column-views.47b7d9ca.js.map +0 -1
  374. package/dist/esm/column-views.47ca059d.js +0 -225
  375. package/dist/esm/column-views.47ca059d.js.map +0 -1
  376. package/dist/esm/column-views.4d374a35.js +0 -19
  377. package/dist/esm/column-views.4d374a35.js.map +0 -1
  378. package/dist/esm/column-views.54c1f382.css +0 -23
  379. package/dist/esm/column-views.54c1f382.css.map +0 -1
  380. package/dist/esm/column-views.562db43a.css +0 -148
  381. package/dist/esm/column-views.562db43a.css.map +0 -1
  382. package/dist/esm/column-views.5e1c216f.js +0 -180
  383. package/dist/esm/column-views.5e1c216f.js.map +0 -1
  384. package/dist/esm/column-views.60e97132.js +0 -20
  385. package/dist/esm/column-views.60e97132.js.map +0 -1
  386. package/dist/esm/column-views.636d6553.js +0 -343
  387. package/dist/esm/column-views.636d6553.js.map +0 -1
  388. package/dist/esm/column-views.64f6ddd3.js +0 -9
  389. package/dist/esm/column-views.64f6ddd3.js.map +0 -1
  390. package/dist/esm/column-views.6519a353.js +0 -9
  391. package/dist/esm/column-views.6519a353.js.map +0 -1
  392. package/dist/esm/column-views.67804ce5.js +0 -68
  393. package/dist/esm/column-views.6992ca88.js +0 -25
  394. package/dist/esm/column-views.6992ca88.js.map +0 -1
  395. package/dist/esm/column-views.6a954628.js +0 -70
  396. package/dist/esm/column-views.6a954628.js.map +0 -1
  397. package/dist/esm/column-views.6c670c13.css +0 -26
  398. package/dist/esm/column-views.6c670c13.css.map +0 -1
  399. package/dist/esm/column-views.6cff6659.js +0 -11
  400. package/dist/esm/column-views.6cff6659.js.map +0 -1
  401. package/dist/esm/column-views.6d6b73b4.js +0 -55
  402. package/dist/esm/column-views.6d6b73b4.js.map +0 -1
  403. package/dist/esm/column-views.6f9511d1.css +0 -25
  404. package/dist/esm/column-views.6f9511d1.css.map +0 -1
  405. package/dist/esm/column-views.6fff7602.js +0 -94
  406. package/dist/esm/column-views.6fff7602.js.map +0 -1
  407. package/dist/esm/column-views.70387120.js +0 -9
  408. package/dist/esm/column-views.70387120.js.map +0 -1
  409. package/dist/esm/column-views.708140ab.css +0 -36
  410. package/dist/esm/column-views.708140ab.css.map +0 -1
  411. package/dist/esm/column-views.74837922.js +0 -112
  412. package/dist/esm/column-views.74837922.js.map +0 -1
  413. package/dist/esm/column-views.76fb9948.js +0 -169
  414. package/dist/esm/column-views.76fb9948.js.map +0 -1
  415. package/dist/esm/column-views.7bfb4318.js +0 -161
  416. package/dist/esm/column-views.7bfb4318.js.map +0 -1
  417. package/dist/esm/column-views.7dc53f1b.js +0 -168
  418. package/dist/esm/column-views.7dc53f1b.js.map +0 -1
  419. package/dist/esm/column-views.85df21ec.js +0 -567
  420. package/dist/esm/column-views.85df21ec.js.map +0 -1
  421. package/dist/esm/column-views.87c589b7.js +0 -72
  422. package/dist/esm/column-views.87c589b7.js.map +0 -1
  423. package/dist/esm/column-views.8da2b857.js +0 -81
  424. package/dist/esm/column-views.8da2b857.js.map +0 -1
  425. package/dist/esm/column-views.8fb37de7.js +0 -9
  426. package/dist/esm/column-views.8fb37de7.js.map +0 -1
  427. package/dist/esm/column-views.905ddea0.js +0 -9
  428. package/dist/esm/column-views.905ddea0.js.map +0 -1
  429. package/dist/esm/column-views.9512c5d5.js +0 -240
  430. package/dist/esm/column-views.9512c5d5.js.map +0 -1
  431. package/dist/esm/column-views.9905b91c.js +0 -11
  432. package/dist/esm/column-views.9905b91c.js.map +0 -1
  433. package/dist/esm/column-views.9b77388d.js +0 -41
  434. package/dist/esm/column-views.9b77388d.js.map +0 -1
  435. package/dist/esm/column-views.a4f394fe.js +0 -127
  436. package/dist/esm/column-views.a4f394fe.js.map +0 -1
  437. package/dist/esm/column-views.a7c5ae16.js +0 -25
  438. package/dist/esm/column-views.a7c5ae16.js.map +0 -1
  439. package/dist/esm/column-views.aa9ede4d.js +0 -206
  440. package/dist/esm/column-views.aa9ede4d.js.map +0 -1
  441. package/dist/esm/column-views.b2142cd8.js +0 -13
  442. package/dist/esm/column-views.b2142cd8.js.map +0 -1
  443. package/dist/esm/column-views.b7cf0da2.js +0 -60
  444. package/dist/esm/column-views.b7cf0da2.js.map +0 -1
  445. package/dist/esm/column-views.b88d4bbe.js +0 -61
  446. package/dist/esm/column-views.b88d4bbe.js.map +0 -1
  447. package/dist/esm/column-views.beb54e95.js +0 -39
  448. package/dist/esm/column-views.beb54e95.js.map +0 -1
  449. package/dist/esm/column-views.c750a6df.js +0 -9
  450. package/dist/esm/column-views.c750a6df.js.map +0 -1
  451. package/dist/esm/column-views.cb1cc9f2.js +0 -134
  452. package/dist/esm/column-views.cb1cc9f2.js.map +0 -1
  453. package/dist/esm/column-views.cb6fc808.css +0 -54
  454. package/dist/esm/column-views.cb6fc808.css.map +0 -1
  455. package/dist/esm/column-views.cc733361.js +0 -55
  456. package/dist/esm/column-views.cc733361.js.map +0 -1
  457. package/dist/esm/column-views.ce000969.js +0 -187
  458. package/dist/esm/column-views.ce000969.js.map +0 -1
  459. package/dist/esm/column-views.d5e788e8.js +0 -31
  460. package/dist/esm/column-views.d5e788e8.js.map +0 -1
  461. package/dist/esm/column-views.d7740949.js +0 -152
  462. package/dist/esm/column-views.d7740949.js.map +0 -1
  463. package/dist/esm/column-views.d7e6bf67.js +0 -70
  464. package/dist/esm/column-views.d7e6bf67.js.map +0 -1
  465. package/dist/esm/column-views.dac0a3bb.js +0 -149
  466. package/dist/esm/column-views.dac0a3bb.js.map +0 -1
  467. package/dist/esm/column-views.dc42f5d0.js +0 -48
  468. package/dist/esm/column-views.dc42f5d0.js.map +0 -1
  469. package/dist/esm/column-views.e13a0a76.js +0 -138
  470. package/dist/esm/column-views.e13a0a76.js.map +0 -1
  471. package/dist/esm/column-views.e40b8bfb.css +0 -14
  472. package/dist/esm/column-views.e40b8bfb.css.map +0 -1
  473. package/dist/esm/column-views.e93478c3.css +0 -194
  474. package/dist/esm/column-views.e93478c3.css.map +0 -1
  475. package/dist/esm/column-views.ea08f667.js +0 -218
  476. package/dist/esm/column-views.ea08f667.js.map +0 -1
  477. package/dist/esm/column-views.edf77621.js +0 -22
  478. package/dist/esm/column-views.edf77621.js.map +0 -1
  479. package/dist/esm/column-views.f9dab157.js +0 -3
  480. package/dist/esm/column-views.f9dab157.js.map +0 -1
  481. package/dist/esm/column-views.fcf25ec6.js +0 -76
  482. package/dist/esm/column-views.fcf25ec6.js.map +0 -1
  483. package/dist/esm/column-views.fe42d2fc.js +0 -134
  484. package/dist/esm/column-views.fe42d2fc.js.map +0 -1
  485. package/dist/esm/index.d.ts +0 -1008
  486. package/dist/esm/index.d.ts.map +0 -1
  487. package/dist/esm/index.js +0 -27
  488. package/dist/esm/index.js.map +0 -1
  489. package/dist/node/column-views.012fa10c.js +0 -2
  490. package/dist/node/column-views.012fa10c.js.map +0 -1
  491. package/dist/node/column-views.048fdcaf.js +0 -2
  492. package/dist/node/column-views.048fdcaf.js.map +0 -1
  493. package/dist/node/column-views.04a72b35.js +0 -2
  494. package/dist/node/column-views.04a72b35.js.map +0 -1
  495. package/dist/node/column-views.0619e2da.js +0 -2
  496. package/dist/node/column-views.0619e2da.js.map +0 -1
  497. package/dist/node/column-views.0840b115.css +0 -2
  498. package/dist/node/column-views.0840b115.css.map +0 -1
  499. package/dist/node/column-views.0af5912d.js +0 -2
  500. package/dist/node/column-views.0af5912d.js.map +0 -1
  501. package/dist/node/column-views.0bd15ee4.js +0 -2
  502. package/dist/node/column-views.0bd15ee4.js.map +0 -1
  503. package/dist/node/column-views.0d254fd3.js +0 -2
  504. package/dist/node/column-views.0d254fd3.js.map +0 -1
  505. package/dist/node/column-views.109cb0c8.js +0 -2
  506. package/dist/node/column-views.109cb0c8.js.map +0 -1
  507. package/dist/node/column-views.1261be59.js +0 -2
  508. package/dist/node/column-views.1261be59.js.map +0 -1
  509. package/dist/node/column-views.15b5cecc.js +0 -2
  510. package/dist/node/column-views.15b5cecc.js.map +0 -1
  511. package/dist/node/column-views.183745c0.js +0 -2
  512. package/dist/node/column-views.183745c0.js.map +0 -1
  513. package/dist/node/column-views.2e2158f5.js +0 -2
  514. package/dist/node/column-views.2e2158f5.js.map +0 -1
  515. package/dist/node/column-views.306acd3f.js +0 -2
  516. package/dist/node/column-views.306acd3f.js.map +0 -1
  517. package/dist/node/column-views.31153f29.js +0 -2
  518. package/dist/node/column-views.31153f29.js.map +0 -1
  519. package/dist/node/column-views.31da008b.js +0 -2
  520. package/dist/node/column-views.31da008b.js.map +0 -1
  521. package/dist/node/column-views.3a079e34.css +0 -2
  522. package/dist/node/column-views.3a079e34.css.map +0 -1
  523. package/dist/node/column-views.40e758b3.js +0 -2
  524. package/dist/node/column-views.40e758b3.js.map +0 -1
  525. package/dist/node/column-views.41876859.js +0 -2
  526. package/dist/node/column-views.41876859.js.map +0 -1
  527. package/dist/node/column-views.4a28d695.js +0 -2
  528. package/dist/node/column-views.4a28d695.js.map +0 -1
  529. package/dist/node/column-views.4ec769a6.js +0 -2
  530. package/dist/node/column-views.4ec769a6.js.map +0 -1
  531. package/dist/node/column-views.50a992d3.css +0 -2
  532. package/dist/node/column-views.50a992d3.css.map +0 -1
  533. package/dist/node/column-views.51fbed89.js +0 -2
  534. package/dist/node/column-views.51fbed89.js.map +0 -1
  535. package/dist/node/column-views.5987bc26.js +0 -2
  536. package/dist/node/column-views.5987bc26.js.map +0 -1
  537. package/dist/node/column-views.5a9331a9.js +0 -2
  538. package/dist/node/column-views.5a9331a9.js.map +0 -1
  539. package/dist/node/column-views.5bb858c9.js +0 -2
  540. package/dist/node/column-views.5bb858c9.js.map +0 -1
  541. package/dist/node/column-views.5c1b0eeb.css +0 -2
  542. package/dist/node/column-views.5c1b0eeb.css.map +0 -1
  543. package/dist/node/column-views.5cbada24.js +0 -2
  544. package/dist/node/column-views.5cbada24.js.map +0 -1
  545. package/dist/node/column-views.5fcd2be6.js +0 -2
  546. package/dist/node/column-views.5fcd2be6.js.map +0 -1
  547. package/dist/node/column-views.672b683c.js +0 -2
  548. package/dist/node/column-views.672b683c.js.map +0 -1
  549. package/dist/node/column-views.6a0a35e7.js +0 -2
  550. package/dist/node/column-views.6a0a35e7.js.map +0 -1
  551. package/dist/node/column-views.6a4c2100.css +0 -2
  552. package/dist/node/column-views.6a4c2100.css.map +0 -1
  553. package/dist/node/column-views.6a9da051.js +0 -2
  554. package/dist/node/column-views.6a9da051.js.map +0 -1
  555. package/dist/node/column-views.6bba8c57.js +0 -2
  556. package/dist/node/column-views.6bba8c57.js.map +0 -1
  557. package/dist/node/column-views.75ba0464.css +0 -2
  558. package/dist/node/column-views.75ba0464.css.map +0 -1
  559. package/dist/node/column-views.78b2d234.js +0 -2
  560. package/dist/node/column-views.78b2d234.js.map +0 -1
  561. package/dist/node/column-views.7b6e7d82.js +0 -2
  562. package/dist/node/column-views.7b6e7d82.js.map +0 -1
  563. package/dist/node/column-views.7b9bd06e.css +0 -2
  564. package/dist/node/column-views.7b9bd06e.css.map +0 -1
  565. package/dist/node/column-views.7d45bbeb.js +0 -2
  566. package/dist/node/column-views.7d45bbeb.js.map +0 -1
  567. package/dist/node/column-views.7f9c7448.js +0 -2
  568. package/dist/node/column-views.7f9c7448.js.map +0 -1
  569. package/dist/node/column-views.82cf7c0d.js +0 -2
  570. package/dist/node/column-views.82cf7c0d.js.map +0 -1
  571. package/dist/node/column-views.869c7199.js +0 -2
  572. package/dist/node/column-views.869c7199.js.map +0 -1
  573. package/dist/node/column-views.8bee789c.js +0 -2
  574. package/dist/node/column-views.8bee789c.js.map +0 -1
  575. package/dist/node/column-views.90c36c0b.js +0 -2
  576. package/dist/node/column-views.90c36c0b.js.map +0 -1
  577. package/dist/node/column-views.951e3e9a.js +0 -2
  578. package/dist/node/column-views.951e3e9a.js.map +0 -1
  579. package/dist/node/column-views.95411f1b.js +0 -2
  580. package/dist/node/column-views.95411f1b.js.map +0 -1
  581. package/dist/node/column-views.9cb13e51.css +0 -2
  582. package/dist/node/column-views.9cb13e51.css.map +0 -1
  583. package/dist/node/column-views.a0969fc8.js +0 -2
  584. package/dist/node/column-views.a0969fc8.js.map +0 -1
  585. package/dist/node/column-views.a2476e39.js +0 -2
  586. package/dist/node/column-views.a2476e39.js.map +0 -1
  587. package/dist/node/column-views.a8f5ee28.js +0 -2
  588. package/dist/node/column-views.a8f5ee28.js.map +0 -1
  589. package/dist/node/column-views.ad60c02f.js +0 -2
  590. package/dist/node/column-views.ad60c02f.js.map +0 -1
  591. package/dist/node/column-views.add5e42b.js +0 -2
  592. package/dist/node/column-views.add5e42b.js.map +0 -1
  593. package/dist/node/column-views.aff55599.js +0 -2
  594. package/dist/node/column-views.aff55599.js.map +0 -1
  595. package/dist/node/column-views.b169b4b5.css +0 -2
  596. package/dist/node/column-views.b169b4b5.css.map +0 -1
  597. package/dist/node/column-views.b2e5f823.js +0 -2
  598. package/dist/node/column-views.b2e5f823.js.map +0 -1
  599. package/dist/node/column-views.b57e5e6e.js +0 -2
  600. package/dist/node/column-views.b57e5e6e.js.map +0 -1
  601. package/dist/node/column-views.b762c9a8.js +0 -2
  602. package/dist/node/column-views.b762c9a8.js.map +0 -1
  603. package/dist/node/column-views.ba9108fe.js +0 -2
  604. package/dist/node/column-views.ba9108fe.js.map +0 -1
  605. package/dist/node/column-views.c16a19fb.js +0 -2
  606. package/dist/node/column-views.c16a19fb.js.map +0 -1
  607. package/dist/node/column-views.c3097d9a.js +0 -2
  608. package/dist/node/column-views.c3097d9a.js.map +0 -1
  609. package/dist/node/column-views.c4c15e2b.js +0 -2
  610. package/dist/node/column-views.c4c15e2b.js.map +0 -1
  611. package/dist/node/column-views.c651b684.js +0 -2
  612. package/dist/node/column-views.c651b684.js.map +0 -1
  613. package/dist/node/column-views.c968a185.css +0 -2
  614. package/dist/node/column-views.c968a185.css.map +0 -1
  615. package/dist/node/column-views.ccfb9afb.css +0 -2
  616. package/dist/node/column-views.ccfb9afb.css.map +0 -1
  617. package/dist/node/column-views.cdcce702.js +0 -2
  618. package/dist/node/column-views.cdcce702.js.map +0 -1
  619. package/dist/node/column-views.cf41a6d7.js +0 -2
  620. package/dist/node/column-views.cf41a6d7.js.map +0 -1
  621. package/dist/node/column-views.d22bf15c.js +0 -2
  622. package/dist/node/column-views.d22bf15c.js.map +0 -1
  623. package/dist/node/column-views.d737de1e.js +0 -2
  624. package/dist/node/column-views.d737de1e.js.map +0 -1
  625. package/dist/node/column-views.da902c44.js +0 -2
  626. package/dist/node/column-views.da902c44.js.map +0 -1
  627. package/dist/node/column-views.db3377d8.js +0 -2
  628. package/dist/node/column-views.db3377d8.js.map +0 -1
  629. package/dist/node/column-views.dbb4a46b.js +0 -2
  630. package/dist/node/column-views.dbb4a46b.js.map +0 -1
  631. package/dist/node/column-views.ddc6184e.css +0 -2
  632. package/dist/node/column-views.ddc6184e.css.map +0 -1
  633. package/dist/node/column-views.e0e20136.js +0 -2
  634. package/dist/node/column-views.e0e20136.js.map +0 -1
  635. package/dist/node/column-views.e2562224.js +0 -2
  636. package/dist/node/column-views.e2562224.js.map +0 -1
  637. package/dist/node/column-views.e6720522.js +0 -2
  638. package/dist/node/column-views.e6720522.js.map +0 -1
  639. package/dist/node/column-views.e7e26765.js +0 -2
  640. package/dist/node/column-views.e7e26765.js.map +0 -1
  641. package/dist/node/column-views.e93b3bdb.js +0 -2
  642. package/dist/node/column-views.e93b3bdb.js.map +0 -1
  643. package/dist/node/column-views.ebb44b7d.js +0 -2
  644. package/dist/node/column-views.ebb44b7d.js.map +0 -1
  645. package/dist/node/column-views.ec0087a2.js +0 -2
  646. package/dist/node/column-views.ec0087a2.js.map +0 -1
  647. package/dist/node/column-views.eea80478.js +0 -2
  648. package/dist/node/column-views.eea80478.js.map +0 -1
  649. package/dist/node/column-views.f2e82230.js +0 -2
  650. package/dist/node/column-views.f2e82230.js.map +0 -1
  651. package/dist/node/column-views.fb3ed7cc.js +0 -2
  652. package/dist/node/column-views.fb3ed7cc.js.map +0 -1
  653. package/dist/node/column-views.fcb243a2.js +0 -2
  654. package/dist/node/column-views.fcb243a2.js.map +0 -1
  655. package/dist/node/column-views.fea32686.js +0 -2
  656. package/dist/node/column-views.fea32686.js.map +0 -1
  657. package/dist/node/index.js +0 -2
  658. package/dist/node/index.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ import { useAPIResult } from "@macrostrat/ui-components";
2
+ function useDetritalMeasurements(columnArgs) {
3
+ const params = {
4
+ ...columnArgs,
5
+ measure_phase: "zircon",
6
+ response: "long",
7
+ show_values: true,
8
+ // Other isotope systems are organized separately
9
+ measurement: "207Pb-206Pb"
10
+ };
11
+ const res = useAPIResult(
12
+ "/measurements",
13
+ params,
14
+ columnArgs
15
+ );
16
+ if (res == null) return null;
17
+ return res;
18
+ }
19
+ export {
20
+ useDetritalMeasurements
21
+ };
22
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../src/facets/detrital-zircon/provider.ts"],"sourcesContent":["import { group } from \"d3-array\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\n\nexport interface MeasurementInfo {\n measurement_id: number;\n measuremeta_id: number;\n measurement: string;\n measure_units: string;\n measure_phase: string;\n method: string;\n n: number;\n ref_id: number;\n sample_name: string;\n geo_unit: string;\n samp_lith: string;\n samp_lith_id: number;\n samp_desc: string;\n samp_age: string;\n lat: number;\n lng: number;\n unit_id: number;\n unit_rel_pos?: any;\n col_id: number;\n strat_name_id: number;\n match_basis: string;\n ref: string;\n measure_value: number[];\n measure_error: number[];\n measure_position: any[];\n measure_n: number[];\n sample_no: string[];\n error_units: string;\n}\n\nexport function useDetritalMeasurements(columnArgs) {\n const params = {\n ...columnArgs,\n measure_phase: \"zircon\",\n response: \"long\",\n show_values: true,\n // Other isotope systems are organized separately\n measurement: \"207Pb-206Pb\",\n };\n const res: MeasurementInfo[] = useAPIResult(\n \"/measurements\",\n params,\n columnArgs,\n );\n if (res == null) return null;\n return res;\n}\n"],"names":[],"mappings":";AAkCO,SAAS,wBAAwB,YAAY;AAClD,QAAM,SAAS;AAAA,IACb,GAAG;AAAA,IACH,eAAe;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA;AAAA,IAEb,aAAa;AAAA,EAAA;AAEf,QAAM,MAAyB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF,MAAI,OAAO,KAAM,QAAO;AACxB,SAAO;AACT;"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const h$1 = require("@macrostrat/hyper");
4
+ const provider = require("./provider.cjs");
5
+ const columnComponents = require("@macrostrat/column-components");
6
+ const taxonRanges_module = require("./taxon-ranges.module.sass.cjs");
7
+ const d3Scale = require("d3-scale");
8
+ const base = require("../measurements/base.cjs");
9
+ const store = require("../../data-provider/store.cjs");
10
+ const utils = require("../../prepare-units/utils.cjs");
11
+ const h = h$1.styled(taxonRanges_module.default);
12
+ function PBDBFossilsColumn({
13
+ columnID,
14
+ type = provider.FossilDataType.Collections
15
+ }) {
16
+ const data = provider.useFossilData(columnID, type);
17
+ const { axisType, units } = store.useMacrostratColumnData();
18
+ const scale = store.useCompositeScale();
19
+ if (data == null || units == null || scale == null) return null;
20
+ const data1 = preparePBDBData(data, units, scale, axisType);
21
+ return h(base.BaseMeasurementsColumn, {
22
+ data: data1,
23
+ noteComponent: FossilInfo,
24
+ focusedNoteComponent: FossilInfo,
25
+ className: "fossil-collections"
26
+ });
27
+ }
28
+ function FossilInfo(props) {
29
+ const { note, maxItems, focused = false } = props;
30
+ const { data } = note;
31
+ data.sort((a, b) => {
32
+ const nameA = a.best_name ?? a.cltn_name ?? "";
33
+ const nameB = b.best_name ?? b.cltn_name ?? "";
34
+ return nameA.localeCompare(nameB);
35
+ });
36
+ return h(base.TruncatedList, {
37
+ data,
38
+ className: "fossil-collections",
39
+ itemRenderer: PBDBCollectionLink,
40
+ maxItems: focused ? Infinity : maxItems ?? 5
41
+ });
42
+ }
43
+ function PBDBCollectionLink({
44
+ data
45
+ }) {
46
+ return h(
47
+ "a.link-id",
48
+ {
49
+ href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,
50
+ target: "_blank",
51
+ onClick(e) {
52
+ e.stopPropagation();
53
+ }
54
+ },
55
+ data.best_name ?? data.cltn_name
56
+ );
57
+ }
58
+ function preparePBDBData(data, units, scale, axisType, options) {
59
+ const { groupCloseNotes = true } = {};
60
+ const groupDistance = typeof groupCloseNotes === "number" ? groupCloseNotes : 10;
61
+ const dataMap = /* @__PURE__ */ new Map();
62
+ for (const d of data) {
63
+ const range = getHeightRangeForPBDBEntity(d, units, axisType);
64
+ if (range == null) continue;
65
+ const { height, top_height } = range;
66
+ let key = `${height}`;
67
+ if (top_height != null) {
68
+ key += `-${top_height}`;
69
+ }
70
+ if (!dataMap.has(key)) {
71
+ dataMap.set(key, {
72
+ height,
73
+ top_height: top_height ?? height,
74
+ data: [],
75
+ id: key
76
+ });
77
+ }
78
+ dataMap.get(key).data.push(d);
79
+ }
80
+ return base.groupNotesByPixelDistance(
81
+ Array.from(dataMap.values()),
82
+ scale,
83
+ axisType,
84
+ groupDistance
85
+ );
86
+ }
87
+ function getHeightRangeForPBDBEntity(d, units, axisType) {
88
+ let height = null;
89
+ if (d.slb != null && d.slu == "mbsf") {
90
+ height = Number(d.slb);
91
+ if (axisType === columnComponents.ColumnAxisType.DEPTH) {
92
+ return { height };
93
+ }
94
+ }
95
+ if (d.unit_id == null) return null;
96
+ if (height != null) {
97
+ const unit = units.find((u) => u.unit_id === d.unit_id);
98
+ if (unit == null) return null;
99
+ const relHeight = getRelativePositionInUnit(
100
+ height,
101
+ unit,
102
+ columnComponents.ColumnAxisType.DEPTH
103
+ );
104
+ if (relHeight == null) return null;
105
+ height = utils.getPositionWithinUnit(relHeight, unit, axisType);
106
+ return { height };
107
+ }
108
+ return base.standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);
109
+ }
110
+ function getRelativePositionInUnit(pos, unit, axisType) {
111
+ const heights = utils.getUnitHeightRange(unit, axisType, false);
112
+ const scale = d3Scale.scaleLinear(heights).domain([0, 1]);
113
+ const relPos = scale.invert(pos);
114
+ if (relPos < 0 || relPos > 1) return null;
115
+ return relPos;
116
+ }
117
+ exports.FossilDataType = provider.FossilDataType;
118
+ exports.useFossilData = provider.useFossilData;
119
+ exports.PBDBFossilsColumn = PBDBFossilsColumn;
120
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/facets/fossils/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["hyper","styles","FossilDataType","useFossilData","useMacrostratColumnData","useCompositeScale","BaseMeasurementsColumn","TruncatedList","groupNotesByPixelDistance","ColumnAxisType","getPositionWithinUnit","standardizeMeasurementHeight","getUnitHeightRange","scaleLinear"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { FossilDataType, PBDBCollection, PBDBEntity, PBDBOccurrence, useFossilData } from './provider';
2
+ export { FossilDataType, type PBDBCollection, type PBDBEntity, type PBDBOccurrence, useFossilData, };
3
+ export * from './taxon-ranges';
4
+ export declare function PBDBFossilsColumn({ columnID, type, }: {
5
+ columnID: number;
6
+ type: FossilDataType;
7
+ }): import('react').FunctionComponentElement<import('..').BaseMeasurementsColumnProps<any>>;
@@ -0,0 +1,120 @@
1
+ import h$1 from "@macrostrat/hyper";
2
+ import { useFossilData, FossilDataType } from "./provider.js";
3
+ import { ColumnAxisType } from "@macrostrat/column-components";
4
+ import styles from "./taxon-ranges.module.sass.js";
5
+ import { scaleLinear } from "d3-scale";
6
+ import { BaseMeasurementsColumn, groupNotesByPixelDistance, TruncatedList, standardizeMeasurementHeight } from "../measurements/base.js";
7
+ import { useMacrostratColumnData, useCompositeScale } from "../../data-provider/store.js";
8
+ import { getPositionWithinUnit, getUnitHeightRange } from "../../prepare-units/utils.js";
9
+ const h = h$1.styled(styles);
10
+ function PBDBFossilsColumn({
11
+ columnID,
12
+ type = FossilDataType.Collections
13
+ }) {
14
+ const data = useFossilData(columnID, type);
15
+ const { axisType, units } = useMacrostratColumnData();
16
+ const scale = useCompositeScale();
17
+ if (data == null || units == null || scale == null) return null;
18
+ const data1 = preparePBDBData(data, units, scale, axisType);
19
+ return h(BaseMeasurementsColumn, {
20
+ data: data1,
21
+ noteComponent: FossilInfo,
22
+ focusedNoteComponent: FossilInfo,
23
+ className: "fossil-collections"
24
+ });
25
+ }
26
+ function FossilInfo(props) {
27
+ const { note, maxItems, focused = false } = props;
28
+ const { data } = note;
29
+ data.sort((a, b) => {
30
+ const nameA = a.best_name ?? a.cltn_name ?? "";
31
+ const nameB = b.best_name ?? b.cltn_name ?? "";
32
+ return nameA.localeCompare(nameB);
33
+ });
34
+ return h(TruncatedList, {
35
+ data,
36
+ className: "fossil-collections",
37
+ itemRenderer: PBDBCollectionLink,
38
+ maxItems: focused ? Infinity : maxItems ?? 5
39
+ });
40
+ }
41
+ function PBDBCollectionLink({
42
+ data
43
+ }) {
44
+ return h(
45
+ "a.link-id",
46
+ {
47
+ href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,
48
+ target: "_blank",
49
+ onClick(e) {
50
+ e.stopPropagation();
51
+ }
52
+ },
53
+ data.best_name ?? data.cltn_name
54
+ );
55
+ }
56
+ function preparePBDBData(data, units, scale, axisType, options) {
57
+ const { groupCloseNotes = true } = {};
58
+ const groupDistance = typeof groupCloseNotes === "number" ? groupCloseNotes : 10;
59
+ const dataMap = /* @__PURE__ */ new Map();
60
+ for (const d of data) {
61
+ const range = getHeightRangeForPBDBEntity(d, units, axisType);
62
+ if (range == null) continue;
63
+ const { height, top_height } = range;
64
+ let key = `${height}`;
65
+ if (top_height != null) {
66
+ key += `-${top_height}`;
67
+ }
68
+ if (!dataMap.has(key)) {
69
+ dataMap.set(key, {
70
+ height,
71
+ top_height: top_height ?? height,
72
+ data: [],
73
+ id: key
74
+ });
75
+ }
76
+ dataMap.get(key).data.push(d);
77
+ }
78
+ return groupNotesByPixelDistance(
79
+ Array.from(dataMap.values()),
80
+ scale,
81
+ axisType,
82
+ groupDistance
83
+ );
84
+ }
85
+ function getHeightRangeForPBDBEntity(d, units, axisType) {
86
+ let height = null;
87
+ if (d.slb != null && d.slu == "mbsf") {
88
+ height = Number(d.slb);
89
+ if (axisType === ColumnAxisType.DEPTH) {
90
+ return { height };
91
+ }
92
+ }
93
+ if (d.unit_id == null) return null;
94
+ if (height != null) {
95
+ const unit = units.find((u) => u.unit_id === d.unit_id);
96
+ if (unit == null) return null;
97
+ const relHeight = getRelativePositionInUnit(
98
+ height,
99
+ unit,
100
+ ColumnAxisType.DEPTH
101
+ );
102
+ if (relHeight == null) return null;
103
+ height = getPositionWithinUnit(relHeight, unit, axisType);
104
+ return { height };
105
+ }
106
+ return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);
107
+ }
108
+ function getRelativePositionInUnit(pos, unit, axisType) {
109
+ const heights = getUnitHeightRange(unit, axisType, false);
110
+ const scale = scaleLinear(heights).domain([0, 1]);
111
+ const relPos = scale.invert(pos);
112
+ if (relPos < 0 || relPos > 1) return null;
113
+ return relPos;
114
+ }
115
+ export {
116
+ FossilDataType,
117
+ PBDBFossilsColumn,
118
+ useFossilData
119
+ };
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/facets/fossils/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["hyper"],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const uiComponents = require("@macrostrat/ui-components");
4
+ const pbdbAPIBase = "https://paleobiodb.org/data1.2";
5
+ var FossilDataType = /* @__PURE__ */ ((FossilDataType2) => {
6
+ FossilDataType2["Occurrences"] = "occs";
7
+ FossilDataType2["Collections"] = "colls";
8
+ return FossilDataType2;
9
+ })(FossilDataType || {});
10
+ function useFossilData(col_id, type = "colls") {
11
+ return uiComponents.useAsyncMemo(async () => {
12
+ if (col_id == null) return null;
13
+ return await fetchFossilData(col_id, type);
14
+ }, [col_id, type]);
15
+ }
16
+ async function fetchMacrostratFossilData(col_id, type) {
17
+ if (type !== "colls") {
18
+ return [];
19
+ }
20
+ const resp = await fetch(
21
+ `https://macrostrat.org/api/fossils?col_id=${col_id}`
22
+ );
23
+ const res = await resp.json();
24
+ return res.success.data;
25
+ }
26
+ async function fetchPDBDFossilData(col_id, type) {
27
+ const resp = await fetch(
28
+ pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`
29
+ );
30
+ const res = await resp.json();
31
+ return res.records.map(
32
+ type == "colls" ? createMacrostratCollection : preprocessOccurrence
33
+ );
34
+ }
35
+ async function fetchFossilData(colID, type) {
36
+ const [macrostratData, pbdbData] = await Promise.all([
37
+ fetchMacrostratFossilData(colID, type),
38
+ fetchPDBDFossilData(colID, type)
39
+ ]);
40
+ return [...macrostratData, ...pbdbData];
41
+ }
42
+ function preprocessOccurrence(d) {
43
+ if (d.msu == null || d.msc == null) {
44
+ return d;
45
+ }
46
+ const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
47
+ const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
48
+ const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
49
+ const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
50
+ return {
51
+ ...d,
52
+ unit_id,
53
+ col_id,
54
+ taxon_name: d.tna,
55
+ best_name: d.idn ?? d.tna,
56
+ occ_id,
57
+ cltn_id,
58
+ cltn_name: d.nam
59
+ };
60
+ }
61
+ function createMacrostratCollection(d) {
62
+ let unit_id = null;
63
+ let col_id = null;
64
+ if (d.msu != null) {
65
+ unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
66
+ }
67
+ if (d.msc != null) {
68
+ col_id = parseInt(d.msc.replace(/^\w+:/, ""));
69
+ }
70
+ let taxon_name = d.tna;
71
+ let occ_id = null;
72
+ if (d.oid != null && d.oid.startsWith("occ:")) {
73
+ occ_id = parseInt(d.oid.replace(/^occ:/, ""));
74
+ }
75
+ if (d.idn != null) {
76
+ taxon_name = d.idn;
77
+ }
78
+ let cltn_id = d.cltn_id;
79
+ if (d.oid != null && d.oid.startsWith("col:")) {
80
+ cltn_id = parseInt(d.oid.replace(/^col:/, ""));
81
+ } else if (d.cid != null && d.cid.startsWith("col:")) {
82
+ cltn_id = parseInt(d.cid.replace(/^col:/, ""));
83
+ }
84
+ return {
85
+ ...d,
86
+ unit_id,
87
+ col_id,
88
+ taxon_name,
89
+ occ_id,
90
+ cltn_id,
91
+ cltn_name: d.nam,
92
+ t_age: d.t_age,
93
+ b_age: d.b_age
94
+ };
95
+ }
96
+ exports.FossilDataType = FossilDataType;
97
+ exports.fetchFossilData = fetchFossilData;
98
+ exports.useFossilData = useFossilData;
99
+ //# sourceMappingURL=provider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.cjs","sources":["../../../src/facets/fossils/provider.ts"],"sourcesContent":["import { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nconst pbdbAPIBase = \"https://paleobiodb.org/data1.2\";\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport interface PBDBEntity {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n // For eODP, slb/slu are used to store the heights of fossil locations found in measured sections.\n // They may have a more general set of uses as well but these are not currently explored.\n slb?: string; // The local bed in which the fossil was found\n slu?: string; // The unit of measurement used to designate the local bed\n}\n\nexport interface PBDBCollection extends PBDBEntity {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBEntity {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData<T extends PBDBEntity>(\n col_id: number,\n type = FossilDataType.Collections,\n): T[] {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nasync function fetchPDBDFossilData<T extends PBDBEntity>(\n col_id: number,\n type: FossilDataType,\n): Promise<T[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n // Note: show=rank does not work on training PBDB server\n const resp = await fetch(\n pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nexport async function fetchFossilData<T extends PBDBEntity>(\n colID: number,\n type: FossilDataType,\n): Promise<T[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n return [...macrostratData, ...pbdbData];\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n if (d.msu == null || d.msc == null) {\n return d;\n }\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":["FossilDataType","useAsyncMemo"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare enum FossilDataType {
2
+ Occurrences = "occs",
3
+ Collections = "colls"
4
+ }
5
+ export interface PBDBEntity {
6
+ unit_id: number;
7
+ col_id: number;
8
+ cltn_id: number;
9
+ slb?: string;
10
+ slu?: string;
11
+ }
12
+ export interface PBDBCollection extends PBDBEntity {
13
+ cltn_name: string;
14
+ pbdb_occs: number;
15
+ t_age: number;
16
+ b_age: number;
17
+ [key: string]: any;
18
+ }
19
+ export interface PBDBOccurrence extends PBDBEntity {
20
+ occ_id: number;
21
+ cltn_id: number;
22
+ taxon_name: string;
23
+ best_name: string;
24
+ [key: string]: any;
25
+ }
26
+ export declare function useFossilData<T extends PBDBEntity>(col_id: number, type?: FossilDataType): T[];
27
+ export declare function fetchFossilData(colID: number, type: FossilDataType.Collections): Promise<PBDBCollection[]>;
28
+ export declare function fetchFossilData(colID: number, type: FossilDataType.Occurrences): Promise<PBDBOccurrence[]>;
29
+ export declare function fetchFossilData<T extends PBDBEntity>(colID: number, type: FossilDataType): Promise<T[]>;
@@ -0,0 +1,99 @@
1
+ import { useAsyncMemo } from "@macrostrat/ui-components";
2
+ const pbdbAPIBase = "https://paleobiodb.org/data1.2";
3
+ var FossilDataType = /* @__PURE__ */ ((FossilDataType2) => {
4
+ FossilDataType2["Occurrences"] = "occs";
5
+ FossilDataType2["Collections"] = "colls";
6
+ return FossilDataType2;
7
+ })(FossilDataType || {});
8
+ function useFossilData(col_id, type = "colls") {
9
+ return useAsyncMemo(async () => {
10
+ if (col_id == null) return null;
11
+ return await fetchFossilData(col_id, type);
12
+ }, [col_id, type]);
13
+ }
14
+ async function fetchMacrostratFossilData(col_id, type) {
15
+ if (type !== "colls") {
16
+ return [];
17
+ }
18
+ const resp = await fetch(
19
+ `https://macrostrat.org/api/fossils?col_id=${col_id}`
20
+ );
21
+ const res = await resp.json();
22
+ return res.success.data;
23
+ }
24
+ async function fetchPDBDFossilData(col_id, type) {
25
+ const resp = await fetch(
26
+ pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`
27
+ );
28
+ const res = await resp.json();
29
+ return res.records.map(
30
+ type == "colls" ? createMacrostratCollection : preprocessOccurrence
31
+ );
32
+ }
33
+ async function fetchFossilData(colID, type) {
34
+ const [macrostratData, pbdbData] = await Promise.all([
35
+ fetchMacrostratFossilData(colID, type),
36
+ fetchPDBDFossilData(colID, type)
37
+ ]);
38
+ return [...macrostratData, ...pbdbData];
39
+ }
40
+ function preprocessOccurrence(d) {
41
+ if (d.msu == null || d.msc == null) {
42
+ return d;
43
+ }
44
+ const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
45
+ const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
46
+ const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
47
+ const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
48
+ return {
49
+ ...d,
50
+ unit_id,
51
+ col_id,
52
+ taxon_name: d.tna,
53
+ best_name: d.idn ?? d.tna,
54
+ occ_id,
55
+ cltn_id,
56
+ cltn_name: d.nam
57
+ };
58
+ }
59
+ function createMacrostratCollection(d) {
60
+ let unit_id = null;
61
+ let col_id = null;
62
+ if (d.msu != null) {
63
+ unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
64
+ }
65
+ if (d.msc != null) {
66
+ col_id = parseInt(d.msc.replace(/^\w+:/, ""));
67
+ }
68
+ let taxon_name = d.tna;
69
+ let occ_id = null;
70
+ if (d.oid != null && d.oid.startsWith("occ:")) {
71
+ occ_id = parseInt(d.oid.replace(/^occ:/, ""));
72
+ }
73
+ if (d.idn != null) {
74
+ taxon_name = d.idn;
75
+ }
76
+ let cltn_id = d.cltn_id;
77
+ if (d.oid != null && d.oid.startsWith("col:")) {
78
+ cltn_id = parseInt(d.oid.replace(/^col:/, ""));
79
+ } else if (d.cid != null && d.cid.startsWith("col:")) {
80
+ cltn_id = parseInt(d.cid.replace(/^col:/, ""));
81
+ }
82
+ return {
83
+ ...d,
84
+ unit_id,
85
+ col_id,
86
+ taxon_name,
87
+ occ_id,
88
+ cltn_id,
89
+ cltn_name: d.nam,
90
+ t_age: d.t_age,
91
+ b_age: d.b_age
92
+ };
93
+ }
94
+ export {
95
+ FossilDataType,
96
+ fetchFossilData,
97
+ useFossilData
98
+ };
99
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sources":["../../../src/facets/fossils/provider.ts"],"sourcesContent":["import { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nconst pbdbAPIBase = \"https://paleobiodb.org/data1.2\";\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport interface PBDBEntity {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n // For eODP, slb/slu are used to store the heights of fossil locations found in measured sections.\n // They may have a more general set of uses as well but these are not currently explored.\n slb?: string; // The local bed in which the fossil was found\n slu?: string; // The unit of measurement used to designate the local bed\n}\n\nexport interface PBDBCollection extends PBDBEntity {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBEntity {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData<T extends PBDBEntity>(\n col_id: number,\n type = FossilDataType.Collections,\n): T[] {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nasync function fetchPDBDFossilData<T extends PBDBEntity>(\n col_id: number,\n type: FossilDataType,\n): Promise<T[]>;\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n // Note: show=rank does not work on training PBDB server\n const resp = await fetch(\n pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Collections,\n): Promise<PBDBCollection[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType.Occurrences,\n): Promise<PBDBOccurrence[]>;\nexport async function fetchFossilData<T extends PBDBEntity>(\n colID: number,\n type: FossilDataType,\n): Promise<T[]>;\nexport async function fetchFossilData(\n colID: number,\n type: FossilDataType,\n): Promise<PBDBEntity[]> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n return [...macrostratData, ...pbdbData];\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n if (d.msu == null || d.msc == null) {\n return d;\n }\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":["FossilDataType"],"mappings":"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"}