@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
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/unit-details/panel.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport styles from \"./panel.module.sass\";\nimport { JSONView } from \"@macrostrat/ui-components\";\nimport { Button, ButtonGroup } from \"@blueprintjs/core\";\nimport { ReactNode, useMemo, useState } from \"react\";\nimport {\n DataField,\n EnvironmentsList,\n IntervalShort,\n IntervalTag,\n ItemList,\n LithologyList,\n LithologyTagFeature,\n Parenthetical,\n Value,\n} from \"@macrostrat/data-components\";\nimport { useMacrostratData, useMacrostratDefs } from \"../data-provider\";\nimport { Environment, UnitLong, UnitLongFull } from \"@macrostrat/api-types\";\nimport { defaultNameFunction } from \"../units/names\";\nimport classNames from \"classnames\";\n\nconst h = hyper.styled(styles);\n\nexport function UnitDetailsPanel({\n unit,\n onClose,\n className,\n features = new Set<UnitDetailsFeature>([\n UnitDetailsFeature.AdjacentUnits,\n UnitDetailsFeature.OutcropType,\n UnitDetailsFeature.JSONToggle,\n UnitDetailsFeature.DepthRange,\n ]),\n lithologyFeatures,\n actions,\n selectUnit,\n columnUnits,\n}: {\n unit: any;\n onClose?: any;\n showLithologyProportions?: boolean;\n className?: string;\n actions?: ReactNode;\n features?: Set<UnitDetailsFeature>;\n lithologyFeatures?: Set<LithologyTagFeature>;\n columnUnits?: UnitLong[];\n selectUnit?: (unitID: number) => void;\n}) {\n const [showJSON, setShowJSON] = useState(false);\n\n let content = null;\n if (showJSON) {\n content = h(JSONView, { data: unit, showRoot: false });\n } else {\n content = h(UnitDetailsContent, { unit, features, lithologyFeatures });\n }\n\n let title = defaultNameFunction(unit);\n\n let hiddenActions = null;\n if (features.has(UnitDetailsFeature.JSONToggle)) {\n hiddenActions = h(Button, {\n icon: \"code\",\n small: true,\n minimal: true,\n key: \"json-view-toggle\",\n className: classNames(\"json-view-toggle\", { enabled: setShowJSON }),\n onClick(evt) {\n setShowJSON(!showJSON);\n evt.stopPropagation();\n },\n });\n }\n\n return h(\"div.unit-details-panel\", { className }, [\n h(LegendPanelHeader, {\n onClose,\n title,\n id: unit.unit_id,\n actions,\n hiddenActions,\n }),\n h(\"div.unit-details-content-holder\", content),\n ]);\n}\n\nexport function LegendPanelHeader({\n title,\n id,\n onClose,\n actions = null,\n hiddenActions,\n}: {\n title?: string | null;\n id?: number | null;\n onClose?: () => void;\n actions?: ReactNode | null;\n hiddenActions?: ReactNode | null;\n}) {\n return h(\"header.legend-panel-header\", [\n h(\"div.title-container\", [\n h.if(title != null)(\"h3\", title),\n h.if(hiddenActions != null)(\"div.hidden-actions\", hiddenActions),\n ]),\n h(\"div.spacer\"),\n h.if(id != null)(\"code\", id),\n h.if(actions != null)(ButtonGroup, { minimal: true }, actions),\n h.if(onClose != null)(Button, {\n icon: \"cross\",\n minimal: true,\n small: true,\n onClick() {\n onClose();\n },\n }),\n ]);\n}\n\nexport enum UnitDetailsFeature {\n AdjacentUnits = \"adjacent-units\",\n Color = \"color\",\n OutcropType = \"outcrop-type\",\n JSONToggle = \"json-toggle\",\n DepthRange = \"depth-range\",\n}\n\nfunction UnitDetailsContent({\n unit,\n selectUnit,\n columnUnits,\n lithologyFeatures = new Set([\n LithologyTagFeature.Proportion,\n LithologyTagFeature.Attributes,\n ]),\n features = new Set<UnitDetailsFeature>([\n UnitDetailsFeature.AdjacentUnits,\n UnitDetailsFeature.OutcropType,\n ]),\n}: {\n unit: UnitLong;\n selectUnit?: (unitID: number) => void;\n columnUnits?: UnitLong[];\n lithologyFeatures?: Set<LithologyTagFeature>;\n features?: Set<UnitDetailsFeature>;\n}) {\n const lithMap = useMacrostratDefs(\"lithologies\");\n const envMap = useMacrostratDefs(\"environments\");\n\n const environments = enhanceEnvironments(unit.environ, envMap);\n const lithologies = enhanceLithologies(unit.lith ?? [], lithMap);\n\n // Create a lookup table of units if provided\n const columnUnitsMap = useMemo(() => {\n const map = new Map<number, UnitLong>();\n for (const colUnit of columnUnits ?? []) {\n map.set(colUnit.unit_id, colUnit);\n }\n return map;\n }, [columnUnits]);\n\n let outcropField = null;\n if (features.has(UnitDetailsFeature.OutcropType)) {\n // Determine outcrop type\n let outcrop = unit.outcrop;\n if (outcrop == \"both\") {\n outcrop = \"surface and subsurface\";\n }\n outcropField = h(DataField, {\n label: \"Outcrop\",\n value: outcrop,\n });\n }\n\n let thicknessOrHeightRange = null;\n const [thickness, thicknessUnit] = getThickness(unit);\n // Proxy for actual heights in t_pos and b_pos\n if (\n features.has(UnitDetailsFeature.DepthRange) &&\n unit.t_pos != null &&\n unit.b_pos != null &&\n unit.min_thick == unit.max_thick && // We have an actual fixed height\n unit.min_thick != 0 // Not a zero thickness\n ) {\n const label = unit.t_pos < unit.b_pos ? \"Depth\" : \"Height\";\n const u1 = \"m\";\n\n thicknessOrHeightRange = h(DataField, {\n unit: u1,\n label,\n value: formatRange(unit.b_pos, unit.t_pos),\n children: h(\n Parenthetical,\n h(Value, { value: thickness, unit: thicknessUnit })\n ),\n });\n }\n thicknessOrHeightRange ??= h(DataField, {\n label: \"Thickness\",\n value: thickness,\n unit: thicknessUnit,\n });\n\n /** We are trying to move away from passing the \"color\" parameter in the API */\n let colorSwatch: ReactNode = null;\n if (\"color\" in unit) {\n const unit1 = unit as UnitLongFull;\n colorSwatch = h(\"div.color-swatch\", {\n style: { backgroundColor: unit1.color },\n });\n }\n\n return h(\"div.unit-details-content\", [\n thicknessOrHeightRange,\n h(LithologyList, {\n label: \"Lithology\",\n lithologies,\n features: lithologyFeatures,\n }),\n h(AgeField, { unit }, [\n h(Parenthetical, h(Duration, { value: unit.b_age - unit.t_age })),\n h(IntervalProportions, { unit }),\n ]),\n h(EnvironmentsList, { environments }),\n h.if(unit.strat_name_id != null)(\n DataField,\n {\n label: \"Stratigraphic name\",\n },\n h(\"span.strat-name-id\", unit.strat_name_id)\n ),\n outcropField,\n h.if(features.has(UnitDetailsFeature.AdjacentUnits))([\n h(\n DataField,\n { label: \"Above\" },\n h(UnitIDList, { units: unit.units_above, selectUnit })\n ),\n h(\n DataField,\n { label: \"Below\" },\n h(UnitIDList, { units: unit.units_below, selectUnit })\n ),\n ]),\n colorSwatch,\n h(\n DataField,\n { label: \"Source\", inline: true },\n h(BibInfo, { refs: unit.refs })\n ),\n ]);\n}\n\nfunction getThickness(unit): [string, string] {\n let minThickness = unit.min_thick ?? 0;\n let maxThickness = unit.max_thick ?? unit.min_thick ?? 0;\n let _unit = \"m\";\n\n if (minThickness == 0 && maxThickness == 0) {\n return [\"Unknown\", null];\n }\n\n if (minThickness < 0.8 && maxThickness < 1.2) {\n // Convert to cm\n minThickness = minThickness * 100;\n maxThickness = maxThickness * 100;\n _unit = \"cm\";\n } else if (minThickness > 800 && maxThickness > 1200) {\n // Convert to km\n minThickness = minThickness / 1000;\n maxThickness = maxThickness / 1000;\n _unit = \"km\";\n }\n\n if (minThickness == maxThickness) {\n return [formatSignificance(minThickness), _unit];\n }\n\n return [formatRange(minThickness, maxThickness), _unit];\n}\n\nfunction ThicknessField({ unit, label = \"Thickness\" }) {\n const [value, thicknessUnit] = getThickness(unit);\n return h(DataField, {\n label,\n value,\n unit: thicknessUnit,\n });\n}\n\nfunction BibInfo({ refs }) {\n const refData = useMacrostratData(\"refs\", refs);\n\n if (refData == null || refData.length === 0) {\n return null;\n }\n\n if (refData.length == 1) {\n return h(Citation, { data: refData[0], tag: \"span\" });\n }\n\n return h(\n \"ul.refs\",\n refData.map((data, i) => h(Citation, { data, tag: \"li\", key: i }))\n );\n}\n\nfunction Citation({ data, tag = \"p\" }) {\n return h(tag, { className: \"citation\" }, [\n h(\"span.authors\", data.author),\n \", \",\n h(\"span.year\", data.pub_year),\n \", \",\n h(\"span.title\", data.ref),\n ]);\n}\n\nfunction AgeField({ unit, children }) {\n const [b_age, t_age, _unit] = getAgeRange(unit);\n\n return h(\n DataField,\n {\n label: \"Age\",\n value: formatRange(b_age, t_age),\n unit: _unit,\n },\n children\n );\n}\n\nfunction getAgeRange(_unit) {\n let b_age = _unit.b_age;\n let t_age = _unit.t_age;\n let unit = \"Ma\";\n\n if (b_age < 0.8 && t_age < 1.2) {\n b_age *= 1000;\n t_age *= 1000;\n unit = \"ka\";\n } else if (b_age > 800 && t_age > 1200) {\n b_age /= 1000;\n t_age /= 1000;\n unit = \"Ga\";\n }\n\n return [b_age, t_age, unit];\n}\n\nexport function Duration({\n value,\n maximumFractionDigits = 2,\n minimumFractionDigits = 0,\n}) {\n let unit = \"Myr\";\n if (value < 0.8) {\n unit = \"kyr\";\n value *= 1000;\n if (value < 5) {\n unit = \"yr\";\n value *= 1000;\n }\n } else if (value > 1000) {\n unit = \"Gyr\";\n value /= 1000;\n }\n\n let _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits,\n minimumFractionDigits,\n });\n\n return h(Value, { value: _value, unit });\n}\n\nfunction enhanceEnvironments(\n environments: Partial<Environment>[],\n envMap: Map<number, Environment>\n) {\n return environments.map((env) => {\n return {\n ...(envMap?.get(env.environ_id) ?? {}),\n ...env,\n };\n });\n}\n\nfunction enhanceLithologies(\n lithologies: Partial<UnitLong[\"lith\"]>,\n lithMap: Map<number, any>\n) {\n return lithologies.map((lith) => {\n return {\n ...(lithMap?.get(lith.lith_id) ?? {}), // get lithology details\n ...lith, // override with the unit's specific lithology data\n };\n });\n}\n\nfunction UnitIDList({ units, selectUnit }) {\n const u1 = units.filter((d) => d != 0);\n\n if (u1.length === 0) {\n return h(\"span.no-units\", \"None\");\n }\n\n let tag = \"span\";\n if (selectUnit != null) {\n tag = \"a\";\n }\n\n return h(\n ItemList,\n { className: \"unit-id-list\" },\n u1.map((unit) => {\n return h(\n tag,\n\n {\n className: \"unit-id\",\n onClick() {\n selectUnit?.(unit.id);\n },\n key: unit.id,\n },\n unit\n );\n })\n );\n}\n\nfunction IntervalProportions({ unit }) {\n const i0 = unit.b_int_id;\n const i1 = unit.t_int_id;\n let b_prop = unit.b_prop ?? 0;\n let t_prop = unit.t_prop ?? 1;\n\n const intervalMap = useMacrostratDefs(\"intervals\");\n const int0 = intervalMap?.get(i0) ?? {};\n\n const interval0: IntervalShort = {\n ...int0,\n id: i0,\n name: unit.b_int_name,\n };\n\n let p0: ReactNode = null;\n const int1 = intervalMap?.get(i1) ?? {};\n const p1: ReactNode = h(Proportion, { value: t_prop });\n\n if (i0 !== i1 || b_prop !== 0 || t_prop !== 1) {\n // We have a single interval with undefined proportions\n p0 = h(Proportion, { value: b_prop });\n }\n\n if (i0 === i1 && (b_prop !== 0 || t_prop !== 1)) {\n p0 = h(\"span.joint-proportion\", [p0, h(\"span.sep\", \"to\"), p1]);\n }\n\n return h(\"div.interval-proportions\", [\n h(IntervalTag, {\n interval: interval0,\n prefix: p0,\n }),\n h.if(i0 != i1)(\"span.discourage-break\", [\n h(\"span.sep\", \"to\"),\n h(IntervalTag, {\n interval: {\n ...int1,\n id: i1,\n name: unit.t_int_name,\n },\n prefix: p1,\n }),\n ]),\n ]);\n}\n\nconst formatProportion = (d) => {\n if (d == null) return null;\n return d.toFixed(1);\n};\n\nfunction Proportion({ value }) {\n let content = null;\n if (value == 0) {\n content = \"base\";\n } else if (value == 1) {\n content = \"top\";\n } else {\n content = formatProportion(value * 100) + \"%\";\n }\n\n return h(\"span.proportion\", content);\n}\n\nfunction formatRange(min, max, precision = null) {\n if (min == null || max == null) return null;\n if (min === max) {\n return min.toFixed(precision);\n }\n\n return `${formatSignificance(min, precision)}–${formatSignificance(\n max,\n precision\n )}`;\n}\n\nfunction formatSignificance(value, precision = null) {\n // Format to preserve a reasonable number of significant figures\n // this could be done with an easier algorithm, probably:\n\n if (precision == null) {\n return value.toLocaleString();\n }\n if (precision >= 0) {\n return value.toFixed(precision);\n }\n if (precision < 0) {\n return (\n (value / Math.pow(10, -precision)).toFixed(0) + \"0\".repeat(-precision)\n );\n }\n}\n"],"names":[],"version":3,"file":"column-views.1ece326b.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;AAGO,SAAS,0CACd,IAAc,EACd,OAAO,EACP,aAAa,KAAK,EAClB,eAAe,IAAI;IAEnB,MAAM,QAAQ,KAAK,IAAI;IACvB,IAAI,SAAS,MACX,OAAO;IAET,MAAM,WAAW,MACd,GAAG,CAAC,CAAC;QACJ,IAAI,OAAO,EAAE,IAAI;QACjB,IAAI,QAAQ,QAAQ,MAAM,SAAS,QAAQ,GACzC,OAAO;QAET,OAAO;YACL,SAAS,EAAE,OAAO;kBAClB;YACA,OAAO,SAAS,IAAI,EAAE,OAAO,GAAG;QAClC;IACF,GACC,MAAM,CAAC,CAAC,IAAM,EAAE,KAAK,IAAI;IAE5B,MAAM,gBAAgB,SAAS,MAAM,CAAC,CAAC,IAAM,EAAE,IAAI,IAAI;IACvD,MAAM,mBAAmB,SAAS,MAAM,CAAC,CAAC,IAAM,EAAE,IAAI,IAAI;IAE1D,MAAM,YAAY,cAAc,MAAM,CAAC,CAAC,KAAK,IAAM,MAAM,EAAE,IAAI,EAAE;IACjE,IAAI,YAAY,KAAK,iBAAiB,MAAM,GAAG,GAAG;QAChD,MAAM,gBAAgB,IAAI;QAC1B,mEAAmE;QACnE,MAAM,YAAY,gBAAgB,iBAAiB,MAAM;QACzD,iBAAiB,OAAO,CAAC,CAAC;YACxB,cAAc,IAAI,CAAC;gBACjB,GAAG,CAAC;gBACJ,MAAM;YACR;QACF;IACF;IAEA,IAAI,cAAc,MAAM,IAAI,GAC1B,OAAO;IAGT,4BAA4B;IAC5B,MAAM,YAAY,CAAA,GAAA,eAAK,EAAE,OAAO,CAC9B,cAAc,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK,GAChC,QACA,cAAc,GAAG,CAAC,CAAC,IAAM,EAAE,IAAI;IAGjC,IAAI,CAAC,cACH,OAAO,UAAU,GAAG;IAGtB,IAAI,YACF,OAAO,UAAU,GAAG,CAAC,SAAS,KAAK,GAAG;SAEtC,OAAO,UAAU,GAAG,CAAC,SAAS,KAAK,GAAG;AAE1C","sources":["packages/column-views/src/units/colors.ts"],"sourcesContent":["import chroma from \"chroma-js\";\nimport { UnitLong } from \"@macrostrat/api-types\";\n\nexport function getMixedUnitColor(\n unit: UnitLong,\n lithMap,\n inDarkMode = false,\n asBackground = true\n): string | null {\n const liths = unit.lith;\n if (liths == null) {\n return \"gray\";\n }\n const lithData = liths\n .map((d) => {\n let prop = d.prop;\n if (prop == null || isNaN(prop) || prop <= 0) {\n prop = null;\n }\n return {\n lith_id: d.lith_id,\n prop,\n color: lithMap?.get(d.lith_id)?.color,\n };\n })\n .filter((d) => d.color != null);\n\n const lithsWithProp = lithData.filter((d) => d.prop != null);\n const lithsWithoutProp = lithData.filter((d) => d.prop == null);\n\n const totalProp = lithsWithProp.reduce((sum, d) => sum + d.prop, 0);\n if (totalProp < 1 && lithsWithoutProp.length > 0) {\n const remainingProp = 1 - totalProp;\n // Distribute remaining proportion equally among liths without prop\n const equalProp = remainingProp / lithsWithoutProp.length;\n lithsWithoutProp.forEach((d) => {\n lithsWithProp.push({\n ...d,\n prop: equalProp,\n });\n });\n }\n\n if (lithsWithProp.length == 0) {\n return null;\n }\n\n // Mix colors proportionally\n const baseColor = chroma.average(\n lithsWithProp.map((d) => d.color),\n \"lrgb\",\n lithsWithProp.map((d) => d.prop)\n );\n\n if (!asBackground) {\n return baseColor.hex();\n }\n\n if (inDarkMode) {\n return baseColor.set(\"hsl.l\", 0.2).hex();\n } else {\n return baseColor.set(\"hsl.l\", 0.9).hex();\n }\n}\n"],"names":[],"version":3,"file":"column-views.1edc7300.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"AAAA;;;;;;AAWE;EACE;;;;;;;;EAOI;;;;EAEA;;;;;AAIN;;;;;;;;AAOE;;;;AAIF;;;;;;;;;;AAUE;;;;;AAKA;;;;;AAIF;;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BF;;;;;;;AAOE;;;;;;;;;;;;;;;AAWE;;;;;AAMF","sources":["packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container, body:global(.light-mode) .column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-emphasized-color, #000)\n --column-text-color: var(--text-emphasized-color, #000)\n\n/* We have to duplicate the dark mode styles here\n because we want to set them either if the preferred\n color scheme is dark OR if dark mode is explicitly enabled.\n If dark mode is explicitly enabled, we want to override\n the media query. */\n@media (prefers-color-scheme: dark)\n body:not(:global(.light-mode)) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n\n .unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\n\n .selection-overlay\n fill: var(--selection-overlay-color, red)\n fill-opacity: var(--selection-overlay-opacity, 0.5)\n\n g.lithology-column use.frame\n stroke: var(--column-stroke-color)\n stroke-width: 1.5px !important\n pointer-events: none\n\n.column-container :global .unit-label\n text-align: center\n\n.column-container :global .col-note-label\n font-size: 10px\n margin-top: 3px\n padding: 2px\n padding-left: 3px\n line-height: 9px\n border-left: none !important\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .default-buttons\n width: 100%\n margin: 0 -10px\n\n.column-container :global div.section\n display: flex\n flex-direction: row\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global(.timescale)\n width: calc(calc(1.5em + 1.5px) * var(--timescale-level-count, 4))\n --timescale-level-size: 1.5em\n\n.timescale-column\n position: relative\n\n.section-main\n position: relative\n margin-bottom: -4px\n\n.section-units-container\n position: relative\n\n.main-column\n position: relative\n\n.unconformity-labels\n position: absolute\n top: 0\n left: 0\n pointer-events: none\n\n\n.unconformity\n text-align: center\n position: absolute\n top: 0px\n display: flex\n justify-content: center\n align-items: center\n font-size: 0.8em\n &.giga\n font-weight: 800\n font-size: 1em\n &.mega\n font-weight: 600\n font-weight: 700\n font-size: 0.9em\n &.large\n font-weight: 600\n &.small\n font-weight: 300\n\n\n.unconformity-text\n width: var(--column-width)\n color: var(--column-stroke-color)\n --unit-font-style: normal\n\n\n"],"names":[],"version":3,"file":"column-views.240ef158.css.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/data-provider/base.ts"],"sourcesContent":["/** Data provider for information that needs to be loaded in bulk for frontend views */\nimport baseFetch from \"cross-fetch\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { create, useStore } from \"zustand\";\nimport {\n ColumnGeoJSONRecord,\n ColumnGeoJSONRecordWithID,\n Environment,\n MacrostratRef,\n} from \"@macrostrat/api-types\";\nimport {\n fetchAllColumns,\n fetchEnvironments,\n fetchIntervals,\n fetchLithologies,\n fetchRefs,\n} from \"./fetch\";\nimport { APIProvider } from \"@macrostrat/ui-components\";\nimport { ColumnProvider } from \"@macrostrat/column-components\";\n\nimport { ReactNode } from \"react\";\nimport { useMacrostratColumnData } from \"./store\";\n\nexport interface MacrostratDataProviderProps {\n baseURL: string;\n children: React.ReactNode;\n}\n\ninterface ColumnFootprintsStorage {\n project_id: number;\n // Whether the \"in process\" flag was used\n inProcess: boolean;\n // The column footprints\n columns: ColumnGeoJSONRecordWithID[];\n}\n\ninterface RefsSlice {\n refs: Map<number, MacrostratRef>;\n inFlightRequests: Set<string>; // Track requests to avoid duplicates\n getRefs(ids: number[]): Promise<MacrostratRef[]>;\n}\n\ninterface MacrostratStore extends RefsSlice {\n baseURL: string;\n fetch: any;\n lithologies: Map<number, any> | null;\n getLithologies(ids: number[] | null): Promise<any>;\n intervals: Map<number, any> | null;\n getIntervals(ids: number[] | null, timescaleID: number | null): Promise<any>;\n environments: Map<number, Environment> | null;\n getEnvironments(ids: number[] | null): Promise<Environment[]>;\n columnFootprints: Map<number, ColumnFootprintsStorage>;\n getColumns(\n projectID: number | null,\n inProcess: boolean\n ): Promise<ColumnGeoJSONRecord[]>;\n}\n\nfunction createMacrostratStore(\n baseURL: string = \"https://macrostrat.org/api/v2\"\n) {\n return create<MacrostratStore>((set, get): MacrostratStore => {\n return {\n baseURL,\n inFlightRequests: new Set(),\n async fetch(url: string, options?: RequestInit) {\n const url1 = baseURL + url;\n // Avoid duplicate requests\n const { inFlightRequests } = get();\n if (inFlightRequests.has(url1)) {\n return null; // Return null if already in flight\n }\n inFlightRequests.add(url1);\n //set({ inFlightRequests });\n const res = await baseFetch(url1, options);\n inFlightRequests.delete(url1);\n //set({in})\n return res;\n },\n ...createLithologiesSlice(set, get),\n ...createIntervalsSlice(set, get),\n ...createEnvironmentsSlice(set, get),\n ...createColumnsSlice(set, get),\n ...createRefsSlice(set, get),\n };\n });\n}\n\nfunction createRefsSlice(set, get) {\n return {\n refs: new Map(),\n async getRefs(ids: number[]): Promise<MacrostratRef[]> {\n const { refs, fetch } = get();\n const missing = ids.filter((id) => !refs.has(id));\n if (missing.length == 0) {\n return ids.map((id) => refs.get(id));\n }\n const data = await fetchRefs(missing, fetch);\n if (data == null) return [];\n for (const d of data) {\n refs.set(d.ref_id, d);\n }\n set({ refs });\n return ids.map((id) => refs.get(id));\n },\n };\n}\n\nfunction createColumnsSlice(set, get) {\n // Column footprints separated by project\n return {\n columnFootprints: new Map(),\n async getColumns(projectID: number | null, inProcess: boolean) {\n const { columnFootprints, baseURL, fetch } = get();\n const key = projectID ?? -1;\n let _inProcess = inProcess;\n if (projectID == null) {\n // If no project is specified, in process columns cannot be included\n _inProcess = false;\n }\n let footprints = columnFootprints.get(key);\n if (footprints == null || footprints.inProcess != _inProcess) {\n // Fetch the columns\n const statusCode = inProcess ? \"in process\" : null;\n let columns = await fetchAllColumns({\n projectID,\n statusCode: null,\n fetch,\n });\n if (columns == null) {\n return;\n }\n if (_inProcess) {\n const inProcessColumns = await fetchAllColumns({\n projectID,\n statusCode: \"in process\",\n fetch,\n });\n if (inProcessColumns == null) {\n return;\n }\n // Combine active and in-process columns\n columns = columns.concat(inProcessColumns);\n }\n\n footprints = {\n project_id: projectID,\n inProcess,\n columns,\n };\n // We could break multi-project result sets into separate caches here...\n // Copy the original map\n const columnFootprints2 = new Map(columnFootprints);\n columnFootprints2.set(key, footprints);\n set({ columnFootprints: columnFootprints2 });\n }\n return footprints.columns;\n },\n };\n}\n\nfunction createLithologiesSlice(set, get) {\n return {\n lithologies: null,\n async getLithologies(ids: number[] | null) {\n const { lithologies, fetch } = get();\n let lithMap = lithologies;\n if (lithMap == null) {\n const data = await fetchLithologies(fetch);\n if (data == null) return;\n lithMap = new Map(data.map((d) => [d.lith_id, d]));\n set({ lithologies: lithMap });\n }\n // Now get the lithologies\n if (ids == null) return lithMap.values();\n return ids.map((id) => lithMap.get(id));\n },\n };\n}\n\nfunction createEnvironmentsSlice(set, get) {\n return {\n environments: null,\n async getEnvironments(ids: number[] | null): Promise<Environment[]> {\n const { environments, fetch } = get();\n let envMap = environments;\n if (envMap == null) {\n const data = await fetchEnvironments(fetch);\n if (data == null) return [];\n envMap = new Map(data.map((d) => [d.environ_id, d]));\n set({ environments: envMap });\n }\n // Now get the environments\n if (ids == null) return envMap.values();\n return ids.map((id) => envMap.get(id));\n },\n };\n}\n\nfunction createIntervalsSlice(set, get) {\n return {\n intervals: null,\n async getIntervals(ids: number[] | null, timescaleID: number | null) {\n const { intervals, fetch } = get();\n let _intervals = intervals;\n if (intervals == null || !includesTimescale(intervals, timescaleID)) {\n // Fetch the intervals\n const data = await fetchIntervals(timescaleID, fetch);\n if (data == null) {\n return [];\n }\n const intervalMap = intervals ?? new Map();\n for (const d of data) {\n intervalMap.set(d.int_id, d);\n }\n _intervals = intervalMap;\n set({ intervals: _intervals });\n }\n if (ids == null && timescaleID == null)\n return Array.from(_intervals.values());\n if (timescaleID != null) {\n return Array.from(_intervals.values() as any[]).filter(\n (d) => d.timescale_id == timescaleID\n );\n }\n return ids.map((id) => intervals.get(id));\n },\n };\n}\n\nfunction includesTimescale(intervals: Map<number, any>, timescaleID: number) {\n if (intervals == null) return false;\n if (timescaleID == null) return true;\n return Array.from(intervals.values()).some(\n (d) => d.timescale_id == timescaleID\n );\n}\n\ntype MacrostratSelector = (store: MacrostratStore) => any;\n\nexport function useMacrostratStore(selector: MacrostratSelector | \"api\") {\n const ctx = useContext(MacrostratDataProviderContext);\n if (ctx == null) {\n throw new Error(\"Missing MacrostratDataProvider\");\n }\n if (selector === \"api\") {\n return ctx;\n }\n\n return useStore(ctx, selector);\n}\n\nconst dataTypeMapping = {\n lithologies: (store) => store.getLithologies,\n intervals: (store) => store.getIntervals,\n columns: (store) => store.getColumns,\n environments: (store) => store.getEnvironments,\n refs: (store) => store.getRefs,\n};\n\nexport function useMacrostratDefs(dataType: string): Map<number, any> | null {\n if (dataType == \"columns\") {\n throw new Error(\"Columns are not provided as a map\");\n }\n const operator = useMacrostratStore(dataTypeMapping[dataType]);\n useEffect(() => {\n operator();\n }, []);\n return useMacrostratStore((state) => state[dataType]);\n}\n\nexport function useMacrostratColumns(\n projectID: number | null,\n inProcess: boolean\n) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n const columnsMap = useMacrostratStore((s) => s.columnFootprints);\n const key = projectID ?? -1;\n const colData = columnsMap?.get(key);\n useEffect(() => {\n // Refetch if the columns are not available, or if we have requested inProcess columns where we didn't before\n if (colData == null || (inProcess && !colData.inProcess)) {\n getColumns(projectID, inProcess);\n }\n // If we've already fetched the columns there's nothing to do...\n }, [colData, inProcess, getColumns]);\n\n return useMemo(() => {\n if (colData == null) return null;\n let columns = colData.columns;\n if (!inProcess && colData.inProcess) {\n // Our available set of columns includes 'in process' columns, but we don't want them\n columns.features = columns.features?.filter(\n (d) => d.properties.status != \"in process\"\n );\n }\n return columns;\n }, [colData, inProcess]);\n}\n\nexport function useMacrostratData(dataType: string, ...args: any[]) {\n const selector = dataTypeMapping[dataType];\n const operator = useMacrostratStore(selector);\n\n const [value, setValue] = useState(null);\n\n useEffect(() => {\n operator(...args).then(setValue);\n }, [operator, ...args]);\n\n return value;\n}\n\n/** By default, we provide a store linked to the production API */\nconst MacrostratDataProviderContext = createContext(createMacrostratStore());\n\nexport function MacrostratDataProvider(props: MacrostratDataProviderProps) {\n const { baseURL = \"https://macrostrat.org/api/v2\", children } = props;\n\n const [store] = useState(() => createMacrostratStore(baseURL));\n\n return h(\n MacrostratAPIProvider,\n { baseURL },\n h(MacrostratDataProviderContext.Provider, { value: store }, children)\n );\n}\n\n/** Legacy API provider so useAPIResult can work */\n\ntype APIProviderProps = {\n children: ReactNode;\n useDev?: boolean;\n baseURL?: string;\n};\n\nexport function MacrostratAPIProvider({\n children,\n useDev = false,\n baseURL,\n}: APIProviderProps) {\n baseURL ??= useDev\n ? \"https://dev2.macrostrat.org/api/v2\"\n : \"https://macrostrat.org/api/v2\";\n\n return h(\n APIProvider,\n {\n baseURL,\n unwrapResponse: (res) => res.success.data,\n },\n children\n );\n}\n\nexport function MacrostratColumnProvider(props) {\n /** A column provider specialized the Macrostrat API. Maps more\n * generic concepts to Macrostrat-specific ones.\n */\n\n const { axisType } = useMacrostratColumnData();\n const { units, domain, pixelScale, children } = props;\n return h(\n ColumnProvider,\n { axisType, divisions: units, range: domain, pixelsPerMeter: pixelScale },\n children\n );\n}\n\n/** This is now a legacy provider */\nexport function LithologiesProvider({ children }) {\n useEffect(() => {\n console.warn(\n \"LithologiesProvider is deprecated. Replace with MacrostratDataProvider\"\n );\n }, []);\n return children;\n}\n\nexport function useLithologies() {\n const getLithologies = useMacrostratStore((s) => s.getLithologies);\n const lithologies = useMacrostratStore((s) => s.lithologies);\n useEffect(() => {\n if (lithologies == null) getLithologies();\n }, [lithologies, getLithologies]);\n return lithologies;\n}\n"],"names":[],"version":3,"file":"column-views.28ee5f43.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/maps/column-correlation/state.ts"],"sourcesContent":["import { LineString, Point } from \"geojson\";\nimport { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecord } from \"@macrostrat/api-types\";\n// Turf intersection\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport distance from \"@turf/distance\";\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\nimport { centroid } from \"@turf/centroid\";\nimport mapboxgl from \"mapbox-gl\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { createComputed } from \"zustand-computed\";\nimport { useMacrostratColumns } from \"../../data-provider/base\";\n\nexport interface CorrelationMapInput {\n columns: ColumnGeoJSONRecord[];\n focusedLine: LineString | null;\n}\n\nexport interface CorrelationMapStore extends CorrelationMapInput {\n onClickMap: (event: mapboxgl.MapMouseEvent, point: Point) => void;\n}\n\nexport interface CorrelationProviderProps extends CorrelationMapInput {\n projectID?: number;\n inProcess?: boolean;\n columns: ColumnGeoJSONRecord[] | null;\n children: ReactNode;\n onSelectColumns?: (\n columns: FocusedColumnGeoJSONRecord[],\n line: LineString | null\n ) => void;\n}\n\nconst CorrelationStoreContext =\n createContext<StoreApi<CorrelationMapStore> | null>(null);\n\ntype ComputedStore = {\n focusedColumns: FocusedColumnGeoJSONRecord[];\n};\n\n/** A computed store that will automatically update when the state changes */\nconst computed = createComputed((state: CorrelationMapStore): ComputedStore => {\n return {\n // We compute the focused columns based on columns and focusedLine\n focusedColumns: buildCorrelationColumns(state.columns, state.focusedLine),\n };\n}) as any;\n\nexport function ColumnCorrelationProvider({\n children,\n columns,\n projectID,\n inProcess,\n focusedLine,\n onSelectColumns,\n}: CorrelationProviderProps) {\n const [store] = useState(() => {\n return create<CorrelationMapStore & ComputedStore>(\n computed((set, get): CorrelationMapStore => {\n return {\n focusedLine,\n columns: null,\n onClickMap(event: mapboxgl.MapMouseEvent, point: Point) {\n const state = get();\n // Check if shift key is pressed\n const shiftKeyPressed = event.originalEvent.shiftKey;\n let existingCoords = state.focusedLine?.coordinates ?? [];\n\n if (existingCoords.length >= 2 && !shiftKeyPressed) {\n // Reset the line to zero length\n existingCoords = [];\n }\n set({\n focusedLine: {\n type: \"LineString\",\n coordinates: [...existingCoords, point.coordinates],\n },\n });\n },\n };\n })\n );\n });\n\n // Set up the store\n /** TODO: move the fetching of all columns to within the map */\n const _columns = useMacrostratColumns(projectID, inProcess);\n useEffect(() => {\n if (_columns != null) {\n store.setState({ columns: _columns });\n }\n }, [_columns]);\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n const focusedColumns = useStore(store, (state) => state.focusedColumns);\n const _focusedLine = useStore(store, (state) => state.focusedLine);\n\n useEffect(() => {\n onSelectColumns?.(focusedColumns, _focusedLine);\n }, [focusedColumns, _focusedLine]);\n\n return h(CorrelationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useCorrelationMapStore(\n selector: (state: CorrelationMapStore & ComputedStore) => any\n) {\n const storeApi = useContext(CorrelationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing CorrelationMapProvider\");\n }\n return useStore(storeApi, selector);\n}\n\nfunction buildCorrelationColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString\n): FocusedColumnGeoJSONRecord[] {\n if (columns == null || line == null || line.coordinates.length < 2) {\n return [];\n }\n return orderColumnsByDistance(\n computeIntersectingColumns(columns, line),\n line\n );\n}\n\nfunction computeIntersectingColumns(\n columns: ColumnGeoJSONRecord[],\n line: LineString\n): ColumnGeoJSONRecord[] {\n if (columns == null || line == null) {\n return [];\n }\n\n return columns.filter((col) => {\n const poly = col.geometry;\n\n // Some in-process datasets seem to have null geometries\n if (poly == null) return false;\n if (poly.type != \"Polygon\" && poly.type != \"MultiPolygon\") return false;\n\n const intersection = lineIntersect(line, poly);\n return intersection.features.length > 0;\n });\n}\n\ninterface FocusedColumnGeoJSONRecord extends ColumnGeoJSONRecord {\n properties: {\n centroid: Point;\n nearestPointOnLine: Point;\n distanceAlongLine: number;\n } & ColumnGeoJSONRecord[\"properties\"];\n}\n\nfunction orderColumnsByDistance(\n columns: ColumnGeoJSONRecord[],\n line: LineString\n): FocusedColumnGeoJSONRecord[] {\n const centroids = columns.map((col) => centroid(col.geometry));\n const projectedPoints = centroids.map((point) =>\n nearestPointOnLine(line, point)\n );\n const distances = projectedPoints.map((point) =>\n distance(point.geometry.coordinates, line.coordinates[0])\n );\n\n let newColumns = columns.map((col, i) => {\n return {\n ...col,\n properties: {\n ...col.properties,\n centroid: centroids[i],\n nearestPointOnLine: projectedPoints[i],\n distanceAlongLine: distances[i],\n },\n };\n });\n\n return sorted(newColumns, (d) => d.properties.distanceAlongLine);\n}\n\nfunction sorted(data, accessor: (d) => number) {\n return data.sort((a, b) => accessor(a) - accessor(b));\n}\n"],"names":[],"version":3,"file":"column-views.30646469.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;AAGO,SAAS,0CAAkB,KAAa;IAC7C,MAAM,cAAc,SAAS,CAAA,GAAA,qBAAa,EAAE,uBAAuB;IACnE,OAAO;QACL,SAAS;YACP,SAAS,CAAA,GAAA,yBAAiB;QAC5B;QACA,QAAQ;YACN;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,gBAAgB;wBACd;wBACA;4BAAC;4BAAW;gCAAC;gCAAiB;6BAAW;4BAAE;yBAAM;wBACjD;wBACA;4BAAC;4BAAW;gCAAC;gCAAiB;6BAAQ;4BAAE;yBAAM;wBAC9C;wBACA;qBACD;gBACH;YACF;YACA;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,cAAc;oBACd,gBAAgB;gBAClB;YACF;YACA;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,iBAAiB;oBACjB,gBAAgB;oBAChB,kBAAkB;wBAChB;wBACA;4BAAC;4BAAW;gCAAC;gCAAiB;6BAAW;4BAAE;yBAAM;wBACjD;wBACA;4BAAC;4BAAW;gCAAC;gCAAiB;6BAAQ;4BAAE;yBAAM;wBAC9C;wBACA;qBACD;gBACH;gBACA,QAAQ;oBAAC;oBAAM;oBAAS;iBAAQ;YAClC;SACD;IACH;AACF","sources":["packages/column-views/src/maps/_shared/styles.ts"],"sourcesContent":["import { getCSSVariable } from \"@macrostrat/color-utils\";\nimport { buildGeoJSONSource } from \"@macrostrat/mapbox-utils\";\n\nexport function buildColumnsStyle(color: string) {\n const columnColor = color ?? getCSSVariable(\"--text-subtle-color\", \"black\");\n return {\n sources: {\n columns: buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"columns-fill\",\n type: \"fill\",\n source: \"columns\",\n paint: {\n \"fill-color\": columnColor,\n \"fill-opacity\": [\n \"case\",\n [\"boolean\", [\"feature-state\", \"selected\"], false],\n 0.5,\n [\"boolean\", [\"feature-state\", \"hover\"], false],\n 0.3,\n 0.1,\n ],\n },\n },\n {\n id: \"columns-line\",\n type: \"line\",\n source: \"columns\",\n paint: {\n \"line-color\": columnColor,\n \"line-width\": 2,\n \"line-opacity\": 0.5,\n },\n },\n {\n id: \"columns-points\",\n type: \"circle\",\n source: \"columns\",\n paint: {\n \"circle-radius\": 4,\n \"circle-color\": columnColor,\n \"circle-opacity\": [\n \"case\",\n [\"boolean\", [\"feature-state\", \"selected\"], false],\n 1,\n [\"boolean\", [\"feature-state\", \"hover\"], false],\n 0.7,\n 0.5,\n ],\n },\n filter: [\"==\", \"$type\", \"Point\"],\n },\n ],\n };\n}\n"],"names":[],"version":3,"file":"column-views.33dbc778.js.map"}
@@ -1,98 +0,0 @@
1
- import {UnitNamesColumn as $bc17276da4abb183$export$594d19cdd88f8c16} from "./column-views.650bd9f5.js";
2
- import {UnitBoxes as $d254716a820e9c85$export$5d1cdfabe8dc8085} from "./column-views.5c02fee2.js";
3
- import {getMixedUnitColor as $6698edd2a743bf07$export$175d3e927f1a9860} from "./column-views.1edc7300.js";
4
- import {TrackedLabeledUnit as $8c8238faa5cde49c$export$f613830566442374, LabelTrackerProvider as $8c8238faa5cde49c$export$e4e89ab6c86ac513, CompositeUnitComponent as $8c8238faa5cde49c$export$1dfa200d57964eee, CompositeUnitsColumn as $8c8238faa5cde49c$export$a6684360fef0406e, AnnotatedUnitsColumn as $8c8238faa5cde49c$export$d8c3f2fdd653a082, SectionLabelsColumn as $8c8238faa5cde49c$export$13984e34afdbb040, compositeScale as $8c8238faa5cde49c$export$723b790ebe9cdff8} from "./column-views.4c4c5bac.js";
5
- import {useLithologies as $774a5efa27d1c77b$export$4d18a90c945d129f} from "./column-views.28ee5f43.js";
6
- import {resolveID as $d3e69bd163d41f63$export$7be7d732f3de9464} from "./column-views.8dd877af.js";
7
- import "./column-views.f9dab157.js";
8
- import {useUnitSelectionDispatch as $4d5d1c15f39f6a14$export$77a278d5ca56e309, useUnitSelectionStore as $4d5d1c15f39f6a14$export$b220b1d3591dc9e5, useSelectedUnit as $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da, UnitSelectionProvider as $4d5d1c15f39f6a14$export$f19d75b1d4b676a4, useUnitSelectionTarget as $4d5d1c15f39f6a14$export$cbbec12b1451fe7d, UnitKeyboardNavigation as $4d5d1c15f39f6a14$export$70f5ee19650fc7d1} from "./column-views.8e51206e.js";
9
- import $7H3th$macrostrathyper from "@macrostrat/hyper";
10
- import {LithologyColumn as $7H3th$LithologyColumn, useColumnLayout as $7H3th$useColumnLayout, useGeologicPattern as $7H3th$useGeologicPattern} from "@macrostrat/column-components";
11
- import {useInDarkMode as $7H3th$useInDarkMode} from "@macrostrat/ui-components";
12
- import {useMemo as $7H3th$useMemo} from "react";
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
- function $4c8184c4a7317749$export$3750278673318c9a({ width: width = 100 }) {
27
- /*
28
- A column showing units with USGS color fill
29
- */ return (0, $7H3th$macrostrathyper)((0, $7H3th$LithologyColumn), {
30
- width: width
31
- }, (0, $7H3th$macrostrathyper)((0, $d254716a820e9c85$export$5d1cdfabe8dc8085)));
32
- }
33
- function $4c8184c4a7317749$export$2006342ddaa547c6(props) {
34
- /*
35
- A column with units and names either
36
- overlapping or offset to the right
37
- */ const { columnWidth: columnWidth, width: width, gutterWidth: gutterWidth = 0, labelOffset: labelOffset = 30 } = props;
38
- return (0, $7H3th$macrostrathyper)([
39
- (0, $7H3th$macrostrathyper)($4c8184c4a7317749$export$3750278673318c9a, {
40
- width: columnWidth
41
- }),
42
- (0, $7H3th$macrostrathyper)((0, $bc17276da4abb183$export$594d19cdd88f8c16), {
43
- transform: `translate(${columnWidth + gutterWidth})`,
44
- paddingLeft: labelOffset,
45
- width: width - columnWidth - gutterWidth
46
- })
47
- ]);
48
- }
49
- function $4c8184c4a7317749$export$48a4cacf2b7a4441({ division: division, nColumns: nColumns = 2, ...rest }) {
50
- const width = rest.width ?? (0, $7H3th$useColumnLayout)()?.width;
51
- const nOverlappingUnits = division.overlappingUnits?.length ?? 0;
52
- const columnIx = (division.column ?? 0) % nColumns;
53
- return (0, $7H3th$macrostrathyper)((0, $8c8238faa5cde49c$export$f613830566442374), {
54
- division: division,
55
- ...rest,
56
- width: nOverlappingUnits > 0 ? width / nColumns : width,
57
- x: columnIx * width / nColumns
58
- });
59
- }
60
- function $4c8184c4a7317749$export$6012fd1584b5d0c0(props) {
61
- /** A unit component that is colored using a mixture of lithologies.
62
- * This is a separate component because it depends on more providers/contexts to determine coloring. */ const lithMap = (0, $774a5efa27d1c77b$export$4d18a90c945d129f)();
63
- const inDarkMode = (0, $7H3th$useInDarkMode)();
64
- const backgroundColor = (0, $7H3th$useMemo)(()=>{
65
- return (0, $6698edd2a743bf07$export$175d3e927f1a9860)(props.division, lithMap, inDarkMode);
66
- }, [
67
- props.division?.unit_id,
68
- lithMap,
69
- inDarkMode
70
- ]);
71
- const patternID = (0, $7H3th$useMemo)(()=>{
72
- return (0, $d3e69bd163d41f63$export$7be7d732f3de9464)(props.division); // ?? getPatternID(props.division.lith, lithMap);
73
- }, [
74
- props.division?.unit_id,
75
- lithMap
76
- ]);
77
- const fill = (0, $7H3th$useGeologicPattern)(patternID);
78
- return (0, $7H3th$macrostrathyper)($4c8184c4a7317749$export$48a4cacf2b7a4441, {
79
- fill: fill,
80
- backgroundColor: backgroundColor,
81
- ...props
82
- });
83
- }
84
- function $4c8184c4a7317749$var$getPatternID(liths, lithMap) {
85
- if (lithMap == null || liths == null || liths.length == 0) return null;
86
- const patternIDs = new Set();
87
- for (const lith of liths){
88
- const lithData = lithMap.get(lith.lith_id);
89
- if (lithData) patternIDs.add(`${lithData.fill}`);
90
- }
91
- let id = patternIDs.values()[0];
92
- if (id == "0") return null;
93
- return id;
94
- }
95
-
96
-
97
- export {$4c8184c4a7317749$export$3750278673318c9a as UnitsColumn, $4c8184c4a7317749$export$2006342ddaa547c6 as SimpleUnitsColumn, $4c8184c4a7317749$export$48a4cacf2b7a4441 as UnitComponent, $4c8184c4a7317749$export$6012fd1584b5d0c0 as ColoredUnitComponent, $6698edd2a743bf07$export$175d3e927f1a9860 as getMixedUnitColor, $8c8238faa5cde49c$export$e4e89ab6c86ac513 as LabelTrackerProvider, $8c8238faa5cde49c$export$f613830566442374 as TrackedLabeledUnit, $8c8238faa5cde49c$export$1dfa200d57964eee as CompositeUnitComponent, $8c8238faa5cde49c$export$a6684360fef0406e as CompositeUnitsColumn, $8c8238faa5cde49c$export$d8c3f2fdd653a082 as AnnotatedUnitsColumn, $8c8238faa5cde49c$export$13984e34afdbb040 as SectionLabelsColumn, $8c8238faa5cde49c$export$723b790ebe9cdff8 as compositeScale, $4d5d1c15f39f6a14$export$77a278d5ca56e309 as useUnitSelectionDispatch, $4d5d1c15f39f6a14$export$b220b1d3591dc9e5 as useUnitSelectionStore, $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da as useSelectedUnit, $4d5d1c15f39f6a14$export$f19d75b1d4b676a4 as UnitSelectionProvider, $4d5d1c15f39f6a14$export$cbbec12b1451fe7d as useUnitSelectionTarget, $4d5d1c15f39f6a14$export$70f5ee19650fc7d1 as UnitKeyboardNavigation};
98
- //# sourceMappingURL=column-views.343b5aa2.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,0CAAY,SAAE,QAAQ,KAAK;IACzC;;EAEA,GACA,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,sBAAc,GAAG;eAAE;IAAM,GAAG,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,yCAAQ;AACjD;AAEO,SAAS,0CAAkB,KAA0B;IAC1D;;;EAGA,GACA,MAAM,eAAE,WAAW,SAAE,KAAK,eAAE,cAAc,gBAAG,cAAc,IAAI,GAAG;IAElE,OAAO,CAAA,GAAA,sBAAA,EAAE;QACP,CAAA,GAAA,sBAAA,EAAE,2CAAa;YACb,OAAO;QACT;QACA,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,yCAAc,GAAG;YACjB,WAAW,CAAC,UAAU,EAAE,cAAc,YAAY,CAAC,CAAC;YACpD,aAAa;YACb,OAAO,QAAQ,cAAc;QAC/B;KACD;AACH;AAEO,SAAS,0CAAc,YAAE,QAAQ,YAAE,WAAW,GAAG,GAAG,MAAM;IAC/D,MAAM,QAAQ,KAAK,KAAK,IAAI,CAAA,GAAA,sBAAc,KAAK;IAE/C,MAAM,oBAAoB,SAAS,gBAAgB,EAAE,UAAU;IAC/D,MAAM,WAAW,AAAC,CAAA,SAAS,MAAM,IAAI,CAAA,IAAK;IAE1C,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,yCAAiB,GAAG;kBAC3B;QACA,GAAG,IAAI;QACP,OAAO,oBAAoB,IAAI,QAAQ,WAAW;QAClD,GAAG,AAAC,WAAW,QAAS;IAC1B;AACF;AAEO,SAAS,0CAAqB,KAAK;IACxC;uGACqG,GACrG,MAAM,UAAU,CAAA,GAAA,yCAAa;IAC7B,MAAM,aAAa,CAAA,GAAA,oBAAY;IAE/B,MAAM,kBAAkB,CAAA,GAAA,cAAM,EAAE;QAC9B,OAAO,CAAA,GAAA,yCAAgB,EAAE,MAAM,QAAQ,EAAE,SAAS;IACpD,GAAG;QAAC,MAAM,QAAQ,EAAE;QAAS;QAAS;KAAW;IAEjD,MAAM,YAAY,CAAA,GAAA,cAAM,EAAE;QACxB,OAAO,CAAA,GAAA,yCAAQ,EAAE,MAAM,QAAQ,GAAG,iDAAiD;IACrF,GAAG;QAAC,MAAM,QAAQ,EAAE;QAAS;KAAQ;IAErC,MAAM,OAAO,CAAA,GAAA,yBAAiB,EAAE;IAEhC,OAAO,CAAA,GAAA,sBAAA,EAAE,2CAAe;cACtB;yBACA;QACA,GAAG,KAAK;IACV;AACF;AAEA,SAAS,mCACP,KAAuB,EACvB,OAA+B;IAE/B,IAAI,WAAW,QAAQ,SAAS,QAAQ,MAAM,MAAM,IAAI,GACtD,OAAO;IAET,MAAM,aAAa,IAAI;IACvB,KAAK,MAAM,QAAQ,MAAO;QACxB,MAAM,WAAW,QAAQ,GAAG,CAAC,KAAK,OAAO;QACzC,IAAI,UACF,WAAW,GAAG,CAAC,GAAG,SAAS,IAAI,EAAE;IAErC;IACA,IAAI,KAAK,WAAW,MAAM,EAAE,CAAC,EAAE;IAC/B,IAAI,MAAM,KAAK,OAAO;IACtB,OAAO;AACT","sources":["packages/column-views/src/units/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { UnitNamesColumn } from \"./names\";\nimport { ICompositeUnitProps } from \"./composite\";\nimport { UnitBoxes } from \"./boxes\";\nimport { useColumnLayout } from \"@macrostrat/column-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { TrackedLabeledUnit } from \"./composite\";\nimport { useLithologies } from \"../data-provider\";\nimport { useMemo } from \"react\";\nimport { resolveID } from \"./resolvers\";\nimport { Lithology } from \"@macrostrat/api-types\";\n\nexport * from \"./composite\";\nexport * from \"./types\";\nexport * from \"./selection\";\nexport * from \"./colors\";\n\nexport function UnitsColumn({ width = 100 }) {\n /*\n A column showing units with USGS color fill\n */\n return h(LithologyColumn, { width }, h(UnitBoxes));\n}\n\nexport function SimpleUnitsColumn(props: ICompositeUnitProps) {\n /*\n A column with units and names either\n overlapping or offset to the right\n */\n const { columnWidth, width, gutterWidth = 0, labelOffset = 30 } = props;\n\n return h([\n h(UnitsColumn, {\n width: columnWidth,\n }),\n h(UnitNamesColumn, {\n transform: `translate(${columnWidth + gutterWidth})`,\n paddingLeft: labelOffset,\n width: width - columnWidth - gutterWidth,\n }),\n ]);\n}\n\nexport function UnitComponent({ division, nColumns = 2, ...rest }) {\n const width = rest.width ?? useColumnLayout()?.width;\n\n const nOverlappingUnits = division.overlappingUnits?.length ?? 0;\n const columnIx = (division.column ?? 0) % nColumns;\n\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: nOverlappingUnits > 0 ? width / nColumns : width,\n x: (columnIx * width) / nColumns,\n });\n}\n\nexport function ColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n\n const backgroundColor = useMemo(() => {\n return getMixedUnitColor(props.division, lithMap, inDarkMode);\n }, [props.division?.unit_id, lithMap, inDarkMode]);\n\n const patternID = useMemo(() => {\n return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id, lithMap]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nfunction getPatternID(\n liths: Array<Lithology>,\n lithMap: Map<number, Lithology>\n): string | null {\n if (lithMap == null || liths == null || liths.length == 0) {\n return null;\n }\n const patternIDs = new Set<string>();\n for (const lith of liths) {\n const lithData = lithMap.get(lith.lith_id);\n if (lithData) {\n patternIDs.add(`${lithData.fill}`);\n }\n }\n let id = patternIDs.values()[0];\n if (id == \"0\") return null;\n return id;\n}\n"],"names":[],"version":3,"file":"column-views.343b5aa2.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;AAgCO,IAAA,AAAK,mEAAA;;;WAAA;;AAUL,SAAS,0CACd,IAAgB,EAChB,OAA6B;IAE7B;;GAEC,GACD,OAAO,CAAA,GAAA,cAAM,EAAE;QACb,OAAO,0CAAmB,MAAM;IAClC,GAAG;QAAC;WAAS,OAAO,MAAM,CAAC;KAAS;AACtC;AAEO,SAAS,0CACd,KAAiB,EACjB,OAA6B;IAE7B,wDAAwD,GAExD,MAAM,SACJ,KAAK,SACL,KAAK,iBACL,yCACA,QAAQ,sBACR,kBAAkB,+BAClB,8BAA8B,OAC/B,GAAG;IAEJ,qCAAqC,GACrC,IAAI,SAAS,MAAM,MAAM,CAAC,CAAC;QACzB,6CAA6C;QAC7C,OAAO,CAAA,GAAA,yCAAU,EAAE,GAAG;mBAAE;mBAAO;QAAM;IACvC;IAEA,IAAI;IACJ,IACE,0BACA,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EAClC;QACA,oEAAoE;QACpE,MAAM,CAAC,YAAY,WAAW,GAAG,CAAA,GAAA,yCAAiB,EAAE;QACpD,YAAY;YACV;gBACE,YAAY;gBACZ;;WAEG,GACH,OAAO,SAAS;gBAChB,OAAO,SAAS;gBAChB,OAAO;YACT;SACD;IACH,OACE,YAAY,CAAA,GAAA,yCAAqB,EAAE,QAAQ;IAG7C;;;GAGC,GACD,IAAI,WAAW;IACf,IACE,kCACA,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EAElC,WAAW,CAAA,GAAA,yCAAuB,EAAE;IAEtC,6CAA6C;IAC7C,WAAW,SAAS,MAAM,CAAC,CAAC,IAAM,KAAK;IAEvC;;GAEC,GACD,WAAW,SAAS,GAAG,CAAC,CAAC;QACvB,MAAM,SAAE,KAAK,SAAE,KAAK,EAAE,GAAG;QACzB,OAAO;YACL,GAAG,OAAO;YACV,OAAO,KAAK,GAAG,CAAC,OAAO,QAAQ,KAAK,IAAI,CAAC;YACzC,OAAO,KAAK,GAAG,CAAC,OAAO,QAAQ,KAAK,IAAI;QAC1C;IACF;IAEA;;;GAGC,GACD,IAAI,qBAAqB,CAAA,GAAA,yCAAoB,EAAE,UAAU;IAEzD,IAAI,+BAA+B,OAAO;QACxC,IAAI,YAAY,sBAAsB;QACtC,IAAI,OAAO,+BAA+B,UACxC,YAAY;QAGd,qBAAqB,CAAA,GAAA,yCAAkC,EACrD,oBACA,WACA;IAEJ;IAEA;;;GAGC,GACD,MAAM,SAAS,mBAAmB,MAAM,CAAC,CAAC,KAAK;QAC7C,MAAM,SAAE,KAAK,EAAE,GAAG;QAClB,KAAK,MAAM,QAAQ,MACjB,IAAI,IAAI,CAAC;QAEX,OAAO;IACT,GAAG,EAAE;IAEL,mDAAmD,GACnD,MAAM,eAAE,WAAW,EAAE,UAAU,SAAS,EAAE,GAAG,CAAA,GAAA,yCAAqB,EAChE,oBACA;IAGF;;;KAGG,GACH,MAAM,cAAc,UAAU,GAAG,CAAC,CAAC;QACjC,OAAO;YACL,GAAG,OAAO;YACV,OAAO,CAAA,GAAA,yCAAc,EAAE,SAAS;QAClC;IACF;IAEA,OAAO;QACL,OAAO;qBACP;QACA,UAAU;IACZ;AACF","sources":["packages/column-views/src/prepare-units/index.ts"],"sourcesContent":["import {\n getSectionAgeRange,\n groupUnitsIntoSections,\n mergeOverlappingSections,\n preprocessUnits,\n} from \"./helpers\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { useMemo } from \"react\";\nimport type { ExtUnit } from \"./helpers\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport {\n collapseUnconformitiesByPixelHeight,\n ColumnScaleOptions,\n CompositeColumnData,\n computeSectionHeights,\n finalizeSectionHeights,\n PackageLayoutData,\n} from \"./composite-scale\";\nimport type { SectionInfo } from \"./helpers\";\nimport { agesOverlap, unitsOverlap } from \"./utils\";\n\nexport * from \"./utils\";\nexport { preprocessUnits, groupUnitsIntoSections };\n\nexport interface PrepareColumnOptions extends ColumnScaleOptions {\n axisType: ColumnAxisType;\n t_age?: number;\n b_age?: number;\n mergeSections?: MergeSectionsMode;\n collapseSmallUnconformities?: boolean | number;\n}\n\nexport enum MergeSectionsMode {\n ALL = \"all\",\n OVERLAPPING = \"overlapping\",\n}\n\nexport interface PreparedColumnData extends CompositeColumnData {\n sections: PackageLayoutData[];\n units: ExtUnit[];\n}\n\nexport function usePreparedColumnUnits(\n data: UnitLong[],\n options: PrepareColumnOptions\n): PreparedColumnData {\n /** This function wraps and memoizes all preparation steps for converting\n * an array of units from the /units route to a form ready for usage.\n */\n return useMemo(() => {\n return prepareColumnUnits(data, options);\n }, [data, ...Object.values(options)]);\n}\n\nexport function prepareColumnUnits(\n units: UnitLong[],\n options: PrepareColumnOptions\n): PreparedColumnData {\n /** Prepare units for rendering into Macrostrat columns */\n\n const {\n t_age,\n b_age,\n mergeSections = MergeSectionsMode.OVERLAPPING,\n axisType,\n unconformityHeight,\n collapseSmallUnconformities = false,\n } = options;\n\n /** Prototype filtering to age range */\n let units1 = units.filter((d) => {\n // Filter units by t_age and b_age, inclusive\n return agesOverlap(d, { t_age, b_age });\n });\n\n let sections0: SectionInfo<UnitLong>[];\n if (\n mergeSections == MergeSectionsMode.ALL &&\n axisType != ColumnAxisType.ORDINAL\n ) {\n // For the \"merge sections\" mode, we need to create a single section\n const [b_unit_age, t_unit_age] = getSectionAgeRange(units1);\n sections0 = [\n {\n section_id: 0,\n /**\n * If ages limits are directly specified, use them to define the section bounds.\n * */\n t_age: t_age ?? t_unit_age,\n b_age: b_age ?? b_unit_age,\n units: units1,\n },\n ];\n } else {\n sections0 = groupUnitsIntoSections(units1, axisType);\n }\n\n /** Merging overlapping sections really only makes sense for age/height/depth\n * columns. Ordinal columns are numbered by section so merging them\n * results in collisions.\n */\n let sections = sections0;\n if (\n mergeSections == MergeSectionsMode.OVERLAPPING &&\n axisType != ColumnAxisType.ORDINAL\n ) {\n sections = mergeOverlappingSections(sections);\n }\n // Filter out undefined sections just in case\n sections = sections.filter((d) => d != null);\n\n /* Now that we are done merging sections, we can ensure that our sections\n * are correctly limited to the t_age and b_age applied to the overall column.\n */\n sections = sections.map((section) => {\n const { t_age, b_age } = section;\n return {\n ...section,\n t_age: Math.max(t_age, options.t_age ?? -Infinity),\n b_age: Math.min(b_age, options.b_age ?? Infinity),\n };\n });\n\n /* Compute pixel scales etc. for sections\n * We need to do this now to determine which unconformities\n * are small enough to collapse.\n */\n let sectionsWithScales = computeSectionHeights(sections, options);\n\n if (collapseSmallUnconformities ?? false) {\n let threshold = unconformityHeight ?? 30;\n if (typeof collapseSmallUnconformities == \"number\") {\n threshold = collapseSmallUnconformities;\n }\n\n sectionsWithScales = collapseUnconformitiesByPixelHeight(\n sectionsWithScales,\n threshold,\n options\n );\n }\n\n /** Reconstitute the units so that they are sorted by section.\n * This is mostly important so that unit keyboard navigation\n * predictably selects adjacent units.\n */\n const units2 = sectionsWithScales.reduce((acc, group) => {\n const { units } = group;\n for (const unit of units) {\n acc.push(unit);\n }\n return acc;\n }, []);\n\n /** Prepare section scale information using groups */\n const { totalHeight, sections: sections2 } = finalizeSectionHeights(\n sectionsWithScales,\n unconformityHeight\n );\n\n /** For each section, find units that are overlapping.\n * We do this after merging sections so that we can\n * handle cases where there are overlapping units across sections\n * */\n const sectionsOut = sections2.map((section) => {\n return {\n ...section,\n units: preprocessUnits(section, axisType),\n };\n });\n\n return {\n units: units2,\n totalHeight,\n sections: sectionsOut,\n };\n}\n"],"names":[],"version":3,"file":"column-views.34636ec7.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps\n) {\n const {\n columns,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, rest)\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n children,\n ]\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled]\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false }\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true }\n );\n },\n [hoveredColumn, columns]\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false }\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true }\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns]\n );\n\n return null;\n}\n"],"names":[],"version":3,"file":"column-views.3bec70d6.js.map"}
@@ -1,117 +0,0 @@
1
- import {SimpleUnitsColumn as $4c8184c4a7317749$export$2006342ddaa547c6} from "./column-views.343b5aa2.js";
2
- import {IsotopesColumn as $d5a3eba6c540ff58$export$5d8aa8022c284748} from "./column-views.ac9fb5e1.js";
3
- import {MacrostratColumnProvider as $774a5efa27d1c77b$export$9e42f9b6e0d67c7d} from "./column-views.28ee5f43.js";
4
- import $hEPNH$columnviews94b5cca1js from "./column-views.94b5cca1.js";
5
- import "./column-views.a7be0a4a.css";
6
- import $hEPNH$macrostrathyper from "@macrostrat/hyper";
7
- import {group as $hEPNH$group} from "d3-array";
8
- import {useAPIResult as $hEPNH$useAPIResult} from "@macrostrat/ui-components";
9
- import {ColumnContext as $hEPNH$ColumnContext, ColumnAxis as $hEPNH$ColumnAxis, ColumnSVG as $hEPNH$ColumnSVG} from "@macrostrat/column-components";
10
- import {useContext as $hEPNH$useContext} from "react";
11
-
12
-
13
- function $parcel$interopDefault(a) {
14
- return a && a.__esModule ? a.default : a;
15
- }
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
- const $132b1b0fb905c489$var$h = (0, $hEPNH$macrostrathyper).styled((0, ($parcel$interopDefault($hEPNH$columnviews94b5cca1js))));
26
- const $132b1b0fb905c489$var$AgeAxis = ({ ticks: ticks })=>{
27
- const { pixelHeight: pixelHeight } = (0, $hEPNH$useContext)((0, $hEPNH$ColumnContext));
28
- // A tick roughly every 40 pixels
29
- let v = Math.max(Math.round(pixelHeight / 40), 1);
30
- return $132b1b0fb905c489$var$h((0, $hEPNH$ColumnAxis), {
31
- ticks: v,
32
- showDomain: false
33
- });
34
- };
35
- const $132b1b0fb905c489$export$6e2c8f0811a474ce = (props)=>{
36
- // Section with "squishy" time scale
37
- const { data: data, isOldestColumn: isOldestColumn = true, range: range = [
38
- data[data.length - 1].b_age,
39
- data[0].t_age
40
- ] } = props;
41
- let { pixelScale: pixelScale } = props;
42
- const notesOffset = 100;
43
- if (!pixelScale) {
44
- // Make up a pixel scale
45
- const dAge = range[0] - range[1];
46
- const targetHeight = 50 * data.length;
47
- pixelScale = Math.ceil(targetHeight / dAge);
48
- }
49
- return $132b1b0fb905c489$var$h((0, $774a5efa27d1c77b$export$9e42f9b6e0d67c7d), {
50
- divisions: data,
51
- range: range,
52
- pixelsPerMeter: pixelScale
53
- }, [
54
- $132b1b0fb905c489$var$h((0, $hEPNH$ColumnSVG), {
55
- width: 650,
56
- padding: 20,
57
- paddingTop: 5,
58
- paddingBottom: 25
59
- }, [
60
- $132b1b0fb905c489$var$h($132b1b0fb905c489$var$AgeAxis),
61
- $132b1b0fb905c489$var$h((0, $4c8184c4a7317749$export$2006342ddaa547c6), {
62
- width: 400,
63
- columnWidth: 90
64
- }),
65
- $132b1b0fb905c489$var$h((0, $d5a3eba6c540ff58$export$5d8aa8022c284748), {
66
- parameter: "D13C",
67
- label: "\u03B4\xb9\xb3C",
68
- width: 100,
69
- // @ts-ignore
70
- nTicks: 4,
71
- showAxis: isOldestColumn,
72
- transform: "translate(250,0)"
73
- }),
74
- $132b1b0fb905c489$var$h((0, $d5a3eba6c540ff58$export$5d8aa8022c284748), {
75
- parameter: "D18O",
76
- label: "\u03B4\xb9\u2078O",
77
- color: "red",
78
- domain: [
79
- -40,
80
- 0
81
- ],
82
- width: 100,
83
- // @ts-ignore
84
- nTicks: 4,
85
- showAxis: isOldestColumn,
86
- transform: "translate(370,0)"
87
- })
88
- ])
89
- ]);
90
- };
91
- function $132b1b0fb905c489$var$Column(props) {
92
- const { params: params } = props;
93
- const data = (0, $hEPNH$useAPIResult)("/units", {
94
- all: true,
95
- ...params,
96
- response: "long"
97
- });
98
- if (data == null) return null;
99
- let sectionGroups = Array.from((0, $hEPNH$group)(data, (d)=>d.section_id));
100
- //sectionGroups.sort((a, b) => a.t_age - b.t_age);
101
- return $132b1b0fb905c489$var$h("div.column", [
102
- $132b1b0fb905c489$var$h("div.age-axis-label", "Age (Ma)"),
103
- $132b1b0fb905c489$var$h("div.main-column", sectionGroups.map(([id, values], i)=>{
104
- return $132b1b0fb905c489$var$h(`div.section-${id}`, [
105
- $132b1b0fb905c489$var$h($132b1b0fb905c489$export$6e2c8f0811a474ce, {
106
- data: values,
107
- isOldestColumn: i == sectionGroups.length - 1
108
- })
109
- ]);
110
- }))
111
- ]);
112
- }
113
- var $132b1b0fb905c489$export$2e2bcd8739ae039 = $132b1b0fb905c489$var$Column;
114
-
115
-
116
- export {$132b1b0fb905c489$export$6e2c8f0811a474ce as Section, $132b1b0fb905c489$export$2e2bcd8739ae039 as default};
117
- //# sourceMappingURL=column-views.3f4db8cb.js.map
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,uEAAK;AAS5B,MAAM,gCAAU,CAAC,SAAE,KAAK,EAAE;IACxB,MAAM,eAAE,WAAW,EAAE,GAAG,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,oBAAY;IAC/C,iCAAiC;IACjC,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,KAAK;IAE/C,OAAO,wBAAE,CAAA,GAAA,iBAAS,GAAG;QACnB,OAAO;QACP,YAAY;IACd;AACF;AAEA,MAAM,4CAAU,CAAC;IACf,oCAAoC;IACpC,MAAM,QACJ,IAAI,kBACJ,iBAAiB,aACjB,QAAQ;QAAC,IAAI,CAAC,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK;QAAE,IAAI,CAAC,EAAE,CAAC,KAAK;KAAC,EACrD,GAAG;IACJ,IAAI,cAAE,UAAU,EAAE,GAAG;IAErB,MAAM,cAAc;IAEpB,IAAI,CAAC,YAAY;QACf,wBAAwB;QACxB,MAAM,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;QAChC,MAAM,eAAe,KAAK,KAAK,MAAM;QACrC,aAAa,KAAK,IAAI,CAAC,eAAe;IACxC;IAEA,OAAO,wBACL,CAAA,GAAA,yCAAuB,GACvB;QACE,WAAW;eACX;QACA,gBAAgB;IAClB,GACA;QACE,wBACE,CAAA,GAAA,gBAAQ,GACR;YACE,OAAO;YACP,SAAS;YACT,YAAY;YACZ,eAAe;QACjB,GACA;YACE,wBAAE;YACF,wBAAE,CAAA,GAAA,yCAAgB,GAAG;gBACnB,OAAO;gBACP,aAAa;YACf;YACA,wBAAE,CAAA,GAAA,yCAAa,GAAG;gBAChB,WAAW;gBACX,OAAO;gBACP,OAAO;gBACP,aAAa;gBACb,QAAQ;gBACR,UAAU;gBACV,WAAW;YACb;YACA,wBAAE,CAAA,GAAA,yCAAa,GAAG;gBAChB,WAAW;gBACX,OAAO;gBACP,OAAO;gBACP,QAAQ;oBAAC;oBAAK;iBAAE;gBAChB,OAAO;gBACP,aAAa;gBACb,QAAQ;gBACR,UAAU;gBACV,WAAW;YACb;SACD;KAEJ;AAEL;AAIA,SAAS,6BAAO,KAA0D;IACxE,MAAM,UAAE,MAAM,EAAE,GAAG;IACnB,MAAM,OAAgB,CAAA,GAAA,mBAAW,EAAE,UAAU;QAC3C,KAAK;QACL,GAAG,MAAM;QACT,UAAU;IACZ;IACA,IAAI,QAAQ,MAAM,OAAO;IAEzB,IAAI,gBAAgB,MAAM,IAAI,CAAC,CAAA,GAAA,YAAI,EAAE,MAAM,CAAC,IAAM,EAAE,UAAU;IAE9D,kDAAkD;IAElD,OAAO,wBAAE,cAAc;QACrB,wBAAE,sBAAsB;QACxB,wBACE,mBACA,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;YAC/B,OAAO,wBAAE,CAAC,YAAY,EAAE,IAAI,EAAE;gBAC5B,wBAAE,2CAAS;oBACT,MAAM;oBACN,gBAAgB,KAAK,cAAc,MAAM,GAAG;gBAC9C;aACD;QACH;KAEH;AACH;IAGA,2CAAe","sources":["packages/column-views/src/carbon-isotopes/column.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport { group } from \"d3-array\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\nimport {\n ColumnSVG,\n ColumnAxis,\n ColumnContext,\n} from \"@macrostrat/column-components\";\nimport { SimpleUnitsColumn, IUnit } from \"../units\";\nimport { useContext } from \"react\";\nimport { IsotopesColumn } from \"./isotopes-column\";\nimport { MacrostratColumnProvider } from \"../data-provider\";\nimport styles from \"./column.module.sass\";\n\nconst h = hyper.styled(styles);\n\ninterface IColumnProps {\n data: IUnit[];\n pixelScale?: number;\n isOldestColumn: boolean;\n range?: [number, number];\n}\n\nconst AgeAxis = ({ ticks }) => {\n const { pixelHeight } = useContext(ColumnContext);\n // A tick roughly every 40 pixels\n let v = Math.max(Math.round(pixelHeight / 40), 1);\n\n return h(ColumnAxis, {\n ticks: v,\n showDomain: false,\n });\n};\n\nconst Section = (props: IColumnProps) => {\n // Section with \"squishy\" time scale\n const {\n data,\n isOldestColumn = true,\n range = [data[data.length - 1].b_age, data[0].t_age],\n } = props;\n let { pixelScale } = props;\n\n const notesOffset = 100;\n\n if (!pixelScale) {\n // Make up a pixel scale\n const dAge = range[0] - range[1];\n const targetHeight = 50 * data.length;\n pixelScale = Math.ceil(targetHeight / dAge);\n }\n\n return h(\n MacrostratColumnProvider,\n {\n divisions: data,\n range,\n pixelsPerMeter: pixelScale, // Actually pixels per myr\n },\n [\n h(\n ColumnSVG,\n {\n width: 650,\n padding: 20,\n paddingTop: 5,\n paddingBottom: 25,\n },\n [\n h(AgeAxis),\n h(SimpleUnitsColumn, {\n width: 400,\n columnWidth: 90,\n }),\n h(IsotopesColumn, {\n parameter: \"D13C\",\n label: \"δ¹³C\",\n width: 100,\n // @ts-ignore\n nTicks: 4,\n showAxis: isOldestColumn,\n transform: \"translate(250,0)\",\n }),\n h(IsotopesColumn, {\n parameter: \"D18O\",\n label: \"δ¹⁸O\",\n color: \"red\",\n domain: [-40, 0],\n width: 100,\n // @ts-ignore\n nTicks: 4,\n showAxis: isOldestColumn,\n transform: \"translate(370,0)\",\n }),\n ]\n ),\n ]\n );\n};\n\ntype ColumnArgs = any;\n\nfunction Column(props: Omit<IColumnProps, \"data\"> & { params: ColumnArgs }) {\n const { params } = props;\n const data: IUnit[] = useAPIResult(\"/units\", {\n all: true,\n ...params,\n response: \"long\",\n });\n if (data == null) return null;\n\n let sectionGroups = Array.from(group(data, (d) => d.section_id));\n\n //sectionGroups.sort((a, b) => a.t_age - b.t_age);\n\n return h(\"div.column\", [\n h(\"div.age-axis-label\", \"Age (Ma)\"),\n h(\n \"div.main-column\",\n sectionGroups.map(([id, values], i) => {\n return h(`div.section-${id}`, [\n h(Section, {\n data: values,\n isOldestColumn: i == sectionGroups.length - 1,\n }),\n ]);\n })\n ),\n ]);\n}\n\nexport { Section, IColumnProps };\nexport default Column;\n"],"names":[],"version":3,"file":"column-views.3f4db8cb.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;AAuBO,SAAS,0CAAqB,KAA0B;IAC7D,MAAM,WAAE,UAAU,cAAI,QAAQ,eAAE,WAAW,EAAE,GAAG,MAAM,GAAG;IAEzD,MAAM,gBAAgB,CAAA,GAAA,cAAM,EAAE;QAC5B,OAAO;YACL,CAAA,GAAA,yCAAgB,EAAE;YAClB;YACA;SACD;IACH,GAAG;QAAC;KAAY;IAEhB,OAAO,CAAA,GAAA,sBAAA,EACL,CAAA,GAAA,yCAAO,GACP;QACE,GAAG,IAAI;QACP,SAAS;QACT,YAAY;uBACZ;IACF,GACA;QACE,CAAA,GAAA,sBAAA,EAAE;QACF,CAAA,GAAA,sBAAA,EAAE;QACF,CAAA,GAAA,sBAAA,EAAE;QACF,CAAA,GAAA,sBAAA,EAAE,mCAAa;qBAAE;QAAQ;QACzB;KACD;AAEL;AAEA,SAAS;IACP,MAAM,aAAa,CAAA,GAAA,yCAAqB,EAAE,CAAC,QAAU,MAAM,UAAU;IAErE,CAAA,GAAA,yBAAiB,EACf,CAAC;QACC,WAAW,GAAG;YAAE,MAAM;YAAS,aAAa,EAAE,MAAM,CAAC,OAAO;QAAG;IACjE,GACA;QAAC;KAAW;IAGd,OAAO;AACT;AAEA,SAAS;IACP,MAAM,iBAAiB,CAAA,GAAA,yCAAqB,EAC1C,CAAC,QAAU,MAAM,cAAc;IAGjC,CAAA,GAAA,0BAAkB,EAChB,CAAC;QACC,IAAI,WAAW;QAEf,MAAM,OAA0B;YAC9B,MAAM;sBACN;QACF;QAEA,MAAM,qBAA8B;YAClC,MAAM;YACN,UAAU;gBACR,MAAM;gBACN,aAAa,SAAS,GAAG,CACvB,CAAC,MAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;YAEzD;YACA,YAAY,CAAC;QACf;QAEA,CAAA,GAAA,iBAAS,EAAE,KAAK,oBAAoB;QACpC,CAAA,GAAA,iBAAS,EAAE,KAAK,6BAA6B;YAC3C,MAAM;YACN,UAAU;gBAAC;aAAmB;QAChC;IACF,GACA;QAAC;KAAe;IAElB,OAAO;AACT;AAEA,SAAS,mCAAa,WAAE,UAAU,MAAM;IACtC,MAAM,UAAU,CAAA,GAAA,yCAAqB,EAAE,CAAC,QAAU,MAAM,OAAO;IAE/D,CAAA,GAAA,0BAAkB,EAChB,CAAC;QACC,IAAI,WAAW,MACb;QAEF,MAAM,OAA0B;YAC9B,MAAM;YACN,UAAU;QACZ;QAEA,QAAQ,GAAG,CAAC,YAAY;QACxB,CAAA,GAAA,iBAAS,EAAE,KAAK,WAAW;IAC7B,GACA;QAAC;QAAS;KAAQ;IAEpB,OAAO;AACT;AAEA,MAAM,6CAAuB;IAC3B,SAAS;QACP,oBAAoB;QACpB,6BAA6B;IAC/B;IACA,QAAQ;QACN;YACE,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,OAAO;gBACL,cAAc;YAChB;QACF;QACA;YACE,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,OAAO;gBACL,cAAc;gBACd,cAAc;gBACd,kBAAkB;oBAAC;oBAAG;iBAAE;YAC1B;QACF;QACA;YACE,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,OAAO;gBACL,iBAAiB;gBACjB,gBAAgB;YAClB;QACF;KACD;AACH;AAEA,MAAM,2CAAqB;IACzB,SAAS;QACP,iBAAiB;QACjB,kBAAkB;QAClB,uBAAuB;IACzB;IACA,QAAQ,CAAA,GAAA,8BAAsB;AAChC;AAEA,SAAS,yCAAmB,OAAiC,IAAI;IAC/D,OAAO;QACL,MAAM;QACN,MAAM,QAAQ;YACZ,MAAM;YACN,UAAU,EAAE;QACd;IACF;AACF;AAEA,SAAS,kCAAY,WAAE,OAAO,EAAuB;IACnD,MAAM,cAAc,CAAA,GAAA,yCAAqB,EAAE,CAAC,QAAU,MAAM,WAAW;IAEvE,qBAAqB;IACrB,CAAA,GAAA,0BAAkB,EAChB,CAAC;QACC,IAAI,eAAe,MACjB;QAEF,MAAM,OAA0B;YAC9B,MAAM;YACN,UAAU;gBACR;oBACE,MAAM;oBACN,UAAU;oBACV,YAAY;wBAAE,IAAI;oBAAc;gBAClC;aACD;QACH;QAEA,CAAA,GAAA,iBAAS,EAAE,KAAK,oBAAoB;QACpC,CAAA,GAAA,iBAAS,EAAE,KAAK,yBAAyB;YACvC,MAAM;YACN,UAAU,YAAY,WAAW,CAAC,GAAG,CAAC,CAAC,QAAW,CAAA;oBAChD,MAAM;oBACN,UAAU;wBAAE,MAAM;wBAAS,aAAa;oBAAM;oBAC9C,YAAY,CAAC;gBACf,CAAA;QACF;IACF,GACA;QAAC;KAAY;IAGf,MAAM,SAAS,CAAA,GAAA,cAAM,EAAE;QACrB,IAAI,eAAe,QAAQ,aAAa,YAAY,SAAS,GAC3D,OAAO;QAET,IAAI,SAAS,IAAI,CAAA,GAAA,mBAAW;QAC5B,KAAK,IAAI,SAAS,YAAY,WAAW,CACvC,OAAO,MAAM,CAAC;QAEhB,OAAO;IACT,GAAG;QAAC;KAAY;IAEhB,CAAA,GAAA,mBAAW,EAAE;gBAAE;iBAAQ;QAAS,aAAa;IAAK;IAElD,OAAO;AACT","sources":["packages/column-views/src/maps/column-correlation/core.ts"],"sourcesContent":["import { MapViewProps } from \"@macrostrat/map-interface\";\nimport {\n useMapClickHandler,\n useMapEaseTo,\n useMapStyleOperator,\n} from \"@macrostrat/mapbox-react\";\nimport { LngLatBounds } from \"mapbox-gl\";\nimport h from \"@macrostrat/hyper\";\nimport { Feature, FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo } from \"react\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport { useCorrelationMapStore } from \"./state\";\nimport { buildColumnsStyle, InsetMap, InsetMapProps } from \"../_shared\";\nimport { buildCrossSectionLayers } from \"@macrostrat/map-styles\";\n\nexport interface CorrelationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n columnColor?: string;\n}\n\nexport function ColumnCorrelationMap(props: CorrelationMapProps) {\n const { padding = 50, children, columnColor, ...rest } = props;\n\n const overlayStyles = useMemo(() => {\n return [\n buildColumnsStyle(columnColor),\n selectedColumnsStyle,\n lineOfSectionStyle,\n ];\n }, [columnColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n h(SelectedColumnsLayer),\n h(MapClickHandler),\n h(SectionLine, { padding }),\n children,\n ]\n );\n}\n\nfunction MapClickHandler() {\n const onClickMap = useCorrelationMapStore((state) => state.onClickMap);\n\n useMapClickHandler(\n (e) => {\n onClickMap(e, { type: \"Point\", coordinates: e.lngLat.toArray() });\n },\n [onClickMap]\n );\n\n return null;\n}\n\nfunction SelectedColumnsLayer() {\n const focusedColumns = useCorrelationMapStore(\n (state) => state.focusedColumns\n );\n\n useMapStyleOperator(\n (map) => {\n let features = focusedColumns;\n\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features,\n };\n\n const columnCentroidLine: Feature = {\n type: \"Feature\",\n geometry: {\n type: \"LineString\",\n coordinates: features.map(\n (col) => col.properties.centroid.geometry.coordinates\n ),\n },\n properties: {},\n };\n\n setGeoJSON(map, \"selected-columns\", data);\n setGeoJSON(map, \"selected-column-centroids\", {\n type: \"FeatureCollection\",\n features: [columnCentroidLine],\n });\n },\n [focusedColumns]\n );\n return null;\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useCorrelationMapStore((state) => state.columns);\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n console.log(\" columns\", data);\n setGeoJSON(map, \"columns\", data);\n },\n [columns, enabled]\n );\n return null;\n}\n\nconst selectedColumnsStyle = {\n sources: {\n \"selected-columns\": buildGeoJSONSource(),\n \"selected-column-centroids\": buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"selected-columns-fill\",\n type: \"fill\",\n source: \"selected-columns\",\n paint: {\n \"fill-color\": \"rgba(255, 0, 0, 0.1)\",\n },\n },\n {\n id: \"selected-column-centroids-line\",\n type: \"line\",\n source: \"selected-column-centroids\",\n paint: {\n \"line-color\": \"rgba(255, 0, 0, 0.8)\",\n \"line-width\": 2,\n \"line-dasharray\": [2, 2],\n },\n },\n {\n id: \"selected-column-centroids-points\",\n type: \"circle\",\n source: \"selected-column-centroids\",\n paint: {\n \"circle-radius\": 4,\n \"circle-color\": \"rgba(255, 0, 0, 0.8)\",\n },\n },\n ],\n};\n\nconst lineOfSectionStyle = {\n sources: {\n elevationMarker: buildGeoJSONSource(),\n crossSectionLine: buildGeoJSONSource(),\n crossSectionEndpoints: buildGeoJSONSource(),\n },\n layers: buildCrossSectionLayers(),\n};\n\nfunction buildGeoJSONSource(data: FeatureCollection | null = null) {\n return {\n type: \"geojson\",\n data: data ?? {\n type: \"FeatureCollection\",\n features: [],\n },\n };\n}\n\nfunction SectionLine({ padding }: { padding: number }) {\n const focusedLine = useCorrelationMapStore((state) => state.focusedLine);\n\n // Setup focused line\n useMapStyleOperator(\n (map) => {\n if (focusedLine == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: [\n {\n type: \"Feature\",\n geometry: focusedLine,\n properties: { id: \"focusedLine\" },\n },\n ],\n };\n\n setGeoJSON(map, \"crossSectionLine\", data);\n setGeoJSON(map, \"crossSectionEndpoints\", {\n type: \"FeatureCollection\",\n features: focusedLine.coordinates.map((coord) => ({\n type: \"Feature\",\n geometry: { type: \"Point\", coordinates: coord },\n properties: {},\n })),\n });\n },\n [focusedLine]\n );\n\n const bounds = useMemo(() => {\n if (focusedLine == null || focusedLine?.coordinates.length < 2) {\n return null;\n }\n let bounds = new LngLatBounds();\n for (let coord of focusedLine.coordinates) {\n bounds.extend(coord);\n }\n return bounds;\n }, [focusedLine]);\n\n useMapEaseTo({ bounds, padding, trackResize: true });\n\n return null;\n}\n"],"names":[],"version":3,"file":"column-views.40c1f361.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/units/composite.ts"],"sourcesContent":["import { hyperStyled } from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n ColumnAxisType,\n SVG,\n ColumnContext,\n} from \"@macrostrat/column-components\";\nimport { defaultNameFunction, UnitNamesColumn } from \"./names\";\nimport {\n createContext,\n useContext,\n useState,\n useRef,\n useCallback,\n useEffect,\n} from \"react\";\nimport { BaseUnit } from \"@macrostrat/api-types\";\nimport { LabeledUnit, UnitBoxes } from \"./boxes\";\nimport styles from \"./composite.module.sass\";\nimport { useMacrostratColumnData } from \"../data-provider\";\n\nconst h = hyperStyled(styles);\n\ninterface LabelTracker {\n [key: number]: boolean;\n}\n\nconst LabelTrackerContext = createContext(null);\nconst UnlabeledDivisionsContext = createContext(null);\n\nconst findMacrostratUnitID = (u) => u.unit_id;\n\nexport function LabelTrackerProvider(props) {\n /** Tracker for units to handle state for whether their labels fit inline or not.\n * Designed to work for single or composite columns.\n */\n const { children, units, findUnitID = findMacrostratUnitID } = props;\n const [unlabeledDivisions, setUnlabeledDivisions] = useState<\n BaseUnit[] | null\n >(null);\n const labelTrackerRef = useRef<LabelTracker>({});\n const trackLabelVisibility = useCallback(\n (div, visible) => {\n const id = findUnitID(div);\n labelTrackerRef.current[id] = visible;\n if (Object.keys(labelTrackerRef.current).length == units.length) {\n setUnlabeledDivisions(\n // @ts-ignore\n units.filter((d) => {\n const id = findUnitID(d);\n return labelTrackerRef.current[id] == false;\n })\n );\n }\n },\n [labelTrackerRef, units, findUnitID]\n );\n\n const value = trackLabelVisibility;\n return h(\n LabelTrackerContext.Provider,\n { value },\n h(\n UnlabeledDivisionsContext.Provider,\n { value: unlabeledDivisions },\n children\n )\n );\n}\n\nfunction TrackedLabeledUnit({\n division,\n nameForDivision = defaultNameFunction,\n ...rest\n}) {\n const trackLabelVisibility = useContext(LabelTrackerContext);\n return h(LabeledUnit, {\n division,\n label: nameForDivision(division),\n onLabelUpdated(label, visible) {\n // If there is al LabelTrackerContext, update the label visibility\n trackLabelVisibility?.(division, visible);\n },\n ...rest,\n });\n}\n\nexport const CompositeUnitComponent = TrackedLabeledUnit;\n\ntype BaseUnitProps = {\n width: number;\n showLabels?: boolean;\n columnWidth?: number;\n clipToFrame?: boolean;\n};\n\ntype ICompositeUnitProps = BaseUnitProps & {\n gutterWidth?: number;\n labelOffset?: number;\n paddingLeft?: number;\n nameForDivision?: (division: BaseUnit) => string;\n children?: React.ReactNode;\n unitComponent?: React.FC<any>;\n unitComponentProps?: any;\n noteMode?: \"labeled\" | \"unlabeled\";\n showLabelColumn?: boolean;\n noteComponent?: React.FC<any>;\n shouldRenderNote?: (d: any) => boolean;\n};\n\ninterface CompositeUnitProps {\n unitComponent: React.FC<any>;\n unitComponentProps?: any;\n width: number;\n showLabels?: boolean;\n clipToFrame?: boolean;\n}\n\nexport function CompositeUnitsColumn(props: CompositeUnitProps) {\n /*\n A column with units and names either\n overlapping or offset to the right\n */\n const {\n width,\n unitComponent = TrackedLabeledUnit,\n unitComponentProps,\n clipToFrame,\n ...rest\n } = props;\n\n return h(LithologyColumn, { width, clipToFrame }, [\n h(UnitBoxes, {\n unitComponent,\n unitComponentProps,\n ...rest,\n }),\n ]);\n}\n\nexport function AnnotatedUnitsColumn(props: ICompositeUnitProps) {\n useEffect(() => {\n console.warn(\n \"AnnotatedUnitsColumn is deprecated and currently renders a no-op for transition purposes\"\n );\n }, []);\n return null;\n}\n\nexport function SectionLabelsColumn(props: ICompositeUnitProps) {\n // Section with \"squishy\" time scale\n const {\n width = 300,\n noteMode = \"unlabeled\",\n labelOffset = 30,\n noteComponent,\n shouldRenderNote,\n } = props;\n\n const { sections, totalHeight, axisType } = useMacrostratColumnData();\n\n const unlabeledUnits = useContext(UnlabeledDivisionsContext);\n const unitsToLabel = noteMode == \"unlabeled\" ? unlabeledUnits : undefined;\n\n const _compositeScale = compositeScale(sections);\n\n return h(\"div.section-labels-column\", [\n h(\n ColumnNotesProvider,\n {\n units: [],\n scale: _compositeScale,\n totalHeight,\n axisType,\n },\n h(\n SVG,\n {\n height: totalHeight,\n innerWidth: width - 4,\n paddingH: 1,\n paddingLeft: 3,\n },\n h(UnitNamesColumn, {\n divisions: unitsToLabel,\n paddingLeft: labelOffset,\n width,\n noteComponent,\n shouldRenderNote,\n scale: _compositeScale,\n })\n )\n ),\n ]);\n}\n\ntype CompositeScaleOpts = {\n clamped?: boolean;\n};\n\nexport interface CompositeColumnScale {\n (val: number): number;\n copy(): CompositeColumnScale;\n domain(): number[];\n}\n\nexport function compositeScale(\n sections,\n opts: CompositeScaleOpts = {}\n): CompositeColumnScale {\n /** A basic composite scale that works across all sections. This isn't a fully featured,\n * contiuous D3 scale, but it shares enough attributes to be useful for\n * laying out notes.\n */\n const { clamped = true } = opts;\n\n const scales = sections.map((group) => {\n const { scaleInfo } = group;\n return scaleInfo.scale.copy().clamp(clamped);\n });\n\n let baseScale: any = (val) => {\n // Find the scale for the section that contains the value\n const scale = scales.find((scale) => {\n return scale.domain()[0] <= val && val <= scale.domain()[1];\n });\n\n if (scale) {\n return scale(val);\n } else {\n // return nan\n return NaN;\n }\n };\n\n baseScale.copy = () => {\n return baseScale;\n };\n\n baseScale.domain = () => {\n // Return a domain that covers all sections\n return [scales[0].domain()[0], scales[scales.length - 1].domain()[1]];\n };\n\n return baseScale as CompositeColumnScale;\n}\n\nfunction ColumnNotesProvider(props) {\n // A fake column axis provider that allows scales to cross\n const { children, scale, totalHeight, pixelScale } = props;\n\n const { axisType } = useMacrostratColumnData();\n\n return h(\n ColumnContext.Provider,\n {\n value: {\n divisions: [],\n scale,\n scaleClamped: scale,\n pixelHeight: totalHeight,\n pixelsPerMeter: pixelScale,\n axisType,\n zoom: 1,\n },\n },\n children\n );\n}\n\nexport { TrackedLabeledUnit, ICompositeUnitProps };\n"],"names":[],"version":3,"file":"column-views.4c4c5bac.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/correlation-chart/prepare-data.ts"],"sourcesContent":["import { CompositeStratigraphicScaleInfo } from \"../age-axis\";\nimport { PackageLayoutData } from \"../prepare-units/composite-scale\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { type ColumnGeoJSONRecord, UnitLong } from \"@macrostrat/api-types\";\nimport {\n MergeSectionsMode,\n PrepareColumnOptions,\n prepareColumnUnits,\n preprocessUnits,\n} from \"../prepare-units\";\nimport { mergeAgeRanges } from \"@macrostrat/stratigraphy-utils\";\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\ninterface ColumnData {\n columnID: number;\n units: UnitLong[];\n}\n\nexport interface CorrelationChartSettings\n extends Omit<PrepareColumnOptions, \"axisType\"> {\n targetUnitHeight?: number;\n}\n\nexport interface CorrelationChartData {\n packages: MultiColumnPackageData[];\n scaleInfo: CompositeStratigraphicScaleInfo;\n nColumns: number;\n}\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\nexport function buildCorrelationChartData(\n columns: ColumnData[],\n settings: CorrelationChartSettings\n): CorrelationChartData {\n console.log(settings);\n const {\n mergeSections = MergeSectionsMode.OVERLAPPING,\n targetUnitHeight,\n ...rest\n } = settings;\n\n const opts: PrepareColumnOptions = {\n axisType: ColumnAxisType.AGE,\n targetUnitHeight,\n ...rest,\n };\n\n if (columns.length == 0) {\n return null;\n }\n\n // Flatten the units array to pretend that all units are in the same column\n const _units = columns.map((d) => d.units).flat();\n\n const columnIDs = columns.map((d) => d.columnID);\n\n const preparedUnits = prepareColumnUnits(_units, opts);\n\n const { sections, totalHeight } = preparedUnits;\n\n const scaleInfo: CompositeStratigraphicScaleInfo = {\n axisType: ColumnAxisType.AGE,\n totalHeight,\n packages: sections.map((d) => d.scaleInfo),\n };\n\n const packages = sections.map((d) => {\n return separateColumns(d, columnIDs);\n });\n\n return { scaleInfo, packages, nColumns: columnIDs.length };\n}\n\ninterface UnitGroup {\n b_age: number;\n t_age: number;\n strat_name_id: number;\n strat_name_long: string;\n units: (UnitLong | null)[];\n}\n\nexport interface UnitGroupBox extends UnitGroup {\n units: UnitLong[];\n startCol: number;\n endCol: number;\n}\n\ninterface ColumnExt {\n columnID: number;\n units: UnitLong[];\n}\n\ninterface MultiColumnPackageData {\n columnData: ColumnExt[];\n bestPixelScale: number;\n b_age: number;\n t_age: number;\n}\n\nexport function findLaterallyExtensiveUnits(\n pkg: MultiColumnPackageData\n): UnitGroup[] {\n const { columnData, b_age, t_age } = pkg;\n // Group units by strat_name_id\n const unitIndex = new Map<number, Map<number, UnitLong>>();\n for (const column of columnData) {\n const { units } = column;\n for (const unit of units) {\n if (unit.strat_name_id == null) continue;\n if (!unitIndex.has(unit.strat_name_id)) {\n unitIndex.set(unit.strat_name_id, new Map());\n }\n unitIndex.get(unit.strat_name_id).set(column.columnID, unit);\n }\n }\n\n // Prepare grouped units for rendering\n const unitGroups: UnitGroup[] = [];\n for (const [strat_name_id, unitIndex0] of unitIndex) {\n const units = columnData.map((d) => unitIndex0.get(d.columnID) ?? null);\n const filteredUnits = units.filter((d) => d != null);\n const [t_age, b_age] = mergeAgeRanges(\n filteredUnits.map((d) => [d.t_age, d.b_age])\n );\n if (filteredUnits.length <= 1) continue;\n\n unitGroups.push({\n b_age,\n t_age,\n strat_name_id,\n strat_name_long: filteredUnits[0].strat_name_long,\n units,\n });\n }\n\n return unitGroups;\n}\n\nexport function splitStratIntoBoxes(pkg: UnitGroup): UnitGroupBox[] {\n const { strat_name_long, strat_name_id, units } = pkg;\n const boxes: UnitGroupBox[] = [];\n let currentBox: UnitGroupBox = null;\n for (let i = 0; i < units.length; i++) {\n const unit = units[i];\n if (unit == null) {\n if (currentBox != null) {\n boxes.push(currentBox);\n currentBox = null;\n }\n continue;\n }\n if (currentBox == null) {\n currentBox = {\n startCol: i,\n endCol: i,\n strat_name_id,\n strat_name_long,\n t_age: unit.t_age,\n b_age: unit.b_age,\n units: [],\n };\n } else {\n currentBox.endCol = i;\n }\n currentBox.units.push(unit);\n }\n return boxes;\n}\n\nfunction separateColumns(\n pkg: PackageLayoutData,\n columnIDs: number[]\n): MultiColumnPackageData {\n /** Separate columns by col_id */\n const { units, t_age, b_age } = pkg;\n\n return {\n columnData: columnIDs.map((d) => {\n const u1 = units.filter((unit) => unit.col_id == d);\n u1.sort((a, b) => a.t_age - b.t_age);\n return {\n columnID: d,\n // Ensure that the units correctly show overlap\n units: preprocessUnits(\n {\n ...pkg,\n units: u1,\n },\n ColumnAxisType.AGE\n ),\n };\n }),\n bestPixelScale: pkg.scaleInfo.pixelScale,\n t_age,\n b_age,\n };\n}\n\nexport function columnGeoJSONRecordToColumnIdentifier(\n col: ColumnGeoJSONRecord\n): ColumnIdentifier {\n return {\n col_id: col.properties.col_id,\n col_name: col.properties.col_name,\n project_id: col.properties.project_id,\n };\n}\n"],"names":[],"version":3,"file":"column-views.57c4ddf3.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["packages/column-views/src/units/boxes.ts"],"sourcesContent":["import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget } from \"./selection\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { useLithologies } from \"../data-provider\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { path } from \"d3-path\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions,\n Clickable,\n Partial<RectBounds> {\n division: IUnit;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {}\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ]\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const patternID = resolveID(d);\n let _fill = fill ?? useGeologicPattern(patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n //const key = `unit-${d.unit_id}`;\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ]\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction zigZagBoxPath(x, y, width, height, top: boolean, bottom: boolean) {\n const zigZagWidth = 10;\n const zigZagHeight = 4;\n\n const d = path();\n\n const nZigZags = Math.floor(width / zigZagWidth - 0.5);\n const _zigZagWidth = width / (nZigZags + 0.5);\n\n d.moveTo(x, y);\n let dy = zigZagHeight / 2;\n // Each zig-zag consists of a short outward motion\n let dx = _zigZagWidth / 4;\n\n let cx = x;\n let cy = y;\n\n const doZigZag = (last = false) => {\n cx += dx;\n cy -= dy;\n d.lineTo(cx, cy);\n let scalar = last ? 1 : 2;\n cx += dx * scalar;\n cy += dy * scalar;\n d.lineTo(cx, cy);\n cx += dx;\n cy -= dy;\n };\n\n if (top) {\n // Move to the offset\n //d.lineTo(cx, y);\n // Draw the zig-zags\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n // Draw the last half zig-zag\n doZigZag(true);\n }\n // Draw the right edge\n d.lineTo(x + width, y);\n d.lineTo(x + width, y + height);\n\n if (bottom) {\n dx = -dx;\n dy = -dy;\n cx = x + width;\n cy = y + height;\n\n for (let i = 0; i < nZigZags; i++) {\n doZigZag();\n }\n doZigZag(true);\n }\n // Draw the last line to the left edge\n d.lineTo(x, y + height);\n // Draw the left edge\n d.closePath();\n\n // Now render the path;\n return d.toString();\n}\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n { className: \"labeled-unit\", division, backgroundColor, ...bounds },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n })\n ),\n ]\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[]\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children)\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":[],"version":3,"file":"column-views.5c02fee2.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;AA+BA,SAAS,0CACP,GAAU,EACV,IAAkC;IAElC,MAAM,YAAE,QAAQ,EAAE,GAAG;IAErB,MAAM,CAAC,QAAQ,WAAW,GAAG,CAAA,GAAA,wCAAiB,EAAE,KAAK;IAErD,OAAO;gBACL;oBACA;QACA,MAAM;QACN,IAAI,IAAI,OAAO;IACjB;AACF;AAEA,MAAM,4CAAsB,CAAC;IAC3B,OAAO,IAAI,SAAS,CACjB,OAAO,CAAC,OAAO,UACf,OAAO,CAAC,MAAM,aACd,OAAO,CAAC,MAAM;AACnB;AAEA,SAAS,sCAAgB,KAAoB;IAC3C,MAAM,MAAM,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,oBAAY;IACnC,MAAM,QACJ,IAAI,iBACJ,aAAa,oBACb,mBAAmB,CAAC,MAA8B,IAAc,qBAChE,gBAAgB,cAChB,YAAY,KAAK,WACjB,GAAG,MACJ,GAAG;IAEJ,MAAM,SAAE,KAAK,EAAE,GAAG;IAElB,MAAM,sBAAsB,CAAA,GAAA,kBAAU,EACpC,CAAC;QACC,IAAI,iBAAiB,GAAG,OAAO;QAC/B,MAAM,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM;QACxD,OAAO,KAAK;IACd,GACA;QAAC;QAAO;KAAc;IAGxB,IAAI,aAAa,MAAM,OAAO;IAC9B,MAAM,QAAoB,UACvB,MAAM,CAAC,kBACP,GAAG,CAAC,CAAC,IAAa,0CAAgB,GAAG;YAAE,UAAU,IAAI,QAAQ;QAAC,IAC9D,MAAM,CAAC;IAEV,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,kBAAU,GAAG;QACpB,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,UAAU;uBACV;eACA;QACA,cAAc;YACZ,aAAa;QACf;QACA,GAAG,IAAI;IACT;AACF;AAEA,MAAM,4CAAiB,CAAA,GAAA,YAAI,EAAE,IAAI,CAAC;AAQ3B,SAAS,0CAAgB,KAAqB;IACnD,MAAM,mBACJ,kBAAkB,0DAClB,aAAa,EACb,GAAG,MACJ,GAAG;IAEJ,MAAM,gBAAgB,CAAC;QACrB,MAAM,QAAE,IAAI,EAAE,GAAG;QACjB,OAAO,CAAA,GAAA,sBAAA,EAAE,oBAAoB,gBAAgB,KAAK,IAAI;IACxD;IAEA,OAAO,CAAA,GAAA,sBAAA,EAAE,2CAAgB;QACvB,eAAe,iBAAiB;QAChC,GAAG,IAAI;IACT;AACF","sources":["packages/column-views/src/units/names.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport { useContext, useCallback } from \"react\";\nimport {\n ColumnContext,\n ColumnAxisType,\n NotesColumn,\n NotesColumnProps,\n} from \"@macrostrat/column-components\";\nimport type { ColumnDivision } from \"@macrostrat/column-components\";\nimport { IUnit } from \"./types\";\nimport React from \"react\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { CompositeColumnScale } from \"./composite\";\n\ninterface UnitDataProps extends NotesColumnProps {\n left?: number;\n transform?: string;\n noteComponent?: React.ComponentType<any>;\n shouldRenderNote?(div: ColumnDivision | IUnit, index: number): boolean;\n divisions?: IUnit[];\n minimumHeight?: number;\n scale?: CompositeColumnScale;\n}\n\ntype UnitNote = {\n height: number;\n top_height: number;\n data: IUnit;\n id: number;\n};\n\nfunction noteForDivision(\n div: IUnit,\n opts: { axisType: ColumnAxisType }\n): UnitNote {\n const { axisType } = opts;\n\n const [height, top_height] = getUnitHeightRange(div, axisType);\n\n return {\n height,\n top_height,\n data: div,\n id: div.unit_id,\n };\n}\n\nconst defaultNameFunction = (div) => {\n return div.unit_name\n .replace(\"Mbr\", \"Member\")\n .replace(\"Fm\", \"Formation\")\n .replace(\"Gp\", \"Group\");\n};\n\nfunction UnitDataColumn_(props: UnitDataProps) {\n const ctx = useContext(ColumnContext);\n const {\n left,\n noteComponent,\n shouldRenderNote = (note: ColumnDivision | IUnit, i: number) => true,\n minimumHeight = 0,\n divisions = ctx?.divisions,\n ...rest\n } = props;\n\n const { scale } = ctx;\n\n const minimumHeightFilter = useCallback(\n (d) => {\n if (minimumHeight == 0) return true;\n const dy = Math.abs(scale(d.top_height) - scale(d.height));\n return dy > minimumHeight;\n },\n [scale, minimumHeight]\n );\n\n if (divisions == null) return null;\n const notes: UnitNote[] = divisions\n .filter(shouldRenderNote)\n .map((d: IUnit) => noteForDivision(d, { axisType: ctx.axisType }))\n .filter(minimumHeightFilter);\n\n return h(NotesColumn, {\n transform: `translate(${left || 0})`,\n editable: false,\n noteComponent,\n notes,\n forceOptions: {\n nodeSpacing: 1,\n },\n ...rest,\n });\n}\n\nconst UnitDataColumn = React.memo(UnitDataColumn_);\n\ninterface UnitNamesProps extends UnitDataProps {\n nameForDivision?(obj: IUnit): string;\n paddingLeft?: number;\n width: number;\n}\n\nexport function UnitNamesColumn(props: UnitNamesProps) {\n const {\n nameForDivision = defaultNameFunction,\n noteComponent,\n ...rest\n } = props;\n\n const NoteComponent = (props) => {\n const { note } = props;\n return h(\"p.col-note-label\", nameForDivision(note.data));\n };\n\n return h(UnitDataColumn, {\n noteComponent: noteComponent ?? NoteComponent,\n ...rest,\n });\n}\n\nexport type { UnitNamesProps };\nexport { defaultNameFunction, noteForDivision, UnitDataColumn };\n"],"names":[],"version":3,"file":"column-views.650bd9f5.js.map"}
@@ -1 +0,0 @@
1
- {"mappings":";;;;;;;;;;;;;AAQO,SAAS,0CAAkB,KAAK;IACrC,MAAM,UAAE,MAAM,YAAE,QAAQ,SAAE,KAAK,UAAE,MAAM,aAAE,SAAS,aAAE,SAAS,EAAE,GAAG,MAAM,GACtE;IACF,IAAI,SAAE,KAAK,EAAE,GAAG;IAChB,MAAM,MAAM,CAAA,GAAA,aAAK,EAAE;IACnB,MAAM,KAAK,CAAA,GAAA,qBAAa,EAAE;IAC1B,MAAM,SAAE,KAAK,UAAE,MAAM,EAAE,GAAG,MAAM;QAAE,OAAO;QAAG,QAAQ;IAAE;IACtD,IAAI,SAAS,MACX,QAAQ,KAAK,GAAG,CAAC,OAAO,UAAU,IAAI;IAGxC,IAAI,kBAAkB;IAEtB,IAAI,WACF,kBAAkB;QAChB,MAAM,KAAK,GAAG,CAAC,OAAO;QACtB,IAAI,KAAK,GAAG,CAAC,OAAO;KACrB;IAGH,OAAO,CAAA,GAAA,sBAAA,EAAE,gBAAgB;aAAE;eAAK;mBAAO;IAAU,GAAG;QAClD,CAAA,GAAA,sBAAA,EACE,CAAA,GAAA,YAAI,GACJ;mBACE;oBACA;oBACA;oBACA;YACA,WAAW;uBACX;YACA,aAAa;6BACb;YACA,GAAG,IAAI;mBACP;QACF,GACA;YAAC,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,gBAAQ;YAAI;SAAS;KAE3B;AACH;AAKO,SAAS,0CAAuB,KAAK;IAC1C,MAAM,iBACJ,aAAa,oBACb,gBAAgB,YAChB,QAAQ,SACR,KAAK,UACL,SAAS,WACT,KAAK,aACL,SAAS,wBACT,uBAAuB,wBACvB,kBAAkB,eAClB,MAAM,EACN,GAAG,MACJ,GAAG;IAEJ,IAAI,UAA6B,UAAU;QAAC;QAAM;KAAG;IACrD,0CAA0C;IAC1C,IAAI,iBAAiB,MACnB,UAAU,CAAA,GAAA,kBAAU,EAAE;IAGxB,QAAQ,GAAG,CAAC;IAEZ,OAAO,CAAA,GAAA,sBAAA,EACL,2CACA;QAAE,QAAQ;eAAS;gBAAO;eAAQ;mBAAO;IAAU,GACnD;QACE;QACA,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,yCAAM,GAAG;YACT,UAAU;YACV,QAAQ,eAAe,WAAW;6BAClC;YACA,GAAG,IAAI;QACT;QACA,CAAA,GAAA,sBAAA,EAAE,EAAE,CAAC,sBAAsB,CAAA,GAAA,yCAAM,GAAG;YAClC,UAAU;YACV,QAAQ,eAAe,WAAW;YAClC,aAAa;YACb,OAAO;YACP,GAAG,IAAI;QACT;QACA,CAAA,GAAA,sBAAA,EAAE,EAAE,CAAC,iBAAiB,MAAM,CAAA,GAAA,yCAAY,GAAG;YAAE,SAAS;QAAc;KACrE;AAEL","sources":["packages/column-views/src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children]\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n console.log(currentColumn);\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ]\n );\n}\n\nexport * from \"./layers\";\n"],"names":[],"version":3,"file":"column-views.68409161.js.map"}