@macrostrat/column-views 2.0.1 → 2.1.1

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 (375) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/{column-views.8dd877af.js → column-views.006d5180.js} +2 -1
  3. package/dist/esm/column-views.006d5180.js.map +1 -0
  4. package/dist/esm/column-views.05586d1f.js +22 -0
  5. package/dist/esm/column-views.05586d1f.js.map +1 -0
  6. package/dist/esm/column-views.0732894f.js +86 -0
  7. package/dist/esm/column-views.0732894f.js.map +1 -0
  8. package/dist/esm/{column-views.134b2e2a.js → column-views.08440694.js} +2 -2
  9. package/dist/esm/{column-views.134b2e2a.js.map → column-views.08440694.js.map} +1 -1
  10. package/dist/esm/{column-views.aa9fcdba.js → column-views.0c14e18e.js} +18 -15
  11. package/dist/esm/column-views.0c14e18e.js.map +1 -0
  12. package/dist/esm/column-views.10eba967.js +11 -0
  13. package/dist/esm/column-views.10eba967.js.map +1 -0
  14. package/dist/esm/{column-views.8e51206e.js → column-views.1af9761e.js} +19 -3
  15. package/dist/esm/column-views.1af9761e.js.map +1 -0
  16. package/dist/esm/column-views.1c92b88f.js +16 -0
  17. package/dist/esm/column-views.1c92b88f.js.map +1 -0
  18. package/dist/esm/{column-views.ea237aa8.js → column-views.1e055ed5.js} +6 -5
  19. package/dist/esm/column-views.1e055ed5.js.map +1 -0
  20. package/dist/esm/{column-views.1ece326b.js → column-views.1f123354.js} +60 -11
  21. package/dist/esm/column-views.1f123354.js.map +1 -0
  22. package/dist/esm/{column-views.240ef158.css → column-views.217078ab.css} +4 -3
  23. package/dist/esm/column-views.217078ab.css.map +1 -0
  24. package/dist/esm/column-views.2c45a7b5.js +25 -0
  25. package/dist/esm/column-views.2c45a7b5.js.map +1 -0
  26. package/dist/esm/column-views.2ca34210.js +151 -0
  27. package/dist/esm/column-views.2ca34210.js.map +1 -0
  28. package/dist/esm/{column-views.3bec70d6.js → column-views.2d8e0e0f.js} +9 -8
  29. package/dist/esm/column-views.2d8e0e0f.js.map +1 -0
  30. package/dist/esm/column-views.3048acc1.js +66 -0
  31. package/dist/esm/column-views.3048acc1.js.map +1 -0
  32. package/dist/esm/column-views.39657bbf.js.map +1 -1
  33. package/dist/esm/{column-views.28ee5f43.js → column-views.3ba9213d.js} +16 -5
  34. package/dist/esm/column-views.3ba9213d.js.map +1 -0
  35. package/dist/esm/column-views.3de4dc43.js.map +1 -1
  36. package/dist/esm/column-views.403a7b48.css +24 -0
  37. package/dist/esm/column-views.403a7b48.css.map +1 -0
  38. package/dist/esm/column-views.4637f4ce.js.map +1 -1
  39. package/dist/esm/{column-views.86c4b36f.js → column-views.4ab0ec82.js} +44 -13
  40. package/dist/esm/column-views.4ab0ec82.js.map +1 -0
  41. package/dist/esm/{column-views.9bdd477a.js → column-views.4d22c21c.js} +2 -2
  42. package/dist/esm/{column-views.9bdd477a.js.map → column-views.4d22c21c.js.map} +1 -1
  43. package/dist/esm/{column-views.fa6f3292.js → column-views.4df0b803.js} +7 -8
  44. package/dist/esm/column-views.4df0b803.js.map +1 -0
  45. package/dist/esm/{column-views.b775c0a3.js → column-views.52a6eb47.js} +3 -3
  46. package/dist/esm/{column-views.b775c0a3.js.map → column-views.52a6eb47.js.map} +1 -1
  47. package/dist/esm/column-views.57636733.css +22 -0
  48. package/dist/esm/column-views.57636733.css.map +1 -0
  49. package/dist/esm/{column-views.68409161.js → column-views.59bb0cba.js} +2 -3
  50. package/dist/esm/column-views.59bb0cba.js.map +1 -0
  51. package/dist/esm/column-views.5cc09c1d.js.map +1 -1
  52. package/dist/esm/column-views.5e2dc19d.js +187 -0
  53. package/dist/esm/column-views.5e2dc19d.js.map +1 -0
  54. package/dist/esm/{column-views.33dbc778.js → column-views.633c42a3.js} +2 -1
  55. package/dist/esm/column-views.633c42a3.js.map +1 -0
  56. package/dist/esm/{column-views.e77b9d6b.js → column-views.6549388a.js} +4 -5
  57. package/dist/esm/column-views.6549388a.js.map +1 -0
  58. package/dist/esm/{column-views.dff52504.js → column-views.686d21ad.js} +10 -1
  59. package/dist/esm/column-views.686d21ad.js.map +1 -0
  60. package/dist/esm/column-views.6992ca88.js +25 -0
  61. package/dist/esm/column-views.6992ca88.js.map +1 -0
  62. package/dist/esm/column-views.6d6b73b4.js.map +1 -1
  63. package/dist/esm/column-views.708140ab.css +36 -0
  64. package/dist/esm/column-views.708140ab.css.map +1 -0
  65. package/dist/esm/{column-views.650bd9f5.js → column-views.7715e35e.js} +17 -13
  66. package/dist/esm/column-views.7715e35e.js.map +1 -0
  67. package/dist/esm/{column-views.a98214b2.js → column-views.7e350ae2.js} +3 -3
  68. package/dist/esm/{column-views.a98214b2.js.map → column-views.7e350ae2.js.map} +1 -1
  69. package/dist/esm/{column-views.30646469.js → column-views.85c6a716.js} +2 -2
  70. package/dist/esm/column-views.85c6a716.js.map +1 -0
  71. package/dist/esm/column-views.86619334.js +9 -0
  72. package/dist/esm/column-views.86619334.js.map +1 -0
  73. package/dist/esm/{column-views.40c1f361.js → column-views.89b9e542.js} +11 -18
  74. package/dist/esm/column-views.89b9e542.js.map +1 -0
  75. package/dist/esm/{column-views.1c589cc4.js → column-views.9892f825.js} +55 -4
  76. package/dist/esm/column-views.9892f825.js.map +1 -0
  77. package/dist/esm/{column-views.1edc7300.js → column-views.9b77388d.js} +6 -5
  78. package/dist/esm/column-views.9b77388d.js.map +1 -0
  79. package/dist/esm/column-views.a7c5ae16.js +25 -0
  80. package/dist/esm/column-views.a7c5ae16.js.map +1 -0
  81. package/dist/esm/{column-views.5c02fee2.js → column-views.a91dde4a.js} +10 -9
  82. package/dist/esm/column-views.a91dde4a.js.map +1 -0
  83. package/dist/esm/{column-views.fc2b4611.js → column-views.a94e99a2.js} +2 -2
  84. package/dist/esm/{column-views.fc2b4611.js.map → column-views.a94e99a2.js.map} +1 -1
  85. package/dist/esm/{column-views.e2b9c23c.css → column-views.b17f793f.css} +21 -1
  86. package/dist/esm/column-views.b17f793f.css.map +1 -0
  87. package/dist/esm/{column-views.9804efda.js → column-views.b9fe5176.js} +14 -8
  88. package/dist/esm/column-views.b9fe5176.js.map +1 -0
  89. package/dist/esm/{column-views.b2e5f1d9.js → column-views.bcffe6e5.js} +4 -4
  90. package/dist/esm/{column-views.b2e5f1d9.js.map → column-views.bcffe6e5.js.map} +1 -1
  91. package/dist/esm/{column-views.f1efcc2c.js → column-views.c25e8b32.js} +3 -3
  92. package/dist/esm/{column-views.f1efcc2c.js.map → column-views.c25e8b32.js.map} +1 -1
  93. package/dist/esm/{column-views.9ced149e.js → column-views.c32d6ad0.js} +25 -6
  94. package/dist/esm/column-views.c32d6ad0.js.map +1 -0
  95. package/dist/esm/{column-views.34636ec7.js → column-views.c71c321c.js} +11 -11
  96. package/dist/esm/column-views.c71c321c.js.map +1 -0
  97. package/dist/esm/{column-views.f2e5a72f.js → column-views.c8cc249a.js} +3 -3
  98. package/dist/esm/{column-views.f2e5a72f.js.map → column-views.c8cc249a.js.map} +1 -1
  99. package/dist/esm/{column-views.5b2635fd.js → column-views.c8e2983a.js} +4 -4
  100. package/dist/esm/{column-views.5b2635fd.js.map → column-views.c8e2983a.js.map} +1 -1
  101. package/dist/esm/{column-views.88de2cee.js → column-views.cfcf6096.js} +4 -4
  102. package/dist/esm/{column-views.88de2cee.js.map → column-views.cfcf6096.js.map} +1 -1
  103. package/dist/esm/{column-views.4c4c5bac.js → column-views.d2037465.js} +14 -8
  104. package/dist/esm/column-views.d2037465.js.map +1 -0
  105. package/dist/esm/column-views.dc42f5d0.js.map +1 -1
  106. package/dist/esm/column-views.e20f6a4b.js +124 -0
  107. package/dist/esm/column-views.e20f6a4b.js.map +1 -0
  108. package/dist/esm/{column-views.57c4ddf3.js → column-views.f08929e2.js} +2 -2
  109. package/dist/esm/column-views.f08929e2.js.map +1 -0
  110. package/dist/esm/column-views.f13a1d6e.js +37 -0
  111. package/dist/esm/column-views.f13a1d6e.js.map +1 -0
  112. package/dist/esm/column-views.f9dab157.js.map +1 -1
  113. package/dist/esm/column-views.fa19cea0.js +108 -0
  114. package/dist/esm/column-views.fa19cea0.js.map +1 -0
  115. package/dist/esm/{column-views.f71ec4b4.js → column-views.fdb0e9ec.js} +67 -30
  116. package/dist/esm/column-views.fdb0e9ec.js.map +1 -0
  117. package/dist/esm/index.d.ts +325 -296
  118. package/dist/esm/index.d.ts.map +1 -1
  119. package/dist/esm/index.js +13 -11
  120. package/dist/esm/index.js.map +1 -1
  121. package/dist/node/column-views.04407342.js +2 -0
  122. package/dist/node/column-views.04407342.js.map +1 -0
  123. package/dist/node/column-views.06951a55.js +2 -0
  124. package/dist/node/column-views.06951a55.js.map +1 -0
  125. package/dist/node/column-views.06b0534e.js +2 -0
  126. package/dist/node/column-views.06b0534e.js.map +1 -0
  127. package/dist/node/column-views.0859f5d2.js +2 -0
  128. package/dist/node/column-views.0859f5d2.js.map +1 -0
  129. package/dist/node/column-views.10a2bad6.js +2 -0
  130. package/dist/node/column-views.10a2bad6.js.map +1 -0
  131. package/dist/node/column-views.12a70e9d.js +2 -0
  132. package/dist/node/column-views.12a70e9d.js.map +1 -0
  133. package/dist/node/column-views.139b0855.js +2 -0
  134. package/dist/node/column-views.139b0855.js.map +1 -0
  135. package/dist/node/column-views.1a0b56fc.js +2 -0
  136. package/dist/node/column-views.1a0b56fc.js.map +1 -0
  137. package/dist/node/column-views.1de87649.js +2 -0
  138. package/dist/node/column-views.1de87649.js.map +1 -0
  139. package/dist/node/column-views.1e94d562.js +2 -0
  140. package/dist/node/column-views.1e94d562.js.map +1 -0
  141. package/dist/node/column-views.28609db2.css +2 -0
  142. package/dist/node/column-views.28609db2.css.map +1 -0
  143. package/dist/node/column-views.286d444d.js +2 -0
  144. package/dist/node/column-views.286d444d.js.map +1 -0
  145. package/dist/node/column-views.2877f398.js +2 -0
  146. package/dist/node/column-views.2877f398.js.map +1 -0
  147. package/dist/node/column-views.2a70b9a2.js +2 -0
  148. package/dist/node/column-views.2a70b9a2.js.map +1 -0
  149. package/dist/node/column-views.2e4e357d.js +2 -0
  150. package/dist/node/column-views.2e4e357d.js.map +1 -0
  151. package/dist/node/column-views.3345cd7a.js +2 -0
  152. package/dist/node/column-views.3345cd7a.js.map +1 -0
  153. package/dist/node/column-views.33752461.js +2 -0
  154. package/dist/node/column-views.33752461.js.map +1 -0
  155. package/dist/node/column-views.39d3a0be.js +2 -0
  156. package/dist/node/column-views.39d3a0be.js.map +1 -0
  157. package/dist/node/column-views.3a55ecd7.css +2 -0
  158. package/dist/node/column-views.3a55ecd7.css.map +1 -0
  159. package/dist/node/column-views.3bd09ad6.js +2 -0
  160. package/dist/node/column-views.3bd09ad6.js.map +1 -0
  161. package/dist/node/column-views.3cb3345e.js +2 -0
  162. package/dist/node/column-views.3cb3345e.js.map +1 -0
  163. package/dist/node/column-views.41876859.js +2 -0
  164. package/dist/node/column-views.41876859.js.map +1 -0
  165. package/dist/node/column-views.45168c80.js +2 -0
  166. package/dist/node/column-views.45168c80.js.map +1 -0
  167. package/dist/node/column-views.4e2bdf9b.js +2 -0
  168. package/dist/node/column-views.4e2bdf9b.js.map +1 -0
  169. package/dist/node/column-views.51fbed89.js +2 -0
  170. package/dist/node/column-views.51fbed89.js.map +1 -0
  171. package/dist/node/column-views.536dc54e.js +2 -0
  172. package/dist/node/column-views.536dc54e.js.map +1 -0
  173. package/dist/node/column-views.5b6833f0.js +2 -0
  174. package/dist/node/column-views.5b6833f0.js.map +1 -0
  175. package/dist/node/column-views.5c1b0eeb.css +2 -0
  176. package/dist/node/column-views.5c1b0eeb.css.map +1 -0
  177. package/dist/node/column-views.664dc6c9.js +2 -0
  178. package/dist/node/column-views.664dc6c9.js.map +1 -0
  179. package/dist/node/column-views.6a0a35e7.js +2 -0
  180. package/dist/node/column-views.6a0a35e7.js.map +1 -0
  181. package/dist/node/column-views.6a4c2100.css +2 -0
  182. package/dist/node/column-views.6a4c2100.css.map +1 -0
  183. package/dist/node/column-views.6a9da051.js +2 -0
  184. package/dist/node/column-views.6a9da051.js.map +1 -0
  185. package/dist/node/column-views.6b441349.js +2 -0
  186. package/dist/node/column-views.6b441349.js.map +1 -0
  187. package/dist/node/column-views.6b6b756b.js +2 -0
  188. package/dist/node/column-views.6b6b756b.js.map +1 -0
  189. package/dist/node/column-views.6bba8c57.js +2 -0
  190. package/dist/node/column-views.6bba8c57.js.map +1 -0
  191. package/dist/node/column-views.6da49480.js +2 -0
  192. package/dist/node/column-views.6da49480.js.map +1 -0
  193. package/dist/node/column-views.7350ac73.js +2 -0
  194. package/dist/node/column-views.7350ac73.js.map +1 -0
  195. package/dist/node/column-views.755f726e.js +2 -0
  196. package/dist/node/column-views.755f726e.js.map +1 -0
  197. package/dist/node/column-views.770d2c95.js +2 -0
  198. package/dist/node/column-views.770d2c95.js.map +1 -0
  199. package/dist/node/column-views.78d3f3c5.js +2 -0
  200. package/dist/node/column-views.78d3f3c5.js.map +1 -0
  201. package/dist/node/column-views.7b9bd06e.css +2 -0
  202. package/dist/node/column-views.7b9bd06e.css.map +1 -0
  203. package/dist/node/column-views.7d45bbeb.js +2 -0
  204. package/dist/node/column-views.7d45bbeb.js.map +1 -0
  205. package/dist/node/column-views.82cf7c0d.js +2 -0
  206. package/dist/node/column-views.82cf7c0d.js.map +1 -0
  207. package/dist/node/column-views.869c7199.js +2 -0
  208. package/dist/node/column-views.869c7199.js.map +1 -0
  209. package/dist/node/column-views.8c00beb4.js +2 -0
  210. package/dist/node/column-views.8c00beb4.js.map +1 -0
  211. package/dist/node/column-views.8cfed88b.js +2 -0
  212. package/dist/node/column-views.8cfed88b.js.map +1 -0
  213. package/dist/node/column-views.8f54691f.js +2 -0
  214. package/dist/node/column-views.8f54691f.js.map +1 -0
  215. package/dist/node/column-views.95411f1b.js +2 -0
  216. package/dist/node/column-views.95411f1b.js.map +1 -0
  217. package/dist/node/column-views.9cb13e51.css +2 -0
  218. package/dist/node/column-views.9cb13e51.css.map +1 -0
  219. package/dist/node/column-views.a025fbe3.js +2 -0
  220. package/dist/node/column-views.a025fbe3.js.map +1 -0
  221. package/dist/node/column-views.a0aac838.js +2 -0
  222. package/dist/node/column-views.a0aac838.js.map +1 -0
  223. package/dist/node/column-views.a501cea0.js +2 -0
  224. package/dist/node/column-views.a501cea0.js.map +1 -0
  225. package/dist/node/column-views.a8ffe072.js +2 -0
  226. package/dist/node/column-views.a8ffe072.js.map +1 -0
  227. package/dist/node/column-views.aff245a8.js +2 -0
  228. package/dist/node/column-views.aff245a8.js.map +1 -0
  229. package/dist/node/column-views.b169b4b5.css +2 -0
  230. package/dist/node/column-views.b169b4b5.css.map +1 -0
  231. package/dist/node/column-views.b773edb8.js +2 -0
  232. package/dist/node/column-views.b773edb8.js.map +1 -0
  233. package/dist/node/column-views.c968a185.css +2 -0
  234. package/dist/node/column-views.c968a185.css.map +1 -0
  235. package/dist/node/column-views.cd3c430b.js +2 -0
  236. package/dist/node/column-views.cd3c430b.js.map +1 -0
  237. package/dist/node/column-views.cd468adb.css +2 -0
  238. package/dist/node/column-views.cd468adb.css.map +1 -0
  239. package/dist/node/column-views.cdcce702.js +2 -0
  240. package/dist/node/column-views.cdcce702.js.map +1 -0
  241. package/dist/node/column-views.ce6808fe.js +2 -0
  242. package/dist/node/column-views.ce6808fe.js.map +1 -0
  243. package/dist/node/column-views.cf90f63d.js +2 -0
  244. package/dist/node/column-views.cf90f63d.js.map +1 -0
  245. package/dist/node/column-views.d6708353.js +2 -0
  246. package/dist/node/column-views.d6708353.js.map +1 -0
  247. package/dist/node/column-views.d9bbd6fb.css +2 -0
  248. package/dist/node/column-views.d9bbd6fb.css.map +1 -0
  249. package/dist/node/column-views.e6720522.js +2 -0
  250. package/dist/node/column-views.e6720522.js.map +1 -0
  251. package/dist/node/column-views.e7e26765.js +2 -0
  252. package/dist/node/column-views.e7e26765.js.map +1 -0
  253. package/dist/node/column-views.e9515ec1.js +2 -0
  254. package/dist/node/column-views.e9515ec1.js.map +1 -0
  255. package/dist/node/column-views.ebb44b7d.js +2 -0
  256. package/dist/node/column-views.ebb44b7d.js.map +1 -0
  257. package/dist/node/column-views.ecc2394a.js +2 -0
  258. package/dist/node/column-views.ecc2394a.js.map +1 -0
  259. package/dist/node/column-views.eea80478.js +2 -0
  260. package/dist/node/column-views.eea80478.js.map +1 -0
  261. package/dist/node/column-views.f7315cbc.css +2 -0
  262. package/dist/node/column-views.f7315cbc.css.map +1 -0
  263. package/dist/node/column-views.f76ba19f.js +2 -0
  264. package/dist/node/column-views.f76ba19f.js.map +1 -0
  265. package/dist/node/column-views.fdaa2963.js +2 -0
  266. package/dist/node/column-views.fdaa2963.js.map +1 -0
  267. package/dist/node/column-views.fea32686.js +2 -0
  268. package/dist/node/column-views.fea32686.js.map +1 -0
  269. package/dist/node/index.js +1 -1
  270. package/dist/node/index.js.map +1 -1
  271. package/package.json +16 -15
  272. package/src/age-axis.module.sass +20 -0
  273. package/src/age-axis.ts +25 -3
  274. package/src/age-model-overlay.ts +2 -2
  275. package/src/column.module.sass +3 -3
  276. package/src/column.ts +92 -19
  277. package/src/correlation-chart/main.ts +25 -12
  278. package/src/correlation-chart/prepare-data.ts +6 -6
  279. package/src/correlation-chart/stories/correlation-chart.stories.ts +12 -6
  280. package/src/data-provider/base.ts +20 -11
  281. package/src/data-provider/column-nav.ts +2 -2
  282. package/src/data-provider/fetch.ts +9 -9
  283. package/src/data-provider/store.ts +15 -10
  284. package/src/{carbon-isotopes → facets/carbon-isotopes}/data-area.ts +5 -4
  285. package/src/{carbon-isotopes → facets/carbon-isotopes}/index.ts +0 -1
  286. package/src/facets/carbon-isotopes/isotopes-column.module.sass +31 -0
  287. package/src/{carbon-isotopes → facets/carbon-isotopes}/isotopes-column.ts +119 -87
  288. package/src/facets/detrital-zircon/index.module.sass +22 -0
  289. package/src/facets/detrital-zircon/index.ts +132 -0
  290. package/src/facets/detrital-zircon/provider.ts +51 -0
  291. package/src/facets/fossils/index.module.sass +14 -0
  292. package/src/facets/fossils/index.ts +120 -0
  293. package/src/facets/fossils/provider.ts +80 -0
  294. package/src/facets/index.ts +3 -0
  295. package/src/index.ts +2 -1
  296. package/src/maps/_shared/inset-map.stories.ts +1 -1
  297. package/src/maps/_shared/inset-map.ts +2 -2
  298. package/src/maps/_shared/styles.ts +3 -1
  299. package/src/maps/column-correlation/column-correlation-map.stories.ts +3 -3
  300. package/src/maps/column-correlation/core.ts +17 -26
  301. package/src/maps/column-correlation/state.ts +9 -9
  302. package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +177 -1
  303. package/src/maps/column-navigation/mapbox/index.ts +18 -15
  304. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +4 -4
  305. package/src/maps/column-navigation/mapbox/state.ts +16 -6
  306. package/src/maps/column-navigation/svg/animated.ts +2 -2
  307. package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +2 -2
  308. package/src/maps/column-navigation/svg/index.ts +2 -4
  309. package/src/maps/column-navigation/svg/layers.ts +5 -7
  310. package/src/maps/column-navigation/utils/keyboard-navigation.ts +1 -1
  311. package/src/notes.ts +49 -0
  312. package/src/prepare-units/composite-scale.ts +73 -25
  313. package/src/prepare-units/helpers.ts +78 -13
  314. package/src/prepare-units/index.ts +17 -17
  315. package/src/prepare-units/utils.ts +7 -7
  316. package/src/section.ts +8 -8
  317. package/src/unit-details/panel.ts +100 -17
  318. package/src/unit-details/popover.ts +5 -5
  319. package/src/units/boxes.ts +20 -10
  320. package/src/units/colors.ts +12 -5
  321. package/src/units/composite.ts +16 -11
  322. package/src/units/index.ts +77 -10
  323. package/src/units/names.ts +19 -16
  324. package/src/units/resolvers.ts +3 -0
  325. package/src/units/selection.ts +44 -11
  326. package/src/units/types.ts +2 -0
  327. package/dist/esm/column-views.062d164a.js +0 -86
  328. package/dist/esm/column-views.062d164a.js.map +0 -1
  329. package/dist/esm/column-views.07521ce6.js +0 -25
  330. package/dist/esm/column-views.07521ce6.js.map +0 -1
  331. package/dist/esm/column-views.1c589cc4.js.map +0 -1
  332. package/dist/esm/column-views.1ece326b.js.map +0 -1
  333. package/dist/esm/column-views.1edc7300.js.map +0 -1
  334. package/dist/esm/column-views.240ef158.css.map +0 -1
  335. package/dist/esm/column-views.28ee5f43.js.map +0 -1
  336. package/dist/esm/column-views.30646469.js.map +0 -1
  337. package/dist/esm/column-views.33dbc778.js.map +0 -1
  338. package/dist/esm/column-views.343b5aa2.js +0 -98
  339. package/dist/esm/column-views.343b5aa2.js.map +0 -1
  340. package/dist/esm/column-views.34636ec7.js.map +0 -1
  341. package/dist/esm/column-views.3bec70d6.js.map +0 -1
  342. package/dist/esm/column-views.3f4db8cb.js +0 -117
  343. package/dist/esm/column-views.3f4db8cb.js.map +0 -1
  344. package/dist/esm/column-views.40c1f361.js.map +0 -1
  345. package/dist/esm/column-views.4c4c5bac.js.map +0 -1
  346. package/dist/esm/column-views.57c4ddf3.js.map +0 -1
  347. package/dist/esm/column-views.5c02fee2.js.map +0 -1
  348. package/dist/esm/column-views.650bd9f5.js.map +0 -1
  349. package/dist/esm/column-views.68409161.js.map +0 -1
  350. package/dist/esm/column-views.86c4b36f.js.map +0 -1
  351. package/dist/esm/column-views.8dd877af.js.map +0 -1
  352. package/dist/esm/column-views.8e51206e.js.map +0 -1
  353. package/dist/esm/column-views.94b5cca1.js +0 -34
  354. package/dist/esm/column-views.94b5cca1.js.map +0 -1
  355. package/dist/esm/column-views.9804efda.js.map +0 -1
  356. package/dist/esm/column-views.9ced149e.js.map +0 -1
  357. package/dist/esm/column-views.a7be0a4a.css +0 -157
  358. package/dist/esm/column-views.a7be0a4a.css.map +0 -1
  359. package/dist/esm/column-views.aa9fcdba.js.map +0 -1
  360. package/dist/esm/column-views.ac9fb5e1.js +0 -163
  361. package/dist/esm/column-views.ac9fb5e1.js.map +0 -1
  362. package/dist/esm/column-views.c58aad3f.js +0 -88
  363. package/dist/esm/column-views.c58aad3f.js.map +0 -1
  364. package/dist/esm/column-views.d1ad48eb.js +0 -11
  365. package/dist/esm/column-views.d1ad48eb.js.map +0 -1
  366. package/dist/esm/column-views.dff52504.js.map +0 -1
  367. package/dist/esm/column-views.e2b9c23c.css.map +0 -1
  368. package/dist/esm/column-views.e77b9d6b.js.map +0 -1
  369. package/dist/esm/column-views.ea237aa8.js.map +0 -1
  370. package/dist/esm/column-views.f71ec4b4.js.map +0 -1
  371. package/dist/esm/column-views.fa6f3292.js.map +0 -1
  372. package/src/carbon-isotopes/column.module.sass +0 -136
  373. package/src/carbon-isotopes/column.ts +0 -133
  374. package/src/carbon-isotopes/core.ts +0 -81
  375. /package/src/{carbon-isotopes → facets/carbon-isotopes}/data-provider.ts +0 -0
@@ -17,7 +17,7 @@ import {
17
17
  PackageLayoutData,
18
18
  } from "./composite-scale";
19
19
  import type { SectionInfo } from "./helpers";
20
- import { agesOverlap, unitsOverlap } from "./utils";
20
+ import { agesOverlap, getUnitHeightRange, unitsOverlap } from "./utils";
21
21
 
22
22
  export * from "./utils";
23
23
  export { preprocessUnits, groupUnitsIntoSections };
@@ -42,7 +42,7 @@ export interface PreparedColumnData extends CompositeColumnData {
42
42
 
43
43
  export function usePreparedColumnUnits(
44
44
  data: UnitLong[],
45
- options: PrepareColumnOptions
45
+ options: PrepareColumnOptions,
46
46
  ): PreparedColumnData {
47
47
  /** This function wraps and memoizes all preparation steps for converting
48
48
  * an array of units from the /units route to a form ready for usage.
@@ -54,7 +54,7 @@ export function usePreparedColumnUnits(
54
54
 
55
55
  export function prepareColumnUnits(
56
56
  units: UnitLong[],
57
- options: PrepareColumnOptions
57
+ options: PrepareColumnOptions,
58
58
  ): PreparedColumnData {
59
59
  /** Prepare units for rendering into Macrostrat columns */
60
60
 
@@ -136,26 +136,14 @@ export function prepareColumnUnits(
136
136
  sectionsWithScales = collapseUnconformitiesByPixelHeight(
137
137
  sectionsWithScales,
138
138
  threshold,
139
- options
139
+ options,
140
140
  );
141
141
  }
142
142
 
143
- /** Reconstitute the units so that they are sorted by section.
144
- * This is mostly important so that unit keyboard navigation
145
- * predictably selects adjacent units.
146
- */
147
- const units2 = sectionsWithScales.reduce((acc, group) => {
148
- const { units } = group;
149
- for (const unit of units) {
150
- acc.push(unit);
151
- }
152
- return acc;
153
- }, []);
154
-
155
143
  /** Prepare section scale information using groups */
156
144
  const { totalHeight, sections: sections2 } = finalizeSectionHeights(
157
145
  sectionsWithScales,
158
- unconformityHeight
146
+ unconformityHeight,
159
147
  );
160
148
 
161
149
  /** For each section, find units that are overlapping.
@@ -169,6 +157,18 @@ export function prepareColumnUnits(
169
157
  };
170
158
  });
171
159
 
160
+ /** Reconstitute the units so that they are sorted by section and properly enhanced.
161
+ * This is mostly important so that unit keyboard navigation
162
+ * predictably selects adjacent units.
163
+ */
164
+ const units2 = sectionsOut.reduce((acc, group) => {
165
+ const { units } = group;
166
+ for (const unit of units) {
167
+ acc.push(unit);
168
+ }
169
+ return acc;
170
+ }, []);
171
+
172
172
  return {
173
173
  units: units2,
174
174
  totalHeight,
@@ -13,13 +13,13 @@ interface UnitsOverlap {
13
13
  a: StratigraphicPackage,
14
14
  b: StratigraphicPackage,
15
15
  axisType?: ColumnAxisType.AGE,
16
- tolerance?: number
16
+ tolerance?: number,
17
17
  ): boolean;
18
18
  (
19
19
  a: BaseUnit,
20
20
  b: BaseUnit,
21
21
  axisType: ColumnAxisType,
22
- tolerance?: number
22
+ tolerance?: number,
23
23
  ): boolean;
24
24
  }
25
25
 
@@ -27,12 +27,12 @@ export const unitsOverlap: UnitsOverlap = function (
27
27
  a,
28
28
  b,
29
29
  axisType: ColumnAxisType = ColumnAxisType.AGE,
30
- tolerance: number = 0.001
30
+ tolerance: number = 0.001,
31
31
  ): boolean {
32
32
  const rel = compareAgeRanges(
33
33
  getUnitHeightRange(a, axisType),
34
34
  getUnitHeightRange(b, axisType),
35
- tolerance
35
+ tolerance,
36
36
  );
37
37
  return rel != AgeRangeRelationship.Disjoint;
38
38
  };
@@ -41,12 +41,12 @@ export const unitsOverlap: UnitsOverlap = function (
41
41
  export function agesOverlap(
42
42
  a: StratigraphicPackage,
43
43
  b: StratigraphicPackage,
44
- tolerance: number = dt
44
+ tolerance: number = dt,
45
45
  ): boolean {
46
46
  return unitsOverlap(a, b, ColumnAxisType.AGE, tolerance);
47
47
  }
48
48
 
49
- interface PossiblyClippedUnit extends BaseUnit {
49
+ export interface PossiblyClippedUnit extends BaseUnit {
50
50
  // Internally created clipped positions
51
51
  t_clip_pos?: number;
52
52
  b_clip_pos?: number;
@@ -54,7 +54,7 @@ interface PossiblyClippedUnit extends BaseUnit {
54
54
 
55
55
  export function getUnitHeightRange(
56
56
  unit: PossiblyClippedUnit,
57
- axisType: ColumnAxisType
57
+ axisType: ColumnAxisType,
58
58
  ): [number, number] {
59
59
  switch (axisType) {
60
60
  case ColumnAxisType.AGE:
package/src/section.ts CHANGED
@@ -120,9 +120,9 @@ function SectionUnitsColumn(props: SectionSharedProps) {
120
120
  width: innerWidth,
121
121
  clipUnits,
122
122
  maxInternalColumns,
123
- } // This unconformity is with the section _above_
123
+ }, // This unconformity is with the section _above_
124
124
  );
125
- })
125
+ }),
126
126
  ),
127
127
  h.if(unconformityLabels)(UnconformityLabels, {
128
128
  width,
@@ -157,7 +157,7 @@ function SectionUnits(props: SectionProps) {
157
157
  nColumns: Math.min(
158
158
  maxInternalColumns ?? Math.floor(width / 10),
159
159
  unitComponentProps?.nColumns ?? Infinity,
160
- Math.max(...units.map((d) => d.column)) + 1
160
+ Math.max(...units.map((d) => d.column)) + 1,
161
161
  ),
162
162
  //axisType,
163
163
  };
@@ -184,8 +184,8 @@ function SectionUnits(props: SectionProps) {
184
184
  unitComponent,
185
185
  unitComponentProps: _unitComponentProps,
186
186
  clipToFrame: clipUnits,
187
- })
188
- )
187
+ }),
188
+ ),
189
189
  );
190
190
  }
191
191
 
@@ -240,9 +240,9 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
240
240
  showAgeAxis: false,
241
241
  ageRange: domain as [number, number],
242
242
  }),
243
- ]
243
+ ],
244
244
  );
245
- })
245
+ }),
246
246
  ),
247
247
  h.if(unconformityLabels)(UnconformityLabels, {
248
248
  width: "100%",
@@ -281,7 +281,7 @@ export function UnconformityLabels(props: {
281
281
  top,
282
282
  },
283
283
  });
284
- })
284
+ }),
285
285
  );
286
286
  }
287
287
 
@@ -15,7 +15,13 @@ import {
15
15
  Value,
16
16
  } from "@macrostrat/data-components";
17
17
  import { useMacrostratData, useMacrostratDefs } from "../data-provider";
18
- import { Environment, UnitLong, UnitLongFull } from "@macrostrat/api-types";
18
+ import {
19
+ Environment,
20
+ UnitLong,
21
+ UnitLongFull,
22
+ Lithology,
23
+ Interval,
24
+ } from "@macrostrat/api-types";
19
25
  import { defaultNameFunction } from "../units/names";
20
26
  import classNames from "classnames";
21
27
 
@@ -35,6 +41,7 @@ export function UnitDetailsPanel({
35
41
  actions,
36
42
  selectUnit,
37
43
  columnUnits,
44
+ onClickItem,
38
45
  }: {
39
46
  unit: any;
40
47
  onClose?: any;
@@ -45,6 +52,7 @@ export function UnitDetailsPanel({
45
52
  lithologyFeatures?: Set<LithologyTagFeature>;
46
53
  columnUnits?: UnitLong[];
47
54
  selectUnit?: (unitID: number) => void;
55
+ onClickItem?: (item: any) => void;
48
56
  }) {
49
57
  const [showJSON, setShowJSON] = useState(false);
50
58
 
@@ -52,7 +60,12 @@ export function UnitDetailsPanel({
52
60
  if (showJSON) {
53
61
  content = h(JSONView, { data: unit, showRoot: false });
54
62
  } else {
55
- content = h(UnitDetailsContent, { unit, features, lithologyFeatures });
63
+ content = h(UnitDetailsContent, {
64
+ unit,
65
+ features,
66
+ lithologyFeatures,
67
+ onClickItem,
68
+ });
56
69
  }
57
70
 
58
71
  let title = defaultNameFunction(unit);
@@ -136,12 +149,19 @@ function UnitDetailsContent({
136
149
  UnitDetailsFeature.AdjacentUnits,
137
150
  UnitDetailsFeature.OutcropType,
138
151
  ]),
152
+ onClickItem,
153
+ getItemHref,
139
154
  }: {
140
155
  unit: UnitLong;
141
156
  selectUnit?: (unitID: number) => void;
142
157
  columnUnits?: UnitLong[];
143
158
  lithologyFeatures?: Set<LithologyTagFeature>;
144
159
  features?: Set<UnitDetailsFeature>;
160
+ onClickItem?: (
161
+ event: MouseEvent,
162
+ item: Lithology | Environment | UnitLong | Interval,
163
+ ) => void;
164
+ getItemHref?: (item: Lithology | Environment | UnitLong) => string | null;
145
165
  }) {
146
166
  const lithMap = useMacrostratDefs("lithologies");
147
167
  const envMap = useMacrostratDefs("environments");
@@ -190,7 +210,7 @@ function UnitDetailsContent({
190
210
  value: formatRange(unit.b_pos, unit.t_pos),
191
211
  children: h(
192
212
  Parenthetical,
193
- h(Value, { value: thickness, unit: thicknessUnit })
213
+ h(Value, { value: thickness, unit: thicknessUnit }),
194
214
  ),
195
215
  });
196
216
  }
@@ -215,37 +235,46 @@ function UnitDetailsContent({
215
235
  label: "Lithology",
216
236
  lithologies,
217
237
  features: lithologyFeatures,
238
+ getItemHref,
239
+ onClickItem,
218
240
  }),
219
241
  h(AgeField, { unit }, [
220
242
  h(Parenthetical, h(Duration, { value: unit.b_age - unit.t_age })),
221
- h(IntervalProportions, { unit }),
243
+ h(IntervalProportions, {
244
+ unit,
245
+ onClickItem,
246
+ }),
222
247
  ]),
223
- h(EnvironmentsList, { environments }),
248
+ h(EnvironmentsList, {
249
+ environments,
250
+ onClickItem,
251
+ getItemHref,
252
+ }),
224
253
  h.if(unit.strat_name_id != null)(
225
254
  DataField,
226
255
  {
227
256
  label: "Stratigraphic name",
228
257
  },
229
- h("span.strat-name-id", unit.strat_name_id)
258
+ h("span.strat-name-id", unit.strat_name_id),
230
259
  ),
231
260
  outcropField,
232
261
  h.if(features.has(UnitDetailsFeature.AdjacentUnits))([
233
262
  h(
234
263
  DataField,
235
264
  { label: "Above" },
236
- h(UnitIDList, { units: unit.units_above, selectUnit })
265
+ h(UnitIDList, { units: unit.units_above, selectUnit }),
237
266
  ),
238
267
  h(
239
268
  DataField,
240
269
  { label: "Below" },
241
- h(UnitIDList, { units: unit.units_below, selectUnit })
270
+ h(UnitIDList, { units: unit.units_below, selectUnit }),
242
271
  ),
243
272
  ]),
244
273
  colorSwatch,
245
274
  h(
246
275
  DataField,
247
276
  { label: "Source", inline: true },
248
- h(BibInfo, { refs: unit.refs })
277
+ h(BibInfo, { refs: unit.refs }),
249
278
  ),
250
279
  ]);
251
280
  }
@@ -300,7 +329,7 @@ function BibInfo({ refs }) {
300
329
 
301
330
  return h(
302
331
  "ul.refs",
303
- refData.map((data, i) => h(Citation, { data, tag: "li", key: i }))
332
+ refData.map((data, i) => h(Citation, { data, tag: "li", key: i })),
304
333
  );
305
334
  }
306
335
 
@@ -324,7 +353,7 @@ function AgeField({ unit, children }) {
324
353
  value: formatRange(b_age, t_age),
325
354
  unit: _unit,
326
355
  },
327
- children
356
+ children,
328
357
  );
329
358
  }
330
359
 
@@ -346,6 +375,48 @@ function getAgeRange(_unit) {
346
375
  return [b_age, t_age, unit];
347
376
  }
348
377
 
378
+ function getAge(value) {
379
+ /** Get the age value in Ma, ka, or Ga as appropriate */
380
+ let unit = "Ma";
381
+ if (value < 0.8) {
382
+ unit = "ka";
383
+ value *= 1000;
384
+ if (value < 5) {
385
+ unit = "yr";
386
+ value *= 1000;
387
+ }
388
+ } else if (value > 1000) {
389
+ unit = "Ga";
390
+ value /= 1000;
391
+ }
392
+
393
+ return [value, unit];
394
+ }
395
+
396
+ export function AgeLabel({
397
+ age,
398
+ maximumFractionDigits = 2,
399
+ minimumFractionDigits = 0,
400
+ className,
401
+ }: {
402
+ age: number;
403
+ className?: string;
404
+ maximumFractionDigits?: number;
405
+ minimumFractionDigits?: number;
406
+ }) {
407
+ /** Component to display a single age value with unit conversion from
408
+ * Ma to ka or Ga as appropriate.
409
+ */
410
+ const [value, unit] = getAge(age);
411
+
412
+ const _value = value.toLocaleString("en-US", {
413
+ maximumFractionDigits,
414
+ minimumFractionDigits,
415
+ });
416
+
417
+ return h(Value, { value: _value, unit, className });
418
+ }
419
+
349
420
  export function Duration({
350
421
  value,
351
422
  maximumFractionDigits = 2,
@@ -374,7 +445,7 @@ export function Duration({
374
445
 
375
446
  function enhanceEnvironments(
376
447
  environments: Partial<Environment>[],
377
- envMap: Map<number, Environment>
448
+ envMap: Map<number, Environment>,
378
449
  ) {
379
450
  return environments.map((env) => {
380
451
  return {
@@ -386,7 +457,7 @@ function enhanceEnvironments(
386
457
 
387
458
  function enhanceLithologies(
388
459
  lithologies: Partial<UnitLong["lith"]>,
389
- lithMap: Map<number, any>
460
+ lithMap: Map<number, any>,
390
461
  ) {
391
462
  return lithologies.map((lith) => {
392
463
  return {
@@ -422,13 +493,13 @@ function UnitIDList({ units, selectUnit }) {
422
493
  },
423
494
  key: unit.id,
424
495
  },
425
- unit
496
+ unit,
426
497
  );
427
- })
498
+ }),
428
499
  );
429
500
  }
430
501
 
431
- function IntervalProportions({ unit }) {
502
+ function IntervalProportions({ unit, onClickItem }) {
432
503
  const i0 = unit.b_int_id;
433
504
  const i1 = unit.t_int_id;
434
505
  let b_prop = unit.b_prop ?? 0;
@@ -456,14 +527,26 @@ function IntervalProportions({ unit }) {
456
527
  p0 = h("span.joint-proportion", [p0, h("span.sep", "to"), p1]);
457
528
  }
458
529
 
530
+ const clickable = onClickItem != null;
531
+
532
+ const handleClick = (event: MouseEvent) => {
533
+ if (onClickItem) {
534
+ onClickItem({ event, data: interval0 });
535
+ }
536
+ };
537
+
459
538
  return h("div.interval-proportions", [
460
539
  h(IntervalTag, {
540
+ className: clickable ? "clickable" : "",
541
+ onClick: clickable ? handleClick : undefined,
461
542
  interval: interval0,
462
543
  prefix: p0,
463
544
  }),
464
545
  h.if(i0 != i1)("span.discourage-break", [
465
546
  h("span.sep", "to"),
466
547
  h(IntervalTag, {
548
+ className: clickable ? "clickable" : "",
549
+ onClick: clickable ? handleClick : undefined,
467
550
  interval: {
468
551
  ...int1,
469
552
  id: i1,
@@ -501,7 +584,7 @@ function formatRange(min, max, precision = null) {
501
584
 
502
585
  return `${formatSignificance(min, precision)}–${formatSignificance(
503
586
  max,
504
- precision
587
+ precision,
505
588
  )}`;
506
589
  }
507
590
 
@@ -34,8 +34,8 @@ export function UnitDetailsPopover({
34
34
  preventOverflow: { options: { padding: viewportPadding } },
35
35
  },
36
36
  },
37
- h("span.popover-target")
38
- )
37
+ h("span.popover-target"),
38
+ ),
39
39
  );
40
40
  }
41
41
 
@@ -48,7 +48,7 @@ function InteractionBarrier({ children }) {
48
48
  e.stopPropagation();
49
49
  },
50
50
  },
51
- children
51
+ children,
52
52
  );
53
53
  }
54
54
 
@@ -76,7 +76,7 @@ export function UnitSelectionPopover() {
76
76
  unit,
77
77
  showLithologyProportions: true,
78
78
  className: "legend-panel",
79
- })
80
- )
79
+ }),
80
+ ),
81
81
  );
82
82
  }
@@ -41,6 +41,7 @@ interface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {
41
41
  fill?: string;
42
42
  backgroundColor?: string;
43
43
  patternColor?: string;
44
+ patternID?: string | number;
44
45
  }
45
46
 
46
47
  export interface LabeledUnitProps
@@ -48,6 +49,7 @@ export interface LabeledUnitProps
48
49
  Clickable,
49
50
  Partial<RectBounds> {
50
51
  division: IUnit;
52
+ patternID?: string | number;
51
53
  label: string;
52
54
  onLabelUpdated?(label: string, shown: boolean);
53
55
  halfWidth?: boolean;
@@ -57,7 +59,7 @@ export interface LabeledUnitProps
57
59
 
58
60
  function useUnitRect(
59
61
  division: IUnit,
60
- options: UnitRectOptions = {}
62
+ options: UnitRectOptions = {},
61
63
  ): RectBounds {
62
64
  const {
63
65
  widthFraction = 1,
@@ -121,7 +123,7 @@ export function MinimalUnit(props) {
121
123
  onClick,
122
124
  }),
123
125
  h.if(selected)("rect.selection-overlay", bounds),
124
- ]
126
+ ],
125
127
  );
126
128
  }
127
129
 
@@ -135,6 +137,7 @@ function Unit(props: UnitProps) {
135
137
  widthFraction = 1,
136
138
  backgroundColor,
137
139
  patternColor,
140
+ patternID,
138
141
  axisType: _, // not sure why this is brought in...
139
142
  ...baseBounds
140
143
  } = props;
@@ -150,8 +153,8 @@ function Unit(props: UnitProps) {
150
153
  overflowTop: hasOverflowTop,
151
154
  overflowBottom: hasOverflowBottom,
152
155
  };
153
- const patternID = resolveID(d);
154
- let _fill = fill ?? useGeologicPattern(patternID, defaultFill);
156
+ const _patternID = patternID ?? resolveID(d);
157
+ let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);
155
158
 
156
159
  const hasBackgroundColor = backgroundColor != null;
157
160
 
@@ -187,7 +190,7 @@ function Unit(props: UnitProps) {
187
190
  h.if(selected)(UnitRect, { ...bounds, className: "selection-overlay" }),
188
191
  //defs,
189
192
  children,
190
- ]
193
+ ],
191
194
  );
192
195
  }
193
196
 
@@ -304,6 +307,7 @@ function LabeledUnit(props: LabeledUnitProps) {
304
307
  widthFraction,
305
308
  showLabel = true,
306
309
  backgroundColor,
310
+ patternID,
307
311
  axisType: _, // not sure why this is brought in...
308
312
  ...baseBounds
309
313
  } = props;
@@ -316,7 +320,13 @@ function LabeledUnit(props: LabeledUnitProps) {
316
320
  const { width, height } = bounds;
317
321
  return h(
318
322
  Unit,
319
- { className: "labeled-unit", division, backgroundColor, ...bounds },
323
+ {
324
+ className: "labeled-unit",
325
+ division,
326
+ backgroundColor,
327
+ patternID,
328
+ ...bounds,
329
+ },
320
330
  [
321
331
  h.if(showLabel)(
322
332
  ForeignObject,
@@ -329,9 +339,9 @@ function LabeledUnit(props: LabeledUnitProps) {
329
339
  onVisibilityChanged(viz) {
330
340
  onLabelUpdated(label, viz);
331
341
  },
332
- })
342
+ }),
333
343
  ),
334
- ]
344
+ ],
335
345
  );
336
346
  }
337
347
 
@@ -342,7 +352,7 @@ function UnitBoxes<T>(props: {
342
352
  transformDivision?: (
343
353
  division: any,
344
354
  index: number,
345
- divisions: any[]
355
+ divisions: any[],
346
356
  ) => T | null;
347
357
  }) {
348
358
  const { unitComponent = Unit, unitComponentProps = {} } = props;
@@ -367,7 +377,7 @@ function UnitBoxes<T>(props: {
367
377
  return h(
368
378
  PatternDefsProvider,
369
379
  { resolveID, scalePattern },
370
- h("g.divisions", children)
380
+ h("g.divisions", children),
371
381
  );
372
382
  }
373
383
 
@@ -1,13 +1,20 @@
1
1
  import chroma from "chroma-js";
2
2
  import { UnitLong } from "@macrostrat/api-types";
3
3
 
4
+ interface KeyOptions {
5
+ key?: string;
6
+ id_key?: string;
7
+ }
8
+
4
9
  export function getMixedUnitColor(
5
10
  unit: UnitLong,
6
11
  lithMap,
7
12
  inDarkMode = false,
8
- asBackground = true
13
+ asBackground = true,
14
+ keyOpts: KeyOptions = null,
9
15
  ): string | null {
10
- const liths = unit.lith;
16
+ const { key = "lith", id_key = "lith_id" } = keyOpts ?? {};
17
+ const liths = unit[key];
11
18
  if (liths == null) {
12
19
  return "gray";
13
20
  }
@@ -18,9 +25,9 @@ export function getMixedUnitColor(
18
25
  prop = null;
19
26
  }
20
27
  return {
21
- lith_id: d.lith_id,
28
+ lith_id: d[id_key],
22
29
  prop,
23
- color: lithMap?.get(d.lith_id)?.color,
30
+ color: lithMap?.get(d[id_key])?.color,
24
31
  };
25
32
  })
26
33
  .filter((d) => d.color != null);
@@ -49,7 +56,7 @@ export function getMixedUnitColor(
49
56
  const baseColor = chroma.average(
50
57
  lithsWithProp.map((d) => d.color),
51
58
  "lrgb",
52
- lithsWithProp.map((d) => d.prop)
59
+ lithsWithProp.map((d) => d.prop),
53
60
  );
54
61
 
55
62
  if (!asBackground) {