@macrostrat/column-views 2.3.3 → 2.4.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 (220) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/esm/{column-views.b977da35.js → column-views.083fb787.js} +5 -5
  3. package/dist/esm/{column-views.b977da35.js.map → column-views.083fb787.js.map} +1 -1
  4. package/dist/esm/{column-views.4685ea28.js → column-views.088a0274.js} +2 -2
  5. package/dist/esm/{column-views.4685ea28.js.map → column-views.088a0274.js.map} +1 -1
  6. package/dist/esm/{column-views.a665cbb2.js → column-views.11353c2c.js} +5 -5
  7. package/dist/esm/{column-views.a665cbb2.js.map → column-views.11353c2c.js.map} +1 -1
  8. package/dist/esm/{column-views.f7cdf6be.js → column-views.18655508.js} +3 -3
  9. package/dist/esm/{column-views.f7cdf6be.js.map → column-views.18655508.js.map} +1 -1
  10. package/dist/esm/column-views.1cd55918.js +206 -0
  11. package/dist/esm/column-views.1cd55918.js.map +1 -0
  12. package/dist/esm/column-views.1ef55568.js +15 -0
  13. package/dist/esm/{column-views.04636815.js.map → column-views.1ef55568.js.map} +1 -1
  14. package/dist/esm/{column-views.e075af15.js → column-views.3090f246.js} +22 -4
  15. package/dist/esm/column-views.3090f246.js.map +1 -0
  16. package/dist/esm/{column-views.c92a359e.js → column-views.33796541.js} +2 -2
  17. package/dist/esm/{column-views.c92a359e.js.map → column-views.33796541.js.map} +1 -1
  18. package/dist/esm/{column-views.488f24b6.js → column-views.3ae8f23d.js} +2 -2
  19. package/dist/esm/{column-views.488f24b6.js.map → column-views.3ae8f23d.js.map} +1 -1
  20. package/dist/esm/{column-views.faa7e52e.js → column-views.40d3688c.js} +3 -3
  21. package/dist/esm/{column-views.faa7e52e.js.map → column-views.40d3688c.js.map} +1 -1
  22. package/dist/esm/{column-views.b9265595.js → column-views.4e9b8594.js} +11 -10
  23. package/dist/esm/column-views.4e9b8594.js.map +1 -0
  24. package/dist/esm/{column-views.8c296309.js → column-views.5e1c216f.js} +27 -6
  25. package/dist/esm/column-views.5e1c216f.js.map +1 -0
  26. package/dist/esm/{column-views.e3f0cd7b.js → column-views.5e830e7c.js} +23 -33
  27. package/dist/esm/column-views.5e830e7c.js.map +1 -0
  28. package/dist/esm/{column-views.c149f7a5.js → column-views.5ec7294d.js} +3 -3
  29. package/dist/esm/{column-views.c149f7a5.js.map → column-views.5ec7294d.js.map} +1 -1
  30. package/dist/esm/column-views.67804ce5.js +68 -0
  31. package/dist/esm/column-views.67804ce5.js.map +1 -0
  32. package/dist/esm/{column-views.3f1cdc18.js → column-views.6f0d4f3a.js} +2 -2
  33. package/dist/esm/{column-views.3f1cdc18.js.map → column-views.6f0d4f3a.js.map} +1 -1
  34. package/dist/esm/{column-views.58b891df.js → column-views.76fb9948.js} +2 -2
  35. package/dist/esm/{column-views.58b891df.js.map → column-views.76fb9948.js.map} +1 -1
  36. package/dist/esm/{column-views.3d3e00be.js → column-views.77322764.js} +2 -2
  37. package/dist/esm/{column-views.3d3e00be.js.map → column-views.77322764.js.map} +1 -1
  38. package/dist/esm/{column-views.82a5112b.js → column-views.85d57d04.js} +4 -4
  39. package/dist/esm/{column-views.82a5112b.js.map → column-views.85d57d04.js.map} +1 -1
  40. package/dist/esm/{column-views.4e6eead3.js → column-views.88436022.js} +2 -2
  41. package/dist/esm/{column-views.4e6eead3.js.map → column-views.88436022.js.map} +1 -1
  42. package/dist/esm/{column-views.2f979aee.js → column-views.88b2418b.js} +3 -3
  43. package/dist/esm/{column-views.2f979aee.js.map → column-views.88b2418b.js.map} +1 -1
  44. package/dist/esm/{column-views.d6c0b7bc.js → column-views.8ce33ec6.js} +2 -2
  45. package/dist/esm/{column-views.d6c0b7bc.js.map → column-views.8ce33ec6.js.map} +1 -1
  46. package/dist/esm/{column-views.6f96d1c3.js → column-views.91c18fe3.js} +31 -19
  47. package/dist/esm/column-views.91c18fe3.js.map +1 -0
  48. package/dist/esm/{column-views.18aac6a5.js → column-views.99cb1c41.js} +3 -3
  49. package/dist/esm/{column-views.18aac6a5.js.map → column-views.99cb1c41.js.map} +1 -1
  50. package/dist/esm/{column-views.0a010643.js → column-views.ab2cc6cb.js} +27 -14
  51. package/dist/esm/column-views.ab2cc6cb.js.map +1 -0
  52. package/dist/esm/{column-views.d5fff9b8.js → column-views.af4278f0.js} +3 -3
  53. package/dist/esm/{column-views.d5fff9b8.js.map → column-views.af4278f0.js.map} +1 -1
  54. package/dist/esm/{column-views.d1b49f5c.js → column-views.b957dc19.js} +3 -3
  55. package/dist/esm/{column-views.d1b49f5c.js.map → column-views.b957dc19.js.map} +1 -1
  56. package/dist/esm/{column-views.ad2fe46c.js → column-views.bc83a85d.js} +19 -3
  57. package/dist/esm/column-views.bc83a85d.js.map +1 -0
  58. package/dist/esm/column-views.c1e507e6.js +113 -0
  59. package/dist/esm/column-views.c1e507e6.js.map +1 -0
  60. package/dist/esm/{column-views.ce3a3ac8.js → column-views.c93b63db.js} +3 -3
  61. package/dist/esm/column-views.c93b63db.js.map +1 -0
  62. package/dist/esm/{column-views.26e0e0b6.js → column-views.ce5251f7.js} +2 -2
  63. package/dist/esm/{column-views.26e0e0b6.js.map → column-views.ce5251f7.js.map} +1 -1
  64. package/dist/esm/{column-views.8d972657.js → column-views.d4e50f74.js} +3 -3
  65. package/dist/esm/{column-views.8d972657.js.map → column-views.d4e50f74.js.map} +1 -1
  66. package/dist/esm/{column-views.75b83110.js → column-views.dd2d5a6d.js} +5 -5
  67. package/dist/esm/{column-views.75b83110.js.map → column-views.dd2d5a6d.js.map} +1 -1
  68. package/dist/esm/{column-views.73fc96cb.js → column-views.e6882667.js} +5 -5
  69. package/dist/esm/{column-views.73fc96cb.js.map → column-views.e6882667.js.map} +1 -1
  70. package/dist/esm/{column-views.ee9d71ba.js → column-views.e885211d.js} +2 -2
  71. package/dist/esm/{column-views.ee9d71ba.js.map → column-views.e885211d.js.map} +1 -1
  72. package/dist/esm/{column-views.029ea8f1.js → column-views.ee2fd38f.js} +3 -3
  73. package/dist/esm/{column-views.029ea8f1.js.map → column-views.ee2fd38f.js.map} +1 -1
  74. package/dist/esm/{column-views.9d51a5ab.js → column-views.f35c4621.js} +2 -2
  75. package/dist/esm/column-views.f35c4621.js.map +1 -0
  76. package/dist/esm/{column-views.5fff0716.js → column-views.f56e604d.js} +3 -3
  77. package/dist/esm/{column-views.5fff0716.js.map → column-views.f56e604d.js.map} +1 -1
  78. package/dist/esm/{column-views.9ffc089b.js → column-views.f904e6d7.js} +3 -3
  79. package/dist/esm/{column-views.9ffc089b.js.map → column-views.f904e6d7.js.map} +1 -1
  80. package/dist/esm/{column-views.24060b85.js → column-views.fc4860bd.js} +4 -4
  81. package/dist/esm/{column-views.24060b85.js.map → column-views.fc4860bd.js.map} +1 -1
  82. package/dist/esm/{column-views.0da4503a.js → column-views.fedccce9.js} +2 -2
  83. package/dist/esm/{column-views.0da4503a.js.map → column-views.fedccce9.js.map} +1 -1
  84. package/dist/esm/index.d.ts +91 -86
  85. package/dist/esm/index.d.ts.map +1 -1
  86. package/dist/esm/index.js +11 -11
  87. package/dist/node/{column-views.02869dc5.js → column-views.003e0c17.js} +2 -2
  88. package/dist/node/{column-views.02869dc5.js.map → column-views.003e0c17.js.map} +1 -1
  89. package/dist/node/column-views.080781ca.js +2 -0
  90. package/dist/node/column-views.080781ca.js.map +1 -0
  91. package/dist/node/{column-views.00ad98fa.js → column-views.0818254f.js} +2 -2
  92. package/dist/node/{column-views.00ad98fa.js.map → column-views.0818254f.js.map} +1 -1
  93. package/dist/node/{column-views.2577dec0.js → column-views.0d48f51d.js} +2 -2
  94. package/dist/node/{column-views.2577dec0.js.map → column-views.0d48f51d.js.map} +1 -1
  95. package/dist/node/column-views.18e86c2d.js +2 -0
  96. package/dist/node/column-views.18e86c2d.js.map +1 -0
  97. package/dist/node/{column-views.8eae7028.js → column-views.375529b1.js} +2 -2
  98. package/dist/node/{column-views.8eae7028.js.map → column-views.375529b1.js.map} +1 -1
  99. package/dist/node/{column-views.6b391d60.js → column-views.39b71a38.js} +2 -2
  100. package/dist/node/{column-views.6b391d60.js.map → column-views.39b71a38.js.map} +1 -1
  101. package/dist/node/{column-views.47440961.js → column-views.447008d0.js} +2 -2
  102. package/dist/node/{column-views.47440961.js.map → column-views.447008d0.js.map} +1 -1
  103. package/dist/node/{column-views.c4188442.js → column-views.4d573ded.js} +2 -2
  104. package/dist/node/{column-views.c4188442.js.map → column-views.4d573ded.js.map} +1 -1
  105. package/dist/node/{column-views.8f540f78.js → column-views.4d8fc443.js} +2 -2
  106. package/dist/node/{column-views.8f540f78.js.map → column-views.4d8fc443.js.map} +1 -1
  107. package/dist/node/{column-views.3a947d58.js → column-views.54f7a243.js} +2 -2
  108. package/dist/node/{column-views.3a947d58.js.map → column-views.54f7a243.js.map} +1 -1
  109. package/dist/node/column-views.58b336f1.js +2 -0
  110. package/dist/node/column-views.58b336f1.js.map +1 -0
  111. package/dist/node/{column-views.465e593b.js → column-views.5908556a.js} +2 -2
  112. package/dist/node/{column-views.465e593b.js.map → column-views.5908556a.js.map} +1 -1
  113. package/dist/node/column-views.5c02450b.js +2 -0
  114. package/dist/node/column-views.5c02450b.js.map +1 -0
  115. package/dist/node/column-views.5e73411d.js +2 -0
  116. package/dist/node/column-views.5e73411d.js.map +1 -0
  117. package/dist/node/{column-views.825d2719.js → column-views.5f3f8ccf.js} +2 -2
  118. package/dist/node/{column-views.825d2719.js.map → column-views.5f3f8ccf.js.map} +1 -1
  119. package/dist/node/{column-views.0a2596c2.js → column-views.6051e986.js} +2 -2
  120. package/dist/node/{column-views.0a2596c2.js.map → column-views.6051e986.js.map} +1 -1
  121. package/dist/node/{column-views.c921fa1a.js → column-views.64fc40d6.js} +2 -2
  122. package/dist/node/{column-views.c921fa1a.js.map → column-views.64fc40d6.js.map} +1 -1
  123. package/dist/node/{column-views.6556e004.js → column-views.66663668.js} +2 -2
  124. package/dist/node/{column-views.6556e004.js.map → column-views.66663668.js.map} +1 -1
  125. package/dist/node/{column-views.a14f0134.js → column-views.6f0cb059.js} +2 -2
  126. package/dist/node/{column-views.a14f0134.js.map → column-views.6f0cb059.js.map} +1 -1
  127. package/dist/node/{column-views.9efa91f1.js → column-views.72c3c6e7.js} +2 -2
  128. package/dist/node/{column-views.9efa91f1.js.map → column-views.72c3c6e7.js.map} +1 -1
  129. package/dist/node/column-views.74fcfb9c.js +2 -0
  130. package/dist/node/column-views.74fcfb9c.js.map +1 -0
  131. package/dist/node/{column-views.75456275.js → column-views.784bac2a.js} +2 -2
  132. package/dist/node/{column-views.75456275.js.map → column-views.784bac2a.js.map} +1 -1
  133. package/dist/node/{column-views.0f401891.js → column-views.796fc1de.js} +2 -2
  134. package/dist/node/{column-views.0f401891.js.map → column-views.796fc1de.js.map} +1 -1
  135. package/dist/node/column-views.7b6e7d82.js +2 -0
  136. package/dist/node/column-views.7b6e7d82.js.map +1 -0
  137. package/dist/node/{column-views.7c322202.js → column-views.7e895e1a.js} +2 -2
  138. package/dist/node/{column-views.7c322202.js.map → column-views.7e895e1a.js.map} +1 -1
  139. package/dist/node/column-views.87d31e0a.js +2 -0
  140. package/dist/node/column-views.87d31e0a.js.map +1 -0
  141. package/dist/node/{column-views.59ce629d.js → column-views.94c8ce3e.js} +2 -2
  142. package/dist/node/{column-views.59ce629d.js.map → column-views.94c8ce3e.js.map} +1 -1
  143. package/dist/node/{column-views.48a3cfa3.js → column-views.951e3e9a.js} +2 -2
  144. package/dist/node/{column-views.48a3cfa3.js.map → column-views.951e3e9a.js.map} +1 -1
  145. package/dist/node/column-views.a0969fc8.js +2 -0
  146. package/dist/node/column-views.a0969fc8.js.map +1 -0
  147. package/dist/node/{column-views.67e7a200.js → column-views.b6613ab0.js} +2 -2
  148. package/dist/node/{column-views.67e7a200.js.map → column-views.b6613ab0.js.map} +1 -1
  149. package/dist/node/{column-views.d529d3aa.js → column-views.b762c9a8.js} +2 -2
  150. package/dist/node/{column-views.d529d3aa.js.map → column-views.b762c9a8.js.map} +1 -1
  151. package/dist/node/{column-views.e153680b.js → column-views.bdf05ed4.js} +2 -2
  152. package/dist/node/{column-views.e153680b.js.map → column-views.bdf05ed4.js.map} +1 -1
  153. package/dist/node/{column-views.fafbc028.js → column-views.d30231cb.js} +2 -2
  154. package/dist/node/{column-views.fafbc028.js.map → column-views.d30231cb.js.map} +1 -1
  155. package/dist/node/column-views.d86e6c7d.js +2 -0
  156. package/dist/node/column-views.d86e6c7d.js.map +1 -0
  157. package/dist/node/column-views.db3377d8.js +2 -0
  158. package/dist/node/column-views.db3377d8.js.map +1 -0
  159. package/dist/node/{column-views.2fe8feb9.js → column-views.f4063bc8.js} +2 -2
  160. package/dist/node/{column-views.2fe8feb9.js.map → column-views.f4063bc8.js.map} +1 -1
  161. package/dist/node/{column-views.3d0c2bea.js → column-views.f93b4175.js} +2 -2
  162. package/dist/node/{column-views.3d0c2bea.js.map → column-views.f93b4175.js.map} +1 -1
  163. package/dist/node/{column-views.cd54f1b1.js → column-views.fa5ee6de.js} +2 -2
  164. package/dist/node/{column-views.cd54f1b1.js.map → column-views.fa5ee6de.js.map} +1 -1
  165. package/dist/node/{column-views.08bef1f6.js → column-views.fe7a5452.js} +2 -2
  166. package/dist/node/{column-views.08bef1f6.js.map → column-views.fe7a5452.js.map} +1 -1
  167. package/dist/node/column-views.ffbffec7.js +2 -0
  168. package/dist/node/column-views.ffbffec7.js.map +1 -0
  169. package/dist/node/index.js +1 -1
  170. package/dist/node/index.js.map +1 -1
  171. package/package.json +4 -2
  172. package/src/age-model-overlay.ts +4 -2
  173. package/src/column.ts +18 -41
  174. package/src/correlation-chart/main.ts +24 -13
  175. package/src/correlation-chart/stories/correlation-chart.stories.ts +38 -17
  176. package/src/data-provider/base.ts +22 -0
  177. package/src/data-provider/core.ts +89 -0
  178. package/src/data-provider/fetch.ts +35 -10
  179. package/src/data-provider/store.ts +79 -88
  180. package/src/data-provider/unit-selection.ts +265 -159
  181. package/src/maps/column-correlation/core.ts +1 -1
  182. package/src/maps/column-correlation/state.ts +16 -1
  183. package/src/unit-details/panel.ts +44 -26
  184. package/src/unit-details/popover.ts +21 -9
  185. package/dist/esm/column-views.04636815.js +0 -15
  186. package/dist/esm/column-views.0a010643.js.map +0 -1
  187. package/dist/esm/column-views.4b259f9e.js +0 -136
  188. package/dist/esm/column-views.4b259f9e.js.map +0 -1
  189. package/dist/esm/column-views.6f96d1c3.js.map +0 -1
  190. package/dist/esm/column-views.8c296309.js.map +0 -1
  191. package/dist/esm/column-views.9d51a5ab.js.map +0 -1
  192. package/dist/esm/column-views.ad2fe46c.js.map +0 -1
  193. package/dist/esm/column-views.b9265595.js.map +0 -1
  194. package/dist/esm/column-views.c44febd0.js +0 -169
  195. package/dist/esm/column-views.c44febd0.js.map +0 -1
  196. package/dist/esm/column-views.ce3a3ac8.js.map +0 -1
  197. package/dist/esm/column-views.e075af15.js.map +0 -1
  198. package/dist/esm/column-views.e3f0cd7b.js.map +0 -1
  199. package/dist/node/column-views.0beae29d.js +0 -2
  200. package/dist/node/column-views.0beae29d.js.map +0 -1
  201. package/dist/node/column-views.46efb749.js +0 -2
  202. package/dist/node/column-views.46efb749.js.map +0 -1
  203. package/dist/node/column-views.7425d37b.js +0 -2
  204. package/dist/node/column-views.7425d37b.js.map +0 -1
  205. package/dist/node/column-views.868c04dc.js +0 -2
  206. package/dist/node/column-views.868c04dc.js.map +0 -1
  207. package/dist/node/column-views.8e846c57.js +0 -2
  208. package/dist/node/column-views.8e846c57.js.map +0 -1
  209. package/dist/node/column-views.c007152b.js +0 -2
  210. package/dist/node/column-views.c007152b.js.map +0 -1
  211. package/dist/node/column-views.d818b387.js +0 -2
  212. package/dist/node/column-views.d818b387.js.map +0 -1
  213. package/dist/node/column-views.dfe9a971.js +0 -2
  214. package/dist/node/column-views.dfe9a971.js.map +0 -1
  215. package/dist/node/column-views.e264a767.js +0 -2
  216. package/dist/node/column-views.e264a767.js.map +0 -1
  217. package/dist/node/column-views.ed2fd268.js +0 -2
  218. package/dist/node/column-views.ed2fd268.js.map +0 -1
  219. package/dist/node/column-views.fee4e65d.js +0 -2
  220. package/dist/node/column-views.fee4e65d.js.map +0 -1
@@ -1 +1 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,kB,C,C,iB,C,C,uB,C,C,a,C,C,sB,C,C,iB,C,C,iB,C,C,uB,C,K,+B,A,Q,kB,C,K,2B,A,Q,M,mB,A,Q,c,C,C,c,C,C,W,C,K,O,A,Q,M,Y,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,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCsBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAkCvB,SAAS,EACP,CAAe,CACf,EAA2B,CAAC,CAAC,EAE7B,GAAM,CAAA,cACJ,EAAgB,CAAA,CAAA,SAChB,EAAW,AAAA,EAAe,GAAG,CAAA,QAC7B,EAAU,CAAA,CACX,CAAG,EACE,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GACvB,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GAEvB,CAAC,EAAc,EAAU,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAU,GAEzD,EAAI,EAAM,GACV,EAAS,KAAK,GAAG,CAAC,EAAM,GAAgB,GAE9C,MAAO,CACL,EAAG,EAAS,CAAA,EAAI,CAAA,EAAiB,EACjC,EAAG,EAAI,EACP,OAAQ,EAAS,AAAU,EAAV,EACjB,MAAO,EAAgB,EAAQ,AAAU,EAAV,CACjC,CACF,CAEO,SAAS,EAAY,CAAK,EAC/B,GAAM,CACJ,SAAU,CAAC,CAAA,SACX,CAAQ,CAAA,UACR,CAAS,CAAA,cACT,EAAgB,CAAA,CAChB,SAAU,CAAC,CACX,SAAU,CAAE,CACZ,GAAG,EACJ,CAAG,EAEE,CAAA,SAAE,CAAQ,CAAE,CAAG,AAAA,IACf,EAAU,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,IACV,EAAS,CACb,GAAG,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","sources":["<anon>","packages/column-views/src/units/boxes.ts"],"sourcesContent":["import \"./column-views.e7e26765.js\";\nimport \"./column-views.c007152b.js\";\nimport \"./column-views.0beae29d.js\";\nimport \"./column-views.cdcce702.js\";\nimport \"./column-views.dbb4a46b.js\";\nimport \"./column-views.6bba8c57.js\";\nimport {ColumnAxisType as $jfrfr$ColumnAxisType, ColumnContext as $jfrfr$ColumnContext, ColumnLayoutContext as $jfrfr$ColumnLayoutContext, useColumn as $jfrfr$useColumn, useGeologicPattern as $jfrfr$useGeologicPattern, zigZagBoxPath as $jfrfr$zigZagBoxPath, ForeignObject as $jfrfr$ForeignObject, PatternDefsProvider as $jfrfr$PatternDefsProvider} from \"@macrostrat/column-components\";\nimport {SizeAwareLabel as $jfrfr$SizeAwareLabel} from \"@macrostrat/ui-components\";\nimport $jfrfr$macrostrathyper from \"@macrostrat/hyper\";\nimport {useContext as $jfrfr$useContext, forwardRef as $jfrfr$forwardRef, useMemo as $jfrfr$useMemo} from \"react\";\nimport $jfrfr$classnames from \"classnames\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\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\n\n\n\nvar $5VyZI = parcelRequire(\"5VyZI\");\n\nvar $lgTAP = parcelRequire(\"lgTAP\");\nvar $5SO8b = parcelRequire(\"5SO8b\");\n\nvar $klU0I = parcelRequire(\"klU0I\");\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $bfmPX = parcelRequire(\"bfmPX\");\nconst $82e068a44c11e855$var$h = (0, $jfrfr$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($klU0I))));\nfunction $82e068a44c11e855$var$useUnitRect(division, options = {}) {\n const { widthFraction: widthFraction = 1, axisType: axisType = (0, $jfrfr$ColumnAxisType).AGE, padding: padding = 0 } = options;\n const { scale: scale } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n const { width: width } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnLayoutContext));\n const [bottomHeight, topHeight] = (0, $iWhRv.getUnitHeightRange)(division, axisType);\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2\n };\n}\nfunction $82e068a44c11e855$export$d54fdbabca27e53(props) {\n const { division: d, children: children, className: className, widthFraction: widthFraction = 1, axisType: _, nColumns: __, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const lithMap = (0, $lgTAP.useLithologies)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const backgroundColor = (0, $bfmPX.getMixedUnitColor)(d, lithMap, null, false);\n const [ref, selected, onClick] = (0, $5SO8b.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h(\"rect.unit.background\", {\n ref: ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick: onClick\n }),\n $82e068a44c11e855$var$h.if(selected)(\"rect.selection-overlay\", bounds)\n ]);\n}\nfunction $82e068a44c11e855$export$1d8b9ae22d404866(props) {\n const { division: d, children: children, fill: fill, defaultFill: defaultFill = \"transparent\", className: className, widthFraction: widthFraction = 1, backgroundColor: backgroundColor, patternColor: patternColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom\n };\n const _patternID = patternID ?? (0, $5VyZI.resolveID)(d);\n let _fill = fill ?? (0, $jfrfr$useGeologicPattern)(_patternID, defaultFill);\n const hasBackgroundColor = backgroundColor != null;\n const _className = (0, $jfrfr$classnames)(className, {\n colored: hasBackgroundColor\n });\n const [ref, selected, onClick] = (0, $5SO8b.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick: onClick,\n className: \"background\"\n }),\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ref: ref,\n ...bounds,\n fill: _fill,\n onClick: //mask,\n onClick,\n className: \"unit\"\n }),\n $82e068a44c11e855$var$h.if(selected)($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n className: \"selection-overlay\"\n }),\n //defs,\n children\n ]);\n}\nconst $82e068a44c11e855$var$UnitRect = (0, $jfrfr$forwardRef)((props, ref)=>{\n const { x: x, y: y, width: width, height: height, overflowTop: overflowTop = false, overflowBottom: overflowBottom = false, ...rest } = props;\n if (!overflowTop && !overflowBottom) return $82e068a44c11e855$var$h(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n ref: ref,\n ...rest\n });\n else {\n const d = (0, $jfrfr$zigZagBoxPath)(x, y, width, height, overflowTop, overflowBottom);\n return $82e068a44c11e855$var$h(\"path\", {\n d: d,\n ref: ref,\n ...rest\n });\n }\n});\nfunction $82e068a44c11e855$export$b4f0ca233b98f9af(props) {\n const { division: division, label: label, onLabelUpdated: onLabelUpdated, widthFraction: widthFraction, showLabel: showLabel = true, backgroundColor: backgroundColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(division, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const { width: width, height: height } = bounds;\n return $82e068a44c11e855$var$h($82e068a44c11e855$export$1d8b9ae22d404866, {\n className: \"labeled-unit\",\n division: division,\n backgroundColor: backgroundColor,\n patternID: patternID,\n ...bounds\n }, [\n $82e068a44c11e855$var$h.if(showLabel)((0, $jfrfr$ForeignObject), {\n ...bounds,\n className: \"unit-label-container\"\n }, $82e068a44c11e855$var$h((0, $jfrfr$SizeAwareLabel), {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: {\n width: width,\n height: height\n },\n label: label,\n onVisibilityChanged (viz) {\n onLabelUpdated(label, viz);\n }\n }))\n ]);\n}\nfunction $82e068a44c11e855$export$5d1cdfabe8dc8085(props) {\n const { unitComponent: unitComponent = $82e068a44c11e855$export$1d8b9ae22d404866, unitComponentProps: unitComponentProps = {} } = props;\n const { divisions: divisions } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n const children = (0, $jfrfr$useMemo)(()=>{\n return divisions.map((division, i)=>{\n // @ts-ignore\n return $82e068a44c11e855$var$h(unitComponent, {\n division: division,\n key: division.unit_id,\n ...unitComponentProps\n });\n });\n }, [\n divisions,\n unitComponent,\n unitComponentProps\n ]);\n return $82e068a44c11e855$var$h((0, $jfrfr$PatternDefsProvider), {\n resolveID: $5VyZI.resolveID,\n scalePattern: $5VyZI.scalePattern\n }, $82e068a44c11e855$var$h(\"g.divisions\", children));\n}\n\n\nexport {$82e068a44c11e855$export$d54fdbabca27e53 as MinimalUnit, $82e068a44c11e855$export$1d8b9ae22d404866 as Unit, $82e068a44c11e855$export$b4f0ca233b98f9af as LabeledUnit, $82e068a44c11e855$export$5d1cdfabe8dc8085 as UnitBoxes};\n//# sourceMappingURL=column-views.c921fa1a.js.map\n","import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n zigZagBoxPath,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget, useLithologies } from \"../data-provider\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { getMixedUnitColor } from \"./colors\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions, Clickable, Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":["ColumnAxisType","$jfrfr$ColumnAxisType","ColumnContext","$jfrfr$ColumnContext","ColumnLayoutContext","$jfrfr$ColumnLayoutContext","useColumn","$jfrfr$useColumn","useGeologicPattern","$jfrfr$useGeologicPattern","zigZagBoxPath","$jfrfr$zigZagBoxPath","ForeignObject","$jfrfr$ForeignObject","PatternDefsProvider","$jfrfr$PatternDefsProvider","SizeAwareLabel","$jfrfr$SizeAwareLabel","$jfrfr$macrostrathyper","useContext","$jfrfr$useContext","forwardRef","$jfrfr$forwardRef","useMemo","$jfrfr$useMemo","$jfrfr$classnames","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$5VyZI","$lgTAP","$5SO8b","$klU0I","$iWhRv","$bfmPX","$82e068a44c11e855$var$h","styled","a","__esModule","default","$82e068a44c11e855$var$useUnitRect","division","options","widthFraction","axisType","AGE","padding","scale","width","bottomHeight","topHeight","getUnitHeightRange","y","height","Math","abs","x","$82e068a44c11e855$export$d54fdbabca27e53","props","d","children","className","_","nColumns","__","baseBounds","lithMap","useLithologies","bounds","backgroundColor","getMixedUnitColor","ref","selected","onClick","useUnitSelectionTarget","style","fill","fillOpacity","stroke","if","$82e068a44c11e855$export$1d8b9ae22d404866","defaultFill","patternColor","patternID","hasOverflowTop","t_clip_pos","hasOverflowBottom","b_clip_pos","overflowTop","overflowBottom","_patternID","resolveID","_fill","_className","colored","$82e068a44c11e855$var$UnitRect","rest","$82e068a44c11e855$export$b4f0ca233b98f9af","label","onLabelUpdated","showLabel","labelClassName","onVisibilityChanged","viz","$82e068a44c11e855$export$5d1cdfabe8dc8085","unitComponent","unitComponentProps","divisions","length","console","warn","map","i","key","unit_id","scalePattern","MinimalUnit","Unit","LabeledUnit","UnitBoxes"],"version":3,"file":"column-views.c921fa1a.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,kB,C,C,iB,C,C,uB,C,C,a,C,C,sB,C,C,iB,C,C,iB,C,C,uB,C,K,+B,A,Q,kB,C,K,2B,A,Q,M,mB,A,Q,c,C,C,c,C,C,W,C,K,O,A,Q,M,Y,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,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCsBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAkCvB,SAAS,EACP,CAAe,CACf,EAA2B,CAAC,CAAC,EAE7B,GAAM,CAAA,cACJ,EAAgB,CAAA,CAAA,SAChB,EAAW,AAAA,EAAe,GAAG,CAAA,QAC7B,EAAU,CAAA,CACX,CAAG,EACE,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GACvB,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GAEvB,CAAC,EAAc,EAAU,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAU,GAEzD,EAAI,EAAM,GACV,EAAS,KAAK,GAAG,CAAC,EAAM,GAAgB,GAE9C,MAAO,CACL,EAAG,EAAS,CAAA,EAAI,CAAA,EAAiB,EACjC,EAAG,EAAI,EACP,OAAQ,EAAS,AAAU,EAAV,EACjB,MAAO,EAAgB,EAAQ,AAAU,EAAV,CACjC,CACF,CAEO,SAAS,EAAY,CAAK,EAC/B,GAAM,CACJ,SAAU,CAAC,CAAA,SACX,CAAQ,CAAA,UACR,CAAS,CAAA,cACT,EAAgB,CAAA,CAChB,SAAU,CAAC,CACX,SAAU,CAAE,CACZ,GAAG,EACJ,CAAG,EAEE,CAAA,SAAE,CAAQ,CAAE,CAAG,AAAA,IACf,EAAU,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,IACV,EAAS,CACb,GAAG,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","sources":["<anon>","packages/column-views/src/units/boxes.ts"],"sourcesContent":["import \"./column-views.e7e26765.js\";\nimport \"./column-views.080781ca.js\";\nimport \"./column-views.7b6e7d82.js\";\nimport \"./column-views.cdcce702.js\";\nimport \"./column-views.dbb4a46b.js\";\nimport \"./column-views.6bba8c57.js\";\nimport {ColumnAxisType as $jfrfr$ColumnAxisType, ColumnContext as $jfrfr$ColumnContext, ColumnLayoutContext as $jfrfr$ColumnLayoutContext, useColumn as $jfrfr$useColumn, useGeologicPattern as $jfrfr$useGeologicPattern, zigZagBoxPath as $jfrfr$zigZagBoxPath, ForeignObject as $jfrfr$ForeignObject, PatternDefsProvider as $jfrfr$PatternDefsProvider} from \"@macrostrat/column-components\";\nimport {SizeAwareLabel as $jfrfr$SizeAwareLabel} from \"@macrostrat/ui-components\";\nimport $jfrfr$macrostrathyper from \"@macrostrat/hyper\";\nimport {useContext as $jfrfr$useContext, forwardRef as $jfrfr$forwardRef, useMemo as $jfrfr$useMemo} from \"react\";\nimport $jfrfr$classnames from \"classnames\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\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\n\n\n\nvar $5VyZI = parcelRequire(\"5VyZI\");\n\nvar $lgTAP = parcelRequire(\"lgTAP\");\nvar $5SO8b = parcelRequire(\"5SO8b\");\n\nvar $klU0I = parcelRequire(\"klU0I\");\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $bfmPX = parcelRequire(\"bfmPX\");\nconst $82e068a44c11e855$var$h = (0, $jfrfr$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($klU0I))));\nfunction $82e068a44c11e855$var$useUnitRect(division, options = {}) {\n const { widthFraction: widthFraction = 1, axisType: axisType = (0, $jfrfr$ColumnAxisType).AGE, padding: padding = 0 } = options;\n const { scale: scale } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n const { width: width } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnLayoutContext));\n const [bottomHeight, topHeight] = (0, $iWhRv.getUnitHeightRange)(division, axisType);\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2\n };\n}\nfunction $82e068a44c11e855$export$d54fdbabca27e53(props) {\n const { division: d, children: children, className: className, widthFraction: widthFraction = 1, axisType: _, nColumns: __, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const lithMap = (0, $lgTAP.useLithologies)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const backgroundColor = (0, $bfmPX.getMixedUnitColor)(d, lithMap, null, false);\n const [ref, selected, onClick] = (0, $5SO8b.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h(\"rect.unit.background\", {\n ref: ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick: onClick\n }),\n $82e068a44c11e855$var$h.if(selected)(\"rect.selection-overlay\", bounds)\n ]);\n}\nfunction $82e068a44c11e855$export$1d8b9ae22d404866(props) {\n const { division: d, children: children, fill: fill, defaultFill: defaultFill = \"transparent\", className: className, widthFraction: widthFraction = 1, backgroundColor: backgroundColor, patternColor: patternColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom\n };\n const _patternID = patternID ?? (0, $5VyZI.resolveID)(d);\n let _fill = fill ?? (0, $jfrfr$useGeologicPattern)(_patternID, defaultFill);\n const hasBackgroundColor = backgroundColor != null;\n const _className = (0, $jfrfr$classnames)(className, {\n colored: hasBackgroundColor\n });\n const [ref, selected, onClick] = (0, $5SO8b.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick: onClick,\n className: \"background\"\n }),\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ref: ref,\n ...bounds,\n fill: _fill,\n onClick: //mask,\n onClick,\n className: \"unit\"\n }),\n $82e068a44c11e855$var$h.if(selected)($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n className: \"selection-overlay\"\n }),\n //defs,\n children\n ]);\n}\nconst $82e068a44c11e855$var$UnitRect = (0, $jfrfr$forwardRef)((props, ref)=>{\n const { x: x, y: y, width: width, height: height, overflowTop: overflowTop = false, overflowBottom: overflowBottom = false, ...rest } = props;\n if (!overflowTop && !overflowBottom) return $82e068a44c11e855$var$h(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n ref: ref,\n ...rest\n });\n else {\n const d = (0, $jfrfr$zigZagBoxPath)(x, y, width, height, overflowTop, overflowBottom);\n return $82e068a44c11e855$var$h(\"path\", {\n d: d,\n ref: ref,\n ...rest\n });\n }\n});\nfunction $82e068a44c11e855$export$b4f0ca233b98f9af(props) {\n const { division: division, label: label, onLabelUpdated: onLabelUpdated, widthFraction: widthFraction, showLabel: showLabel = true, backgroundColor: backgroundColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(division, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const { width: width, height: height } = bounds;\n return $82e068a44c11e855$var$h($82e068a44c11e855$export$1d8b9ae22d404866, {\n className: \"labeled-unit\",\n division: division,\n backgroundColor: backgroundColor,\n patternID: patternID,\n ...bounds\n }, [\n $82e068a44c11e855$var$h.if(showLabel)((0, $jfrfr$ForeignObject), {\n ...bounds,\n className: \"unit-label-container\"\n }, $82e068a44c11e855$var$h((0, $jfrfr$SizeAwareLabel), {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: {\n width: width,\n height: height\n },\n label: label,\n onVisibilityChanged (viz) {\n onLabelUpdated(label, viz);\n }\n }))\n ]);\n}\nfunction $82e068a44c11e855$export$5d1cdfabe8dc8085(props) {\n const { unitComponent: unitComponent = $82e068a44c11e855$export$1d8b9ae22d404866, unitComponentProps: unitComponentProps = {} } = props;\n const { divisions: divisions } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n const children = (0, $jfrfr$useMemo)(()=>{\n return divisions.map((division, i)=>{\n // @ts-ignore\n return $82e068a44c11e855$var$h(unitComponent, {\n division: division,\n key: division.unit_id,\n ...unitComponentProps\n });\n });\n }, [\n divisions,\n unitComponent,\n unitComponentProps\n ]);\n return $82e068a44c11e855$var$h((0, $jfrfr$PatternDefsProvider), {\n resolveID: $5VyZI.resolveID,\n scalePattern: $5VyZI.scalePattern\n }, $82e068a44c11e855$var$h(\"g.divisions\", children));\n}\n\n\nexport {$82e068a44c11e855$export$d54fdbabca27e53 as MinimalUnit, $82e068a44c11e855$export$1d8b9ae22d404866 as Unit, $82e068a44c11e855$export$b4f0ca233b98f9af as LabeledUnit, $82e068a44c11e855$export$5d1cdfabe8dc8085 as UnitBoxes};\n//# sourceMappingURL=column-views.64fc40d6.js.map\n","import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n zigZagBoxPath,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget, useLithologies } from \"../data-provider\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { getMixedUnitColor } from \"./colors\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions, Clickable, Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":["ColumnAxisType","$jfrfr$ColumnAxisType","ColumnContext","$jfrfr$ColumnContext","ColumnLayoutContext","$jfrfr$ColumnLayoutContext","useColumn","$jfrfr$useColumn","useGeologicPattern","$jfrfr$useGeologicPattern","zigZagBoxPath","$jfrfr$zigZagBoxPath","ForeignObject","$jfrfr$ForeignObject","PatternDefsProvider","$jfrfr$PatternDefsProvider","SizeAwareLabel","$jfrfr$SizeAwareLabel","$jfrfr$macrostrathyper","useContext","$jfrfr$useContext","forwardRef","$jfrfr$forwardRef","useMemo","$jfrfr$useMemo","$jfrfr$classnames","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$5VyZI","$lgTAP","$5SO8b","$klU0I","$iWhRv","$bfmPX","$82e068a44c11e855$var$h","styled","a","__esModule","default","$82e068a44c11e855$var$useUnitRect","division","options","widthFraction","axisType","AGE","padding","scale","width","bottomHeight","topHeight","getUnitHeightRange","y","height","Math","abs","x","$82e068a44c11e855$export$d54fdbabca27e53","props","d","children","className","_","nColumns","__","baseBounds","lithMap","useLithologies","bounds","backgroundColor","getMixedUnitColor","ref","selected","onClick","useUnitSelectionTarget","style","fill","fillOpacity","stroke","if","$82e068a44c11e855$export$1d8b9ae22d404866","defaultFill","patternColor","patternID","hasOverflowTop","t_clip_pos","hasOverflowBottom","b_clip_pos","overflowTop","overflowBottom","_patternID","resolveID","_fill","_className","colored","$82e068a44c11e855$var$UnitRect","rest","$82e068a44c11e855$export$b4f0ca233b98f9af","label","onLabelUpdated","showLabel","labelClassName","onVisibilityChanged","viz","$82e068a44c11e855$export$5d1cdfabe8dc8085","unitComponent","unitComponentProps","divisions","length","console","warn","map","i","key","unit_id","scalePattern","MinimalUnit","Unit","LabeledUnit","UnitBoxes"],"version":3,"file":"column-views.64fc40d6.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./column-views.4ec769a6.js";import"./column-views.46efb749.js";import"./column-views.672b683c.js";import e from"@macrostrat/hyper";import{Box as t,useElementSize as a}from"@macrostrat/ui-components";import{group as r}from"d3-array";import{ColumnSVG as n,ColumnAxisType as o}from"@macrostrat/column-components";import{useRef as s}from"react";var l=globalThis,i={},u={},c=l.parcelRequirea149;null==c&&((c=function(e){if(e in i)return i[e].exports;if(e in u){var t=u[e];delete u[e];var a={id:e,exports:{}};return i[e]=a,t.call(a.exports,a,a.exports),a.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,t){u[e]=t},l.parcelRequirea149=c),c.register,Object.defineProperty({},"PBDBOccurrencesMatrix",{get:()=>d,set:void 0,enumerable:!0,configurable:!0});var p=c("dx7no"),m=c("wtIgl"),f=c("f7qDU");let x=e.styled(f&&f.__esModule?f.default:f);function d({columnID:e}){let a=(0,p.useFossilData)(e,p.FossilDataType.Occurrences),s=(0,m.useMacrostratColumnData)(),l=(0,m.useCompositeScale)();if(null==a)return null;let i=new Map(r(a,e=>e.unit_id)),{taxonRanges:u}=function(e,t,a=o.AGE){let r=new Map,n=new Map;for(let[e,a]of t.entries())for(let t of a){let a=t.best_name??t.taxon_name;r.has(a)||(r.set(a,new Set),n.set(a,[])),r.get(a).add(e),n.get(a).push(t)}let s=Array.from(r.entries()).sort((e,t)=>t[0].localeCompare(e[0])),l=new Map;for(let[t,n]of r.entries())l.set(t,function(e,t,a){let r=[],n=null;for(let s of e)t.has(s.unit_id)?null==n?n=a==o.DEPTH||a==o.HEIGHT?[s.t_pos,s.b_pos]:[s.t_age,s.b_age]:a==o.DEPTH||a==o.HEIGHT?n[1]=s.b_pos:n[1]=s.b_age:null!=n&&(r.push(n),n=null);return null!=n&&r.push(n),r}(e,n,a));return{occurrenceMap:t,taxonUnitMap:new Map(s),taxonOccurrenceMap:n,taxonRanges:l}}(s.units,i,s.axisType),c=Array.from(u.entries());return x(t,{className:"taxon-ranges",width:32+16*c.length,height:s.totalHeight},[x(g,{taxonEntries:c,padding:16,spacing:16,scale:l}),x(n,{width:32+16*c.length},x("g.taxa-occurrences-matrix",c.map(([e,t],a)=>x("g",{transform:`translate(${16+16*a})`},[t.map(([e,t])=>x("line",{y1:l(e),y2:l(t)}))]))))])}function g({taxonEntries:e,padding:t,spacing:a,scale:r}){return x("div.taxon-labels",[e.map(([e,n],o)=>{let s=r(n[0]?.[0]??0)-20;return s<200&&(s=0),x(_,{top:s,left:t+o*a,taxonName:e})})])}function _({top:e,left:t,taxonName:r}){let n=s(),o=a(n),l=o?.height??200;return x("div.taxon-label",{style:{top:`${e}px`,marginLeft:`${t}px`,"--label-width":`${l}px`}},x("div.taxon-label-inner",x("div.taxon-label-text",{ref:n},r)))}export{d as PBDBOccurrencesMatrix};
2
- //# sourceMappingURL=column-views.6556e004.js.map
1
+ import"./column-views.4ec769a6.js";import"./column-views.5c02450b.js";import"./column-views.672b683c.js";import e from"@macrostrat/hyper";import{Box as t,useElementSize as a}from"@macrostrat/ui-components";import{group as r}from"d3-array";import{ColumnSVG as n,ColumnAxisType as o}from"@macrostrat/column-components";import{useRef as s}from"react";var l=globalThis,i={},u={},c=l.parcelRequirea149;null==c&&((c=function(e){if(e in i)return i[e].exports;if(e in u){var t=u[e];delete u[e];var a={id:e,exports:{}};return i[e]=a,t.call(a.exports,a,a.exports),a.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,t){u[e]=t},l.parcelRequirea149=c),c.register,Object.defineProperty({},"PBDBOccurrencesMatrix",{get:()=>d,set:void 0,enumerable:!0,configurable:!0});var p=c("dx7no"),m=c("wtIgl"),f=c("f7qDU");let x=e.styled(f&&f.__esModule?f.default:f);function d({columnID:e}){let a=(0,p.useFossilData)(e,p.FossilDataType.Occurrences),s=(0,m.useMacrostratColumnData)(),l=(0,m.useCompositeScale)();if(null==a)return null;let i=new Map(r(a,e=>e.unit_id)),{taxonRanges:u}=function(e,t,a=o.AGE){let r=new Map,n=new Map;for(let[e,a]of t.entries())for(let t of a){let a=t.best_name??t.taxon_name;r.has(a)||(r.set(a,new Set),n.set(a,[])),r.get(a).add(e),n.get(a).push(t)}let s=Array.from(r.entries()).sort((e,t)=>t[0].localeCompare(e[0])),l=new Map;for(let[t,n]of r.entries())l.set(t,function(e,t,a){let r=[],n=null;for(let s of e)t.has(s.unit_id)?null==n?n=a==o.DEPTH||a==o.HEIGHT?[s.t_pos,s.b_pos]:[s.t_age,s.b_age]:a==o.DEPTH||a==o.HEIGHT?n[1]=s.b_pos:n[1]=s.b_age:null!=n&&(r.push(n),n=null);return null!=n&&r.push(n),r}(e,n,a));return{occurrenceMap:t,taxonUnitMap:new Map(s),taxonOccurrenceMap:n,taxonRanges:l}}(s.units,i,s.axisType),c=Array.from(u.entries());return x(t,{className:"taxon-ranges",width:32+16*c.length,height:s.totalHeight},[x(g,{taxonEntries:c,padding:16,spacing:16,scale:l}),x(n,{width:32+16*c.length},x("g.taxa-occurrences-matrix",c.map(([e,t],a)=>x("g",{transform:`translate(${16+16*a})`},[t.map(([e,t])=>x("line",{y1:l(e),y2:l(t)}))]))))])}function g({taxonEntries:e,padding:t,spacing:a,scale:r}){return x("div.taxon-labels",[e.map(([e,n],o)=>{let s=r(n[0]?.[0]??0)-20;return s<200&&(s=0),x(_,{top:s,left:t+o*a,taxonName:e})})])}function _({top:e,left:t,taxonName:r}){let n=s(),o=a(n),l=o?.height??200;return x("div.taxon-label",{style:{top:`${e}px`,marginLeft:`${t}px`,"--label-width":`${l}px`}},x("div.taxon-label-inner",x("div.taxon-label-text",{ref:n},r)))}export{d as PBDBOccurrencesMatrix};
2
+ //# sourceMappingURL=column-views.66663668.js.map
@@ -1 +1 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,O,C,C,kB,C,K,2B,A,Q,S,C,K,U,A,Q,a,C,C,kB,C,K,+B,A,Q,U,C,K,O,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,O,c,C,C,E,wB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,S,E,E,S,E,E,SCkBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAsB,CAAA,SAAE,CAAQ,CAAE,EAIhD,IAAM,EAAO,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,EAAU,AAAA,EAAA,cAAa,CAAE,WAAW,EACzD,EAAM,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IACN,EAAQ,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IAEd,GAAI,AAAQ,MAAR,EAAc,OAAO,KAGzB,IAAM,EAAgB,IAAI,IAAI,AAAA,EAAM,EAAM,AAAC,GAAM,EAAE,OAAO,GAOpD,CAAA,YAAE,CAAW,CAAE,CAFN,AA0GjB,SACE,CAAiB,CACjB,CAAmC,CACnC,EAA2B,AAAA,EAAe,GAAG,EAE7C,IAAM,EAAe,IAAI,IACnB,EAAqB,IAAI,IAE/B,IAAK,GAAM,CAAC,EAAS,EAAY,GAAI,EAAK,OAAO,GAC/C,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAY,EAAI,SAAS,EAAI,EAAI,UAAU,CAC5C,EAAa,GAAG,CAAC,KACpB,EAAa,GAAG,CAAC,EAAW,IAAI,KAChC,EAAmB,GAAG,CAAC,EAAW,EAAE,GAEtC,EAAa,GAAG,CAAC,GAAW,GAAG,CAAC,GAChC,EAAmB,GAAG,CAAC,GAAW,IAAI,CAAC,EACzC,CAIF,IAAM,EAAa,MAAM,IAAI,CAAC,EAAa,OAAO,IAAI,IAAI,CAAC,CAAC,EAAG,IAEtD,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAG1B,EAAc,IAAI,IACxB,IAAK,GAAM,CAAC,EAAW,EAAQ,GAAI,EAAa,OAAO,GACrD,EAAY,GAAG,CACb,EACA,AAYN,SACE,CAAgB,CAChB,CAA0B,CAC1B,CAAwB,EAExB,IAAM,EAAmC,EAAE,CACvC,EAAyC,KAE7C,IAAK,IAAM,KAAK,EACV,EAAc,GAAG,CAAC,EAAE,OAAO,EACzB,AAAiB,MAAjB,EAKA,EAHA,GAAY,AAAA,EAAe,KAAK,EAChC,GAAY,AAAA,EAAe,MAAM,CAEjB,CAAC,EAAE,KAAK,CAAE,EAAE,KAAK,CAAC,CAElB,CAAC,EAAE,KAAK,CAAE,EAAE,KAAK,CAAC,CAIlC,GAAY,AAAA,EAAe,KAAK,EAChC,GAAY,AAAA,EAAe,MAAM,CAEjC,CAAa,CAAC,EAAE,CAAG,EAAE,KAAK,CAE1B,CAAa,CAAC,EAAE,CAAG,EAAE,KAAK,CAIT,MAAjB,IACF,EAAQ,IAAI,CAAC,GACb,EAAgB,MAStB,OAJI,AAAiB,MAAjB,GACF,EAAQ,IAAI,CAAC,GAGR,CACT,EAtDgC,EAAO,EAAS,IAI9C,MAAO,CACL,cAAe,EACf,aAAc,IAAI,IAAI,GACtB,mBAAoB,EACpB,YAAA,CACF,CACF,EAlJwC,EAAI,KAAK,CAAE,EAAe,EAAI,QAAQ,EAOtE,EAAe,MAAM,IAAI,CAAC,EAAY,OAAO,IAKnD,OAAO,EAAE,EAAK,CAAE,UAAW,eAAgB,MAF7B,GAAc,AALZ,GAKsB,EAAa,MAAM,CAEP,OAAQ,EAAI,WAAW,AAAC,EAAG,CAC3E,EAAE,EAAuB,CACvB,aAAA,EACA,QAXY,GAYZ,QAXY,GAYZ,MAAA,CACF,GACA,EACE,EACA,CACE,MAAO,GAAc,AAjBX,GAiBqB,EAAa,MAAM,AACpD,EACA,EACE,4BACA,EAAa,GAAG,CAAC,CAAC,CAAC,EAAW,EAAO,CAAE,IAE9B,EAAE,IAAK,CAAE,UAAW,CAAC,UAAU,EADpB,AAvBV,GAuBoB,AAtBpB,GAsBoB,EACsB,CAAC,CAAC,AAAC,EAAG,CACtD,EAAO,GAAG,CAAC,CAAC,CAAC,EAAK,EAAO,GAChB,EAAE,OAAQ,CACf,GAAI,EAAM,GACV,GAAI,EAAM,EACZ,IAEH,KAIR,CACH,CAEA,SAAS,EAAsB,CAAA,aAAE,CAAY,CAAA,QAAE,CAAO,CAAA,QAAE,CAAO,CAAA,MAAE,CAAK,CAAE,EACtE,OAAO,EAAE,mBAAoB,CAC3B,EAAa,GAAG,CAAC,CAAC,CAAC,EAAW,EAAO,CAAE,KAErC,IAAI,EAAQ,EADA,CAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAI,GACL,GAGzB,OAFI,EAAQ,KAAK,CAAA,EAAQ,CAAA,EAElB,EAAE,EAAY,CACnB,IAAK,EACL,KAAM,EAAU,EAAW,EAC3B,UAAA,CACF,EACF,GACD,CACH,CAEA,SAAS,EAAW,CAAA,IAAE,CAAG,CAAA,KAAE,CAAI,CAAA,UAAE,CAAS,CAAE,EAC1C,IAAM,EAAM,AAAA,IACN,EAAW,AAAA,EAAe,GAC1B,EAAa,GAAU,QAAU,IACvC,OAAO,EACL,kBACA,CACE,MAAO,CACL,IAAK,CAAA,EAAG,EAAI,EAAE,CAAC,CACf,WAAY,CAAA,EAAG,EAAK,EAAE,CAAC,CACvB,gBAAiB,CAAA,EAAG,EAAW,EAAE,CAAC,AACpC,CACF,EACA,EAAE,wBAAyB,EAAE,uBAAwB,CAAE,IAAA,CAAI,EAAG,IAElE,Q,K,qB","sources":["<anon>","packages/column-views/src/facets/fossils/taxon-ranges.ts"],"sourcesContent":["import \"./column-views.4ec769a6.js\";\nimport \"./column-views.46efb749.js\";\nimport \"./column-views.672b683c.js\";\nimport $1vN9E$macrostrathyper from \"@macrostrat/hyper\";\nimport {Box as $1vN9E$Box, useElementSize as $1vN9E$useElementSize} from \"@macrostrat/ui-components\";\nimport {group as $1vN9E$group} from \"d3-array\";\nimport {ColumnSVG as $1vN9E$ColumnSVG, ColumnAxisType as $1vN9E$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {useRef as $1vN9E$useRef} from \"react\";\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 $9cea14fa75e12a56$exports = {};\n\n$parcel$export($9cea14fa75e12a56$exports, \"PBDBOccurrencesMatrix\", () => $9cea14fa75e12a56$export$652730986cccff7a);\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\n\n\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\nvar $f7qDU = parcelRequire(\"f7qDU\");\n\nconst $9cea14fa75e12a56$var$h = (0, $1vN9E$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($f7qDU))));\nfunction $9cea14fa75e12a56$export$652730986cccff7a({ columnID: columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */ const data = (0, $dx7no.useFossilData)(columnID, (0, $dx7no.FossilDataType).Occurrences);\n const col = (0, $wtIgl.useMacrostratColumnData)();\n const scale = (0, $wtIgl.useCompositeScale)();\n if (data == null) return null;\n // convert the data to a map\n const occurrenceMap = new Map((0, $1vN9E$group)(data, (d)=>d.unit_id));\n const matrix = $9cea14fa75e12a56$var$createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n const { taxonRanges: taxonRanges } = matrix;\n const padding = 16;\n const spacing = 16;\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n const width = padding * 2 + spacing * taxonEntries.length;\n return $9cea14fa75e12a56$var$h((0, $1vN9E$Box), {\n className: \"taxon-ranges\",\n width: width,\n height: col.totalHeight\n }, [\n $9cea14fa75e12a56$var$h($9cea14fa75e12a56$var$TaxonOccurrenceLabels, {\n taxonEntries: taxonEntries,\n padding: padding,\n spacing: spacing,\n scale: scale\n }),\n $9cea14fa75e12a56$var$h((0, $1vN9E$ColumnSVG), {\n width: padding * 2 + spacing * taxonEntries.length\n }, $9cea14fa75e12a56$var$h(\"g.taxa-occurrences-matrix\", taxonEntries.map(([taxonName, ranges], rowIndex)=>{\n const xPosition = padding + rowIndex * spacing;\n return $9cea14fa75e12a56$var$h(\"g\", {\n transform: `translate(${xPosition})`\n }, [\n ranges.map(([top, bottom])=>{\n return $9cea14fa75e12a56$var$h(\"line\", {\n y1: scale(top),\n y2: scale(bottom)\n });\n })\n ]);\n })))\n ]);\n}\nfunction $9cea14fa75e12a56$var$TaxonOccurrenceLabels({ taxonEntries: taxonEntries, padding: padding, spacing: spacing, scale: scale }) {\n return $9cea14fa75e12a56$var$h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex)=>{\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n return $9cea14fa75e12a56$var$h($9cea14fa75e12a56$var$TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName: taxonName\n });\n })\n ]);\n}\nfunction $9cea14fa75e12a56$var$TaxonLabel({ top: top, left: left, taxonName: taxonName }) {\n const ref = (0, $1vN9E$useRef)();\n const textSize = (0, $1vN9E$useElementSize)(ref);\n const labelWidth = textSize?.height ?? 200;\n return $9cea14fa75e12a56$var$h(\"div.taxon-label\", {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`\n }\n }, $9cea14fa75e12a56$var$h(\"div.taxon-label-inner\", $9cea14fa75e12a56$var$h(\"div.taxon-label-text\", {\n ref: ref\n }, taxonName)));\n}\nfunction $9cea14fa75e12a56$var$TaxonOccurrenceEntry({ xPosition: xPosition, ranges: ranges, scale: scale, name: name }) {\n return $9cea14fa75e12a56$var$h(\"g\", {\n transform: `translate(${xPosition})`\n }, [\n ranges.map(([top, bottom])=>{\n return $9cea14fa75e12a56$var$h(\"line\", {\n y1: scale(top),\n y2: scale(bottom)\n });\n })\n ]);\n}\nfunction $9cea14fa75e12a56$var$createOccurrenceMatrix(units, data, axisType = (0, $1vN9E$ColumnAxisType).AGE) {\n const taxonUnitMap = new Map();\n const taxonOccurrenceMap = new Map();\n for (const [unit_id, occurrences] of data.entries())for (const occ of occurrences){\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b)=>{\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n const taxonRanges = new Map();\n for (const [taxonName, unitSet] of taxonUnitMap.entries())taxonRanges.set(taxonName, $9cea14fa75e12a56$var$accumulatePresenceDomains(units, unitSet, axisType));\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges: taxonRanges\n };\n}\nfunction $9cea14fa75e12a56$var$accumulatePresenceDomains(unit, presenceUnits, axisType) {\n const domains = [];\n let currentDomain = null;\n for (const u of unit){\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (axisType == (0, $1vN9E$ColumnAxisType).DEPTH || axisType == (0, $1vN9E$ColumnAxisType).HEIGHT) currentDomain = [\n u.t_pos,\n u.b_pos\n ];\n else currentDomain = [\n u.t_age,\n u.b_age\n ];\n } else if (axisType == (0, $1vN9E$ColumnAxisType).DEPTH || axisType == (0, $1vN9E$ColumnAxisType).HEIGHT) currentDomain[1] = u.b_pos;\n else currentDomain[1] = u.b_age;\n } else if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n if (currentDomain != null) domains.push(currentDomain);\n return domains;\n}\n\n\nexport {$9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};\n//# sourceMappingURL=column-views.6556e004.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n PBDBEntity,\n PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport { Box, useElementSize } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType, ColumnSVG } from \"@macrostrat/column-components\";\nimport {\n useMacrostratColumnData,\n useCompositeScale,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport { useRef } from \"react\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBOccurrencesMatrix({ columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */\n const data = useFossilData(columnID, FossilDataType.Occurrences);\n const col = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null) return null;\n\n // convert the data to a map\n const occurrenceMap = new Map(group(data, (d) => d.unit_id)) as Map<\n number,\n PBDBOccurrence[]\n >;\n\n const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n\n const { taxonRanges } = matrix;\n\n const padding = 16;\n const spacing = 16;\n\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n\n const width = padding * 2 + spacing * taxonEntries.length;\n\n return h(Box, { className: \"taxon-ranges\", width, height: col.totalHeight }, [\n h(TaxonOccurrenceLabels, {\n taxonEntries,\n padding,\n spacing,\n scale,\n }),\n h(\n ColumnSVG,\n {\n width: padding * 2 + spacing * taxonEntries.length,\n },\n h(\n \"g.taxa-occurrences-matrix\",\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const xPosition = padding + rowIndex * spacing;\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n }),\n ),\n ),\n ]);\n}\n\nfunction TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {\n return h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n\n return h(TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName,\n });\n }),\n ]);\n}\n\nfunction TaxonLabel({ top, left, taxonName }) {\n const ref = useRef();\n const textSize = useElementSize(ref);\n const labelWidth = textSize?.height ?? 200;\n return h(\n \"div.taxon-label\",\n {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`,\n },\n },\n h(\"div.taxon-label-inner\", h(\"div.taxon-label-text\", { ref }, taxonName)),\n );\n}\n\ntype TaxonUnitMap = Map<string, Set<number>>;\n\ninterface OccurrenceMatrixData {\n occurrenceMap: Map<number, PBDBEntity[]>; // Map of unit IDs to occurrences (original data)\n taxonUnitMap: TaxonUnitMap; // Map of taxon names to sets of unit IDs\n taxonOccurrenceMap: Map<string, PBDBOccurrence[]>; // Map of taxon names to occurrences\n taxonRanges: Map<string, [number, number][]>; // Map of taxon names to [top, bottom] pixel ranges\n}\n\nfunction TaxonOccurrenceEntry({\n xPosition,\n ranges,\n scale,\n name,\n}: {\n xPosition: number;\n units: Set<number>;\n ranges: any;\n scale: any;\n name: string;\n}) {\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n}\n\nfunction createOccurrenceMatrix(\n units: UnitLong[],\n data: Map<number, PBDBOccurrence[]>,\n axisType: ColumnAxisType = ColumnAxisType.AGE,\n): OccurrenceMatrixData {\n const taxonUnitMap = new Map<string, Set<number>>();\n const taxonOccurrenceMap = new Map<string, PBDBOccurrence[]>();\n\n for (const [unit_id, occurrences] of data.entries()) {\n for (const occ of occurrences) {\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n }\n\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n\n const taxonRanges = new Map<string, [number, number][]>();\n for (const [taxonName, unitSet] of taxonUnitMap.entries()) {\n taxonRanges.set(\n taxonName,\n accumulatePresenceDomains(units, unitSet, axisType),\n );\n }\n\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges,\n };\n}\n\nfunction accumulatePresenceDomains(\n unit: UnitLong[],\n presenceUnits: Set<number>,\n axisType: ColumnAxisType,\n): Array<[number, number]> {\n const domains: Array<[number, number]> = [];\n let currentDomain: [number, number] | null = null;\n\n for (const u of unit) {\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain = [u.t_pos, u.b_pos];\n } else {\n currentDomain = [u.t_age, u.b_age];\n }\n } else {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain[1] = u.b_pos;\n } else {\n currentDomain[1] = u.b_age;\n }\n }\n } else {\n if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n }\n\n if (currentDomain != null) {\n domains.push(currentDomain);\n }\n\n return domains;\n}\n"],"names":["$1vN9E$macrostrathyper","Box","$1vN9E$Box","useElementSize","$1vN9E$useElementSize","group","$1vN9E$group","ColumnSVG","$1vN9E$ColumnSVG","ColumnAxisType","$1vN9E$ColumnAxisType","useRef","$1vN9E$useRef","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$9cea14fa75e12a56$export$652730986cccff7a","set","s","enumerable","configurable","$dx7no","$wtIgl","$f7qDU","$9cea14fa75e12a56$var$h","styled","a","__esModule","default","columnID","data","useFossilData","FossilDataType","Occurrences","col","useMacrostratColumnData","scale","useCompositeScale","occurrenceMap","Map","d","unit_id","taxonRanges","$9cea14fa75e12a56$var$createOccurrenceMatrix","units","axisType","AGE","taxonUnitMap","taxonOccurrenceMap","occurrences","entries","occ","taxonName","best_name","taxon_name","has","Set","add","push","sortedTaxa","Array","from","sort","b","localeCompare","unitSet","$9cea14fa75e12a56$var$accumulatePresenceDomains","unit","presenceUnits","domains","currentDomain","u","DEPTH","HEIGHT","t_pos","b_pos","t_age","b_age","taxonEntries","className","width","padding","spacing","length","height","totalHeight","$9cea14fa75e12a56$var$TaxonOccurrenceLabels","map","ranges","rowIndex","transform","top","bottom","y1","y2","topPx","$9cea14fa75e12a56$var$TaxonLabel","left","ref","textSize","labelWidth","style","marginLeft","PBDBOccurrencesMatrix"],"version":3,"file":"column-views.6556e004.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,O,C,C,kB,C,K,2B,A,Q,S,C,K,U,A,Q,a,C,C,kB,C,K,+B,A,Q,U,C,K,O,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,O,c,C,C,E,wB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,S,E,E,S,E,E,SCkBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAsB,CAAA,SAAE,CAAQ,CAAE,EAIhD,IAAM,EAAO,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,EAAU,AAAA,EAAA,cAAa,CAAE,WAAW,EACzD,EAAM,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IACN,EAAQ,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IAEd,GAAI,AAAQ,MAAR,EAAc,OAAO,KAGzB,IAAM,EAAgB,IAAI,IAAI,AAAA,EAAM,EAAM,AAAC,GAAM,EAAE,OAAO,GAOpD,CAAA,YAAE,CAAW,CAAE,CAFN,AA0GjB,SACE,CAAiB,CACjB,CAAmC,CACnC,EAA2B,AAAA,EAAe,GAAG,EAE7C,IAAM,EAAe,IAAI,IACnB,EAAqB,IAAI,IAE/B,IAAK,GAAM,CAAC,EAAS,EAAY,GAAI,EAAK,OAAO,GAC/C,IAAK,IAAM,KAAO,EAAa,CAC7B,IAAM,EAAY,EAAI,SAAS,EAAI,EAAI,UAAU,CAC5C,EAAa,GAAG,CAAC,KACpB,EAAa,GAAG,CAAC,EAAW,IAAI,KAChC,EAAmB,GAAG,CAAC,EAAW,EAAE,GAEtC,EAAa,GAAG,CAAC,GAAW,GAAG,CAAC,GAChC,EAAmB,GAAG,CAAC,GAAW,IAAI,CAAC,EACzC,CAIF,IAAM,EAAa,MAAM,IAAI,CAAC,EAAa,OAAO,IAAI,IAAI,CAAC,CAAC,EAAG,IAEtD,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAG1B,EAAc,IAAI,IACxB,IAAK,GAAM,CAAC,EAAW,EAAQ,GAAI,EAAa,OAAO,GACrD,EAAY,GAAG,CACb,EACA,AAYN,SACE,CAAgB,CAChB,CAA0B,CAC1B,CAAwB,EAExB,IAAM,EAAmC,EAAE,CACvC,EAAyC,KAE7C,IAAK,IAAM,KAAK,EACV,EAAc,GAAG,CAAC,EAAE,OAAO,EACzB,AAAiB,MAAjB,EAKA,EAHA,GAAY,AAAA,EAAe,KAAK,EAChC,GAAY,AAAA,EAAe,MAAM,CAEjB,CAAC,EAAE,KAAK,CAAE,EAAE,KAAK,CAAC,CAElB,CAAC,EAAE,KAAK,CAAE,EAAE,KAAK,CAAC,CAIlC,GAAY,AAAA,EAAe,KAAK,EAChC,GAAY,AAAA,EAAe,MAAM,CAEjC,CAAa,CAAC,EAAE,CAAG,EAAE,KAAK,CAE1B,CAAa,CAAC,EAAE,CAAG,EAAE,KAAK,CAIT,MAAjB,IACF,EAAQ,IAAI,CAAC,GACb,EAAgB,MAStB,OAJI,AAAiB,MAAjB,GACF,EAAQ,IAAI,CAAC,GAGR,CACT,EAtDgC,EAAO,EAAS,IAI9C,MAAO,CACL,cAAe,EACf,aAAc,IAAI,IAAI,GACtB,mBAAoB,EACpB,YAAA,CACF,CACF,EAlJwC,EAAI,KAAK,CAAE,EAAe,EAAI,QAAQ,EAOtE,EAAe,MAAM,IAAI,CAAC,EAAY,OAAO,IAKnD,OAAO,EAAE,EAAK,CAAE,UAAW,eAAgB,MAF7B,GAAc,AALZ,GAKsB,EAAa,MAAM,CAEP,OAAQ,EAAI,WAAW,AAAC,EAAG,CAC3E,EAAE,EAAuB,CACvB,aAAA,EACA,QAXY,GAYZ,QAXY,GAYZ,MAAA,CACF,GACA,EACE,EACA,CACE,MAAO,GAAc,AAjBX,GAiBqB,EAAa,MAAM,AACpD,EACA,EACE,4BACA,EAAa,GAAG,CAAC,CAAC,CAAC,EAAW,EAAO,CAAE,IAE9B,EAAE,IAAK,CAAE,UAAW,CAAC,UAAU,EADpB,AAvBV,GAuBoB,AAtBpB,GAsBoB,EACsB,CAAC,CAAC,AAAC,EAAG,CACtD,EAAO,GAAG,CAAC,CAAC,CAAC,EAAK,EAAO,GAChB,EAAE,OAAQ,CACf,GAAI,EAAM,GACV,GAAI,EAAM,EACZ,IAEH,KAIR,CACH,CAEA,SAAS,EAAsB,CAAA,aAAE,CAAY,CAAA,QAAE,CAAO,CAAA,QAAE,CAAO,CAAA,MAAE,CAAK,CAAE,EACtE,OAAO,EAAE,mBAAoB,CAC3B,EAAa,GAAG,CAAC,CAAC,CAAC,EAAW,EAAO,CAAE,KAErC,IAAI,EAAQ,EADA,CAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAI,GACL,GAGzB,OAFI,EAAQ,KAAK,CAAA,EAAQ,CAAA,EAElB,EAAE,EAAY,CACnB,IAAK,EACL,KAAM,EAAU,EAAW,EAC3B,UAAA,CACF,EACF,GACD,CACH,CAEA,SAAS,EAAW,CAAA,IAAE,CAAG,CAAA,KAAE,CAAI,CAAA,UAAE,CAAS,CAAE,EAC1C,IAAM,EAAM,AAAA,IACN,EAAW,AAAA,EAAe,GAC1B,EAAa,GAAU,QAAU,IACvC,OAAO,EACL,kBACA,CACE,MAAO,CACL,IAAK,CAAA,EAAG,EAAI,EAAE,CAAC,CACf,WAAY,CAAA,EAAG,EAAK,EAAE,CAAC,CACvB,gBAAiB,CAAA,EAAG,EAAW,EAAE,CAAC,AACpC,CACF,EACA,EAAE,wBAAyB,EAAE,uBAAwB,CAAE,IAAA,CAAI,EAAG,IAElE,Q,K,qB","sources":["<anon>","packages/column-views/src/facets/fossils/taxon-ranges.ts"],"sourcesContent":["import \"./column-views.4ec769a6.js\";\nimport \"./column-views.5c02450b.js\";\nimport \"./column-views.672b683c.js\";\nimport $1vN9E$macrostrathyper from \"@macrostrat/hyper\";\nimport {Box as $1vN9E$Box, useElementSize as $1vN9E$useElementSize} from \"@macrostrat/ui-components\";\nimport {group as $1vN9E$group} from \"d3-array\";\nimport {ColumnSVG as $1vN9E$ColumnSVG, ColumnAxisType as $1vN9E$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {useRef as $1vN9E$useRef} from \"react\";\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 $9cea14fa75e12a56$exports = {};\n\n$parcel$export($9cea14fa75e12a56$exports, \"PBDBOccurrencesMatrix\", () => $9cea14fa75e12a56$export$652730986cccff7a);\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\n\n\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\nvar $f7qDU = parcelRequire(\"f7qDU\");\n\nconst $9cea14fa75e12a56$var$h = (0, $1vN9E$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($f7qDU))));\nfunction $9cea14fa75e12a56$export$652730986cccff7a({ columnID: columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */ const data = (0, $dx7no.useFossilData)(columnID, (0, $dx7no.FossilDataType).Occurrences);\n const col = (0, $wtIgl.useMacrostratColumnData)();\n const scale = (0, $wtIgl.useCompositeScale)();\n if (data == null) return null;\n // convert the data to a map\n const occurrenceMap = new Map((0, $1vN9E$group)(data, (d)=>d.unit_id));\n const matrix = $9cea14fa75e12a56$var$createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n const { taxonRanges: taxonRanges } = matrix;\n const padding = 16;\n const spacing = 16;\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n const width = padding * 2 + spacing * taxonEntries.length;\n return $9cea14fa75e12a56$var$h((0, $1vN9E$Box), {\n className: \"taxon-ranges\",\n width: width,\n height: col.totalHeight\n }, [\n $9cea14fa75e12a56$var$h($9cea14fa75e12a56$var$TaxonOccurrenceLabels, {\n taxonEntries: taxonEntries,\n padding: padding,\n spacing: spacing,\n scale: scale\n }),\n $9cea14fa75e12a56$var$h((0, $1vN9E$ColumnSVG), {\n width: padding * 2 + spacing * taxonEntries.length\n }, $9cea14fa75e12a56$var$h(\"g.taxa-occurrences-matrix\", taxonEntries.map(([taxonName, ranges], rowIndex)=>{\n const xPosition = padding + rowIndex * spacing;\n return $9cea14fa75e12a56$var$h(\"g\", {\n transform: `translate(${xPosition})`\n }, [\n ranges.map(([top, bottom])=>{\n return $9cea14fa75e12a56$var$h(\"line\", {\n y1: scale(top),\n y2: scale(bottom)\n });\n })\n ]);\n })))\n ]);\n}\nfunction $9cea14fa75e12a56$var$TaxonOccurrenceLabels({ taxonEntries: taxonEntries, padding: padding, spacing: spacing, scale: scale }) {\n return $9cea14fa75e12a56$var$h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex)=>{\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n return $9cea14fa75e12a56$var$h($9cea14fa75e12a56$var$TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName: taxonName\n });\n })\n ]);\n}\nfunction $9cea14fa75e12a56$var$TaxonLabel({ top: top, left: left, taxonName: taxonName }) {\n const ref = (0, $1vN9E$useRef)();\n const textSize = (0, $1vN9E$useElementSize)(ref);\n const labelWidth = textSize?.height ?? 200;\n return $9cea14fa75e12a56$var$h(\"div.taxon-label\", {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`\n }\n }, $9cea14fa75e12a56$var$h(\"div.taxon-label-inner\", $9cea14fa75e12a56$var$h(\"div.taxon-label-text\", {\n ref: ref\n }, taxonName)));\n}\nfunction $9cea14fa75e12a56$var$TaxonOccurrenceEntry({ xPosition: xPosition, ranges: ranges, scale: scale, name: name }) {\n return $9cea14fa75e12a56$var$h(\"g\", {\n transform: `translate(${xPosition})`\n }, [\n ranges.map(([top, bottom])=>{\n return $9cea14fa75e12a56$var$h(\"line\", {\n y1: scale(top),\n y2: scale(bottom)\n });\n })\n ]);\n}\nfunction $9cea14fa75e12a56$var$createOccurrenceMatrix(units, data, axisType = (0, $1vN9E$ColumnAxisType).AGE) {\n const taxonUnitMap = new Map();\n const taxonOccurrenceMap = new Map();\n for (const [unit_id, occurrences] of data.entries())for (const occ of occurrences){\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b)=>{\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n const taxonRanges = new Map();\n for (const [taxonName, unitSet] of taxonUnitMap.entries())taxonRanges.set(taxonName, $9cea14fa75e12a56$var$accumulatePresenceDomains(units, unitSet, axisType));\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges: taxonRanges\n };\n}\nfunction $9cea14fa75e12a56$var$accumulatePresenceDomains(unit, presenceUnits, axisType) {\n const domains = [];\n let currentDomain = null;\n for (const u of unit){\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (axisType == (0, $1vN9E$ColumnAxisType).DEPTH || axisType == (0, $1vN9E$ColumnAxisType).HEIGHT) currentDomain = [\n u.t_pos,\n u.b_pos\n ];\n else currentDomain = [\n u.t_age,\n u.b_age\n ];\n } else if (axisType == (0, $1vN9E$ColumnAxisType).DEPTH || axisType == (0, $1vN9E$ColumnAxisType).HEIGHT) currentDomain[1] = u.b_pos;\n else currentDomain[1] = u.b_age;\n } else if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n if (currentDomain != null) domains.push(currentDomain);\n return domains;\n}\n\n\nexport {$9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};\n//# sourceMappingURL=column-views.66663668.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n PBDBEntity,\n PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport { Box, useElementSize } from \"@macrostrat/ui-components\";\nimport { group } from \"d3-array\";\nimport { ColumnAxisType, ColumnSVG } from \"@macrostrat/column-components\";\nimport {\n useMacrostratColumnData,\n useCompositeScale,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport { useRef } from \"react\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBOccurrencesMatrix({ columnID }) {\n /* A column for a matrix of taxon occurrences displayed as a table beside the main column. This will\n eventually be extended with first/last occurrence markers and range bars.\n */\n const data = useFossilData(columnID, FossilDataType.Occurrences);\n const col = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null) return null;\n\n // convert the data to a map\n const occurrenceMap = new Map(group(data, (d) => d.unit_id)) as Map<\n number,\n PBDBOccurrence[]\n >;\n\n const matrix = createOccurrenceMatrix(col.units, occurrenceMap, col.axisType);\n\n const { taxonRanges } = matrix;\n\n const padding = 16;\n const spacing = 16;\n\n const taxonEntries = Array.from(taxonRanges.entries());\n //const taxon = taxonEntries.slice(0, 50); // limit to top 50 taxa\n\n const width = padding * 2 + spacing * taxonEntries.length;\n\n return h(Box, { className: \"taxon-ranges\", width, height: col.totalHeight }, [\n h(TaxonOccurrenceLabels, {\n taxonEntries,\n padding,\n spacing,\n scale,\n }),\n h(\n ColumnSVG,\n {\n width: padding * 2 + spacing * taxonEntries.length,\n },\n h(\n \"g.taxa-occurrences-matrix\",\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const xPosition = padding + rowIndex * spacing;\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n }),\n ),\n ),\n ]);\n}\n\nfunction TaxonOccurrenceLabels({ taxonEntries, padding, spacing, scale }) {\n return h(\"div.taxon-labels\", [\n taxonEntries.map(([taxonName, ranges], rowIndex) => {\n const top = ranges[0]?.[0] ?? 0;\n let topPx = scale(top) - 20;\n if (topPx < 200) topPx = 0;\n\n return h(TaxonLabel, {\n top: topPx,\n left: padding + rowIndex * spacing,\n taxonName,\n });\n }),\n ]);\n}\n\nfunction TaxonLabel({ top, left, taxonName }) {\n const ref = useRef();\n const textSize = useElementSize(ref);\n const labelWidth = textSize?.height ?? 200;\n return h(\n \"div.taxon-label\",\n {\n style: {\n top: `${top}px`,\n marginLeft: `${left}px`,\n \"--label-width\": `${labelWidth}px`,\n },\n },\n h(\"div.taxon-label-inner\", h(\"div.taxon-label-text\", { ref }, taxonName)),\n );\n}\n\ntype TaxonUnitMap = Map<string, Set<number>>;\n\ninterface OccurrenceMatrixData {\n occurrenceMap: Map<number, PBDBEntity[]>; // Map of unit IDs to occurrences (original data)\n taxonUnitMap: TaxonUnitMap; // Map of taxon names to sets of unit IDs\n taxonOccurrenceMap: Map<string, PBDBOccurrence[]>; // Map of taxon names to occurrences\n taxonRanges: Map<string, [number, number][]>; // Map of taxon names to [top, bottom] pixel ranges\n}\n\nfunction TaxonOccurrenceEntry({\n xPosition,\n ranges,\n scale,\n name,\n}: {\n xPosition: number;\n units: Set<number>;\n ranges: any;\n scale: any;\n name: string;\n}) {\n return h(\"g\", { transform: `translate(${xPosition})` }, [\n ranges.map(([top, bottom]) => {\n return h(\"line\", {\n y1: scale(top),\n y2: scale(bottom),\n });\n }),\n ]);\n}\n\nfunction createOccurrenceMatrix(\n units: UnitLong[],\n data: Map<number, PBDBOccurrence[]>,\n axisType: ColumnAxisType = ColumnAxisType.AGE,\n): OccurrenceMatrixData {\n const taxonUnitMap = new Map<string, Set<number>>();\n const taxonOccurrenceMap = new Map<string, PBDBOccurrence[]>();\n\n for (const [unit_id, occurrences] of data.entries()) {\n for (const occ of occurrences) {\n const taxonName = occ.best_name ?? occ.taxon_name;\n if (!taxonUnitMap.has(taxonName)) {\n taxonUnitMap.set(taxonName, new Set());\n taxonOccurrenceMap.set(taxonName, []);\n }\n taxonUnitMap.get(taxonName).add(unit_id);\n taxonOccurrenceMap.get(taxonName).push(occ);\n }\n }\n\n // sort the taxon occurrence map by number of occurrences\n const sortedTaxa = Array.from(taxonUnitMap.entries()).sort((a, b) => {\n // Sort alphabetically by taxon name\n return b[0].localeCompare(a[0]);\n });\n\n const taxonRanges = new Map<string, [number, number][]>();\n for (const [taxonName, unitSet] of taxonUnitMap.entries()) {\n taxonRanges.set(\n taxonName,\n accumulatePresenceDomains(units, unitSet, axisType),\n );\n }\n\n return {\n occurrenceMap: data,\n taxonUnitMap: new Map(sortedTaxa),\n taxonOccurrenceMap: taxonOccurrenceMap,\n taxonRanges,\n };\n}\n\nfunction accumulatePresenceDomains(\n unit: UnitLong[],\n presenceUnits: Set<number>,\n axisType: ColumnAxisType,\n): Array<[number, number]> {\n const domains: Array<[number, number]> = [];\n let currentDomain: [number, number] | null = null;\n\n for (const u of unit) {\n if (presenceUnits.has(u.unit_id)) {\n if (currentDomain == null) {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain = [u.t_pos, u.b_pos];\n } else {\n currentDomain = [u.t_age, u.b_age];\n }\n } else {\n if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.HEIGHT\n ) {\n currentDomain[1] = u.b_pos;\n } else {\n currentDomain[1] = u.b_age;\n }\n }\n } else {\n if (currentDomain != null) {\n domains.push(currentDomain);\n currentDomain = null;\n }\n }\n }\n\n if (currentDomain != null) {\n domains.push(currentDomain);\n }\n\n return domains;\n}\n"],"names":["$1vN9E$macrostrathyper","Box","$1vN9E$Box","useElementSize","$1vN9E$useElementSize","group","$1vN9E$group","ColumnSVG","$1vN9E$ColumnSVG","ColumnAxisType","$1vN9E$ColumnAxisType","useRef","$1vN9E$useRef","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$9cea14fa75e12a56$export$652730986cccff7a","set","s","enumerable","configurable","$dx7no","$wtIgl","$f7qDU","$9cea14fa75e12a56$var$h","styled","a","__esModule","default","columnID","data","useFossilData","FossilDataType","Occurrences","col","useMacrostratColumnData","scale","useCompositeScale","occurrenceMap","Map","d","unit_id","taxonRanges","$9cea14fa75e12a56$var$createOccurrenceMatrix","units","axisType","AGE","taxonUnitMap","taxonOccurrenceMap","occurrences","entries","occ","taxonName","best_name","taxon_name","has","Set","add","push","sortedTaxa","Array","from","sort","b","localeCompare","unitSet","$9cea14fa75e12a56$var$accumulatePresenceDomains","unit","presenceUnits","domains","currentDomain","u","DEPTH","HEIGHT","t_pos","b_pos","t_age","b_age","taxonEntries","className","width","padding","spacing","length","height","totalHeight","$9cea14fa75e12a56$var$TaxonOccurrenceLabels","map","ranges","rowIndex","transform","top","bottom","y1","y2","topPx","$9cea14fa75e12a56$var$TaxonLabel","left","ref","textSize","labelWidth","style","marginLeft","PBDBOccurrencesMatrix"],"version":3,"file":"column-views.66663668.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./column-views.139b0855.js";import"./column-views.41876859.js";import"./column-views.cd54f1b1.js";import"./column-views.0f401891.js";import{useMapStyleOperator as e}from"@macrostrat/mapbox-react";import o from"@macrostrat/hyper";import{useMemo as t,useRef as r}from"react";import{setGeoJSON as n}from"@macrostrat/mapbox-utils";import{geoCentroid as l}from"d3-geo";var u=globalThis,a={},i={},s=u.parcelRequirea149;null==s&&((s=function(e){if(e in a)return a[e].exports;if(e in i){var o=i[e];delete i[e];var t={id:e,exports:{}};return a[e]=t,o.call(t.exports,t,t.exports),t.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,o){i[e]=o},u.parcelRequirea149=s),s.register,Object.defineProperty({},"ColumnNavigationMap",{get:()=>v,set:void 0,enumerable:!0,configurable:!0});var c=s("dETE9"),m=s("4pcLO"),d=s("c4zVj"),f=s("5fAA3");function v(e){let{columns:t,columnIDs:r,onSelectColumn:n,onHoverColumn:l,selectedColumn:u,hoveredColumn:a,projectID:i,children:s,inProcess:c,...m}=e;return o(d.ColumnNavigationProvider,{columns:t,columnIDs:r,onSelectColumn:n,onHoverColumn:l,selectedColumn:u,hoveredColumn:a,projectID:i,inProcess:c},o(p,e))}function p(e){let{padding:r=50,children:n,columnColor:l,showTriangulation:u,triangulationColor:a,keyboardNavigation:i=!0,...s}=e,d=t(()=>{let e=[(0,c.buildColumnsStyle)(l)];return u&&e.push((0,f.buildKeyboardNavigationStyle)(a)),e},[l,u,a]);return o(m.InsetMap,{...s,boxZoom:!1,dragRotate:!1,overlayStyles:d},[o(C),n,o.if(i)(f.ColumnKeyboardNavigation,{showTriangulation:u})])}function C({enabled:o=!0}){let t=(0,d.useColumnNavigationStore)(e=>e.columns),u=(0,d.useColumnNavigationStore)(e=>e.selectedColumn),a=(0,d.useColumnNavigationStore)(e=>e.hoveredColumn),i=(0,d.useColumnNavigationStore)(e=>e.selectColumn),s=(0,d.useColumnNavigationStore)(e=>e.setHoveredColumn);e(e=>{if(null==t)return;n(e,"columns",{type:"FeatureCollection",features:t});let o=o=>{0!=o.features.length&&(s(o.features[0].id),e.getCanvas().style.cursor="pointer")},r=()=>{s(null),e.getCanvas().style.cursor=""},l=e=>{0!=e.features.length&&i(e.features[0].id)},u=["columns-points","columns-fill"];return e.on("mousemove",u,o),e.on("mouseleave",u,r),e.on("click",u,l),()=>{e.off("mouseenter",u,o),e.off("mouseleave",u,r),e.off("click",u,l)}},[t,o]);let c=r(null);e(e=>{let o=c.current;a!=o&&(null!=o&&e.setFeatureState({source:"columns",id:o},{hover:!1}),c.current=a,e.setFeatureState({source:"columns",id:a},{hover:!0}))},[a,t]);let m=r(null),f=r(!0);return e(e=>{if(null==t)return;let o=m.current;if(u==o)return;null!=o&&e.setFeatureState({source:"columns",id:o},{selected:!1}),m.current=u,e.setFeatureState({source:"columns",id:u},{selected:!0});let r=t.find(e=>e.id==u)?.geometry;if(null==r)return;let n=l(r),a=f.current;e.easeTo({center:n},{duration:500*!a}),a&&(f.current=!1)},[u,t]),null}export{v as ColumnNavigationMap};
2
- //# sourceMappingURL=column-views.a14f0134.js.map
1
+ import"./column-views.139b0855.js";import"./column-views.41876859.js";import"./column-views.fa5ee6de.js";import"./column-views.796fc1de.js";import{useMapStyleOperator as e}from"@macrostrat/mapbox-react";import o from"@macrostrat/hyper";import{useMemo as t,useRef as r}from"react";import{setGeoJSON as n}from"@macrostrat/mapbox-utils";import{geoCentroid as l}from"d3-geo";var u=globalThis,a={},i={},s=u.parcelRequirea149;null==s&&((s=function(e){if(e in a)return a[e].exports;if(e in i){var o=i[e];delete i[e];var t={id:e,exports:{}};return a[e]=t,o.call(t.exports,t,t.exports),t.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,o){i[e]=o},u.parcelRequirea149=s),s.register,Object.defineProperty({},"ColumnNavigationMap",{get:()=>v,set:void 0,enumerable:!0,configurable:!0});var c=s("dETE9"),m=s("4pcLO"),d=s("c4zVj"),f=s("5fAA3");function v(e){let{columns:t,columnIDs:r,onSelectColumn:n,onHoverColumn:l,selectedColumn:u,hoveredColumn:a,projectID:i,children:s,inProcess:c,...m}=e;return o(d.ColumnNavigationProvider,{columns:t,columnIDs:r,onSelectColumn:n,onHoverColumn:l,selectedColumn:u,hoveredColumn:a,projectID:i,inProcess:c},o(p,e))}function p(e){let{padding:r=50,children:n,columnColor:l,showTriangulation:u,triangulationColor:a,keyboardNavigation:i=!0,...s}=e,d=t(()=>{let e=[(0,c.buildColumnsStyle)(l)];return u&&e.push((0,f.buildKeyboardNavigationStyle)(a)),e},[l,u,a]);return o(m.InsetMap,{...s,boxZoom:!1,dragRotate:!1,overlayStyles:d},[o(C),n,o.if(i)(f.ColumnKeyboardNavigation,{showTriangulation:u})])}function C({enabled:o=!0}){let t=(0,d.useColumnNavigationStore)(e=>e.columns),u=(0,d.useColumnNavigationStore)(e=>e.selectedColumn),a=(0,d.useColumnNavigationStore)(e=>e.hoveredColumn),i=(0,d.useColumnNavigationStore)(e=>e.selectColumn),s=(0,d.useColumnNavigationStore)(e=>e.setHoveredColumn);e(e=>{if(null==t)return;n(e,"columns",{type:"FeatureCollection",features:t});let o=o=>{0!=o.features.length&&(s(o.features[0].id),e.getCanvas().style.cursor="pointer")},r=()=>{s(null),e.getCanvas().style.cursor=""},l=e=>{0!=e.features.length&&i(e.features[0].id)},u=["columns-points","columns-fill"];return e.on("mousemove",u,o),e.on("mouseleave",u,r),e.on("click",u,l),()=>{e.off("mouseenter",u,o),e.off("mouseleave",u,r),e.off("click",u,l)}},[t,o]);let c=r(null);e(e=>{let o=c.current;a!=o&&(null!=o&&e.setFeatureState({source:"columns",id:o},{hover:!1}),c.current=a,e.setFeatureState({source:"columns",id:a},{hover:!0}))},[a,t]);let m=r(null),f=r(!0);return e(e=>{if(null==t)return;let o=m.current;if(u==o)return;null!=o&&e.setFeatureState({source:"columns",id:o},{selected:!1}),m.current=u,e.setFeatureState({source:"columns",id:u},{selected:!0});let r=t.find(e=>e.id==u)?.geometry;if(null==r)return;let n=l(r),a=f.current;e.easeTo({center:n},{duration:500*!a}),a&&(f.current=!1)},[u,t]),null}export{v as ColumnNavigationMap};
2
+ //# sourceMappingURL=column-views.6f0cb059.js.map
@@ -1 +1 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,uB,C,K,0B,A,Q,M,mB,A,Q,W,C,C,U,C,K,O,A,Q,c,C,K,0B,A,Q,e,C,K,Q,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,O,c,C,C,E,sB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,S,E,E,S,E,E,S,E,E,SCiCO,SAAS,EACd,CAAyD,EAEzD,GAAM,CAAA,QACJ,CAAO,CAAA,UACP,CAAS,CAAA,eACT,CAAc,CAAA,cACd,CAAa,CAAA,eACb,CAAc,CAAA,cACd,CAAa,CAAA,UACb,CAAS,CAAA,SACT,CAAQ,CAAA,UACR,CAAS,CACT,GAAG,EACJ,CAAG,EAEJ,OAAO,AAAA,EACL,EAAA,wBAAuB,CACvB,CACE,QAAA,EACA,UAAA,EACA,eAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,UAAA,EACA,UAAA,CACF,EACA,AAAA,EAAE,EAAsB,GAE5B,CAEA,SAAS,EAAqB,CAA+B,EAC3D,GAAM,CAAA,QACJ,EAAU,EAAA,CAAA,SACV,CAAQ,CAAA,YACR,CAAW,CAAA,kBACX,CAAiB,CAAA,mBACjB,CAAkB,CAAA,mBAClB,EAAqB,CAAA,CAAA,CACrB,GAAG,EACJ,CAAG,EAEE,EAAgB,AAAA,EAAQ,KAC5B,IAAI,EAAgB,CAAC,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,EAAkB,GAAa,CAIpD,OAHI,GACF,EAAO,IAAI,CAAC,AAAA,CAAA,EAAA,EAAA,4BAA2B,AAA3B,EAA6B,IAEpC,CACT,EAAG,CAAC,EAAa,EAAmB,EAAmB,EAEvD,OAAO,AAAA,EACL,EAAA,QAAO,CACP,CACE,GAAG,CAAI,CACP,QAAS,CAAA,EACT,WAAY,CAAA,EACZ,cAAA,CACF,EACA,CACE,AAAA,EAAE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","sources":["<anon>","packages/column-views/src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import \"./column-views.139b0855.js\";\nimport \"./column-views.41876859.js\";\nimport \"./column-views.cd54f1b1.js\";\nimport \"./column-views.0f401891.js\";\nimport {useMapStyleOperator as $li42A$useMapStyleOperator} from \"@macrostrat/mapbox-react\";\nimport $li42A$macrostrathyper from \"@macrostrat/hyper\";\nimport {useMemo as $li42A$useMemo, useRef as $li42A$useRef} from \"react\";\nimport {setGeoJSON as $li42A$setGeoJSON} from \"@macrostrat/mapbox-utils\";\nimport {geoCentroid as $li42A$geoCentroid} 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}\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 $44d1d5e5d8e823d1$exports = {};\n\n$parcel$export($44d1d5e5d8e823d1$exports, \"ColumnNavigationMap\", () => $44d1d5e5d8e823d1$export$821baedf611249f3);\n\n\n\n\nvar $dETE9 = parcelRequire(\"dETE9\");\nvar $4pcLO = parcelRequire(\"4pcLO\");\n\n\nvar $c4zVj = parcelRequire(\"c4zVj\");\n\n\nvar $5fAA3 = parcelRequire(\"5fAA3\");\nfunction $44d1d5e5d8e823d1$export$821baedf611249f3(props) {\n const { columns: columns, columnIDs: columnIDs, onSelectColumn: onSelectColumn, onHoverColumn: onHoverColumn, selectedColumn: selectedColumn, hoveredColumn: hoveredColumn, projectID: projectID, children: children, inProcess: inProcess, ...rest } = props;\n return (0, $li42A$macrostrathyper)((0, $c4zVj.ColumnNavigationProvider), {\n columns: columns,\n columnIDs: columnIDs,\n onSelectColumn: onSelectColumn,\n onHoverColumn: onHoverColumn,\n selectedColumn: selectedColumn,\n hoveredColumn: hoveredColumn,\n projectID: projectID,\n inProcess: inProcess\n }, (0, $li42A$macrostrathyper)($44d1d5e5d8e823d1$var$_ColumnNavigationMap, props));\n}\nfunction $44d1d5e5d8e823d1$var$_ColumnNavigationMap(props) {\n const { padding: padding = 50, children: children, columnColor: columnColor, showTriangulation: showTriangulation, triangulationColor: triangulationColor, keyboardNavigation: keyboardNavigation = true, ...rest } = props;\n const overlayStyles = (0, $li42A$useMemo)(()=>{\n let styles = [\n (0, $dETE9.buildColumnsStyle)(columnColor)\n ];\n if (showTriangulation) styles.push((0, $5fAA3.buildKeyboardNavigationStyle)(triangulationColor));\n return styles;\n }, [\n columnColor,\n showTriangulation,\n triangulationColor\n ]);\n return (0, $li42A$macrostrathyper)((0, $4pcLO.InsetMap), {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles: overlayStyles\n }, [\n (0, $li42A$macrostrathyper)($44d1d5e5d8e823d1$var$ColumnsLayer),\n children,\n (0, $li42A$macrostrathyper).if(keyboardNavigation)((0, $5fAA3.ColumnKeyboardNavigation), {\n showTriangulation: showTriangulation\n })\n ]);\n}\nfunction $44d1d5e5d8e823d1$var$ColumnsLayer({ enabled: enabled = true }) {\n const columns = (0, $c4zVj.useColumnNavigationStore)((state)=>state.columns);\n const selectedColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.selectedColumn);\n const hoveredColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.hoveredColumn);\n const selectColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.selectColumn);\n const setHoveredColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.setHoveredColumn);\n (0, $li42A$useMapStyleOperator)((map)=>{\n if (columns == null) return;\n const data = {\n type: \"FeatureCollection\",\n features: columns\n };\n (0, $li42A$setGeoJSON)(map, \"columns\", data);\n const mouseMove = (event)=>{\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = ()=>{\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n const clickHandler = (event)=>{\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n // Setup hover styles on map\n const layers = [\n \"columns-points\",\n \"columns-fill\"\n ];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n return ()=>{\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n }, [\n columns,\n enabled\n ]);\n const hoveredColumnRef = (0, $li42A$useRef)(null);\n (0, $li42A$useMapStyleOperator)((map)=>{\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) // Deselect previous column\n map.setFeatureState({\n source: \"columns\",\n id: prevHoveredColumn\n }, {\n hover: false\n });\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState({\n source: \"columns\",\n id: hoveredColumn\n }, {\n hover: true\n });\n }, [\n hoveredColumn,\n columns\n ]);\n /** Set feature state for selected columns */ const selectedColumnRef = (0, $li42A$useRef)(null);\n const initialRenderRef = (0, $li42A$useRef)(true);\n (0, $li42A$useMapStyleOperator)((map)=>{\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) // Deselect previous column\n map.setFeatureState({\n source: \"columns\",\n id: prevSelectedColumn\n }, {\n selected: false\n });\n selectedColumnRef.current = selectedColumn;\n // Select the current column\n map.setFeatureState({\n source: \"columns\",\n id: selectedColumn\n }, {\n selected: true\n });\n // Center the selected column\n const columnGeometry = columns.find((d)=>d.id == selectedColumn)?.geometry;\n if (columnGeometry == null) return;\n const center = (0, $li42A$geoCentroid)(columnGeometry);\n const isInitialRender = initialRenderRef.current;\n map.easeTo({\n center: center\n }, {\n duration: isInitialRender ? 0 : 500\n });\n if (isInitialRender) initialRenderRef.current = false;\n }, [\n selectedColumn,\n columns\n ]);\n return null;\n}\n\n\nexport {$44d1d5e5d8e823d1$export$821baedf611249f3 as ColumnNavigationMap};\n//# sourceMappingURL=column-views.a14f0134.js.map\n","import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n children,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, props),\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n children,\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n ],\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled],\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false },\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true },\n );\n },\n [hoveredColumn, columns],\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false },\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true },\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn,\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns],\n );\n\n return null;\n}\n"],"names":["useMapStyleOperator","$li42A$useMapStyleOperator","$li42A$macrostrathyper","useMemo","$li42A$useMemo","useRef","$li42A$useRef","setGeoJSON","$li42A$setGeoJSON","geoCentroid","$li42A$geoCentroid","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$44d1d5e5d8e823d1$export$821baedf611249f3","set","s","enumerable","configurable","$dETE9","$4pcLO","$c4zVj","$5fAA3","props","columns","columnIDs","onSelectColumn","onHoverColumn","selectedColumn","hoveredColumn","projectID","children","inProcess","rest","ColumnNavigationProvider","$44d1d5e5d8e823d1$var$_ColumnNavigationMap","padding","columnColor","showTriangulation","triangulationColor","keyboardNavigation","overlayStyles","styles","buildColumnsStyle","push","buildKeyboardNavigationStyle","InsetMap","boxZoom","dragRotate","$44d1d5e5d8e823d1$var$ColumnsLayer","if","ColumnKeyboardNavigation","enabled","useColumnNavigationStore","state","selectColumn","setHoveredColumn","map","type","features","mouseMove","event","length","hoveredFeature","getCanvas","style","cursor","mouseLeave","clickHandler","layers","on","off","hoveredColumnRef","prevHoveredColumn","current","setFeatureState","source","hover","selectedColumnRef","initialRenderRef","prevSelectedColumn","selected","columnGeometry","find","d","geometry","center","isInitialRender","easeTo","duration","ColumnNavigationMap"],"version":3,"file":"column-views.a14f0134.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,uB,C,K,0B,A,Q,M,mB,A,Q,W,C,C,U,C,K,O,A,Q,c,C,K,0B,A,Q,e,C,K,Q,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,O,c,C,C,E,sB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,S,E,E,S,E,E,S,E,E,SCiCO,SAAS,EACd,CAAyD,EAEzD,GAAM,CAAA,QACJ,CAAO,CAAA,UACP,CAAS,CAAA,eACT,CAAc,CAAA,cACd,CAAa,CAAA,eACb,CAAc,CAAA,cACd,CAAa,CAAA,UACb,CAAS,CAAA,SACT,CAAQ,CAAA,UACR,CAAS,CACT,GAAG,EACJ,CAAG,EAEJ,OAAO,AAAA,EACL,EAAA,wBAAuB,CACvB,CACE,QAAA,EACA,UAAA,EACA,eAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,UAAA,EACA,UAAA,CACF,EACA,AAAA,EAAE,EAAsB,GAE5B,CAEA,SAAS,EAAqB,CAA+B,EAC3D,GAAM,CAAA,QACJ,EAAU,EAAA,CAAA,SACV,CAAQ,CAAA,YACR,CAAW,CAAA,kBACX,CAAiB,CAAA,mBACjB,CAAkB,CAAA,mBAClB,EAAqB,CAAA,CAAA,CACrB,GAAG,EACJ,CAAG,EAEE,EAAgB,AAAA,EAAQ,KAC5B,IAAI,EAAgB,CAAC,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,EAAkB,GAAa,CAIpD,OAHI,GACF,EAAO,IAAI,CAAC,AAAA,CAAA,EAAA,EAAA,4BAA2B,AAA3B,EAA6B,IAEpC,CACT,EAAG,CAAC,EAAa,EAAmB,EAAmB,EAEvD,OAAO,AAAA,EACL,EAAA,QAAO,CACP,CACE,GAAG,CAAI,CACP,QAAS,CAAA,EACT,WAAY,CAAA,EACZ,cAAA,CACF,EACA,CACE,AAAA,EAAE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","sources":["<anon>","packages/column-views/src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import \"./column-views.139b0855.js\";\nimport \"./column-views.41876859.js\";\nimport \"./column-views.fa5ee6de.js\";\nimport \"./column-views.796fc1de.js\";\nimport {useMapStyleOperator as $li42A$useMapStyleOperator} from \"@macrostrat/mapbox-react\";\nimport $li42A$macrostrathyper from \"@macrostrat/hyper\";\nimport {useMemo as $li42A$useMemo, useRef as $li42A$useRef} from \"react\";\nimport {setGeoJSON as $li42A$setGeoJSON} from \"@macrostrat/mapbox-utils\";\nimport {geoCentroid as $li42A$geoCentroid} 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}\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 $44d1d5e5d8e823d1$exports = {};\n\n$parcel$export($44d1d5e5d8e823d1$exports, \"ColumnNavigationMap\", () => $44d1d5e5d8e823d1$export$821baedf611249f3);\n\n\n\n\nvar $dETE9 = parcelRequire(\"dETE9\");\nvar $4pcLO = parcelRequire(\"4pcLO\");\n\n\nvar $c4zVj = parcelRequire(\"c4zVj\");\n\n\nvar $5fAA3 = parcelRequire(\"5fAA3\");\nfunction $44d1d5e5d8e823d1$export$821baedf611249f3(props) {\n const { columns: columns, columnIDs: columnIDs, onSelectColumn: onSelectColumn, onHoverColumn: onHoverColumn, selectedColumn: selectedColumn, hoveredColumn: hoveredColumn, projectID: projectID, children: children, inProcess: inProcess, ...rest } = props;\n return (0, $li42A$macrostrathyper)((0, $c4zVj.ColumnNavigationProvider), {\n columns: columns,\n columnIDs: columnIDs,\n onSelectColumn: onSelectColumn,\n onHoverColumn: onHoverColumn,\n selectedColumn: selectedColumn,\n hoveredColumn: hoveredColumn,\n projectID: projectID,\n inProcess: inProcess\n }, (0, $li42A$macrostrathyper)($44d1d5e5d8e823d1$var$_ColumnNavigationMap, props));\n}\nfunction $44d1d5e5d8e823d1$var$_ColumnNavigationMap(props) {\n const { padding: padding = 50, children: children, columnColor: columnColor, showTriangulation: showTriangulation, triangulationColor: triangulationColor, keyboardNavigation: keyboardNavigation = true, ...rest } = props;\n const overlayStyles = (0, $li42A$useMemo)(()=>{\n let styles = [\n (0, $dETE9.buildColumnsStyle)(columnColor)\n ];\n if (showTriangulation) styles.push((0, $5fAA3.buildKeyboardNavigationStyle)(triangulationColor));\n return styles;\n }, [\n columnColor,\n showTriangulation,\n triangulationColor\n ]);\n return (0, $li42A$macrostrathyper)((0, $4pcLO.InsetMap), {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles: overlayStyles\n }, [\n (0, $li42A$macrostrathyper)($44d1d5e5d8e823d1$var$ColumnsLayer),\n children,\n (0, $li42A$macrostrathyper).if(keyboardNavigation)((0, $5fAA3.ColumnKeyboardNavigation), {\n showTriangulation: showTriangulation\n })\n ]);\n}\nfunction $44d1d5e5d8e823d1$var$ColumnsLayer({ enabled: enabled = true }) {\n const columns = (0, $c4zVj.useColumnNavigationStore)((state)=>state.columns);\n const selectedColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.selectedColumn);\n const hoveredColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.hoveredColumn);\n const selectColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.selectColumn);\n const setHoveredColumn = (0, $c4zVj.useColumnNavigationStore)((state)=>state.setHoveredColumn);\n (0, $li42A$useMapStyleOperator)((map)=>{\n if (columns == null) return;\n const data = {\n type: \"FeatureCollection\",\n features: columns\n };\n (0, $li42A$setGeoJSON)(map, \"columns\", data);\n const mouseMove = (event)=>{\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = ()=>{\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n const clickHandler = (event)=>{\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n // Setup hover styles on map\n const layers = [\n \"columns-points\",\n \"columns-fill\"\n ];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n return ()=>{\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n }, [\n columns,\n enabled\n ]);\n const hoveredColumnRef = (0, $li42A$useRef)(null);\n (0, $li42A$useMapStyleOperator)((map)=>{\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) // Deselect previous column\n map.setFeatureState({\n source: \"columns\",\n id: prevHoveredColumn\n }, {\n hover: false\n });\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState({\n source: \"columns\",\n id: hoveredColumn\n }, {\n hover: true\n });\n }, [\n hoveredColumn,\n columns\n ]);\n /** Set feature state for selected columns */ const selectedColumnRef = (0, $li42A$useRef)(null);\n const initialRenderRef = (0, $li42A$useRef)(true);\n (0, $li42A$useMapStyleOperator)((map)=>{\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) // Deselect previous column\n map.setFeatureState({\n source: \"columns\",\n id: prevSelectedColumn\n }, {\n selected: false\n });\n selectedColumnRef.current = selectedColumn;\n // Select the current column\n map.setFeatureState({\n source: \"columns\",\n id: selectedColumn\n }, {\n selected: true\n });\n // Center the selected column\n const columnGeometry = columns.find((d)=>d.id == selectedColumn)?.geometry;\n if (columnGeometry == null) return;\n const center = (0, $li42A$geoCentroid)(columnGeometry);\n const isInitialRender = initialRenderRef.current;\n map.easeTo({\n center: center\n }, {\n duration: isInitialRender ? 0 : 500\n });\n if (isInitialRender) initialRenderRef.current = false;\n }, [\n selectedColumn,\n columns\n ]);\n return null;\n}\n\n\nexport {$44d1d5e5d8e823d1$export$821baedf611249f3 as ColumnNavigationMap};\n//# sourceMappingURL=column-views.6f0cb059.js.map\n","import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n children,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, props),\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n children,\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n ],\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled],\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false },\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true },\n );\n },\n [hoveredColumn, columns],\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false },\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true },\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn,\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns],\n );\n\n return null;\n}\n"],"names":["useMapStyleOperator","$li42A$useMapStyleOperator","$li42A$macrostrathyper","useMemo","$li42A$useMemo","useRef","$li42A$useRef","setGeoJSON","$li42A$setGeoJSON","geoCentroid","$li42A$geoCentroid","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$44d1d5e5d8e823d1$export$821baedf611249f3","set","s","enumerable","configurable","$dETE9","$4pcLO","$c4zVj","$5fAA3","props","columns","columnIDs","onSelectColumn","onHoverColumn","selectedColumn","hoveredColumn","projectID","children","inProcess","rest","ColumnNavigationProvider","$44d1d5e5d8e823d1$var$_ColumnNavigationMap","padding","columnColor","showTriangulation","triangulationColor","keyboardNavigation","overlayStyles","styles","buildColumnsStyle","push","buildKeyboardNavigationStyle","InsetMap","boxZoom","dragRotate","$44d1d5e5d8e823d1$var$ColumnsLayer","if","ColumnKeyboardNavigation","enabled","useColumnNavigationStore","state","selectColumn","setHoveredColumn","map","type","features","mouseMove","event","length","hoveredFeature","getCanvas","style","cursor","mouseLeave","clickHandler","layers","on","off","hoveredColumnRef","prevHoveredColumn","current","setFeatureState","source","hover","selectedColumnRef","initialRenderRef","prevSelectedColumn","selected","columnGeometry","find","d","geometry","center","isInitialRender","easeTo","duration","ColumnNavigationMap"],"version":3,"file":"column-views.6f0cb059.js.map","sourceRoot":"../../../../"}
@@ -1,2 +1,2 @@
1
- import"./column-views.4ec769a6.js";import"./column-views.3a947d58.js";import"./column-views.46efb749.js";import"./column-views.672b683c.js";import"./column-views.dbb4a46b.js";import"./column-views.6556e004.js";import e from"@macrostrat/hyper";import{ColumnAxisType as t}from"@macrostrat/column-components";import{scaleLinear as n}from"d3-scale";function o(e,t,n,o){Object.defineProperty(e,t,{get:n,set:o,enumerable:!0,configurable:!0})}var l=globalThis,a={},r={},s=l.parcelRequirea149;null==s&&((s=function(e){if(e in a)return a[e].exports;if(e in r){var t=r[e];delete r[e];var n={id:e,exports:{}};return a[e]=n,t.call(n.exports,n,n.exports),n.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){r[e]=t},l.parcelRequirea149=s),s.register;var i={};o(i,"PBDBFossilsColumn",()=>b),o(i,"FossilDataType",()=>s("dx7no").FossilDataType),o(i,"useFossilData",()=>s("dx7no").useFossilData);var u=s("dx7no"),c=s("kIQUG"),f=s("wtIgl"),m=s("f7qDU"),p=s("iWhRv"),d=s("6dOaS");let _=e.styled(m&&m.__esModule?m.default:m);function b({columnID:e,type:o=u.FossilDataType.Collections}){let l=(0,u.useFossilData)(e,o),{axisType:a,units:r}=(0,f.useMacrostratColumnData)(),s=(0,f.useCompositeScale)();if(null==l||null==r||null==s)return null;let i=function(e,o,l,a,r){let{groupCloseNotes:s=!0}=(void 0)??{},i=new Map;for(let l of e){let e=function(e,o,l){let a=null;if(null!=e.slb&&"mbsf"==e.slu&&(a=Number(e.slb),l===t.DEPTH))return{height:a};if(null==e.unit_id)return null;if(null!=a){let r=o.find(t=>t.unit_id===e.unit_id);if(null==r)return null;let s=function(e,t,o){let l=n((0,p.getUnitHeightRange)(t,o,!1)).domain([0,1]).invert(e);return l<0||l>1?null:l}(a,r,t.DEPTH);return null==s?null:{height:a=(0,p.getPositionWithinUnit)(s,r,l)}}return(0,c.standardizeMeasurementHeight)({unit_id:e.unit_id},o,l)}(l,o,a);if(null==e)continue;let{height:r,top_height:s}=e,u=`${r}`;null!=s&&(u+=`-${s}`),i.has(u)||i.set(u,{height:r,top_height:s??r,data:[],id:u}),i.get(u).data.push(l)}return(0,c.groupNotesByPixelDistance)(Array.from(i.values()),l,a,"number"==typeof s?s:10)}(l,r,s,a);return _(c.BaseMeasurementsColumn,{data:i,noteComponent:h,focusedNoteComponent:h,className:"fossil-collections"})}function h(e){let{note:t,maxItems:n,focused:o=!1}=e,{data:l}=t;return l.sort((e,t)=>{let n=e.best_name??e.cltn_name??"",o=t.best_name??t.cltn_name??"";return n.localeCompare(o)}),_(c.TruncatedList,{data:l,className:"fossil-collections",itemRenderer:g,maxItems:o?1/0:n??5})}function g({data:e}){return _("a.link-id",{href:`https://paleobiodb.org/app/collections#display=col:${e.cltn_id}`,target:"_blank",onClick(e){e.stopPropagation()}},e.best_name??e.cltn_name)}Object.keys(d).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return d[e]}})});export{b as PBDBFossilsColumn,$8e174c7ae24a4598$export$a990c76b38782f57 as FossilDataType,$8e174c7ae24a4598$export$e6af757fa9780077 as useFossilData,$9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};
2
- //# sourceMappingURL=column-views.9efa91f1.js.map
1
+ import"./column-views.4ec769a6.js";import"./column-views.54f7a243.js";import"./column-views.5c02450b.js";import"./column-views.672b683c.js";import"./column-views.dbb4a46b.js";import"./column-views.66663668.js";import e from"@macrostrat/hyper";import{ColumnAxisType as t}from"@macrostrat/column-components";import{scaleLinear as n}from"d3-scale";function o(e,t,n,o){Object.defineProperty(e,t,{get:n,set:o,enumerable:!0,configurable:!0})}var l=globalThis,a={},r={},s=l.parcelRequirea149;null==s&&((s=function(e){if(e in a)return a[e].exports;if(e in r){var t=r[e];delete r[e];var n={id:e,exports:{}};return a[e]=n,t.call(n.exports,n,n.exports),n.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,t){r[e]=t},l.parcelRequirea149=s),s.register;var i={};o(i,"PBDBFossilsColumn",()=>b),o(i,"FossilDataType",()=>s("dx7no").FossilDataType),o(i,"useFossilData",()=>s("dx7no").useFossilData);var u=s("dx7no"),c=s("kIQUG"),f=s("wtIgl"),m=s("f7qDU"),p=s("iWhRv"),d=s("6dOaS");let _=e.styled(m&&m.__esModule?m.default:m);function b({columnID:e,type:o=u.FossilDataType.Collections}){let l=(0,u.useFossilData)(e,o),{axisType:a,units:r}=(0,f.useMacrostratColumnData)(),s=(0,f.useCompositeScale)();if(null==l||null==r||null==s)return null;let i=function(e,o,l,a,r){let{groupCloseNotes:s=!0}=(void 0)??{},i=new Map;for(let l of e){let e=function(e,o,l){let a=null;if(null!=e.slb&&"mbsf"==e.slu&&(a=Number(e.slb),l===t.DEPTH))return{height:a};if(null==e.unit_id)return null;if(null!=a){let r=o.find(t=>t.unit_id===e.unit_id);if(null==r)return null;let s=function(e,t,o){let l=n((0,p.getUnitHeightRange)(t,o,!1)).domain([0,1]).invert(e);return l<0||l>1?null:l}(a,r,t.DEPTH);return null==s?null:{height:a=(0,p.getPositionWithinUnit)(s,r,l)}}return(0,c.standardizeMeasurementHeight)({unit_id:e.unit_id},o,l)}(l,o,a);if(null==e)continue;let{height:r,top_height:s}=e,u=`${r}`;null!=s&&(u+=`-${s}`),i.has(u)||i.set(u,{height:r,top_height:s??r,data:[],id:u}),i.get(u).data.push(l)}return(0,c.groupNotesByPixelDistance)(Array.from(i.values()),l,a,"number"==typeof s?s:10)}(l,r,s,a);return _(c.BaseMeasurementsColumn,{data:i,noteComponent:h,focusedNoteComponent:h,className:"fossil-collections"})}function h(e){let{note:t,maxItems:n,focused:o=!1}=e,{data:l}=t;return l.sort((e,t)=>{let n=e.best_name??e.cltn_name??"",o=t.best_name??t.cltn_name??"";return n.localeCompare(o)}),_(c.TruncatedList,{data:l,className:"fossil-collections",itemRenderer:g,maxItems:o?1/0:n??5})}function g({data:e}){return _("a.link-id",{href:`https://paleobiodb.org/app/collections#display=col:${e.cltn_id}`,target:"_blank",onClick(e){e.stopPropagation()}},e.best_name??e.cltn_name)}Object.keys(d).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return d[e]}})});export{b as PBDBFossilsColumn,$8e174c7ae24a4598$export$a990c76b38782f57 as FossilDataType,$8e174c7ae24a4598$export$e6af757fa9780077 as useFossilData,$9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};
2
+ //# sourceMappingURL=column-views.72c3c6e7.js.map
@@ -1 +1 @@
1
- {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,kB,C,K,+B,A,Q,e,C,K,U,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,iB,I,A,E,S,c,E,E,E,gB,I,A,E,S,a,E,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCwCA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAkB,CAAA,SAChC,CAAQ,CAAA,KACR,EAAO,AAAA,EAAA,cAAa,CAAE,WAAW,CAIlC,EACC,IAAM,EAAO,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,EAAU,GAC/B,CAAA,SAAE,CAAQ,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IACtB,EAAQ,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IAEd,GAAI,AAAQ,MAAR,GAAgB,AAAS,MAAT,GAAiB,AAAS,MAAT,EAAe,OAAO,KAE3D,IAAM,EAAQ,AAuEhB,SACE,CAAS,CACT,CAAiB,CACjB,CAA2B,CAC3B,CAAwB,CACxB,CAAgC,EAGhC,GAAM,CAAA,gBAAE,EAAkB,CAAA,CAAA,CAAM,CAAG,AAHnC,CAAA,KAAA,CAAA,GAG8C,CAAC,EAKzC,EAAU,IAAI,IAIpB,IAAK,IAAM,KAAK,EAAM,CACpB,IAAM,EAAQ,AA8BlB,SACE,CAAI,CACJ,CAAiB,CACjB,CAAwB,EAExB,IAAI,EAAwB,KAC5B,GAAI,AAAS,MAAT,EAAE,GAAG,EAAY,AAAS,QAAT,EAAE,GAAG,GAGxB,EAAS,OAAO,EAAE,GAAG,EACjB,IAAa,AAAA,EAAe,KAAK,EAEnC,MAAO,CAAE,OAAA,CAAO,EAGpB,GAAI,AAAa,MAAb,EAAE,OAAO,CAAU,OAAO,KAC9B,GAAI,AAAU,MAAV,EAAgB,CAMlB,IAAM,EAAO,EAAM,IAAI,CAAC,AAAC,GAAM,EAAE,OAAO,GAAK,EAAE,OAAO,EACtD,GAAI,AAAQ,MAAR,EAAc,OAAO,KACzB,IAAM,EAAY,AAatB,SACE,CAAW,CACX,CAAc,CACd,CAAwB,EAKxB,IAAM,EAAS,AADD,AAAA,EADE,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAM,EAAU,CAAA,IAChB,MAAM,CAAC,CAAC,EAAG,EAAE,EAC3B,MAAM,CAAC,UAC5B,AAAI,EAAS,GAAK,EAAS,EAAU,KAC9B,CACT,EAvBM,EACA,EACA,AAAA,EAAe,KAAK,SAEtB,AAAI,AAAa,MAAb,EAA0B,KAEvB,CAAE,OADT,EAAS,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAAsB,EAAW,EAAM,EAChC,CAClB,CAEA,MAAO,AAAA,CAAA,EAAA,EAAA,4BAA2B,AAA3B,EAA6B,CAAE,QAAS,EAAE,OAAO,AAAC,EAAG,EAAO,EACrE,EAjE8C,EAAG,EAAO,GAEpD,GAAI,AAAS,MAAT,EAAe,SACnB,GAAM,CAAA,OAAE,CAAM,CAAA,WAAE,CAAU,CAAE,CAAG,EAE3B,EAAM,CAAA,EAAG,EAAA,CAAQ,AACjB,AAAc,OAAd,GACF,CAAA,GAAO,CAAC,CAAC,EAAE,EAAA,CAAY,AAAZ,EAIT,AAAC,EAAQ,GAAG,CAAC,IACf,EAAQ,GAAG,CAAC,EAAK,CACf,OAAA,EACA,WAAY,GAAc,EAC1B,KAAM,EAAE,CACR,GAAI,CACN,GAEF,EAAQ,GAAG,CAAC,GAAM,IAAI,CAAC,IAAI,CAAC,EAC9B,CAEA,MAAO,AAAA,CAAA,EAAA,EAAA,yBAAwB,AAAxB,EACL,MAAM,IAAI,CAAC,EAAQ,MAAM,IACzB,EACA,EAjCA,AAA2B,UAA3B,OAAO,EAA+B,EAAkB,GAoC5D,EArHgC,EAAM,EAAO,EAAO,GAElD,OAAO,EAAE,EAAA,sBAAqB,CAAG,CAC/B,KAAM,EACN,cAAe,EACf,qBAAsB,EACtB,UAAW,oBACb,EACF,CAkBA,SAAS,EAAW,CAAsB,EACxC,GAAM,CAAA,KAAE,CAAI,CAAA,SAAE,CAAQ,CAAA,QAAE,EAAU,CAAA,CAAA,CAAO,CAAG,EACtC,CAAA,KAAE,CAAI,CAAE,CAAG,EAQjB,OANA,EAAK,IAAI,CAAC,CAAC,EAAG,KACZ,IAAM,EAAQ,EAAE,SAAS,EAAI,EAAE,SAAS,EAAI,GACtC,EAAQ,EAAE,SAAS,EAAI,EAAE,SAAS,EAAI,GAC5C,OAAO,EAAM,aAAa,CAAC,EAC7B,GAEO,EAAE,EAAA,aAAY,CAAG,CACtB,KAAA,EACA,UAAW,qBACX,aAAc,EACd,SAAU,EAAU,IAAY,GAAY,CAC9C,EACF,CAEA,SAAS,EAAmB,CAAA,KAC1B,CAAI,CAGL,EAEC,OAAO,EACL,YACA,CACE,KAAM,CAAC,mDAAmD,EAAE,EAAK,OAAO,CAAA,CAAE,CAC1E,OAAQ,SACR,QAAQ,CAAC,EACP,EAAE,eAAe,EACnB,CACF,EACA,EAAK,SAAS,EAAI,EAAK,SAAS,CAEpC,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,6C,c,C,6C,a,C,6C,qB","sources":["<anon>","packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import \"./column-views.4ec769a6.js\";\nimport \"./column-views.3a947d58.js\";\nimport \"./column-views.46efb749.js\";\nimport \"./column-views.672b683c.js\";\nimport \"./column-views.dbb4a46b.js\";\nimport \"./column-views.6556e004.js\";\nimport $2jHE4$macrostrathyper from \"@macrostrat/hyper\";\nimport {ColumnAxisType as $2jHE4$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {scaleLinear as $2jHE4$scaleLinear} from \"d3-scale\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\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 $ea2f112131e22f14$exports = {};\n\n$parcel$export($ea2f112131e22f14$exports, \"PBDBFossilsColumn\", () => $ea2f112131e22f14$export$554267114407ef68);\n$parcel$export($ea2f112131e22f14$exports, \"FossilDataType\", () => (parcelRequire(\"dx7no\")).FossilDataType);\n$parcel$export($ea2f112131e22f14$exports, \"useFossilData\", () => (parcelRequire(\"dx7no\")).useFossilData);\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\nvar $kIQUG = parcelRequire(\"kIQUG\");\n\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\nvar $f7qDU = parcelRequire(\"f7qDU\");\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\n\nvar $6dOaS = parcelRequire(\"6dOaS\");\nconst $ea2f112131e22f14$var$h = (0, $2jHE4$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($f7qDU))));\nfunction $ea2f112131e22f14$export$554267114407ef68({ columnID: columnID, type: type = (0, $dx7no.FossilDataType).Collections }) {\n const data = (0, $dx7no.useFossilData)(columnID, type);\n const { axisType: axisType, units: units } = (0, $wtIgl.useMacrostratColumnData)();\n const scale = (0, $wtIgl.useCompositeScale)();\n if (data == null || units == null || scale == null) return null;\n const data1 = $ea2f112131e22f14$var$preparePBDBData(data, units, scale, axisType);\n return $ea2f112131e22f14$var$h((0, $kIQUG.BaseMeasurementsColumn), {\n data: data1,\n noteComponent: $ea2f112131e22f14$var$FossilInfo,\n focusedNoteComponent: $ea2f112131e22f14$var$FossilInfo,\n className: \"fossil-collections\"\n });\n}\nfunction $ea2f112131e22f14$var$FossilInfo(props) {\n const { note: note, maxItems: maxItems, focused: focused = false } = props;\n const { data: data } = note;\n // Sort collections by name\n data.sort((a, b)=>{\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n return $ea2f112131e22f14$var$h((0, $kIQUG.TruncatedList), {\n data: data,\n className: \"fossil-collections\",\n itemRenderer: $ea2f112131e22f14$var$PBDBCollectionLink,\n maxItems: focused ? Infinity : maxItems ?? 5\n });\n}\nfunction $ea2f112131e22f14$var$PBDBCollectionLink({ data: data }) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */ return $ea2f112131e22f14$var$h(\"a.link-id\", {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick (e) {\n e.stopPropagation();\n }\n }, data.best_name ?? data.cltn_name);\n}\nfunction $ea2f112131e22f14$var$preparePBDBData(data, units, scale, axisType, options) {\n /** Prepare PBDB fossil data for display in a measurements column */ const { groupCloseNotes: groupCloseNotes = true } = options ?? {};\n const groupDistance = typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n // Map of data to its defined height ranges\n const dataMap = new Map();\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n for (const d of data){\n const range = $ea2f112131e22f14$var$getHeightRangeForPBDBEntity(d, units, axisType);\n if (range == null) continue;\n const { height: height, top_height: top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) key += `-${top_height}`;\n // Group by height key\n if (!dataMap.has(key)) dataMap.set(key, {\n height: height,\n top_height: top_height ?? height,\n data: [],\n id: key\n });\n dataMap.get(key).data.push(d);\n }\n return (0, $kIQUG.groupNotesByPixelDistance)(Array.from(dataMap.values()), scale, axisType, groupDistance);\n}\nfunction $ea2f112131e22f14$var$getHeightRangeForPBDBEntity(d, units, axisType) {\n let height = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === (0, $2jHE4$ColumnAxisType).DEPTH) // Data is already in depth units\n return {\n height: height\n };\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u)=>u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = $ea2f112131e22f14$var$getRelativePositionInUnit(height, unit, (0, $2jHE4$ColumnAxisType).DEPTH);\n if (relHeight == null) return null;\n height = (0, $iWhRv.getPositionWithinUnit)(relHeight, unit, axisType);\n return {\n height: height\n };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return (0, $kIQUG.standardizeMeasurementHeight)({\n unit_id: d.unit_id\n }, units, axisType);\n}\nfunction $ea2f112131e22f14$var$getRelativePositionInUnit(pos, unit, axisType) {\n // This is the inverse of getPositionWithinUnit\n const heights = (0, $iWhRv.getUnitHeightRange)(unit, axisType, false);\n const scale = (0, $2jHE4$scaleLinear)(heights).domain([\n 0,\n 1\n ]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n$parcel$exportWildcard($ea2f112131e22f14$exports, $6dOaS);\n\n\nexport {$ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn, $8e174c7ae24a4598$export$a990c76b38782f57 as FossilDataType, $8e174c7ae24a4598$export$e6af757fa9780077 as useFossilData, $9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};\n//# sourceMappingURL=column-views.9efa91f1.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["$2jHE4$macrostrathyper","ColumnAxisType","$2jHE4$ColumnAxisType","scaleLinear","$2jHE4$scaleLinear","$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","$ea2f112131e22f14$exports","$ea2f112131e22f14$export$554267114407ef68","FossilDataType","useFossilData","$dx7no","$kIQUG","$wtIgl","$f7qDU","$iWhRv","$6dOaS","$ea2f112131e22f14$var$h","styled","a","__esModule","default","columnID","type","Collections","data","axisType","units","useMacrostratColumnData","scale","useCompositeScale","data1","$ea2f112131e22f14$var$preparePBDBData","options","groupCloseNotes","dataMap","Map","d","range","$ea2f112131e22f14$var$getHeightRangeForPBDBEntity","height","slb","slu","Number","DEPTH","unit_id","unit","find","u","relHeight","$ea2f112131e22f14$var$getRelativePositionInUnit","pos","relPos","getUnitHeightRange","domain","invert","getPositionWithinUnit","standardizeMeasurementHeight","top_height","key","has","push","groupNotesByPixelDistance","Array","from","values","BaseMeasurementsColumn","noteComponent","$ea2f112131e22f14$var$FossilInfo","focusedNoteComponent","className","props","note","maxItems","focused","sort","b","nameA","best_name","cltn_name","nameB","localeCompare","TruncatedList","itemRenderer","$ea2f112131e22f14$var$PBDBCollectionLink","Infinity","href","cltn_id","target","onClick","stopPropagation","keys","forEach","prototype","hasOwnProperty","source","PBDBFossilsColumn","$8e174c7ae24a4598$export$a990c76b38782f57","$8e174c7ae24a4598$export$e6af757fa9780077","$9cea14fa75e12a56$export$652730986cccff7a","PBDBOccurrencesMatrix"],"version":3,"file":"column-views.9efa91f1.js.map","sourceRoot":"../../../../"}
1
+ {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,kB,C,K,+B,A,Q,e,C,K,U,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,iB,I,A,E,S,c,E,E,E,gB,I,A,E,S,a,E,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCwCA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAEhB,SAAS,EAAkB,CAAA,SAChC,CAAQ,CAAA,KACR,EAAO,AAAA,EAAA,cAAa,CAAE,WAAW,CAIlC,EACC,IAAM,EAAO,AAAA,CAAA,EAAA,EAAA,aAAY,AAAZ,EAAc,EAAU,GAC/B,CAAA,SAAE,CAAQ,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IACtB,EAAQ,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IAEd,GAAI,AAAQ,MAAR,GAAgB,AAAS,MAAT,GAAiB,AAAS,MAAT,EAAe,OAAO,KAE3D,IAAM,EAAQ,AAuEhB,SACE,CAAS,CACT,CAAiB,CACjB,CAA2B,CAC3B,CAAwB,CACxB,CAAgC,EAGhC,GAAM,CAAA,gBAAE,EAAkB,CAAA,CAAA,CAAM,CAAG,AAHnC,CAAA,KAAA,CAAA,GAG8C,CAAC,EAKzC,EAAU,IAAI,IAIpB,IAAK,IAAM,KAAK,EAAM,CACpB,IAAM,EAAQ,AA8BlB,SACE,CAAI,CACJ,CAAiB,CACjB,CAAwB,EAExB,IAAI,EAAwB,KAC5B,GAAI,AAAS,MAAT,EAAE,GAAG,EAAY,AAAS,QAAT,EAAE,GAAG,GAGxB,EAAS,OAAO,EAAE,GAAG,EACjB,IAAa,AAAA,EAAe,KAAK,EAEnC,MAAO,CAAE,OAAA,CAAO,EAGpB,GAAI,AAAa,MAAb,EAAE,OAAO,CAAU,OAAO,KAC9B,GAAI,AAAU,MAAV,EAAgB,CAMlB,IAAM,EAAO,EAAM,IAAI,CAAC,AAAC,GAAM,EAAE,OAAO,GAAK,EAAE,OAAO,EACtD,GAAI,AAAQ,MAAR,EAAc,OAAO,KACzB,IAAM,EAAY,AAatB,SACE,CAAW,CACX,CAAc,CACd,CAAwB,EAKxB,IAAM,EAAS,AADD,AAAA,EADE,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAM,EAAU,CAAA,IAChB,MAAM,CAAC,CAAC,EAAG,EAAE,EAC3B,MAAM,CAAC,UAC5B,AAAI,EAAS,GAAK,EAAS,EAAU,KAC9B,CACT,EAvBM,EACA,EACA,AAAA,EAAe,KAAK,SAEtB,AAAI,AAAa,MAAb,EAA0B,KAEvB,CAAE,OADT,EAAS,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EAAsB,EAAW,EAAM,EAChC,CAClB,CAEA,MAAO,AAAA,CAAA,EAAA,EAAA,4BAA2B,AAA3B,EAA6B,CAAE,QAAS,EAAE,OAAO,AAAC,EAAG,EAAO,EACrE,EAjE8C,EAAG,EAAO,GAEpD,GAAI,AAAS,MAAT,EAAe,SACnB,GAAM,CAAA,OAAE,CAAM,CAAA,WAAE,CAAU,CAAE,CAAG,EAE3B,EAAM,CAAA,EAAG,EAAA,CAAQ,AACjB,AAAc,OAAd,GACF,CAAA,GAAO,CAAC,CAAC,EAAE,EAAA,CAAY,AAAZ,EAIT,AAAC,EAAQ,GAAG,CAAC,IACf,EAAQ,GAAG,CAAC,EAAK,CACf,OAAA,EACA,WAAY,GAAc,EAC1B,KAAM,EAAE,CACR,GAAI,CACN,GAEF,EAAQ,GAAG,CAAC,GAAM,IAAI,CAAC,IAAI,CAAC,EAC9B,CAEA,MAAO,AAAA,CAAA,EAAA,EAAA,yBAAwB,AAAxB,EACL,MAAM,IAAI,CAAC,EAAQ,MAAM,IACzB,EACA,EAjCA,AAA2B,UAA3B,OAAO,EAA+B,EAAkB,GAoC5D,EArHgC,EAAM,EAAO,EAAO,GAElD,OAAO,EAAE,EAAA,sBAAqB,CAAG,CAC/B,KAAM,EACN,cAAe,EACf,qBAAsB,EACtB,UAAW,oBACb,EACF,CAkBA,SAAS,EAAW,CAAsB,EACxC,GAAM,CAAA,KAAE,CAAI,CAAA,SAAE,CAAQ,CAAA,QAAE,EAAU,CAAA,CAAA,CAAO,CAAG,EACtC,CAAA,KAAE,CAAI,CAAE,CAAG,EAQjB,OANA,EAAK,IAAI,CAAC,CAAC,EAAG,KACZ,IAAM,EAAQ,EAAE,SAAS,EAAI,EAAE,SAAS,EAAI,GACtC,EAAQ,EAAE,SAAS,EAAI,EAAE,SAAS,EAAI,GAC5C,OAAO,EAAM,aAAa,CAAC,EAC7B,GAEO,EAAE,EAAA,aAAY,CAAG,CACtB,KAAA,EACA,UAAW,qBACX,aAAc,EACd,SAAU,EAAU,IAAY,GAAY,CAC9C,EACF,CAEA,SAAS,EAAmB,CAAA,KAC1B,CAAI,CAGL,EAEC,OAAO,EACL,YACA,CACE,KAAM,CAAC,mDAAmD,EAAE,EAAK,OAAO,CAAA,CAAE,CAC1E,OAAQ,SACR,QAAQ,CAAC,EACP,EAAE,eAAe,EACnB,CACF,EACA,EAAK,SAAS,EAAI,EAAK,SAAS,CAEpC,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,6C,c,C,6C,a,C,6C,qB","sources":["<anon>","packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import \"./column-views.4ec769a6.js\";\nimport \"./column-views.54f7a243.js\";\nimport \"./column-views.5c02450b.js\";\nimport \"./column-views.672b683c.js\";\nimport \"./column-views.dbb4a46b.js\";\nimport \"./column-views.66663668.js\";\nimport $2jHE4$macrostrathyper from \"@macrostrat/hyper\";\nimport {ColumnAxisType as $2jHE4$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {scaleLinear as $2jHE4$scaleLinear} from \"d3-scale\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\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 $ea2f112131e22f14$exports = {};\n\n$parcel$export($ea2f112131e22f14$exports, \"PBDBFossilsColumn\", () => $ea2f112131e22f14$export$554267114407ef68);\n$parcel$export($ea2f112131e22f14$exports, \"FossilDataType\", () => (parcelRequire(\"dx7no\")).FossilDataType);\n$parcel$export($ea2f112131e22f14$exports, \"useFossilData\", () => (parcelRequire(\"dx7no\")).useFossilData);\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\nvar $kIQUG = parcelRequire(\"kIQUG\");\n\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\nvar $f7qDU = parcelRequire(\"f7qDU\");\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\n\nvar $6dOaS = parcelRequire(\"6dOaS\");\nconst $ea2f112131e22f14$var$h = (0, $2jHE4$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($f7qDU))));\nfunction $ea2f112131e22f14$export$554267114407ef68({ columnID: columnID, type: type = (0, $dx7no.FossilDataType).Collections }) {\n const data = (0, $dx7no.useFossilData)(columnID, type);\n const { axisType: axisType, units: units } = (0, $wtIgl.useMacrostratColumnData)();\n const scale = (0, $wtIgl.useCompositeScale)();\n if (data == null || units == null || scale == null) return null;\n const data1 = $ea2f112131e22f14$var$preparePBDBData(data, units, scale, axisType);\n return $ea2f112131e22f14$var$h((0, $kIQUG.BaseMeasurementsColumn), {\n data: data1,\n noteComponent: $ea2f112131e22f14$var$FossilInfo,\n focusedNoteComponent: $ea2f112131e22f14$var$FossilInfo,\n className: \"fossil-collections\"\n });\n}\nfunction $ea2f112131e22f14$var$FossilInfo(props) {\n const { note: note, maxItems: maxItems, focused: focused = false } = props;\n const { data: data } = note;\n // Sort collections by name\n data.sort((a, b)=>{\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n return $ea2f112131e22f14$var$h((0, $kIQUG.TruncatedList), {\n data: data,\n className: \"fossil-collections\",\n itemRenderer: $ea2f112131e22f14$var$PBDBCollectionLink,\n maxItems: focused ? Infinity : maxItems ?? 5\n });\n}\nfunction $ea2f112131e22f14$var$PBDBCollectionLink({ data: data }) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */ return $ea2f112131e22f14$var$h(\"a.link-id\", {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick (e) {\n e.stopPropagation();\n }\n }, data.best_name ?? data.cltn_name);\n}\nfunction $ea2f112131e22f14$var$preparePBDBData(data, units, scale, axisType, options) {\n /** Prepare PBDB fossil data for display in a measurements column */ const { groupCloseNotes: groupCloseNotes = true } = options ?? {};\n const groupDistance = typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n // Map of data to its defined height ranges\n const dataMap = new Map();\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n for (const d of data){\n const range = $ea2f112131e22f14$var$getHeightRangeForPBDBEntity(d, units, axisType);\n if (range == null) continue;\n const { height: height, top_height: top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) key += `-${top_height}`;\n // Group by height key\n if (!dataMap.has(key)) dataMap.set(key, {\n height: height,\n top_height: top_height ?? height,\n data: [],\n id: key\n });\n dataMap.get(key).data.push(d);\n }\n return (0, $kIQUG.groupNotesByPixelDistance)(Array.from(dataMap.values()), scale, axisType, groupDistance);\n}\nfunction $ea2f112131e22f14$var$getHeightRangeForPBDBEntity(d, units, axisType) {\n let height = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === (0, $2jHE4$ColumnAxisType).DEPTH) // Data is already in depth units\n return {\n height: height\n };\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u)=>u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = $ea2f112131e22f14$var$getRelativePositionInUnit(height, unit, (0, $2jHE4$ColumnAxisType).DEPTH);\n if (relHeight == null) return null;\n height = (0, $iWhRv.getPositionWithinUnit)(relHeight, unit, axisType);\n return {\n height: height\n };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return (0, $kIQUG.standardizeMeasurementHeight)({\n unit_id: d.unit_id\n }, units, axisType);\n}\nfunction $ea2f112131e22f14$var$getRelativePositionInUnit(pos, unit, axisType) {\n // This is the inverse of getPositionWithinUnit\n const heights = (0, $iWhRv.getUnitHeightRange)(unit, axisType, false);\n const scale = (0, $2jHE4$scaleLinear)(heights).domain([\n 0,\n 1\n ]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n$parcel$exportWildcard($ea2f112131e22f14$exports, $6dOaS);\n\n\nexport {$ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn, $8e174c7ae24a4598$export$a990c76b38782f57 as FossilDataType, $8e174c7ae24a4598$export$e6af757fa9780077 as useFossilData, $9cea14fa75e12a56$export$652730986cccff7a as PBDBOccurrencesMatrix};\n//# sourceMappingURL=column-views.72c3c6e7.js.map\n","import hyper from \"@macrostrat/hyper\";\nimport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n} from \"./provider\";\nimport type { IUnit } from \"../../units\";\nimport {\n BaseMeasurementsColumn,\n ColumnMeasurementData,\n MeasurementHeightData,\n standardizeMeasurementHeight,\n groupNotesByPixelDistance,\n TruncatedList,\n} from \"../measurements\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport {\n useCompositeScale,\n useMacrostratColumnData,\n} from \"../../data-provider\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport styles from \"./taxon-ranges.module.sass\";\nimport {\n CompositeColumnScale,\n getPositionWithinUnit,\n getUnitHeightRange,\n} from \"../../prepare-units\";\nimport { scaleLinear } from \"d3-scale\";\n\nexport {\n FossilDataType,\n type PBDBCollection,\n type PBDBEntity,\n type PBDBOccurrence,\n useFossilData,\n};\nexport * from \"./taxon-ranges\";\n\nconst h = hyper.styled(styles);\n\nexport function PBDBFossilsColumn({\n columnID,\n type = FossilDataType.Collections,\n}: {\n columnID: number;\n type: FossilDataType;\n}) {\n const data = useFossilData(columnID, type);\n const { axisType, units } = useMacrostratColumnData();\n const scale = useCompositeScale();\n\n if (data == null || units == null || scale == null) return null;\n\n const data1 = preparePBDBData(data, units, scale, axisType);\n\n return h(BaseMeasurementsColumn, {\n data: data1,\n noteComponent: FossilInfo,\n focusedNoteComponent: FossilInfo,\n className: \"fossil-collections\",\n });\n}\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n focused?: boolean;\n maxItems?: number;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, maxItems, focused = false } = props;\n const { data } = note;\n // Sort collections by name\n data.sort((a, b) => {\n const nameA = a.best_name ?? a.cltn_name ?? \"\";\n const nameB = b.best_name ?? b.cltn_name ?? \"\";\n return nameA.localeCompare(nameB);\n });\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n maxItems: focused ? Infinity : (maxItems ?? 5),\n });\n}\n\nfunction PBDBCollectionLink({\n data,\n}: {\n data: PBDBCollection | PBDBOccurrence;\n}) {\n /** A link to a PBDB collection that handles either an occurrence or collection object */\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/app/collections#display=col:${data.cltn_id}`,\n target: \"_blank\",\n onClick(e) {\n e.stopPropagation();\n },\n },\n data.best_name ?? data.cltn_name,\n );\n}\n\ninterface PreparePBDBDataOptions {\n /** If set, group close notes within this distance (in pixels in display space)\n * into a single note. If a number is provided, that number is used as the distance,\n * otherwise a default of 5 pixels is used.\n */\n groupCloseNotes?: boolean | number;\n}\n\nfunction preparePBDBData<T extends PBDBEntity>(\n data: T[],\n units: UnitLong[],\n scale: CompositeColumnScale,\n axisType: ColumnAxisType,\n options?: PreparePBDBDataOptions,\n) {\n /** Prepare PBDB fossil data for display in a measurements column */\n const { groupCloseNotes = true } = options ?? {};\n const groupDistance =\n typeof groupCloseNotes === \"number\" ? groupCloseNotes : 10;\n\n // Map of data to its defined height ranges\n const dataMap = new Map<string, ColumnMeasurementData<T[]>>();\n\n // Todo: if we wanted, we could add a step where we group notes that are too close together here...\n\n for (const d of data) {\n const range = getHeightRangeForPBDBEntity(d, units, axisType);\n\n if (range == null) continue;\n const { height, top_height } = range;\n // compose the key based on height info\n let key = `${height}`;\n if (top_height != null) {\n key += `-${top_height}`;\n }\n\n // Group by height key\n if (!dataMap.has(key)) {\n dataMap.set(key, {\n height,\n top_height: top_height ?? height,\n data: [],\n id: key,\n });\n }\n dataMap.get(key)!.data.push(d);\n }\n\n return groupNotesByPixelDistance(\n Array.from(dataMap.values()),\n scale,\n axisType,\n groupDistance,\n );\n}\n\nfunction getHeightRangeForPBDBEntity<T extends PBDBEntity>(\n d: T,\n units: UnitLong[],\n axisType: ColumnAxisType,\n): MeasurementHeightData | null {\n let height: number | null = null;\n if (d.slb != null && d.slu == \"mbsf\") {\n // Meters below sea floor - special case for eODP where we have\n // specific depth data referenced\n height = Number(d.slb);\n if (axisType === ColumnAxisType.DEPTH) {\n // Data is already in depth units\n return { height };\n }\n }\n if (d.unit_id == null) return null;\n if (height != null) {\n // If we have both height and unit info, we need to adjust the height\n // to fit whatever scale type we're using.\n // TODO: we could improve how this works by having concurrent age and\n // height scales, which would allow us to do this without having to\n // reference to a specific unit.\n const unit = units.find((u) => u.unit_id === d.unit_id);\n if (unit == null) return null;\n const relHeight = getRelativePositionInUnit(\n height,\n unit,\n ColumnAxisType.DEPTH,\n );\n if (relHeight == null) return null;\n height = getPositionWithinUnit(relHeight, unit, axisType);\n return { height };\n }\n // We can just get the height within the unit, clipped to the unit boundaries\n return standardizeMeasurementHeight({ unit_id: d.unit_id }, units, axisType);\n}\n\nfunction getRelativePositionInUnit(\n pos: number,\n unit: UnitLong,\n axisType: ColumnAxisType,\n): number | null {\n // This is the inverse of getPositionWithinUnit\n const heights = getUnitHeightRange(unit, axisType, false);\n const scale = scaleLinear(heights).domain([0, 1]);\n const relPos = scale.invert(pos);\n if (relPos < 0 || relPos > 1) return null;\n return relPos;\n}\n"],"names":["$2jHE4$macrostrathyper","ColumnAxisType","$2jHE4$ColumnAxisType","scaleLinear","$2jHE4$scaleLinear","$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","$ea2f112131e22f14$exports","$ea2f112131e22f14$export$554267114407ef68","FossilDataType","useFossilData","$dx7no","$kIQUG","$wtIgl","$f7qDU","$iWhRv","$6dOaS","$ea2f112131e22f14$var$h","styled","a","__esModule","default","columnID","type","Collections","data","axisType","units","useMacrostratColumnData","scale","useCompositeScale","data1","$ea2f112131e22f14$var$preparePBDBData","options","groupCloseNotes","dataMap","Map","d","range","$ea2f112131e22f14$var$getHeightRangeForPBDBEntity","height","slb","slu","Number","DEPTH","unit_id","unit","find","u","relHeight","$ea2f112131e22f14$var$getRelativePositionInUnit","pos","relPos","getUnitHeightRange","domain","invert","getPositionWithinUnit","standardizeMeasurementHeight","top_height","key","has","push","groupNotesByPixelDistance","Array","from","values","BaseMeasurementsColumn","noteComponent","$ea2f112131e22f14$var$FossilInfo","focusedNoteComponent","className","props","note","maxItems","focused","sort","b","nameA","best_name","cltn_name","nameB","localeCompare","TruncatedList","itemRenderer","$ea2f112131e22f14$var$PBDBCollectionLink","Infinity","href","cltn_id","target","onClick","stopPropagation","keys","forEach","prototype","hasOwnProperty","source","PBDBFossilsColumn","$8e174c7ae24a4598$export$a990c76b38782f57","$8e174c7ae24a4598$export$e6af757fa9780077","$9cea14fa75e12a56$export$652730986cccff7a","PBDBOccurrencesMatrix"],"version":3,"file":"column-views.72c3c6e7.js.map","sourceRoot":"../../../../"}
@@ -0,0 +1,2 @@
1
+ import"./column-views.1261be59.js";import"./column-views.f93b4175.js";import"./column-views.5c02450b.js";import"./column-views.7b6e7d82.js";import"./column-views.5e73411d.js";import"./column-views.ffbffec7.js";import"./column-views.0818254f.js";import"./column-views.5f3f8ccf.js";import"./column-views.7f9c7448.js";import"./column-views.5fd6e11a.js";import{ColumnAxisType as e}from"@macrostrat/column-components";import{hyperStyled as o}from"@macrostrat/hyper";import{extractPadding as n,useDarkMode as t,Box as i}from"@macrostrat/ui-components";import l from"classnames";import{useCallback as a}from"react";import{NonIdealState as s}from"@blueprintjs/core";import{DataField as r}from"@macrostrat/data-components";function c(e,o,n,t){Object.defineProperty(e,o,{get:n,set:t,enumerable:!0,configurable:!0})}var m=globalThis,u={},p={},d=m.parcelRequirea149;null==d&&((d=function(e){if(e in u)return u[e].exports;if(e in p){var o=p[e];delete p[e];var n={id:e,exports:{}};return u[e]=n,o.call(n.exports,n,n.exports),n.exports}var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}).register=function(e,o){p[e]=o},m.parcelRequirea149=d),d.register;var f={};c(f,"Column",()=>y),c(f,"ColumnContainer",()=>E),c(f,"ColumnBasicInfo",()=>R);var b=d("7YHvf"),g=d("7tWYE"),h=d("wtIgl"),v=d("5SO8b"),_=d("iYfAq"),x=d("2KV3o"),S=d("7exMg"),C=d("4hG2H"),H=d("76iYI"),w=d("610tc");let A=o(b&&b.__esModule?b.default:b);function y(o){let{showUnitPopover:n=!1,keyboardNavigation:t=!1,mergeSections:i,onUnitSelected:l,selectedUnit:a,children:r,units:c,t_age:m,b_age:u,t_pos:p,b_pos:d,unconformityHeight:f=30,targetUnitHeight:b=20,pixelScale:g,minPixelScale:_=.2,minSectionHeight:S=50,collapseSmallUnconformities:y=!0,allowUnitSelection:E=!1,hybridScale:R,scale:M,axisType:F,...$}=o,j=b,T=S,N=_;null!=g&&(j=null,T=0,N=g);let L=F??e.AGE,O=C.CompositeAgeAxis;R?.type===H.HybridScaleType.ApproximateHeight&&L!=e.AGE&&(O=C.ApproximateHeightAxis,L=e.AGE);let{sections:I,units:D,totalHeight:P}=(0,w.usePreparedColumnUnits)(c,{axisType:L,t_age:m,b_age:u,t_pos:p,b_pos:d,mergeSections:i,targetUnitHeight:j,unconformityHeight:f,pixelScale:g,minPixelScale:N,minSectionHeight:T,collapseSmallUnconformities:y,scale:M,hybridScale:R});return 0===I.length?A("div.column-container.empty",A(s,{title:"Empty column",description:"No sections found in this column.",icon:"warning-sign"})):A(h.MacrostratColumnDataProvider,{units:D,sections:I,totalHeight:P,axisType:L,allowUnitSelection:n||E,onUnitSelected:l,selectedUnit:a},A(U,{ageAxisComponent:O,...$},[r,A.if(n)(x.UnitSelectionPopover),A.if(t)(v.UnitKeyboardNavigation,{units:D})]))}function U(o){let t=n(o),i={"--column-padding-top":`${t.paddingTop}px`,"--column-padding-bottom":`${t.paddingBottom}px`,"--column-padding-left":`${t.paddingLeft}px`,"--column-padding-right":`${t.paddingRight}px`},{unitComponent:l=g.UnitComponent,unconformityLabels:s="minimal",showLabels:r=!0,width:c=300,columnWidth:m=150,showLabelColumn:u=!0,className:p,clipUnits:d=!1,children:f,showTimescale:b,timescaleLevels:_,maxInternalColumns:x,onMouseOver:H,ageAxisComponent:w=C.CompositeAgeAxis}=o,{axisType:y}=(0,h.useMacrostratColumnData)(),U=(0,v.useColumnRef)(),R=!1,M=!1;!0===s||"prominent"===s?M=!0:"minimal"===s&&(R=!0);let F=m;F>c&&(F=c);let $=u;F>c-10&&($=!1);let j=b??!0;return null!=_&&(j=!0),j=y==e.AGE&&j,A(E,{...function(e=null){let o=(0,v.useUnitSelectionDispatch)(),n=a(e=>{o?.(null,null)},[o]),t=(0,h.useCompositeScale)(),i=a(o=>{let n=t.invert(o.clientY-o.currentTarget.getBoundingClientRect().top);e?.(null,n,o)},[t,e]),l=a(()=>{e?.(null,null,null)},[e]);return null==e?{onClick:n,onMouseOver:void 0,onMouseMove:void 0,onMouseOut:void 0}:{onMouseOver:i,onMouseMove:i,onMouseOut:l,onClick:n}}(H),style:i,className:p},A("div.column",{ref:U},[A(w),A.if(j)(S.CompositeTimescale,{levels:_,unconformityLabels:R}),A(S.SectionsColumn,{unitComponent:l,showLabels:r,width:c,columnWidth:F,showLabelColumn:$,clipUnits:d,unconformityLabels:M,maxInternalColumns:x}),f]))}function E(e){let{className:o,...n}=e,a=t();return A(i,{className:l(o,{"dark-mode":a?.isEnabled??!1},"column-container"),...n})}function R({data:e,showColumnID:o=!0,showReferences:n=!0}){return null==e?null:A("div.column-info",[A("div.column-title-row",[A("h2",e.col_name),A.if(o)("h4",A(_.Identifier,{id:e.col_id}))]),A(r,{row:!0,label:"Group",value:e.col_group}),A.if(n)(_.ReferencesField,{refs:e.refs,inline:!1,row:!1,className:"column-refs"})])}export{y as Column,E as ColumnContainer,R as ColumnBasicInfo};
2
+ //# sourceMappingURL=column-views.74fcfb9c.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,kB,C,K,+B,A,Q,e,C,K,mB,A,Q,kB,C,C,e,C,C,O,C,K,2B,A,Q,M,Y,A,Q,e,C,K,O,A,Q,iB,C,K,mB,A,Q,a,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,S,I,G,E,E,kB,I,G,E,E,kB,I,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCkDA,IAAM,EAAI,AAAA,E,AAAY,G,AAAA,E,U,C,AAAA,E,O,CAAA,GA0Cf,SAAS,EAAO,CAAkB,EACvC,GAAM,CAAA,gBACJ,EAAkB,CAAA,CAAA,CAAA,mBAClB,EAAqB,CAAA,CAAA,CAAA,cACrB,CAAa,CAAA,eACb,CAAc,CAAA,aACd,CAAY,CAAA,SACZ,CAAQ,CACR,MAAO,CAAQ,CAAA,MACf,CAAK,CAAA,MACL,CAAK,CAAA,MACL,CAAK,CAAA,MACL,CAAK,CAAA,mBACL,EAAqB,EAAA,CAAA,iBACrB,EAAmB,EAAA,CAAA,WACnB,CAAU,CAAA,cACV,EAAgB,EAAA,CAAA,iBAChB,EAAmB,EAAA,CAAA,4BACnB,EAA8B,CAAA,CAAA,CAAA,mBAC9B,EAAqB,CAAA,CAAA,CAAA,YACrB,CAAW,CAAA,MACX,CAAK,CAAA,SACL,CAAQ,CACR,GAAG,EACJ,CAAG,EAIA,EAAoB,EACpB,EAAoB,EACpB,EAAiB,CACH,OAAd,IACF,EAAoB,KACpB,EAAoB,EACpB,EAAiB,GAInB,IAAI,EAAY,GAAY,AAAA,EAAe,GAAG,CAC1C,EAAmB,EAAA,gBAAe,CAEpC,GAAa,OAAS,AAAA,EAAA,eAAc,CAAE,iBAAiB,EACvD,GAAa,AAAA,EAAe,GAAG,GAG/B,EAAmB,EAAA,qBAAoB,CACvC,EAAY,AAAA,EAAe,GAAG,EAGhC,GAAM,CAAA,SAAE,CAAQ,CAAA,MAAE,CAAK,CAAA,YAAE,CAAW,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,sBAAqB,AAArB,EAAuB,EAAU,CACxE,SAAU,EACV,MAAA,EACA,MAAA,EACA,MAAA,EACA,MAAA,EACA,cAAA,EACA,iBAAkB,EAClB,mBAAA,EACA,WAAA,EACA,cAAe,EACf,iBAAkB,EAClB,4BAAA,EAEA,MAAA,EACA,YAAA,CACF,UAEA,AAAI,AAAoB,IAApB,EAAS,MAAM,CACV,EACL,6BACA,EAAE,EAAe,CACf,MAAO,eACP,YAAa,oCACb,KAAM,cACR,IAIG,EACL,EAAA,4BAA2B,CAC3B,CACE,MAAA,EACA,SAAA,EACA,YAAA,EACA,SAAU,EACV,mBAAoB,GAAmB,EACvC,eAAA,EACA,aAAA,CACF,EACA,EAAE,EAAa,CAAE,iBAAA,EAAkB,GAAG,CAAI,AAAC,EAAG,CAC5C,EACA,EAAE,EAAE,CAAC,GAAiB,EAAA,oBAAmB,EACzC,EAAE,EAAE,CAAC,GAAoB,EAAA,sBAAqB,CAAG,CAAE,MAAA,CAAM,GAC1D,EAEL,CAMA,SAAS,EAAY,CAAuB,EAC1C,IAAM,EAAU,AAAA,EAAe,GAGzB,EAAmB,CACvB,uBAAwB,CAAA,EAAG,EAAQ,UAAU,CAAC,EAAE,CAAC,CACjD,0BAA2B,CAAA,EAAG,EAAQ,aAAa,CAAC,EAAE,CAAC,CACvD,wBAAyB,CAAA,EAAG,EAAQ,WAAW,CAAC,EAAE,CAAC,CACnD,yBAA0B,CAAA,EAAG,EAAQ,YAAY,CAAC,EAAE,CAAC,AACvD,EAEM,CAAA,cACJ,EAAgB,EAAA,aAAY,AAAA,CAAA,mBAC5B,EAAqB,SAAA,CAAA,WACrB,EAAa,CAAA,CAAA,CACb,MAAO,EAAS,GAAG,CACnB,YAAa,EAAe,GAAG,CAC/B,gBAAiB,EAAmB,CAAA,CAAI,CAAA,UACxC,CAAS,CAAA,UACT,EAAY,CAAA,CAAA,CAAA,SACZ,CAAQ,CAAA,cACR,CAAa,CAAA,gBACb,CAAe,CAAA,mBACf,CAAkB,CAAA,YAClB,CAAW,CAAA,iBACX,EAAmB,EAAA,gBAAe,AAAA,CACnC,CAAG,EAEE,CAAA,SAAE,CAAQ,CAAE,CAAG,AAAA,CAAA,EAAA,EAAA,uBAAsB,AAAtB,IAEf,EAAY,AAAA,CAAA,EAAA,EAAA,YAAW,AAAX,IAGd,EAA+B,CAAA,EAC/B,EAA6B,CAAA,CAC7B,AAAuB,EAAA,IAAvB,GAA+B,AAAuB,cAAvB,EACjC,EAA6B,CAAA,EACpB,AAAuB,YAAvB,GACT,CAAA,EAA+B,CAAA,CAD1B,EAKP,IAAI,EAAc,CACd,CAAA,EAFQ,GAGV,CAAA,EAHU,CAEZ,EAGA,IAAI,EAAkB,CAClB,CAAA,EAAc,AANN,EAMc,IACxB,CAAA,EAAkB,CAAA,CADpB,EAIA,IAAI,EAAiB,GAAiB,CAAA,EAMtC,OALI,AAAmB,MAAnB,GACF,CAAA,EAAiB,CAAA,CADnB,EAGA,EAAiB,GAAY,AAAA,EAAe,GAAG,EAAI,EAE5C,EACL,EACA,CACE,GAAG,AA+BT,SACE,EAA8C,IAAI,EAKlD,IAAM,EAAW,AAAA,CAAA,EAAA,EAAA,wBAAuB,AAAvB,IACX,EAAU,AAAA,EACd,AAAC,IACC,IAAW,KAAM,KACnB,EACA,CAAC,EAAS,EAIN,EAAQ,AAAA,CAAA,EAAA,EAAA,iBAAgB,AAAhB,IAER,EAAc,AAAA,EAClB,AAAC,IACC,IAAM,EAAS,EAAM,MAAM,CACzB,EAAI,OAAO,CAAG,EAAI,aAAa,CAAC,qBAAqB,GAAG,GAAG,EAE7D,IAAe,KAAM,EAAQ,EAC/B,EACA,CAAC,EAAO,EAAa,EAGjB,EAAa,AAAA,EAAY,KAC7B,IAAe,KAAM,KAAM,KAC7B,EAAG,CAAC,EAAa,SAEjB,AAAI,AAAgB,MAAhB,EACK,CACL,QAAA,EACA,YAAa,KAAA,EACb,YAAa,KAAA,EACb,WAAY,KAAA,CACd,EAGK,CAAE,YAAA,EAAa,YAAa,EAAa,WAAA,EAAY,QAAA,CAAQ,CACtE,EAxE+B,EAAY,CACrC,MAAO,EACP,UAAA,CACF,EACA,EAAE,aAAc,CAAE,IAAK,CAAU,EAAG,CAClC,EAAE,GACF,EAAE,EAAE,CAAC,GAAgB,EAAA,kBAAiB,CAAG,CACvC,OAAQ,EACR,mBAAoB,CACtB,GACA,EAAE,EAAA,cAAa,CAAG,CAChB,cAAA,EACA,WAAA,EACA,MAhCM,EAiCN,YAAA,EACA,gBAAA,EACA,UAAA,EACA,mBAAoB,EACpB,mBAAA,CACF,GACA,EACD,EAEL,CAwDO,SAAS,EAAgB,CAA2B,EACzD,GAAM,CAAA,UAAE,CAAS,CAAE,GAAG,EAAM,CAAG,EACzB,EAAW,AAAA,IAEjB,OAAO,EAAE,EAAK,CACZ,UAAW,AAAA,EACT,EACA,CACE,YAAa,GAAU,WAAa,CAAA,CACtC,EACA,oBAEF,GAAG,CAAI,AACT,EACF,CAEO,SAAS,EAAgB,CAAA,KAC9B,CAAI,CAAA,aACJ,EAAe,CAAA,CAAA,CAAA,eACf,EAAiB,CAAA,CAAA,CAClB,SACC,AAAI,AAAQ,MAAR,EAAqB,KAClB,EAAE,kBAAmB,CAC1B,EAAE,uBAAwB,CACxB,EAAE,KAAM,EAAK,QAAQ,EACrB,EAAE,EAAE,CAAC,GAAc,KAAM,EAAE,EAAA,UAAS,CAAG,CAAE,GAAI,EAAK,MAAM,AAAC,IAC1D,EACD,EAAE,EAAW,CAAE,IAAK,CAAA,EAAM,MAAO,QAAS,MAAO,EAAK,SAAS,AAAC,GAChE,EAAE,EAAE,CAAC,GAAgB,EAAA,eAAc,CAAG,CACpC,KAAM,EAAK,IAAI,CACf,OAAQ,CAAA,EACR,IAAK,CAAA,EACL,UAAW,aACb,GACD,CACH,Q,K,M,C,K,e,C,K,e","sources":["<anon>","packages/column-views/src/column.ts"],"sourcesContent":["import \"./column-views.1261be59.js\";\nimport \"./column-views.f93b4175.js\";\nimport \"./column-views.5c02450b.js\";\nimport \"./column-views.7b6e7d82.js\";\nimport \"./column-views.5e73411d.js\";\nimport \"./column-views.ffbffec7.js\";\nimport \"./column-views.0818254f.js\";\nimport \"./column-views.5f3f8ccf.js\";\nimport \"./column-views.7f9c7448.js\";\nimport \"./column-views.5fd6e11a.js\";\nimport {ColumnAxisType as $6sU8d$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {hyperStyled as $6sU8d$hyperStyled} from \"@macrostrat/hyper\";\nimport {extractPadding as $6sU8d$extractPadding, useDarkMode as $6sU8d$useDarkMode, Box as $6sU8d$Box} from \"@macrostrat/ui-components\";\nimport $6sU8d$classnames from \"classnames\";\nimport {useCallback as $6sU8d$useCallback} from \"react\";\nimport {NonIdealState as $6sU8d$NonIdealState} from \"@blueprintjs/core\";\nimport {DataField as $6sU8d$DataField} 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 $4721fb147cb3f5e1$exports = {};\n\n$parcel$export($4721fb147cb3f5e1$exports, \"Column\", () => $4721fb147cb3f5e1$export$816b5d811295e6bc);\n$parcel$export($4721fb147cb3f5e1$exports, \"ColumnContainer\", () => $4721fb147cb3f5e1$export$2194471aa3d52446);\n$parcel$export($4721fb147cb3f5e1$exports, \"ColumnBasicInfo\", () => $4721fb147cb3f5e1$export$fcdf79c491a4504f);\n\n\n\n\n\n\nvar $7YHvf = parcelRequire(\"7YHvf\");\n\nvar $7tWYE = parcelRequire(\"7tWYE\");\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\nvar $5SO8b = parcelRequire(\"5SO8b\");\n\nvar $iYfAq = parcelRequire(\"iYfAq\");\nvar $2KV3o = parcelRequire(\"2KV3o\");\n\nvar $7exMg = parcelRequire(\"7exMg\");\n\nvar $4hG2H = parcelRequire(\"4hG2H\");\n\nvar $76iYI = parcelRequire(\"76iYI\");\nvar $610tc = parcelRequire(\"610tc\");\n\n\nconst $4721fb147cb3f5e1$var$h = (0, $6sU8d$hyperStyled)((0, (/*@__PURE__*/$parcel$interopDefault($7YHvf))));\nfunction $4721fb147cb3f5e1$export$816b5d811295e6bc(props) {\n const { showUnitPopover: showUnitPopover = false, keyboardNavigation: keyboardNavigation = false, mergeSections: mergeSections, onUnitSelected: onUnitSelected, selectedUnit: selectedUnit, children: children, units: rawUnits, t_age: t_age, b_age: b_age, t_pos: t_pos, b_pos: b_pos, unconformityHeight: unconformityHeight = 30, targetUnitHeight: targetUnitHeight = 20, pixelScale: pixelScale, minPixelScale: minPixelScale = 0.2, minSectionHeight: minSectionHeight = 50, collapseSmallUnconformities: collapseSmallUnconformities = true, allowUnitSelection: allowUnitSelection = false, hybridScale: hybridScale, scale: scale, axisType: axisType, ...rest } = props;\n /* Make pixelScale and targetUnitHeight mutually exclusive. PixelScale implies\n * standardization of scales in all sections */ let _targetUnitHeight = targetUnitHeight;\n let _minSectionHeight = minSectionHeight;\n let _minPixelScale = minPixelScale;\n if (pixelScale != null) {\n _targetUnitHeight = null;\n _minSectionHeight = 0;\n _minPixelScale = pixelScale;\n }\n // Handle special cases for hybrid scales (WIP, we need to regularize this)\n let _axisType = axisType ?? (0, $6sU8d$ColumnAxisType).AGE;\n let ageAxisComponent = (0, $4hG2H.CompositeAgeAxis);\n if (hybridScale?.type === (0, $76iYI.HybridScaleType).ApproximateHeight && _axisType != (0, $6sU8d$ColumnAxisType).AGE) {\n // Use approximate height axis for non-age columns if a non-age axis type is requested\n ageAxisComponent = (0, $4hG2H.ApproximateHeightAxis);\n _axisType = (0, $6sU8d$ColumnAxisType).AGE;\n }\n const { sections: sections, units: units, totalHeight: totalHeight } = (0, $610tc.usePreparedColumnUnits)(rawUnits, {\n axisType: _axisType,\n t_age: t_age,\n b_age: b_age,\n t_pos: t_pos,\n b_pos: b_pos,\n mergeSections: mergeSections,\n targetUnitHeight: _targetUnitHeight,\n unconformityHeight: unconformityHeight,\n pixelScale: pixelScale,\n minPixelScale: _minPixelScale,\n minSectionHeight: _minSectionHeight,\n collapseSmallUnconformities: collapseSmallUnconformities,\n scale: // TODO: consider unifying scale and hybridScale options\n scale,\n hybridScale: hybridScale\n });\n if (sections.length === 0) return $4721fb147cb3f5e1$var$h(\"div.column-container.empty\", $4721fb147cb3f5e1$var$h((0, $6sU8d$NonIdealState), {\n title: \"Empty column\",\n description: \"No sections found in this column.\",\n icon: \"warning-sign\"\n }));\n return $4721fb147cb3f5e1$var$h((0, $wtIgl.MacrostratColumnDataProvider), {\n units: units,\n sections: sections,\n totalHeight: totalHeight,\n axisType: _axisType,\n allowUnitSelection: showUnitPopover || allowUnitSelection,\n onUnitSelected: onUnitSelected,\n selectedUnit: selectedUnit\n }, $4721fb147cb3f5e1$var$h($4721fb147cb3f5e1$var$ColumnInner, {\n ageAxisComponent: ageAxisComponent,\n ...rest\n }, [\n children,\n $4721fb147cb3f5e1$var$h.if(showUnitPopover)((0, $2KV3o.UnitSelectionPopover)),\n $4721fb147cb3f5e1$var$h.if(keyboardNavigation)((0, $5SO8b.UnitKeyboardNavigation), {\n units: units\n })\n ]));\n}\nfunction $4721fb147cb3f5e1$var$ColumnInner(props) {\n const padding = (0, $6sU8d$extractPadding)(props);\n // TODO: integrate padding vars more closely with the rest of the spacing (right now padding is a bit ad-hoc)\n const paddingVars = {\n \"--column-padding-top\": `${padding.paddingTop}px`,\n \"--column-padding-bottom\": `${padding.paddingBottom}px`,\n \"--column-padding-left\": `${padding.paddingLeft}px`,\n \"--column-padding-right\": `${padding.paddingRight}px`\n };\n const { unitComponent: unitComponent = (0, $7tWYE.UnitComponent), unconformityLabels: unconformityLabels = \"minimal\", showLabels: showLabels = true, width: _width = 300, columnWidth: _columnWidth = 150, showLabelColumn: _showLabelColumn = true, className: className, clipUnits: clipUnits = false, children: children, showTimescale: showTimescale, timescaleLevels: timescaleLevels, maxInternalColumns: maxInternalColumns, onMouseOver: onMouseOver, ageAxisComponent: ageAxisComponent = (0, $4hG2H.CompositeAgeAxis) } = props;\n const { axisType: axisType } = (0, $wtIgl.useMacrostratColumnData)();\n const columnRef = (0, $5SO8b.useColumnRef)();\n // Coalesce unconformity label setting to a boolean\n let _timescaleUnconformityLabels = false;\n let _sectionUnconformityLabels = false;\n if (unconformityLabels === true || unconformityLabels === \"prominent\") _sectionUnconformityLabels = true;\n else if (unconformityLabels === \"minimal\") _timescaleUnconformityLabels = true;\n let width = _width;\n let columnWidth = _columnWidth;\n if (columnWidth > width) columnWidth = width;\n let showLabelColumn = _showLabelColumn;\n if (columnWidth > width - 10) showLabelColumn = false;\n let _showTimescale = showTimescale ?? true;\n if (timescaleLevels != null) _showTimescale = true;\n _showTimescale = axisType == (0, $6sU8d$ColumnAxisType).AGE && _showTimescale;\n return $4721fb147cb3f5e1$var$h($4721fb147cb3f5e1$export$2194471aa3d52446, {\n ...$4721fb147cb3f5e1$var$useMouseEventHandlers(onMouseOver),\n style: paddingVars,\n className: className\n }, $4721fb147cb3f5e1$var$h(\"div.column\", {\n ref: columnRef\n }, [\n $4721fb147cb3f5e1$var$h(ageAxisComponent),\n $4721fb147cb3f5e1$var$h.if(_showTimescale)((0, $7exMg.CompositeTimescale), {\n levels: timescaleLevels,\n unconformityLabels: _timescaleUnconformityLabels\n }),\n $4721fb147cb3f5e1$var$h((0, $7exMg.SectionsColumn), {\n unitComponent: unitComponent,\n showLabels: showLabels,\n width: width,\n columnWidth: columnWidth,\n showLabelColumn: showLabelColumn,\n clipUnits: clipUnits,\n unconformityLabels: _sectionUnconformityLabels,\n maxInternalColumns: maxInternalColumns\n }),\n children\n ]));\n}\nfunction $4721fb147cb3f5e1$var$useMouseEventHandlers(_onMouseOver = null) {\n /** Click event handler */ // Click handler for unit selection\n const dispatch = (0, $5SO8b.useUnitSelectionDispatch)();\n const onClick = (0, $6sU8d$useCallback)((evt)=>{\n dispatch?.(null, null);\n }, [\n dispatch\n ]);\n /** Hover event handlers */ const scale = (0, $wtIgl.useCompositeScale)();\n const onMouseOver = (0, $6sU8d$useCallback)((evt)=>{\n const height = scale.invert(evt.clientY - evt.currentTarget.getBoundingClientRect().top);\n _onMouseOver?.(null, height, evt);\n }, [\n scale,\n _onMouseOver\n ]);\n const onMouseOut = (0, $6sU8d$useCallback)(()=>{\n _onMouseOver?.(null, null, null);\n }, [\n _onMouseOver\n ]);\n if (_onMouseOver == null) return {\n onClick: onClick,\n onMouseOver: undefined,\n onMouseMove: undefined,\n onMouseOut: undefined\n };\n return {\n onMouseOver: onMouseOver,\n onMouseMove: onMouseOver,\n onMouseOut: onMouseOut,\n onClick: onClick\n };\n}\nfunction $4721fb147cb3f5e1$export$2194471aa3d52446(props) {\n const { className: className, ...rest } = props;\n const darkMode = (0, $6sU8d$useDarkMode)();\n return $4721fb147cb3f5e1$var$h((0, $6sU8d$Box), {\n className: (0, $6sU8d$classnames)(className, {\n \"dark-mode\": darkMode?.isEnabled ?? false\n }, \"column-container\"),\n ...rest\n });\n}\nfunction $4721fb147cb3f5e1$export$fcdf79c491a4504f({ data: data, showColumnID: showColumnID = true, showReferences: showReferences = true }) {\n if (data == null) return null;\n return $4721fb147cb3f5e1$var$h(\"div.column-info\", [\n $4721fb147cb3f5e1$var$h(\"div.column-title-row\", [\n $4721fb147cb3f5e1$var$h(\"h2\", data.col_name),\n $4721fb147cb3f5e1$var$h.if(showColumnID)(\"h4\", $4721fb147cb3f5e1$var$h((0, $iYfAq.Identifier), {\n id: data.col_id\n }))\n ]),\n $4721fb147cb3f5e1$var$h((0, $6sU8d$DataField), {\n row: true,\n label: \"Group\",\n value: data.col_group\n }),\n $4721fb147cb3f5e1$var$h.if(showReferences)((0, $iYfAq.ReferencesField), {\n refs: data.refs,\n inline: false,\n row: false,\n className: \"column-refs\"\n })\n ]);\n}\n\n\nexport {$4721fb147cb3f5e1$export$816b5d811295e6bc as Column, $4721fb147cb3f5e1$export$2194471aa3d52446 as ColumnContainer, $4721fb147cb3f5e1$export$fcdf79c491a4504f as ColumnBasicInfo};\n//# sourceMappingURL=column-views.74fcfb9c.js.map\n","import { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { hyperStyled } from \"@macrostrat/hyper\";\nimport {\n Box,\n extractPadding,\n Padding,\n useDarkMode,\n} from \"@macrostrat/ui-components\";\nimport classNames from \"classnames\";\nimport {\n HTMLAttributes,\n useCallback,\n CSSProperties,\n ComponentType,\n} from \"react\";\nimport styles from \"./column.module.sass\";\nimport { UnitComponent } from \"./units\";\nimport {\n UnitKeyboardNavigation,\n useColumnRef,\n useUnitSelectionDispatch,\n} from \"./data-provider\";\n\nimport {\n Identifier,\n ReferencesField,\n UnitSelectionPopover,\n} from \"./unit-details\";\nimport {\n MacrostratColumnDataProvider,\n useCompositeScale,\n useMacrostratColumnData,\n} from \"./data-provider\";\nimport {\n SectionSharedProps,\n CompositeTimescale,\n SectionsColumn,\n} from \"./section\";\nimport { ApproximateHeightAxis, CompositeAgeAxis } from \"./age-axis\";\nimport {\n MergeSectionsMode,\n usePreparedColumnUnits,\n HybridScaleType,\n ColumnHeightScaleOptions,\n} from \"./prepare-units\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport { NonIdealState } from \"@blueprintjs/core\";\nimport { DataField } from \"@macrostrat/data-components\";\nimport { ScaleContinuousNumeric } from \"d3-scale\";\n\nconst h = hyperStyled(styles);\n\ninterface BaseColumnProps extends Omit<\n SectionSharedProps,\n \"unconformityLabels\"\n> {\n className?: string;\n showLabelColumn?: boolean;\n keyboardNavigation?: boolean;\n showLabels?: boolean;\n maxInternalColumns?: number;\n // Timescale properties\n showTimescale?: boolean;\n timescaleLevels?: number | [number, number];\n unconformityLabels?: boolean | UnconformityLabelPlacement;\n onMouseOver?: (\n unit: UnitLong | null,\n height: number | null,\n evt: MouseEvent,\n ) => void;\n}\n\nexport type UnconformityLabelPlacement = \"minimal\" | \"prominent\" | \"none\";\n\nexport interface ColumnProps\n extends Padding, BaseColumnProps, ColumnHeightScaleOptions {\n // Macrostrat units\n units: UnitLong[];\n t_age?: number;\n b_age?: number;\n t_pos?: number;\n b_pos?: number;\n mergeSections?: MergeSectionsMode;\n showUnitPopover?: boolean;\n allowUnitSelection?: boolean;\n selectedUnit?: number | null;\n onUnitSelected?: (unitID: number | null, unit: any) => void;\n // Unconformity height in pixels\n unconformityHeight?: number;\n scale?: ScaleContinuousNumeric<number, number>;\n}\n\nexport function Column(props: ColumnProps) {\n const {\n showUnitPopover = false,\n keyboardNavigation = false,\n mergeSections,\n onUnitSelected,\n selectedUnit,\n children,\n units: rawUnits,\n t_age,\n b_age,\n t_pos,\n b_pos,\n unconformityHeight = 30,\n targetUnitHeight = 20,\n pixelScale,\n minPixelScale = 0.2,\n minSectionHeight = 50,\n collapseSmallUnconformities = true,\n allowUnitSelection = false,\n hybridScale,\n scale,\n axisType,\n ...rest\n } = props;\n\n /* Make pixelScale and targetUnitHeight mutually exclusive. PixelScale implies\n * standardization of scales in all sections */\n let _targetUnitHeight = targetUnitHeight;\n let _minSectionHeight = minSectionHeight;\n let _minPixelScale = minPixelScale;\n if (pixelScale != null) {\n _targetUnitHeight = null;\n _minSectionHeight = 0;\n _minPixelScale = pixelScale;\n }\n\n // Handle special cases for hybrid scales (WIP, we need to regularize this)\n let _axisType = axisType ?? ColumnAxisType.AGE;\n let ageAxisComponent = CompositeAgeAxis;\n if (\n hybridScale?.type === HybridScaleType.ApproximateHeight &&\n _axisType != ColumnAxisType.AGE\n ) {\n // Use approximate height axis for non-age columns if a non-age axis type is requested\n ageAxisComponent = ApproximateHeightAxis;\n _axisType = ColumnAxisType.AGE;\n }\n\n const { sections, units, totalHeight } = usePreparedColumnUnits(rawUnits, {\n axisType: _axisType,\n t_age,\n b_age,\n t_pos,\n b_pos,\n mergeSections,\n targetUnitHeight: _targetUnitHeight,\n unconformityHeight,\n pixelScale,\n minPixelScale: _minPixelScale,\n minSectionHeight: _minSectionHeight,\n collapseSmallUnconformities,\n // TODO: consider unifying scale and hybridScale options\n scale,\n hybridScale,\n });\n\n if (sections.length === 0) {\n return h(\n \"div.column-container.empty\",\n h(NonIdealState, {\n title: \"Empty column\",\n description: \"No sections found in this column.\",\n icon: \"warning-sign\",\n }),\n );\n }\n\n return h(\n MacrostratColumnDataProvider,\n {\n units,\n sections,\n totalHeight,\n axisType: _axisType,\n allowUnitSelection: showUnitPopover || allowUnitSelection,\n onUnitSelected,\n selectedUnit,\n },\n h(ColumnInner, { ageAxisComponent, ...rest }, [\n children,\n h.if(showUnitPopover)(UnitSelectionPopover),\n h.if(keyboardNavigation)(UnitKeyboardNavigation, { units }),\n ]),\n );\n}\n\ninterface ColumnInnerProps extends BaseColumnProps {\n ageAxisComponent?: ComponentType;\n}\n\nfunction ColumnInner(props: ColumnInnerProps) {\n const padding = extractPadding(props);\n\n // TODO: integrate padding vars more closely with the rest of the spacing (right now padding is a bit ad-hoc)\n const paddingVars: any = {\n \"--column-padding-top\": `${padding.paddingTop}px`,\n \"--column-padding-bottom\": `${padding.paddingBottom}px`,\n \"--column-padding-left\": `${padding.paddingLeft}px`,\n \"--column-padding-right\": `${padding.paddingRight}px`,\n };\n\n const {\n unitComponent = UnitComponent,\n unconformityLabels = \"minimal\",\n showLabels = true,\n width: _width = 300,\n columnWidth: _columnWidth = 150,\n showLabelColumn: _showLabelColumn = true,\n className,\n clipUnits = false,\n children,\n showTimescale,\n timescaleLevels,\n maxInternalColumns,\n onMouseOver,\n ageAxisComponent = CompositeAgeAxis,\n } = props;\n\n const { axisType } = useMacrostratColumnData();\n\n const columnRef = useColumnRef();\n\n // Coalesce unconformity label setting to a boolean\n let _timescaleUnconformityLabels = false;\n let _sectionUnconformityLabels = false;\n if (unconformityLabels === true || unconformityLabels === \"prominent\") {\n _sectionUnconformityLabels = true;\n } else if (unconformityLabels === \"minimal\") {\n _timescaleUnconformityLabels = true;\n }\n\n let width = _width;\n let columnWidth = _columnWidth;\n if (columnWidth > width) {\n columnWidth = width;\n }\n let showLabelColumn = _showLabelColumn;\n if (columnWidth > width - 10) {\n showLabelColumn = false;\n }\n\n let _showTimescale = showTimescale ?? true;\n if (timescaleLevels != null) {\n _showTimescale = true;\n }\n _showTimescale = axisType == ColumnAxisType.AGE && _showTimescale;\n\n return h(\n ColumnContainer,\n {\n ...useMouseEventHandlers(onMouseOver),\n style: paddingVars,\n className,\n },\n h(\"div.column\", { ref: columnRef }, [\n h(ageAxisComponent),\n h.if(_showTimescale)(CompositeTimescale, {\n levels: timescaleLevels,\n unconformityLabels: _timescaleUnconformityLabels,\n }),\n h(SectionsColumn, {\n unitComponent,\n showLabels,\n width,\n columnWidth,\n showLabelColumn,\n clipUnits,\n unconformityLabels: _sectionUnconformityLabels,\n maxInternalColumns,\n }),\n children,\n ]),\n );\n}\n\ntype ColumnMouseOverHandler = (\n unit: UnitLong | null,\n height: number | null,\n evt: MouseEvent,\n) => void;\n\nfunction useMouseEventHandlers(\n _onMouseOver: ColumnMouseOverHandler | null = null,\n) {\n /** Click event handler */\n\n // Click handler for unit selection\n const dispatch = useUnitSelectionDispatch();\n const onClick = useCallback(\n (evt) => {\n dispatch?.(null, null);\n },\n [dispatch],\n );\n\n /** Hover event handlers */\n const scale = useCompositeScale();\n\n const onMouseOver = useCallback(\n (evt) => {\n const height = scale.invert(\n evt.clientY - evt.currentTarget.getBoundingClientRect().top,\n );\n _onMouseOver?.(null, height, evt);\n },\n [scale, _onMouseOver],\n );\n\n const onMouseOut = useCallback(() => {\n _onMouseOver?.(null, null, null);\n }, [_onMouseOver]);\n\n if (_onMouseOver == null) {\n return {\n onClick,\n onMouseOver: undefined,\n onMouseMove: undefined,\n onMouseOut: undefined,\n };\n }\n\n return { onMouseOver, onMouseMove: onMouseOver, onMouseOut, onClick };\n}\n\nexport interface ColumnContainerProps extends HTMLAttributes<HTMLDivElement> {\n className?: string;\n style?: CSSProperties;\n}\n\nexport function ColumnContainer(props: ColumnContainerProps) {\n const { className, ...rest } = props;\n const darkMode = useDarkMode();\n\n return h(Box, {\n className: classNames(\n className,\n {\n \"dark-mode\": darkMode?.isEnabled ?? false,\n },\n \"column-container\",\n ),\n ...rest,\n });\n}\n\nexport function ColumnBasicInfo({\n data,\n showColumnID = true,\n showReferences = true,\n}) {\n if (data == null) return null;\n return h(\"div.column-info\", [\n h(\"div.column-title-row\", [\n h(\"h2\", data.col_name),\n h.if(showColumnID)(\"h4\", h(Identifier, { id: data.col_id })),\n ]),\n h(DataField, { row: true, label: \"Group\", value: data.col_group }),\n h.if(showReferences)(ReferencesField, {\n refs: data.refs,\n inline: false,\n row: false,\n className: \"column-refs\",\n }),\n ]);\n}\n"],"names":["ColumnAxisType","$6sU8d$ColumnAxisType","hyperStyled","$6sU8d$hyperStyled","extractPadding","$6sU8d$extractPadding","useDarkMode","$6sU8d$useDarkMode","Box","$6sU8d$Box","$6sU8d$classnames","useCallback","$6sU8d$useCallback","NonIdealState","$6sU8d$NonIdealState","DataField","$6sU8d$DataField","$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","$4721fb147cb3f5e1$exports","$4721fb147cb3f5e1$export$816b5d811295e6bc","$4721fb147cb3f5e1$export$2194471aa3d52446","$4721fb147cb3f5e1$export$fcdf79c491a4504f","$7YHvf","$7tWYE","$wtIgl","$5SO8b","$iYfAq","$2KV3o","$7exMg","$4hG2H","$76iYI","$610tc","$4721fb147cb3f5e1$var$h","a","__esModule","default","props","showUnitPopover","keyboardNavigation","mergeSections","onUnitSelected","selectedUnit","children","units","rawUnits","t_age","b_age","t_pos","b_pos","unconformityHeight","targetUnitHeight","pixelScale","minPixelScale","minSectionHeight","collapseSmallUnconformities","allowUnitSelection","hybridScale","scale","axisType","rest","_targetUnitHeight","_minSectionHeight","_minPixelScale","_axisType","AGE","ageAxisComponent","CompositeAgeAxis","type","HybridScaleType","ApproximateHeight","ApproximateHeightAxis","sections","totalHeight","usePreparedColumnUnits","length","title","description","icon","MacrostratColumnDataProvider","$4721fb147cb3f5e1$var$ColumnInner","if","UnitSelectionPopover","UnitKeyboardNavigation","padding","paddingVars","paddingTop","paddingBottom","paddingLeft","paddingRight","unitComponent","UnitComponent","unconformityLabels","showLabels","width","_width","columnWidth","_columnWidth","showLabelColumn","_showLabelColumn","className","clipUnits","showTimescale","timescaleLevels","maxInternalColumns","onMouseOver","useMacrostratColumnData","columnRef","useColumnRef","_timescaleUnconformityLabels","_sectionUnconformityLabels","_showTimescale","$4721fb147cb3f5e1$var$useMouseEventHandlers","_onMouseOver","dispatch","useUnitSelectionDispatch","onClick","evt","useCompositeScale","height","invert","clientY","currentTarget","getBoundingClientRect","top","onMouseOut","undefined","onMouseMove","style","ref","CompositeTimescale","levels","SectionsColumn","darkMode","isEnabled","data","showColumnID","showReferences","col_name","Identifier","col_id","row","label","value","col_group","ReferencesField","refs","inline","Column","ColumnContainer","ColumnBasicInfo"],"version":3,"file":"column-views.74fcfb9c.js.map","sourceRoot":"../../../../"}