@macrostrat/column-views 2.4.4 → 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 (657) hide show
  1. package/CHANGELOG.md +5 -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/unit-details/popover.module.sass +3 -3
  317. package/dist/esm/column-views.006d5180.js +0 -97
  318. package/dist/esm/column-views.006d5180.js.map +0 -1
  319. package/dist/esm/column-views.052498a6.js +0 -93
  320. package/dist/esm/column-views.052498a6.js.map +0 -1
  321. package/dist/esm/column-views.079119f4.js +0 -17
  322. package/dist/esm/column-views.079119f4.js.map +0 -1
  323. package/dist/esm/column-views.0abf7e10.js +0 -67
  324. package/dist/esm/column-views.0abf7e10.js.map +0 -1
  325. package/dist/esm/column-views.0b3c0d18.js +0 -322
  326. package/dist/esm/column-views.0b3c0d18.js.map +0 -1
  327. package/dist/esm/column-views.0ed9da35.js +0 -141
  328. package/dist/esm/column-views.0ed9da35.js.map +0 -1
  329. package/dist/esm/column-views.0faf79a9.js +0 -142
  330. package/dist/esm/column-views.0faf79a9.js.map +0 -1
  331. package/dist/esm/column-views.16cc7a58.css +0 -37
  332. package/dist/esm/column-views.16cc7a58.css.map +0 -1
  333. package/dist/esm/column-views.17a70358.js +0 -16
  334. package/dist/esm/column-views.17a70358.js.map +0 -1
  335. package/dist/esm/column-views.19539293.js +0 -86
  336. package/dist/esm/column-views.19539293.js.map +0 -1
  337. package/dist/esm/column-views.1af3ec1f.js +0 -139
  338. package/dist/esm/column-views.1af3ec1f.js.map +0 -1
  339. package/dist/esm/column-views.1cd55918.js +0 -206
  340. package/dist/esm/column-views.1cd55918.js.map +0 -1
  341. package/dist/esm/column-views.22ec902b.js +0 -34
  342. package/dist/esm/column-views.22ec902b.js.map +0 -1
  343. package/dist/esm/column-views.2a0010a3.js +0 -15
  344. package/dist/esm/column-views.2a0010a3.js.map +0 -1
  345. package/dist/esm/column-views.2c45a7b5.js +0 -25
  346. package/dist/esm/column-views.2c45a7b5.js.map +0 -1
  347. package/dist/esm/column-views.321af3ae.css +0 -59
  348. package/dist/esm/column-views.321af3ae.css.map +0 -1
  349. package/dist/esm/column-views.334c3947.js +0 -75
  350. package/dist/esm/column-views.334c3947.js.map +0 -1
  351. package/dist/esm/column-views.33796541.js +0 -88
  352. package/dist/esm/column-views.33796541.js.map +0 -1
  353. package/dist/esm/column-views.337b40a2.js +0 -199
  354. package/dist/esm/column-views.337b40a2.js.map +0 -1
  355. package/dist/esm/column-views.338a7a83.css +0 -134
  356. package/dist/esm/column-views.338a7a83.css.map +0 -1
  357. package/dist/esm/column-views.33d35a44.js +0 -118
  358. package/dist/esm/column-views.33d35a44.js.map +0 -1
  359. package/dist/esm/column-views.3465c8ad.js +0 -16
  360. package/dist/esm/column-views.3465c8ad.js.map +0 -1
  361. package/dist/esm/column-views.362aae9a.js +0 -113
  362. package/dist/esm/column-views.362aae9a.js.map +0 -1
  363. package/dist/esm/column-views.3b972a9b.css +0 -4
  364. package/dist/esm/column-views.3b972a9b.css.map +0 -1
  365. package/dist/esm/column-views.3de4dc43.js +0 -66
  366. package/dist/esm/column-views.3de4dc43.js.map +0 -1
  367. package/dist/esm/column-views.40cd59b5.js +0 -13
  368. package/dist/esm/column-views.40cd59b5.js.map +0 -1
  369. package/dist/esm/column-views.4252a555.js +0 -248
  370. package/dist/esm/column-views.4252a555.js.map +0 -1
  371. package/dist/esm/column-views.45c70ba4.js +0 -38
  372. package/dist/esm/column-views.45c70ba4.js.map +0 -1
  373. package/dist/esm/column-views.47b7d9ca.js +0 -206
  374. package/dist/esm/column-views.47b7d9ca.js.map +0 -1
  375. package/dist/esm/column-views.47ca059d.js +0 -225
  376. package/dist/esm/column-views.47ca059d.js.map +0 -1
  377. package/dist/esm/column-views.4d374a35.js +0 -19
  378. package/dist/esm/column-views.4d374a35.js.map +0 -1
  379. package/dist/esm/column-views.54c1f382.css +0 -23
  380. package/dist/esm/column-views.54c1f382.css.map +0 -1
  381. package/dist/esm/column-views.562db43a.css +0 -148
  382. package/dist/esm/column-views.562db43a.css.map +0 -1
  383. package/dist/esm/column-views.5e1c216f.js +0 -180
  384. package/dist/esm/column-views.5e1c216f.js.map +0 -1
  385. package/dist/esm/column-views.60e97132.js +0 -20
  386. package/dist/esm/column-views.60e97132.js.map +0 -1
  387. package/dist/esm/column-views.636d6553.js +0 -343
  388. package/dist/esm/column-views.636d6553.js.map +0 -1
  389. package/dist/esm/column-views.64f6ddd3.js +0 -9
  390. package/dist/esm/column-views.64f6ddd3.js.map +0 -1
  391. package/dist/esm/column-views.6519a353.js +0 -9
  392. package/dist/esm/column-views.6519a353.js.map +0 -1
  393. package/dist/esm/column-views.67804ce5.js +0 -68
  394. package/dist/esm/column-views.6992ca88.js +0 -25
  395. package/dist/esm/column-views.6992ca88.js.map +0 -1
  396. package/dist/esm/column-views.6a954628.js +0 -70
  397. package/dist/esm/column-views.6a954628.js.map +0 -1
  398. package/dist/esm/column-views.6c670c13.css +0 -26
  399. package/dist/esm/column-views.6c670c13.css.map +0 -1
  400. package/dist/esm/column-views.6cff6659.js +0 -11
  401. package/dist/esm/column-views.6cff6659.js.map +0 -1
  402. package/dist/esm/column-views.6d6b73b4.js +0 -55
  403. package/dist/esm/column-views.6d6b73b4.js.map +0 -1
  404. package/dist/esm/column-views.6f9511d1.css +0 -25
  405. package/dist/esm/column-views.6f9511d1.css.map +0 -1
  406. package/dist/esm/column-views.6fff7602.js +0 -94
  407. package/dist/esm/column-views.6fff7602.js.map +0 -1
  408. package/dist/esm/column-views.70387120.js +0 -9
  409. package/dist/esm/column-views.70387120.js.map +0 -1
  410. package/dist/esm/column-views.708140ab.css +0 -36
  411. package/dist/esm/column-views.708140ab.css.map +0 -1
  412. package/dist/esm/column-views.74837922.js +0 -112
  413. package/dist/esm/column-views.74837922.js.map +0 -1
  414. package/dist/esm/column-views.76fb9948.js +0 -169
  415. package/dist/esm/column-views.76fb9948.js.map +0 -1
  416. package/dist/esm/column-views.7bfb4318.js +0 -161
  417. package/dist/esm/column-views.7bfb4318.js.map +0 -1
  418. package/dist/esm/column-views.7dc53f1b.js +0 -168
  419. package/dist/esm/column-views.7dc53f1b.js.map +0 -1
  420. package/dist/esm/column-views.85df21ec.js +0 -567
  421. package/dist/esm/column-views.85df21ec.js.map +0 -1
  422. package/dist/esm/column-views.87c589b7.js +0 -72
  423. package/dist/esm/column-views.87c589b7.js.map +0 -1
  424. package/dist/esm/column-views.8da2b857.js +0 -81
  425. package/dist/esm/column-views.8da2b857.js.map +0 -1
  426. package/dist/esm/column-views.8fb37de7.js +0 -9
  427. package/dist/esm/column-views.8fb37de7.js.map +0 -1
  428. package/dist/esm/column-views.9512c5d5.js +0 -240
  429. package/dist/esm/column-views.9512c5d5.js.map +0 -1
  430. package/dist/esm/column-views.9905b91c.js +0 -11
  431. package/dist/esm/column-views.9905b91c.js.map +0 -1
  432. package/dist/esm/column-views.9b77388d.js +0 -41
  433. package/dist/esm/column-views.9b77388d.js.map +0 -1
  434. package/dist/esm/column-views.a4f394fe.js +0 -127
  435. package/dist/esm/column-views.a4f394fe.js.map +0 -1
  436. package/dist/esm/column-views.a7c5ae16.js +0 -25
  437. package/dist/esm/column-views.a7c5ae16.js.map +0 -1
  438. package/dist/esm/column-views.aa9ede4d.js +0 -206
  439. package/dist/esm/column-views.aa9ede4d.js.map +0 -1
  440. package/dist/esm/column-views.b7cf0da2.js +0 -60
  441. package/dist/esm/column-views.b7cf0da2.js.map +0 -1
  442. package/dist/esm/column-views.beb54e95.js +0 -39
  443. package/dist/esm/column-views.beb54e95.js.map +0 -1
  444. package/dist/esm/column-views.c47dba5f.js +0 -9
  445. package/dist/esm/column-views.c47dba5f.js.map +0 -1
  446. package/dist/esm/column-views.c750a6df.js +0 -9
  447. package/dist/esm/column-views.c750a6df.js.map +0 -1
  448. package/dist/esm/column-views.cb1cc9f2.js +0 -134
  449. package/dist/esm/column-views.cb1cc9f2.js.map +0 -1
  450. package/dist/esm/column-views.cb6fc808.css +0 -54
  451. package/dist/esm/column-views.cb6fc808.css.map +0 -1
  452. package/dist/esm/column-views.cc733361.js +0 -55
  453. package/dist/esm/column-views.cc733361.js.map +0 -1
  454. package/dist/esm/column-views.ce000969.js +0 -187
  455. package/dist/esm/column-views.ce000969.js.map +0 -1
  456. package/dist/esm/column-views.d5e788e8.js +0 -31
  457. package/dist/esm/column-views.d5e788e8.js.map +0 -1
  458. package/dist/esm/column-views.d7740949.js +0 -152
  459. package/dist/esm/column-views.d7740949.js.map +0 -1
  460. package/dist/esm/column-views.d7e6bf67.js +0 -70
  461. package/dist/esm/column-views.d7e6bf67.js.map +0 -1
  462. package/dist/esm/column-views.dac0a3bb.js +0 -149
  463. package/dist/esm/column-views.dac0a3bb.js.map +0 -1
  464. package/dist/esm/column-views.dc42f5d0.js +0 -48
  465. package/dist/esm/column-views.dc42f5d0.js.map +0 -1
  466. package/dist/esm/column-views.e13a0a76.js +0 -138
  467. package/dist/esm/column-views.e13a0a76.js.map +0 -1
  468. package/dist/esm/column-views.e40b8bfb.css +0 -14
  469. package/dist/esm/column-views.e40b8bfb.css.map +0 -1
  470. package/dist/esm/column-views.e93478c3.css +0 -194
  471. package/dist/esm/column-views.e93478c3.css.map +0 -1
  472. package/dist/esm/column-views.ea08f667.js +0 -218
  473. package/dist/esm/column-views.ea08f667.js.map +0 -1
  474. package/dist/esm/column-views.ebb5f280.js +0 -13
  475. package/dist/esm/column-views.ebb5f280.js.map +0 -1
  476. package/dist/esm/column-views.edf77621.js +0 -22
  477. package/dist/esm/column-views.edf77621.js.map +0 -1
  478. package/dist/esm/column-views.f9dab157.js +0 -3
  479. package/dist/esm/column-views.f9dab157.js.map +0 -1
  480. package/dist/esm/column-views.fcf25ec6.js +0 -76
  481. package/dist/esm/column-views.fcf25ec6.js.map +0 -1
  482. package/dist/esm/column-views.fe42d2fc.js +0 -134
  483. package/dist/esm/column-views.fe42d2fc.js.map +0 -1
  484. package/dist/esm/index.d.ts +0 -1008
  485. package/dist/esm/index.d.ts.map +0 -1
  486. package/dist/esm/index.js +0 -27
  487. package/dist/esm/index.js.map +0 -1
  488. package/dist/node/column-views.012fa10c.js +0 -2
  489. package/dist/node/column-views.012fa10c.js.map +0 -1
  490. package/dist/node/column-views.048fdcaf.js +0 -2
  491. package/dist/node/column-views.048fdcaf.js.map +0 -1
  492. package/dist/node/column-views.04a72b35.js +0 -2
  493. package/dist/node/column-views.04a72b35.js.map +0 -1
  494. package/dist/node/column-views.0840b115.css +0 -2
  495. package/dist/node/column-views.0840b115.css.map +0 -1
  496. package/dist/node/column-views.0af5912d.js +0 -2
  497. package/dist/node/column-views.0af5912d.js.map +0 -1
  498. package/dist/node/column-views.0bd15ee4.js +0 -2
  499. package/dist/node/column-views.0bd15ee4.js.map +0 -1
  500. package/dist/node/column-views.0d254fd3.js +0 -2
  501. package/dist/node/column-views.0d254fd3.js.map +0 -1
  502. package/dist/node/column-views.109cb0c8.js +0 -2
  503. package/dist/node/column-views.109cb0c8.js.map +0 -1
  504. package/dist/node/column-views.1261be59.js +0 -2
  505. package/dist/node/column-views.1261be59.js.map +0 -1
  506. package/dist/node/column-views.133855e6.js +0 -2
  507. package/dist/node/column-views.133855e6.js.map +0 -1
  508. package/dist/node/column-views.15b5cecc.js +0 -2
  509. package/dist/node/column-views.15b5cecc.js.map +0 -1
  510. package/dist/node/column-views.183745c0.js +0 -2
  511. package/dist/node/column-views.183745c0.js.map +0 -1
  512. package/dist/node/column-views.2e2158f5.js +0 -2
  513. package/dist/node/column-views.2e2158f5.js.map +0 -1
  514. package/dist/node/column-views.306acd3f.js +0 -2
  515. package/dist/node/column-views.306acd3f.js.map +0 -1
  516. package/dist/node/column-views.31153f29.js +0 -2
  517. package/dist/node/column-views.31153f29.js.map +0 -1
  518. package/dist/node/column-views.31da008b.js +0 -2
  519. package/dist/node/column-views.31da008b.js.map +0 -1
  520. package/dist/node/column-views.3a079e34.css +0 -2
  521. package/dist/node/column-views.3a079e34.css.map +0 -1
  522. package/dist/node/column-views.40e758b3.js +0 -2
  523. package/dist/node/column-views.40e758b3.js.map +0 -1
  524. package/dist/node/column-views.41876859.js +0 -2
  525. package/dist/node/column-views.41876859.js.map +0 -1
  526. package/dist/node/column-views.4a28d695.js +0 -2
  527. package/dist/node/column-views.4a28d695.js.map +0 -1
  528. package/dist/node/column-views.4ec769a6.js +0 -2
  529. package/dist/node/column-views.4ec769a6.js.map +0 -1
  530. package/dist/node/column-views.50a992d3.css +0 -2
  531. package/dist/node/column-views.50a992d3.css.map +0 -1
  532. package/dist/node/column-views.51fbed89.js +0 -2
  533. package/dist/node/column-views.51fbed89.js.map +0 -1
  534. package/dist/node/column-views.5950c8eb.js +0 -2
  535. package/dist/node/column-views.5950c8eb.js.map +0 -1
  536. package/dist/node/column-views.5987bc26.js +0 -2
  537. package/dist/node/column-views.5987bc26.js.map +0 -1
  538. package/dist/node/column-views.5a9331a9.js +0 -2
  539. package/dist/node/column-views.5a9331a9.js.map +0 -1
  540. package/dist/node/column-views.5bb858c9.js +0 -2
  541. package/dist/node/column-views.5bb858c9.js.map +0 -1
  542. package/dist/node/column-views.5c1b0eeb.css +0 -2
  543. package/dist/node/column-views.5c1b0eeb.css.map +0 -1
  544. package/dist/node/column-views.5cbada24.js +0 -2
  545. package/dist/node/column-views.5cbada24.js.map +0 -1
  546. package/dist/node/column-views.5fcd2be6.js +0 -2
  547. package/dist/node/column-views.5fcd2be6.js.map +0 -1
  548. package/dist/node/column-views.672b683c.js +0 -2
  549. package/dist/node/column-views.672b683c.js.map +0 -1
  550. package/dist/node/column-views.6a0a35e7.js +0 -2
  551. package/dist/node/column-views.6a0a35e7.js.map +0 -1
  552. package/dist/node/column-views.6a4c2100.css +0 -2
  553. package/dist/node/column-views.6a4c2100.css.map +0 -1
  554. package/dist/node/column-views.6a9da051.js +0 -2
  555. package/dist/node/column-views.6a9da051.js.map +0 -1
  556. package/dist/node/column-views.6bba8c57.js +0 -2
  557. package/dist/node/column-views.6bba8c57.js.map +0 -1
  558. package/dist/node/column-views.75ba0464.css +0 -2
  559. package/dist/node/column-views.75ba0464.css.map +0 -1
  560. package/dist/node/column-views.78b2d234.js +0 -2
  561. package/dist/node/column-views.78b2d234.js.map +0 -1
  562. package/dist/node/column-views.7b6e7d82.js +0 -2
  563. package/dist/node/column-views.7b6e7d82.js.map +0 -1
  564. package/dist/node/column-views.7b9bd06e.css +0 -2
  565. package/dist/node/column-views.7b9bd06e.css.map +0 -1
  566. package/dist/node/column-views.7d45bbeb.js +0 -2
  567. package/dist/node/column-views.7d45bbeb.js.map +0 -1
  568. package/dist/node/column-views.7f9c7448.js +0 -2
  569. package/dist/node/column-views.7f9c7448.js.map +0 -1
  570. package/dist/node/column-views.82cf7c0d.js +0 -2
  571. package/dist/node/column-views.82cf7c0d.js.map +0 -1
  572. package/dist/node/column-views.869c7199.js +0 -2
  573. package/dist/node/column-views.869c7199.js.map +0 -1
  574. package/dist/node/column-views.8bee789c.js +0 -2
  575. package/dist/node/column-views.8bee789c.js.map +0 -1
  576. package/dist/node/column-views.90c36c0b.js +0 -2
  577. package/dist/node/column-views.90c36c0b.js.map +0 -1
  578. package/dist/node/column-views.951e3e9a.js +0 -2
  579. package/dist/node/column-views.951e3e9a.js.map +0 -1
  580. package/dist/node/column-views.95411f1b.js +0 -2
  581. package/dist/node/column-views.95411f1b.js.map +0 -1
  582. package/dist/node/column-views.9cb13e51.css +0 -2
  583. package/dist/node/column-views.9cb13e51.css.map +0 -1
  584. package/dist/node/column-views.a0969fc8.js +0 -2
  585. package/dist/node/column-views.a0969fc8.js.map +0 -1
  586. package/dist/node/column-views.a2476e39.js +0 -2
  587. package/dist/node/column-views.a2476e39.js.map +0 -1
  588. package/dist/node/column-views.a8f5ee28.js +0 -2
  589. package/dist/node/column-views.a8f5ee28.js.map +0 -1
  590. package/dist/node/column-views.ad60c02f.js +0 -2
  591. package/dist/node/column-views.ad60c02f.js.map +0 -1
  592. package/dist/node/column-views.add5e42b.js +0 -2
  593. package/dist/node/column-views.add5e42b.js.map +0 -1
  594. package/dist/node/column-views.b169b4b5.css +0 -2
  595. package/dist/node/column-views.b169b4b5.css.map +0 -1
  596. package/dist/node/column-views.b2e5f823.js +0 -2
  597. package/dist/node/column-views.b2e5f823.js.map +0 -1
  598. package/dist/node/column-views.b57e5e6e.js +0 -2
  599. package/dist/node/column-views.b57e5e6e.js.map +0 -1
  600. package/dist/node/column-views.b762c9a8.js +0 -2
  601. package/dist/node/column-views.b762c9a8.js.map +0 -1
  602. package/dist/node/column-views.ba9108fe.js +0 -2
  603. package/dist/node/column-views.ba9108fe.js.map +0 -1
  604. package/dist/node/column-views.c16a19fb.js +0 -2
  605. package/dist/node/column-views.c16a19fb.js.map +0 -1
  606. package/dist/node/column-views.c3097d9a.js +0 -2
  607. package/dist/node/column-views.c3097d9a.js.map +0 -1
  608. package/dist/node/column-views.c4c15e2b.js +0 -2
  609. package/dist/node/column-views.c4c15e2b.js.map +0 -1
  610. package/dist/node/column-views.c651b684.js +0 -2
  611. package/dist/node/column-views.c651b684.js.map +0 -1
  612. package/dist/node/column-views.c968a185.css +0 -2
  613. package/dist/node/column-views.c968a185.css.map +0 -1
  614. package/dist/node/column-views.ccfb9afb.css +0 -2
  615. package/dist/node/column-views.ccfb9afb.css.map +0 -1
  616. package/dist/node/column-views.cdcce702.js +0 -2
  617. package/dist/node/column-views.cdcce702.js.map +0 -1
  618. package/dist/node/column-views.cf41a6d7.js +0 -2
  619. package/dist/node/column-views.cf41a6d7.js.map +0 -1
  620. package/dist/node/column-views.d22bf15c.js +0 -2
  621. package/dist/node/column-views.d22bf15c.js.map +0 -1
  622. package/dist/node/column-views.d737de1e.js +0 -2
  623. package/dist/node/column-views.d737de1e.js.map +0 -1
  624. package/dist/node/column-views.da902c44.js +0 -2
  625. package/dist/node/column-views.da902c44.js.map +0 -1
  626. package/dist/node/column-views.db3377d8.js +0 -2
  627. package/dist/node/column-views.db3377d8.js.map +0 -1
  628. package/dist/node/column-views.dbb4a46b.js +0 -2
  629. package/dist/node/column-views.dbb4a46b.js.map +0 -1
  630. package/dist/node/column-views.ddc6184e.css +0 -2
  631. package/dist/node/column-views.ddc6184e.css.map +0 -1
  632. package/dist/node/column-views.e0e20136.js +0 -2
  633. package/dist/node/column-views.e0e20136.js.map +0 -1
  634. package/dist/node/column-views.e2562224.js +0 -2
  635. package/dist/node/column-views.e2562224.js.map +0 -1
  636. package/dist/node/column-views.e6720522.js +0 -2
  637. package/dist/node/column-views.e6720522.js.map +0 -1
  638. package/dist/node/column-views.e7e26765.js +0 -2
  639. package/dist/node/column-views.e7e26765.js.map +0 -1
  640. package/dist/node/column-views.e93b3bdb.js +0 -2
  641. package/dist/node/column-views.e93b3bdb.js.map +0 -1
  642. package/dist/node/column-views.ebb44b7d.js +0 -2
  643. package/dist/node/column-views.ebb44b7d.js.map +0 -1
  644. package/dist/node/column-views.ec0087a2.js +0 -2
  645. package/dist/node/column-views.ec0087a2.js.map +0 -1
  646. package/dist/node/column-views.eea80478.js +0 -2
  647. package/dist/node/column-views.eea80478.js.map +0 -1
  648. package/dist/node/column-views.fb3ed7cc.js +0 -2
  649. package/dist/node/column-views.fb3ed7cc.js.map +0 -1
  650. package/dist/node/column-views.fc4c2c61.js +0 -2
  651. package/dist/node/column-views.fc4c2c61.js.map +0 -1
  652. package/dist/node/column-views.fcb243a2.js +0 -2
  653. package/dist/node/column-views.fcb243a2.js.map +0 -1
  654. package/dist/node/column-views.fea32686.js +0 -2
  655. package/dist/node/column-views.fea32686.js.map +0 -1
  656. package/dist/node/index.js +0 -2
  657. package/dist/node/index.js.map +0 -1
@@ -0,0 +1,145 @@
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 uiComponents = require("@macrostrat/ui-components");
6
+ const d3Array = require("d3-array");
7
+ const columnComponents = require("@macrostrat/column-components");
8
+ const taxonRanges_module = require("./taxon-ranges.module.sass.cjs");
9
+ const React = require("react");
10
+ const store = require("../../data-provider/store.cjs");
11
+ const h = h$1.styled(taxonRanges_module.default);
12
+ function PBDBOccurrencesMatrix({ columnID }) {
13
+ const data = provider.useFossilData(columnID, provider.FossilDataType.Occurrences);
14
+ const col = store.useMacrostratColumnData();
15
+ const scale = store.useCompositeScale();
16
+ if (data == null) return null;
17
+ const occurrenceMap = new Map(d3Array.group(data, (d) => d.unit_id));
18
+ const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);
19
+ const { taxonRanges } = matrix;
20
+ const padding = 16;
21
+ const spacing = 16;
22
+ const taxonEntries = Array.from(taxonRanges.entries());
23
+ const width = padding * 2 + spacing * taxonEntries.length;
24
+ return h(uiComponents.Box, { className: "taxon-ranges", width, height: col.totalHeight }, [
25
+ h(TaxonOccurrenceLabels, {
26
+ taxonEntries,
27
+ padding,
28
+ spacing,
29
+ scale
30
+ }),
31
+ h(
32
+ columnComponents.ColumnSVG,
33
+ {
34
+ width: padding * 2 + spacing * taxonEntries.length
35
+ },
36
+ h(
37
+ "g.taxa-occurrences-matrix",
38
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
39
+ const xPosition = padding + rowIndex * spacing;
40
+ return h("g", { transform: `translate(${xPosition})` }, [
41
+ ranges.map(([top, bottom]) => {
42
+ return h("line", {
43
+ y1: scale(top),
44
+ y2: scale(bottom)
45
+ });
46
+ })
47
+ ]);
48
+ })
49
+ )
50
+ )
51
+ ]);
52
+ }
53
+ function TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {
54
+ return h("div.taxon-labels", [
55
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
56
+ const top = ranges[0]?.[0] ?? 0;
57
+ let topPx = scale(top) - 20;
58
+ if (topPx < 200) topPx = 0;
59
+ return h(TaxonLabel, {
60
+ top: topPx,
61
+ left: padding + rowIndex * spacing,
62
+ taxonName
63
+ });
64
+ })
65
+ ]);
66
+ }
67
+ function TaxonLabel({ top, left, taxonName }) {
68
+ const ref = React.useRef();
69
+ const textSize = uiComponents.useElementSize(ref);
70
+ const labelWidth = textSize?.height ?? 200;
71
+ return h(
72
+ "div.taxon-label",
73
+ {
74
+ style: {
75
+ top: `${top}px`,
76
+ marginLeft: `${left}px`,
77
+ "--label-width": `${labelWidth}px`
78
+ }
79
+ },
80
+ h("div.taxon-label-inner", h("div.taxon-label-text", { ref }, taxonName))
81
+ );
82
+ }
83
+ function createOccurrenceMatrix(units, data, axisType = columnComponents.ColumnAxisType.AGE) {
84
+ const taxonUnitMap = /* @__PURE__ */ new Map();
85
+ const taxonOccurrenceMap = /* @__PURE__ */ new Map();
86
+ for (const [unit_id, occurrences] of data.entries()) {
87
+ for (const occ of occurrences) {
88
+ const taxonName = occ.best_name ?? occ.taxon_name;
89
+ if (!taxonUnitMap.has(taxonName)) {
90
+ taxonUnitMap.set(taxonName, /* @__PURE__ */ new Set());
91
+ taxonOccurrenceMap.set(taxonName, []);
92
+ }
93
+ taxonUnitMap.get(taxonName).add(unit_id);
94
+ taxonOccurrenceMap.get(taxonName).push(occ);
95
+ }
96
+ }
97
+ const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {
98
+ return b[0].localeCompare(a[0]);
99
+ });
100
+ const taxonRanges = /* @__PURE__ */ new Map();
101
+ for (const [taxonName, unitSet] of taxonUnitMap.entries()) {
102
+ taxonRanges.set(
103
+ taxonName,
104
+ accumulatePresenceDomains(units, unitSet, axisType)
105
+ );
106
+ }
107
+ return {
108
+ occurrenceMap: data,
109
+ taxonUnitMap: new Map(sortedTaxa),
110
+ taxonOccurrenceMap,
111
+ taxonRanges
112
+ };
113
+ }
114
+ function accumulatePresenceDomains(unit, presenceUnits, axisType) {
115
+ const domains = [];
116
+ let currentDomain = null;
117
+ for (const u of unit) {
118
+ if (presenceUnits.has(u.unit_id)) {
119
+ if (currentDomain == null) {
120
+ if (axisType == columnComponents.ColumnAxisType.DEPTH || axisType == columnComponents.ColumnAxisType.HEIGHT) {
121
+ currentDomain = [u.t_pos, u.b_pos];
122
+ } else {
123
+ currentDomain = [u.t_age, u.b_age];
124
+ }
125
+ } else {
126
+ if (axisType == columnComponents.ColumnAxisType.DEPTH || axisType == columnComponents.ColumnAxisType.HEIGHT) {
127
+ currentDomain[1] = u.b_pos;
128
+ } else {
129
+ currentDomain[1] = u.b_age;
130
+ }
131
+ }
132
+ } else {
133
+ if (currentDomain != null) {
134
+ domains.push(currentDomain);
135
+ currentDomain = null;
136
+ }
137
+ }
138
+ }
139
+ if (currentDomain != null) {
140
+ domains.push(currentDomain);
141
+ }
142
+ return domains;
143
+ }
144
+ exports.PBDBOccurrencesMatrix = PBDBOccurrencesMatrix;
145
+ //# sourceMappingURL=taxon-ranges.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxon-ranges.cjs","sources":["../../../src/facets/fossils/taxon-ranges.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n PBDBEntity,\n PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport { Box, useElementSize } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType, ColumnSVG } from \"@macrostrat/column-components\";\nimport {\n useMacrostratColumnData,\n useCompositeScale,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport { useRef } from \"react\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBOccurrencesMatrix({ columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */\n const data = useFossilData(columnID, FossilDataType.Occurrences);\n const col = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null) return null;\n\n // convert the data to a map\n const occurrenceMap = new Map(group(data, (d) => d.unit_id)) as Map<\n number,\n PBDBOccurrence[]\n >;\n\n const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n\n const { taxonRanges } = matrix;\n\n const padding = 16;\n const spacing = 16;\n\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n\n const width = padding * 2 + spacing * taxonEntries.length;\n\n return h(Box, { className: \"taxon-ranges\", width, height: col.totalHeight }, [\n h(TaxonOccurrenceLabels, {\n taxonEntries,\n padding,\n spacing,\n scale,\n }),\n h(\n ColumnSVG,\n {\n width: padding * 2 + spacing * taxonEntries.length,\n },\n h(\n \"g.taxa-occurrences-matrix\",\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const xPosition = padding + rowIndex * spacing;\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n }),\n ),\n ),\n ]);\n}\n\nfunction TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {\n return h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n\n return h(TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName,\n });\n }),\n ]);\n}\n\nfunction TaxonLabel({ top, left, taxonName }) {\n const ref = useRef();\n const textSize = useElementSize(ref);\n const labelWidth = textSize?.height ?? 200;\n return h(\n \"div.taxon-label\",\n {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`,\n },\n },\n h(\"div.taxon-label-inner\", h(\"div.taxon-label-text\", { ref }, taxonName)),\n );\n}\n\ntype TaxonUnitMap = Map<string, Set<number>>;\n\ninterface OccurrenceMatrixData {\n occurrenceMap: Map<number, PBDBEntity[]>; // Map of unit IDs to occurrences (original data)\n taxonUnitMap: TaxonUnitMap; // Map of taxon names to sets of unit IDs\n taxonOccurrenceMap: Map<string, PBDBOccurrence[]>; // Map of taxon names to occurrences\n taxonRanges: Map<string, [number, number][]>; // Map of taxon names to [top, bottom] pixel ranges\n}\n\nfunction TaxonOccurrenceEntry({\n xPosition,\n ranges,\n scale,\n name,\n}: {\n xPosition: number;\n units: Set<number>;\n ranges: any;\n scale: any;\n name: string;\n}) {\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n}\n\nfunction createOccurrenceMatrix(\n units: UnitLong[],\n data: Map<number, PBDBOccurrence[]>,\n axisType: ColumnAxisType = ColumnAxisType.AGE,\n): OccurrenceMatrixData {\n const taxonUnitMap = new Map<string, Set<number>>();\n const taxonOccurrenceMap = new Map<string, PBDBOccurrence[]>();\n\n for (const [unit_id, occurrences] of data.entries()) {\n for (const occ of occurrences) {\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n }\n\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n\n const taxonRanges = new Map<string, [number, number][]>();\n for (const [taxonName, unitSet] of taxonUnitMap.entries()) {\n taxonRanges.set(\n taxonName,\n accumulatePresenceDomains(units, unitSet, axisType),\n );\n }\n\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges,\n };\n}\n\nfunction accumulatePresenceDomains(\n unit: UnitLong[],\n presenceUnits: Set<number>,\n axisType: ColumnAxisType,\n): Array<[number, number]> {\n const domains: Array<[number, number]> = [];\n let currentDomain: [number, number] | null = null;\n\n for (const u of unit) {\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain = [u.t_pos, u.b_pos];\n } else {\n currentDomain = [u.t_age, u.b_age];\n }\n } else {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain[1] = u.b_pos;\n } else {\n currentDomain[1] = u.b_age;\n }\n }\n } else {\n if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n }\n\n if (currentDomain != null) {\n domains.push(currentDomain);\n }\n\n return domains;\n}\n"],"names":["hyper","styles","useFossilData","FossilDataType","useMacrostratColumnData","useCompositeScale","group","Box","ColumnSVG","useRef","useElementSize","ColumnAxisType"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function PBDBOccurrencesMatrix({ columnID }: {
2
+ columnID: any;
3
+ }): import('react').DetailedReactHTMLElement<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
@@ -0,0 +1,145 @@
1
+ import h$1 from "@macrostrat/hyper";
2
+ import { useFossilData, FossilDataType } from "./provider.js";
3
+ import { Box, useElementSize } from "@macrostrat/ui-components";
4
+ import { group } from "d3-array";
5
+ import { ColumnAxisType, ColumnSVG } from "@macrostrat/column-components";
6
+ import styles from "./taxon-ranges.module.sass.js";
7
+ import { useRef } from "react";
8
+ import { useMacrostratColumnData, useCompositeScale } from "../../data-provider/store.js";
9
+ const h = h$1.styled(styles);
10
+ function PBDBOccurrencesMatrix({ columnID }) {
11
+ const data = useFossilData(columnID, FossilDataType.Occurrences);
12
+ const col = useMacrostratColumnData();
13
+ const scale = useCompositeScale();
14
+ if (data == null) return null;
15
+ const occurrenceMap = new Map(group(data, (d) => d.unit_id));
16
+ const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);
17
+ const { taxonRanges } = matrix;
18
+ const padding = 16;
19
+ const spacing = 16;
20
+ const taxonEntries = Array.from(taxonRanges.entries());
21
+ const width = padding * 2 + spacing * taxonEntries.length;
22
+ return h(Box, { className: "taxon-ranges", width, height: col.totalHeight }, [
23
+ h(TaxonOccurrenceLabels, {
24
+ taxonEntries,
25
+ padding,
26
+ spacing,
27
+ scale
28
+ }),
29
+ h(
30
+ ColumnSVG,
31
+ {
32
+ width: padding * 2 + spacing * taxonEntries.length
33
+ },
34
+ h(
35
+ "g.taxa-occurrences-matrix",
36
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
37
+ const xPosition = padding + rowIndex * spacing;
38
+ return h("g", { transform: `translate(${xPosition})` }, [
39
+ ranges.map(([top, bottom]) => {
40
+ return h("line", {
41
+ y1: scale(top),
42
+ y2: scale(bottom)
43
+ });
44
+ })
45
+ ]);
46
+ })
47
+ )
48
+ )
49
+ ]);
50
+ }
51
+ function TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {
52
+ return h("div.taxon-labels", [
53
+ taxonEntries.map(([taxonName, ranges], rowIndex) => {
54
+ const top = ranges[0]?.[0] ?? 0;
55
+ let topPx = scale(top) - 20;
56
+ if (topPx < 200) topPx = 0;
57
+ return h(TaxonLabel, {
58
+ top: topPx,
59
+ left: padding + rowIndex * spacing,
60
+ taxonName
61
+ });
62
+ })
63
+ ]);
64
+ }
65
+ function TaxonLabel({ top, left, taxonName }) {
66
+ const ref = useRef();
67
+ const textSize = useElementSize(ref);
68
+ const labelWidth = textSize?.height ?? 200;
69
+ return h(
70
+ "div.taxon-label",
71
+ {
72
+ style: {
73
+ top: `${top}px`,
74
+ marginLeft: `${left}px`,
75
+ "--label-width": `${labelWidth}px`
76
+ }
77
+ },
78
+ h("div.taxon-label-inner", h("div.taxon-label-text", { ref }, taxonName))
79
+ );
80
+ }
81
+ function createOccurrenceMatrix(units, data, axisType = ColumnAxisType.AGE) {
82
+ const taxonUnitMap = /* @__PURE__ */ new Map();
83
+ const taxonOccurrenceMap = /* @__PURE__ */ new Map();
84
+ for (const [unit_id, occurrences] of data.entries()) {
85
+ for (const occ of occurrences) {
86
+ const taxonName = occ.best_name ?? occ.taxon_name;
87
+ if (!taxonUnitMap.has(taxonName)) {
88
+ taxonUnitMap.set(taxonName, /* @__PURE__ */ new Set());
89
+ taxonOccurrenceMap.set(taxonName, []);
90
+ }
91
+ taxonUnitMap.get(taxonName).add(unit_id);
92
+ taxonOccurrenceMap.get(taxonName).push(occ);
93
+ }
94
+ }
95
+ const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {
96
+ return b[0].localeCompare(a[0]);
97
+ });
98
+ const taxonRanges = /* @__PURE__ */ new Map();
99
+ for (const [taxonName, unitSet] of taxonUnitMap.entries()) {
100
+ taxonRanges.set(
101
+ taxonName,
102
+ accumulatePresenceDomains(units, unitSet, axisType)
103
+ );
104
+ }
105
+ return {
106
+ occurrenceMap: data,
107
+ taxonUnitMap: new Map(sortedTaxa),
108
+ taxonOccurrenceMap,
109
+ taxonRanges
110
+ };
111
+ }
112
+ function accumulatePresenceDomains(unit, presenceUnits, axisType) {
113
+ const domains = [];
114
+ let currentDomain = null;
115
+ for (const u of unit) {
116
+ if (presenceUnits.has(u.unit_id)) {
117
+ if (currentDomain == null) {
118
+ if (axisType == ColumnAxisType.DEPTH || axisType == ColumnAxisType.HEIGHT) {
119
+ currentDomain = [u.t_pos, u.b_pos];
120
+ } else {
121
+ currentDomain = [u.t_age, u.b_age];
122
+ }
123
+ } else {
124
+ if (axisType == ColumnAxisType.DEPTH || axisType == ColumnAxisType.HEIGHT) {
125
+ currentDomain[1] = u.b_pos;
126
+ } else {
127
+ currentDomain[1] = u.b_age;
128
+ }
129
+ }
130
+ } else {
131
+ if (currentDomain != null) {
132
+ domains.push(currentDomain);
133
+ currentDomain = null;
134
+ }
135
+ }
136
+ }
137
+ if (currentDomain != null) {
138
+ domains.push(currentDomain);
139
+ }
140
+ return domains;
141
+ }
142
+ export {
143
+ PBDBOccurrencesMatrix
144
+ };
145
+ //# sourceMappingURL=taxon-ranges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxon-ranges.js","sources":["../../../src/facets/fossils/taxon-ranges.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n PBDBEntity,\n PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport { Box, useElementSize } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType, ColumnSVG } from \"@macrostrat/column-components\";\nimport {\n useMacrostratColumnData,\n useCompositeScale,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport { useRef } from \"react\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBOccurrencesMatrix({ columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */\n const data = useFossilData(columnID, FossilDataType.Occurrences);\n const col = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null) return null;\n\n // convert the data to a map\n const occurrenceMap = new Map(group(data, (d) => d.unit_id)) as Map<\n number,\n PBDBOccurrence[]\n >;\n\n const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n\n const { taxonRanges } = matrix;\n\n const padding = 16;\n const spacing = 16;\n\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n\n const width = padding * 2 + spacing * taxonEntries.length;\n\n return h(Box, { className: \"taxon-ranges\", width, height: col.totalHeight }, [\n h(TaxonOccurrenceLabels, {\n taxonEntries,\n padding,\n spacing,\n scale,\n }),\n h(\n ColumnSVG,\n {\n width: padding * 2 + spacing * taxonEntries.length,\n },\n h(\n \"g.taxa-occurrences-matrix\",\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const xPosition = padding + rowIndex * spacing;\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n }),\n ),\n ),\n ]);\n}\n\nfunction TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {\n return h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n\n return h(TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName,\n });\n }),\n ]);\n}\n\nfunction TaxonLabel({ top, left, taxonName }) {\n const ref = useRef();\n const textSize = useElementSize(ref);\n const labelWidth = textSize?.height ?? 200;\n return h(\n \"div.taxon-label\",\n {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`,\n },\n },\n h(\"div.taxon-label-inner\", h(\"div.taxon-label-text\", { ref }, taxonName)),\n );\n}\n\ntype TaxonUnitMap = Map<string, Set<number>>;\n\ninterface OccurrenceMatrixData {\n occurrenceMap: Map<number, PBDBEntity[]>; // Map of unit IDs to occurrences (original data)\n taxonUnitMap: TaxonUnitMap; // Map of taxon names to sets of unit IDs\n taxonOccurrenceMap: Map<string, PBDBOccurrence[]>; // Map of taxon names to occurrences\n taxonRanges: Map<string, [number, number][]>; // Map of taxon names to [top, bottom] pixel ranges\n}\n\nfunction TaxonOccurrenceEntry({\n xPosition,\n ranges,\n scale,\n name,\n}: {\n xPosition: number;\n units: Set<number>;\n ranges: any;\n scale: any;\n name: string;\n}) {\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n}\n\nfunction createOccurrenceMatrix(\n units: UnitLong[],\n data: Map<number, PBDBOccurrence[]>,\n axisType: ColumnAxisType = ColumnAxisType.AGE,\n): OccurrenceMatrixData {\n const taxonUnitMap = new Map<string, Set<number>>();\n const taxonOccurrenceMap = new Map<string, PBDBOccurrence[]>();\n\n for (const [unit_id, occurrences] of data.entries()) {\n for (const occ of occurrences) {\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n }\n\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n\n const taxonRanges = new Map<string, [number, number][]>();\n for (const [taxonName, unitSet] of taxonUnitMap.entries()) {\n taxonRanges.set(\n taxonName,\n accumulatePresenceDomains(units, unitSet, axisType),\n );\n }\n\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges,\n };\n}\n\nfunction accumulatePresenceDomains(\n unit: UnitLong[],\n presenceUnits: Set<number>,\n axisType: ColumnAxisType,\n): Array<[number, number]> {\n const domains: Array<[number, number]> = [];\n let currentDomain: [number, number] | null = null;\n\n for (const u of unit) {\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain = [u.t_pos, u.b_pos];\n } else {\n currentDomain = [u.t_age, u.b_age];\n }\n } else {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain[1] = u.b_pos;\n } else {\n currentDomain[1] = u.b_age;\n }\n }\n } else {\n if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n }\n\n if (currentDomain != null) {\n domains.push(currentDomain);\n }\n\n return domains;\n}\n"],"names":["hyper"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const styles = {
4
+ "taxa-occurrences-matrix": "_taxa-occurrences-matrix_14h8h_1",
5
+ "taxon-name": "_taxon-name_14h8h_8",
6
+ "taxon-ranges": "_taxon-ranges_14h8h_16",
7
+ "taxon-labels": "_taxon-labels_14h8h_24",
8
+ "taxon-label": "_taxon-label_14h8h_24",
9
+ "taxon-label-inner": "_taxon-label-inner_14h8h_35",
10
+ "taxon-label-text": "_taxon-label-text_14h8h_42"
11
+ };
12
+ exports.default = styles;
13
+ //# sourceMappingURL=taxon-ranges.module.sass.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxon-ranges.module.sass.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,13 @@
1
+ const styles = {
2
+ "taxa-occurrences-matrix": "_taxa-occurrences-matrix_14h8h_1",
3
+ "taxon-name": "_taxon-name_14h8h_8",
4
+ "taxon-ranges": "_taxon-ranges_14h8h_16",
5
+ "taxon-labels": "_taxon-labels_14h8h_24",
6
+ "taxon-label": "_taxon-label_14h8h_24",
7
+ "taxon-label-inner": "_taxon-label-inner_14h8h_35",
8
+ "taxon-label-text": "_taxon-label-text_14h8h_42"
9
+ };
10
+ export {
11
+ styles as default
12
+ };
13
+ //# sourceMappingURL=taxon-ranges.module.sass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxon-ranges.module.sass.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ export * from './fossils';
2
+ export * from './detrital-zircon';
3
+ export * from './carbon-isotopes';
4
+ export * from './measurements';
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const h$1 = require("@macrostrat/hyper");
4
+ const base_module = require("./base.module.sass.cjs");
5
+ const notes = require("../../notes.cjs");
6
+ const columnComponents = require("@macrostrat/column-components");
7
+ const utils = require("../../prepare-units/utils.cjs");
8
+ const h = h$1.styled(base_module.default);
9
+ function standardizeMeasurementHeight(pos, units, axisType) {
10
+ if ("height" in pos) {
11
+ return pos;
12
+ }
13
+ const unit = units.find((u) => u.unit_id === pos.unit_id);
14
+ if (unit == null) {
15
+ return null;
16
+ }
17
+ if (pos.unit_rel_pos != null) {
18
+ const res = utils.getPositionWithinUnit(pos.unit_rel_pos, unit, axisType);
19
+ if (res == null) return null;
20
+ return { height: res };
21
+ } else {
22
+ const [height, top_height] = utils.getUnitHeightRange(unit, axisType);
23
+ return { height, top_height };
24
+ }
25
+ }
26
+ function mergeHeightRanges(data, axisType) {
27
+ const heights = [];
28
+ for (const d of data) {
29
+ heights.push(d.height);
30
+ if (d.top_height != null) {
31
+ heights.push(d.top_height);
32
+ }
33
+ }
34
+ let height;
35
+ let top_height;
36
+ if (axisType === columnComponents.ColumnAxisType.AGE || axisType === columnComponents.ColumnAxisType.DEPTH) {
37
+ height = Math.max(...heights);
38
+ top_height = Math.min(...heights);
39
+ } else {
40
+ height = Math.min(...heights);
41
+ top_height = Math.max(...heights);
42
+ }
43
+ if (top_height === height) {
44
+ return { height };
45
+ }
46
+ return { height, top_height };
47
+ }
48
+ function BaseMeasurementsColumn({
49
+ data,
50
+ noteComponent,
51
+ width = 500,
52
+ paddingLeft = 40,
53
+ className,
54
+ deltaConnectorAttachment,
55
+ focusedNoteComponent
56
+ }) {
57
+ if (data == null) return null;
58
+ return h(
59
+ "div.measurements-column",
60
+ { className },
61
+ h(notes.ColumnNotes, {
62
+ width,
63
+ paddingLeft,
64
+ notes: data,
65
+ noteComponent,
66
+ deltaConnectorAttachment,
67
+ focusedNoteComponent
68
+ })
69
+ );
70
+ }
71
+ function TruncatedList({
72
+ data,
73
+ className,
74
+ maxItems = 5,
75
+ itemRenderer = (p) => h("span", p.data)
76
+ }) {
77
+ let tooMany = null;
78
+ let d1 = data;
79
+ if (data.length > maxItems) {
80
+ const n = data.length - maxItems;
81
+ d1 = data.slice(0, maxItems);
82
+ tooMany = h("li.too-many", `and ${n} more`);
83
+ }
84
+ return h("ul.truncated-list", { className }, [
85
+ d1.map((d, i) => {
86
+ return h("li.element", { key: i }, h(itemRenderer, { data: d }));
87
+ }),
88
+ tooMany
89
+ ]);
90
+ }
91
+ function groupNotesByPixelDistance(data, scale, axisType, groupDistance) {
92
+ if (data.length === 0 || groupDistance <= 0) return data;
93
+ if (axisType === columnComponents.ColumnAxisType.AGE || axisType === columnComponents.ColumnAxisType.DEPTH) {
94
+ data.sort((a, b) => b.height - a.height);
95
+ } else {
96
+ data.sort((a, b) => a.height - b.height);
97
+ }
98
+ const groupedData = [];
99
+ let currentGroup = null;
100
+ let currentGroupPosition = Infinity;
101
+ for (const d of data) {
102
+ const distance = currentGroupPosition - scale(d.top_height ?? d.height);
103
+ if (distance <= groupDistance) {
104
+ if (currentGroup == null) {
105
+ throw new Error("Current group is null when it shouldn't be");
106
+ }
107
+ currentGroup.data.push(...d.data);
108
+ const top_height = d.top_height ?? d.height;
109
+ if (axisType === columnComponents.ColumnAxisType.AGE || axisType === columnComponents.ColumnAxisType.DEPTH) {
110
+ currentGroup.top_height = Math.min(currentGroup.top_height, top_height);
111
+ } else {
112
+ currentGroup.top_height = Math.max(currentGroup.top_height, top_height);
113
+ }
114
+ currentGroup.id = `${currentGroup.height}-${currentGroup.top_height}`;
115
+ } else {
116
+ currentGroup = { ...d, data: [...d.data] };
117
+ currentGroupPosition = scale(currentGroup.height) ?? scale(currentGroup.top_height) ?? Infinity;
118
+ groupedData.push(currentGroup);
119
+ }
120
+ }
121
+ return groupedData;
122
+ }
123
+ exports.BaseMeasurementsColumn = BaseMeasurementsColumn;
124
+ exports.TruncatedList = TruncatedList;
125
+ exports.groupNotesByPixelDistance = groupNotesByPixelDistance;
126
+ exports.mergeHeightRanges = mergeHeightRanges;
127
+ exports.standardizeMeasurementHeight = standardizeMeasurementHeight;
128
+ //# sourceMappingURL=base.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.cjs","sources":["../../../src/facets/measurements/base.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport styles from \"./base.module.sass\";\nimport {\n type CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { ColumnNotes } from \"../../notes\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nconst h = hyper.styled(styles);\n\ntype GetHeightRangeFn<T> = (\n data: T,\n unit: UnitLong | null,\n axisType: ColumnAxisType,\n) => MeasurementHeightData;\n\nexport interface BaseMeasurementsColumnProps<T> {\n data: T[];\n noteComponent?: any;\n width?: number;\n paddingLeft?: number;\n className?: string;\n // TODO: these props are confusing\n getUnitID?: (d: T) => number | string;\n isMatchingUnit?: (d: T, unit: UnitLong) => boolean;\n getHeightRange?: GetHeightRangeFn<T>;\n deltaConnectorAttachment?: number;\n focusedNoteComponent?: any;\n}\n\nexport interface ColumnMeasurementData<T = any> extends MeasurementHeightData {\n data: T;\n id: string | number;\n}\n\ntype MeasurementPositionInformation =\n | MeasurementHeightData\n | {\n unit_id: number;\n unit_rel_pos?: number;\n };\n\nexport function standardizeMeasurementHeight(\n pos: MeasurementPositionInformation,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n /** Get a standardized height representation from position information for\n * a measurement\n */\n if (\"height\" in pos) {\n return pos;\n }\n const unit = units.find((u) => u.unit_id === pos.unit_id);\n if (unit == null) {\n return null;\n }\n if (pos.unit_rel_pos != null) {\n const res = getPositionWithinUnit(pos.unit_rel_pos, unit, axisType);\n if (res == null) return null;\n return { height: res };\n } else {\n const [height, top_height] = getUnitHeightRange(unit, axisType);\n return { height, top_height };\n }\n}\n\nexport function mergeHeightRanges(\n data: MeasurementHeightData[],\n axisType: ColumnAxisType,\n): MeasurementHeightData {\n /** Merge multiple height ranges into a single range */\n const heights = [];\n\n for (const d of data) {\n heights.push(d.height);\n if (d.top_height != null) {\n heights.push(d.top_height);\n }\n }\n\n let height: number;\n let top_height: number;\n if (axisType === ColumnAxisType.AGE || axisType === ColumnAxisType.DEPTH) {\n height = Math.max(...heights);\n top_height = Math.min(...heights);\n } else {\n height = Math.min(...heights);\n top_height = Math.max(...heights);\n }\n\n if (top_height === height) {\n return { height };\n }\n return { height, top_height };\n}\n\nexport type MeasurementHeightData = {\n height: number;\n top_height?: number | null;\n};\n\nexport function BaseMeasurementsColumn({\n data,\n noteComponent,\n width = 500,\n paddingLeft = 40,\n className,\n deltaConnectorAttachment,\n focusedNoteComponent,\n}: BaseMeasurementsColumnProps<any>) {\n if (data == null) return null;\n\n return h(\n \"div.measurements-column\",\n { className },\n h(ColumnNotes, {\n width,\n paddingLeft,\n notes: data,\n noteComponent,\n deltaConnectorAttachment,\n focusedNoteComponent,\n }),\n );\n}\n\ninterface TruncatedListProps {\n data: any[];\n className?: string;\n maxItems?: number;\n itemRenderer?: (props: { data: any }) => any;\n}\n\nexport function TruncatedList({\n data,\n className,\n maxItems = 5,\n itemRenderer = (p) => h(\"span\", p.data),\n}: TruncatedListProps) {\n let tooMany = null;\n let d1 = data;\n if (data.length > maxItems) {\n const n = data.length - maxItems;\n d1 = data.slice(0, maxItems);\n tooMany = h(\"li.too-many\", `and ${n} more`);\n }\n\n return h(\"ul.truncated-list\", { className }, [\n d1.map((d, i) => {\n return h(\"li.element\", { key: i }, h(itemRenderer, { data: d }));\n }),\n tooMany,\n ]);\n}\n\nexport function groupNotesByPixelDistance<T = any>(\n data: ColumnMeasurementData<T[]>[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n groupDistance: number,\n) {\n /** Group notes that are within a certain pixel distance of each other\n * in display space\n */\n if (data.length === 0 || groupDistance <= 0) return data;\n if (axisType === ColumnAxisType.AGE || axisType === ColumnAxisType.DEPTH) {\n data.sort((a, b) => b.height - a.height);\n } else {\n // Sort data by height (ascending up the column)\n data.sort((a, b) => a.height - b.height);\n }\n\n const groupedData: ColumnMeasurementData<T[]>[] = [];\n let currentGroup: ColumnMeasurementData<T[]> | null = null;\n let currentGroupPosition: number = Infinity;\n\n for (const d of data) {\n // Check distance from current max position\n // Pixels go up as we go down in the section\n\n // The _top_ of the next group must be within groupDistance of the\n // _bottom_ of the current group. This makes sure that we don't collapse\n // groups that are separated by a large distance\n const distance = currentGroupPosition - scale(d.top_height ?? d.height);\n\n if (distance <= groupDistance) {\n if (currentGroup == null) {\n throw new Error(\"Current group is null when it shouldn't be\");\n }\n // Merge into current group\n currentGroup.data.push(...d.data);\n // Update height range\n const top_height = d.top_height ?? d.height;\n if (\n axisType === ColumnAxisType.AGE ||\n axisType === ColumnAxisType.DEPTH\n ) {\n // Inverted axis\n currentGroup.top_height = Math.min(currentGroup.top_height, top_height);\n } else {\n currentGroup.top_height = Math.max(currentGroup.top_height, top_height);\n }\n currentGroup.id = `${currentGroup.height}-${currentGroup.top_height}`;\n } else {\n // Start a new group\n currentGroup = { ...d, data: [...d.data] };\n currentGroupPosition =\n scale(currentGroup.height) ??\n scale(currentGroup.top_height) ??\n Infinity;\n groupedData.push(currentGroup);\n }\n }\n\n return groupedData;\n}\n"],"names":["hyper","styles","getPositionWithinUnit","getUnitHeightRange","ColumnAxisType","ColumnNotes"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { CompositeColumnScale } from '../../prepare-units';
2
+ import { UnitLong } from '@macrostrat/api-types';
3
+ import { ColumnAxisType } from '@macrostrat/column-components';
4
+ type GetHeightRangeFn<T> = (data: T, unit: UnitLong | null, axisType: ColumnAxisType) => MeasurementHeightData;
5
+ export interface BaseMeasurementsColumnProps<T> {
6
+ data: T[];
7
+ noteComponent?: any;
8
+ width?: number;
9
+ paddingLeft?: number;
10
+ className?: string;
11
+ getUnitID?: (d: T) => number | string;
12
+ isMatchingUnit?: (d: T, unit: UnitLong) => boolean;
13
+ getHeightRange?: GetHeightRangeFn<T>;
14
+ deltaConnectorAttachment?: number;
15
+ focusedNoteComponent?: any;
16
+ }
17
+ export interface ColumnMeasurementData<T = any> extends MeasurementHeightData {
18
+ data: T;
19
+ id: string | number;
20
+ }
21
+ type MeasurementPositionInformation = MeasurementHeightData | {
22
+ unit_id: number;
23
+ unit_rel_pos?: number;
24
+ };
25
+ export declare function standardizeMeasurementHeight(pos: MeasurementPositionInformation, units: UnitLong[], axisType: ColumnAxisType): MeasurementHeightData | null;
26
+ export declare function mergeHeightRanges(data: MeasurementHeightData[], axisType: ColumnAxisType): MeasurementHeightData;
27
+ export type MeasurementHeightData = {
28
+ height: number;
29
+ top_height?: number | null;
30
+ };
31
+ export declare function BaseMeasurementsColumn({ data, noteComponent, width, paddingLeft, className, deltaConnectorAttachment, focusedNoteComponent, }: BaseMeasurementsColumnProps<any>): import('react').ReactElement<{
32
+ className: string;
33
+ }, string | import('react').JSXElementConstructor<any>>;
34
+ interface TruncatedListProps {
35
+ data: any[];
36
+ className?: string;
37
+ maxItems?: number;
38
+ itemRenderer?: (props: {
39
+ data: any;
40
+ }) => any;
41
+ }
42
+ export declare function TruncatedList({ data, className, maxItems, itemRenderer, }: TruncatedListProps): import('react').ReactElement<{
43
+ className: string;
44
+ }, string | import('react').JSXElementConstructor<any>>;
45
+ export declare function groupNotesByPixelDistance<T = any>(data: ColumnMeasurementData<T[]>[], scale: CompositeColumnScale, axisType: ColumnAxisType, groupDistance: number): ColumnMeasurementData<T[]>[];
46
+ export {};