@macrostrat/column-views 2.2.2 → 2.3.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 (276) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/{column-views.b0e6c0b3.js → column-views.04636815.js} +3 -3
  3. package/dist/esm/{column-views.b0e6c0b3.js.map → column-views.04636815.js.map} +1 -1
  4. package/dist/esm/{column-views.54f8b909.js → column-views.052498a6.js} +37 -4
  5. package/dist/esm/column-views.052498a6.js.map +1 -0
  6. package/dist/esm/{column-views.5456a1ee.js → column-views.0da4503a.js} +2 -2
  7. package/dist/esm/{column-views.5456a1ee.js.map → column-views.0da4503a.js.map} +1 -1
  8. package/dist/esm/{column-views.ee525e88.js → column-views.107b47b4.js} +8 -8
  9. package/dist/esm/{column-views.ee525e88.js.map → column-views.107b47b4.js.map} +1 -1
  10. package/dist/esm/column-views.17a70358.js +16 -0
  11. package/dist/esm/column-views.17a70358.js.map +1 -0
  12. package/dist/esm/{column-views.073c42da.js → column-views.1b5bf0c6.js} +3 -3
  13. package/dist/esm/{column-views.073c42da.js.map → column-views.1b5bf0c6.js.map} +1 -1
  14. package/dist/esm/{column-views.52ad973a.js → column-views.2708e176.js} +8 -8
  15. package/dist/esm/column-views.2708e176.js.map +1 -0
  16. package/dist/esm/{column-views.88d63dd0.js → column-views.275ba52b.js} +3 -3
  17. package/dist/esm/{column-views.88d63dd0.js.map → column-views.275ba52b.js.map} +1 -1
  18. package/dist/esm/{column-views.7c95c3d7.js → column-views.2bac03a2.js} +2 -2
  19. package/dist/esm/{column-views.7c95c3d7.js.map → column-views.2bac03a2.js.map} +1 -1
  20. package/dist/esm/column-views.2c45a7b5.js.map +1 -1
  21. package/dist/esm/column-views.322790f3.js +138 -0
  22. package/dist/esm/column-views.322790f3.js.map +1 -0
  23. package/dist/esm/{column-views.6698b95a.js → column-views.343fc926.js} +9 -18
  24. package/dist/esm/column-views.343fc926.js.map +1 -0
  25. package/dist/esm/{column-views.aeb61926.js → column-views.3d3e00be.js} +2 -2
  26. package/dist/esm/{column-views.aeb61926.js.map → column-views.3d3e00be.js.map} +1 -1
  27. package/dist/esm/{column-views.7d69838d.js → column-views.40094dd9.js} +3 -3
  28. package/dist/esm/{column-views.7d69838d.js.map → column-views.40094dd9.js.map} +1 -1
  29. package/dist/esm/{column-views.d2214a99.js → column-views.44373a90.js} +8 -7
  30. package/dist/esm/column-views.44373a90.js.map +1 -0
  31. package/dist/esm/column-views.479f68bd.js +152 -0
  32. package/dist/esm/column-views.479f68bd.js.map +1 -0
  33. package/dist/esm/{column-views.ad080c0e.js → column-views.488f24b6.js} +2 -2
  34. package/dist/esm/{column-views.ad080c0e.js.map → column-views.488f24b6.js.map} +1 -1
  35. package/dist/esm/{column-views.abf6aedd.js → column-views.4b259f9e.js} +2 -2
  36. package/dist/esm/{column-views.abf6aedd.js.map → column-views.4b259f9e.js.map} +1 -1
  37. package/dist/esm/{column-views.1151416d.css → column-views.54c1f382.css} +6 -5
  38. package/dist/esm/column-views.54c1f382.css.map +1 -0
  39. package/dist/esm/{column-views.729a6728.js → column-views.565b193a.js} +2 -2
  40. package/dist/esm/{column-views.729a6728.js.map → column-views.565b193a.js.map} +1 -1
  41. package/dist/esm/{column-views.058c0083.js → column-views.5ca2b219.js} +5 -5
  42. package/dist/esm/{column-views.058c0083.js.map → column-views.5ca2b219.js.map} +1 -1
  43. package/dist/esm/{column-views.218e8f5d.js → column-views.5eb4e6ff.js} +4 -4
  44. package/dist/esm/{column-views.218e8f5d.js.map → column-views.5eb4e6ff.js.map} +1 -1
  45. package/dist/esm/{column-views.11ae78f7.js → column-views.5fff0716.js} +3 -3
  46. package/dist/esm/{column-views.11ae78f7.js.map → column-views.5fff0716.js.map} +1 -1
  47. package/dist/esm/{column-views.05586d1f.js → column-views.60e97132.js} +2 -4
  48. package/dist/esm/column-views.60e97132.js.map +1 -0
  49. package/dist/esm/{column-views.75e5aebe.js → column-views.63d40878.js} +4 -4
  50. package/dist/esm/{column-views.75e5aebe.js.map → column-views.63d40878.js.map} +1 -1
  51. package/dist/esm/{column-views.d6d6df77.js → column-views.6c9e5069.js} +40 -62
  52. package/dist/esm/column-views.6c9e5069.js.map +1 -0
  53. package/dist/esm/column-views.6df65dab.js +9 -0
  54. package/dist/esm/column-views.6df65dab.js.map +1 -0
  55. package/dist/esm/{column-views.403a7b48.css → column-views.6f9511d1.css} +2 -1
  56. package/dist/esm/column-views.6f9511d1.css.map +1 -0
  57. package/dist/esm/column-views.7fa0d026.js +62 -0
  58. package/dist/esm/column-views.7fa0d026.js.map +1 -0
  59. package/dist/esm/{column-views.3a7179c4.js → column-views.82eb5026.js} +12 -7
  60. package/dist/esm/column-views.82eb5026.js.map +1 -0
  61. package/dist/esm/{column-views.9dd25b5b.js → column-views.92575b87.js} +3 -3
  62. package/dist/esm/column-views.92575b87.js.map +1 -0
  63. package/dist/esm/{column-views.833c2b74.js → column-views.9d51a5ab.js} +3 -3
  64. package/dist/esm/{column-views.833c2b74.js.map → column-views.9d51a5ab.js.map} +1 -1
  65. package/dist/esm/{column-views.817752b6.js → column-views.9ffc089b.js} +3 -3
  66. package/dist/esm/{column-views.817752b6.js.map → column-views.9ffc089b.js.map} +1 -1
  67. package/dist/esm/{column-views.70164236.js → column-views.aa9ede4d.js} +2 -2
  68. package/dist/esm/{column-views.70164236.js.map → column-views.aa9ede4d.js.map} +1 -1
  69. package/dist/esm/{column-views.6d63971b.js → column-views.ad2fe46c.js} +2 -2
  70. package/dist/esm/{column-views.6d63971b.js.map → column-views.ad2fe46c.js.map} +1 -1
  71. package/dist/esm/{column-views.7b4a1f15.js → column-views.afe0bb48.js} +5 -5
  72. package/dist/esm/{column-views.7b4a1f15.js.map → column-views.afe0bb48.js.map} +1 -1
  73. package/dist/esm/{column-views.aecf25bc.js → column-views.b4e1236d.js} +2 -2
  74. package/dist/esm/{column-views.aecf25bc.js.map → column-views.b4e1236d.js.map} +1 -1
  75. package/dist/esm/{column-views.6ce8cb61.js → column-views.c149f7a5.js} +3 -3
  76. package/dist/esm/{column-views.6ce8cb61.js.map → column-views.c149f7a5.js.map} +1 -1
  77. package/dist/esm/{column-views.b7016f82.css → column-views.cb6fc808.css} +10 -10
  78. package/dist/esm/column-views.cb6fc808.css.map +1 -0
  79. package/dist/esm/{column-views.35efe006.js → column-views.ce3a3ac8.js} +2 -2
  80. package/dist/esm/{column-views.35efe006.js.map → column-views.ce3a3ac8.js.map} +1 -1
  81. package/dist/esm/{column-views.77e22590.js → column-views.d1b49f5c.js} +2 -2
  82. package/dist/esm/{column-views.77e22590.js.map → column-views.d1b49f5c.js.map} +1 -1
  83. package/dist/esm/{column-views.faa4e06d.js → column-views.d524075b.js} +4 -4
  84. package/dist/esm/{column-views.faa4e06d.js.map → column-views.d524075b.js.map} +1 -1
  85. package/dist/esm/column-views.d5e788e8.js +31 -0
  86. package/dist/esm/column-views.d5e788e8.js.map +1 -0
  87. package/dist/esm/{column-views.30950997.js → column-views.d6c0b7bc.js} +2 -2
  88. package/dist/esm/{column-views.30950997.js.map → column-views.d6c0b7bc.js.map} +1 -1
  89. package/dist/esm/{column-views.44d3797a.js → column-views.dc195174.js} +2 -2
  90. package/dist/esm/{column-views.44d3797a.js.map → column-views.dc195174.js.map} +1 -1
  91. package/dist/esm/column-views.de433f18.js +139 -0
  92. package/dist/esm/column-views.de433f18.js.map +1 -0
  93. package/dist/esm/{column-views.ef88c46c.js → column-views.e075af15.js} +2 -2
  94. package/dist/esm/{column-views.ef88c46c.js.map → column-views.e075af15.js.map} +1 -1
  95. package/dist/esm/{column-views.7faf00ed.js → column-views.f7cdf6be.js} +3 -3
  96. package/dist/esm/{column-views.7faf00ed.js.map → column-views.f7cdf6be.js.map} +1 -1
  97. package/dist/esm/{column-views.66ccfc44.js → column-views.faa7e52e.js} +3 -3
  98. package/dist/esm/{column-views.66ccfc44.js.map → column-views.faa7e52e.js.map} +1 -1
  99. package/dist/esm/column-views.fba36cbb.js +13 -0
  100. package/dist/esm/{column-views.43beafa3.js.map → column-views.fba36cbb.js.map} +1 -1
  101. package/dist/esm/index.d.ts +40 -19
  102. package/dist/esm/index.d.ts.map +1 -1
  103. package/dist/esm/index.js +12 -12
  104. package/dist/node/column-views.012fa10c.js +2 -0
  105. package/dist/node/column-views.012fa10c.js.map +1 -0
  106. package/dist/node/{column-views.edb4ba54.js → column-views.021a6961.js} +2 -2
  107. package/dist/node/{column-views.edb4ba54.js.map → column-views.021a6961.js.map} +1 -1
  108. package/dist/node/{column-views.a19be00f.js → column-views.08bef1f6.js} +2 -2
  109. package/dist/node/{column-views.a19be00f.js.map → column-views.08bef1f6.js.map} +1 -1
  110. package/dist/node/{column-views.ae22e8b1.js → column-views.0f401891.js} +2 -2
  111. package/dist/node/{column-views.ae22e8b1.js.map → column-views.0f401891.js.map} +1 -1
  112. package/dist/node/column-views.1d064426.js +2 -0
  113. package/dist/node/column-views.1d064426.js.map +1 -0
  114. package/dist/node/{column-views.ae54d3e1.js → column-views.2577dec0.js} +2 -2
  115. package/dist/node/{column-views.ae54d3e1.js.map → column-views.2577dec0.js.map} +1 -1
  116. package/dist/node/{column-views.1ac9e2ed.js → column-views.2fe8feb9.js} +2 -2
  117. package/dist/node/{column-views.1ac9e2ed.js.map → column-views.2fe8feb9.js.map} +1 -1
  118. package/dist/node/column-views.3a079e34.css +2 -0
  119. package/dist/node/column-views.3a079e34.css.map +1 -0
  120. package/dist/node/{column-views.a281d5bb.js → column-views.42bc66a8.js} +2 -2
  121. package/dist/node/{column-views.a281d5bb.js.map → column-views.42bc66a8.js.map} +1 -1
  122. package/dist/node/{column-views.4ce5f5e4.js → column-views.465e593b.js} +2 -2
  123. package/dist/node/{column-views.4ce5f5e4.js.map → column-views.465e593b.js.map} +1 -1
  124. package/dist/node/{column-views.e1813308.js → column-views.46efb749.js} +2 -2
  125. package/dist/node/{column-views.e1813308.js.map → column-views.46efb749.js.map} +1 -1
  126. package/dist/node/{column-views.61dc64bc.js → column-views.47440961.js} +2 -2
  127. package/dist/node/{column-views.61dc64bc.js.map → column-views.47440961.js.map} +1 -1
  128. package/dist/node/{column-views.38835c99.js → column-views.5559de6a.js} +2 -2
  129. package/dist/node/{column-views.38835c99.js.map → column-views.5559de6a.js.map} +1 -1
  130. package/dist/node/{column-views.52cc4dd0.js → column-views.56f88b8c.js} +2 -2
  131. package/dist/node/{column-views.52cc4dd0.js.map → column-views.56f88b8c.js.map} +1 -1
  132. package/dist/node/{column-views.0b3a384e.js → column-views.5a9331a9.js} +2 -2
  133. package/dist/node/{column-views.0b3a384e.js.map → column-views.5a9331a9.js.map} +1 -1
  134. package/dist/node/column-views.5cb51833.js +2 -0
  135. package/dist/node/column-views.5cb51833.js.map +1 -0
  136. package/dist/node/column-views.5fd6e11a.js +2 -0
  137. package/dist/node/column-views.5fd6e11a.js.map +1 -0
  138. package/dist/node/column-views.672b683c.js +2 -0
  139. package/dist/node/column-views.672b683c.js.map +1 -0
  140. package/dist/node/{column-views.a08b0c9f.js → column-views.6c7f9245.js} +2 -2
  141. package/dist/node/{column-views.a08b0c9f.js.map → column-views.6c7f9245.js.map} +1 -1
  142. package/dist/node/{column-views.67fed1f5.js → column-views.75456275.js} +2 -2
  143. package/dist/node/{column-views.67fed1f5.js.map → column-views.75456275.js.map} +1 -1
  144. package/dist/node/column-views.75ba0464.css +2 -0
  145. package/dist/node/column-views.75ba0464.css.map +1 -0
  146. package/dist/node/{column-views.21a73236.js → column-views.7c322202.js} +2 -2
  147. package/dist/node/{column-views.21a73236.js.map → column-views.7c322202.js.map} +1 -1
  148. package/dist/node/column-views.7cc1a14f.js +2 -0
  149. package/dist/node/column-views.7cc1a14f.js.map +1 -0
  150. package/dist/node/{column-views.7faaf6c8.js → column-views.8e846c57.js} +2 -2
  151. package/dist/node/{column-views.7faaf6c8.js.map → column-views.8e846c57.js.map} +1 -1
  152. package/dist/node/{column-views.003348f6.js → column-views.8ee8469d.js} +2 -2
  153. package/dist/node/{column-views.003348f6.js.map → column-views.8ee8469d.js.map} +1 -1
  154. package/dist/node/{column-views.420b60d2.js → column-views.93bde6c1.js} +2 -2
  155. package/dist/node/{column-views.420b60d2.js.map → column-views.93bde6c1.js.map} +1 -1
  156. package/dist/node/{column-views.f2ee436e.js → column-views.a14f0134.js} +2 -2
  157. package/dist/node/{column-views.f2ee436e.js.map → column-views.a14f0134.js.map} +1 -1
  158. package/dist/node/column-views.a230263f.js +2 -0
  159. package/dist/node/column-views.a230263f.js.map +1 -0
  160. package/dist/node/{column-views.aef76eee.js → column-views.a596b1f5.js} +2 -2
  161. package/dist/node/{column-views.aef76eee.js.map → column-views.a596b1f5.js.map} +1 -1
  162. package/dist/node/column-views.af480651.js +2 -0
  163. package/dist/node/column-views.af480651.js.map +1 -0
  164. package/dist/node/column-views.b103acbc.js +2 -0
  165. package/dist/node/column-views.b103acbc.js.map +1 -0
  166. package/dist/node/{column-views.60b5663d.js → column-views.b40c1b9c.js} +2 -2
  167. package/dist/node/{column-views.60b5663d.js.map → column-views.b40c1b9c.js.map} +1 -1
  168. package/dist/node/column-views.b6e86cf0.js +2 -0
  169. package/dist/node/column-views.b6e86cf0.js.map +1 -0
  170. package/dist/node/{column-views.22c2d45b.js → column-views.c007152b.js} +2 -2
  171. package/dist/node/{column-views.22c2d45b.js.map → column-views.c007152b.js.map} +1 -1
  172. package/dist/node/{column-views.b6943236.js → column-views.c921fa1a.js} +2 -2
  173. package/dist/node/{column-views.b6943236.js.map → column-views.c921fa1a.js.map} +1 -1
  174. package/dist/node/{column-views.05cfc627.js → column-views.c9880a4d.js} +2 -2
  175. package/dist/node/{column-views.05cfc627.js.map → column-views.c9880a4d.js.map} +1 -1
  176. package/dist/node/column-views.ccfb9afb.css +2 -0
  177. package/dist/node/column-views.ccfb9afb.css.map +1 -0
  178. package/dist/node/{column-views.bde2dfa8.js → column-views.cd54f1b1.js} +2 -2
  179. package/dist/node/{column-views.bde2dfa8.js.map → column-views.cd54f1b1.js.map} +1 -1
  180. package/dist/node/{column-views.db47fe3c.js → column-views.d77d260b.js} +2 -2
  181. package/dist/node/{column-views.db47fe3c.js.map → column-views.d77d260b.js.map} +1 -1
  182. package/dist/node/{column-views.105c28fa.js → column-views.d818b387.js} +2 -2
  183. package/dist/node/{column-views.105c28fa.js.map → column-views.d818b387.js.map} +1 -1
  184. package/dist/node/{column-views.2d00d842.js → column-views.d8821a96.js} +2 -2
  185. package/dist/node/{column-views.2d00d842.js.map → column-views.d8821a96.js.map} +1 -1
  186. package/dist/node/column-views.dbb4a46b.js +2 -0
  187. package/dist/node/column-views.dbb4a46b.js.map +1 -0
  188. package/dist/node/{column-views.b12f8c81.js → column-views.e264a767.js} +2 -2
  189. package/dist/node/{column-views.b12f8c81.js.map → column-views.e264a767.js.map} +1 -1
  190. package/dist/node/column-views.e93b3bdb.js +2 -0
  191. package/dist/node/column-views.e93b3bdb.js.map +1 -0
  192. package/dist/node/{column-views.3913cd0f.js → column-views.ec691859.js} +2 -2
  193. package/dist/node/{column-views.3913cd0f.js.map → column-views.ec691859.js.map} +1 -1
  194. package/dist/node/column-views.ec7cc7cc.js +2 -0
  195. package/dist/node/column-views.ec7cc7cc.js.map +1 -0
  196. package/dist/node/{column-views.aae09aca.js → column-views.eecdc727.js} +2 -2
  197. package/dist/node/{column-views.aae09aca.js.map → column-views.eecdc727.js.map} +1 -1
  198. package/dist/node/{column-views.d08e4328.js → column-views.f577d065.js} +2 -2
  199. package/dist/node/{column-views.d08e4328.js.map → column-views.f577d065.js.map} +1 -1
  200. package/dist/node/column-views.fac4baff.js +2 -0
  201. package/dist/node/column-views.fac4baff.js.map +1 -0
  202. package/dist/node/index.js +1 -1
  203. package/dist/node/index.js.map +1 -1
  204. package/package.json +2 -2
  205. package/src/age-axis.ts +1 -1
  206. package/src/column.ts +4 -1
  207. package/src/correlation-chart/stories/correlation-chart.stories.ts +1 -1
  208. package/src/facets/detrital-zircon/index.module.sass +2 -3
  209. package/src/facets/detrital-zircon/index.ts +81 -11
  210. package/src/facets/detrital-zircon/provider.ts +1 -1
  211. package/src/facets/fossils/index.ts +145 -215
  212. package/src/facets/fossils/provider.ts +18 -25
  213. package/src/facets/fossils/taxon-ranges.ts +220 -0
  214. package/src/facets/index.ts +0 -1
  215. package/src/facets/{base-sample-column.module.sass → measurements/base.module.sass} +1 -0
  216. package/src/facets/measurements/base.ts +215 -0
  217. package/src/facets/measurements/index.ts +2 -38
  218. package/src/facets/measurements/sgp.ts +91 -0
  219. package/src/notes.ts +6 -3
  220. package/src/prepare-units/index.ts +8 -2
  221. package/src/prepare-units/utils.ts +55 -9
  222. package/dist/esm/column-views.05586d1f.js.map +0 -1
  223. package/dist/esm/column-views.1151416d.css.map +0 -1
  224. package/dist/esm/column-views.1e579112.js +0 -92
  225. package/dist/esm/column-views.1e579112.js.map +0 -1
  226. package/dist/esm/column-views.3a7179c4.js.map +0 -1
  227. package/dist/esm/column-views.403a7b48.css.map +0 -1
  228. package/dist/esm/column-views.43beafa3.js +0 -15
  229. package/dist/esm/column-views.52ad973a.js.map +0 -1
  230. package/dist/esm/column-views.54f8b909.js.map +0 -1
  231. package/dist/esm/column-views.6698b95a.js.map +0 -1
  232. package/dist/esm/column-views.6e7082db.js +0 -16
  233. package/dist/esm/column-views.6e7082db.js.map +0 -1
  234. package/dist/esm/column-views.7243e77d.js +0 -37
  235. package/dist/esm/column-views.7243e77d.js.map +0 -1
  236. package/dist/esm/column-views.76a220c4.js +0 -95
  237. package/dist/esm/column-views.76a220c4.js.map +0 -1
  238. package/dist/esm/column-views.9dd25b5b.js.map +0 -1
  239. package/dist/esm/column-views.b7016f82.css.map +0 -1
  240. package/dist/esm/column-views.d2214a99.js.map +0 -1
  241. package/dist/esm/column-views.d6d6df77.js.map +0 -1
  242. package/dist/esm/column-views.ea4ebbb7.js +0 -31
  243. package/dist/esm/column-views.ea4ebbb7.js.map +0 -1
  244. package/dist/node/column-views.16f336ee.js +0 -2
  245. package/dist/node/column-views.16f336ee.js.map +0 -1
  246. package/dist/node/column-views.1c567bfd.js +0 -2
  247. package/dist/node/column-views.1c567bfd.js.map +0 -1
  248. package/dist/node/column-views.28609db2.css +0 -2
  249. package/dist/node/column-views.28609db2.css.map +0 -1
  250. package/dist/node/column-views.2901b649.js +0 -2
  251. package/dist/node/column-views.2901b649.js.map +0 -1
  252. package/dist/node/column-views.29eb25bd.css +0 -2
  253. package/dist/node/column-views.29eb25bd.css.map +0 -1
  254. package/dist/node/column-views.39c21f22.js +0 -2
  255. package/dist/node/column-views.39c21f22.js.map +0 -1
  256. package/dist/node/column-views.573cb29d.js +0 -2
  257. package/dist/node/column-views.573cb29d.js.map +0 -1
  258. package/dist/node/column-views.5f3b0b04.js +0 -2
  259. package/dist/node/column-views.5f3b0b04.js.map +0 -1
  260. package/dist/node/column-views.77ace3a2.js +0 -2
  261. package/dist/node/column-views.77ace3a2.js.map +0 -1
  262. package/dist/node/column-views.8f54691f.js +0 -2
  263. package/dist/node/column-views.8f54691f.js.map +0 -1
  264. package/dist/node/column-views.a16cd1f2.js +0 -2
  265. package/dist/node/column-views.a16cd1f2.js.map +0 -1
  266. package/dist/node/column-views.a9576bac.js +0 -2
  267. package/dist/node/column-views.a9576bac.js.map +0 -1
  268. package/dist/node/column-views.c3c15cc2.js +0 -2
  269. package/dist/node/column-views.c3c15cc2.js.map +0 -1
  270. package/dist/node/column-views.cd7b223b.css +0 -2
  271. package/dist/node/column-views.cd7b223b.css.map +0 -1
  272. package/dist/node/column-views.f6ac1161.js +0 -2
  273. package/dist/node/column-views.f6ac1161.js.map +0 -1
  274. package/src/facets/base-sample-column.ts +0 -114
  275. package/src/facets/measurements/provider.ts +0 -80
  276. /package/src/facets/fossils/{index.module.sass → taxon-ranges.module.sass} +0 -0
@@ -0,0 +1,138 @@
1
+ import {FossilDataType as $a3ff7da576c02df0$export$a990c76b38782f57, useFossilData as $a3ff7da576c02df0$export$e6af757fa9780077} from "./column-views.343fc926.js";
2
+ import {BaseMeasurementsColumn as $50d219504625a431$export$ce5c4f2fdf4e644d, groupNotesByPixelDistance as $50d219504625a431$export$4e649f790614b299, standardizeMeasurementHeight as $50d219504625a431$export$9d101e1fcb2166a6, TruncatedList as $50d219504625a431$export$653e47a7a0da0f0d} from "./column-views.de433f18.js";
3
+ import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.4b259f9e.js";
4
+ import "./column-views.cb6fc808.css";
5
+ import $6u76g$columnviewsd5e788e8js from "./column-views.d5e788e8.js";
6
+ import {getPositionWithinUnit as $b6657fba8924a702$export$441710fb21b4ae09, getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.052498a6.js";
7
+ import {PBDBOccurrencesMatrix as $d419340b86dbd2ea$export$652730986cccff7a, FossilDataType as $a3ff7da576c02df0$export$a990c76b38782f57} from "./column-views.6c9e5069.js";
8
+ import $6u76g$macrostrathyper from "@macrostrat/hyper";
9
+ import {ColumnAxisType as $6u76g$ColumnAxisType} from "@macrostrat/column-components";
10
+ import {scaleLinear as $6u76g$scaleLinear} from "d3-scale";
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 $b9286605a04210d4$var$h = (0, $6u76g$macrostrathyper).styled((0, ($parcel$interopDefault($6u76g$columnviewsd5e788e8js))));
26
+ function $b9286605a04210d4$export$554267114407ef68({ columnID: columnID, type: type = (0, $a3ff7da576c02df0$export$a990c76b38782f57).Collections }) {
27
+ const data = (0, $a3ff7da576c02df0$export$e6af757fa9780077)(columnID, type);
28
+ const { axisType: axisType, units: units } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
29
+ const scale = (0, $d5074f164411387e$export$a7fc62995ec4f76)();
30
+ if (data == null || units == null || scale == null) return null;
31
+ const data1 = $b9286605a04210d4$var$preparePBDBData(data, units, scale, axisType);
32
+ return $b9286605a04210d4$var$h((0, $50d219504625a431$export$ce5c4f2fdf4e644d), {
33
+ data: data1,
34
+ noteComponent: $b9286605a04210d4$var$FossilInfo,
35
+ focusedNoteComponent: $b9286605a04210d4$var$FossilInfo,
36
+ className: "fossil-collections"
37
+ });
38
+ }
39
+ function $b9286605a04210d4$var$FossilInfo(props) {
40
+ const { note: note, maxItems: maxItems, focused: focused = false } = props;
41
+ const { data: data } = note;
42
+ // Sort collections by name
43
+ data.sort((a, b)=>{
44
+ const nameA = a.best_name ?? a.cltn_name ?? "";
45
+ const nameB = b.best_name ?? b.cltn_name ?? "";
46
+ return nameA.localeCompare(nameB);
47
+ });
48
+ return $b9286605a04210d4$var$h((0, $50d219504625a431$export$653e47a7a0da0f0d), {
49
+ data: data,
50
+ className: "fossil-collections",
51
+ itemRenderer: $b9286605a04210d4$var$PBDBCollectionLink,
52
+ maxItems: focused ? Infinity : maxItems ?? 5
53
+ });
54
+ }
55
+ const $b9286605a04210d4$var$FocusedFossilInfo = (props)=>$b9286605a04210d4$var$h($b9286605a04210d4$var$FossilInfo, {
56
+ ...props,
57
+ maxItems: Infinity
58
+ });
59
+ function $b9286605a04210d4$var$PBDBCollectionLink({ data: data }) {
60
+ /** A link to a PBDB collection that handles either an occurrence or collection object */ return $b9286605a04210d4$var$h("a.link-id", {
61
+ href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,
62
+ target: "_blank",
63
+ onClick (e) {
64
+ e.stopPropagation();
65
+ }
66
+ }, data.best_name ?? data.cltn_name);
67
+ }
68
+ function $b9286605a04210d4$var$preparePBDBData(data, units, scale, axisType, options) {
69
+ /** Prepare PBDB fossil data for display in a measurements column */ const { groupCloseNotes: groupCloseNotes = true } = options ?? {};
70
+ const groupDistance = typeof groupCloseNotes === "number" ? groupCloseNotes : 10;
71
+ // Map of data to its defined height ranges
72
+ const dataMap = new Map();
73
+ // Todo: if we wanted, we could add a step where we group notes that are too close together here...
74
+ for (const d of data){
75
+ const range = $b9286605a04210d4$var$getHeightRangeForPBDBEntity(d, units, axisType);
76
+ if (range == null) continue;
77
+ const { height: height, top_height: top_height } = range;
78
+ // compose the key based on height info
79
+ let key = `${height}`;
80
+ if (top_height != null) key += `-${top_height}`;
81
+ // Group by height key
82
+ if (!dataMap.has(key)) dataMap.set(key, {
83
+ height: height,
84
+ top_height: top_height ?? height,
85
+ data: [],
86
+ id: key
87
+ });
88
+ dataMap.get(key).data.push(d);
89
+ }
90
+ return (0, $50d219504625a431$export$4e649f790614b299)(Array.from(dataMap.values()), scale, axisType, groupDistance);
91
+ }
92
+ function $b9286605a04210d4$var$getHeightRangeForPBDBEntity(d, units, axisType) {
93
+ let height = null;
94
+ if (d.slb != null && d.slu == "mbsf") {
95
+ // Meters below sea floor - special case for eODP where we have
96
+ // specific depth data referenced
97
+ height = Number(d.slb);
98
+ if (axisType === (0, $6u76g$ColumnAxisType).DEPTH) // Data is already in depth units
99
+ return {
100
+ height: height
101
+ };
102
+ }
103
+ if (d.unit_id == null) return null;
104
+ if (height != null) {
105
+ // If we have both height and unit info, we need to adjust the height
106
+ // to fit whatever scale type we're using.
107
+ // TODO: we could improve how this works by having concurrent age and
108
+ // height scales, which would allow us to do this without having to
109
+ // reference to a specific unit.
110
+ const unit = units.find((u)=>u.unit_id === d.unit_id);
111
+ if (unit == null) return null;
112
+ const relHeight = $b9286605a04210d4$var$getRelativePositionInUnit(height, unit, (0, $6u76g$ColumnAxisType).DEPTH);
113
+ if (relHeight == null) return null;
114
+ height = (0, $b6657fba8924a702$export$441710fb21b4ae09)(relHeight, unit, axisType);
115
+ return {
116
+ height: height
117
+ };
118
+ }
119
+ // We can just get the height within the unit, clipped to the unit boundaries
120
+ return (0, $50d219504625a431$export$9d101e1fcb2166a6)({
121
+ unit_id: d.unit_id
122
+ }, units, axisType);
123
+ }
124
+ function $b9286605a04210d4$var$getRelativePositionInUnit(pos, unit, axisType) {
125
+ // This is the inverse of getPositionWithinUnit
126
+ const heights = (0, $b6657fba8924a702$export$70e712e2ac0237a)(unit, axisType, false);
127
+ const scale = (0, $6u76g$scaleLinear)(heights).domain([
128
+ 0,
129
+ 1
130
+ ]);
131
+ const relPos = scale.invert(pos);
132
+ if (relPos < 0 || relPos > 1) return null;
133
+ return relPos;
134
+ }
135
+
136
+
137
+ export {$b9286605a04210d4$export$554267114407ef68 as PBDBFossilsColumn, $a3ff7da576c02df0$export$a990c76b38782f57 as FossilDataType, $a3ff7da576c02df0$export$a990c76b38782f57 as FossilDataType, $d419340b86dbd2ea$export$652730986cccff7a as PBDBOccurrencesMatrix};
138
+ //# sourceMappingURL=column-views.322790f3.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n PBDBCollection,\n PBDBEntity,\n PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { CompositeColumnScale, IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport { getPositionWithinUnit, getUnitHeightRange } from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport { FossilDataType };\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nconst FocusedFossilInfo = (props: FossilItemProps) =>\n h(FossilInfo, { ...props, maxItems: Infinity });\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: { groupCloseNotes?: boolean | number },\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit<T extends PBDBEntity>(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":[],"version":3,"file":"column-views.322790f3.js.map"}
@@ -1,11 +1,10 @@
1
- import {group as $7EBVZ$group} from "d3-array";
2
- import {createAPIContext as $7EBVZ$createAPIContext, useAPIResult as $7EBVZ$useAPIResult, useAsyncMemo as $7EBVZ$useAsyncMemo} from "@macrostrat/ui-components";
3
-
1
+ import {createAPIContext as $7EBVZ$createAPIContext, useAsyncMemo as $7EBVZ$useAsyncMemo} from "@macrostrat/ui-components";
4
2
 
5
3
 
6
4
  const $a3ff7da576c02df0$var$responseUnwrapper = (d)=>d.records;
5
+ const $a3ff7da576c02df0$var$pbdbAPIBase = "https://paleobiodb.org/data1.2";
7
6
  const $a3ff7da576c02df0$var$pbdbAPIContext = (0, $7EBVZ$createAPIContext)({
8
- baseURL: "https://paleobiodb.org/data1.2",
7
+ baseURL: $a3ff7da576c02df0$var$pbdbAPIBase,
9
8
  unwrapResponse: $a3ff7da576c02df0$var$responseUnwrapper
10
9
  });
11
10
  var $a3ff7da576c02df0$export$a990c76b38782f57 = /*#__PURE__*/ function(FossilDataType) {
@@ -13,15 +12,6 @@ var $a3ff7da576c02df0$export$a990c76b38782f57 = /*#__PURE__*/ function(FossilDat
13
12
  FossilDataType["Collections"] = "colls";
14
13
  return FossilDataType;
15
14
  }({});
16
- function $a3ff7da576c02df0$export$c4ed16553d869511(type, { col_id: col_id }) {
17
- const params = {
18
- ms_column: col_id,
19
- show: "full,mslink"
20
- };
21
- return (0, $7EBVZ$useAPIResult)(`/${type}/list.json`, params, {
22
- context: $a3ff7da576c02df0$var$pbdbAPIContext
23
- });
24
- }
25
15
  function $a3ff7da576c02df0$export$e6af757fa9780077(col_id, type = "colls") {
26
16
  // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here
27
17
  // we create a unified view of data over both sources.
@@ -43,7 +33,8 @@ async function $a3ff7da576c02df0$var$fetchMacrostratFossilData(col_id, type) {
43
33
  return res.success.data;
44
34
  }
45
35
  async function $a3ff7da576c02df0$var$fetchPDBDFossilData(col_id, type) {
46
- const resp = await fetch(`https://paleobiodb.org/data1.2/${type}/list.json?ms_column=${col_id}&show=mslink,full`);
36
+ // Note: show=rank does not work on training PBDB server
37
+ const resp = await fetch($a3ff7da576c02df0$var$pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`);
47
38
  const res = await resp.json();
48
39
  return res.records.map(type == "colls" ? $a3ff7da576c02df0$var$createMacrostratCollection : $a3ff7da576c02df0$var$preprocessOccurrence);
49
40
  }
@@ -52,13 +43,13 @@ async function $a3ff7da576c02df0$var$fetchFossilData(colID, type) {
52
43
  $a3ff7da576c02df0$var$fetchMacrostratFossilData(colID, type),
53
44
  $a3ff7da576c02df0$var$fetchPDBDFossilData(colID, type)
54
45
  ]);
55
- const data = [
46
+ return [
56
47
  ...macrostratData,
57
48
  ...pbdbData
58
49
  ];
59
- return (0, $7EBVZ$group)(data, (d)=>d.unit_id);
60
50
  }
61
51
  function $a3ff7da576c02df0$var$preprocessOccurrence(d) {
52
+ if (d.msu == null || d.msc == null) return d;
62
53
  /* Preprocess data for an occurrence into a Macrostrat-like format */ // Standardize names of Macrostrat units and columns
63
54
  const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
64
55
  const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
@@ -104,5 +95,5 @@ function $a3ff7da576c02df0$var$createMacrostratCollection(d) {
104
95
  }
105
96
 
106
97
 
107
- export {$a3ff7da576c02df0$export$a990c76b38782f57 as FossilDataType, $a3ff7da576c02df0$export$c4ed16553d869511 as usePBDBFossilData, $a3ff7da576c02df0$export$e6af757fa9780077 as useFossilData};
108
- //# sourceMappingURL=column-views.6698b95a.js.map
98
+ export {$a3ff7da576c02df0$export$a990c76b38782f57 as FossilDataType, $a3ff7da576c02df0$export$e6af757fa9780077 as useFossilData};
99
+ //# sourceMappingURL=column-views.343fc926.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/column-views/src/facets/fossils/provider.ts"],"sourcesContent":["import {\n createAPIContext,\n useAPIResult,\n useAsyncMemo,\n} from \"@macrostrat/ui-components\";\n\nconst responseUnwrapper = (d) => d.records;\n\nconst pbdbAPIBase = \"https://paleobiodb.org/data1.2\";\n\nconst pbdbAPIContext = createAPIContext({\n baseURL: pbdbAPIBase,\n unwrapResponse: responseUnwrapper,\n});\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport interface PBDBEntity {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n // For eODP, slb/slu are used to store the heights of fossil locations found in measured sections.\n // They may have a more general set of uses as well but these are not currently explored.\n slb?: string; // The local bed in which the fossil was found\n slu?: string; // The unit of measurement used to designate the local bed\n}\n\nexport interface PBDBCollection extends PBDBEntity {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBEntity {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData(\n col_id: number,\n type = FossilDataType.Collections,\n) {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n // Note: show=rank does not work on training PBDB server\n const resp = await fetch(\n pbdbAPIBase + `/${type}/list.json?ms_column=${col_id}&show=mslink,stratext`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nasync function fetchFossilData<T extends PBDBEntity>(\n colID: number,\n type: FossilDataType,\n): Promise<T[]> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n return [...macrostratData, ...pbdbData];\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n if (d.msu == null || d.msc == null) {\n return d;\n }\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":[],"version":3,"file":"column-views.343fc926.js.map"}
@@ -1,4 +1,4 @@
1
- import {useMacrostratColumns as $774a5efa27d1c77b$export$81eaae0b474404fd, useMacrostratStore as $774a5efa27d1c77b$export$fb98d5bae3a6800} from "./column-views.ef88c46c.js";
1
+ import {useMacrostratColumns as $774a5efa27d1c77b$export$81eaae0b474404fd, useMacrostratStore as $774a5efa27d1c77b$export$fb98d5bae3a6800} from "./column-views.e075af15.js";
2
2
  import {create as $g0ikq$create, useStore as $g0ikq$useStore} from "zustand";
3
3
  import {createContext as $g0ikq$createContext, useState as $g0ikq$useState, useMemo as $g0ikq$useMemo, useEffect as $g0ikq$useEffect, useContext as $g0ikq$useContext} from "react";
4
4
  import $g0ikq$macrostrathyper from "@macrostrat/hyper";
@@ -78,4 +78,4 @@ function $09486427d129f589$export$642c2b57c47ea41(selector) {
78
78
 
79
79
 
80
80
  export {$09486427d129f589$export$8da3b11f62ebf019 as ColumnNavigationProvider, $09486427d129f589$export$642c2b57c47ea41 as useColumnNavigationStore};
81
- //# sourceMappingURL=column-views.aeb61926.js.map
81
+ //# sourceMappingURL=column-views.3d3e00be.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;AAoCA,MAAM,+CAAyB,CAAA,GAAA,oBAAY,EACzC;AAGK,SAAS,0CAAyB,YACvC,QAAQ,WACR,OAAO,aACP,SAAS,kBACT,cAAc,aACd,SAAS,aACT,SAAS,kBACT,cAAc,iBACd,aAAa,EACW;IACxB,MAAM,aAAa,CAAA,GAAA,wCAAiB,EAAE,CAAC,IAAM,EAAE,UAAU;IAEzD,MAAM,CAAC,MAAM,GAAG,CAAA,GAAA,eAAO,EAAE;QACvB,OAAO,CAAA,GAAA,aAAK,EAAmB,CAAC,KAAK;YACnC,OAAO;gBACL,SAAS;gBACT,gBAAgB;gBAChB,eAAe;gBACf,cAAa,QAAuB;oBAClC,IAAI;wBAAE,gBAAgB;wBAAU,eAAe;oBAAK;oBACpD,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,iBAAiB,UAAU;gBAC7B;gBACA,kBAAiB,QAAuB;oBACtC,IAAI;wBAAE,eAAe;oBAAS;oBAC9B,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,gBAAgB,UAAU;gBAC5B;YACF;QACF;IACF;IAEA,mBAAmB;IACnB,iEAAiE,GACjE,+BAA+B;IAC/B,wEAAwE;IACxE,2DAA2D;IAC3D,mDAAmD;IAEnD,IAAI,WAAW,WAAW,CAAA,GAAA,yCAAmB,EAAE,WAAW;IAE1D,8BAA8B;IAC9B,IAAI,WAAW,SAAS,GACtB,WAAW,CAAA,GAAA,cAAM,EAAE;QACjB,OAAO,UAAU,OAAO,CAAC,IAAM,UAAU,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM;IACvE,GAAG;QAAC;QAAW;KAAS;IAG1B,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,UAAU,SAAS,GACrB,MAAM,QAAQ,CAAC;YAAE,SAAS;4BAAU;QAAe;IAEvD,GAAG;QAAC;KAAS;IACb,qDAAqD;IAErD,6EAA6E;IAC7E,CAAA,GAAA,gBAAQ,EAAE;QACR,MAAM,gBAAE,YAAY,EAAE,gBAAgB,uBAAuB,EAAE,GAC7D,MAAM,QAAQ;QAChB,IAAI,kBAAkB,yBACpB;QAEF,aAAa;IACf,GAAG;QAAC;KAAe;IAEnB,OAAO,CAAA,GAAA,sBAAA,EAAE,6CAAuB,QAAQ,EAAE;QAAE,OAAO;IAAM,GAAG;AAC9D;AAEO,SAAS,yCACd,QAAyC;IAEzC,MAAM,WAAW,CAAA,GAAA,iBAAS,EAAE;IAC5B,IAAI,YAAY,MACd,MAAM,IAAI,MAAM;IAElB,OAAO,CAAA,GAAA,eAAO,EAAE,UAAU;AAC5B","sources":["packages/column-views/src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"../../../data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n columnIDs?: number[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null,\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n columnIDs,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any,\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":[],"version":3,"file":"column-views.aeb61926.js.map"}
1
+ {"mappings":";;;;;;;;;AAoCA,MAAM,+CAAyB,CAAA,GAAA,oBAAY,EACzC;AAGK,SAAS,0CAAyB,YACvC,QAAQ,WACR,OAAO,aACP,SAAS,kBACT,cAAc,aACd,SAAS,aACT,SAAS,kBACT,cAAc,iBACd,aAAa,EACW;IACxB,MAAM,aAAa,CAAA,GAAA,wCAAiB,EAAE,CAAC,IAAM,EAAE,UAAU;IAEzD,MAAM,CAAC,MAAM,GAAG,CAAA,GAAA,eAAO,EAAE;QACvB,OAAO,CAAA,GAAA,aAAK,EAAmB,CAAC,KAAK;YACnC,OAAO;gBACL,SAAS;gBACT,gBAAgB;gBAChB,eAAe;gBACf,cAAa,QAAuB;oBAClC,IAAI;wBAAE,gBAAgB;wBAAU,eAAe;oBAAK;oBACpD,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,iBAAiB,UAAU;gBAC7B;gBACA,kBAAiB,QAAuB;oBACtC,IAAI;wBAAE,eAAe;oBAAS;oBAC9B,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,gBAAgB,UAAU;gBAC5B;YACF;QACF;IACF;IAEA,mBAAmB;IACnB,iEAAiE,GACjE,+BAA+B;IAC/B,wEAAwE;IACxE,2DAA2D;IAC3D,mDAAmD;IAEnD,IAAI,WAAW,WAAW,CAAA,GAAA,yCAAmB,EAAE,WAAW;IAE1D,8BAA8B;IAC9B,IAAI,WAAW,SAAS,GACtB,WAAW,CAAA,GAAA,cAAM,EAAE;QACjB,OAAO,UAAU,OAAO,CAAC,IAAM,UAAU,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAM;IACvE,GAAG;QAAC;QAAW;KAAS;IAG1B,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,UAAU,SAAS,GACrB,MAAM,QAAQ,CAAC;YAAE,SAAS;4BAAU;QAAe;IAEvD,GAAG;QAAC;KAAS;IACb,qDAAqD;IAErD,6EAA6E;IAC7E,CAAA,GAAA,gBAAQ,EAAE;QACR,MAAM,gBAAE,YAAY,EAAE,gBAAgB,uBAAuB,EAAE,GAC7D,MAAM,QAAQ;QAChB,IAAI,kBAAkB,yBACpB;QAEF,aAAa;IACf,GAAG;QAAC;KAAe;IAEnB,OAAO,CAAA,GAAA,sBAAA,EAAE,6CAAuB,QAAQ,EAAE;QAAE,OAAO;IAAM,GAAG;AAC9D;AAEO,SAAS,yCACd,QAAyC;IAEzC,MAAM,WAAW,CAAA,GAAA,iBAAS,EAAE;IAC5B,IAAI,YAAY,MACd,MAAM,IAAI,MAAM;IAElB,OAAO,CAAA,GAAA,eAAO,EAAE,UAAU;AAC5B","sources":["packages/column-views/src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"../../../data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n columnIDs?: number[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null,\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n columnIDs,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any,\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":[],"version":3,"file":"column-views.3d3e00be.js.map"}
@@ -1,5 +1,5 @@
1
- import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.54f8b909.js";
2
- import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.abf6aedd.js";
1
+ import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.052498a6.js";
2
+ import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.4b259f9e.js";
3
3
  import $5ZBll$macrostrathyper from "@macrostrat/hyper";
4
4
  import $5ZBll$react, {useCallback as $5ZBll$useCallback, useMemo as $5ZBll$useMemo} from "react";
5
5
  import {NotesColumn as $5ZBll$NotesColumn} from "@macrostrat/column-components";
@@ -66,4 +66,4 @@ function $bc17276da4abb183$export$594d19cdd88f8c16(props) {
66
66
 
67
67
 
68
68
  export {$bc17276da4abb183$export$2f2e65a797f8fc1e as noteForDivision, $bc17276da4abb183$export$c9757aeb43a67df0 as defaultNameFunction, $bc17276da4abb183$export$6316e673796ccb55 as UnitDataColumn, $bc17276da4abb183$export$594d19cdd88f8c16 as UnitNamesColumn};
69
- //# sourceMappingURL=column-views.7d69838d.js.map
69
+ //# sourceMappingURL=column-views.40094dd9.js.map
@@ -1 +1 @@
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,YAAE,QAAQ,SAAE,KAAK,EAAE,GAAG,CAAA,GAAA,yCAAsB;IAClD,MAAM,QAAQ,CAAA,GAAA,wCAAgB;IAC9B,MAAM,QACJ,OAAO,kBACP,aAAa,oBACb,mBAAmB,CAAC,MAA8B,IAAc,qBAChE,gBAAgB,cAChB,YAAY,OACZ,GAAG,MACJ,GAAG;IAEJ,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;sBAAE;QAAS,IAChD,MAAM,CAAC;IAEV,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,kBAAU,GAAG;QACpB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/B,UAAU;uBACV;eACA;QACA,cAAc;YACZ,aAAa;QACf;QACA,GAAG,IAAI;IACT;AACF;AAEA,MAAM,4CAAiB,CAAA,GAAA,YAAI,EAAE,IAAI,CAAC;AAS3B,SAAS,0CAAgB,KAAqB;IACnD,MAAM,mBACJ,kBAAkB,0DAClB,aAAa,EACb,GAAG,MACJ,GAAG;IAEJ,MAAM,uBAAuB,CAAA,GAAA,cAAM,EACjC,IAAM,CAAC;YACL,MAAM,QAAE,IAAI,EAAE,GAAG;YACjB,OAAO,CAAA,GAAA,sBAAA,EAAE,oBAAoB,gBAAgB,KAAK,IAAI;QACxD,GACA;QAAC;KAAgB;IAGnB,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 { useCallback, useMemo } from \"react\";\nimport {\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\";\nimport { useCompositeScale, useMacrostratColumnData } from \"../data-provider\";\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 { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n const {\n left = 0,\n noteComponent,\n shouldRenderNote = (note: ColumnDivision | IUnit, i: number) => true,\n minimumHeight = 0,\n divisions = units,\n ...rest\n } = props;\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 }))\n .filter(minimumHeightFilter);\n\n return h(NotesColumn, {\n transform: `translate(${left})`,\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 onClickNote?: (note: any) => void;\n}\n\nexport function UnitNamesColumn(props: UnitNamesProps) {\n const {\n nameForDivision = defaultNameFunction,\n noteComponent,\n ...rest\n } = props;\n\n const defaultNoteComponent = useMemo(\n () => (props) => {\n const { note } = props;\n return h(\"p.col-note-label\", nameForDivision(note.data));\n },\n [nameForDivision],\n );\n\n return h(UnitDataColumn, {\n noteComponent: noteComponent ?? defaultNoteComponent,\n ...rest,\n });\n}\n\nexport type { UnitNamesProps };\nexport { defaultNameFunction, noteForDivision, UnitDataColumn };\n"],"names":[],"version":3,"file":"column-views.7d69838d.js.map"}
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,YAAE,QAAQ,SAAE,KAAK,EAAE,GAAG,CAAA,GAAA,yCAAsB;IAClD,MAAM,QAAQ,CAAA,GAAA,wCAAgB;IAC9B,MAAM,QACJ,OAAO,kBACP,aAAa,oBACb,mBAAmB,CAAC,MAA8B,IAAc,qBAChE,gBAAgB,cAChB,YAAY,OACZ,GAAG,MACJ,GAAG;IAEJ,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;sBAAE;QAAS,IAChD,MAAM,CAAC;IAEV,OAAO,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,kBAAU,GAAG;QACpB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/B,UAAU;uBACV;eACA;QACA,cAAc;YACZ,aAAa;QACf;QACA,GAAG,IAAI;IACT;AACF;AAEA,MAAM,4CAAiB,CAAA,GAAA,YAAI,EAAE,IAAI,CAAC;AAS3B,SAAS,0CAAgB,KAAqB;IACnD,MAAM,mBACJ,kBAAkB,0DAClB,aAAa,EACb,GAAG,MACJ,GAAG;IAEJ,MAAM,uBAAuB,CAAA,GAAA,cAAM,EACjC,IAAM,CAAC;YACL,MAAM,QAAE,IAAI,EAAE,GAAG;YACjB,OAAO,CAAA,GAAA,sBAAA,EAAE,oBAAoB,gBAAgB,KAAK,IAAI;QACxD,GACA;QAAC;KAAgB;IAGnB,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 { useCallback, useMemo } from \"react\";\nimport {\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\";\nimport { useCompositeScale, useMacrostratColumnData } from \"../data-provider\";\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 { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n const {\n left = 0,\n noteComponent,\n shouldRenderNote = (note: ColumnDivision | IUnit, i: number) => true,\n minimumHeight = 0,\n divisions = units,\n ...rest\n } = props;\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 }))\n .filter(minimumHeightFilter);\n\n return h(NotesColumn, {\n transform: `translate(${left})`,\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 onClickNote?: (note: any) => void;\n}\n\nexport function UnitNamesColumn(props: UnitNamesProps) {\n const {\n nameForDivision = defaultNameFunction,\n noteComponent,\n ...rest\n } = props;\n\n const defaultNoteComponent = useMemo(\n () => (props) => {\n const { note } = props;\n return h(\"p.col-note-label\", nameForDivision(note.data));\n },\n [nameForDivision],\n );\n\n return h(UnitDataColumn, {\n noteComponent: noteComponent ?? defaultNoteComponent,\n ...rest,\n });\n}\n\nexport type { UnitNamesProps };\nexport { defaultNameFunction, noteForDivision, UnitDataColumn };\n"],"names":[],"version":3,"file":"column-views.40094dd9.js.map"}
@@ -1,13 +1,13 @@
1
- import {ColumnNotesProvider as $8c8238faa5cde49c$export$6cc7a9df4edde18} from "./column-views.75e5aebe.js";
2
- import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.abf6aedd.js";
1
+ import {ColumnNotesProvider as $8c8238faa5cde49c$export$6cc7a9df4edde18} from "./column-views.63d40878.js";
2
+ import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.4b259f9e.js";
3
3
  import $aB7pQ$macrostrathyper from "@macrostrat/hyper";
4
- import {SVG as $aB7pQ$SVG, StaticNotesColumn as $aB7pQ$StaticNotesColumn} from "@macrostrat/column-components";
4
+ import {SVG as $aB7pQ$SVG, NotesColumn as $aB7pQ$NotesColumn} from "@macrostrat/column-components";
5
5
 
6
6
 
7
7
 
8
8
 
9
9
 
10
- function $9e52fe4012c88296$export$fc5babae10f3f77d({ notes: notes, width: width = 200, noteComponent: noteComponent, paddingLeft: paddingLeft = 60, deltaConnectorAttachment: deltaConnectorAttachment, children: children }) {
10
+ function $9e52fe4012c88296$export$fc5babae10f3f77d({ notes: notes, width: width = 200, noteComponent: noteComponent, paddingLeft: paddingLeft = 60, deltaConnectorAttachment: deltaConnectorAttachment, focusedNoteComponent: focusedNoteComponent, children: children }) {
11
11
  const { totalHeight: totalHeight } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
12
12
  const scale = (0, $d5074f164411387e$export$a7fc62995ec4f76)();
13
13
  return (0, $aB7pQ$macrostrathyper)((0, $8c8238faa5cde49c$export$6cc7a9df4edde18), {
@@ -20,12 +20,13 @@ function $9e52fe4012c88296$export$fc5babae10f3f77d({ notes: notes, width: width
20
20
  height: totalHeight,
21
21
  paddingH: 4
22
22
  }, [
23
- (0, $aB7pQ$macrostrathyper)((0, $aB7pQ$StaticNotesColumn), {
23
+ (0, $aB7pQ$macrostrathyper)((0, $aB7pQ$NotesColumn), {
24
24
  width: width,
25
25
  notes: notes,
26
26
  noteComponent: noteComponent,
27
27
  paddingLeft: paddingLeft,
28
- deltaConnectorAttachment: deltaConnectorAttachment
28
+ deltaConnectorAttachment: deltaConnectorAttachment,
29
+ focusedNoteComponent: focusedNoteComponent
29
30
  })
30
31
  ]),
31
32
  children
@@ -34,4 +35,4 @@ function $9e52fe4012c88296$export$fc5babae10f3f77d({ notes: notes, width: width
34
35
 
35
36
 
36
37
  export {$9e52fe4012c88296$export$fc5babae10f3f77d as ColumnNotes};
37
- //# sourceMappingURL=column-views.d2214a99.js.map
38
+ //# sourceMappingURL=column-views.44373a90.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;AAkBO,SAAS,0CAAY,SAC1B,KAAK,SACL,QAAQ,oBACR,aAAa,eACb,cAAc,8BACd,wBAAwB,wBACxB,oBAAoB,YACpB,QAAQ,EACS;IACjB,MAAM,eAAE,WAAW,EAAE,GAAG,CAAA,GAAA,yCAAsB;IAC9C,MAAM,QAAQ,CAAA,GAAA,wCAAgB;IAE9B,OAAO,CAAA,GAAA,sBAAA,EACL,CAAA,GAAA,wCAAkB,GAClB;eACE;qBACA;QACA,YAAY;IACd,GACA;QACE,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,UAAE,GAAG;mBAAE;YAAO,QAAQ;YAAa,UAAU;QAAE,GAAG;YAClD,CAAA,GAAA,sBAAA,EAAE,CAAA,GAAA,kBAAU,GAAG;uBACb;uBACA;+BACA;6BACA;0CACA;sCACA;YACF;SACD;QACD;KACD;AAEL","sources":["packages/column-views/src/notes.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\n\nimport { ColumnNotesProvider } from \"./units\";\n\nimport { NotesColumn, SVG } from \"@macrostrat/column-components\";\nimport { useCompositeScale, useMacrostratColumnData } from \"./data-provider\";\nimport type { ComponentType, ReactNode } from \"react\";\n\ninterface ColumnNotesProps {\n notes: any[];\n width?: number;\n noteComponent?: any;\n paddingLeft?: number;\n deltaConnectorAttachment?: number;\n children?: ReactNode;\n focusedNoteComponent?: ComponentType<any> | null;\n}\n\nexport function ColumnNotes({\n notes,\n width = 200,\n noteComponent,\n paddingLeft = 60,\n deltaConnectorAttachment,\n focusedNoteComponent,\n children,\n}: ColumnNotesProps) {\n const { totalHeight } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n return h(\n ColumnNotesProvider,\n {\n scale,\n totalHeight,\n pixelScale: -1,\n },\n [\n h(SVG, { width, height: totalHeight, paddingH: 4 }, [\n h(NotesColumn, {\n width,\n notes,\n noteComponent,\n paddingLeft,\n deltaConnectorAttachment,\n focusedNoteComponent,\n }),\n ]),\n children,\n ],\n );\n}\n"],"names":[],"version":3,"file":"column-views.44373a90.js.map"}
@@ -0,0 +1,152 @@
1
+ import {useDetritalMeasurements as $9f310bd6e88a58bc$export$1b0cf9c36f060135} from "./column-views.60e97132.js";
2
+ import $d4hxx$columnviews2c45a7b5js from "./column-views.2c45a7b5.js";
3
+ import "./column-views.6f9511d1.css";
4
+ import {BaseMeasurementsColumn as $50d219504625a431$export$ce5c4f2fdf4e644d, mergeHeightRanges as $50d219504625a431$export$8f2afa8ddee7317e} from "./column-views.de433f18.js";
5
+ import {useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.4b259f9e.js";
6
+ import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.052498a6.js";
7
+ import {usePlotArea as $d4hxx$usePlotArea, DetritalSpectrumPlot as $d4hxx$DetritalSpectrumPlot, DetritalSeries as $d4hxx$DetritalSeries} from "@macrostrat/data-components";
8
+ import $d4hxx$macrostrathyper from "@macrostrat/hyper";
9
+ import {useMemo as $d4hxx$useMemo} from "react";
10
+ import $d4hxx$classnames from "classnames";
11
+ import {group as $d4hxx$group} from "d3-array";
12
+ import {NonIdealState as $d4hxx$NonIdealState, Spinner as $d4hxx$Spinner} from "@blueprintjs/core";
13
+
14
+
15
+ function $parcel$interopDefault(a) {
16
+ return a && a.__esModule ? a.default : a;
17
+ }
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+ const $715dd5fedd79146a$var$h = (0, $d4hxx$macrostrathyper).styled((0, ($parcel$interopDefault($d4hxx$columnviews2c45a7b5js))));
30
+ function $715dd5fedd79146a$var$prepareDetritalData(data, units, axisType) {
31
+ /** Right now measurement data could be duplicated if there are multiple units linked to the same
32
+ * measuremeta_id. THis happens because matches to units might be at a lower rank (e.g, if the column
33
+ * contains Formations but the measurements are linked to a Group). To handle this, we group by measuremeta_id
34
+ * and then create unique keys based on the set of units linked to each measurement.
35
+ */ // Group data by measuremeta_id
36
+ const measurementsGrouped = (0, $d4hxx$group)(data, (d)=>d.measuremeta_id);
37
+ const resMap = new Map();
38
+ for (const measurements of measurementsGrouped.values()){
39
+ // Get a list of unique unit_ids for this measurement
40
+ const unitIDs = new Set(measurements.map((m)=>m.unit_id));
41
+ const ids = Array.from(unitIDs);
42
+ ids.sort();
43
+ // Key is unique to the set of units
44
+ const key = ids.join("-");
45
+ if (!resMap.has(key)) {
46
+ const unitData = ids.map((id)=>{
47
+ return units.find((u)=>u.unit_id === id);
48
+ }).filter(Boolean);
49
+ const positions = unitData.map((unit)=>{
50
+ const [height, top_height] = (0, $b6657fba8924a702$export$70e712e2ac0237a)(unit, axisType);
51
+ return {
52
+ height: height,
53
+ top_height: top_height
54
+ };
55
+ });
56
+ // merge positions (note: we could also have multiple separate notes per measurement)
57
+ const pos = (0, $50d219504625a431$export$8f2afa8ddee7317e)(positions, axisType);
58
+ resMap.set(key, {
59
+ id: key,
60
+ data: [],
61
+ units: unitData,
62
+ ...pos
63
+ });
64
+ }
65
+ resMap.get(key).data.push(measurements[0]);
66
+ }
67
+ return Array.from(resMap.values());
68
+ }
69
+ function $715dd5fedd79146a$export$f176396e104db8d5({ columnID: columnID, color: color = "magenta" }) {
70
+ const data = (0, $9f310bd6e88a58bc$export$1b0cf9c36f060135)({
71
+ col_id: columnID
72
+ });
73
+ const width = 400;
74
+ const paddingLeft = 40;
75
+ const spectrumWidth = width - paddingLeft;
76
+ const noteComponent = (0, $d4hxx$useMemo)(()=>{
77
+ return (props)=>{
78
+ return $715dd5fedd79146a$var$h($715dd5fedd79146a$export$1b3047373cd1c8c7, {
79
+ width: spectrumWidth,
80
+ height: 40,
81
+ color: color,
82
+ ...props
83
+ });
84
+ };
85
+ }, [
86
+ width,
87
+ color
88
+ ]);
89
+ const { axisType: axisType, units: units } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
90
+ const data1 = (0, $d4hxx$useMemo)(()=>{
91
+ if (data == null || units == null) return null;
92
+ return $715dd5fedd79146a$var$prepareDetritalData(data, units, axisType);
93
+ }, [
94
+ data,
95
+ units,
96
+ axisType
97
+ ]);
98
+ if (data1 == null) return $715dd5fedd79146a$var$h((0, $d4hxx$NonIdealState), $715dd5fedd79146a$var$h((0, $d4hxx$Spinner)));
99
+ return $715dd5fedd79146a$var$h((0, $50d219504625a431$export$ce5c4f2fdf4e644d), {
100
+ data: data1,
101
+ noteComponent: noteComponent,
102
+ deltaConnectorAttachment: 20
103
+ });
104
+ }
105
+ function $715dd5fedd79146a$var$DepositionalAge({ unit: unit }) {
106
+ const { xScale: xScale, height: height } = (0, $d4hxx$usePlotArea)();
107
+ const { t_age: t_age, b_age: b_age } = unit;
108
+ const x = xScale(t_age);
109
+ const x1 = xScale(b_age);
110
+ return $715dd5fedd79146a$var$h("rect.depositional-age", {
111
+ x: x,
112
+ width: x1 - x,
113
+ y: 0,
114
+ height: height
115
+ });
116
+ }
117
+ function $715dd5fedd79146a$export$1b3047373cd1c8c7(props) {
118
+ const { note: note, width: width, height: height, color: color, spacing: spacing } = props;
119
+ const { data: data, units: units } = note;
120
+ const _color = color;
121
+ const spaceBelow = spacing?.below ?? 100;
122
+ const hideAxisLabels = spaceBelow < 60;
123
+ return $715dd5fedd79146a$var$h("div.detrital-group", {
124
+ className: (0, $d4hxx$classnames)({
125
+ "hide-axis": hideAxisLabels
126
+ })
127
+ }, [
128
+ $715dd5fedd79146a$var$h((0, $d4hxx$DetritalSpectrumPlot), {
129
+ width: width,
130
+ innerHeight: height,
131
+ showAxisLabels: true,
132
+ paddingBottom: 40
133
+ }, [
134
+ units.map((unit)=>{
135
+ return $715dd5fedd79146a$var$h($715dd5fedd79146a$var$DepositionalAge, {
136
+ unit: unit
137
+ });
138
+ }),
139
+ data.map((d)=>{
140
+ return $715dd5fedd79146a$var$h((0, $d4hxx$DetritalSeries), {
141
+ bandwidth: 20,
142
+ data: d.measure_value,
143
+ color: _color
144
+ });
145
+ })
146
+ ])
147
+ ]);
148
+ }
149
+
150
+
151
+ export {$715dd5fedd79146a$export$f176396e104db8d5 as DetritalColumn, $715dd5fedd79146a$export$1b3047373cd1c8c7 as DetritalGroup};
152
+ //# sourceMappingURL=column-views.479f68bd.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/column-views/src/facets/detrital-zircon/index.ts"],"sourcesContent":["import {\n DetritalSpectrumPlot,\n DetritalSeries,\n usePlotArea,\n} from \"@macrostrat/data-components\";\nimport type { IUnit } from \"../../units/types\";\nimport hyper from \"@macrostrat/hyper\";\nimport { useDetritalMeasurements, MeasurementInfo } from \"./provider\";\nimport { useMemo } from \"react\";\nimport styles from \"./index.module.sass\";\nimport classNames from \"classnames\";\nimport {\n BaseMeasurementsColumn,\n mergeHeightRanges,\n ColumnMeasurementData,\n} from \"../measurements\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { useMacrostratColumnData } from \"../../data-provider\";\nimport { getUnitHeightRange } from \"../../prepare-units\";\nimport { NonIdealState, Spinner } from \"@blueprintjs/core\";\n\nconst h = hyper.styled(styles);\n\ninterface DetritalItemProps {\n note: DZMeasurementInfo;\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n}\n\ninterface DZMeasurementInfo extends ColumnMeasurementData<MeasurementInfo[]> {\n units: IUnit[];\n}\n\nfunction prepareDetritalData(\n data: MeasurementInfo[],\n units: IUnit[],\n axisType: ColumnAxisType,\n) {\n /** Right now measurement data could be duplicated if there are multiple units linked to the same\n * measuremeta_id. THis happens because matches to units might be at a lower rank (e.g, if the column\n * contains Formations but the measurements are linked to a Group). To handle this, we group by measuremeta_id\n * and then create unique keys based on the set of units linked to each measurement.\n */\n\n // Group data by measuremeta_id\n const measurementsGrouped = group(data, (d) => d.measuremeta_id);\n\n const resMap = new Map<string, DZMeasurementInfo>();\n\n for (const measurements of measurementsGrouped.values()) {\n // Get a list of unique unit_ids for this measurement\n const unitIDs = new Set(measurements.map((m) => m.unit_id));\n const ids = Array.from(unitIDs);\n ids.sort();\n // Key is unique to the set of units\n const key = ids.join(\"-\");\n\n if (!resMap.has(key)) {\n const unitData = ids\n .map((id) => {\n return units.find((u) => u.unit_id === id);\n })\n .filter(Boolean);\n\n const positions = unitData.map((unit) => {\n const [height, top_height] = getUnitHeightRange(unit, axisType);\n return { height, top_height };\n });\n\n // merge positions (note: we could also have multiple separate notes per measurement)\n const pos = mergeHeightRanges(positions, axisType);\n\n resMap.set(key, {\n id: key,\n data: [],\n units: unitData as IUnit[],\n ...pos,\n });\n }\n resMap.get(key)!.data.push(measurements[0]);\n }\n\n return Array.from(resMap.values());\n}\n\nfunction DetritalColumn({ columnID, color = \"magenta\" }) {\n const data = useDetritalMeasurements({ col_id: columnID });\n\n const width = 400;\n const paddingLeft = 40;\n\n const spectrumWidth = width - paddingLeft;\n\n const noteComponent = useMemo(() => {\n return (props) => {\n return h(DetritalGroup, {\n width: spectrumWidth,\n height: 40,\n color,\n ...props,\n });\n };\n }, [width, color]);\n\n const { axisType, units } = useMacrostratColumnData();\n\n const data1 = useMemo(() => {\n if (data == null || units == null) return null;\n return prepareDetritalData(data, units, axisType);\n }, [data, units, axisType]);\n\n if (data1 == null) return h(NonIdealState, h(Spinner));\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent,\n deltaConnectorAttachment: 20,\n });\n}\n\nfunction DepositionalAge({ unit }) {\n const { xScale, height } = usePlotArea();\n\n const { t_age, b_age } = unit;\n const x = xScale(t_age);\n const x1 = xScale(b_age);\n\n return h(\"rect.depositional-age\", { x, width: x1 - x, y: 0, height });\n}\n\nfunction DetritalGroup(props: DetritalItemProps) {\n const { note, width, height, color, spacing } = props;\n const { data, units } = note;\n\n const _color = color;\n\n const spaceBelow = spacing?.below ?? 100;\n const hideAxisLabels = spaceBelow < 60;\n\n return h(\n \"div.detrital-group\",\n { className: classNames({ \"hide-axis\": hideAxisLabels }) },\n [\n h(\n DetritalSpectrumPlot,\n { width, innerHeight: height, showAxisLabels: true, paddingBottom: 40 },\n [\n units.map((unit) => {\n return h(DepositionalAge, { unit });\n }),\n data.map((d) => {\n return h(DetritalSeries, {\n bandwidth: 20,\n data: d.measure_value,\n color: _color,\n });\n }),\n ],\n ),\n ],\n );\n}\n\nexport { DetritalColumn, DetritalGroup };\n"],"names":[],"version":3,"file":"column-views.479f68bd.js.map"}
@@ -1,4 +1,4 @@
1
- import {useColumnNavigationStore as $09486427d129f589$export$642c2b57c47ea41} from "./column-views.aeb61926.js";
1
+ import {useColumnNavigationStore as $09486427d129f589$export$642c2b57c47ea41} from "./column-views.3d3e00be.js";
2
2
  import {buildKeyMapping as $40b71acee908f16d$export$b3975a0f05980d25, buildTriangulation as $40b71acee908f16d$export$39cd73f2cb8dc4f7} from "./column-views.dc42f5d0.js";
3
3
  import {useMemo as $1DDgQ$useMemo, useCallback as $1DDgQ$useCallback, useEffect as $1DDgQ$useEffect} from "react";
4
4
  import {setGeoJSON as $1DDgQ$setGeoJSON, buildGeoJSONSource as $1DDgQ$buildGeoJSONSource} from "@macrostrat/mapbox-utils";
@@ -109,4 +109,4 @@ function $ab1043903d5406ef$export$c613fba0aabeee13(color = "purple") {
109
109
 
110
110
 
111
111
  export {$ab1043903d5406ef$export$8c41dd563753848 as ColumnKeyboardNavigation, $ab1043903d5406ef$export$c613fba0aabeee13 as buildKeyboardNavigationStyle};
112
- //# sourceMappingURL=column-views.ad080c0e.js.map
112
+ //# sourceMappingURL=column-views.488f24b6.js.map
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;AAaO,SAAS,yCAAyB,KAAuB;IAC9D,kEAAkE,GAClE,MAAM,qBAAE,oBAAoB,OAAO,GAAG;IACtC,MAAM,UAAU,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,OAAO;IACjE,MAAM,SAAS,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,cAAc;IACvE,MAAM,eAAe,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,YAAY;IAE3E,MAAM,UAAU,CAAA,GAAA,cAAM,EAAE;QACtB,IAAI,CAAC,WAAW,QAAQ,MAAM,IAAI,GAAG,OAAO;QAC5C,OAAO,CAAA,GAAA,yCAAiB,EAAE;IAC5B,GAAG;QAAC;KAAQ;IAEZ,MAAM,SAAS,CAAA,GAAA,gBAAQ;IACvB,MAAM,MAAM,OAAO,OAAO;IAE1B,MAAM,aAAa,CAAA,GAAA,cAAM,EAAE;QACzB,IAAI,WAAW,QAAQ,WAAW,QAAQ,OAAO,MAAM,OAAO;QAE9D,MAAM,aAAa,CAAC;YAClB,MAAM,KAAK,IAAI,OAAO,CAAC;YACvB,OAAO;gBAAC,GAAG,CAAC;gBAAE,GAAG,CAAC;aAAC;QACrB;QAEA,MAAM,eAAe,QAAQ,SAAS,CACpC,CAAC,IAAM,EAAE,UAAU,CAAC,MAAM,IAAI;QAGhC,MAAM,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa;QAC9D,OAAO,CAAA,GAAA,yCAAc,EACnB,WACA,QAAQ,SAAS,EACjB,cACA;IAEJ,GAAG;QAAC;QAAQ;QAAS;QAAS;KAAI;IAElC,MAAM,YAAY,CAAA,GAAA,kBAAU,EAC1B,CAAC;QACC,IAAI,cAAc,MAAM;QACxB,MAAM,eAAe,UAAU,CAAC,MAAM,KAAK,CAAC;QAC5C,IAAI,gBAAgB,MAAM;QAC1B,MAAM,cAAc;QACpB,MAAM,eAAe;QACrB,aAAa;QACb,aAAa,OAAO,CAAC,aAAa,CAAC,EAAE;QACrC,OAAO;IACT,GACA;QAAC;QAAY;KAAa;IAG5B,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,OAAO,MAAM;QACjB,MAAM,SAAS,IAAI,SAAS;QAC5B,OAAO,gBAAgB,CAAC,WAAW;QACnC,OAAO;YACL,OAAO,mBAAmB,CAAC,WAAW;QACxC;IACF,GAAG;QAAC;QAAK;KAAU;IAEnB,CAAA,GAAA,0BAAkB,EAChB,CAAC;QACC,IAAI,WAAW,QAAQ,CAAC,mBAAmB;QAC3C,MAAM,YAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,CAAC,KAAK;QAEtC,CAAA,GAAA,iBAAS,EAAE,KAAK,gBAAgB;YAC9B,MAAM;sBACN;QACF;IACF,GACA;QAAC;QAAS;KAAkB;IAG9B,qCAAqC;IACrC,6DAA6D;IAE7D,OAAO;AACT;AAEO,SAAS,0CAA6B,QAAgB,QAAQ;IACnE,OAAO;QACL,SAAS;YACP,gBAAgB,CAAA,GAAA,yBAAiB;QAEnC;QACA,QAAQ;YACN;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,cAAc;gBAChB;YACF;YACA;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,iBAAiB;oBACjB,gBAAgB;gBAClB;YACF;SACD;IACH;AACF","sources":["packages/column-views/src/maps/column-navigation/mapbox/keyboard-navigation.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { buildGeoJSONSource, setGeoJSON } from \"@macrostrat/mapbox-utils\";\nimport { useMapRef, useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport { useColumnNavigationStore } from \"./state\";\nimport {\n buildTriangulation,\n buildKeyMapping,\n} from \"../utils/keyboard-navigation\";\n\ninterface KeyboardNavProps {\n showTriangulation: boolean;\n}\n\nexport function ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const { showTriangulation = false } = props;\n const columns = useColumnNavigationStore((state) => state.columns);\n const col_id = useColumnNavigationStore((state) => state.selectedColumn);\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n\n const voronoi = useMemo(() => {\n if (!columns || columns.length == 0) return null;\n return buildTriangulation(columns);\n }, [columns]);\n\n const mapRef = useMapRef();\n const map = mapRef.current;\n\n const keyMapping = useMemo(() => {\n if (columns == null || voronoi == null || map == null) return null;\n\n const projection = (d) => {\n const pt = map.project(d);\n return [pt.x, pt.y];\n };\n\n const currentIndex = columns.findIndex(\n (d) => d.properties.col_id == col_id,\n );\n\n const neighbors = voronoi.tri.delaunay.neighbors[currentIndex];\n return buildKeyMapping(\n neighbors,\n voronoi.centroids,\n currentIndex,\n projection,\n );\n }, [col_id, columns, voronoi, map]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (keyMapping == null) return;\n const nextColumnIx = keyMapping[event.which];\n if (nextColumnIx == null) return;\n event.preventDefault();\n event.stopPropagation();\n // @ts-ignore\n selectColumn(columns[nextColumnIx].id);\n return false;\n },\n [keyMapping, selectColumn],\n );\n\n useEffect(() => {\n if (map == null) return;\n const canvas = map.getCanvas();\n canvas.addEventListener(\"keydown\", onKeyDown);\n return () => {\n canvas.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [map, onKeyDown]);\n\n useMapStyleOperator(\n (map) => {\n if (voronoi == null || !showTriangulation) return;\n const { features } = voronoi.tri.links();\n\n setGeoJSON(map, \"column-links\", {\n type: \"FeatureCollection\",\n features,\n });\n },\n [voronoi, showTriangulation],\n );\n\n //if (neighbors == null) return null;\n //const neighborFeatures = neighbors.map((d) => features[d]);\n\n return null;\n}\n\nexport function buildKeyboardNavigationStyle(color: string = \"purple\") {\n return {\n sources: {\n \"column-links\": buildGeoJSONSource(),\n //neighbors: buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"column-links\",\n type: \"line\",\n source: \"column-links\",\n paint: {\n \"line-color\": color,\n \"line-width\": 1.5,\n },\n },\n {\n id: \"column-centers\",\n type: \"circle\",\n source: \"column-links\",\n paint: {\n \"circle-radius\": 2,\n \"circle-color\": color,\n },\n },\n ],\n };\n}\n"],"names":[],"version":3,"file":"column-views.ad080c0e.js.map"}
1
+ {"mappings":";;;;;;;;;;;AAaO,SAAS,yCAAyB,KAAuB;IAC9D,kEAAkE,GAClE,MAAM,qBAAE,oBAAoB,OAAO,GAAG;IACtC,MAAM,UAAU,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,OAAO;IACjE,MAAM,SAAS,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,cAAc;IACvE,MAAM,eAAe,CAAA,GAAA,wCAAuB,EAAE,CAAC,QAAU,MAAM,YAAY;IAE3E,MAAM,UAAU,CAAA,GAAA,cAAM,EAAE;QACtB,IAAI,CAAC,WAAW,QAAQ,MAAM,IAAI,GAAG,OAAO;QAC5C,OAAO,CAAA,GAAA,yCAAiB,EAAE;IAC5B,GAAG;QAAC;KAAQ;IAEZ,MAAM,SAAS,CAAA,GAAA,gBAAQ;IACvB,MAAM,MAAM,OAAO,OAAO;IAE1B,MAAM,aAAa,CAAA,GAAA,cAAM,EAAE;QACzB,IAAI,WAAW,QAAQ,WAAW,QAAQ,OAAO,MAAM,OAAO;QAE9D,MAAM,aAAa,CAAC;YAClB,MAAM,KAAK,IAAI,OAAO,CAAC;YACvB,OAAO;gBAAC,GAAG,CAAC;gBAAE,GAAG,CAAC;aAAC;QACrB;QAEA,MAAM,eAAe,QAAQ,SAAS,CACpC,CAAC,IAAM,EAAE,UAAU,CAAC,MAAM,IAAI;QAGhC,MAAM,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa;QAC9D,OAAO,CAAA,GAAA,yCAAc,EACnB,WACA,QAAQ,SAAS,EACjB,cACA;IAEJ,GAAG;QAAC;QAAQ;QAAS;QAAS;KAAI;IAElC,MAAM,YAAY,CAAA,GAAA,kBAAU,EAC1B,CAAC;QACC,IAAI,cAAc,MAAM;QACxB,MAAM,eAAe,UAAU,CAAC,MAAM,KAAK,CAAC;QAC5C,IAAI,gBAAgB,MAAM;QAC1B,MAAM,cAAc;QACpB,MAAM,eAAe;QACrB,aAAa;QACb,aAAa,OAAO,CAAC,aAAa,CAAC,EAAE;QACrC,OAAO;IACT,GACA;QAAC;QAAY;KAAa;IAG5B,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,OAAO,MAAM;QACjB,MAAM,SAAS,IAAI,SAAS;QAC5B,OAAO,gBAAgB,CAAC,WAAW;QACnC,OAAO;YACL,OAAO,mBAAmB,CAAC,WAAW;QACxC;IACF,GAAG;QAAC;QAAK;KAAU;IAEnB,CAAA,GAAA,0BAAkB,EAChB,CAAC;QACC,IAAI,WAAW,QAAQ,CAAC,mBAAmB;QAC3C,MAAM,YAAE,QAAQ,EAAE,GAAG,QAAQ,GAAG,CAAC,KAAK;QAEtC,CAAA,GAAA,iBAAS,EAAE,KAAK,gBAAgB;YAC9B,MAAM;sBACN;QACF;IACF,GACA;QAAC;QAAS;KAAkB;IAG9B,qCAAqC;IACrC,6DAA6D;IAE7D,OAAO;AACT;AAEO,SAAS,0CAA6B,QAAgB,QAAQ;IACnE,OAAO;QACL,SAAS;YACP,gBAAgB,CAAA,GAAA,yBAAiB;QAEnC;QACA,QAAQ;YACN;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,cAAc;gBAChB;YACF;YACA;gBACE,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,iBAAiB;oBACjB,gBAAgB;gBAClB;YACF;SACD;IACH;AACF","sources":["packages/column-views/src/maps/column-navigation/mapbox/keyboard-navigation.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo } from \"react\";\nimport { buildGeoJSONSource, setGeoJSON } from \"@macrostrat/mapbox-utils\";\nimport { useMapRef, useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport { useColumnNavigationStore } from \"./state\";\nimport {\n buildTriangulation,\n buildKeyMapping,\n} from \"../utils/keyboard-navigation\";\n\ninterface KeyboardNavProps {\n showTriangulation: boolean;\n}\n\nexport function ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const { showTriangulation = false } = props;\n const columns = useColumnNavigationStore((state) => state.columns);\n const col_id = useColumnNavigationStore((state) => state.selectedColumn);\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n\n const voronoi = useMemo(() => {\n if (!columns || columns.length == 0) return null;\n return buildTriangulation(columns);\n }, [columns]);\n\n const mapRef = useMapRef();\n const map = mapRef.current;\n\n const keyMapping = useMemo(() => {\n if (columns == null || voronoi == null || map == null) return null;\n\n const projection = (d) => {\n const pt = map.project(d);\n return [pt.x, pt.y];\n };\n\n const currentIndex = columns.findIndex(\n (d) => d.properties.col_id == col_id,\n );\n\n const neighbors = voronoi.tri.delaunay.neighbors[currentIndex];\n return buildKeyMapping(\n neighbors,\n voronoi.centroids,\n currentIndex,\n projection,\n );\n }, [col_id, columns, voronoi, map]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (keyMapping == null) return;\n const nextColumnIx = keyMapping[event.which];\n if (nextColumnIx == null) return;\n event.preventDefault();\n event.stopPropagation();\n // @ts-ignore\n selectColumn(columns[nextColumnIx].id);\n return false;\n },\n [keyMapping, selectColumn],\n );\n\n useEffect(() => {\n if (map == null) return;\n const canvas = map.getCanvas();\n canvas.addEventListener(\"keydown\", onKeyDown);\n return () => {\n canvas.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [map, onKeyDown]);\n\n useMapStyleOperator(\n (map) => {\n if (voronoi == null || !showTriangulation) return;\n const { features } = voronoi.tri.links();\n\n setGeoJSON(map, \"column-links\", {\n type: \"FeatureCollection\",\n features,\n });\n },\n [voronoi, showTriangulation],\n );\n\n //if (neighbors == null) return null;\n //const neighborFeatures = neighbors.map((d) => features[d]);\n\n return null;\n}\n\nexport function buildKeyboardNavigationStyle(color: string = \"purple\") {\n return {\n sources: {\n \"column-links\": buildGeoJSONSource(),\n //neighbors: buildGeoJSONSource(),\n },\n layers: [\n {\n id: \"column-links\",\n type: \"line\",\n source: \"column-links\",\n paint: {\n \"line-color\": color,\n \"line-width\": 1.5,\n },\n },\n {\n id: \"column-centers\",\n type: \"circle\",\n source: \"column-links\",\n paint: {\n \"circle-radius\": 2,\n \"circle-color\": color,\n },\n },\n ],\n };\n}\n"],"names":[],"version":3,"file":"column-views.488f24b6.js.map"}
@@ -1,4 +1,4 @@
1
- import {createCompositeScale as $728f6cf6c12cd490$export$3ada7641926a616d} from "./column-views.073c42da.js";
1
+ import {createCompositeScale as $728f6cf6c12cd490$export$3ada7641926a616d} from "./column-views.1b5bf0c6.js";
2
2
  import {createContext as $a90Ta$createContext, useMemo as $a90Ta$useMemo, useContext as $a90Ta$useContext, useRef as $a90Ta$useRef, useEffect as $a90Ta$useEffect} from "react";
3
3
  import $a90Ta$macrostrathyper from "@macrostrat/hyper";
4
4
  import {createIsolation as $a90Ta$createIsolation} from "jotai-scope";
@@ -133,4 +133,4 @@ function $d5074f164411387e$var$AtomUpdater({ atoms: atoms }) {
133
133
 
134
134
 
135
135
  export {$d5074f164411387e$export$ef5395089200109b as MacrostratColumnStateProvider, $d5074f164411387e$export$7fec7bd80ff9c10e as MacrostratColumnDataProvider, $d5074f164411387e$export$f8509b7cce386c7d as useMacrostratColumnData, $d5074f164411387e$export$6fb40844db555b2 as useMacrostratUnits, $d5074f164411387e$export$7513be0cfd10d9cc as useColumnUnitsMap, $d5074f164411387e$export$a7fc62995ec4f76 as useCompositeScale};
136
- //# sourceMappingURL=column-views.abf6aedd.js.map
136
+ //# sourceMappingURL=column-views.4b259f9e.js.map