@macrostrat/column-views 2.1.3 → 2.2.0

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 (362) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/{column-views.4ab0ec82.js → column-views.073c42da.js} +142 -76
  3. package/dist/esm/column-views.073c42da.js.map +1 -0
  4. package/dist/esm/column-views.079119f4.js +17 -0
  5. package/dist/esm/column-views.079119f4.js.map +1 -0
  6. package/dist/esm/{column-views.0e06c069.js → column-views.0859feb3.js} +52 -23
  7. package/dist/esm/column-views.0859feb3.js.map +1 -0
  8. package/dist/esm/{column-views.d099eaf9.js → column-views.0a8a07f4.js} +3 -3
  9. package/dist/esm/{column-views.d099eaf9.js.map → column-views.0a8a07f4.js.map} +1 -1
  10. package/dist/esm/{column-views.0732894f.js → column-views.0f7f6ee6.js} +2 -2
  11. package/dist/esm/{column-views.0732894f.js.map → column-views.0f7f6ee6.js.map} +1 -1
  12. package/dist/esm/{column-views.57636733.css → column-views.1151416d.css} +5 -5
  13. package/dist/esm/column-views.1151416d.css.map +1 -0
  14. package/dist/esm/{column-views.53f4160e.js → column-views.1b644998.js} +3 -3
  15. package/dist/esm/{column-views.53f4160e.js.map → column-views.1b644998.js.map} +1 -1
  16. package/dist/esm/{column-views.686d21ad.js → column-views.22ec902b.js} +4 -1
  17. package/dist/esm/column-views.22ec902b.js.map +1 -0
  18. package/dist/esm/{column-views.3b637517.js → column-views.285cbb65.js} +40 -20
  19. package/dist/esm/column-views.285cbb65.js.map +1 -0
  20. package/dist/esm/column-views.2d602a57.js +37 -0
  21. package/dist/esm/column-views.2d602a57.js.map +1 -0
  22. package/dist/esm/{column-views.b17f793f.css → column-views.321af3ae.css} +7 -1
  23. package/dist/esm/{column-views.686d21ad.js.map → column-views.321af3ae.css.map} +1 -1
  24. package/dist/esm/column-views.3a7179c4.js +137 -0
  25. package/dist/esm/column-views.3a7179c4.js.map +1 -0
  26. package/dist/esm/{column-views.49adc09e.js → column-views.3e1b8c7d.js} +2 -2
  27. package/dist/esm/{column-views.49adc09e.js.map → column-views.3e1b8c7d.js.map} +1 -1
  28. package/dist/esm/{column-views.a23b2c92.js → column-views.3f528c5c.js} +50 -22
  29. package/dist/esm/column-views.3f528c5c.js.map +1 -0
  30. package/dist/esm/{column-views.1e055ed5.js → column-views.4fd4ec92.js} +17 -3
  31. package/dist/esm/column-views.4fd4ec92.js.map +1 -0
  32. package/dist/esm/{column-views.6ca980ae.js → column-views.53186d53.js} +2 -2
  33. package/dist/esm/{column-views.6ca980ae.js.map → column-views.53186d53.js.map} +1 -1
  34. package/dist/esm/{column-views.39657bbf.js → column-views.54f8b909.js} +7 -2
  35. package/dist/esm/column-views.54f8b909.js.map +1 -0
  36. package/dist/esm/{column-views.b72918ce.css → column-views.562db43a.css} +10 -2
  37. package/dist/esm/column-views.562db43a.css.map +1 -0
  38. package/dist/esm/{column-views.9e1c82fe.js → column-views.58b891df.js} +2 -2
  39. package/dist/esm/{column-views.9e1c82fe.js.map → column-views.58b891df.js.map} +1 -1
  40. package/dist/esm/{column-views.a2cf8f33.js → column-views.5a49cd68.js} +8 -38
  41. package/dist/esm/column-views.5a49cd68.js.map +1 -0
  42. package/dist/esm/{column-views.2e0ff311.js → column-views.5d969bc5.js} +6 -58
  43. package/dist/esm/column-views.5d969bc5.js.map +1 -0
  44. package/dist/esm/{column-views.43fb819d.js → column-views.63b7e5aa.js} +3 -3
  45. package/dist/esm/{column-views.43fb819d.js.map → column-views.63b7e5aa.js.map} +1 -1
  46. package/dist/esm/column-views.6698b95a.js +108 -0
  47. package/dist/esm/column-views.6698b95a.js.map +1 -0
  48. package/dist/esm/column-views.6c644353.js +184 -0
  49. package/dist/esm/column-views.6c644353.js.map +1 -0
  50. package/dist/esm/column-views.6e7082db.js +16 -0
  51. package/dist/esm/column-views.6e7082db.js.map +1 -0
  52. package/dist/esm/column-views.70164236.js +206 -0
  53. package/dist/esm/column-views.70164236.js.map +1 -0
  54. package/dist/esm/{column-views.34a1ac4f.js → column-views.73b8ff16.js} +20 -22
  55. package/dist/esm/column-views.73b8ff16.js.map +1 -0
  56. package/dist/esm/{column-views.9771145a.js → column-views.77561197.js} +91 -55
  57. package/dist/esm/column-views.77561197.js.map +1 -0
  58. package/dist/esm/{column-views.572b70fd.js → column-views.83395185.js} +3 -3
  59. package/dist/esm/{column-views.572b70fd.js.map → column-views.83395185.js.map} +1 -1
  60. package/dist/esm/{column-views.6dc251d3.js → column-views.86a51ce7.js} +2 -2
  61. package/dist/esm/{column-views.6dc251d3.js.map → column-views.86a51ce7.js.map} +1 -1
  62. package/dist/esm/{column-views.f08929e2.js → column-views.88d63dd0.js} +5 -3
  63. package/dist/esm/column-views.88d63dd0.js.map +1 -0
  64. package/dist/esm/{column-views.3f246167.js → column-views.8c296309.js} +5 -5
  65. package/dist/esm/column-views.8c296309.js.map +1 -0
  66. package/dist/esm/{column-views.7d47a72a.js → column-views.8d24b179.js} +3 -3
  67. package/dist/esm/{column-views.7d47a72a.js.map → column-views.8d24b179.js.map} +1 -1
  68. package/dist/esm/{column-views.3d001ab8.js → column-views.986e7566.js} +7 -7
  69. package/dist/esm/{column-views.3d001ab8.js.map → column-views.986e7566.js.map} +1 -1
  70. package/dist/esm/{column-views.86619334.js → column-views.9ddbe7df.js} +2 -2
  71. package/dist/esm/{column-views.86619334.js.map → column-views.9ddbe7df.js.map} +1 -1
  72. package/dist/esm/{column-views.abe90091.js → column-views.ae7c0a2b.js} +31 -60
  73. package/dist/esm/column-views.ae7c0a2b.js.map +1 -0
  74. package/dist/esm/{column-views.9892f825.js → column-views.aecf25bc.js} +75 -42
  75. package/dist/esm/column-views.aecf25bc.js.map +1 -0
  76. package/dist/esm/column-views.b7016f82.css +54 -0
  77. package/dist/esm/column-views.b7016f82.css.map +1 -0
  78. package/dist/esm/{column-views.a5c1bbf0.js → column-views.ba0381cc.js} +2 -2
  79. package/dist/esm/{column-views.a5c1bbf0.js.map → column-views.ba0381cc.js.map} +1 -1
  80. package/dist/esm/{column-views.ff031876.js → column-views.c518ef14.js} +9 -4
  81. package/dist/esm/column-views.c518ef14.js.map +1 -0
  82. package/dist/esm/{column-views.f7523c1d.js → column-views.c92a359e.js} +2 -2
  83. package/dist/esm/{column-views.f7523c1d.js.map → column-views.c92a359e.js.map} +1 -1
  84. package/dist/esm/{column-views.cdadc5c2.js → column-views.cc733361.js} +7 -1
  85. package/dist/esm/column-views.cc733361.js.map +1 -0
  86. package/dist/esm/{column-views.4d22c21c.js → column-views.d15d8655.js} +22 -4
  87. package/dist/esm/column-views.d15d8655.js.map +1 -0
  88. package/dist/esm/{column-views.5e2dc19d.js → column-views.d261b02d.js} +3 -3
  89. package/dist/esm/{column-views.5e2dc19d.js.map → column-views.d261b02d.js.map} +1 -1
  90. package/dist/esm/{column-views.323cad41.js → column-views.d406665d.js} +5 -5
  91. package/dist/esm/{column-views.323cad41.js.map → column-views.d406665d.js.map} +1 -1
  92. package/dist/esm/{column-views.7715e35e.js → column-views.d69c4a9f.js} +3 -3
  93. package/dist/esm/{column-views.7715e35e.js.map → column-views.d69c4a9f.js.map} +1 -1
  94. package/dist/esm/{column-views.07db2ab1.js → column-views.d9c6b527.js} +15 -12
  95. package/dist/esm/column-views.d9c6b527.js.map +1 -0
  96. package/dist/esm/{column-views.b12a6374.css → column-views.e33ac5c9.css} +30 -9
  97. package/dist/esm/column-views.e33ac5c9.css.map +1 -0
  98. package/dist/esm/column-views.e3bf5384.js +15 -0
  99. package/dist/esm/{column-views.6d5e3098.js.map → column-views.e3bf5384.js.map} +1 -1
  100. package/dist/esm/{column-views.a8926321.js → column-views.e4c26185.js} +2 -2
  101. package/dist/esm/{column-views.a8926321.js.map → column-views.e4c26185.js.map} +1 -1
  102. package/dist/esm/column-views.e84bd756.js +92 -0
  103. package/dist/esm/column-views.e84bd756.js.map +1 -0
  104. package/dist/esm/column-views.ea4ebbb7.js +31 -0
  105. package/dist/esm/column-views.ea4ebbb7.js.map +1 -0
  106. package/dist/esm/column-views.ed05e233.js +13 -0
  107. package/dist/esm/{column-views.3729c372.js.map → column-views.ed05e233.js.map} +1 -1
  108. package/dist/esm/{column-views.64a84c43.js → column-views.f2fd0e4a.js} +10 -2
  109. package/dist/esm/column-views.f2fd0e4a.js.map +1 -0
  110. package/dist/esm/{column-views.103b1cb0.js → column-views.f46a0b36.js} +2 -2
  111. package/dist/esm/{column-views.103b1cb0.js.map → column-views.f46a0b36.js.map} +1 -1
  112. package/dist/esm/{column-views.d48cb0d8.js → column-views.fcf25ec6.js} +7 -1
  113. package/dist/esm/column-views.fcf25ec6.js.map +1 -0
  114. package/dist/esm/index.d.ts +235 -397
  115. package/dist/esm/index.d.ts.map +1 -1
  116. package/dist/esm/index.js +12 -12
  117. package/dist/node/{column-views.36094762.js → column-views.01debc76.js} +2 -2
  118. package/dist/node/{column-views.36094762.js.map → column-views.01debc76.js.map} +1 -1
  119. package/dist/node/{column-views.31f57130.js → column-views.040499c9.js} +2 -2
  120. package/dist/node/{column-views.31f57130.js.map → column-views.040499c9.js.map} +1 -1
  121. package/dist/node/{column-views.50034105.js → column-views.07ff1fdf.js} +2 -2
  122. package/dist/node/{column-views.50034105.js.map → column-views.07ff1fdf.js.map} +1 -1
  123. package/dist/node/{column-views.3a55ecd7.css → column-views.0840b115.css} +2 -2
  124. package/dist/node/column-views.0840b115.css.map +1 -0
  125. package/dist/node/column-views.0b3a384e.js +2 -0
  126. package/dist/node/column-views.0b3a384e.js.map +1 -0
  127. package/dist/node/column-views.0bd15ee4.js +2 -0
  128. package/dist/node/column-views.0bd15ee4.js.map +1 -0
  129. package/dist/node/column-views.105f6ad2.js +2 -0
  130. package/dist/node/column-views.105f6ad2.js.map +1 -0
  131. package/dist/node/column-views.1261be59.js +2 -0
  132. package/dist/node/column-views.1261be59.js.map +1 -0
  133. package/dist/node/{column-views.4381c411.js → column-views.13e69859.js} +2 -2
  134. package/dist/node/{column-views.4381c411.js.map → column-views.13e69859.js.map} +1 -1
  135. package/dist/node/column-views.16f336ee.js +2 -0
  136. package/dist/node/column-views.16f336ee.js.map +1 -0
  137. package/dist/node/{column-views.c18d5bf5.js → column-views.1a7f8afd.js} +2 -2
  138. package/dist/node/{column-views.c18d5bf5.js.map → column-views.1a7f8afd.js.map} +1 -1
  139. package/dist/node/column-views.29eb25bd.css +2 -0
  140. package/dist/node/column-views.29eb25bd.css.map +1 -0
  141. package/dist/node/column-views.2bd97c2e.js +2 -0
  142. package/dist/node/column-views.2bd97c2e.js.map +1 -0
  143. package/dist/node/column-views.3b37363f.js +2 -0
  144. package/dist/node/column-views.3b37363f.js.map +1 -0
  145. package/dist/node/column-views.45296250.js +2 -0
  146. package/dist/node/column-views.45296250.js.map +1 -0
  147. package/dist/node/{column-views.0cbd4a3f.js → column-views.48a3cfa3.js} +2 -2
  148. package/dist/node/{column-views.0cbd4a3f.js.map → column-views.48a3cfa3.js.map} +1 -1
  149. package/dist/node/{column-views.42db0bb8.js → column-views.492c2c72.js} +2 -2
  150. package/dist/node/{column-views.42db0bb8.js.map → column-views.492c2c72.js.map} +1 -1
  151. package/dist/node/column-views.50a992d3.css +2 -0
  152. package/dist/node/column-views.50a992d3.css.map +1 -0
  153. package/dist/node/column-views.573cb29d.js +2 -0
  154. package/dist/node/column-views.573cb29d.js.map +1 -0
  155. package/dist/node/column-views.576e3c5a.js +2 -0
  156. package/dist/node/column-views.576e3c5a.js.map +1 -0
  157. package/dist/node/column-views.5f3b0b04.js +2 -0
  158. package/dist/node/column-views.5f3b0b04.js.map +1 -0
  159. package/dist/node/column-views.6fd5a922.js +2 -0
  160. package/dist/node/column-views.6fd5a922.js.map +1 -0
  161. package/dist/node/column-views.7150ba18.js +2 -0
  162. package/dist/node/column-views.7150ba18.js.map +1 -0
  163. package/dist/node/column-views.728c8dfc.js +2 -0
  164. package/dist/node/column-views.728c8dfc.js.map +1 -0
  165. package/dist/node/column-views.7425d37b.js +2 -0
  166. package/dist/node/column-views.7425d37b.js.map +1 -0
  167. package/dist/node/{column-views.2e4e357d.js → column-views.75582658.js} +2 -2
  168. package/dist/node/{column-views.2e4e357d.js.map → column-views.75582658.js.map} +1 -1
  169. package/dist/node/column-views.77ace3a2.js +2 -0
  170. package/dist/node/column-views.77ace3a2.js.map +1 -0
  171. package/dist/node/column-views.7f9c7448.js +2 -0
  172. package/dist/node/column-views.7f9c7448.js.map +1 -0
  173. package/dist/node/{column-views.a2274834.js → column-views.81294fb7.js} +2 -2
  174. package/dist/node/{column-views.a2274834.js.map → column-views.81294fb7.js.map} +1 -1
  175. package/dist/node/column-views.827a9894.js +2 -0
  176. package/dist/node/column-views.827a9894.js.map +1 -0
  177. package/dist/node/column-views.87b1439e.js +2 -0
  178. package/dist/node/column-views.87b1439e.js.map +1 -0
  179. package/dist/node/{column-views.e4f18ff7.js → column-views.9dda582d.js} +2 -2
  180. package/dist/node/{column-views.e4f18ff7.js.map → column-views.9dda582d.js.map} +1 -1
  181. package/dist/node/column-views.9e155f20.js +2 -0
  182. package/dist/node/column-views.9e155f20.js.map +1 -0
  183. package/dist/node/column-views.a16cd1f2.js +2 -0
  184. package/dist/node/column-views.a16cd1f2.js.map +1 -0
  185. package/dist/node/{column-views.adf9e5b3.js → column-views.a34732e7.js} +2 -2
  186. package/dist/node/{column-views.adf9e5b3.js.map → column-views.a34732e7.js.map} +1 -1
  187. package/dist/node/{column-views.f17b6142.js → column-views.a396d3ac.js} +2 -2
  188. package/dist/node/{column-views.f17b6142.js.map → column-views.a396d3ac.js.map} +1 -1
  189. package/dist/node/column-views.aae09aca.js +2 -0
  190. package/dist/node/column-views.aae09aca.js.map +1 -0
  191. package/dist/node/{column-views.db5d74bd.js → column-views.ac1b58b7.js} +2 -2
  192. package/dist/node/{column-views.db5d74bd.js.map → column-views.ac1b58b7.js.map} +1 -1
  193. package/dist/node/column-views.aef76eee.js +2 -0
  194. package/dist/node/column-views.aef76eee.js.map +1 -0
  195. package/dist/node/column-views.b64cd0ea.js +2 -0
  196. package/dist/node/column-views.b64cd0ea.js.map +1 -0
  197. package/dist/node/column-views.b6cd4360.js +2 -0
  198. package/dist/node/column-views.b6cd4360.js.map +1 -0
  199. package/dist/node/column-views.c0be1157.js +2 -0
  200. package/dist/node/column-views.c0be1157.js.map +1 -0
  201. package/dist/node/column-views.c29e9eb8.js +2 -0
  202. package/dist/node/column-views.c29e9eb8.js.map +1 -0
  203. package/dist/node/column-views.c8df6435.js +2 -0
  204. package/dist/node/column-views.c8df6435.js.map +1 -0
  205. package/dist/node/column-views.cd2a5c85.js +2 -0
  206. package/dist/node/column-views.cd2a5c85.js.map +1 -0
  207. package/dist/node/{column-views.3d220e0c.js → column-views.cd77a1d8.js} +2 -2
  208. package/dist/node/{column-views.3d220e0c.js.map → column-views.cd77a1d8.js.map} +1 -1
  209. package/dist/node/column-views.cd7b223b.css +2 -0
  210. package/dist/node/column-views.cd7b223b.css.map +1 -0
  211. package/dist/node/column-views.cf2a78c1.js +2 -0
  212. package/dist/node/column-views.cf2a78c1.js.map +1 -0
  213. package/dist/node/{column-views.c7f6fc0a.js → column-views.d529d3aa.js} +2 -2
  214. package/dist/node/{column-views.c7f6fc0a.js.map → column-views.d529d3aa.js.map} +1 -1
  215. package/dist/node/{column-views.7010a03b.js → column-views.dd972321.js} +2 -2
  216. package/dist/node/{column-views.7010a03b.js.map → column-views.dd972321.js.map} +1 -1
  217. package/dist/node/column-views.e065152e.js +2 -0
  218. package/dist/node/column-views.e065152e.js.map +1 -0
  219. package/dist/node/{column-views.6c7a40e0.js → column-views.e08f8715.js} +2 -2
  220. package/dist/node/{column-views.6c7a40e0.js.map → column-views.e08f8715.js.map} +1 -1
  221. package/dist/node/{column-views.507635e2.js → column-views.e0d9865e.js} +2 -2
  222. package/dist/node/column-views.e0d9865e.js.map +1 -0
  223. package/dist/node/column-views.e2562224.js +2 -0
  224. package/dist/node/column-views.e2562224.js.map +1 -0
  225. package/dist/node/column-views.e803e4ae.css +2 -0
  226. package/dist/node/column-views.e803e4ae.css.map +1 -0
  227. package/dist/node/column-views.edb4ba54.js +2 -0
  228. package/dist/node/column-views.edb4ba54.js.map +1 -0
  229. package/dist/node/index.js +1 -1
  230. package/dist/node/index.js.map +1 -1
  231. package/package.json +14 -14
  232. package/src/age-axis.module.sass +4 -2
  233. package/src/age-axis.ts +49 -15
  234. package/src/age-model-overlay.ts +22 -1
  235. package/src/column.module.sass +32 -9
  236. package/src/column.ts +91 -19
  237. package/src/correlation-chart/main.ts +10 -2
  238. package/src/correlation-chart/prepare-data.ts +7 -4
  239. package/src/correlation-chart/stories/correlation-chart.stories.ts +26 -1
  240. package/src/data-provider/base.ts +33 -25
  241. package/src/data-provider/fetch.ts +10 -3
  242. package/src/data-provider/store.ts +16 -10
  243. package/src/facets/base-sample-column.module.sass +14 -0
  244. package/src/facets/base-sample-column.ts +114 -0
  245. package/src/facets/detrital-zircon/index.ts +31 -63
  246. package/src/facets/fossils/index.module.sass +43 -13
  247. package/src/facets/fossils/index.ts +246 -80
  248. package/src/facets/fossils/provider.ts +121 -25
  249. package/src/facets/index.ts +2 -0
  250. package/src/facets/measurements/index.ts +38 -0
  251. package/src/facets/measurements/provider.ts +80 -0
  252. package/src/prepare-units/composite-scale.ts +183 -155
  253. package/src/prepare-units/dynamic-scales.ts +298 -0
  254. package/src/prepare-units/helpers.ts +99 -87
  255. package/src/prepare-units/index.ts +77 -51
  256. package/src/prepare-units/types.ts +138 -0
  257. package/src/prepare-units/utils.ts +29 -1
  258. package/src/section.ts +46 -9
  259. package/src/unit-details/panel.module.sass +8 -1
  260. package/src/unit-details/panel.ts +123 -53
  261. package/src/unit-details/popover.ts +5 -0
  262. package/src/units/boxes.ts +2 -69
  263. package/src/units/composite.ts +3 -49
  264. package/src/units/selection.ts +21 -7
  265. package/dist/esm/column-views.07db2ab1.js.map +0 -1
  266. package/dist/esm/column-views.0e06c069.js.map +0 -1
  267. package/dist/esm/column-views.1c92b88f.js +0 -16
  268. package/dist/esm/column-views.1c92b88f.js.map +0 -1
  269. package/dist/esm/column-views.1e055ed5.js.map +0 -1
  270. package/dist/esm/column-views.2e0ff311.js.map +0 -1
  271. package/dist/esm/column-views.3048acc1.js +0 -66
  272. package/dist/esm/column-views.3048acc1.js.map +0 -1
  273. package/dist/esm/column-views.34a1ac4f.js.map +0 -1
  274. package/dist/esm/column-views.3729c372.js +0 -13
  275. package/dist/esm/column-views.39657bbf.js.map +0 -1
  276. package/dist/esm/column-views.3b637517.js.map +0 -1
  277. package/dist/esm/column-views.3f246167.js.map +0 -1
  278. package/dist/esm/column-views.4ab0ec82.js.map +0 -1
  279. package/dist/esm/column-views.4d22c21c.js.map +0 -1
  280. package/dist/esm/column-views.57636733.css.map +0 -1
  281. package/dist/esm/column-views.60dc6bfc.js +0 -108
  282. package/dist/esm/column-views.60dc6bfc.js.map +0 -1
  283. package/dist/esm/column-views.64a84c43.js.map +0 -1
  284. package/dist/esm/column-views.6d5e3098.js +0 -11
  285. package/dist/esm/column-views.9771145a.js.map +0 -1
  286. package/dist/esm/column-views.9892f825.js.map +0 -1
  287. package/dist/esm/column-views.a23b2c92.js.map +0 -1
  288. package/dist/esm/column-views.a2cf8f33.js.map +0 -1
  289. package/dist/esm/column-views.abe90091.js.map +0 -1
  290. package/dist/esm/column-views.b12a6374.css.map +0 -1
  291. package/dist/esm/column-views.b17f793f.css.map +0 -1
  292. package/dist/esm/column-views.b72918ce.css.map +0 -1
  293. package/dist/esm/column-views.c71c321c.js +0 -104
  294. package/dist/esm/column-views.c71c321c.js.map +0 -1
  295. package/dist/esm/column-views.cdadc5c2.js.map +0 -1
  296. package/dist/esm/column-views.d48cb0d8.js.map +0 -1
  297. package/dist/esm/column-views.f08929e2.js.map +0 -1
  298. package/dist/esm/column-views.ff031876.js.map +0 -1
  299. package/dist/node/column-views.0bb1ec93.js +0 -2
  300. package/dist/node/column-views.0bb1ec93.js.map +0 -1
  301. package/dist/node/column-views.13c4ea85.js +0 -2
  302. package/dist/node/column-views.13c4ea85.js.map +0 -1
  303. package/dist/node/column-views.1a0b56fc.js +0 -2
  304. package/dist/node/column-views.1a0b56fc.js.map +0 -1
  305. package/dist/node/column-views.226d0bdb.js +0 -2
  306. package/dist/node/column-views.226d0bdb.js.map +0 -1
  307. package/dist/node/column-views.2926f656.css +0 -2
  308. package/dist/node/column-views.2926f656.css.map +0 -1
  309. package/dist/node/column-views.2ab1c2f8.js +0 -2
  310. package/dist/node/column-views.2ab1c2f8.js.map +0 -1
  311. package/dist/node/column-views.3345cd7a.js +0 -2
  312. package/dist/node/column-views.3345cd7a.js.map +0 -1
  313. package/dist/node/column-views.33752461.js +0 -2
  314. package/dist/node/column-views.33752461.js.map +0 -1
  315. package/dist/node/column-views.372bbee2.js +0 -2
  316. package/dist/node/column-views.372bbee2.js.map +0 -1
  317. package/dist/node/column-views.38357d4a.js +0 -2
  318. package/dist/node/column-views.38357d4a.js.map +0 -1
  319. package/dist/node/column-views.3a55ecd7.css.map +0 -1
  320. package/dist/node/column-views.3eeac38d.js +0 -2
  321. package/dist/node/column-views.3eeac38d.js.map +0 -1
  322. package/dist/node/column-views.3f032518.js +0 -2
  323. package/dist/node/column-views.3f032518.js.map +0 -1
  324. package/dist/node/column-views.45168c80.js +0 -2
  325. package/dist/node/column-views.45168c80.js.map +0 -1
  326. package/dist/node/column-views.507635e2.js.map +0 -1
  327. package/dist/node/column-views.556e8f69.js +0 -2
  328. package/dist/node/column-views.556e8f69.js.map +0 -1
  329. package/dist/node/column-views.5f05b73f.js +0 -2
  330. package/dist/node/column-views.5f05b73f.js.map +0 -1
  331. package/dist/node/column-views.6ae7bb69.js +0 -2
  332. package/dist/node/column-views.6ae7bb69.js.map +0 -1
  333. package/dist/node/column-views.755f726e.js +0 -2
  334. package/dist/node/column-views.755f726e.js.map +0 -1
  335. package/dist/node/column-views.75b0a8f8.js +0 -2
  336. package/dist/node/column-views.75b0a8f8.js.map +0 -1
  337. package/dist/node/column-views.78d3f3c5.js +0 -2
  338. package/dist/node/column-views.78d3f3c5.js.map +0 -1
  339. package/dist/node/column-views.8cfed88b.js +0 -2
  340. package/dist/node/column-views.8cfed88b.js.map +0 -1
  341. package/dist/node/column-views.99fb74c0.js +0 -2
  342. package/dist/node/column-views.99fb74c0.js.map +0 -1
  343. package/dist/node/column-views.a501cea0.js +0 -2
  344. package/dist/node/column-views.a501cea0.js.map +0 -1
  345. package/dist/node/column-views.af275c48.js +0 -2
  346. package/dist/node/column-views.af275c48.js.map +0 -1
  347. package/dist/node/column-views.afbf351c.js +0 -2
  348. package/dist/node/column-views.afbf351c.js.map +0 -1
  349. package/dist/node/column-views.b180e8c9.js +0 -2
  350. package/dist/node/column-views.b180e8c9.js.map +0 -1
  351. package/dist/node/column-views.cd468adb.css +0 -2
  352. package/dist/node/column-views.cd468adb.css.map +0 -1
  353. package/dist/node/column-views.d6708353.js +0 -2
  354. package/dist/node/column-views.d6708353.js.map +0 -1
  355. package/dist/node/column-views.e1a43131.css +0 -2
  356. package/dist/node/column-views.e1a43131.css.map +0 -1
  357. package/dist/node/column-views.e9515ec1.js +0 -2
  358. package/dist/node/column-views.e9515ec1.js.map +0 -1
  359. package/dist/node/column-views.f15a6ed4.js +0 -2
  360. package/dist/node/column-views.f15a6ed4.js.map +0 -1
  361. package/dist/node/column-views.fc05616e.js +0 -2
  362. package/dist/node/column-views.fc05616e.js.map +0 -1
@@ -1,82 +1,23 @@
1
- import type { ExtUnit, SectionInfo } from "./helpers";
2
1
  import { ColumnAxisType } from "@macrostrat/column-components";
3
2
  import { ensureArray, getUnitHeightRange } from "./utils";
4
- import { ScaleLinear, scaleLinear } from "d3-scale";
3
+ import { ScaleContinuousNumeric, scaleLinear } from "d3-scale";
5
4
  import { UnitLong } from "@macrostrat/api-types";
6
-
7
- export interface ColumnHeightScaleOptions {
8
- /** A fixed pixel scale to use for the section (pixels per Myr) */
9
- pixelScale?: number;
10
- /** The target height of a constituent unit in pixels, for dynamic
11
- * scale generation */
12
- targetUnitHeight?: number;
13
- /** Min height of a section in pixels. Will override minPixelScale in some cases. */
14
- minSectionHeight?: number;
15
- /** The minimum pixel scale to use for the section (pixels per Myr). This is mostly
16
- * needed because small sections (<1-2 units) don't necessarily have space to comfortably
17
- * render two axis labels */
18
- minPixelScale?: number;
19
- // Axis scale type
20
- axisType?: ColumnAxisType;
21
- // Unconformity height in pixels
22
- unconformityHeight?: number;
23
- // Whether to collapse unconformities that are less than a height threshold
24
- collapseSmallUnconformities?: boolean | number;
25
- }
26
-
27
- export interface SectionScaleOptions extends ColumnHeightScaleOptions {
28
- axisType: ColumnAxisType;
29
- domain: [number, number];
30
- }
31
-
32
- export interface LinearScaleDef {
33
- domain: [number, number];
34
- pixelScale: number;
35
- }
36
-
37
- /** Output of a section scale. For now, this assumes that the
38
- * mapping is linear, but it could be extended to support arbitrary
39
- * scale functions.
40
- */
41
- export interface PackageScaleInfo extends LinearScaleDef {
42
- pixelHeight: number;
43
- // TODO: add a function
44
- scale: ScaleLinear<number, number>;
45
- }
46
-
47
- export type PackageScaleLayoutData = PackageScaleInfo & {
48
- // A unique key for the section to use in React
49
- key: string;
50
- offset: number;
51
- // How much to
52
- paddingTop: number;
53
- };
54
-
55
- export type PackageLayoutData<T extends UnitLong = ExtUnit> = SectionInfo<T> & {
56
- scaleInfo: PackageScaleLayoutData;
57
- // A unique key for the section to use in React
58
- key: string;
59
- };
60
-
61
- export interface CompositeScaleData {
62
- totalHeight: number;
63
- sections: PackageScaleLayoutData[];
64
- }
65
-
66
- export interface ColumnScaleOptions extends ColumnHeightScaleOptions {
67
- axisType: ColumnAxisType;
68
- unconformityHeight: number;
69
- }
5
+ import { buildHybridScale } from "./dynamic-scales";
6
+ import { ExtUnit, HybridScaleType, SectionInfo } from "./types";
7
+ import type {
8
+ ColumnScaleOptions,
9
+ CompositeColumnData,
10
+ CompositeScaleData,
11
+ PackageLayoutData,
12
+ PackageScaleInfo,
13
+ PackageScaleLayoutData,
14
+ SectionScaleOptions,
15
+ } from "./types";
70
16
 
71
17
  // Composite scale information augmented with units in each package
72
18
 
73
- export interface CompositeColumnData<T extends UnitLong = ExtUnit>
74
- extends Omit<CompositeScaleData, "sections"> {
75
- sections: PackageLayoutData<T>[];
76
- }
77
-
78
19
  export function buildCompositeScaleInfo(
79
- inputScales: LinearScaleDef[],
20
+ inputScales: PackageScaleInfo[],
80
21
  unconformityHeight: number,
81
22
  ): CompositeScaleData {
82
23
  /** Finalize the heights of sections, including the heights of unconformities
@@ -88,7 +29,7 @@ export function buildCompositeScaleInfo(
88
29
 
89
30
  const packages2: PackageScaleLayoutData[] = [];
90
31
  for (const group of inputScales) {
91
- const { domain, pixelScale } = group;
32
+ const { domain, scale } = group;
92
33
  const [b_age, t_age] = domain;
93
34
  const key = `package-${b_age}-${t_age}`;
94
35
 
@@ -99,7 +40,8 @@ export function buildCompositeScaleInfo(
99
40
  // Unconformity height above this particular section
100
41
  paddingTop: totalHeight - lastSectionTopHeight,
101
42
  });
102
- const pixelHeight = pixelScale * Math.abs(b_age - t_age);
43
+
44
+ const pixelHeight = Math.abs(scale(b_age) - scale(t_age));
103
45
  lastSectionTopHeight = totalHeight + pixelHeight;
104
46
  totalHeight = lastSectionTopHeight + unconformityHeight;
105
47
  }
@@ -119,6 +61,7 @@ export function finalizeSectionHeights<T extends UnitLong>(
119
61
  */
120
62
 
121
63
  const sectionScales = sections.map((d) => d.scaleInfo);
64
+
122
65
  const { totalHeight, sections: packages } = buildCompositeScaleInfo(
123
66
  sectionScales,
124
67
  unconformityHeight,
@@ -141,8 +84,9 @@ export function finalizeSectionHeights<T extends UnitLong>(
141
84
  };
142
85
  }
143
86
 
144
- interface SectionInfoWithScale<T extends UnitLong = ExtUnit>
145
- extends SectionInfo<T> {
87
+ export interface SectionInfoWithScale<
88
+ T extends UnitLong = ExtUnit,
89
+ > extends SectionInfo<T> {
146
90
  scaleInfo: PackageScaleInfo;
147
91
  }
148
92
 
@@ -159,11 +103,13 @@ function addScaleToSection<T extends UnitLong = ExtUnit>(
159
103
  group: SectionInfo<T>,
160
104
  opts: ColumnScaleOptions,
161
105
  ): SectionInfoWithScale<T> {
162
- const { t_age, b_age, units } = group;
106
+ const { t_age, b_age, t_pos, b_pos, units } = group;
163
107
  let _range = null;
164
108
  // if t_age and b_age are set for a group, use them to define the range...
165
- if (t_age != null && b_age != null && opts.axisType == ColumnAxisType.AGE) {
109
+ if (opts.axisType == ColumnAxisType.AGE) {
166
110
  _range = [b_age, t_age];
111
+ } else {
112
+ _range = [b_pos, t_pos];
167
113
  }
168
114
 
169
115
  const scaleInfo = buildSectionScale<T>(units, {
@@ -186,49 +132,103 @@ function buildSectionScale<T extends UnitLong>(
186
132
  minPixelScale = 0.2,
187
133
  axisType,
188
134
  minSectionHeight,
135
+ scale,
136
+ hybridScale,
189
137
  } = opts;
190
138
  const domain = opts.domain ?? findSectionHeightRange(data, axisType);
191
139
 
192
140
  const dAge = Math.abs(domain[0] - domain[1]);
193
141
 
194
142
  let _pixelScale = opts.pixelScale;
195
- if (_pixelScale == null) {
196
- const avgAgeRange = findAverageUnitHeight(data, axisType);
197
- // Get pixel height necessary to render average unit at target height
198
- _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);
199
-
200
- // OLD METHOD that cares about overall section height vs. individual unit height
201
- // 0.2 pixel per myr is the floor scale
202
- //const targetHeight = targetUnitHeight * data.length;
203
- // 1 pixel per myr is the floor scale
204
- //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);
143
+ let pixelHeight: number;
144
+
145
+ if (hybridScale != null) {
146
+ /** In an equidistant surfaces scale, we want to determine the heights of surfaces
147
+ * and then distribute units evenly between them.
148
+ * This is somewhat like an ordinal scale
149
+ */
150
+ if (hybridScale.type === HybridScaleType.EquidistantSurfaces) {
151
+ _pixelScale ??= targetUnitHeight;
152
+ }
153
+
154
+ return buildHybridScale(hybridScale, data, domain, {
155
+ pixelOffset: 0,
156
+ pixelScale: _pixelScale,
157
+ });
205
158
  }
206
159
 
207
- let height = dAge * _pixelScale;
160
+ if (scale == null) {
161
+ if (_pixelScale == null) {
162
+ const avgAgeRange = findAverageUnitHeight(data, axisType);
163
+ // Get pixel height necessary to render average unit at target height
164
+ _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);
165
+
166
+ // OLD METHOD that cares about overall section height vs. individual unit height
167
+ // 0.2 pixel per myr is the floor scale
168
+ //const targetHeight = targetUnitHeight * data.length;
169
+ // 1 pixel per myr is the floor scale
170
+ //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);
171
+ }
208
172
 
209
- // If height is less than minSectionHeight, set it to minSectionHeight
210
- const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;
211
- height = Math.max(height, _minSectionHeight);
212
- _pixelScale = height / dAge;
173
+ let height = dAge * _pixelScale;
174
+ // If height is less than minSectionHeight, set it to minSectionHeight
175
+ const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;
176
+ pixelHeight = Math.max(height, _minSectionHeight);
177
+ _pixelScale = pixelHeight / dAge;
178
+ } else {
179
+ // If a scale is provided, use it to compute pixel height
180
+ pixelHeight = Math.abs(scale(domain[0]) - scale(domain[1]));
181
+ }
213
182
 
214
- return createPackageScale({ domain, pixelScale: _pixelScale }, 0);
183
+ return createPackageScale(
184
+ { scale, domain, pixelHeight, pixelScale: _pixelScale },
185
+ 0,
186
+ );
215
187
  }
216
188
 
217
189
  export function createPackageScale(
218
- def: LinearScaleDef,
190
+ def: PackageScaleInfo,
219
191
  offset: number = 0,
220
192
  ): PackageScaleInfo {
221
193
  /** Build a section scale */
222
194
  // Domain should be oriented from bottom to top, but scale is oriented from top to bottom
223
- const { domain, pixelScale } = def;
224
- const pixelHeight = pixelScale * Math.abs(domain[0] - domain[1]);
195
+ const { domain, pixelScale, pixelHeight, scale, heightScale } = def;
196
+
197
+ if (scale == null && pixelScale == null) {
198
+ throw new Error("Either scale or pixelScale must be provided");
199
+ }
200
+
201
+ let _scale: ScaleContinuousNumeric<number, number>;
202
+ if (scale == null) {
203
+ _scale = scaleLinear()
204
+ .domain([domain[1], domain[0]])
205
+ .range([offset, pixelHeight + offset]);
206
+ } else {
207
+ const domain0 = scale.domain();
208
+ const range0 = scale.range();
209
+ _scale = scale
210
+ .copy()
211
+ .domain(domain0)
212
+ .range(range0.map((d) => d + offset));
213
+ }
214
+
215
+ _scale.clamp();
216
+
217
+ let _heightScale = null;
218
+ if (heightScale != null) {
219
+ // Adjust height scale as well
220
+ const range0 = scale.range();
221
+ _heightScale = heightScale.copy().range(range0.map((d) => d + offset));
222
+ _heightScale.clamp();
223
+ }
224
+
225
225
  return {
226
226
  domain,
227
227
  pixelScale,
228
228
  pixelHeight,
229
- scale: scaleLinear()
230
- .domain([domain[1], domain[0]])
231
- .range([offset, pixelHeight + offset]),
229
+ scale: _scale,
230
+ // Internal details for hybrid scales. TODO: improve this
231
+ heightScale: _heightScale,
232
232
  };
233
233
  }
234
234
 
@@ -273,6 +273,7 @@ export interface CompositeColumnScale {
273
273
  copy(): CompositeColumnScale;
274
274
  domain(): [number, number];
275
275
  invert(pixelHeight: number): number | null;
276
+ clamp(clamp: boolean): void;
276
277
  }
277
278
 
278
279
  export function createCompositeScale(
@@ -280,34 +281,37 @@ export function createCompositeScale(
280
281
  interpolateUnconformities: boolean = false,
281
282
  ): CompositeColumnScale {
282
283
  /** Create a scale that works across multiple packages */
283
- // Get surfaces at which scale breaks
284
- let scaleBreaks: [number, number][] = [];
285
- for (const section of sections) {
286
- const { pixelHeight, offset, domain } = section.scaleInfo;
287
284
 
288
- scaleBreaks.push([domain[1], offset]);
289
- scaleBreaks.push([domain[0], offset + pixelHeight]);
285
+ const scales: ScaleContinuousNumeric<number, number>[] = [];
286
+
287
+ let lastScale: ScaleContinuousNumeric<number, number> | null = null;
288
+ for (const section of sections) {
289
+ const _scale = section.scaleInfo.scale.copy().clamp(true);
290
+ scales.push(_scale);
291
+ if (lastScale != null && interpolateUnconformities) {
292
+ // Add a new scale that interpolates between lastScale and _scale
293
+ const lastDomain = lastScale.domain();
294
+ const lastRange = lastScale.range();
295
+ const currentDomain = _scale.domain();
296
+ const currentRange = _scale.range();
297
+
298
+ const interpScale = scaleLinear()
299
+ .domain([lastDomain[lastDomain.length - 1], currentDomain[0]])
300
+ .range([lastRange[lastRange.length - 1], currentRange[0]])
301
+ .clamp(true);
302
+ scales.push(interpScale);
303
+ }
304
+ lastScale = _scale;
290
305
  }
291
- // Sort the scale breaks by age
292
- scaleBreaks.sort((a, b) => a[0] - b[0]);
293
-
294
- const scale = (age) => {
295
- // Accumulate scale breaks and pixel height
296
- let lastHeight = 0;
297
- let lastAge = null;
298
- for (const [age1, height] of scaleBreaks) {
299
- if (age <= age1) {
300
- let deltaAge = age1 - lastAge;
301
- if (deltaAge === 0) {
302
- // If the age is exactly at a scale break, return the height at that break
303
- return height;
304
- }
305
- let pixelScale = (height - lastHeight) / deltaAge;
306
- return lastHeight + (age - lastAge) * pixelScale;
306
+
307
+ const scale: CompositeColumnScale = (age) => {
308
+ for (const s of scales) {
309
+ const domain = s.domain();
310
+ if (age >= domain[0] && age <= domain[domain.length - 1]) {
311
+ return s(age);
307
312
  }
308
- lastAge = age1;
309
- lastHeight = height;
310
313
  }
314
+ return null;
311
315
  };
312
316
 
313
317
  scale.copy = () => {
@@ -316,41 +320,39 @@ export function createCompositeScale(
316
320
 
317
321
  scale.domain = () => {
318
322
  /** Return the domain of the scale */
319
- const firstSection = sections[0].scaleInfo.domain;
320
- const lastSection = sections[sections.length - 1].scaleInfo.domain;
321
- if (firstSection[0] < lastSection[0]) {
322
- return [Math.min(...firstSection), Math.max(...lastSection)];
323
- } else {
324
- // Catches "normal" axes like height
325
- return [Math.max(...firstSection), Math.min(...lastSection)];
323
+ const vals = sections.flatMap((d) => d.scaleInfo.domain);
324
+ if (vals[0] < vals[vals.length - 1]) {
325
+ // age axes
326
+ return [Math.min(...vals), Math.max(...vals)];
326
327
  }
328
+ // Normal axes like height
329
+ return [Math.max(...vals), Math.min(...vals)];
327
330
  };
328
331
 
329
332
  scale.invert = (pixelHeight) => {
330
333
  /** Invert the scale to get the age at a given pixel height */
331
334
  // Iterate through the sections to find the correct one
332
- let lastAge = null;
333
- for (const section of sections) {
334
- const {
335
- pixelHeight: sectionHeight,
336
- pixelScale,
337
- offset,
338
- domain,
339
- } = section.scaleInfo;
335
+ for (const scale of scales) {
336
+ const range = scale.range();
340
337
  if (
341
- pixelHeight >= offset &&
342
- pixelHeight <= offset + sectionHeight &&
343
- pixelScale > 0
338
+ pixelHeight > Math.min(...range) &&
339
+ pixelHeight <= Math.max(...range)
344
340
  ) {
345
- const age = domain[1] + (pixelHeight - offset) / pixelScale;
346
- return age;
341
+ console.log("Inverting scale at pixel height", pixelHeight);
342
+ return scale.invert(pixelHeight);
347
343
  }
348
- lastAge = domain[1];
349
344
  }
350
345
  return null;
351
346
  };
352
347
 
353
- return scale as CompositeColumnScale;
348
+ scale.clamp = (clamp: boolean) => {
349
+ /** Clamp all constituent scales */
350
+ for (const s of scales) {
351
+ s.clamp(clamp);
352
+ }
353
+ };
354
+
355
+ return scale;
354
356
  }
355
357
 
356
358
  /** Collapse sections separated by unconformities that are smaller than a given pixel height. */
@@ -366,14 +368,39 @@ export function collapseUnconformitiesByPixelHeight<T extends UnitLong>(
366
368
  currentSection = nextSection;
367
369
  continue;
368
370
  }
369
- const dAge = Math.abs(nextSection.t_age - currentSection.b_age);
370
- const pxHeight =
371
- dAge *
372
- Math.max(
373
- currentSection.scaleInfo.pixelScale,
374
- nextSection.scaleInfo.pixelScale,
375
- );
371
+ let heights: [number, number];
372
+ let pxHeights: [number, number];
373
+ if (opts.axisType !== ColumnAxisType.AGE) {
374
+ heights = [nextSection.t_pos, currentSection.b_pos];
375
+ } else {
376
+ heights = [nextSection.t_age, currentSection.b_age];
377
+ }
378
+
379
+ const _diff = (vals: number[]) => {
380
+ return Math.abs(vals[0] - vals[1]);
381
+ };
382
+
383
+ pxHeights = [
384
+ _diff(heights.map(nextSection.scaleInfo.scale)),
385
+ _diff(heights.map(currentSection.scaleInfo.scale)),
386
+ ];
387
+
388
+ const pxHeight = Math.min(...pxHeights);
389
+
376
390
  if (pxHeight < threshold) {
391
+ let t_pos: number;
392
+ let b_pos: number;
393
+ if (
394
+ opts.axisType == ColumnAxisType.AGE ||
395
+ opts.axisType == ColumnAxisType.DEPTH
396
+ ) {
397
+ t_pos = Math.min(currentSection.t_pos, nextSection.t_pos);
398
+ b_pos = Math.max(currentSection.b_pos, nextSection.b_pos);
399
+ } else {
400
+ t_pos = Math.max(currentSection.t_pos, nextSection.t_pos);
401
+ b_pos = Math.min(currentSection.b_pos, nextSection.b_pos);
402
+ }
403
+
377
404
  // We need to merge the sections
378
405
  const compositeSection0: SectionInfo<T> = {
379
406
  units: [...currentSection.units, ...nextSection.units],
@@ -383,10 +410,11 @@ export function collapseUnconformitiesByPixelHeight<T extends UnitLong>(
383
410
  ],
384
411
  t_age: Math.min(currentSection.t_age, nextSection.t_age),
385
412
  b_age: Math.max(currentSection.b_age, nextSection.b_age),
413
+ t_pos,
414
+ b_pos,
386
415
  };
387
416
 
388
- const compositeSection = addScaleToSection(compositeSection0, opts);
389
- currentSection = compositeSection;
417
+ currentSection = addScaleToSection(compositeSection0, opts);
390
418
  } else {
391
419
  // We need to keep the section
392
420
  newSections.push(currentSection);