@macrostrat/column-views 2.1.4 → 2.2.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 (369) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/{column-views.77b49a43.js → column-views.0265cf7f.js} +52 -23
  3. package/dist/esm/column-views.0265cf7f.js.map +1 -0
  4. package/dist/esm/{column-views.4ab0ec82.js → column-views.073c42da.js} +142 -76
  5. package/dist/esm/column-views.073c42da.js.map +1 -0
  6. package/dist/esm/column-views.079119f4.js +17 -0
  7. package/dist/esm/column-views.079119f4.js.map +1 -0
  8. package/dist/esm/{column-views.5e2dc19d.js → column-views.0ce9b697.js} +3 -3
  9. package/dist/esm/{column-views.5e2dc19d.js.map → column-views.0ce9b697.js.map} +1 -1
  10. package/dist/esm/{column-views.448c0687.css → column-views.1151416d.css} +5 -5
  11. package/dist/esm/column-views.1151416d.css.map +1 -0
  12. package/dist/esm/{column-views.686d21ad.js → column-views.22ec902b.js} +4 -1
  13. package/dist/esm/column-views.22ec902b.js.map +1 -0
  14. package/dist/esm/{column-views.42b89c52.js → column-views.29a551f6.js} +60 -27
  15. package/dist/esm/column-views.29a551f6.js.map +1 -0
  16. package/dist/esm/{column-views.fbc7401f.js → column-views.2aef5df8.js} +5 -5
  17. package/dist/esm/{column-views.fbc7401f.js.map → column-views.2aef5df8.js.map} +1 -1
  18. package/dist/esm/{column-views.ab0380ed.js → column-views.2e854496.js} +3 -3
  19. package/dist/esm/{column-views.ab0380ed.js.map → column-views.2e854496.js.map} +1 -1
  20. package/dist/esm/{column-views.7ca9e1cd.js → column-views.2eceafb5.js} +19 -21
  21. package/dist/esm/column-views.2eceafb5.js.map +1 -0
  22. package/dist/esm/{column-views.b17f793f.css → column-views.321af3ae.css} +7 -1
  23. package/dist/esm/{column-views.686d21ad.js.map → column-views.321af3ae.css.map} +1 -1
  24. package/dist/esm/{column-views.75ea6dbe.js → column-views.382c486d.js} +11 -6
  25. package/dist/esm/column-views.382c486d.js.map +1 -0
  26. package/dist/esm/column-views.3a7179c4.js +137 -0
  27. package/dist/esm/column-views.3a7179c4.js.map +1 -0
  28. package/dist/esm/{column-views.8e3dec90.js → column-views.413217dc.js} +2 -2
  29. package/dist/esm/column-views.413217dc.js.map +1 -0
  30. package/dist/esm/column-views.418f948f.js +15 -0
  31. package/dist/esm/{column-views.38a305a0.js.map → column-views.418f948f.js.map} +1 -1
  32. package/dist/esm/{column-views.4d22c21c.js → column-views.41e5f0dc.js} +22 -4
  33. package/dist/esm/column-views.41e5f0dc.js.map +1 -0
  34. package/dist/esm/{column-views.676cb1d3.js → column-views.469a4952.js} +3 -3
  35. package/dist/esm/{column-views.676cb1d3.js.map → column-views.469a4952.js.map} +1 -1
  36. package/dist/esm/column-views.4ed90896.js +105 -0
  37. package/dist/esm/column-views.4ed90896.js.map +1 -0
  38. package/dist/esm/{column-views.547b2730.js → column-views.53722d0a.js} +19 -15
  39. package/dist/esm/column-views.53722d0a.js.map +1 -0
  40. package/dist/esm/{column-views.39657bbf.js → column-views.54f8b909.js} +7 -2
  41. package/dist/esm/column-views.54f8b909.js.map +1 -0
  42. package/dist/esm/{column-views.b72918ce.css → column-views.562db43a.css} +10 -2
  43. package/dist/esm/column-views.562db43a.css.map +1 -0
  44. package/dist/esm/{column-views.9e1c82fe.js → column-views.58b891df.js} +2 -2
  45. package/dist/esm/{column-views.9e1c82fe.js.map → column-views.58b891df.js.map} +1 -1
  46. package/dist/esm/{column-views.86619334.js → column-views.60365cdb.js} +2 -2
  47. package/dist/esm/{column-views.86619334.js.map → column-views.60365cdb.js.map} +1 -1
  48. package/dist/esm/column-views.6698b95a.js +108 -0
  49. package/dist/esm/column-views.6698b95a.js.map +1 -0
  50. package/dist/esm/column-views.6e7082db.js +16 -0
  51. package/dist/esm/column-views.6e7082db.js.map +1 -0
  52. package/dist/esm/column-views.70164236.js +206 -0
  53. package/dist/esm/column-views.70164236.js.map +1 -0
  54. package/dist/esm/{column-views.2ff3dd8b.js → column-views.748dce47.js} +31 -60
  55. package/dist/esm/column-views.748dce47.js.map +1 -0
  56. package/dist/esm/{column-views.775846c9.js → column-views.7683bb52.js} +9 -40
  57. package/dist/esm/column-views.7683bb52.js.map +1 -0
  58. package/dist/esm/{column-views.e7ab5af0.js → column-views.787d7696.js} +3 -3
  59. package/dist/esm/{column-views.e7ab5af0.js.map → column-views.787d7696.js.map} +1 -1
  60. package/dist/esm/{column-views.f20eb583.js → column-views.81bddbee.js} +6 -8
  61. package/dist/esm/column-views.81bddbee.js.map +1 -0
  62. package/dist/esm/{column-views.cc5244c4.js → column-views.8284c3a9.js} +91 -55
  63. package/dist/esm/column-views.8284c3a9.js.map +1 -0
  64. package/dist/esm/{column-views.f08929e2.js → column-views.88d63dd0.js} +5 -3
  65. package/dist/esm/column-views.88d63dd0.js.map +1 -0
  66. package/dist/esm/{column-views.935ef6f7.js → column-views.8b623b27.js} +2 -2
  67. package/dist/esm/{column-views.935ef6f7.js.map → column-views.8b623b27.js.map} +1 -1
  68. package/dist/esm/{column-views.3f246167.js → column-views.8c296309.js} +5 -5
  69. package/dist/esm/column-views.8c296309.js.map +1 -0
  70. package/dist/esm/{column-views.64a84c43.js → column-views.a3fabf0f.js} +38 -30
  71. package/dist/esm/column-views.a3fabf0f.js.map +1 -0
  72. package/dist/esm/column-views.abeab9aa.js +184 -0
  73. package/dist/esm/column-views.abeab9aa.js.map +1 -0
  74. package/dist/esm/{column-views.02f3732a.js → column-views.adec2e4c.js} +40 -20
  75. package/dist/esm/column-views.adec2e4c.js.map +1 -0
  76. package/dist/esm/{column-views.9892f825.js → column-views.aecf25bc.js} +75 -42
  77. package/dist/esm/column-views.aecf25bc.js.map +1 -0
  78. package/dist/esm/{column-views.1f7fb650.js → column-views.b08d82e6.js} +3 -3
  79. package/dist/esm/{column-views.1f7fb650.js.map → column-views.b08d82e6.js.map} +1 -1
  80. package/dist/esm/{column-views.769fa0ee.js → column-views.b29f8718.js} +2 -2
  81. package/dist/esm/{column-views.769fa0ee.js.map → column-views.b29f8718.js.map} +1 -1
  82. package/dist/esm/column-views.b7016f82.css +54 -0
  83. package/dist/esm/column-views.b7016f82.css.map +1 -0
  84. package/dist/esm/{column-views.0732894f.js → column-views.bbc77227.js} +2 -2
  85. package/dist/esm/{column-views.0732894f.js.map → column-views.bbc77227.js.map} +1 -1
  86. package/dist/esm/column-views.c2fbcba8.js +15 -0
  87. package/dist/esm/{column-views.0a159282.js.map → column-views.c2fbcba8.js.map} +1 -1
  88. package/dist/esm/{column-views.e3b9a317.js → column-views.c3495702.js} +2 -2
  89. package/dist/esm/{column-views.e3b9a317.js.map → column-views.c3495702.js.map} +1 -1
  90. package/dist/esm/{column-views.f7523c1d.js → column-views.c92a359e.js} +2 -2
  91. package/dist/esm/{column-views.f7523c1d.js.map → column-views.c92a359e.js.map} +1 -1
  92. package/dist/esm/{column-views.243da806.js → column-views.cae1a6a1.js} +3 -3
  93. package/dist/esm/{column-views.243da806.js.map → column-views.cae1a6a1.js.map} +1 -1
  94. package/dist/esm/{column-views.cdadc5c2.js → column-views.cc733361.js} +7 -1
  95. package/dist/esm/column-views.cc733361.js.map +1 -0
  96. package/dist/esm/{column-views.a195109e.js → column-views.d86555b0.js} +2 -2
  97. package/dist/esm/{column-views.a195109e.js.map → column-views.d86555b0.js.map} +1 -1
  98. package/dist/esm/{column-views.a6301a41.js → column-views.df34441c.js} +6 -8
  99. package/dist/esm/column-views.df34441c.js.map +1 -0
  100. package/dist/esm/{column-views.97d542eb.js → column-views.e17f00d3.js} +4 -4
  101. package/dist/esm/column-views.e17f00d3.js.map +1 -0
  102. package/dist/esm/{column-views.7715e35e.js → column-views.e1bc3cfa.js} +3 -3
  103. package/dist/esm/{column-views.7715e35e.js.map → column-views.e1bc3cfa.js.map} +1 -1
  104. package/dist/esm/{column-views.8d4ce558.css → column-views.e33ac5c9.css} +26 -9
  105. package/dist/esm/column-views.e33ac5c9.css.map +1 -0
  106. package/dist/esm/column-views.ea4ebbb7.js +31 -0
  107. package/dist/esm/column-views.ea4ebbb7.js.map +1 -0
  108. package/dist/esm/{column-views.78bd3f09.js → column-views.f0b0fc56.js} +2 -2
  109. package/dist/esm/{column-views.78bd3f09.js.map → column-views.f0b0fc56.js.map} +1 -1
  110. package/dist/esm/column-views.faacfc3c.js +92 -0
  111. package/dist/esm/column-views.faacfc3c.js.map +1 -0
  112. package/dist/esm/{column-views.d48cb0d8.js → column-views.fcf25ec6.js} +7 -1
  113. package/dist/esm/column-views.fcf25ec6.js.map +1 -0
  114. package/dist/esm/index.d.ts +264 -441
  115. package/dist/esm/index.d.ts.map +1 -1
  116. package/dist/esm/index.js +12 -12
  117. package/dist/node/column-views.0201566d.js +2 -0
  118. package/dist/node/column-views.0201566d.js.map +1 -0
  119. package/dist/node/column-views.07c503d3.js +2 -0
  120. package/dist/node/column-views.07c503d3.js.map +1 -0
  121. package/dist/node/{column-views.3a55ecd7.css → column-views.0840b115.css} +2 -2
  122. package/dist/node/column-views.0840b115.css.map +1 -0
  123. package/dist/node/column-views.0b3a384e.js +2 -0
  124. package/dist/node/column-views.0b3a384e.js.map +1 -0
  125. package/dist/node/column-views.0bd15ee4.js +2 -0
  126. package/dist/node/column-views.0bd15ee4.js.map +1 -0
  127. package/dist/node/{column-views.2a6b842d.js → column-views.0e7ac946.js} +2 -2
  128. package/dist/node/column-views.0e7ac946.js.map +1 -0
  129. package/dist/node/column-views.108db52e.js +2 -0
  130. package/dist/node/column-views.108db52e.js.map +1 -0
  131. package/dist/node/column-views.1261be59.js +2 -0
  132. package/dist/node/column-views.1261be59.js.map +1 -0
  133. package/dist/node/column-views.16f336ee.js +2 -0
  134. package/dist/node/column-views.16f336ee.js.map +1 -0
  135. package/dist/node/column-views.18d54bbb.js +2 -0
  136. package/dist/node/column-views.18d54bbb.js.map +1 -0
  137. package/dist/node/column-views.19a84c01.js +2 -0
  138. package/dist/node/column-views.19a84c01.js.map +1 -0
  139. package/dist/node/column-views.1a3c399e.js +2 -0
  140. package/dist/node/column-views.1a3c399e.js.map +1 -0
  141. package/dist/node/column-views.29483479.js +2 -0
  142. package/dist/node/column-views.29483479.js.map +1 -0
  143. package/dist/node/column-views.29eb25bd.css +2 -0
  144. package/dist/node/column-views.29eb25bd.css.map +1 -0
  145. package/dist/node/column-views.312db572.js +2 -0
  146. package/dist/node/column-views.312db572.js.map +1 -0
  147. package/dist/node/{column-views.2ca669bc.js → column-views.32344397.js} +2 -2
  148. package/dist/node/{column-views.2ca669bc.js.map → column-views.32344397.js.map} +1 -1
  149. package/dist/node/column-views.44952ae6.js +2 -0
  150. package/dist/node/column-views.44952ae6.js.map +1 -0
  151. package/dist/node/{column-views.a372c943.js → column-views.45a03acc.js} +2 -2
  152. package/dist/node/{column-views.a372c943.js.map → column-views.45a03acc.js.map} +1 -1
  153. package/dist/node/{column-views.0cbd4a3f.js → column-views.48a3cfa3.js} +2 -2
  154. package/dist/node/{column-views.0cbd4a3f.js.map → column-views.48a3cfa3.js.map} +1 -1
  155. package/dist/node/{column-views.42db0bb8.js → column-views.4b4c214a.js} +2 -2
  156. package/dist/node/{column-views.42db0bb8.js.map → column-views.4b4c214a.js.map} +1 -1
  157. package/dist/node/column-views.50a992d3.css +2 -0
  158. package/dist/node/column-views.50a992d3.css.map +1 -0
  159. package/dist/node/{column-views.65f091ea.js → column-views.54363c13.js} +2 -2
  160. package/dist/node/{column-views.65f091ea.js.map → column-views.54363c13.js.map} +1 -1
  161. package/dist/node/{column-views.858b5cf4.js → column-views.554d44a7.js} +2 -2
  162. package/dist/node/{column-views.858b5cf4.js.map → column-views.554d44a7.js.map} +1 -1
  163. package/dist/node/column-views.573cb29d.js +2 -0
  164. package/dist/node/column-views.573cb29d.js.map +1 -0
  165. package/dist/node/{column-views.492b4917.js → column-views.57dd069c.js} +2 -2
  166. package/dist/node/{column-views.492b4917.js.map → column-views.57dd069c.js.map} +1 -1
  167. package/dist/node/{column-views.2e4e357d.js → column-views.588b02a1.js} +2 -2
  168. package/dist/node/{column-views.2e4e357d.js.map → column-views.588b02a1.js.map} +1 -1
  169. package/dist/node/column-views.5a8bc8e3.js +2 -0
  170. package/dist/node/column-views.5a8bc8e3.js.map +1 -0
  171. package/dist/node/column-views.5f3b0b04.js +2 -0
  172. package/dist/node/column-views.5f3b0b04.js.map +1 -0
  173. package/dist/node/column-views.6099a3a9.js +2 -0
  174. package/dist/node/column-views.6099a3a9.js.map +1 -0
  175. package/dist/node/column-views.6919fd2a.js +2 -0
  176. package/dist/node/column-views.6919fd2a.js.map +1 -0
  177. package/dist/node/{column-views.45fab61b.js → column-views.6b8424fd.js} +2 -2
  178. package/dist/node/{column-views.45fab61b.js.map → column-views.6b8424fd.js.map} +1 -1
  179. package/dist/node/column-views.7425d37b.js +2 -0
  180. package/dist/node/column-views.7425d37b.js.map +1 -0
  181. package/dist/node/column-views.77ace3a2.js +2 -0
  182. package/dist/node/column-views.77ace3a2.js.map +1 -0
  183. package/dist/node/column-views.7f9c7448.js +2 -0
  184. package/dist/node/column-views.7f9c7448.js.map +1 -0
  185. package/dist/node/column-views.92e29010.js +2 -0
  186. package/dist/node/column-views.92e29010.js.map +1 -0
  187. package/dist/node/{column-views.7010a03b.js → column-views.93febe9b.js} +2 -2
  188. package/dist/node/{column-views.7010a03b.js.map → column-views.93febe9b.js.map} +1 -1
  189. package/dist/node/{column-views.51bc87ca.js → column-views.94c84716.js} +2 -2
  190. package/dist/node/{column-views.51bc87ca.js.map → column-views.94c84716.js.map} +1 -1
  191. package/dist/node/column-views.a16cd1f2.js +2 -0
  192. package/dist/node/column-views.a16cd1f2.js.map +1 -0
  193. package/dist/node/{column-views.eeca917f.js → column-views.a1e29a15.js} +2 -2
  194. package/dist/node/{column-views.eeca917f.js.map → column-views.a1e29a15.js.map} +1 -1
  195. package/dist/node/column-views.aae09aca.js +2 -0
  196. package/dist/node/column-views.aae09aca.js.map +1 -0
  197. package/dist/node/column-views.abe0a664.js +2 -0
  198. package/dist/node/column-views.abe0a664.js.map +1 -0
  199. package/dist/node/{column-views.a2274834.js → column-views.ae9536b3.js} +2 -2
  200. package/dist/node/{column-views.a2274834.js.map → column-views.ae9536b3.js.map} +1 -1
  201. package/dist/node/column-views.aef76eee.js +2 -0
  202. package/dist/node/column-views.aef76eee.js.map +1 -0
  203. package/dist/node/column-views.cd7b223b.css +2 -0
  204. package/dist/node/column-views.cd7b223b.css.map +1 -0
  205. package/dist/node/{column-views.df97f28e.js → column-views.ce5904a6.js} +2 -2
  206. package/dist/node/{column-views.df97f28e.js.map → column-views.ce5904a6.js.map} +1 -1
  207. package/dist/node/column-views.d4545f9f.js +2 -0
  208. package/dist/node/column-views.d4545f9f.js.map +1 -0
  209. package/dist/node/{column-views.c7f6fc0a.js → column-views.d529d3aa.js} +2 -2
  210. package/dist/node/{column-views.c7f6fc0a.js.map → column-views.d529d3aa.js.map} +1 -1
  211. package/dist/node/{column-views.2d957a97.js → column-views.db4ccacc.js} +2 -2
  212. package/dist/node/column-views.db4ccacc.js.map +1 -0
  213. package/dist/node/column-views.e2562224.js +2 -0
  214. package/dist/node/column-views.e2562224.js.map +1 -0
  215. package/dist/node/column-views.e803e4ae.css +2 -0
  216. package/dist/node/column-views.e803e4ae.css.map +1 -0
  217. package/dist/node/column-views.ebe61439.js +2 -0
  218. package/dist/node/column-views.ebe61439.js.map +1 -0
  219. package/dist/node/column-views.edb4ba54.js +2 -0
  220. package/dist/node/column-views.edb4ba54.js.map +1 -0
  221. package/dist/node/column-views.f0f5cefd.js +2 -0
  222. package/dist/node/column-views.f0f5cefd.js.map +1 -0
  223. package/dist/node/column-views.f1ad131a.js +2 -0
  224. package/dist/node/column-views.f1ad131a.js.map +1 -0
  225. package/dist/node/{column-views.58d2f993.js → column-views.f7d72702.js} +2 -2
  226. package/dist/node/{column-views.58d2f993.js.map → column-views.f7d72702.js.map} +1 -1
  227. package/dist/node/{column-views.e3ba0594.js → column-views.fcdc74c4.js} +2 -2
  228. package/dist/node/{column-views.e3ba0594.js.map → column-views.fcdc74c4.js.map} +1 -1
  229. package/dist/node/index.js +1 -1
  230. package/dist/node/index.js.map +1 -1
  231. package/package.json +15 -13
  232. package/src/age-axis.module.sass +4 -2
  233. package/src/age-axis.ts +49 -15
  234. package/src/age-model-overlay.ts +22 -1
  235. package/src/column.module.sass +29 -9
  236. package/src/column.ts +99 -24
  237. package/src/correlation-chart/main.ts +11 -3
  238. package/src/correlation-chart/prepare-data.ts +7 -4
  239. package/src/correlation-chart/stories/correlation-chart.stories.ts +26 -1
  240. package/src/data-provider/base.ts +32 -24
  241. package/src/data-provider/fetch.ts +10 -3
  242. package/src/data-provider/index.ts +1 -0
  243. package/src/data-provider/store.ts +74 -13
  244. package/src/{units/selection.ts → data-provider/unit-selection.ts} +22 -8
  245. package/src/facets/base-sample-column.module.sass +14 -0
  246. package/src/facets/base-sample-column.ts +114 -0
  247. package/src/facets/detrital-zircon/index.ts +31 -63
  248. package/src/facets/fossils/index.module.sass +43 -13
  249. package/src/facets/fossils/index.ts +232 -158
  250. package/src/facets/fossils/provider.ts +121 -25
  251. package/src/facets/index.ts +1 -0
  252. package/src/facets/measurements/index.ts +1 -2
  253. package/src/maps/column-correlation/state.ts +0 -1
  254. package/src/prepare-units/composite-scale.ts +183 -155
  255. package/src/prepare-units/dynamic-scales.ts +298 -0
  256. package/src/prepare-units/helpers.ts +99 -87
  257. package/src/prepare-units/index.ts +77 -51
  258. package/src/prepare-units/types.ts +138 -0
  259. package/src/prepare-units/utils.ts +29 -1
  260. package/src/section.ts +46 -9
  261. package/src/unit-details/panel.module.sass +8 -1
  262. package/src/unit-details/panel.ts +123 -53
  263. package/src/unit-details/popover.ts +6 -1
  264. package/src/units/boxes.ts +2 -7
  265. package/src/units/composite.ts +7 -50
  266. package/src/units/index.ts +0 -1
  267. package/dist/esm/column-views.02f3732a.js.map +0 -1
  268. package/dist/esm/column-views.0a159282.js +0 -13
  269. package/dist/esm/column-views.1e055ed5.js +0 -53
  270. package/dist/esm/column-views.1e055ed5.js.map +0 -1
  271. package/dist/esm/column-views.2ff3dd8b.js.map +0 -1
  272. package/dist/esm/column-views.3048acc1.js +0 -66
  273. package/dist/esm/column-views.3048acc1.js.map +0 -1
  274. package/dist/esm/column-views.38a305a0.js +0 -13
  275. package/dist/esm/column-views.39657bbf.js.map +0 -1
  276. package/dist/esm/column-views.3f246167.js.map +0 -1
  277. package/dist/esm/column-views.42b89c52.js.map +0 -1
  278. package/dist/esm/column-views.448c0687.css.map +0 -1
  279. package/dist/esm/column-views.4ab0ec82.js.map +0 -1
  280. package/dist/esm/column-views.4d22c21c.js.map +0 -1
  281. package/dist/esm/column-views.547b2730.js.map +0 -1
  282. package/dist/esm/column-views.64a84c43.js.map +0 -1
  283. package/dist/esm/column-views.75ea6dbe.js.map +0 -1
  284. package/dist/esm/column-views.775846c9.js.map +0 -1
  285. package/dist/esm/column-views.77b49a43.js.map +0 -1
  286. package/dist/esm/column-views.7ca9e1cd.js.map +0 -1
  287. package/dist/esm/column-views.8703a35b.js +0 -163
  288. package/dist/esm/column-views.8703a35b.js.map +0 -1
  289. package/dist/esm/column-views.8d4ce558.css.map +0 -1
  290. package/dist/esm/column-views.8e3dec90.js.map +0 -1
  291. package/dist/esm/column-views.97d542eb.js.map +0 -1
  292. package/dist/esm/column-views.9892f825.js.map +0 -1
  293. package/dist/esm/column-views.a6301a41.js.map +0 -1
  294. package/dist/esm/column-views.b17f793f.css.map +0 -1
  295. package/dist/esm/column-views.b3c1eb9e.js +0 -16
  296. package/dist/esm/column-views.b3c1eb9e.js.map +0 -1
  297. package/dist/esm/column-views.b72918ce.css.map +0 -1
  298. package/dist/esm/column-views.c71c321c.js +0 -104
  299. package/dist/esm/column-views.c71c321c.js.map +0 -1
  300. package/dist/esm/column-views.cc5244c4.js.map +0 -1
  301. package/dist/esm/column-views.cdadc5c2.js.map +0 -1
  302. package/dist/esm/column-views.d48cb0d8.js.map +0 -1
  303. package/dist/esm/column-views.f08929e2.js.map +0 -1
  304. package/dist/esm/column-views.f20eb583.js.map +0 -1
  305. package/dist/node/column-views.085f4a51.js +0 -2
  306. package/dist/node/column-views.085f4a51.js.map +0 -1
  307. package/dist/node/column-views.0dfc7ef7.js +0 -2
  308. package/dist/node/column-views.0dfc7ef7.js.map +0 -1
  309. package/dist/node/column-views.1a0b56fc.js +0 -2
  310. package/dist/node/column-views.1a0b56fc.js.map +0 -1
  311. package/dist/node/column-views.2926f656.css +0 -2
  312. package/dist/node/column-views.2926f656.css.map +0 -1
  313. package/dist/node/column-views.2a6b842d.js.map +0 -1
  314. package/dist/node/column-views.2d957a97.js.map +0 -1
  315. package/dist/node/column-views.307661d1.css +0 -2
  316. package/dist/node/column-views.307661d1.css.map +0 -1
  317. package/dist/node/column-views.33752461.js +0 -2
  318. package/dist/node/column-views.33752461.js.map +0 -1
  319. package/dist/node/column-views.38357d4a.js +0 -2
  320. package/dist/node/column-views.38357d4a.js.map +0 -1
  321. package/dist/node/column-views.3a55ecd7.css.map +0 -1
  322. package/dist/node/column-views.3eeac38d.js +0 -2
  323. package/dist/node/column-views.3eeac38d.js.map +0 -1
  324. package/dist/node/column-views.45168c80.js +0 -2
  325. package/dist/node/column-views.45168c80.js.map +0 -1
  326. package/dist/node/column-views.4ca62e5d.js +0 -2
  327. package/dist/node/column-views.4ca62e5d.js.map +0 -1
  328. package/dist/node/column-views.6ae7bb69.js +0 -2
  329. package/dist/node/column-views.6ae7bb69.js.map +0 -1
  330. package/dist/node/column-views.6f7a432f.js +0 -2
  331. package/dist/node/column-views.6f7a432f.js.map +0 -1
  332. package/dist/node/column-views.755f726e.js +0 -2
  333. package/dist/node/column-views.755f726e.js.map +0 -1
  334. package/dist/node/column-views.758b9bc1.js +0 -2
  335. package/dist/node/column-views.758b9bc1.js.map +0 -1
  336. package/dist/node/column-views.78d3f3c5.js +0 -2
  337. package/dist/node/column-views.78d3f3c5.js.map +0 -1
  338. package/dist/node/column-views.80fcf105.js +0 -2
  339. package/dist/node/column-views.80fcf105.js.map +0 -1
  340. package/dist/node/column-views.8cfed88b.js +0 -2
  341. package/dist/node/column-views.8cfed88b.js.map +0 -1
  342. package/dist/node/column-views.91043465.js +0 -2
  343. package/dist/node/column-views.91043465.js.map +0 -1
  344. package/dist/node/column-views.976a829b.js +0 -2
  345. package/dist/node/column-views.976a829b.js.map +0 -1
  346. package/dist/node/column-views.99fb74c0.js +0 -2
  347. package/dist/node/column-views.99fb74c0.js.map +0 -1
  348. package/dist/node/column-views.9b7a9ae1.js +0 -2
  349. package/dist/node/column-views.9b7a9ae1.js.map +0 -1
  350. package/dist/node/column-views.9de31cdb.js +0 -2
  351. package/dist/node/column-views.9de31cdb.js.map +0 -1
  352. package/dist/node/column-views.a4e6d4ad.js +0 -2
  353. package/dist/node/column-views.a4e6d4ad.js.map +0 -1
  354. package/dist/node/column-views.a501cea0.js +0 -2
  355. package/dist/node/column-views.a501cea0.js.map +0 -1
  356. package/dist/node/column-views.a7256aa7.js +0 -2
  357. package/dist/node/column-views.a7256aa7.js.map +0 -1
  358. package/dist/node/column-views.c4b409e1.css +0 -2
  359. package/dist/node/column-views.c4b409e1.css.map +0 -1
  360. package/dist/node/column-views.cef1b814.js +0 -2
  361. package/dist/node/column-views.cef1b814.js.map +0 -1
  362. package/dist/node/column-views.d6708353.js +0 -2
  363. package/dist/node/column-views.d6708353.js.map +0 -1
  364. package/dist/node/column-views.d9add589.js +0 -2
  365. package/dist/node/column-views.d9add589.js.map +0 -1
  366. package/dist/node/column-views.dfb2361a.js +0 -2
  367. package/dist/node/column-views.dfb2361a.js.map +0 -1
  368. package/dist/node/column-views.e9515ec1.js +0 -2
  369. package/dist/node/column-views.e9515ec1.js.map +0 -1
@@ -1 +0,0 @@
1
- {"mappings":"ACAA,uOAWE,mCACE,qQAOI,qEAEA,kFAIN,8PAOE,8DAIF,0EAIE,sGAOA,2EAIA,kFAKA,qI,yIASF,uDAGA,gH,qD,6D,gD,oE,qE,kE,4H,2C,0DAqCF,sEAQE,+E,qIAcA,+D,gE,kDAcA,kD,8G","sources":["column-views.307661d1.css","packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container_afc440, body.light-mode .column-container_afc440 {\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\n@media (prefers-color-scheme: dark) {\n body:not(.light-mode) .column-container_afc440 {\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 }\n\n body:not(.light-mode) .column-container_afc440 .timescale {\n color: #000;\n }\n\n body:not(.light-mode) .column-container_afc440 svg pattern image {\n filter: invert();\n }\n}\n\nbody.dark-mode .column-container_afc440 {\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}\n\nbody.dark-mode .column-container_afc440 .timescale {\n color: #000;\n}\n\nbody.dark-mode .column-container_afc440 svg pattern image {\n filter: invert();\n}\n\n.column-container_afc440 .column {\n flex-direction: row;\n height: fit-content;\n display: flex;\n position: relative;\n}\n\n.column-container_afc440 g.lithology-column .column-clip-frame {\n stroke: none;\n}\n\n.column-container_afc440 .unit {\n stroke: var(--column-stroke-color);\n stroke-width: 1px;\n}\n\n.column-container_afc440 .selection-overlay {\n fill: var(--selection-overlay-color, red);\n fill-opacity: var(--selection-overlay-opacity, .5);\n}\n\n.column-container_afc440 g.lithology-column use.frame {\n stroke: var(--column-stroke-color);\n pointer-events: none;\n stroke-width: 1.5px !important;\n}\n\n.column-container_afc440 .unit-label {\n text-align: center;\n}\n\n.column-container_afc440 .col-note-label {\n margin: 1px 0;\n font-size: 10px;\n line-height: 9px;\n border-left: none !important;\n}\n\n.column-container_afc440 g.height-range {\n display: none;\n}\n\n.column-container_afc440 .note-inner {\n border: none;\n padding: 1px;\n}\n\n.column-container_afc440 .frame rect {\n fill: #0000;\n}\n\n.column-container_afc440 .default-buttons {\n width: 100%;\n margin: 0 -10px;\n}\n\n.column-container_afc440 div.section {\n flex-direction: row;\n display: flex;\n}\n\n.column-container_afc440 .section .divisions .unit {\n cursor: pointer;\n}\n\n.column-container_afc440 .timescale {\n width: calc((1.5em + 1.5px) * var(--timescale-level-count, 4));\n --timescale-level-size: 1.5em;\n}\n\n.timescale-column_afc440 {\n position: relative;\n}\n\n.section-main_afc440 {\n margin-bottom: -4px;\n position: relative;\n}\n\n.section-units-container_afc440, .main-column_afc440 {\n position: relative;\n}\n\n.unconformity-labels_afc440 {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.unconformity_afc440 {\n text-align: center;\n justify-content: center;\n align-items: center;\n font-size: .8em;\n display: flex;\n position: absolute;\n top: 0;\n}\n\n.unconformity_afc440.giga_afc440 {\n font-size: 1em;\n font-weight: 800;\n}\n\n.unconformity_afc440.mega_afc440 {\n font-size: .9em;\n font-weight: 700;\n}\n\n.unconformity_afc440.large_afc440 {\n font-weight: 600;\n}\n\n.unconformity_afc440.small_afc440 {\n font-weight: 300;\n}\n\n.unconformity-text_afc440 {\n width: var(--column-width);\n color: var(--column-stroke-color);\n --unit-font-style: normal;\n}\n\n.column-title-row_afc440 {\n flex-direction: row;\n justify-content: space-between;\n align-items: baseline;\n gap: 1em;\n display: flex;\n}\n/*# sourceMappingURL=column-views.307661d1.css.map */\n",".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 height: fit-content\n\n g.lithology-column .column-clip-frame\n stroke: none\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 line-height: 9px\n border-left: none !important\n margin: 1px 0\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n padding: 1px\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.column-title-row\n display: flex\n flex-direction: row\n gap: 1em\n justify-content: space-between\n align-items: baseline\n"],"names":[],"version":3,"file":"column-views.307661d1.css.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.8cfed88b.js";import{ColumnAxisType as e}from"@macrostrat/column-components";import{scaleLinear as t}from"d3-scale";var a=globalThis,n={},i={},l=a.parcelRequirea149;null==l&&((l=function(e){if(e in n)return n[e].exports;if(e in i){var t=i[e];delete i[e];var a={id:e,exports:{}};return n[e]=a,t.call(a.exports,a,a.exports),a.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){i[e]=t},a.parcelRequirea149=l),l.register;var o=l("iWhRv");function r(e,t){let a=t/2,n=0,i=[];for(let l of e){let{domain:e,pixelScale:o}=l,[r,s]=e,c=`package-${r}-${s}`;i.push({...f(l,a),key:c,offset:a,paddingTop:a-n}),a=(n=a+o*Math.abs(r-s))+t}return{totalHeight:a+=t/2,sections:i}}function s(e,t){let{totalHeight:a,sections:n}=r(e.map(e=>e.scaleInfo),t),i=[];for(let t in e){let a=e[t],l=n[t];i.push({...a,key:l.key,scaleInfo:l})}return{totalHeight:a,sections:i}}function c(e,t){return e.map(e=>u(e,t))}function u(t,a){let{t_age:n,b_age:i,units:l}=t,r=null;null!=n&&null!=i&&a.axisType==e.AGE&&(r=[i,n]);let s=function(t,a){let{targetUnitHeight:n=20,minPixelScale:i=.2,axisType:l,minSectionHeight:r}=a,s=a.domain??function(t,a){if(null==a)throw Error("Axis type is not set");if(a===e.AGE){let e=Math.min(...t.map(e=>e.t_age));return[Math.max(...t.map(e=>e.b_age)),e]}if(a==e.DEPTH||a==e.ORDINAL){let e=Math.min(...t.map(e=>e.t_pos));return[Math.max(...t.map(e=>e.b_pos)),e]}if(a==e.HEIGHT){let e=Math.max(...t.map(e=>e.t_pos));return[Math.min(...t.map(e=>e.b_pos)),e]}}(t,l),c=Math.abs(s[0]-s[1]),u=a.pixelScale;null==u&&(u=Math.max(n/function(e,t){let a=e.map(e=>{let[a,n]=(0,o.getUnitHeightRange)(e,t);return Math.abs(a-n)});return a.reduce((e,t)=>e+t,0)/a.length}(t,l),i));let p=c*u;return f({domain:s,pixelScale:u=(p=Math.max(p,r??n??0))/c},0)}(l,{...a,domain:r});return{...t,scaleInfo:s}}function f(e,a=0){let{domain:n,pixelScale:i}=e,l=i*Math.abs(n[0]-n[1]);return{domain:n,pixelScale:i,pixelHeight:l,scale:t().domain([n[1],n[0]]).range([a,l+a])}}function p(e,t=!1){let a=[];for(let t of e){let{pixelHeight:e,offset:n,domain:i}=t.scaleInfo;a.push([i[1],n]),a.push([i[0],n+e])}a.sort((e,t)=>e[0]-t[0]);let n=e=>{let t=0,n=null;for(let[i,l]of a){if(e<=i){let a=i-n;if(0===a)return l;let o=(l-t)/a;return t+(e-n)*o}n=i,t=l}};return n.copy=()=>p(e,t),n.domain=()=>{let t=e[0].scaleInfo.domain,a=e[e.length-1].scaleInfo.domain;return t[0]<a[0]?[Math.min(...t),Math.max(...a)]:[Math.max(...t),Math.min(...a)]},n.invert=t=>{for(let a of e){let{pixelHeight:e,pixelScale:n,offset:i,domain:l}=a.scaleInfo;if(t>=i&&t<=i+e&&n>0)return l[1]+(t-i)/n;l[1]}return null},n}function m(e,t,a){let n=[],i=null;for(let l of e){if(null==i){i=l;continue}Math.abs(l.t_age-i.b_age)*Math.max(i.scaleInfo.pixelScale,l.scaleInfo.pixelScale)<t?i=u({units:[...i.units,...l.units],section_id:[...(0,o.ensureArray)(i.section_id),...(0,o.ensureArray)(l.section_id)],t_age:Math.min(i.t_age,l.t_age),b_age:Math.max(i.b_age,l.b_age)},a):(n.push(i),i=l)}return null!=i&&n.push(i),n}export{r as buildCompositeScaleInfo,f as createPackageScale,s as finalizeSectionHeights,c as computeSectionHeights,p as createCompositeScale,m as collapseUnconformitiesByPixelHeight};
2
- //# sourceMappingURL=column-views.33752461.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["<anon>","packages/column-views/src/prepare-units/composite-scale.ts"],"sourcesContent":["import \"./column-views.8cfed88b.js\";\nimport {ColumnAxisType as $d6XP3$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {scaleLinear as $d6XP3$scaleLinear} from \"d3-scale\";\n\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nfunction $8054a162cb094378$export$e7184dd8bb3302ed(inputScales, unconformityHeight) {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */ let totalHeight = unconformityHeight / 2;\n let lastSectionTopHeight = 0;\n const packages2 = [];\n for (const group of inputScales){\n const { domain: domain, pixelScale: pixelScale } = group;\n const [b_age, t_age] = domain;\n const key = `package-${b_age}-${t_age}`;\n packages2.push({\n ...$8054a162cb094378$export$d6235b492bceb8c5(group, totalHeight),\n key: key,\n offset: totalHeight,\n // Unconformity height above this particular section\n paddingTop: totalHeight - lastSectionTopHeight\n });\n const pixelHeight = pixelScale * Math.abs(b_age - t_age);\n lastSectionTopHeight = totalHeight + pixelHeight;\n totalHeight = lastSectionTopHeight + unconformityHeight;\n }\n totalHeight += unconformityHeight / 2;\n return {\n totalHeight: totalHeight,\n sections: packages2\n };\n}\nfunction $8054a162cb094378$export$67442a0f5bef147b(sections, unconformityHeight) {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */ const sectionScales = sections.map((d)=>d.scaleInfo);\n const { totalHeight: totalHeight, sections: packages } = $8054a162cb094378$export$e7184dd8bb3302ed(sectionScales, unconformityHeight);\n // This could perhaps be simplified.\n const sections1 = [];\n for(const i in sections){\n const group = sections[i];\n const scaleInfo = packages[i];\n sections1.push({\n ...group,\n key: scaleInfo.key,\n scaleInfo: scaleInfo\n });\n }\n return {\n totalHeight: totalHeight,\n sections: sections1\n };\n}\nfunction $8054a162cb094378$export$7d3f3129a1a4b84e(sections, opts) {\n return sections.map((group)=>{\n return $8054a162cb094378$var$addScaleToSection(group, opts);\n });\n}\nfunction $8054a162cb094378$var$addScaleToSection(group, opts) {\n const { t_age: t_age, b_age: b_age, units: units } = group;\n let _range = null;\n // if t_age and b_age are set for a group, use them to define the range...\n if (t_age != null && b_age != null && opts.axisType == (0, $d6XP3$ColumnAxisType).AGE) _range = [\n b_age,\n t_age\n ];\n const scaleInfo = $8054a162cb094378$var$buildSectionScale(units, {\n ...opts,\n domain: _range\n });\n return {\n ...group,\n scaleInfo: scaleInfo\n };\n}\nfunction $8054a162cb094378$var$buildSectionScale(data, opts) {\n const { targetUnitHeight: targetUnitHeight = 20, minPixelScale: minPixelScale = 0.2, axisType: axisType, minSectionHeight: minSectionHeight } = opts;\n const domain = opts.domain ?? $8054a162cb094378$var$findSectionHeightRange(data, axisType);\n const dAge = Math.abs(domain[0] - domain[1]);\n let _pixelScale = opts.pixelScale;\n if (_pixelScale == null) {\n const avgAgeRange = $8054a162cb094378$var$findAverageUnitHeight(data, axisType);\n // Get pixel height necessary to render average unit at target height\n _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);\n // OLD METHOD that cares about overall section height vs. individual unit height\n // 0.2 pixel per myr is the floor scale\n //const targetHeight = targetUnitHeight * data.length;\n // 1 pixel per myr is the floor scale\n //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);\n }\n let height = dAge * _pixelScale;\n // If height is less than minSectionHeight, set it to minSectionHeight\n const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;\n height = Math.max(height, _minSectionHeight);\n _pixelScale = height / dAge;\n return $8054a162cb094378$export$d6235b492bceb8c5({\n domain: domain,\n pixelScale: _pixelScale\n }, 0);\n}\nfunction $8054a162cb094378$export$d6235b492bceb8c5(def, offset = 0) {\n /** Build a section scale */ // Domain should be oriented from bottom to top, but scale is oriented from top to bottom\n const { domain: domain, pixelScale: pixelScale } = def;\n const pixelHeight = pixelScale * Math.abs(domain[0] - domain[1]);\n return {\n domain: domain,\n pixelScale: pixelScale,\n pixelHeight: pixelHeight,\n scale: (0, $d6XP3$scaleLinear)().domain([\n domain[1],\n domain[0]\n ]).range([\n offset,\n pixelHeight + offset\n ])\n };\n}\nfunction $8054a162cb094378$var$findSectionHeightRange(data, axisType) {\n if (axisType == null) throw new Error(\"Axis type is not set\");\n if (axisType === (0, $d6XP3$ColumnAxisType).AGE) {\n const t_age = Math.min(...data.map((d)=>d.t_age));\n const b_age = Math.max(...data.map((d)=>d.b_age));\n return [\n b_age,\n t_age\n ];\n } else if (axisType == (0, $d6XP3$ColumnAxisType).DEPTH || axisType == (0, $d6XP3$ColumnAxisType).ORDINAL) {\n const t_pos = Math.min(...data.map((d)=>d.t_pos));\n const b_pos = Math.max(...data.map((d)=>d.b_pos));\n return [\n b_pos,\n t_pos\n ];\n } else if (axisType == (0, $d6XP3$ColumnAxisType).HEIGHT) {\n const t_pos = Math.max(...data.map((d)=>d.t_pos));\n const b_pos = Math.min(...data.map((d)=>d.b_pos));\n return [\n b_pos,\n t_pos\n ];\n }\n}\nfunction $8054a162cb094378$var$findAverageUnitHeight(data, axisType) {\n const unitHeights = data.map((d)=>{\n const [b_pos, t_pos] = (0, $iWhRv.getUnitHeightRange)(d, axisType);\n return Math.abs(b_pos - t_pos);\n });\n return unitHeights.reduce((a, b)=>a + b, 0) / unitHeights.length;\n}\nfunction $8054a162cb094378$export$3ada7641926a616d(sections, interpolateUnconformities = false) {\n /** Create a scale that works across multiple packages */ // Get surfaces at which scale breaks\n let scaleBreaks = [];\n for (const section of sections){\n const { pixelHeight: pixelHeight, offset: offset, domain: domain } = section.scaleInfo;\n scaleBreaks.push([\n domain[1],\n offset\n ]);\n scaleBreaks.push([\n domain[0],\n offset + pixelHeight\n ]);\n }\n // Sort the scale breaks by age\n scaleBreaks.sort((a, b)=>a[0] - b[0]);\n const scale = (age)=>{\n // Accumulate scale breaks and pixel height\n let lastHeight = 0;\n let lastAge = null;\n for (const [age1, height] of scaleBreaks){\n if (age <= age1) {\n let deltaAge = age1 - lastAge;\n if (deltaAge === 0) // If the age is exactly at a scale break, return the height at that break\n return height;\n let pixelScale = (height - lastHeight) / deltaAge;\n return lastHeight + (age - lastAge) * pixelScale;\n }\n lastAge = age1;\n lastHeight = height;\n }\n };\n scale.copy = ()=>{\n return $8054a162cb094378$export$3ada7641926a616d(sections, interpolateUnconformities);\n };\n scale.domain = ()=>{\n /** Return the domain of the scale */ const firstSection = sections[0].scaleInfo.domain;\n const lastSection = sections[sections.length - 1].scaleInfo.domain;\n if (firstSection[0] < lastSection[0]) return [\n Math.min(...firstSection),\n Math.max(...lastSection)\n ];\n else // Catches \"normal\" axes like height\n return [\n Math.max(...firstSection),\n Math.min(...lastSection)\n ];\n };\n scale.invert = (pixelHeight)=>{\n /** Invert the scale to get the age at a given pixel height */ // Iterate through the sections to find the correct one\n let lastAge = null;\n for (const section of sections){\n const { pixelHeight: sectionHeight, pixelScale: pixelScale, offset: offset, domain: domain } = section.scaleInfo;\n if (pixelHeight >= offset && pixelHeight <= offset + sectionHeight && pixelScale > 0) {\n const age = domain[1] + (pixelHeight - offset) / pixelScale;\n return age;\n }\n lastAge = domain[1];\n }\n return null;\n };\n return scale;\n}\nfunction $8054a162cb094378$export$edbf01b435c75274(sections, threshold, opts) {\n const newSections = [];\n let currentSection = null;\n for (const nextSection of sections){\n if (currentSection == null) {\n currentSection = nextSection;\n continue;\n }\n const dAge = Math.abs(nextSection.t_age - currentSection.b_age);\n const pxHeight = dAge * Math.max(currentSection.scaleInfo.pixelScale, nextSection.scaleInfo.pixelScale);\n if (pxHeight < threshold) {\n // We need to merge the sections\n const compositeSection0 = {\n units: [\n ...currentSection.units,\n ...nextSection.units\n ],\n section_id: [\n ...(0, $iWhRv.ensureArray)(currentSection.section_id),\n ...(0, $iWhRv.ensureArray)(nextSection.section_id)\n ],\n t_age: Math.min(currentSection.t_age, nextSection.t_age),\n b_age: Math.max(currentSection.b_age, nextSection.b_age)\n };\n const compositeSection = $8054a162cb094378$var$addScaleToSection(compositeSection0, opts);\n currentSection = compositeSection;\n } else {\n // We need to keep the section\n newSections.push(currentSection);\n currentSection = nextSection;\n }\n }\n if (currentSection != null) newSections.push(currentSection);\n return newSections;\n}\n\n\nexport {$8054a162cb094378$export$e7184dd8bb3302ed as buildCompositeScaleInfo, $8054a162cb094378$export$d6235b492bceb8c5 as createPackageScale, $8054a162cb094378$export$67442a0f5bef147b as finalizeSectionHeights, $8054a162cb094378$export$7d3f3129a1a4b84e as computeSectionHeights, $8054a162cb094378$export$3ada7641926a616d as createCompositeScale, $8054a162cb094378$export$edbf01b435c75274 as collapseUnconformitiesByPixelHeight};\n//# sourceMappingURL=column-views.33752461.js.map\n","import type { ExtUnit, SectionInfo } from \"./helpers\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { ensureArray, getUnitHeightRange } from \"./utils\";\nimport { ScaleLinear, scaleLinear } from \"d3-scale\";\nimport { UnitLong } from \"@macrostrat/api-types\";\n\nexport interface ColumnHeightScaleOptions {\n /** A fixed pixel scale to use for the section (pixels per Myr) */\n pixelScale?: number;\n /** The target height of a constituent unit in pixels, for dynamic\n * scale generation */\n targetUnitHeight?: number;\n /** Min height of a section in pixels. Will override minPixelScale in some cases. */\n minSectionHeight?: number;\n /** The minimum pixel scale to use for the section (pixels per Myr). This is mostly\n * needed because small sections (<1-2 units) don't necessarily have space to comfortably\n * render two axis labels */\n minPixelScale?: number;\n // Axis scale type\n axisType?: ColumnAxisType;\n // Unconformity height in pixels\n unconformityHeight?: number;\n // Whether to collapse unconformities that are less than a height threshold\n collapseSmallUnconformities?: boolean | number;\n}\n\nexport interface SectionScaleOptions extends ColumnHeightScaleOptions {\n axisType: ColumnAxisType;\n domain: [number, number];\n}\n\nexport interface LinearScaleDef {\n domain: [number, number];\n pixelScale: number;\n}\n\n/** Output of a section scale. For now, this assumes that the\n * mapping is linear, but it could be extended to support arbitrary\n * scale functions.\n */\nexport interface PackageScaleInfo extends LinearScaleDef {\n pixelHeight: number;\n // TODO: add a function\n scale: ScaleLinear<number, number>;\n}\n\nexport type PackageScaleLayoutData = PackageScaleInfo & {\n // A unique key for the section to use in React\n key: string;\n offset: number;\n // How much to\n paddingTop: number;\n};\n\nexport type PackageLayoutData<T extends UnitLong = ExtUnit> = SectionInfo<T> & {\n scaleInfo: PackageScaleLayoutData;\n // A unique key for the section to use in React\n key: string;\n};\n\nexport interface CompositeScaleData {\n totalHeight: number;\n sections: PackageScaleLayoutData[];\n}\n\nexport interface ColumnScaleOptions extends ColumnHeightScaleOptions {\n axisType: ColumnAxisType;\n unconformityHeight: number;\n}\n\n// Composite scale information augmented with units in each package\n\nexport interface CompositeColumnData<T extends UnitLong = ExtUnit>\n extends Omit<CompositeScaleData, \"sections\"> {\n sections: PackageLayoutData<T>[];\n}\n\nexport function buildCompositeScaleInfo(\n inputScales: LinearScaleDef[],\n unconformityHeight: number,\n): CompositeScaleData {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n let totalHeight = unconformityHeight / 2;\n let lastSectionTopHeight = 0;\n\n const packages2: PackageScaleLayoutData[] = [];\n for (const group of inputScales) {\n const { domain, pixelScale } = group;\n const [b_age, t_age] = domain;\n const key = `package-${b_age}-${t_age}`;\n\n packages2.push({\n ...createPackageScale(group, totalHeight),\n key,\n offset: totalHeight,\n // Unconformity height above this particular section\n paddingTop: totalHeight - lastSectionTopHeight,\n });\n const pixelHeight = pixelScale * Math.abs(b_age - t_age);\n lastSectionTopHeight = totalHeight + pixelHeight;\n totalHeight = lastSectionTopHeight + unconformityHeight;\n }\n totalHeight += unconformityHeight / 2;\n return {\n totalHeight,\n sections: packages2,\n };\n}\n\nexport function finalizeSectionHeights<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n unconformityHeight: number,\n): CompositeColumnData<T> {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n const sectionScales = sections.map((d) => d.scaleInfo);\n const { totalHeight, sections: packages } = buildCompositeScaleInfo(\n sectionScales,\n unconformityHeight,\n );\n\n // This could perhaps be simplified.\n const sections1: PackageLayoutData<T>[] = [];\n for (const i in sections) {\n const group = sections[i];\n const scaleInfo = packages[i];\n sections1.push({\n ...group,\n key: scaleInfo.key,\n scaleInfo,\n });\n }\n return {\n totalHeight,\n sections: sections1,\n };\n}\n\ninterface SectionInfoWithScale<T extends UnitLong = ExtUnit>\n extends SectionInfo<T> {\n scaleInfo: PackageScaleInfo;\n}\n\nexport function computeSectionHeights<T extends UnitLong>(\n sections: SectionInfo<T>[],\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n return sections.map((group) => {\n return addScaleToSection<T>(group, opts);\n });\n}\n\nfunction addScaleToSection<T extends UnitLong = ExtUnit>(\n group: SectionInfo<T>,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T> {\n const { t_age, b_age, units } = group;\n let _range = null;\n // if t_age and b_age are set for a group, use them to define the range...\n if (t_age != null && b_age != null && opts.axisType == ColumnAxisType.AGE) {\n _range = [b_age, t_age];\n }\n\n const scaleInfo = buildSectionScale<T>(units, {\n ...opts,\n domain: _range,\n });\n\n return {\n ...group,\n scaleInfo,\n };\n}\n\nfunction buildSectionScale<T extends UnitLong>(\n data: T[],\n opts: SectionScaleOptions,\n): PackageScaleInfo {\n const {\n targetUnitHeight = 20,\n minPixelScale = 0.2,\n axisType,\n minSectionHeight,\n } = opts;\n const domain = opts.domain ?? findSectionHeightRange(data, axisType);\n\n const dAge = Math.abs(domain[0] - domain[1]);\n\n let _pixelScale = opts.pixelScale;\n if (_pixelScale == null) {\n const avgAgeRange = findAverageUnitHeight(data, axisType);\n // Get pixel height necessary to render average unit at target height\n _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);\n\n // OLD METHOD that cares about overall section height vs. individual unit height\n // 0.2 pixel per myr is the floor scale\n //const targetHeight = targetUnitHeight * data.length;\n // 1 pixel per myr is the floor scale\n //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);\n }\n\n let height = dAge * _pixelScale;\n\n // If height is less than minSectionHeight, set it to minSectionHeight\n const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;\n height = Math.max(height, _minSectionHeight);\n _pixelScale = height / dAge;\n\n return createPackageScale({ domain, pixelScale: _pixelScale }, 0);\n}\n\nexport function createPackageScale(\n def: LinearScaleDef,\n offset: number = 0,\n): PackageScaleInfo {\n /** Build a section scale */\n // Domain should be oriented from bottom to top, but scale is oriented from top to bottom\n const { domain, pixelScale } = def;\n const pixelHeight = pixelScale * Math.abs(domain[0] - domain[1]);\n return {\n domain,\n pixelScale,\n pixelHeight,\n scale: scaleLinear()\n .domain([domain[1], domain[0]])\n .range([offset, pixelHeight + offset]),\n };\n}\n\nfunction findSectionHeightRange(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): [number, number] {\n if (axisType == null) {\n throw new Error(\"Axis type is not set\");\n }\n if (axisType === ColumnAxisType.AGE) {\n const t_age = Math.min(...data.map((d) => d.t_age));\n const b_age = Math.max(...data.map((d) => d.b_age));\n return [b_age, t_age];\n } else if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.ORDINAL\n ) {\n const t_pos = Math.min(...data.map((d) => d.t_pos));\n const b_pos = Math.max(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n } else if (axisType == ColumnAxisType.HEIGHT) {\n const t_pos = Math.max(...data.map((d) => d.t_pos));\n const b_pos = Math.min(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n }\n}\n\nfunction findAverageUnitHeight(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): number {\n const unitHeights = data.map((d) => {\n const [b_pos, t_pos] = getUnitHeightRange(d, axisType);\n return Math.abs(b_pos - t_pos);\n });\n return unitHeights.reduce((a, b) => a + b, 0) / unitHeights.length;\n}\n\nexport interface CompositeColumnScale {\n (age: number): number | null;\n copy(): CompositeColumnScale;\n domain(): [number, number];\n invert(pixelHeight: number): number | null;\n}\n\nexport function createCompositeScale(\n sections: PackageLayoutData[],\n interpolateUnconformities: boolean = false,\n): CompositeColumnScale {\n /** Create a scale that works across multiple packages */\n // Get surfaces at which scale breaks\n let scaleBreaks: [number, number][] = [];\n for (const section of sections) {\n const { pixelHeight, offset, domain } = section.scaleInfo;\n\n scaleBreaks.push([domain[1], offset]);\n scaleBreaks.push([domain[0], offset + pixelHeight]);\n }\n // Sort the scale breaks by age\n scaleBreaks.sort((a, b) => a[0] - b[0]);\n\n const scale = (age) => {\n // Accumulate scale breaks and pixel height\n let lastHeight = 0;\n let lastAge = null;\n for (const [age1, height] of scaleBreaks) {\n if (age <= age1) {\n let deltaAge = age1 - lastAge;\n if (deltaAge === 0) {\n // If the age is exactly at a scale break, return the height at that break\n return height;\n }\n let pixelScale = (height - lastHeight) / deltaAge;\n return lastHeight + (age - lastAge) * pixelScale;\n }\n lastAge = age1;\n lastHeight = height;\n }\n };\n\n scale.copy = () => {\n return createCompositeScale(sections, interpolateUnconformities);\n };\n\n scale.domain = () => {\n /** Return the domain of the scale */\n const firstSection = sections[0].scaleInfo.domain;\n const lastSection = sections[sections.length - 1].scaleInfo.domain;\n if (firstSection[0] < lastSection[0]) {\n return [Math.min(...firstSection), Math.max(...lastSection)];\n } else {\n // Catches \"normal\" axes like height\n return [Math.max(...firstSection), Math.min(...lastSection)];\n }\n };\n\n scale.invert = (pixelHeight) => {\n /** Invert the scale to get the age at a given pixel height */\n // Iterate through the sections to find the correct one\n let lastAge = null;\n for (const section of sections) {\n const {\n pixelHeight: sectionHeight,\n pixelScale,\n offset,\n domain,\n } = section.scaleInfo;\n if (\n pixelHeight >= offset &&\n pixelHeight <= offset + sectionHeight &&\n pixelScale > 0\n ) {\n const age = domain[1] + (pixelHeight - offset) / pixelScale;\n return age;\n }\n lastAge = domain[1];\n }\n return null;\n };\n\n return scale as CompositeColumnScale;\n}\n\n/** Collapse sections separated by unconformities that are smaller than a given pixel height. */\nexport function collapseUnconformitiesByPixelHeight<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n threshold: number,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n const newSections = [];\n let currentSection: SectionInfoWithScale<T> | null = null;\n for (const nextSection of sections) {\n if (currentSection == null) {\n currentSection = nextSection;\n continue;\n }\n const dAge = Math.abs(nextSection.t_age - currentSection.b_age);\n const pxHeight =\n dAge *\n Math.max(\n currentSection.scaleInfo.pixelScale,\n nextSection.scaleInfo.pixelScale,\n );\n if (pxHeight < threshold) {\n // We need to merge the sections\n const compositeSection0: SectionInfo<T> = {\n units: [...currentSection.units, ...nextSection.units],\n section_id: [\n ...ensureArray(currentSection.section_id),\n ...ensureArray(nextSection.section_id),\n ],\n t_age: Math.min(currentSection.t_age, nextSection.t_age),\n b_age: Math.max(currentSection.b_age, nextSection.b_age),\n };\n\n const compositeSection = addScaleToSection(compositeSection0, opts);\n currentSection = compositeSection;\n } else {\n // We need to keep the section\n newSections.push(currentSection);\n currentSection = nextSection;\n }\n }\n if (currentSection != null) {\n newSections.push(currentSection);\n }\n\n return newSections;\n}\n"],"names":["ColumnAxisType","$d6XP3$ColumnAxisType","scaleLinear","$d6XP3$scaleLinear","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$iWhRv","$8054a162cb094378$export$e7184dd8bb3302ed","inputScales","unconformityHeight","totalHeight","lastSectionTopHeight","packages2","group","domain","pixelScale","b_age","t_age","key","push","$8054a162cb094378$export$d6235b492bceb8c5","offset","paddingTop","Math","abs","sections","$8054a162cb094378$export$67442a0f5bef147b","packages","map","d","scaleInfo","sections1","i","$8054a162cb094378$export$7d3f3129a1a4b84e","opts","$8054a162cb094378$var$addScaleToSection","units","_range","axisType","AGE","$8054a162cb094378$var$buildSectionScale","data","targetUnitHeight","minPixelScale","minSectionHeight","$8054a162cb094378$var$findSectionHeightRange","min","max","DEPTH","ORDINAL","t_pos","b_pos","HEIGHT","dAge","_pixelScale","$8054a162cb094378$var$findAverageUnitHeight","unitHeights","getUnitHeightRange","reduce","a","b","length","height","def","pixelHeight","scale","range","$8054a162cb094378$export$3ada7641926a616d","interpolateUnconformities","scaleBreaks","section","sort","age","lastHeight","lastAge","age1","deltaAge","copy","firstSection","lastSection","invert","sectionHeight","$8054a162cb094378$export$edbf01b435c75274","threshold","newSections","currentSection","nextSection","pxHeight","section_id","ensureArray","buildCompositeScaleInfo","createPackageScale","finalizeSectionHeights","computeSectionHeights","createCompositeScale","collapseUnconformitiesByPixelHeight"],"version":3,"file":"column-views.33752461.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import{joinURL as t,addQueryString as e,useAPIResult as a}from"@macrostrat/ui-components";import n from"cross-fetch";import{feature as o}from"topojson-client";import{geoArea as r}from"d3-geo";function s(t,e,a,n){Object.defineProperty(t,e,{get:a,set:n,enumerable:!0,configurable:!0})}var l={};function c(t,e){return n("https://macrostrat.org/api/v2"+t,e)}async function i(a={}){let{apiBaseURL:o,projectID:s,format:l="topojson",statusCode:c,fetch:u=n}=a,f={format:l};null!=s&&(f={...f,project_id:s}),null!=c&&(f={...f,status_code:c}),null==s&&(f={...f,all:!0});let m="/columns";null!=o&&(m=t(o,m)),m=e(m,f);let p=await u(m,{method:"GET",headers:{"Content-Type":"application/json"}});if(null==p)return null;let h=await p.json();return d[l](h).filter(t=>null!=t.geometry).map(t=>{if(1e-8>r(t.geometry)){let e=t.geometry.coordinates[0][0];t.geometry={type:"Point",coordinates:e}}return t}).map((t,e)=>({id:t.properties?.col_id,...t}))}function u({apiRoute:t="/columns",status_code:e,project_id:n,format:o="geojson"}){let r;null==e&&null==n&&(r=!0);let s=d[o];return a(t,{format:o,all:r,status_code:e,project_id:n},s)}function f(t){return t?.features}s(l,"fetchAllColumns",()=>i),s(l,"useColumnFeatures",()=>u),s(l,"fetchLithologies",()=>p),s(l,"fetchIntervals",()=>h),s(l,"fetchEnvironments",()=>$),s(l,"fetchRefs",()=>g),s(l,"fetchStratNames",()=>j),s(l,"fetchUnits",()=>w),s(l,"fetchColumnUnits",()=>y);let d={topojson:function(t){try{let{data:e}=t.success,{features:a}=o(e,e.objects.output);return a}catch(t){return console.error(t),[]}},geojson:function(t){return f(t?.success?.data)},geojson_bare:f};async function m(t){return null==t?null:(await t.json()).success.data}async function p(t=c){let e=await t("/defs/lithologies?all");return await m(e)}async function h(t,e=c){let a="/defs/intervals";null!=t?a+=`?timescale_id=${t}`:a+="?all";let n=await e(a);return await m(n)}async function $(t=c){let e=await t("/defs/environments?all");return await m(e)}async function g(t,e=c){let a="/defs/refs";if(0==t.length)return[];a+="?ref_id="+t.join(",");let n=await e(a);return await m(n)}async function j(t,e=c){let a="/defs/strat_names";if(0==t.length)return[];a+="?strat_name_id="+t.join(",");let n=await e(a);return await m(n)}async function w(t,e=c){let a=t.map(t=>y(t,e));return await Promise.all(a)}async function y(t,e=c){let a=new URLSearchParams;a.append("response","long"),a.append("col_id",t.toString());let n=await e("/units?"+a.toString()),o=await n.json();if(!o.success)throw Error("Failed to fetch column units");return{columnID:t,units:o.success.data}}export{i as fetchAllColumns,u as useColumnFeatures,p as fetchLithologies,h as fetchIntervals,$ as fetchEnvironments,g as fetchRefs,j as fetchStratNames,w as fetchUnits,y as fetchColumnUnits};
2
- //# sourceMappingURL=column-views.38357d4a.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["<anon>","packages/column-views/src/data-provider/fetch.ts"],"sourcesContent":["import {joinURL as $iGnPX$joinURL, addQueryString as $iGnPX$addQueryString, useAPIResult as $iGnPX$useAPIResult} from \"@macrostrat/ui-components\";\nimport $iGnPX$crossfetch from \"cross-fetch\";\nimport {feature as $iGnPX$feature} from \"topojson-client\";\nimport {geoArea as $iGnPX$geoArea} from \"d3-geo\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $482a09479937d1e2$exports = {};\n\n$parcel$export($482a09479937d1e2$exports, \"fetchAllColumns\", () => $482a09479937d1e2$export$45bd78cd093090fa);\n$parcel$export($482a09479937d1e2$exports, \"useColumnFeatures\", () => $482a09479937d1e2$export$e3270a4e30e40ff9);\n$parcel$export($482a09479937d1e2$exports, \"fetchLithologies\", () => $482a09479937d1e2$export$1aa679bd5e605f82);\n$parcel$export($482a09479937d1e2$exports, \"fetchIntervals\", () => $482a09479937d1e2$export$5d2ec2e733dfe6c7);\n$parcel$export($482a09479937d1e2$exports, \"fetchEnvironments\", () => $482a09479937d1e2$export$780b4b253712916c);\n$parcel$export($482a09479937d1e2$exports, \"fetchRefs\", () => $482a09479937d1e2$export$cd7bfa0860f58b96);\n$parcel$export($482a09479937d1e2$exports, \"fetchStratNames\", () => $482a09479937d1e2$export$8ea8f45a7ffe4183);\n$parcel$export($482a09479937d1e2$exports, \"fetchUnits\", () => $482a09479937d1e2$export$b97b9bdd6a521298);\n$parcel$export($482a09479937d1e2$exports, \"fetchColumnUnits\", () => $482a09479937d1e2$export$d3d8b0fabcc76c5d);\n\n\n\n\nfunction $482a09479937d1e2$var$defaultFetch(url, options) {\n const baseURL = \"https://macrostrat.org/api/v2\";\n return (0, $iGnPX$crossfetch)(baseURL + url, options);\n}\nasync function $482a09479937d1e2$export$45bd78cd093090fa(options = {}) {\n const { apiBaseURL: apiBaseURL, projectID: projectID, format: format = \"topojson\", statusCode: statusCode, fetch: fetch = (0, $iGnPX$crossfetch) } = options;\n let args = {\n format: format\n };\n if (projectID != null) args = {\n ...args,\n project_id: projectID\n };\n if (statusCode != null) args = {\n ...args,\n status_code: statusCode\n };\n if (projectID == null) args = {\n ...args,\n all: true\n };\n let url = \"/columns\";\n if (apiBaseURL != null) url = (0, $iGnPX$joinURL)(apiBaseURL, url);\n // Try with fetch\n url = (0, $iGnPX$addQueryString)(url, args);\n const res = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n });\n if (res == null) return null;\n // Get JSON\n const data = await res.json();\n return $482a09479937d1e2$var$postProcessColumns($482a09479937d1e2$var$columnProcessors[format](data));\n}\nfunction $482a09479937d1e2$export$e3270a4e30e40ff9({ apiRoute: apiRoute = \"/columns\", status_code: status_code, project_id: project_id, format: format = \"geojson\" }) {\n let all = undefined;\n if (status_code == null && project_id == null) all = true;\n const processor = $482a09479937d1e2$var$columnProcessors[format];\n return (0, $iGnPX$useAPIResult)(apiRoute, {\n format: format,\n all: all,\n status_code: status_code,\n project_id: project_id\n }, processor);\n}\nfunction $482a09479937d1e2$var$processGeoJSON(res) {\n return $482a09479937d1e2$var$processGeoJSONBare(res?.success?.data);\n}\nfunction $482a09479937d1e2$var$processGeoJSONBare(res) {\n return res?.features;\n}\nfunction $482a09479937d1e2$var$processTopoJSON(res) {\n try {\n const { data: data } = res.success;\n const { features: f } = (0, $iGnPX$feature)(data, data.objects.output);\n return f;\n } catch (err) {\n console.error(err);\n return [];\n }\n}\nfunction $482a09479937d1e2$var$postProcessColumns(columns) {\n return $482a09479937d1e2$var$promoteColumnIDs($482a09479937d1e2$var$convertSmallAreasToPoints($482a09479937d1e2$var$removeFeaturesWithoutGeometry(columns)));\n}\nfunction $482a09479937d1e2$var$promoteColumnIDs(features) {\n return features.map((f, i)=>{\n return {\n id: f.properties?.col_id,\n ...f\n };\n });\n}\nfunction $482a09479937d1e2$var$removeFeaturesWithoutGeometry(features) {\n return features.filter((f)=>f.geometry != null);\n}\nfunction $482a09479937d1e2$var$convertSmallAreasToPoints(features) {\n return features.map((f)=>{\n // GeoArea takes a long time to run. We are really more worried about points that are zero-area\n if ((0, $iGnPX$geoArea)(f.geometry) < 1e-8) {\n const centroid = f.geometry.coordinates[0][0];\n f.geometry = {\n type: \"Point\",\n coordinates: centroid\n };\n }\n return f;\n });\n}\nconst $482a09479937d1e2$var$columnProcessors = {\n topojson: $482a09479937d1e2$var$processTopoJSON,\n geojson: $482a09479937d1e2$var$processGeoJSON,\n geojson_bare: $482a09479937d1e2$var$processGeoJSONBare\n};\nasync function $482a09479937d1e2$var$unwrapResponse(res) {\n if (res == null) return null;\n const resData = await res.json();\n return resData[\"success\"][\"data\"];\n}\nasync function $482a09479937d1e2$export$1aa679bd5e605f82(fetch = $482a09479937d1e2$var$defaultFetch) {\n const res = await fetch(\"/defs/lithologies?all\");\n return await $482a09479937d1e2$var$unwrapResponse(res);\n}\nasync function $482a09479937d1e2$export$5d2ec2e733dfe6c7(timescaleID, fetch = $482a09479937d1e2$var$defaultFetch) {\n let url = `/defs/intervals`;\n if (timescaleID != null) url += `?timescale_id=${timescaleID}`;\n else url += \"?all\";\n const res = await fetch(url);\n return await $482a09479937d1e2$var$unwrapResponse(res);\n}\nasync function $482a09479937d1e2$export$780b4b253712916c(fetch = $482a09479937d1e2$var$defaultFetch) {\n const res = await fetch(\"/defs/environments?all\");\n return await $482a09479937d1e2$var$unwrapResponse(res);\n}\nasync function $482a09479937d1e2$export$cd7bfa0860f58b96(refs, fetch = $482a09479937d1e2$var$defaultFetch) {\n let url = `/defs/refs`;\n if (refs.length == 0) return [];\n url += \"?ref_id=\" + refs.join(\",\");\n const res = await fetch(url);\n return await $482a09479937d1e2$var$unwrapResponse(res);\n}\nasync function $482a09479937d1e2$export$8ea8f45a7ffe4183(names, fetch = $482a09479937d1e2$var$defaultFetch) {\n let url = `/defs/strat_names`;\n if (names.length == 0) return [];\n url += \"?strat_name_id=\" + names.join(\",\");\n const res = await fetch(url);\n return await $482a09479937d1e2$var$unwrapResponse(res);\n}\nasync function $482a09479937d1e2$export$b97b9bdd6a521298(columns, fetch = $482a09479937d1e2$var$defaultFetch) {\n const promises = columns.map((col_id)=>$482a09479937d1e2$export$d3d8b0fabcc76c5d(col_id, fetch));\n return await Promise.all(promises);\n}\nasync function $482a09479937d1e2$export$d3d8b0fabcc76c5d(col_id, fetch = $482a09479937d1e2$var$defaultFetch) {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n params.append(\"col_id\", col_id.toString());\n const res = await fetch(\"/units?\" + params.toString());\n const data = await res.json();\n if (!data.success) throw new Error(\"Failed to fetch column units\");\n const units = data.success.data;\n return {\n columnID: col_id,\n units: units\n };\n}\n\n\nexport {$482a09479937d1e2$export$45bd78cd093090fa as fetchAllColumns, $482a09479937d1e2$export$e3270a4e30e40ff9 as useColumnFeatures, $482a09479937d1e2$export$1aa679bd5e605f82 as fetchLithologies, $482a09479937d1e2$export$5d2ec2e733dfe6c7 as fetchIntervals, $482a09479937d1e2$export$780b4b253712916c as fetchEnvironments, $482a09479937d1e2$export$cd7bfa0860f58b96 as fetchRefs, $482a09479937d1e2$export$8ea8f45a7ffe4183 as fetchStratNames, $482a09479937d1e2$export$b97b9bdd6a521298 as fetchUnits, $482a09479937d1e2$export$d3d8b0fabcc76c5d as fetchColumnUnits};\n//# sourceMappingURL=column-views.38357d4a.js.map\n","import {\n ColumnGeoJSONRecord,\n ColumnGeoJSONRecordWithID,\n MacrostratRef,\n StratName,\n StratUnit,\n UnitLong,\n} from \"@macrostrat/api-types\";\nimport {\n addQueryString,\n joinURL,\n useAPIResult,\n} from \"@macrostrat/ui-components\";\nimport crossFetch from \"cross-fetch\";\nimport { feature } from \"topojson-client\";\nimport { geoArea } from \"d3-geo\";\n\nfunction defaultFetch(\n url: string,\n options: RequestInit | undefined = undefined,\n) {\n const baseURL = \"https://macrostrat.org/api/v2\";\n return crossFetch(baseURL + url, options);\n}\n\nexport interface ColumnFetchOptions {\n apiBaseURL?: string;\n projectID?: number;\n statusCode?: \"in process\";\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n fetch?: any;\n}\n\nexport async function fetchAllColumns(\n options: ColumnFetchOptions = {},\n): Promise<ColumnGeoJSONRecord[]> {\n const {\n apiBaseURL,\n projectID,\n format = \"topojson\",\n statusCode,\n fetch = crossFetch,\n } = options;\n\n let args: any = { format };\n if (projectID != null) {\n args = { ...args, project_id: projectID };\n }\n if (statusCode != null) {\n args = { ...args, status_code: statusCode };\n }\n\n if (projectID == null) {\n args = { ...args, all: true };\n }\n\n let url = \"/columns\";\n if (apiBaseURL != null) {\n url = joinURL(apiBaseURL, url);\n }\n\n // Try with fetch\n url = addQueryString(url, args);\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (res == null) {\n return null;\n }\n\n // Get JSON\n const data = await res.json();\n return postProcessColumns(columnProcessors[format](data));\n}\n\nexport function useColumnFeatures({\n apiRoute = \"/columns\",\n status_code,\n project_id,\n format = \"geojson\",\n}) {\n let all: boolean = undefined;\n if (status_code == null && project_id == null) {\n all = true;\n }\n\n const processor = columnProcessors[format];\n\n return useAPIResult(\n apiRoute,\n { format, all, status_code, project_id },\n processor,\n );\n}\n\nfunction processGeoJSON(res) {\n return processGeoJSONBare(res?.success?.data);\n}\n\nfunction processGeoJSONBare(res) {\n return res?.features;\n}\n\nfunction processTopoJSON(res) {\n try {\n const { data } = res.success;\n const { features: f } = feature(data, data.objects.output) as any;\n return f;\n } catch (err) {\n console.error(err);\n return [];\n }\n}\n\nfunction postProcessColumns(columns) {\n return promoteColumnIDs(\n convertSmallAreasToPoints(removeFeaturesWithoutGeometry(columns)),\n );\n}\n\nfunction promoteColumnIDs(\n features: ColumnGeoJSONRecord[],\n): ColumnGeoJSONRecordWithID[] {\n return features.map((f, i) => {\n return {\n id: f.properties?.col_id,\n ...f,\n };\n });\n}\n\nfunction removeFeaturesWithoutGeometry(features) {\n return features.filter((f) => f.geometry != null);\n}\n\nfunction convertSmallAreasToPoints(features) {\n return features.map((f) => {\n // GeoArea takes a long time to run. We are really more worried about points that are zero-area\n if (geoArea(f.geometry) < 1e-8) {\n const centroid = f.geometry.coordinates[0][0];\n f.geometry = {\n type: \"Point\",\n coordinates: centroid,\n };\n }\n return f;\n });\n}\n\nconst columnProcessors = {\n topojson: processTopoJSON,\n geojson: processGeoJSON,\n geojson_bare: processGeoJSONBare,\n};\n\nasync function unwrapResponse(res) {\n if (res == null) {\n return null;\n }\n const resData = await res.json();\n return resData[\"success\"][\"data\"];\n}\n\nexport async function fetchLithologies(fetch = defaultFetch) {\n const res = await fetch(\"/defs/lithologies?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchIntervals(\n timescaleID: number | null,\n fetch = defaultFetch,\n) {\n let url = `/defs/intervals`;\n if (timescaleID != null) {\n url += `?timescale_id=${timescaleID}`;\n } else {\n url += \"?all\";\n }\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchEnvironments(fetch = defaultFetch) {\n const res = await fetch(\"/defs/environments?all\");\n return await unwrapResponse(res);\n}\n\nexport async function fetchRefs(\n refs: number[],\n fetch = defaultFetch,\n): Promise<MacrostratRef[]> {\n let url = `/defs/refs`;\n if (refs.length == 0) {\n return [];\n }\n url += \"?ref_id=\" + refs.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport async function fetchStratNames(\n names: number[],\n fetch = defaultFetch,\n): Promise<StratName[]> {\n let url = `/defs/strat_names`;\n if (names.length == 0) {\n return [];\n }\n url += \"?strat_name_id=\" + names.join(\",\");\n const res = await fetch(url);\n return await unwrapResponse(res);\n}\n\nexport type ColumnData = {\n units: UnitLong[];\n columnID: number;\n};\n\nexport async function fetchUnits(\n columns: number[],\n fetch = defaultFetch,\n): Promise<ColumnData[]> {\n const promises = columns.map((col_id) => fetchColumnUnits(col_id, fetch));\n return await Promise.all(promises);\n}\n\nexport async function fetchColumnUnits(\n col_id: number,\n fetch = defaultFetch,\n): Promise<ColumnData> {\n const params = new URLSearchParams();\n params.append(\"response\", \"long\");\n params.append(\"col_id\", col_id.toString());\n const res = await fetch(\"/units\" + \"?\" + params.toString());\n const data = await res.json();\n if (!data.success) {\n throw new Error(\"Failed to fetch column units\");\n }\n const units = data.success.data;\n return { columnID: col_id, units };\n}\n"],"names":["joinURL","$iGnPX$joinURL","addQueryString","$iGnPX$addQueryString","useAPIResult","$iGnPX$useAPIResult","$iGnPX$crossfetch","feature","$iGnPX$feature","geoArea","$iGnPX$geoArea","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$482a09479937d1e2$exports","$482a09479937d1e2$var$defaultFetch","url","options","baseURL","$482a09479937d1e2$export$45bd78cd093090fa","apiBaseURL","projectID","format","statusCode","fetch","args","project_id","status_code","all","res","method","headers","data","json","features","$482a09479937d1e2$var$columnProcessors","filter","f","geometry","map","centroid","coordinates","type","i","id","properties","col_id","$482a09479937d1e2$export$e3270a4e30e40ff9","apiRoute","processor","$482a09479937d1e2$var$processGeoJSONBare","$482a09479937d1e2$export$1aa679bd5e605f82","$482a09479937d1e2$export$5d2ec2e733dfe6c7","$482a09479937d1e2$export$780b4b253712916c","$482a09479937d1e2$export$cd7bfa0860f58b96","$482a09479937d1e2$export$8ea8f45a7ffe4183","$482a09479937d1e2$export$b97b9bdd6a521298","$482a09479937d1e2$export$d3d8b0fabcc76c5d","topojson","success","objects","output","err","console","error","geojson","geojson_bare","$482a09479937d1e2$var$unwrapResponse","resData","timescaleID","refs","length","join","names","columns","promises","Promise","params","URLSearchParams","append","toString","Error","columnID","units","fetchAllColumns","useColumnFeatures","fetchLithologies","fetchIntervals","fetchEnvironments","fetchRefs","fetchStratNames","fetchUnits","fetchColumnUnits"],"version":3,"file":"column-views.38357d4a.js.map","sourceRoot":"../../../../"}
@@ -1 +0,0 @@
1
- {"mappings":"ACAA,2CAII,mKAOA,uDAGJ,sCAGA,+KAQA,qDAGA,2EAKE,yKAIA","sources":["column-views.3a55ecd7.css","packages/column-views/src/age-axis.module.sass"],"sourcesContent":["._FHjpa_age-axis {\n transform: translateX(20px);\n}\n\n._FHjpa_age-axis .tick text {\n text-anchor: middle;\n font-size: var(--column-axis-font-size, .8rem);\n transform: rotate(-90deg)translate(8px, -12px);\n font-weight: 400 !important;\n}\n\n._FHjpa_age-axis .tick line {\n stroke-width: 1px !important;\n}\n\n._FHjpa_age-axis-column {\n flex-shrink: 0;\n}\n\n._FHjpa_age-axis-label {\n writing-mode: vertical-lr;\n font-size: var(--column-axis-font-size, .8rem);\n text-align: center;\n max-height: 100vh;\n position: sticky;\n top: 0;\n transform: rotate(180deg);\n}\n\n._FHjpa_age-axis-unit {\n color: var(--text-subtle-color);\n}\n\n._FHjpa_age-cursor {\n pointer-events: none;\n position: absolute;\n left: 30px;\n right: 0;\n}\n\n._FHjpa_age-cursor ._FHjpa_line {\n border-bottom: 2px solid var(--column-axis-cursor-color, var(--column-cursor-color, var(--column-stroke-color)));\n transform: translateY(-1px);\n}\n\n._FHjpa_age-cursor ._FHjpa_label {\n writing-mode: vertical-lr;\n background-color: var(--column-background-color);\n text-align: center;\n padding: 4px 2px;\n transform: rotate(180deg)translate(16px, 50%);\n}\n/*# sourceMappingURL=column-views.3a55ecd7.css.map */\n",".age-axis\n transform: translateX(20px)\n\n :global(.tick)\n text\n text-anchor: middle\n // TODO: allow font size to vary without this..\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n font-size: var(--column-axis-font-size, 0.8rem)\n\n line\n stroke-width: 1px !important\n\n.age-axis-column\n flex-shrink: 0\n\n.age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: var(--column-axis-font-size, 0.8rem)\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n.age-axis-unit\n color: var(--text-subtle-color)\n\n.age-cursor\n position: absolute\n left: 30px\n right: 0\n pointer-events: none\n .line\n border-bottom: 2px solid var(--column-axis-cursor-color, var(--column-cursor-color, var(--column-stroke-color)))\n transform: translateY(-1px)\n\n .label\n writing-mode: vertical-lr\n padding: 4px 2px\n transform: rotate(180deg) translate(16px, 50%)\n background-color: var(--column-background-color)\n text-align: center\n\n\n\n \n"],"names":[],"version":3,"file":"column-views.3a55ecd7.css.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import e from"@macrostrat/hyper";import{useKeyHandler as t}from"@macrostrat/ui-components";import{createContext as n,useContext as i,useState as l,useEffect as u,useRef as o,useCallback as r}from"react";import{useStore as d,createStore as a}from"zustand";function c(e,t,n,i){Object.defineProperty(e,t,{get:n,set:i,enumerable:!0,configurable:!0})}var s={};c(s,"useUnitSelectionDispatch",()=>U),c(s,"useUnitSelectionStore",()=>p),c(s,"useSelectedUnit",()=>S),c(s,"UnitSelectionProvider",()=>g),c(s,"useUnitSelectionTarget",()=>$),c(s,"UnitKeyboardNavigation",()=>h);let f=n(null);function U(){let e=i(f);return null==e?()=>{}:d(e,e=>e.onUnitSelected)}function p(e){let t=i(f);return null==t?null:d(t,e)}function S(){return p(e=>e.selectedUnitData)}function g(t){let[n]=l(()=>a(e=>({selectedUnit:null,selectedUnitData:null,overlayPosition:null,setSelectedUnit(t){if(null==t)return void e({selectedUnit:null,selectedUnitData:null});"number"==typeof t?e({selectedUnit:t,selectedUnitData:null}):"unit_id"in t&&e({selectedUnit:t.unit_id,selectedUnitData:t})},onUnitSelected:(n,i,l)=>{let u=t.columnRef?.current,o=null;if(t.onClickedColumn){let e={unitID:n?.unit_id,unit:n,target:i,height:u?.getBoundingClientRect().height||0};t.onClickedColumn(e,l)}if(null!=n&&null!=u&&null!=i){let e=u.getBoundingClientRect(),t=i.getBoundingClientRect();o={x:t.left-e.left,y:t.top-e.top,width:t.width,height:t.height}}return t.onUnitSelected?.(n?.unit_id,n),e({selectedUnit:n?.unit_id,selectedUnitData:n,overlayPosition:o})}}))),{units:i,selectedUnit:o}=t;return u(()=>{if(null!=o){let e=i?.find(e=>e.unit_id===o);n.setState({selectedUnit:o,selectedUnitData:e})}else n.setState({selectedUnit:null,selectedUnitData:null})},[o,i]),e(f.Provider,{value:n},t.children)}function $(e){let t=o(),n=S(),i=p(e=>e.onUnitSelected),l=n?.unit_id==e.unit_id,d=r(n=>{null!=i&&(i(e,t.current,n),n.stopPropagation())},[e,i]);return u(()=>{l&&null!=i&&(i(e,t.current,null),t.current?.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"}))},[l,i]),[t,l,d]}function h({units:e}){let n=S(),i=U(),l=e.findIndex(e=>e.unit_id===n?.unit_id),u={38:l-1,40:l+1};return t(t=>{let n=u[t.keyCode];null==n||n<0||n>=e.length||(i(e[n],null,null),t.stopPropagation())},[e,l]),null}export{U as useUnitSelectionDispatch,p as useUnitSelectionStore,S as useSelectedUnit,g as UnitSelectionProvider,$ as useUnitSelectionTarget,h as UnitKeyboardNavigation};
2
- //# sourceMappingURL=column-views.3eeac38d.js.map
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["<anon>","packages/column-views/src/units/selection.ts"],"sourcesContent":["import $TyplV$macrostrathyper from \"@macrostrat/hyper\";\nimport {useKeyHandler as $TyplV$useKeyHandler} from \"@macrostrat/ui-components\";\nimport {createContext as $TyplV$createContext, useContext as $TyplV$useContext, useState as $TyplV$useState, useEffect as $TyplV$useEffect, useRef as $TyplV$useRef, useCallback as $TyplV$useCallback} from \"react\";\nimport {useStore as $TyplV$useStore, createStore as $TyplV$createStore} from \"zustand\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $f7d31510668965d8$exports = {};\n\n$parcel$export($f7d31510668965d8$exports, \"useUnitSelectionDispatch\", () => $f7d31510668965d8$export$77a278d5ca56e309);\n$parcel$export($f7d31510668965d8$exports, \"useUnitSelectionStore\", () => $f7d31510668965d8$export$b220b1d3591dc9e5);\n$parcel$export($f7d31510668965d8$exports, \"useSelectedUnit\", () => $f7d31510668965d8$export$f0dd93f90aa8e5da);\n$parcel$export($f7d31510668965d8$exports, \"UnitSelectionProvider\", () => $f7d31510668965d8$export$f19d75b1d4b676a4);\n$parcel$export($f7d31510668965d8$exports, \"useUnitSelectionTarget\", () => $f7d31510668965d8$export$cbbec12b1451fe7d);\n$parcel$export($f7d31510668965d8$exports, \"UnitKeyboardNavigation\", () => $f7d31510668965d8$export$70f5ee19650fc7d1);\n\n\n\n\nconst $f7d31510668965d8$var$UnitSelectionContext = (0, $TyplV$createContext)(null);\nfunction $f7d31510668965d8$export$77a278d5ca56e309() {\n const store = (0, $TyplV$useContext)($f7d31510668965d8$var$UnitSelectionContext);\n if (store == null) return ()=>{};\n return (0, $TyplV$useStore)(store, (state)=>state.onUnitSelected);\n}\nfunction $f7d31510668965d8$export$b220b1d3591dc9e5(selector) {\n const store = (0, $TyplV$useContext)($f7d31510668965d8$var$UnitSelectionContext);\n if (store == null) return null;\n return (0, $TyplV$useStore)(store, selector);\n}\nfunction $f7d31510668965d8$export$f0dd93f90aa8e5da() {\n return $f7d31510668965d8$export$b220b1d3591dc9e5((state)=>state.selectedUnitData);\n}\nfunction $f7d31510668965d8$export$f19d75b1d4b676a4(props) {\n const [store] = (0, $TyplV$useState)(()=>(0, $TyplV$createStore)((set)=>({\n selectedUnit: null,\n selectedUnitData: null,\n overlayPosition: null,\n setSelectedUnit (selectedUnit) {\n if (selectedUnit == null) {\n set({\n selectedUnit: null,\n selectedUnitData: null\n });\n return;\n // If it's a number, set the selected unit\n } else if (typeof selectedUnit === \"number\") set({\n selectedUnit: selectedUnit,\n selectedUnitData: null\n });\n else if (\"unit_id\" in selectedUnit) set({\n selectedUnit: selectedUnit.unit_id,\n selectedUnitData: selectedUnit\n });\n },\n onUnitSelected: (unit, target, event)=>{\n const el = props.columnRef?.current;\n let overlayPosition = null;\n /** This is not the natural place to get positions within the column,\n * but it will work for now.\n */ if (props.onClickedColumn) {\n // Infer height from top and bottom height of unit (because that's passed back with the call)\n //const py = event.y;\n //const [bottom, top] = getUnitHeightRange(unit, axisType);\n //const height = Math.abs(bottom - top);\n /** Ideally this would be defined at the column level */ const columnClickData = {\n unitID: unit?.unit_id,\n unit: unit,\n target: target,\n height: el?.getBoundingClientRect().height || 0\n };\n props.onClickedColumn(columnClickData, event);\n }\n if (unit != null && el != null && target != null) {\n const rect = el.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n overlayPosition = {\n x: targetRect.left - rect.left,\n y: targetRect.top - rect.top,\n width: targetRect.width,\n height: targetRect.height\n };\n }\n props.onUnitSelected?.(unit?.unit_id, unit);\n return set({\n selectedUnit: unit?.unit_id,\n selectedUnitData: unit,\n overlayPosition: overlayPosition\n });\n }\n })));\n const { units: units, selectedUnit: selectedUnit } = props;\n (0, $TyplV$useEffect)(()=>{\n // Synchronize store with provided props\n if (selectedUnit != null) {\n const unitData = units?.find((u)=>u.unit_id === selectedUnit);\n store.setState({\n selectedUnit: selectedUnit,\n selectedUnitData: unitData\n });\n } else store.setState({\n selectedUnit: null,\n selectedUnitData: null\n });\n }, [\n selectedUnit,\n units\n ]);\n return (0, $TyplV$macrostrathyper)($f7d31510668965d8$var$UnitSelectionContext.Provider, {\n value: store\n }, props.children);\n}\nfunction $f7d31510668965d8$export$cbbec12b1451fe7d(unit) {\n const ref = (0, $TyplV$useRef)();\n const selectedUnit = $f7d31510668965d8$export$f0dd93f90aa8e5da();\n const onSelectUnit = $f7d31510668965d8$export$b220b1d3591dc9e5((state)=>state.onUnitSelected);\n const selected = selectedUnit?.unit_id == unit.unit_id;\n const onClick = (0, $TyplV$useCallback)((evt)=>{\n if (onSelectUnit == null) return;\n onSelectUnit(unit, ref.current, evt);\n evt.stopPropagation();\n }, [\n unit,\n onSelectUnit\n ]);\n (0, $TyplV$useEffect)(()=>{\n if (!selected || onSelectUnit == null) return;\n // In case we haven't set the position of the unit (if we don't have a target), set the selected unit\n onSelectUnit(unit, ref.current, null);\n // Scroll the unit into view\n ref.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"nearest\"\n });\n }, [\n selected,\n onSelectUnit\n ]);\n return [\n ref,\n selected,\n onClick\n ];\n}\nfunction $f7d31510668965d8$export$70f5ee19650fc7d1({ units: units }) {\n const selectedUnit = $f7d31510668965d8$export$f0dd93f90aa8e5da();\n const selectUnit = $f7d31510668965d8$export$77a278d5ca56e309();\n const ix = units.findIndex((unit)=>unit.unit_id === selectedUnit?.unit_id);\n const keyMap = {\n 38: ix - 1,\n 40: ix + 1\n };\n (0, $TyplV$useKeyHandler)((event)=>{\n const nextIx = keyMap[event.keyCode];\n if (nextIx == null || nextIx < 0 || nextIx >= units.length) return;\n selectUnit(units[nextIx], null, null);\n event.stopPropagation();\n }, [\n units,\n ix\n ]);\n return null;\n}\n\n\nexport {$f7d31510668965d8$export$77a278d5ca56e309 as useUnitSelectionDispatch, $f7d31510668965d8$export$b220b1d3591dc9e5 as useUnitSelectionStore, $f7d31510668965d8$export$f0dd93f90aa8e5da as useSelectedUnit, $f7d31510668965d8$export$f19d75b1d4b676a4 as UnitSelectionProvider, $f7d31510668965d8$export$cbbec12b1451fe7d as useUnitSelectionTarget, $f7d31510668965d8$export$70f5ee19650fc7d1 as UnitKeyboardNavigation};\n//# sourceMappingURL=column-views.3eeac38d.js.map\n","import { BaseUnit } from \"@macrostrat/api-types\";\nimport h from \"@macrostrat/hyper\";\nimport { useKeyHandler } from \"@macrostrat/ui-components\";\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n RefObject,\n useRef,\n useCallback,\n MouseEvent,\n} from \"react\";\nimport { createStore, StoreApi, useStore } from \"zustand\";\nimport type { RectBounds, IUnit } from \"./types\";\nimport {\n getUnitHeightRange,\n useMacrostratColumnData,\n} from \"@macrostrat/column-views\";\n\ntype UnitSelectDispatch = (\n unit: BaseUnit | null,\n target: HTMLElement | null,\n event: Event | null,\n) => void;\n\nconst UnitSelectionContext = createContext<StoreApi<UnitSelectionStore>>(null);\n\nexport function useUnitSelectionDispatch(): UnitSelectDispatch {\n const store = useContext(UnitSelectionContext);\n if (store == null) {\n return () => {};\n }\n return useStore(store, (state) => state.onUnitSelected);\n}\n\nexport function useUnitSelectionStore<T>(\n selector: (state: UnitSelectionStore) => T,\n): T {\n const store = useContext(UnitSelectionContext);\n if (store == null) {\n return null;\n }\n return useStore(store, selector);\n}\n\nexport function useSelectedUnit() {\n return useUnitSelectionStore((state) => state.selectedUnitData);\n}\n\ninterface UnitSelectionStore {\n selectedUnit: number | null;\n selectedUnitData: BaseUnit | null;\n overlayPosition: RectBounds | null;\n onUnitSelected: UnitSelectDispatch;\n setSelectedUnit: (unit: number | null) => void;\n}\n\nexport interface ColumnClickData {\n unitID: number | null;\n unit: BaseUnit | null;\n target: HTMLElement | null;\n height: number;\n // Room for boundary IDs eventually\n}\n\nexport function UnitSelectionProvider<T extends BaseUnit>(props: {\n children: ReactNode;\n columnRef?: RefObject<HTMLElement>;\n units: T[];\n selectedUnit: number | null;\n onClickedColumn?: (columnClickData: ColumnClickData, event: Event) => void;\n onUnitSelected?: (unitID: number | null, unit: T | null) => void;\n}) {\n const [store] = useState(() =>\n createStore<UnitSelectionStore>((set) => ({\n selectedUnit: null,\n selectedUnitData: null,\n overlayPosition: null,\n setSelectedUnit(selectedUnit: number | null | BaseUnit) {\n if (selectedUnit == null) {\n set({ selectedUnit: null, selectedUnitData: null });\n return;\n // If it's a number, set the selected unit\n } else if (typeof selectedUnit === \"number\") {\n set({ selectedUnit, selectedUnitData: null });\n } else if (\"unit_id\" in selectedUnit) {\n set({\n selectedUnit: selectedUnit.unit_id,\n selectedUnitData: selectedUnit,\n });\n }\n },\n onUnitSelected: (unit: T, target: HTMLElement, event: PointerEvent) => {\n const el = props.columnRef?.current;\n let overlayPosition = null;\n\n /** This is not the natural place to get positions within the column,\n * but it will work for now.\n */\n if (props.onClickedColumn) {\n // Infer height from top and bottom height of unit (because that's passed back with the call)\n //const py = event.y;\n //const [bottom, top] = getUnitHeightRange(unit, axisType);\n //const height = Math.abs(bottom - top);\n\n /** Ideally this would be defined at the column level */\n const columnClickData: ColumnClickData = {\n unitID: unit?.unit_id,\n unit,\n target,\n height: el?.getBoundingClientRect().height || 0,\n };\n props.onClickedColumn(columnClickData, event);\n }\n\n if (unit != null && el != null && target != null) {\n const rect = el.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n\n overlayPosition = {\n x: targetRect.left - rect.left,\n y: targetRect.top - rect.top,\n width: targetRect.width,\n height: targetRect.height,\n };\n }\n props.onUnitSelected?.(unit?.unit_id, unit);\n\n return set({\n selectedUnit: unit?.unit_id,\n selectedUnitData: unit,\n overlayPosition,\n });\n },\n })),\n );\n\n const { units, selectedUnit } = props;\n\n useEffect(() => {\n // Synchronize store with provided props\n if (selectedUnit != null) {\n const unitData = units?.find((u) => u.unit_id === selectedUnit);\n store.setState({ selectedUnit, selectedUnitData: unitData });\n } else {\n store.setState({ selectedUnit: null, selectedUnitData: null });\n }\n }, [selectedUnit, units]);\n\n return h(UnitSelectionContext.Provider, { value: store }, props.children);\n}\n\nexport function useUnitSelectionTarget(\n unit: IUnit,\n): [React.RefObject<HTMLElement>, boolean, (evt: Event) => void] {\n const ref = useRef<HTMLElement>();\n const selectedUnit = useSelectedUnit();\n const onSelectUnit = useUnitSelectionStore((state) => state.onUnitSelected);\n const selected = selectedUnit?.unit_id == unit.unit_id;\n\n const onClick = useCallback(\n (evt: Event) => {\n if (onSelectUnit == null) return;\n onSelectUnit(unit, ref.current, evt);\n evt.stopPropagation();\n },\n [unit, onSelectUnit],\n );\n\n useEffect(() => {\n if (!selected || onSelectUnit == null) return;\n // In case we haven't set the position of the unit (if we don't have a target), set the selected unit\n onSelectUnit(unit, ref.current, null);\n\n // Scroll the unit into view\n ref.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"nearest\",\n });\n }, [selected, onSelectUnit]);\n\n return [ref, selected, onClick];\n}\n\nexport function UnitKeyboardNavigation<T extends BaseUnit>({\n units,\n}: {\n units: T[];\n}) {\n const selectedUnit = useSelectedUnit();\n const selectUnit = useUnitSelectionDispatch();\n\n const ix = units.findIndex((unit) => unit.unit_id === selectedUnit?.unit_id);\n\n const keyMap = {\n 38: ix - 1,\n 40: ix + 1,\n };\n\n useKeyHandler(\n (event) => {\n const nextIx = keyMap[event.keyCode];\n if (nextIx == null || nextIx < 0 || nextIx >= units.length) return;\n selectUnit(units[nextIx], null, null);\n event.stopPropagation();\n },\n [units, ix],\n );\n return null;\n}\n"],"names":["$TyplV$macrostrathyper","useKeyHandler","$TyplV$useKeyHandler","createContext","$TyplV$createContext","useContext","$TyplV$useContext","useState","$TyplV$useState","useEffect","$TyplV$useEffect","useRef","$TyplV$useRef","useCallback","$TyplV$useCallback","useStore","$TyplV$useStore","createStore","$TyplV$createStore","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$f7d31510668965d8$exports","$f7d31510668965d8$export$77a278d5ca56e309","$f7d31510668965d8$export$b220b1d3591dc9e5","$f7d31510668965d8$export$f0dd93f90aa8e5da","$f7d31510668965d8$export$f19d75b1d4b676a4","$f7d31510668965d8$export$cbbec12b1451fe7d","$f7d31510668965d8$export$70f5ee19650fc7d1","$f7d31510668965d8$var$UnitSelectionContext","store","state","onUnitSelected","selector","selectedUnitData","props","selectedUnit","overlayPosition","setSelectedUnit","unit_id","unit","target","event","el","columnRef","current","onClickedColumn","columnClickData","unitID","height","getBoundingClientRect","rect","targetRect","x","left","y","top","width","units","unitData","find","u","setState","Provider","value","children","ref","onSelectUnit","selected","onClick","evt","stopPropagation","scrollIntoView","behavior","block","inline","selectUnit","ix","findIndex","keyMap","nextIx","keyCode","length","useUnitSelectionDispatch","useUnitSelectionStore","useSelectedUnit","UnitSelectionProvider","useUnitSelectionTarget","UnitKeyboardNavigation"],"version":3,"file":"column-views.3eeac38d.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.755f726e.js";import"./column-views.33752461.js";import"./column-views.8cfed88b.js";import{ColumnAxisType as e}from"@macrostrat/column-components";import{useMemo as t}from"react";function r(e,t,r,o){Object.defineProperty(e,t,{get:r,set:o,enumerable:!0,configurable:!0})}var o,n=globalThis,a={},i={},s=n.parcelRequirea149;null==s&&((s=function(e){if(e in a)return a[e].exports;if(e in i){var t=i[e];delete i[e];var r={id:e,exports:{}};return a[e]=r,t.call(r.exports,r,r.exports),r.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){i[e]=t},n.parcelRequirea149=s),s.register;var c={};r(c,"MergeSectionsMode",()=>u),r(c,"usePreparedColumnUnits",()=>g),r(c,"prepareColumnUnits",()=>b),r(c,"preprocessUnits",()=>s("ickj2").preprocessUnits),r(c,"groupUnitsIntoSections",()=>s("ickj2").groupUnitsIntoSections);var p=s("ickj2"),l=s("bBAza"),f=s("iWhRv"),u=((o={}).ALL="all",o.OVERLAPPING="overlapping",o);function g(e,r){return t(()=>b(e,r),[e,...Object.values(r)])}function b(t,r){let o,{t_age:n,b_age:a,mergeSections:i="overlapping",axisType:s,unconformityHeight:c,collapseSmallUnconformities:u=!1}=r,g=t.filter(e=>(0,f.agesOverlap)(e,{t_age:n,b_age:a}));if("all"==i&&s!=e.ORDINAL){let[e,t]=(0,p.getSectionAgeRange)(g);o=[{section_id:0,t_age:n??t,b_age:a??e,units:g}]}else o=(0,p.groupUnitsIntoSections)(g,s);let b=o;"overlapping"==i&&s!=e.ORDINAL&&(b=(0,p.mergeOverlappingSections)(b)),b=(b=b.filter(e=>null!=e)).map(e=>{let{t_age:t,b_age:o}=e;return{...e,t_age:Math.max(t,r.t_age??-1/0),b_age:Math.min(o,r.b_age??1/0)}});let m=(0,l.computeSectionHeights)(b,r);if(u){let e=c??30;"number"==typeof u&&(e=u),m=(0,l.collapseUnconformitiesByPixelHeight)(m,e,r)}let{totalHeight:$,sections:d}=(0,l.finalizeSectionHeights)(m,c),_=d.map(e=>({...e,units:(0,p.preprocessUnits)(e,s)}));return{units:_.reduce((e,t)=>{let{units:r}=t;for(let t of r)e.push(t);return e},[]),totalHeight:$,sections:_}}Object.keys(f).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(c,e)||Object.defineProperty(c,e,{enumerable:!0,get:function(){return f[e]}})});export{u as MergeSectionsMode,g as usePreparedColumnUnits,b as prepareColumnUnits,$57278f42f24b59e5$export$55543e159517d62d as preprocessUnits,$57278f42f24b59e5$export$dfbd00399d639b4c as groupUnitsIntoSections,$f811753598b339f3$export$f1a15f539858307 as unitsOverlap,$f811753598b339f3$export$70e712e2ac0237a as getUnitHeightRange,$f811753598b339f3$export$d92a67740c050efb as agesOverlap,$f811753598b339f3$export$ab14c04795685c55 as createUnitSorter,$f811753598b339f3$export$d0c8ecbd4ed8940c as ensureArray,$f811753598b339f3$export$97de5b0a6b4e4dac as ensureRealFloat};
2
- //# sourceMappingURL=column-views.45168c80.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,Q,kB,C,K,+B,A,Q,W,C,K,O,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,ICgCY,E,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,oB,I,G,E,E,yB,I,G,E,E,qB,I,G,E,E,kB,I,A,E,S,e,E,E,E,yB,I,A,E,S,sB,E,I,E,E,S,E,E,S,E,E,SAAA,G,CAAA,E,C,G,G,C,M,E,W,C,cAAA,GAUL,SAAS,EACd,CAAgB,CAChB,CAA6B,EAK7B,OAAO,AAAA,EAAQ,IACN,EAAmB,EAAM,GAC/B,CAAC,KAAS,OAAO,MAAM,CAAC,GAAS,CACtC,CAEO,SAAS,EACd,CAAiB,CACjB,CAA6B,EAI7B,IAeI,EAfE,CAAA,MACJ,CAAK,CAAA,MACL,CAAK,CAAA,cACL,EAAA,aAAA,CAAA,SACA,CAAQ,CAAA,mBACR,CAAkB,CAAA,4BAClB,EAA8B,CAAA,CAAA,CAC/B,CAAG,EAGA,EAAS,EAAM,MAAM,CAAC,AAAC,GAElB,AAAA,CAAA,EAAA,EAAA,WAAU,AAAV,EAAY,EAAG,CAAE,MAAA,EAAO,MAAA,CAAM,IAIvC,GACE,AAAA,OAAA,GACA,GAAY,AAAA,EAAe,OAAO,CAClC,CAEA,GAAM,CAAC,EAAY,EAAW,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,GACpD,EAAY,CACV,CACE,WAAY,EAIZ,MAAO,GAAS,EAChB,MAAO,GAAS,EAChB,MAAO,CACT,EACD,AACH,MACE,EAAY,AAAA,CAAA,EAAA,EAAA,sBAAqB,AAArB,EAAuB,EAAQ,GAO7C,IAAI,EAAW,CAEb,AAAA,CAAA,eAAA,GACA,GAAY,AAAA,EAAe,OAAO,EAElC,CAAA,EAAW,AAAA,CAAA,EAAA,EAAA,wBAAuB,AAAvB,EAAyB,EAJtC,EAYA,EAAW,AALX,CAAA,EAAW,EAAS,MAAM,CAAC,AAAC,GAAM,AAAK,MAAL,EAAlC,EAKoB,GAAG,CAAC,AAAC,IACvB,GAAM,CAAA,MAAE,CAAK,CAAA,MAAE,CAAK,CAAE,CAAG,EACzB,MAAO,CACL,GAAG,CAAO,CACV,MAAO,KAAK,GAAG,CAAC,EAAO,EAAQ,KAAK,EAAI,CAAC,KACzC,MAAO,KAAK,GAAG,CAAC,EAAO,EAAQ,KAAK,EAAI,IAC1C,CACF,GAMA,IAAI,EAAqB,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAAsB,EAAU,GAEzD,GAAI,EAAsC,CACxC,IAAI,EAAY,GAAsB,EAClC,AAAsC,CAAA,UAAtC,OAAO,GACT,CAAA,EAAY,CADd,EAIA,EAAqB,AAAA,CAAA,EAAA,EAAA,mCAAkC,AAAlC,EACnB,EACA,EACA,EAEJ,CAGA,GAAM,CAAA,YAAE,CAAW,CAAE,SAAU,CAAS,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,sBAAqB,AAArB,EAC3C,EACA,GAOI,EAAc,EAAU,GAAG,CAAC,AAAC,GAC1B,CAAA,CACL,GAAG,CAAO,CACV,MAAO,AAAA,CAAA,EAAA,EAAA,eAAc,AAAd,EAAgB,EAAS,EAClC,CAAA,GAeF,MAAO,CACL,MATa,EAAY,MAAM,CAAC,CAAC,EAAK,KACtC,GAAM,CAAA,MAAE,CAAK,CAAE,CAAG,EAClB,IAAK,IAAM,KAAQ,EACjB,EAAI,IAAI,CAAC,GAEX,OAAO,CACT,EAAG,EAAE,EAIH,YAAA,EACA,SAAU,CACZ,CACF,C,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,O,S,C,c,C,I,C,E,I,O,c,C,E,E,C,W,C,E,I,W,O,A,C,C,E,A,C,E,U,K,iB,C,K,sB,C,K,kB,C,6C,e,C,6C,sB,C,4C,Y,C,4C,kB,C,6C,W,C,6C,gB,C,6C,W,C,6C,e","sources":["<anon>","packages/column-views/src/prepare-units/index.ts"],"sourcesContent":["import \"./column-views.755f726e.js\";\nimport \"./column-views.33752461.js\";\nimport \"./column-views.8cfed88b.js\";\nimport {ColumnAxisType as $7dPhe$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {useMemo as $7dPhe$useMemo} from \"react\";\n\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $031426a894870747$exports = {};\n\n$parcel$export($031426a894870747$exports, \"MergeSectionsMode\", () => $031426a894870747$export$e1644389ce074058);\n$parcel$export($031426a894870747$exports, \"usePreparedColumnUnits\", () => $031426a894870747$export$206a0cb85295e433);\n$parcel$export($031426a894870747$exports, \"prepareColumnUnits\", () => $031426a894870747$export$be8c5a449df4bde4);\n$parcel$export($031426a894870747$exports, \"preprocessUnits\", () => (parcelRequire(\"ickj2\")).preprocessUnits);\n$parcel$export($031426a894870747$exports, \"groupUnitsIntoSections\", () => (parcelRequire(\"ickj2\")).groupUnitsIntoSections);\n\nvar $ickj2 = parcelRequire(\"ickj2\");\n\n\n\nvar $bBAza = parcelRequire(\"bBAza\");\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\nvar $031426a894870747$export$e1644389ce074058 = /*#__PURE__*/ function(MergeSectionsMode) {\n MergeSectionsMode[\"ALL\"] = \"all\";\n MergeSectionsMode[\"OVERLAPPING\"] = \"overlapping\";\n return MergeSectionsMode;\n}({});\nfunction $031426a894870747$export$206a0cb85295e433(data, options) {\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 */ return (0, $7dPhe$useMemo)(()=>{\n return $031426a894870747$export$be8c5a449df4bde4(data, options);\n }, [\n data,\n ...Object.values(options)\n ]);\n}\nfunction $031426a894870747$export$be8c5a449df4bde4(units, options) {\n /** Prepare units for rendering into Macrostrat columns */ const { t_age: t_age, b_age: b_age, mergeSections: mergeSections = \"overlapping\", axisType: axisType, unconformityHeight: unconformityHeight, collapseSmallUnconformities: collapseSmallUnconformities = false } = options;\n /** Prototype filtering to age range */ let units1 = units.filter((d)=>{\n // Filter units by t_age and b_age, inclusive\n return (0, $iWhRv.agesOverlap)(d, {\n t_age: t_age,\n b_age: b_age\n });\n });\n let sections0;\n if (mergeSections == \"all\" && axisType != (0, $7dPhe$ColumnAxisType).ORDINAL) {\n // For the \"merge sections\" mode, we need to create a single section\n const [b_unit_age, t_unit_age] = (0, $ickj2.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 * */ t_age: t_age ?? t_unit_age,\n b_age: b_age ?? b_unit_age,\n units: units1\n }\n ];\n } else sections0 = (0, $ickj2.groupUnitsIntoSections)(units1, axisType);\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 */ let sections = sections0;\n if (mergeSections == \"overlapping\" && axisType != (0, $7dPhe$ColumnAxisType).ORDINAL) sections = (0, $ickj2.mergeOverlappingSections)(sections);\n // Filter out undefined sections just in case\n sections = sections.filter((d)=>d != null);\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 */ sections = sections.map((section)=>{\n const { t_age: t_age, b_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 /* Compute pixel scales etc. for sections\n * We need to do this now to determine which unconformities\n * are small enough to collapse.\n */ let sectionsWithScales = (0, $bBAza.computeSectionHeights)(sections, options);\n if (collapseSmallUnconformities ?? false) {\n let threshold = unconformityHeight ?? 30;\n if (typeof collapseSmallUnconformities == \"number\") threshold = collapseSmallUnconformities;\n sectionsWithScales = (0, $bBAza.collapseUnconformitiesByPixelHeight)(sectionsWithScales, threshold, options);\n }\n /** Prepare section scale information using groups */ const { totalHeight: totalHeight, sections: sections2 } = (0, $bBAza.finalizeSectionHeights)(sectionsWithScales, unconformityHeight);\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 * */ const sectionsOut = sections2.map((section)=>{\n return {\n ...section,\n units: (0, $ickj2.preprocessUnits)(section, axisType)\n };\n });\n /** Reconstitute the units so that they are sorted by section and properly enhanced.\n * This is mostly important so that unit keyboard navigation\n * predictably selects adjacent units.\n */ const units2 = sectionsOut.reduce((acc, group)=>{\n const { units: units } = group;\n for (const unit of units)acc.push(unit);\n return acc;\n }, []);\n return {\n units: units2,\n totalHeight: totalHeight,\n sections: sectionsOut\n };\n}\n$parcel$exportWildcard($031426a894870747$exports, $iWhRv);\n\n\nexport {$031426a894870747$export$e1644389ce074058 as MergeSectionsMode, $031426a894870747$export$206a0cb85295e433 as usePreparedColumnUnits, $031426a894870747$export$be8c5a449df4bde4 as prepareColumnUnits, $57278f42f24b59e5$export$55543e159517d62d as preprocessUnits, $57278f42f24b59e5$export$dfbd00399d639b4c as groupUnitsIntoSections, $f811753598b339f3$export$f1a15f539858307 as unitsOverlap, $f811753598b339f3$export$70e712e2ac0237a as getUnitHeightRange, $f811753598b339f3$export$d92a67740c050efb as agesOverlap, $f811753598b339f3$export$ab14c04795685c55 as createUnitSorter, $f811753598b339f3$export$d0c8ecbd4ed8940c as ensureArray, $f811753598b339f3$export$97de5b0a6b4e4dac as ensureRealFloat};\n//# sourceMappingURL=column-views.45168c80.js.map\n","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, getUnitHeightRange, 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 /** 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 /** Reconstitute the units so that they are sorted by section and properly enhanced.\n * This is mostly important so that unit keyboard navigation\n * predictably selects adjacent units.\n */\n const units2 = sectionsOut.reduce((acc, group) => {\n const { units } = group;\n for (const unit of units) {\n acc.push(unit);\n }\n return acc;\n }, []);\n\n return {\n units: units2,\n totalHeight,\n sections: sectionsOut,\n };\n}\n"],"names":["ColumnAxisType","$7dPhe$ColumnAxisType","useMemo","$7dPhe$useMemo","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","MergeSectionsMode","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$031426a894870747$exports","$031426a894870747$export$e1644389ce074058","$031426a894870747$export$206a0cb85295e433","$031426a894870747$export$be8c5a449df4bde4","preprocessUnits","groupUnitsIntoSections","$ickj2","$bBAza","$iWhRv","data","options","values","units","sections0","t_age","b_age","mergeSections","axisType","unconformityHeight","collapseSmallUnconformities","units1","filter","d","agesOverlap","ORDINAL","b_unit_age","t_unit_age","getSectionAgeRange","section_id","sections","mergeOverlappingSections","map","section","Math","max","Infinity","min","sectionsWithScales","computeSectionHeights","threshold","collapseUnconformitiesByPixelHeight","totalHeight","sections2","finalizeSectionHeights","sectionsOut","reduce","acc","group","unit","push","keys","forEach","key","prototype","hasOwnProperty","source","usePreparedColumnUnits","prepareColumnUnits","$57278f42f24b59e5$export$55543e159517d62d","$57278f42f24b59e5$export$dfbd00399d639b4c","$f811753598b339f3$export$f1a15f539858307","unitsOverlap","$f811753598b339f3$export$70e712e2ac0237a","getUnitHeightRange","$f811753598b339f3$export$d92a67740c050efb","$f811753598b339f3$export$ab14c04795685c55","createUnitSorter","$f811753598b339f3$export$d0c8ecbd4ed8940c","ensureArray","$f811753598b339f3$export$97de5b0a6b4e4dac","ensureRealFloat"],"version":3,"file":"column-views.45168c80.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.d6708353.js";import"./column-views.78d3f3c5.js";import"./column-views.6f7a432f.js";import e from"@macrostrat/hyper";import{ColumnAxisType as a,SVG as t,AgeAxis as s}from"@macrostrat/column-components";import"react";import{Parenthetical as i}from"@macrostrat/data-components";function r(e,a,t,s){Object.defineProperty(e,a,{get:t,set:s,enumerable:!0,configurable:!0})}var o=globalThis,l={},c={},n=o.parcelRequirea149;null==n&&((n=function(e){if(e in l)return l[e].exports;if(e in c){var a=c[e];delete c[e];var t={id:e,exports:{}};return l[e]=t,a.call(t.exports,t,t.exports),t.exports}var s=Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}).register=function(e,a){c[e]=a},o.parcelRequirea149=n),n.register;var u={};r(u,"VerticalAxisLabel",()=>f),r(u,"CompositeAgeAxis",()=>x),r(u,"CompositeAgeAxisCore",()=>A),r(u,"AgeCursor",()=>b);var m=n("6kMGl"),p=n("wtIgl"),g=n("iYfAq");let d=e.styled(m&&m.__esModule?m.default:m);function f(e){let{label:a="Age",unit:t="Ma",className:s,height:r}=e;return d("div.column-axis-label.age-axis-label",{className:s,style:{height:r}},[a," ",d.if(t)(i,{className:"age-axis-unit"},t)])}function x(){let{axisType:e,sections:a,totalHeight:t}=(0,p.useMacrostratColumnData)();return d(A,{axisType:e,packages:a.map(e=>({key:`section-${e.section_id}`,...e.scaleInfo})),totalHeight:t})}function A(e){let{axisType:i,totalHeight:r,packages:o}=e;if(i==a.ORDINAL)return null;let l="Age",c="Ma";return i==a.DEPTH?(l="Depth",c="m"):i==a.HEIGHT&&(l="Height",c="m"),d([d(f,{label:l,unit:c,height:r}),d(t,{className:"age-axis-column",style:{width:"22px",height:`${r}px`},width:22,height:r},o.map((e,a)=>{let{key:t,scale:i}=e;return d(s,{key:t,className:"age-axis",scale:i,tickSizeOuter:3})}))])}function b({age:e}){let a=(0,p.useCompositeScale)()(e);return(console.log(e,a),null==e||null==a)?null:d("div.age-cursor",{style:{top:a}},[d("div.line"),d(g.AgeLabel,{age:e,className:"label"})])}export{f as VerticalAxisLabel,x as CompositeAgeAxis,A as CompositeAgeAxisCore,b as AgeCursor};
2
- //# sourceMappingURL=column-views.4ca62e5d.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,kB,C,C,O,C,C,W,C,K,+B,A,O,O,A,Q,iB,C,K,6B,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,oB,I,G,E,E,mB,I,G,E,E,uB,I,G,E,E,Y,I,G,I,E,E,S,E,E,S,E,E,SCeA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAehB,SAAS,EAAkB,CAAK,EACrC,GAAM,CAAA,MAAE,EAAQ,KAAA,CAAA,KAAO,EAAO,IAAA,CAAA,UAAM,CAAS,CAAA,OAAE,CAAM,CAAE,CAAG,EAC1D,OAAO,EACL,uCACA,CAAE,UAAA,EAAW,MAAO,CAAE,OAAA,CAAO,CAAE,EAC/B,CACE,EACA,IACA,EAAE,EAAE,CAAC,GAAM,EAAe,CAAE,UAAW,eAAgB,EAAG,GAC3D,CAEL,CAEO,SAAS,IACd,GAAM,CAAA,SAAE,CAAQ,CAAA,SAAE,CAAQ,CAAA,YAAE,CAAW,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IAS5C,OAAO,EAAE,EAAsB,CAC7B,SAAA,EACA,SATe,EAAS,GAAG,CAAC,AAAC,GACtB,CAAA,CACL,IAAK,CAAC,QAAQ,EAAE,EAAQ,UAAU,CAAA,CAAE,CACpC,GAAG,EAAQ,SAAS,AACtB,CAAA,GAMA,YAAA,CACF,EACF,CAQO,SAAS,EAAqB,CAAsC,EACzE,GAAM,CAAA,SAAE,CAAQ,CAAA,YAAE,CAAW,CAAA,SAAE,CAAQ,CAAE,CAAG,EAE5C,GAAI,GAAY,AAAA,EAAe,OAAO,CACpC,OAAO,KAGT,IAAI,EAAoB,MACpB,EAAW,KASf,OARI,GAAY,AAAA,EAAe,KAAK,EAClC,EAAY,QACZ,EAAW,KACF,GAAY,AAAA,EAAe,MAAM,GAC1C,EAAY,SACZ,EAAW,KAGN,EAAE,CACP,EAAE,EAAmB,CACnB,MAAO,EACP,KAAM,EACN,OAAQ,CACV,GACA,EACE,EACA,CACE,UAAW,kBACX,MAAO,CAAE,MAAO,OAAQ,OAAQ,CAAA,EAAG,EAAY,EAAE,CAAC,AAAC,EACnD,MAAO,GACP,OAAQ,CACV,EACA,EAAS,GAAG,CAAC,CAAC,EAAO,KACnB,GAAM,CAAA,IAAE,CAAG,CAAA,MAAE,CAAK,CAAE,CAAG,EAEvB,OAAO,EAAE,EAAS,CAChB,IAAA,EACA,UAAW,WACX,MAAA,EACA,cAAe,CACjB,EACF,IAEH,CACH,CAEO,SAAS,EAAU,CAAA,IAAE,CAAG,CAAE,EAG/B,IAAM,EAAW,AADH,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IACS,SAIvB,CAFA,QAAQ,GAAG,CAAC,EAAK,GAEb,AAAO,MAAP,GAAe,AAAY,MAAZ,GACV,KAGF,EACL,iBACA,CACE,MAAO,CACL,IAAK,CACP,CACF,EACA,CAAC,EAAE,YAAa,EAAE,EAAA,QAAO,CAAG,CAAE,IAAA,EAAK,UAAW,OAAQ,GAAG,CAE7D,Q,K,iB,C,K,gB,C,K,oB,C,K,S","sources":["<anon>","packages/column-views/src/age-axis.ts"],"sourcesContent":["import \"./column-views.d6708353.js\";\nimport \"./column-views.78d3f3c5.js\";\nimport \"./column-views.6f7a432f.js\";\nimport $fXMLu$macrostrathyper from \"@macrostrat/hyper\";\nimport {ColumnContext as $fXMLu$ColumnContext, ColumnAxis as $fXMLu$ColumnAxis, ColumnAxisType as $fXMLu$ColumnAxisType, SVG as $fXMLu$SVG, AgeAxis as $fXMLu$AgeAxis} from \"@macrostrat/column-components\";\nimport {useContext as $fXMLu$useContext} from \"react\";\nimport {Parenthetical as $fXMLu$Parenthetical} from \"@macrostrat/data-components\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $1aa4ef695e55d51d$exports = {};\n\n$parcel$export($1aa4ef695e55d51d$exports, \"VerticalAxisLabel\", () => $1aa4ef695e55d51d$export$64204d5cbb3e8227);\n$parcel$export($1aa4ef695e55d51d$exports, \"CompositeAgeAxis\", () => $1aa4ef695e55d51d$export$40b6b0e4520eeb34);\n$parcel$export($1aa4ef695e55d51d$exports, \"CompositeAgeAxisCore\", () => $1aa4ef695e55d51d$export$ac30ca3cf5df959d);\n$parcel$export($1aa4ef695e55d51d$exports, \"AgeCursor\", () => $1aa4ef695e55d51d$export$20d84abfcfa68dfa);\n\n\n\n\nvar $6kMGl = parcelRequire(\"6kMGl\");\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\n\nvar $iYfAq = parcelRequire(\"iYfAq\");\nconst $1aa4ef695e55d51d$var$h = (0, $fXMLu$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($6kMGl))));\nconst $1aa4ef695e55d51d$var$AgeAxisCore = ({ ticks: ticks, tickSpacing: tickSpacing = 40, showDomain: showDomain = false })=>{\n const { pixelHeight: pixelHeight } = (0, $fXMLu$useContext)((0, $fXMLu$ColumnContext));\n // A tick roughly every 40 pixels\n let v = Math.max(Math.round(pixelHeight / tickSpacing), 1);\n return $1aa4ef695e55d51d$var$h(\"g.axis\", {\n transform: \"translate(20 0)\"\n }, [\n $1aa4ef695e55d51d$var$h((0, $fXMLu$ColumnAxis), {\n ticks: v,\n showDomain: showDomain\n })\n ]);\n};\nfunction $1aa4ef695e55d51d$export$64204d5cbb3e8227(props) {\n const { label: label = \"Age\", unit: unit = \"Ma\", className: className, height: height } = props;\n return $1aa4ef695e55d51d$var$h(\"div.column-axis-label.age-axis-label\", {\n className: className,\n style: {\n height: height\n }\n }, [\n label,\n \" \",\n $1aa4ef695e55d51d$var$h.if(unit)((0, $fXMLu$Parenthetical), {\n className: \"age-axis-unit\"\n }, unit)\n ]);\n}\nfunction $1aa4ef695e55d51d$export$40b6b0e4520eeb34() {\n const { axisType: axisType, sections: sections, totalHeight: totalHeight } = (0, $wtIgl.useMacrostratColumnData)();\n const packages = sections.map((section)=>{\n return {\n key: `section-${section.section_id}`,\n ...section.scaleInfo\n };\n });\n return $1aa4ef695e55d51d$var$h($1aa4ef695e55d51d$export$ac30ca3cf5df959d, {\n axisType: axisType,\n packages: packages,\n totalHeight: totalHeight\n });\n}\nfunction $1aa4ef695e55d51d$export$ac30ca3cf5df959d(props) {\n const { axisType: axisType, totalHeight: totalHeight, packages: packages } = props;\n if (axisType == (0, $fXMLu$ColumnAxisType).ORDINAL) return null;\n let axisLabel = \"Age\";\n let axisUnit = \"Ma\";\n if (axisType == (0, $fXMLu$ColumnAxisType).DEPTH) {\n axisLabel = \"Depth\";\n axisUnit = \"m\";\n } else if (axisType == (0, $fXMLu$ColumnAxisType).HEIGHT) {\n axisLabel = \"Height\";\n axisUnit = \"m\";\n }\n return $1aa4ef695e55d51d$var$h([\n $1aa4ef695e55d51d$var$h($1aa4ef695e55d51d$export$64204d5cbb3e8227, {\n label: axisLabel,\n unit: axisUnit,\n height: totalHeight\n }),\n $1aa4ef695e55d51d$var$h((0, $fXMLu$SVG), {\n className: \"age-axis-column\",\n style: {\n width: `22px`,\n height: `${totalHeight}px`\n },\n width: 22,\n height: totalHeight\n }, packages.map((group, i)=>{\n const { key: key, scale: scale } = group;\n return $1aa4ef695e55d51d$var$h((0, $fXMLu$AgeAxis), {\n key: key,\n className: \"age-axis\",\n scale: scale,\n tickSizeOuter: 3\n });\n }))\n ]);\n}\nfunction $1aa4ef695e55d51d$export$20d84abfcfa68dfa({ age: age }) {\n /** A cursor that shows the age at a specific point on the age axis. */ const scale = (0, $wtIgl.useCompositeScale)();\n const heightPx = scale(age);\n console.log(age, heightPx);\n if (age == null || heightPx == null) return null;\n return $1aa4ef695e55d51d$var$h(\"div.age-cursor\", {\n style: {\n top: heightPx\n }\n }, [\n $1aa4ef695e55d51d$var$h(\"div.line\"),\n $1aa4ef695e55d51d$var$h((0, $iYfAq.AgeLabel), {\n age: age,\n className: \"label\"\n })\n ]);\n}\n\n\nexport {$1aa4ef695e55d51d$export$64204d5cbb3e8227 as VerticalAxisLabel, $1aa4ef695e55d51d$export$40b6b0e4520eeb34 as CompositeAgeAxis, $1aa4ef695e55d51d$export$ac30ca3cf5df959d as CompositeAgeAxisCore, $1aa4ef695e55d51d$export$20d84abfcfa68dfa as AgeCursor};\n//# sourceMappingURL=column-views.4ca62e5d.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport {\n SVG,\n ColumnAxis,\n ColumnContext,\n ColumnAxisType,\n AgeAxis,\n} from \"@macrostrat/column-components\";\nimport { useContext } from \"react\";\nimport styles from \"./age-axis.module.sass\";\nimport { useCompositeScale, useMacrostratColumnData } from \"./data-provider\";\nimport { Parenthetical } from \"@macrostrat/data-components\";\nimport { PackageScaleLayoutData } from \"./prepare-units/composite-scale\";\nimport { AgeLabel } from \"./unit-details\";\n\nconst h = hyper.styled(styles);\n\nconst AgeAxisCore = ({ ticks, tickSpacing = 40, showDomain = false }) => {\n const { pixelHeight } = useContext(ColumnContext);\n // A tick roughly every 40 pixels\n let v = Math.max(Math.round(pixelHeight / tickSpacing), 1);\n\n return h(\"g.axis\", { transform: \"translate(20 0)\" }, [\n h(ColumnAxis, {\n ticks: v,\n showDomain,\n }),\n ]);\n};\n\nexport function VerticalAxisLabel(props) {\n const { label = \"Age\", unit = \"Ma\", className, height } = props;\n return h(\n \"div.column-axis-label.age-axis-label\",\n { className, style: { height } },\n [\n label,\n \" \",\n h.if(unit)(Parenthetical, { className: \"age-axis-unit\" }, unit),\n ],\n );\n}\n\nexport function CompositeAgeAxis() {\n const { axisType, sections, totalHeight } = useMacrostratColumnData();\n\n const packages = sections.map((section) => {\n return {\n key: `section-${section.section_id}`,\n ...section.scaleInfo,\n };\n });\n\n return h(CompositeAgeAxisCore, {\n axisType,\n packages,\n totalHeight,\n });\n}\n\nexport interface CompositeStratigraphicScaleInfo {\n axisType: ColumnAxisType;\n totalHeight: number;\n packages: PackageScaleLayoutData[];\n}\n\nexport function CompositeAgeAxisCore(props: CompositeStratigraphicScaleInfo) {\n const { axisType, totalHeight, packages } = props;\n\n if (axisType == ColumnAxisType.ORDINAL) {\n return null;\n }\n\n let axisLabel: string = \"Age\";\n let axisUnit = \"Ma\";\n if (axisType == ColumnAxisType.DEPTH) {\n axisLabel = \"Depth\";\n axisUnit = \"m\";\n } else if (axisType == ColumnAxisType.HEIGHT) {\n axisLabel = \"Height\";\n axisUnit = \"m\";\n }\n\n return h([\n h(VerticalAxisLabel, {\n label: axisLabel,\n unit: axisUnit,\n height: totalHeight,\n }),\n h(\n SVG,\n {\n className: \"age-axis-column\",\n style: { width: `22px`, height: `${totalHeight}px` },\n width: 22,\n height: totalHeight,\n },\n packages.map((group, i) => {\n const { key, scale } = group;\n\n return h(AgeAxis, {\n key,\n className: \"age-axis\",\n scale,\n tickSizeOuter: 3,\n });\n }),\n ),\n ]);\n}\n\nexport function AgeCursor({ age }) {\n /** A cursor that shows the age at a specific point on the age axis. */\n const scale = useCompositeScale();\n const heightPx = scale(age);\n\n console.log(age, heightPx);\n\n if (age == null || heightPx == null) {\n return null;\n }\n\n return h(\n \"div.age-cursor\",\n {\n style: {\n top: heightPx,\n },\n },\n [h(\"div.line\"), h(AgeLabel, { age, className: \"label\" })],\n );\n}\n"],"names":["$fXMLu$macrostrathyper","ColumnAxisType","$fXMLu$ColumnAxisType","SVG","$fXMLu$SVG","AgeAxis","$fXMLu$AgeAxis","Parenthetical","$fXMLu$Parenthetical","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$1aa4ef695e55d51d$exports","$1aa4ef695e55d51d$export$64204d5cbb3e8227","$1aa4ef695e55d51d$export$40b6b0e4520eeb34","$1aa4ef695e55d51d$export$ac30ca3cf5df959d","$1aa4ef695e55d51d$export$20d84abfcfa68dfa","$6kMGl","$wtIgl","$iYfAq","$1aa4ef695e55d51d$var$h","styled","a","__esModule","default","props","label","unit","className","height","style","if","axisType","sections","totalHeight","useMacrostratColumnData","packages","map","section","key","section_id","scaleInfo","ORDINAL","axisLabel","axisUnit","DEPTH","HEIGHT","width","group","i","scale","tickSizeOuter","age","heightPx","useCompositeScale","console","log","top","AgeLabel","VerticalAxisLabel","CompositeAgeAxis","CompositeAgeAxisCore","AgeCursor"],"version":3,"file":"column-views.4ca62e5d.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- function e(e,t,n,i){Object.defineProperty(e,t,{get:n,set:i,enumerable:!0,configurable:!0})}var t,n,i,a,r,U,o,d,s,c,l,D,G,X,_,p,u,b,f,h,g={};e(g,"clickable",()=>t,e=>t=e),e(g,"color-swatch",()=>n,e=>n=e),e(g,"discourage-break",()=>i,e=>i=e),e(g,"hidden-actions",()=>a,e=>a=e),e(g,"hidden-actions-container",()=>r,e=>r=e),e(g,"identifier",()=>U,e=>U=e),e(g,"interval-proportions",()=>o,e=>o=e),e(g,"legend-panel-header",()=>d,e=>d=e),e(g,"no-units",()=>s,e=>s=e),e(g,"proportion",()=>c,e=>c=e),e(g,"refs",()=>l,e=>l=e),e(g,"sep",()=>D,e=>D=e),e(g,"spacer",()=>G,e=>G=e),e(g,"strat-name-id",()=>X,e=>X=e),e(g,"strat-name-text",()=>_,e=>_=e),e(g,"title-container",()=>p,e=>p=e),e(g,"unit-details-content",()=>u,e=>u=e),e(g,"unit-details-content-holder",()=>b,e=>b=e),e(g,"unit-details-panel",()=>f,e=>f=e),e(g,"unit-id",()=>h,e=>h=e),t="XUD4UG_clickable",n="XUD4UG_color-swatch",i="XUD4UG_discourage-break",a="XUD4UG_hidden-actions",r="XUD4UG_hidden-actions-container",U="XUD4UG_identifier",o="XUD4UG_interval-proportions",d="XUD4UG_legend-panel-header",s="XUD4UG_no-units",c="XUD4UG_proportion",l="XUD4UG_refs",D="XUD4UG_sep",G="XUD4UG_spacer",X="XUD4UG_strat-name-id",_="XUD4UG_strat-name-text",p="XUD4UG_title-container",u="XUD4UG_unit-details-content",b="XUD4UG_unit-details-content-holder",f="XUD4UG_unit-details-panel",h="XUD4UG_unit-id";export{g as default};
2
- //# sourceMappingURL=column-views.6ae7bb69.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,ICAA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,E,E,C,E,E,E,Y,I,E,A,G,E,G,E,E,e,I,E,A,G,E,G,E,E,mB,I,E,A,G,E,G,E,E,iB,I,E,A,G,E,G,E,E,2B,I,E,A,G,E,G,E,E,a,I,E,A,G,E,G,E,E,uB,I,E,A,G,E,G,E,E,sB,I,E,A,G,E,G,E,E,W,I,E,A,G,E,G,E,E,a,I,E,A,G,E,G,E,E,O,I,E,A,G,E,G,E,E,M,I,E,A,G,E,G,E,E,S,I,E,A,G,E,G,E,E,gB,I,E,A,G,E,G,E,E,kB,I,E,A,G,E,G,E,E,kB,I,E,A,G,E,G,E,E,uB,I,E,A,G,E,G,E,E,8B,I,E,A,G,E,G,E,E,qB,I,E,A,G,E,G,E,E,U,I,E,A,G,E,GAnBA,EAA8B,mBAC9B,EAAiC,sBACjC,EAAqC,0BACrC,EAAmC,wBACnC,EAA6C,kCAC7C,EAA+B,oBAC/B,EAAyC,8BACzC,EAAwC,6BACxC,EAA6B,kBAC7B,EAA+B,oBAC/B,EAAyB,cACzB,EAAwB,aACxB,EAA2B,gBAC3B,EAAkC,uBAClC,EAAoC,yBACpC,EAAoC,yBACpC,EAAyC,8BACzC,EAAgD,qCAChD,EAAuC,4BACvC,EAA4B,wB,K,O","sources":["<anon>","packages/column-views/src/unit-details/panel.module.sass"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $fdcbde10b14fc2b9$exports = {};\n\n$parcel$export($fdcbde10b14fc2b9$exports, \"clickable\", () => $fdcbde10b14fc2b9$export$60d5655c6babb2a0, (v) => $fdcbde10b14fc2b9$export$60d5655c6babb2a0 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"color-swatch\", () => $fdcbde10b14fc2b9$export$def51519e6441a17, (v) => $fdcbde10b14fc2b9$export$def51519e6441a17 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"discourage-break\", () => $fdcbde10b14fc2b9$export$46755bac45eea0a4, (v) => $fdcbde10b14fc2b9$export$46755bac45eea0a4 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"hidden-actions\", () => $fdcbde10b14fc2b9$export$b36b9e25cc36a950, (v) => $fdcbde10b14fc2b9$export$b36b9e25cc36a950 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"hidden-actions-container\", () => $fdcbde10b14fc2b9$export$76ccfd847a96b3a0, (v) => $fdcbde10b14fc2b9$export$76ccfd847a96b3a0 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"identifier\", () => $fdcbde10b14fc2b9$export$c2ab62c7bf24634, (v) => $fdcbde10b14fc2b9$export$c2ab62c7bf24634 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"interval-proportions\", () => $fdcbde10b14fc2b9$export$ff33e8e065b5d268, (v) => $fdcbde10b14fc2b9$export$ff33e8e065b5d268 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"legend-panel-header\", () => $fdcbde10b14fc2b9$export$ce652ed9af8e3365, (v) => $fdcbde10b14fc2b9$export$ce652ed9af8e3365 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"no-units\", () => $fdcbde10b14fc2b9$export$aff88130074c0d5f, (v) => $fdcbde10b14fc2b9$export$aff88130074c0d5f = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"proportion\", () => $fdcbde10b14fc2b9$export$5a14da41381fe262, (v) => $fdcbde10b14fc2b9$export$5a14da41381fe262 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"refs\", () => $fdcbde10b14fc2b9$export$21666b427502ea6d, (v) => $fdcbde10b14fc2b9$export$21666b427502ea6d = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"sep\", () => $fdcbde10b14fc2b9$export$5aee1a5bd9743d8f, (v) => $fdcbde10b14fc2b9$export$5aee1a5bd9743d8f = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"spacer\", () => $fdcbde10b14fc2b9$export$8cc075c801fd6817, (v) => $fdcbde10b14fc2b9$export$8cc075c801fd6817 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"strat-name-id\", () => $fdcbde10b14fc2b9$export$3ab27000c02e6186, (v) => $fdcbde10b14fc2b9$export$3ab27000c02e6186 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"strat-name-text\", () => $fdcbde10b14fc2b9$export$8c87307ec8883986, (v) => $fdcbde10b14fc2b9$export$8c87307ec8883986 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"title-container\", () => $fdcbde10b14fc2b9$export$8a49b8d8484a58d8, (v) => $fdcbde10b14fc2b9$export$8a49b8d8484a58d8 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"unit-details-content\", () => $fdcbde10b14fc2b9$export$1c30616b5f94c6bc, (v) => $fdcbde10b14fc2b9$export$1c30616b5f94c6bc = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"unit-details-content-holder\", () => $fdcbde10b14fc2b9$export$1dcba08cee5317f8, (v) => $fdcbde10b14fc2b9$export$1dcba08cee5317f8 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"unit-details-panel\", () => $fdcbde10b14fc2b9$export$f94e3d1eb82ee550, (v) => $fdcbde10b14fc2b9$export$f94e3d1eb82ee550 = v);\n$parcel$export($fdcbde10b14fc2b9$exports, \"unit-id\", () => $fdcbde10b14fc2b9$export$e22f189945dfce76, (v) => $fdcbde10b14fc2b9$export$e22f189945dfce76 = v);\nvar $fdcbde10b14fc2b9$export$60d5655c6babb2a0;\nvar $fdcbde10b14fc2b9$export$def51519e6441a17;\nvar $fdcbde10b14fc2b9$export$46755bac45eea0a4;\nvar $fdcbde10b14fc2b9$export$b36b9e25cc36a950;\nvar $fdcbde10b14fc2b9$export$76ccfd847a96b3a0;\nvar $fdcbde10b14fc2b9$export$c2ab62c7bf24634;\nvar $fdcbde10b14fc2b9$export$ff33e8e065b5d268;\nvar $fdcbde10b14fc2b9$export$ce652ed9af8e3365;\nvar $fdcbde10b14fc2b9$export$aff88130074c0d5f;\nvar $fdcbde10b14fc2b9$export$5a14da41381fe262;\nvar $fdcbde10b14fc2b9$export$21666b427502ea6d;\nvar $fdcbde10b14fc2b9$export$5aee1a5bd9743d8f;\nvar $fdcbde10b14fc2b9$export$8cc075c801fd6817;\nvar $fdcbde10b14fc2b9$export$3ab27000c02e6186;\nvar $fdcbde10b14fc2b9$export$8c87307ec8883986;\nvar $fdcbde10b14fc2b9$export$8a49b8d8484a58d8;\nvar $fdcbde10b14fc2b9$export$1c30616b5f94c6bc;\nvar $fdcbde10b14fc2b9$export$1dcba08cee5317f8;\nvar $fdcbde10b14fc2b9$export$f94e3d1eb82ee550;\nvar $fdcbde10b14fc2b9$export$e22f189945dfce76;\n$fdcbde10b14fc2b9$export$60d5655c6babb2a0 = `XUD4UG_clickable`;\n$fdcbde10b14fc2b9$export$def51519e6441a17 = `XUD4UG_color-swatch`;\n$fdcbde10b14fc2b9$export$46755bac45eea0a4 = `XUD4UG_discourage-break`;\n$fdcbde10b14fc2b9$export$b36b9e25cc36a950 = `XUD4UG_hidden-actions`;\n$fdcbde10b14fc2b9$export$76ccfd847a96b3a0 = `XUD4UG_hidden-actions-container`;\n$fdcbde10b14fc2b9$export$c2ab62c7bf24634 = `XUD4UG_identifier`;\n$fdcbde10b14fc2b9$export$ff33e8e065b5d268 = `XUD4UG_interval-proportions`;\n$fdcbde10b14fc2b9$export$ce652ed9af8e3365 = `XUD4UG_legend-panel-header`;\n$fdcbde10b14fc2b9$export$aff88130074c0d5f = `XUD4UG_no-units`;\n$fdcbde10b14fc2b9$export$5a14da41381fe262 = `XUD4UG_proportion`;\n$fdcbde10b14fc2b9$export$21666b427502ea6d = `XUD4UG_refs`;\n$fdcbde10b14fc2b9$export$5aee1a5bd9743d8f = `XUD4UG_sep`;\n$fdcbde10b14fc2b9$export$8cc075c801fd6817 = `XUD4UG_spacer`;\n$fdcbde10b14fc2b9$export$3ab27000c02e6186 = `XUD4UG_strat-name-id`;\n$fdcbde10b14fc2b9$export$8c87307ec8883986 = `XUD4UG_strat-name-text`;\n$fdcbde10b14fc2b9$export$8a49b8d8484a58d8 = `XUD4UG_title-container`;\n$fdcbde10b14fc2b9$export$1c30616b5f94c6bc = `XUD4UG_unit-details-content`;\n$fdcbde10b14fc2b9$export$1dcba08cee5317f8 = `XUD4UG_unit-details-content-holder`;\n$fdcbde10b14fc2b9$export$f94e3d1eb82ee550 = `XUD4UG_unit-details-panel`;\n$fdcbde10b14fc2b9$export$e22f189945dfce76 = `XUD4UG_unit-id`;\n\n\nexport {$fdcbde10b14fc2b9$exports as default};\n//# sourceMappingURL=column-views.6ae7bb69.js.map\n",null],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$fdcbde10b14fc2b9$export$60d5655c6babb2a0","$fdcbde10b14fc2b9$export$def51519e6441a17","$fdcbde10b14fc2b9$export$46755bac45eea0a4","$fdcbde10b14fc2b9$export$b36b9e25cc36a950","$fdcbde10b14fc2b9$export$76ccfd847a96b3a0","$fdcbde10b14fc2b9$export$c2ab62c7bf24634","$fdcbde10b14fc2b9$export$ff33e8e065b5d268","$fdcbde10b14fc2b9$export$ce652ed9af8e3365","$fdcbde10b14fc2b9$export$aff88130074c0d5f","$fdcbde10b14fc2b9$export$5a14da41381fe262","$fdcbde10b14fc2b9$export$21666b427502ea6d","$fdcbde10b14fc2b9$export$5aee1a5bd9743d8f","$fdcbde10b14fc2b9$export$8cc075c801fd6817","$fdcbde10b14fc2b9$export$3ab27000c02e6186","$fdcbde10b14fc2b9$export$8c87307ec8883986","$fdcbde10b14fc2b9$export$8a49b8d8484a58d8","$fdcbde10b14fc2b9$export$1c30616b5f94c6bc","$fdcbde10b14fc2b9$export$1dcba08cee5317f8","$fdcbde10b14fc2b9$export$f94e3d1eb82ee550","$fdcbde10b14fc2b9$export$e22f189945dfce76","$fdcbde10b14fc2b9$exports","default"],"version":3,"file":"column-views.6ae7bb69.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.6ae7bb69.js";import"./column-views.9de31cdb.js";import"./column-views.2e4e357d.js";import e from"@macrostrat/hyper";import{JSONView as t}from"@macrostrat/ui-components";import{Button as n,ButtonGroup as a}from"@blueprintjs/core";import{useState as i,useMemo as l}from"react";import{LithologyTagFeature as o,DataField as r,Parenthetical as s,Value as u,LithologyList as c,EnvironmentsList as m,ItemList as d,IntervalTag as p}from"@macrostrat/data-components";import f from"classnames";function g(e,t,n,a){Object.defineProperty(e,t,{get:n,set:a,enumerable:!0,configurable:!0})}var _,b=globalThis,h={},v={},k=b.parcelRequirea149;null==k&&((k=function(e){if(e in h)return h[e].exports;if(e in v){var t=v[e];delete v[e];var n={id:e,exports:{}};return h[e]=n,t.call(n.exports,n,n.exports),n.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,t){v[e]=t},b.parcelRequirea149=k),k.register;var y={};g(y,"UnitDetailsPanel",()=>$),g(y,"LegendPanelHeader",()=>N),g(y,"UnitDetailsFeature",()=>U),g(y,"Duration",()=>A),g(y,"ReferencesField",()=>w),g(y,"Identifier",()=>P),g(y,"AgeLabel",()=>H);var F=k("lMX1H"),x=k("lgTAP"),D=k("jiUaC");let C=e.styled(F&&F.__esModule?F.default:F);function $({unit:e,onClose:a,className:l,features:o=new Set(["adjacent-units","outcrop-type","json-toggle","depth-range"]),lithologyFeatures:r,actions:s,selectUnit:u,columnUnits:c,onClickItem:m}){let[d,p]=i(!1),g=null;g=d?C(t,{data:e,showRoot:!1}):C(j,{unit:e,features:o,lithologyFeatures:r,onClickItem:m});let _=(0,D.defaultNameFunction)(e),b=null;return o.has("json-toggle")&&(b=C(n,{icon:"code",small:!0,minimal:!0,key:"json-view-toggle",className:f("json-view-toggle",{enabled:p}),onClick(e){p(!d),e.stopPropagation()}})),C("div.unit-details-panel",{className:l},[C(N,{onClose:a,title:_,id:e.unit_id,actions:s,hiddenActions:b}),C("div.unit-details-content-holder",g)])}function N({title:e,id:t,onClose:i,actions:l=null,hiddenActions:o}){return C("header.legend-panel-header",[C("div.title-container",[C.if(null!=e)("h3",e),C.if(null!=o||null!=t)("span.hidden-actions-container",C("div.hidden-actions",[C.if(null!=t)("code.unit-id",t),C.if(null!=o)([o])]))]),C("div.spacer"),C.if(null!=l)(a,{minimal:!0},l),C.if(null!=i)(n,{icon:"cross",minimal:!0,small:!0,onClick(){i()}})])}var U=((_={}).AdjacentUnits="adjacent-units",_.Color="color",_.OutcropType="outcrop-type",_.JSONToggle="json-toggle",_.DepthRange="depth-range",_);function j({unit:e,selectUnit:t,columnUnits:n,lithologyFeatures:a=new Set([o.Proportion,o.Attributes]),features:i=new Set(["adjacent-units","outcrop-type"]),onClickItem:d,getItemHref:p}){var f,g,_,b,h;let v,k,y,F=(0,x.useMacrostratDefs)("lithologies"),D=(0,x.useMacrostratDefs)("environments"),$=(f=e.environ,g=D,f.map(e=>({...g?.get(e.environ_id)??{},...e}))),N=(_=e.lith??[],b=F,_.map(e=>({...b?.get(e.lith_id)??{},...e})));l(()=>{let e=new Map;for(let t of n??[])e.set(t.unit_id,t);return e},[n]);let U=null;if(i.has("outcrop-type")){let t=e.outcrop;"both"==t&&(t="surface and subsurface"),U=C(r,{label:"Outcrop",value:t})}let j=null,[I,L]=(v=(h=e).min_thick??0,k=h.max_thick??h.min_thick??0,y="m",0==v&&0==k?["Unknown",null]:(v<.8&&k<1.2?(v*=100,k*=100,y="cm"):v>800&&k>1200&&(v/=1e3,k/=1e3,y="km"),v==k)?[G(v),y]:[E(v,k),y]);i.has("depth-range")&&null!=e.t_pos&&null!=e.b_pos&&e.min_thick==e.max_thick&&0!=e.min_thick&&(j=C(r,{unit:"m",label:e.t_pos<e.b_pos?"Depth":"Height",value:E(e.b_pos,e.t_pos),children:C(s,C(u,{value:I,unit:L}))})),j??(j=C(r,{label:"Thickness",value:I,unit:L}));let H=null;return"color"in e&&i.has("color")&&(H=C("div.color-swatch",{style:{backgroundColor:e.color}})),C("div.unit-details-content",[j,C(c,{label:"Lithology",lithologies:N,features:a,getItemHref:p,onClickItem:d}),C(M,{unit:e},[C(s,C(A,{value:e.b_age-e.t_age})),C(O,{unit:e,onClickItem:d})]),C(m,{environments:$,onClickItem:d,getItemHref:p}),C.if(null!=e.strat_name_id)(S,{strat_name_id:e.strat_name_id}),U,C.if(i.has("adjacent-units"))([C(r,{label:"Above"},C(R,{units:e.units_above,selectUnit:t})),C(r,{label:"Below"},C(R,{units:e.units_below,selectUnit:t}))]),H,C(w,{refs:e.refs,inline:!0})])}function w({refs:e,className:t=null,...n}){return null==e||0===e.length?null:C(r,{label:"Source",className:f("refs-field",t),...n},C(I,{refs:e}))}function S({strat_name_id:e,onClickItem:t}){let n=l(()=>[e],[e]),a=(0,x.useMacrostratData)("strat_names",n),i=a?.[0],o=C(P,{id:e}),s=i?.strat_name_long;null!=s&&(o=C("span.strat-name",s));let u=null!=t,c=f({clickable:u});return C(r,{label:"Stratigraphic name"},C(u?"a":"span",{className:c,onClick:n=>t(n,{strat_name_id:e})},o))}function I({refs:e}){let t=(0,x.useMacrostratData)("refs",e);return null==t||0===t.length?null:1==t.length?C(L,{data:t[0],tag:"span",key:t[0].ref_id}):C("ul.refs",t.map((e,t)=>C(L,{data:e,tag:"li",key:e.ref_id})))}function L({data:e,tag:t="p"}){return C(t,{className:"citation"},[C("span.authors",e.author),", ",C("span.year",e.pub_year),", ",C("span.title",e.ref)])}function M({unit:e,children:t}){var n;let a,i,l,[o,s,u]=(a=(n=e).b_age,i=n.t_age,l="Ma",a<.8&&i<1.2?(a*=1e3,i*=1e3,l="ka"):a>800&&i>1200&&(a/=1e3,i/=1e3,l="Ga"),[a,i,l]);return C(r,{label:"Age",value:E(o,s),unit:u},t)}function H({age:e,maximumFractionDigits:t=2,minimumFractionDigits:n=0,className:a}){var i;let l,[o,r]=(l="Ma",(i=e)<.8?(l="ka",(i*=1e3)<5&&(l="yr",i*=1e3)):i>1e3&&(l="Ga",i/=1e3),[i,l]);return C(u,{value:o.toLocaleString("en-US",{maximumFractionDigits:t,minimumFractionDigits:n}),unit:r,className:a})}function A({value:e,maximumFractionDigits:t=2,minimumFractionDigits:n=0}){let a="Myr";return e<.8?(a="kyr",(e*=1e3)<5&&(a="yr",e*=1e3)):e>1e3&&(a="Gyr",e/=1e3),C(u,{value:e.toLocaleString("en-US",{maximumFractionDigits:t,minimumFractionDigits:n}),unit:a})}function P({id:e,onClick:t,className:n}){return C(null!=t?"a":"span",{onClick(){t?.(e)},className:f("identifier",{clickable:null!=t},n)},e)}function R({units:e,selectUnit:t}){let n=e.filter(e=>0!=e);return 0===n.length?C("span.no-units","None"):C(d,{className:"unit-id-list"},n.map(e=>C(P,{className:"unit-id",onClick(){t?.(e)},key:e,id:e})))}function O({unit:e,onClickItem:t}){let n=e.b_int_id,a=e.t_int_id,i=e.b_prop??0,l=e.t_prop??1,o=(0,x.useMacrostratDefs)("intervals"),r={...o?.get(n)??{},id:n,name:e.b_int_name},s=null,u=o?.get(a)??{},c=C(T,{value:l});(n!==a||0!==i||1!==l)&&(s=C(T,{value:i})),n===a&&(0!==i||1!==l)&&(s=C("span.joint-proportion",[s,C("span.sep","to"),c]));let m=null!=t,d=e=>{t&&t(e,r)};return C("div.interval-proportions",[C(p,{className:m?"clickable":"",onClick:m?d:void 0,interval:r,prefix:s}),C.if(n!=a)("span.discourage-break",[C("span.sep","to"),C(p,{className:m?"clickable":"",onClick:m?d:void 0,interval:{...u,id:a,name:e.t_int_name},prefix:c})])])}function T({value:e}){let t=null;if(0==e)t="base";else if(1==e)t="top";else t=(100*e).toFixed(1)+"%";return C("span.proportion",t)}function E(e,t,n=null){return null==e||null==t?null:e===t?e.toFixed(n):`${G(e,n)}\u{2013}${G(t,n)}`}function G(e,t=null){return null==t?e.toLocaleString():t>=0?e.toFixed(t):t<0?(e/Math.pow(10,-t)).toFixed(0)+"0".repeat(-t):void 0}export{$ as UnitDetailsPanel,N as LegendPanelHeader,U as UnitDetailsFeature,A as Duration,w as ReferencesField,P as Identifier,H as AgeLabel};
2
- //# sourceMappingURL=column-views.6f7a432f.js.map
@@ -1 +0,0 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,Y,C,K,2B,A,Q,U,C,C,e,C,K,mB,A,Q,Y,C,C,W,C,K,O,A,Q,uB,C,C,a,C,C,iB,C,C,S,C,C,iB,C,C,oB,C,C,Y,C,C,e,C,K,6B,A,Q,M,Y,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,ICyIY,E,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,mB,I,G,E,E,oB,I,G,E,E,qB,I,G,E,E,W,I,G,E,E,kB,I,G,E,E,a,I,G,E,E,W,I,G,I,E,E,S,E,E,S,E,E,SA7GZ,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAiB,CAAA,KAC/B,CAAI,CAAA,QACJ,CAAO,CAAA,UACP,CAAS,CAAA,SACT,EAAW,IAAI,IAAwB,C,iB,e,c,cAKtC,CAAA,CAAA,kBACD,CAAiB,CAAA,QACjB,CAAO,CAAA,WACP,CAAU,CAAA,YACV,CAAW,CAAA,YACX,CAAW,CAYZ,EACC,GAAM,CAAC,EAAU,EAAY,CAAG,AAAA,EAAS,CAAA,GAErC,EAAU,KAEZ,EADE,EACQ,EAAE,EAAU,CAAE,KAAM,EAAM,SAAU,CAAA,CAAM,GAE1C,EAAE,EAAoB,CAC9B,KAAA,EACA,SAAA,EACA,kBAAA,EACA,YAAA,CACF,GAGF,IAAI,EAAQ,AAAA,CAAA,EAAA,EAAA,mBAAkB,AAAlB,EAAoB,GAE5B,EAAgB,KAepB,OAdI,EAAS,GAAG,CAAA,gBACd,CAAA,EAAgB,EAAE,EAAQ,CACxB,KAAM,OACN,MAAO,CAAA,EACP,QAAS,CAAA,EACT,IAAK,mBACL,UAAW,AAAA,EAAW,mBAAoB,CAAE,QAAS,CAAY,GACjE,QAAQ,CAAG,EACT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","sources":["<anon>","packages/column-views/src/unit-details/panel.ts"],"sourcesContent":["import \"./column-views.6ae7bb69.js\";\nimport \"./column-views.9de31cdb.js\";\nimport \"./column-views.2e4e357d.js\";\nimport $c0aFQ$macrostrathyper from \"@macrostrat/hyper\";\nimport {JSONView as $c0aFQ$JSONView} from \"@macrostrat/ui-components\";\nimport {Button as $c0aFQ$Button, ButtonGroup as $c0aFQ$ButtonGroup} from \"@blueprintjs/core\";\nimport {useState as $c0aFQ$useState, useMemo as $c0aFQ$useMemo} from \"react\";\nimport {LithologyTagFeature as $c0aFQ$LithologyTagFeature, DataField as $c0aFQ$DataField, Parenthetical as $c0aFQ$Parenthetical, Value as $c0aFQ$Value, LithologyList as $c0aFQ$LithologyList, EnvironmentsList as $c0aFQ$EnvironmentsList, ItemList as $c0aFQ$ItemList, IntervalTag as $c0aFQ$IntervalTag} from \"@macrostrat/data-components\";\nimport $c0aFQ$classnames from \"classnames\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $4a89f93cd5289383$exports = {};\n\n$parcel$export($4a89f93cd5289383$exports, \"UnitDetailsPanel\", () => $4a89f93cd5289383$export$fbd245232df17557);\n$parcel$export($4a89f93cd5289383$exports, \"LegendPanelHeader\", () => $4a89f93cd5289383$export$fc503c39cc5cff43);\n$parcel$export($4a89f93cd5289383$exports, \"UnitDetailsFeature\", () => $4a89f93cd5289383$export$ec297f6f9a6ccad0);\n$parcel$export($4a89f93cd5289383$exports, \"Duration\", () => $4a89f93cd5289383$export$3b11bc38611c5941);\n$parcel$export($4a89f93cd5289383$exports, \"ReferencesField\", () => $4a89f93cd5289383$export$895d4931dd696e25);\n$parcel$export($4a89f93cd5289383$exports, \"Identifier\", () => $4a89f93cd5289383$export$989167234458594d);\n$parcel$export($4a89f93cd5289383$exports, \"AgeLabel\", () => $4a89f93cd5289383$export$37ebfd237811b1eb);\n\n\nvar $lMX1H = parcelRequire(\"lMX1H\");\n\n\n\n\n\nvar $lgTAP = parcelRequire(\"lgTAP\");\n\nvar $jiUaC = parcelRequire(\"jiUaC\");\n\nconst $4a89f93cd5289383$var$h = (0, $c0aFQ$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($lMX1H))));\nfunction $4a89f93cd5289383$export$fbd245232df17557({ unit: unit, onClose: onClose, className: className, features: features = new Set([\n \"adjacent-units\",\n \"outcrop-type\",\n \"json-toggle\",\n \"depth-range\"\n]), lithologyFeatures: lithologyFeatures, actions: actions, selectUnit: selectUnit, columnUnits: columnUnits, onClickItem: onClickItem }) {\n const [showJSON, setShowJSON] = (0, $c0aFQ$useState)(false);\n let content = null;\n if (showJSON) content = $4a89f93cd5289383$var$h((0, $c0aFQ$JSONView), {\n data: unit,\n showRoot: false\n });\n else content = $4a89f93cd5289383$var$h($4a89f93cd5289383$var$UnitDetailsContent, {\n unit: unit,\n features: features,\n lithologyFeatures: lithologyFeatures,\n onClickItem: onClickItem\n });\n let title = (0, $jiUaC.defaultNameFunction)(unit);\n let hiddenActions = null;\n if (features.has(\"json-toggle\")) hiddenActions = $4a89f93cd5289383$var$h((0, $c0aFQ$Button), {\n icon: \"code\",\n small: true,\n minimal: true,\n key: \"json-view-toggle\",\n className: (0, $c0aFQ$classnames)(\"json-view-toggle\", {\n enabled: setShowJSON\n }),\n onClick (evt) {\n setShowJSON(!showJSON);\n evt.stopPropagation();\n }\n });\n return $4a89f93cd5289383$var$h(\"div.unit-details-panel\", {\n className: className\n }, [\n $4a89f93cd5289383$var$h($4a89f93cd5289383$export$fc503c39cc5cff43, {\n onClose: onClose,\n title: title,\n id: unit.unit_id,\n actions: actions,\n hiddenActions: hiddenActions\n }),\n $4a89f93cd5289383$var$h(\"div.unit-details-content-holder\", content)\n ]);\n}\nfunction $4a89f93cd5289383$export$fc503c39cc5cff43({ title: title, id: id, onClose: onClose, actions: actions = null, hiddenActions: hiddenActions }) {\n return $4a89f93cd5289383$var$h(\"header.legend-panel-header\", [\n $4a89f93cd5289383$var$h(\"div.title-container\", [\n $4a89f93cd5289383$var$h.if(title != null)(\"h3\", title),\n $4a89f93cd5289383$var$h.if(hiddenActions != null || id != null)(\"span.hidden-actions-container\", $4a89f93cd5289383$var$h(\"div.hidden-actions\", [\n $4a89f93cd5289383$var$h.if(id != null)(\"code.unit-id\", id),\n $4a89f93cd5289383$var$h.if(hiddenActions != null)([\n hiddenActions\n ])\n ]))\n ]),\n $4a89f93cd5289383$var$h(\"div.spacer\"),\n $4a89f93cd5289383$var$h.if(actions != null)((0, $c0aFQ$ButtonGroup), {\n minimal: true\n }, actions),\n $4a89f93cd5289383$var$h.if(onClose != null)((0, $c0aFQ$Button), {\n icon: \"cross\",\n minimal: true,\n small: true,\n onClick () {\n onClose();\n }\n })\n ]);\n}\nvar $4a89f93cd5289383$export$ec297f6f9a6ccad0 = /*#__PURE__*/ function(UnitDetailsFeature) {\n UnitDetailsFeature[\"AdjacentUnits\"] = \"adjacent-units\";\n UnitDetailsFeature[\"Color\"] = \"color\";\n UnitDetailsFeature[\"OutcropType\"] = \"outcrop-type\";\n UnitDetailsFeature[\"JSONToggle\"] = \"json-toggle\";\n UnitDetailsFeature[\"DepthRange\"] = \"depth-range\";\n return UnitDetailsFeature;\n}({});\nfunction $4a89f93cd5289383$var$UnitDetailsContent({ unit: unit, selectUnit: selectUnit, columnUnits: columnUnits, lithologyFeatures: lithologyFeatures = new Set([\n (0, $c0aFQ$LithologyTagFeature).Proportion,\n (0, $c0aFQ$LithologyTagFeature).Attributes\n]), features: features = new Set([\n \"adjacent-units\",\n \"outcrop-type\"\n]), onClickItem: onClickItem, getItemHref: getItemHref }) {\n const lithMap = (0, $lgTAP.useMacrostratDefs)(\"lithologies\");\n const envMap = (0, $lgTAP.useMacrostratDefs)(\"environments\");\n const environments = $4a89f93cd5289383$var$enhanceEnvironments(unit.environ, envMap);\n const lithologies = $4a89f93cd5289383$var$enhanceLithologies(unit.lith ?? [], lithMap);\n // Create a lookup table of units if provided\n const columnUnitsMap = (0, $c0aFQ$useMemo)(()=>{\n const map = new Map();\n for (const colUnit of columnUnits ?? [])map.set(colUnit.unit_id, colUnit);\n return map;\n }, [\n columnUnits\n ]);\n let outcropField = null;\n if (features.has(\"outcrop-type\")) {\n // Determine outcrop type\n let outcrop = unit.outcrop;\n if (outcrop == \"both\") outcrop = \"surface and subsurface\";\n outcropField = $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Outcrop\",\n value: outcrop\n });\n }\n let thicknessOrHeightRange = null;\n const [thickness, thicknessUnit] = $4a89f93cd5289383$var$getThickness(unit);\n // Proxy for actual heights in t_pos and b_pos\n if (features.has(\"depth-range\") && unit.t_pos != null && unit.b_pos != null && 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 thicknessOrHeightRange = $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n unit: u1,\n label: label,\n value: $4a89f93cd5289383$var$formatRange(unit.b_pos, unit.t_pos),\n children: $4a89f93cd5289383$var$h((0, $c0aFQ$Parenthetical), $4a89f93cd5289383$var$h((0, $c0aFQ$Value), {\n value: thickness,\n unit: thicknessUnit\n }))\n });\n }\n thicknessOrHeightRange ?? (thicknessOrHeightRange = $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Thickness\",\n value: thickness,\n unit: thicknessUnit\n }));\n /** We are trying to move away from passing the \"color\" parameter in the API */ let colorSwatch = null;\n if (\"color\" in unit && features.has(\"color\")) {\n const unit1 = unit;\n colorSwatch = $4a89f93cd5289383$var$h(\"div.color-swatch\", {\n style: {\n backgroundColor: unit1.color\n }\n });\n }\n return $4a89f93cd5289383$var$h(\"div.unit-details-content\", [\n thicknessOrHeightRange,\n $4a89f93cd5289383$var$h((0, $c0aFQ$LithologyList), {\n label: \"Lithology\",\n lithologies: lithologies,\n features: lithologyFeatures,\n getItemHref: getItemHref,\n onClickItem: onClickItem\n }),\n $4a89f93cd5289383$var$h($4a89f93cd5289383$var$AgeField, {\n unit: unit\n }, [\n $4a89f93cd5289383$var$h((0, $c0aFQ$Parenthetical), $4a89f93cd5289383$var$h($4a89f93cd5289383$export$3b11bc38611c5941, {\n value: unit.b_age - unit.t_age\n })),\n $4a89f93cd5289383$var$h($4a89f93cd5289383$var$IntervalProportions, {\n unit: unit,\n onClickItem: onClickItem\n })\n ]),\n $4a89f93cd5289383$var$h((0, $c0aFQ$EnvironmentsList), {\n environments: environments,\n onClickItem: onClickItem,\n getItemHref: getItemHref\n }),\n $4a89f93cd5289383$var$h.if(unit.strat_name_id != null)($4a89f93cd5289383$var$StratNameField, {\n strat_name_id: unit.strat_name_id\n }),\n outcropField,\n $4a89f93cd5289383$var$h.if(features.has(\"adjacent-units\"))([\n $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Above\"\n }, $4a89f93cd5289383$var$h($4a89f93cd5289383$var$UnitIDList, {\n units: unit.units_above,\n selectUnit: selectUnit\n })),\n $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Below\"\n }, $4a89f93cd5289383$var$h($4a89f93cd5289383$var$UnitIDList, {\n units: unit.units_below,\n selectUnit: selectUnit\n }))\n ]),\n colorSwatch,\n $4a89f93cd5289383$var$h($4a89f93cd5289383$export$895d4931dd696e25, {\n refs: unit.refs,\n inline: true\n })\n ]);\n}\nfunction $4a89f93cd5289383$export$895d4931dd696e25({ refs: refs, className: className = null, ...rest }) {\n if (refs == null || refs.length === 0) return null;\n return $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Source\",\n className: (0, $c0aFQ$classnames)(\"refs-field\", className),\n ...rest\n }, $4a89f93cd5289383$var$h($4a89f93cd5289383$var$BibInfo, {\n refs: refs\n }));\n}\nfunction $4a89f93cd5289383$var$StratNameField({ strat_name_id: strat_name_id, onClickItem: onClickItem }) {\n const stratNames = (0, $c0aFQ$useMemo)(()=>[\n strat_name_id\n ], [\n strat_name_id\n ]);\n const data = (0, $lgTAP.useMacrostratData)(\"strat_names\", stratNames);\n const stratNameData = data?.[0];\n let inner = $4a89f93cd5289383$var$h($4a89f93cd5289383$export$989167234458594d, {\n id: strat_name_id\n });\n const name = stratNameData?.strat_name_long;\n if (name != null) inner = $4a89f93cd5289383$var$h(\"span.strat-name\", name);\n const clickable = onClickItem != null;\n const className = (0, $c0aFQ$classnames)({\n clickable: clickable\n });\n return $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Stratigraphic name\"\n }, $4a89f93cd5289383$var$h(clickable ? \"a\" : \"span\", {\n className: className,\n onClick: (e)=>onClickItem(e, {\n strat_name_id: strat_name_id\n })\n }, inner));\n}\nfunction $4a89f93cd5289383$var$getThickness(unit) {\n let minThickness = unit.min_thick ?? 0;\n let maxThickness = unit.max_thick ?? unit.min_thick ?? 0;\n let _unit = \"m\";\n if (minThickness == 0 && maxThickness == 0) return [\n \"Unknown\",\n null\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 if (minThickness == maxThickness) return [\n $4a89f93cd5289383$var$formatSignificance(minThickness),\n _unit\n ];\n return [\n $4a89f93cd5289383$var$formatRange(minThickness, maxThickness),\n _unit\n ];\n}\nfunction $4a89f93cd5289383$var$ThicknessField({ unit: unit, label: label = \"Thickness\" }) {\n const [value, thicknessUnit] = $4a89f93cd5289383$var$getThickness(unit);\n return $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: label,\n value: value,\n unit: thicknessUnit\n });\n}\nfunction $4a89f93cd5289383$var$BibInfo({ refs: refs }) {\n const refData = (0, $lgTAP.useMacrostratData)(\"refs\", refs);\n if (refData == null || refData.length === 0) return null;\n if (refData.length == 1) return $4a89f93cd5289383$var$h($4a89f93cd5289383$var$Citation, {\n data: refData[0],\n tag: \"span\",\n key: refData[0].ref_id\n });\n return $4a89f93cd5289383$var$h(\"ul.refs\", refData.map((data, i)=>$4a89f93cd5289383$var$h($4a89f93cd5289383$var$Citation, {\n data: data,\n tag: \"li\",\n key: data.ref_id\n })));\n}\nfunction $4a89f93cd5289383$var$Citation({ data: data, tag: tag = \"p\" }) {\n return $4a89f93cd5289383$var$h(tag, {\n className: \"citation\"\n }, [\n $4a89f93cd5289383$var$h(\"span.authors\", data.author),\n \", \",\n $4a89f93cd5289383$var$h(\"span.year\", data.pub_year),\n \", \",\n $4a89f93cd5289383$var$h(\"span.title\", data.ref)\n ]);\n}\nfunction $4a89f93cd5289383$var$AgeField({ unit: unit, children: children }) {\n const [b_age, t_age, _unit] = $4a89f93cd5289383$var$getAgeRange(unit);\n return $4a89f93cd5289383$var$h((0, $c0aFQ$DataField), {\n label: \"Age\",\n value: $4a89f93cd5289383$var$formatRange(b_age, t_age),\n unit: _unit\n }, children);\n}\nfunction $4a89f93cd5289383$var$getAgeRange(_unit) {\n let b_age = _unit.b_age;\n let t_age = _unit.t_age;\n let unit = \"Ma\";\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 return [\n b_age,\n t_age,\n unit\n ];\n}\nfunction $4a89f93cd5289383$var$getAge(value) {\n /** Get the age value in Ma, ka, or Ga as appropriate */ let unit = \"Ma\";\n if (value < 0.8) {\n unit = \"ka\";\n value *= 1000;\n if (value < 5) {\n unit = \"yr\";\n value *= 1000;\n }\n } else if (value > 1000) {\n unit = \"Ga\";\n value /= 1000;\n }\n return [\n value,\n unit\n ];\n}\nfunction $4a89f93cd5289383$export$37ebfd237811b1eb({ age: age, maximumFractionDigits: maximumFractionDigits = 2, minimumFractionDigits: minimumFractionDigits = 0, className: className }) {\n /** Component to display a single age value with unit conversion from\n * Ma to ka or Ga as appropriate.\n */ const [value, unit] = $4a89f93cd5289383$var$getAge(age);\n const _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits: maximumFractionDigits,\n minimumFractionDigits: minimumFractionDigits\n });\n return $4a89f93cd5289383$var$h((0, $c0aFQ$Value), {\n value: _value,\n unit: unit,\n className: className\n });\n}\nfunction $4a89f93cd5289383$export$3b11bc38611c5941({ value: value, maximumFractionDigits: maximumFractionDigits = 2, minimumFractionDigits: minimumFractionDigits = 0 }) {\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 let _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits: maximumFractionDigits,\n minimumFractionDigits: minimumFractionDigits\n });\n return $4a89f93cd5289383$var$h((0, $c0aFQ$Value), {\n value: _value,\n unit: unit\n });\n}\nfunction $4a89f93cd5289383$var$enhanceEnvironments(environments, envMap) {\n return environments.map((env)=>{\n return {\n ...envMap?.get(env.environ_id) ?? {},\n ...env\n };\n });\n}\nfunction $4a89f93cd5289383$var$enhanceLithologies(lithologies, lithMap) {\n return lithologies.map((lith)=>{\n return {\n ...lithMap?.get(lith.lith_id) ?? {},\n ...lith\n };\n });\n}\nfunction $4a89f93cd5289383$export$989167234458594d({ id: id, onClick: onClick, className: className }) {\n /** An item that displays a numeric identifier, optionally clickable */ const tag = onClick != null ? \"a\" : \"span\";\n return $4a89f93cd5289383$var$h(tag, {\n onClick () {\n onClick?.(id);\n },\n className: (0, $c0aFQ$classnames)(\"identifier\", {\n clickable: onClick != null\n }, className)\n }, id);\n}\nfunction $4a89f93cd5289383$var$UnitIDList({ units: units, selectUnit: selectUnit }) {\n const u1 = units.filter((d)=>d != 0);\n if (u1.length === 0) return $4a89f93cd5289383$var$h(\"span.no-units\", \"None\");\n let tag = \"span\";\n if (selectUnit != null) tag = \"a\";\n return $4a89f93cd5289383$var$h((0, $c0aFQ$ItemList), {\n className: \"unit-id-list\"\n }, u1.map((unitID)=>{\n return $4a89f93cd5289383$var$h($4a89f93cd5289383$export$989167234458594d, {\n className: \"unit-id\",\n onClick () {\n selectUnit?.(unitID);\n },\n key: unitID,\n id: unitID\n });\n }));\n}\nfunction $4a89f93cd5289383$var$IntervalProportions({ unit: unit, onClickItem: onClickItem }) {\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 const intervalMap = (0, $lgTAP.useMacrostratDefs)(\"intervals\");\n const int0 = intervalMap?.get(i0) ?? {};\n const interval0 = {\n ...int0,\n id: i0,\n name: unit.b_int_name\n };\n let p0 = null;\n const int1 = intervalMap?.get(i1) ?? {};\n const p1 = $4a89f93cd5289383$var$h($4a89f93cd5289383$var$Proportion, {\n value: t_prop\n });\n if (i0 !== i1 || b_prop !== 0 || t_prop !== 1) // We have a single interval with undefined proportions\n p0 = $4a89f93cd5289383$var$h($4a89f93cd5289383$var$Proportion, {\n value: b_prop\n });\n if (i0 === i1 && (b_prop !== 0 || t_prop !== 1)) p0 = $4a89f93cd5289383$var$h(\"span.joint-proportion\", [\n p0,\n $4a89f93cd5289383$var$h(\"span.sep\", \"to\"),\n p1\n ]);\n const clickable = onClickItem != null;\n const handleClick = (event)=>{\n if (onClickItem) onClickItem(event, interval0);\n };\n return $4a89f93cd5289383$var$h(\"div.interval-proportions\", [\n $4a89f93cd5289383$var$h((0, $c0aFQ$IntervalTag), {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\n interval: interval0,\n prefix: p0\n }),\n $4a89f93cd5289383$var$h.if(i0 != i1)(\"span.discourage-break\", [\n $4a89f93cd5289383$var$h(\"span.sep\", \"to\"),\n $4a89f93cd5289383$var$h((0, $c0aFQ$IntervalTag), {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\n interval: {\n ...int1,\n id: i1,\n name: unit.t_int_name\n },\n prefix: p1\n })\n ])\n ]);\n}\nconst $4a89f93cd5289383$var$formatProportion = (d)=>{\n if (d == null) return null;\n return d.toFixed(1);\n};\nfunction $4a89f93cd5289383$var$Proportion({ value: value }) {\n let content = null;\n if (value == 0) content = \"base\";\n else if (value == 1) content = \"top\";\n else content = $4a89f93cd5289383$var$formatProportion(value * 100) + \"%\";\n return $4a89f93cd5289383$var$h(\"span.proportion\", content);\n}\nfunction $4a89f93cd5289383$var$formatRange(min, max, precision = null) {\n if (min == null || max == null) return null;\n if (min === max) return min.toFixed(precision);\n return `${$4a89f93cd5289383$var$formatSignificance(min, precision)}\\u{2013}${$4a89f93cd5289383$var$formatSignificance(max, precision)}`;\n}\nfunction $4a89f93cd5289383$var$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 if (precision == null) return value.toLocaleString();\n if (precision >= 0) return value.toFixed(precision);\n if (precision < 0) return (value / Math.pow(10, -precision)).toFixed(0) + \"0\".repeat(-precision);\n}\n\n\nexport {$4a89f93cd5289383$export$fbd245232df17557 as UnitDetailsPanel, $4a89f93cd5289383$export$fc503c39cc5cff43 as LegendPanelHeader, $4a89f93cd5289383$export$ec297f6f9a6ccad0 as UnitDetailsFeature, $4a89f93cd5289383$export$3b11bc38611c5941 as Duration, $4a89f93cd5289383$export$895d4931dd696e25 as ReferencesField, $4a89f93cd5289383$export$989167234458594d as Identifier, $4a89f93cd5289383$export$37ebfd237811b1eb as AgeLabel};\n//# sourceMappingURL=column-views.6f7a432f.js.map\n","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 {\n Environment,\n UnitLong,\n UnitLongFull,\n Lithology,\n Interval,\n StratUnit,\n} 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 onClickItem,\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 onClickItem?: (item: any) => 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, {\n unit,\n features,\n lithologyFeatures,\n onClickItem,\n });\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 || id != null)(\n \"span.hidden-actions-container\",\n h(\"div.hidden-actions\", [\n h.if(id != null)(\"code.unit-id\", id),\n h.if(hiddenActions != null)([hiddenActions]),\n ]),\n ),\n ]),\n h(\"div.spacer\"),\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 onClickItem,\n getItemHref,\n}: {\n unit: UnitLong;\n selectUnit?: (unitID: number) => void;\n columnUnits?: UnitLong[];\n lithologyFeatures?: Set<LithologyTagFeature>;\n features?: Set<UnitDetailsFeature>;\n onClickItem?: (\n event: MouseEvent,\n item:\n | Lithology\n | Environment\n | UnitLong\n | Interval\n | { strat_name_id: number },\n ) => void;\n getItemHref?: (item: Lithology | Environment | UnitLong) => string | null;\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 && features.has(UnitDetailsFeature.Color)) {\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 getItemHref,\n onClickItem,\n }),\n h(AgeField, { unit }, [\n h(Parenthetical, h(Duration, { value: unit.b_age - unit.t_age })),\n h(IntervalProportions, {\n unit,\n onClickItem,\n }),\n ]),\n h(EnvironmentsList, {\n environments,\n onClickItem,\n getItemHref,\n }),\n h.if(unit.strat_name_id != null)(StratNameField, {\n 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(ReferencesField, { refs: unit.refs, inline: true }),\n ]);\n}\n\nexport function ReferencesField({ refs, className = null, ...rest }) {\n if (refs == null || refs.length === 0) {\n return null;\n }\n return h(\n DataField,\n {\n label: \"Source\",\n className: classNames(\"refs-field\", className),\n ...rest,\n },\n h(BibInfo, { refs }),\n );\n}\n\nfunction StratNameField({\n strat_name_id,\n onClickItem,\n}: {\n strat_name_id: number;\n onClickItem?: (event: MouseEvent, item: { strat_name_id: number }) => void;\n}) {\n const stratNames = useMemo(() => [strat_name_id], [strat_name_id]);\n const data = useMacrostratData(\"strat_names\", stratNames);\n const stratNameData = data?.[0];\n let inner: any = h(Identifier, { id: strat_name_id });\n const name = stratNameData?.strat_name_long;\n if (name != null) {\n inner = h(\"span.strat-name\", name);\n }\n\n const clickable = onClickItem != null;\n\n const className = classNames({\n clickable,\n });\n\n return h(\n DataField,\n {\n label: \"Stratigraphic name\",\n },\n h(\n clickable ? \"a\" : \"span\",\n {\n className,\n onClick: (e) => onClickItem(e, { strat_name_id }),\n },\n inner,\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, {\n data: refData[0],\n tag: \"span\",\n key: refData[0].ref_id,\n });\n }\n\n return h(\n \"ul.refs\",\n refData.map((data, i) =>\n h(Citation, { data, tag: \"li\", key: data.ref_id }),\n ),\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\nfunction getAge(value) {\n /** Get the age value in Ma, ka, or Ga as appropriate */\n let unit = \"Ma\";\n if (value < 0.8) {\n unit = \"ka\";\n value *= 1000;\n if (value < 5) {\n unit = \"yr\";\n value *= 1000;\n }\n } else if (value > 1000) {\n unit = \"Ga\";\n value /= 1000;\n }\n\n return [value, unit];\n}\n\nexport function AgeLabel({\n age,\n maximumFractionDigits = 2,\n minimumFractionDigits = 0,\n className,\n}: {\n age: number;\n className?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n}) {\n /** Component to display a single age value with unit conversion from\n * Ma to ka or Ga as appropriate.\n */\n const [value, unit] = getAge(age);\n\n const _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits,\n minimumFractionDigits,\n });\n\n return h(Value, { value: _value, unit, className });\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\nexport function Identifier({\n id,\n onClick,\n className,\n}: {\n id: number | string;\n onClick?: (id: number | string) => void;\n className?: string;\n}) {\n /** An item that displays a numeric identifier, optionally clickable */\n const tag = onClick != null ? \"a\" : \"span\";\n return h(\n tag,\n {\n onClick() {\n onClick?.(id);\n },\n className: classNames(\n \"identifier\",\n { clickable: onClick != null },\n className,\n ),\n },\n id,\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((unitID) => {\n return h(Identifier, {\n className: \"unit-id\",\n onClick() {\n selectUnit?.(unitID);\n },\n key: unitID,\n id: unitID,\n });\n }),\n );\n}\n\nfunction IntervalProportions({ unit, onClickItem }) {\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 const clickable = onClickItem != null;\n\n const handleClick = (event: MouseEvent) => {\n if (onClickItem) {\n onClickItem(event, interval0);\n }\n };\n\n return h(\"div.interval-proportions\", [\n h(IntervalTag, {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\n interval: interval0,\n prefix: p0,\n }),\n h.if(i0 != i1)(\"span.discourage-break\", [\n h(\"span.sep\", \"to\"),\n h(IntervalTag, {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\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":["$c0aFQ$macrostrathyper","JSONView","$c0aFQ$JSONView","Button","$c0aFQ$Button","ButtonGroup","$c0aFQ$ButtonGroup","useState","$c0aFQ$useState","useMemo","$c0aFQ$useMemo","LithologyTagFeature","$c0aFQ$LithologyTagFeature","DataField","$c0aFQ$DataField","Parenthetical","$c0aFQ$Parenthetical","Value","$c0aFQ$Value","LithologyList","$c0aFQ$LithologyList","EnvironmentsList","$c0aFQ$EnvironmentsList","ItemList","$c0aFQ$ItemList","IntervalTag","$c0aFQ$IntervalTag","$c0aFQ$classnames","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","UnitDetailsFeature","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$4a89f93cd5289383$exports","$4a89f93cd5289383$export$fbd245232df17557","$4a89f93cd5289383$export$fc503c39cc5cff43","$4a89f93cd5289383$export$ec297f6f9a6ccad0","$4a89f93cd5289383$export$3b11bc38611c5941","$4a89f93cd5289383$export$895d4931dd696e25","$4a89f93cd5289383$export$989167234458594d","$4a89f93cd5289383$export$37ebfd237811b1eb","$lMX1H","$lgTAP","$jiUaC","$4a89f93cd5289383$var$h","styled","a","__esModule","default","unit","onClose","className","features","Set","lithologyFeatures","actions","selectUnit","columnUnits","onClickItem","showJSON","setShowJSON","content","data","showRoot","$4a89f93cd5289383$var$UnitDetailsContent","title","defaultNameFunction","hiddenActions","has","icon","small","minimal","key","enabled","onClick","evt","stopPropagation","unit_id","if","Proportion","Attributes","getItemHref","environments","envMap","lithologies","lithMap","minThickness","maxThickness","_unit","useMacrostratDefs","environ","map","env","environ_id","lith","lith_id","Map","colUnit","outcropField","outcrop","label","value","thicknessOrHeightRange","thickness","thicknessUnit","min_thick","max_thick","$4a89f93cd5289383$var$formatSignificance","$4a89f93cd5289383$var$formatRange","t_pos","b_pos","children","colorSwatch","style","backgroundColor","unit1","color","$4a89f93cd5289383$var$AgeField","b_age","t_age","$4a89f93cd5289383$var$IntervalProportions","strat_name_id","$4a89f93cd5289383$var$StratNameField","$4a89f93cd5289383$var$UnitIDList","units","units_above","units_below","refs","inline","rest","length","$4a89f93cd5289383$var$BibInfo","stratNames","useMacrostratData","stratNameData","inner","name","strat_name_long","clickable","refData","$4a89f93cd5289383$var$Citation","tag","ref_id","i","author","pub_year","ref","age","maximumFractionDigits","minimumFractionDigits","toLocaleString","u1","filter","d","unitID","i0","b_int_id","i1","t_int_id","b_prop","t_prop","intervalMap","interval0","b_int_name","p0","int1","p1","$4a89f93cd5289383$var$Proportion","handleClick","event","undefined","interval","prefix","t_int_name","$4a89f93cd5289383$var$formatProportion","toFixed","min","max","precision","Math","pow","repeat","UnitDetailsPanel","LegendPanelHeader","Duration","ReferencesField","Identifier","AgeLabel"],"version":3,"file":"column-views.6f7a432f.js.map","sourceRoot":"../../../../"}
@@ -1,2 +0,0 @@
1
- import"./column-views.8cfed88b.js";import{group as e}from"d3-array";import{ColumnAxisType as t}from"@macrostrat/column-components";import{compareAgeRanges as n}from"@macrostrat/stratigraphy-utils";var i=globalThis,r={},a={},o=i.parcelRequirea149;null==o&&((o=function(e){if(e in r)return r[e].exports;if(e in a){var t=a[e];delete a[e];var n={id:e,exports:{}};return r[e]=n,t.call(n.exports,n,n.exports),n.exports}var i=Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}).register=function(e,t){a[e]=t},i.parcelRequirea149=o),o.register;var s=o("iWhRv");function g(e,n=t.AGE){let i=e.units.map((...e)=>(function(e,n,i,r=t.AGE){let a=i.filter(t=>t.unit_id!=e.unit_id&&(0,s.unitsOverlap)(e,t,r)),o=(0,s.getUnitHeightRange)(e,r),g=a.some(e=>(0,s.getUnitHeightRange)(e,r)[0]<o[0]+.001),u=0;return 1==a.length&&(u=1),{...e,bottomOverlap:g,column:u,overlappingUnits:a.map(e=>e.unit_id)}})(...e,0));for(let r of i){let a=i.filter(e=>r.overlappingUnits.includes(e.unit_id)).map(e=>e.column);if(a.includes(r.column)){let e=0;for(;a.includes(e);)e++;r.column=e}if(n==t.AGE){let[t,i]=(0,s.getUnitHeightRange)(r,n);t>e.b_age&&(r.b_clip_pos=e.b_age),i<e.t_age&&(r.t_clip_pos=e.t_age)}}return i}function u(i,r=t.AGE){if(r!=t.AGE)return function(e,i=t.AGE){let r=[];for(let t of e){let e=(0,s.getUnitHeightRange)(t,i),a=r.find(t=>n(e,t.heightRange));null==a?r.push({heightRange:e,units:[t]}):(a.units.push(t),a.heightRange=[Math.max(a.heightRange[0],e[0]),Math.min(a.heightRange[1],e[1])])}return r.map((e,t)=>{let[n,i]=l(e.units);return{section_id:-t,t_age:i,b_age:n,units:e.units}})}(i,r);let a=Array.from(e(i,e=>e.section_id)),o=(0,s.createUnitSorter)(r),g=a.map(([e,t])=>{let[n,i]=l(t);return t.sort(o),{section_id:e,t_age:i,b_age:n,units:t}}),p=(0,s.createUnitSorter)(t.AGE);return g.sort(p),g}function l(e){let t=e.map(e=>e.t_age);return[Math.max(...e.map(e=>e.b_age)),Math.min(...t)]}function p(e){let[t,...n]=e,i=[t];for(let e of n){let t=i[i.length-1];if(t.b_age<e.t_age||t.t_age>e.b_age){i.push(e);continue}t.section_id=[...(0,s.ensureArray)(t.section_id),...(0,s.ensureArray)(e.section_id)],t.units.push(...e.units),t.b_age=Math.max(t.b_age,e.b_age),t.t_age=Math.min(t.t_age,e.t_age)}return i}export{g as preprocessUnits,u as groupUnitsIntoSections,l as getSectionAgeRange,p as mergeOverlappingSections};
2
- //# sourceMappingURL=column-views.755f726e.js.map