@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.
- package/CHANGELOG.md +12 -0
- package/dist/esm/{column-views.4ab0ec82.js → column-views.073c42da.js} +142 -76
- package/dist/esm/column-views.073c42da.js.map +1 -0
- package/dist/esm/column-views.079119f4.js +17 -0
- package/dist/esm/column-views.079119f4.js.map +1 -0
- package/dist/esm/{column-views.0e06c069.js → column-views.0859feb3.js} +52 -23
- package/dist/esm/column-views.0859feb3.js.map +1 -0
- package/dist/esm/{column-views.d099eaf9.js → column-views.0a8a07f4.js} +3 -3
- package/dist/esm/{column-views.d099eaf9.js.map → column-views.0a8a07f4.js.map} +1 -1
- package/dist/esm/{column-views.0732894f.js → column-views.0f7f6ee6.js} +2 -2
- package/dist/esm/{column-views.0732894f.js.map → column-views.0f7f6ee6.js.map} +1 -1
- package/dist/esm/{column-views.57636733.css → column-views.1151416d.css} +5 -5
- package/dist/esm/column-views.1151416d.css.map +1 -0
- package/dist/esm/{column-views.53f4160e.js → column-views.1b644998.js} +3 -3
- package/dist/esm/{column-views.53f4160e.js.map → column-views.1b644998.js.map} +1 -1
- package/dist/esm/{column-views.686d21ad.js → column-views.22ec902b.js} +4 -1
- package/dist/esm/column-views.22ec902b.js.map +1 -0
- package/dist/esm/{column-views.3b637517.js → column-views.285cbb65.js} +40 -20
- package/dist/esm/column-views.285cbb65.js.map +1 -0
- package/dist/esm/column-views.2d602a57.js +37 -0
- package/dist/esm/column-views.2d602a57.js.map +1 -0
- package/dist/esm/{column-views.b17f793f.css → column-views.321af3ae.css} +7 -1
- package/dist/esm/{column-views.686d21ad.js.map → column-views.321af3ae.css.map} +1 -1
- package/dist/esm/column-views.3a7179c4.js +137 -0
- package/dist/esm/column-views.3a7179c4.js.map +1 -0
- package/dist/esm/{column-views.49adc09e.js → column-views.3e1b8c7d.js} +2 -2
- package/dist/esm/{column-views.49adc09e.js.map → column-views.3e1b8c7d.js.map} +1 -1
- package/dist/esm/{column-views.a23b2c92.js → column-views.3f528c5c.js} +50 -22
- package/dist/esm/column-views.3f528c5c.js.map +1 -0
- package/dist/esm/{column-views.1e055ed5.js → column-views.4fd4ec92.js} +17 -3
- package/dist/esm/column-views.4fd4ec92.js.map +1 -0
- package/dist/esm/{column-views.6ca980ae.js → column-views.53186d53.js} +2 -2
- package/dist/esm/{column-views.6ca980ae.js.map → column-views.53186d53.js.map} +1 -1
- package/dist/esm/{column-views.39657bbf.js → column-views.54f8b909.js} +7 -2
- package/dist/esm/column-views.54f8b909.js.map +1 -0
- package/dist/esm/{column-views.b72918ce.css → column-views.562db43a.css} +10 -2
- package/dist/esm/column-views.562db43a.css.map +1 -0
- package/dist/esm/{column-views.9e1c82fe.js → column-views.58b891df.js} +2 -2
- package/dist/esm/{column-views.9e1c82fe.js.map → column-views.58b891df.js.map} +1 -1
- package/dist/esm/{column-views.a2cf8f33.js → column-views.5a49cd68.js} +8 -38
- package/dist/esm/column-views.5a49cd68.js.map +1 -0
- package/dist/esm/{column-views.2e0ff311.js → column-views.5d969bc5.js} +6 -58
- package/dist/esm/column-views.5d969bc5.js.map +1 -0
- package/dist/esm/{column-views.43fb819d.js → column-views.63b7e5aa.js} +3 -3
- package/dist/esm/{column-views.43fb819d.js.map → column-views.63b7e5aa.js.map} +1 -1
- package/dist/esm/column-views.6698b95a.js +108 -0
- package/dist/esm/column-views.6698b95a.js.map +1 -0
- package/dist/esm/column-views.6c644353.js +184 -0
- package/dist/esm/column-views.6c644353.js.map +1 -0
- package/dist/esm/column-views.6e7082db.js +16 -0
- package/dist/esm/column-views.6e7082db.js.map +1 -0
- package/dist/esm/column-views.70164236.js +206 -0
- package/dist/esm/column-views.70164236.js.map +1 -0
- package/dist/esm/{column-views.34a1ac4f.js → column-views.73b8ff16.js} +20 -22
- package/dist/esm/column-views.73b8ff16.js.map +1 -0
- package/dist/esm/{column-views.9771145a.js → column-views.77561197.js} +91 -55
- package/dist/esm/column-views.77561197.js.map +1 -0
- package/dist/esm/{column-views.572b70fd.js → column-views.83395185.js} +3 -3
- package/dist/esm/{column-views.572b70fd.js.map → column-views.83395185.js.map} +1 -1
- package/dist/esm/{column-views.6dc251d3.js → column-views.86a51ce7.js} +2 -2
- package/dist/esm/{column-views.6dc251d3.js.map → column-views.86a51ce7.js.map} +1 -1
- package/dist/esm/{column-views.f08929e2.js → column-views.88d63dd0.js} +5 -3
- package/dist/esm/column-views.88d63dd0.js.map +1 -0
- package/dist/esm/{column-views.3f246167.js → column-views.8c296309.js} +5 -5
- package/dist/esm/column-views.8c296309.js.map +1 -0
- package/dist/esm/{column-views.7d47a72a.js → column-views.8d24b179.js} +3 -3
- package/dist/esm/{column-views.7d47a72a.js.map → column-views.8d24b179.js.map} +1 -1
- package/dist/esm/{column-views.3d001ab8.js → column-views.986e7566.js} +7 -7
- package/dist/esm/{column-views.3d001ab8.js.map → column-views.986e7566.js.map} +1 -1
- package/dist/esm/{column-views.86619334.js → column-views.9ddbe7df.js} +2 -2
- package/dist/esm/{column-views.86619334.js.map → column-views.9ddbe7df.js.map} +1 -1
- package/dist/esm/{column-views.abe90091.js → column-views.ae7c0a2b.js} +31 -60
- package/dist/esm/column-views.ae7c0a2b.js.map +1 -0
- package/dist/esm/{column-views.9892f825.js → column-views.aecf25bc.js} +75 -42
- package/dist/esm/column-views.aecf25bc.js.map +1 -0
- package/dist/esm/column-views.b7016f82.css +54 -0
- package/dist/esm/column-views.b7016f82.css.map +1 -0
- package/dist/esm/{column-views.a5c1bbf0.js → column-views.ba0381cc.js} +2 -2
- package/dist/esm/{column-views.a5c1bbf0.js.map → column-views.ba0381cc.js.map} +1 -1
- package/dist/esm/{column-views.ff031876.js → column-views.c518ef14.js} +9 -4
- package/dist/esm/column-views.c518ef14.js.map +1 -0
- package/dist/esm/{column-views.f7523c1d.js → column-views.c92a359e.js} +2 -2
- package/dist/esm/{column-views.f7523c1d.js.map → column-views.c92a359e.js.map} +1 -1
- package/dist/esm/{column-views.cdadc5c2.js → column-views.cc733361.js} +7 -1
- package/dist/esm/column-views.cc733361.js.map +1 -0
- package/dist/esm/{column-views.4d22c21c.js → column-views.d15d8655.js} +22 -4
- package/dist/esm/column-views.d15d8655.js.map +1 -0
- package/dist/esm/{column-views.5e2dc19d.js → column-views.d261b02d.js} +3 -3
- package/dist/esm/{column-views.5e2dc19d.js.map → column-views.d261b02d.js.map} +1 -1
- package/dist/esm/{column-views.323cad41.js → column-views.d406665d.js} +5 -5
- package/dist/esm/{column-views.323cad41.js.map → column-views.d406665d.js.map} +1 -1
- package/dist/esm/{column-views.7715e35e.js → column-views.d69c4a9f.js} +3 -3
- package/dist/esm/{column-views.7715e35e.js.map → column-views.d69c4a9f.js.map} +1 -1
- package/dist/esm/{column-views.07db2ab1.js → column-views.d9c6b527.js} +15 -12
- package/dist/esm/column-views.d9c6b527.js.map +1 -0
- package/dist/esm/{column-views.b12a6374.css → column-views.e33ac5c9.css} +30 -9
- package/dist/esm/column-views.e33ac5c9.css.map +1 -0
- package/dist/esm/column-views.e3bf5384.js +15 -0
- package/dist/esm/{column-views.6d5e3098.js.map → column-views.e3bf5384.js.map} +1 -1
- package/dist/esm/{column-views.a8926321.js → column-views.e4c26185.js} +2 -2
- package/dist/esm/{column-views.a8926321.js.map → column-views.e4c26185.js.map} +1 -1
- package/dist/esm/column-views.e84bd756.js +92 -0
- package/dist/esm/column-views.e84bd756.js.map +1 -0
- package/dist/esm/column-views.ea4ebbb7.js +31 -0
- package/dist/esm/column-views.ea4ebbb7.js.map +1 -0
- package/dist/esm/column-views.ed05e233.js +13 -0
- package/dist/esm/{column-views.3729c372.js.map → column-views.ed05e233.js.map} +1 -1
- package/dist/esm/{column-views.64a84c43.js → column-views.f2fd0e4a.js} +10 -2
- package/dist/esm/column-views.f2fd0e4a.js.map +1 -0
- package/dist/esm/{column-views.103b1cb0.js → column-views.f46a0b36.js} +2 -2
- package/dist/esm/{column-views.103b1cb0.js.map → column-views.f46a0b36.js.map} +1 -1
- package/dist/esm/{column-views.d48cb0d8.js → column-views.fcf25ec6.js} +7 -1
- package/dist/esm/column-views.fcf25ec6.js.map +1 -0
- package/dist/esm/index.d.ts +235 -397
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -12
- package/dist/node/{column-views.36094762.js → column-views.01debc76.js} +2 -2
- package/dist/node/{column-views.36094762.js.map → column-views.01debc76.js.map} +1 -1
- package/dist/node/{column-views.31f57130.js → column-views.040499c9.js} +2 -2
- package/dist/node/{column-views.31f57130.js.map → column-views.040499c9.js.map} +1 -1
- package/dist/node/{column-views.50034105.js → column-views.07ff1fdf.js} +2 -2
- package/dist/node/{column-views.50034105.js.map → column-views.07ff1fdf.js.map} +1 -1
- package/dist/node/{column-views.3a55ecd7.css → column-views.0840b115.css} +2 -2
- package/dist/node/column-views.0840b115.css.map +1 -0
- package/dist/node/column-views.0b3a384e.js +2 -0
- package/dist/node/column-views.0b3a384e.js.map +1 -0
- package/dist/node/column-views.0bd15ee4.js +2 -0
- package/dist/node/column-views.0bd15ee4.js.map +1 -0
- package/dist/node/column-views.105f6ad2.js +2 -0
- package/dist/node/column-views.105f6ad2.js.map +1 -0
- package/dist/node/column-views.1261be59.js +2 -0
- package/dist/node/column-views.1261be59.js.map +1 -0
- package/dist/node/{column-views.4381c411.js → column-views.13e69859.js} +2 -2
- package/dist/node/{column-views.4381c411.js.map → column-views.13e69859.js.map} +1 -1
- package/dist/node/column-views.16f336ee.js +2 -0
- package/dist/node/column-views.16f336ee.js.map +1 -0
- package/dist/node/{column-views.c18d5bf5.js → column-views.1a7f8afd.js} +2 -2
- package/dist/node/{column-views.c18d5bf5.js.map → column-views.1a7f8afd.js.map} +1 -1
- package/dist/node/column-views.29eb25bd.css +2 -0
- package/dist/node/column-views.29eb25bd.css.map +1 -0
- package/dist/node/column-views.2bd97c2e.js +2 -0
- package/dist/node/column-views.2bd97c2e.js.map +1 -0
- package/dist/node/column-views.3b37363f.js +2 -0
- package/dist/node/column-views.3b37363f.js.map +1 -0
- package/dist/node/column-views.45296250.js +2 -0
- package/dist/node/column-views.45296250.js.map +1 -0
- package/dist/node/{column-views.0cbd4a3f.js → column-views.48a3cfa3.js} +2 -2
- package/dist/node/{column-views.0cbd4a3f.js.map → column-views.48a3cfa3.js.map} +1 -1
- package/dist/node/{column-views.42db0bb8.js → column-views.492c2c72.js} +2 -2
- package/dist/node/{column-views.42db0bb8.js.map → column-views.492c2c72.js.map} +1 -1
- package/dist/node/column-views.50a992d3.css +2 -0
- package/dist/node/column-views.50a992d3.css.map +1 -0
- package/dist/node/column-views.573cb29d.js +2 -0
- package/dist/node/column-views.573cb29d.js.map +1 -0
- package/dist/node/column-views.576e3c5a.js +2 -0
- package/dist/node/column-views.576e3c5a.js.map +1 -0
- package/dist/node/column-views.5f3b0b04.js +2 -0
- package/dist/node/column-views.5f3b0b04.js.map +1 -0
- package/dist/node/column-views.6fd5a922.js +2 -0
- package/dist/node/column-views.6fd5a922.js.map +1 -0
- package/dist/node/column-views.7150ba18.js +2 -0
- package/dist/node/column-views.7150ba18.js.map +1 -0
- package/dist/node/column-views.728c8dfc.js +2 -0
- package/dist/node/column-views.728c8dfc.js.map +1 -0
- package/dist/node/column-views.7425d37b.js +2 -0
- package/dist/node/column-views.7425d37b.js.map +1 -0
- package/dist/node/{column-views.2e4e357d.js → column-views.75582658.js} +2 -2
- package/dist/node/{column-views.2e4e357d.js.map → column-views.75582658.js.map} +1 -1
- package/dist/node/column-views.77ace3a2.js +2 -0
- package/dist/node/column-views.77ace3a2.js.map +1 -0
- package/dist/node/column-views.7f9c7448.js +2 -0
- package/dist/node/column-views.7f9c7448.js.map +1 -0
- package/dist/node/{column-views.a2274834.js → column-views.81294fb7.js} +2 -2
- package/dist/node/{column-views.a2274834.js.map → column-views.81294fb7.js.map} +1 -1
- package/dist/node/column-views.827a9894.js +2 -0
- package/dist/node/column-views.827a9894.js.map +1 -0
- package/dist/node/column-views.87b1439e.js +2 -0
- package/dist/node/column-views.87b1439e.js.map +1 -0
- package/dist/node/{column-views.e4f18ff7.js → column-views.9dda582d.js} +2 -2
- package/dist/node/{column-views.e4f18ff7.js.map → column-views.9dda582d.js.map} +1 -1
- package/dist/node/column-views.9e155f20.js +2 -0
- package/dist/node/column-views.9e155f20.js.map +1 -0
- package/dist/node/column-views.a16cd1f2.js +2 -0
- package/dist/node/column-views.a16cd1f2.js.map +1 -0
- package/dist/node/{column-views.adf9e5b3.js → column-views.a34732e7.js} +2 -2
- package/dist/node/{column-views.adf9e5b3.js.map → column-views.a34732e7.js.map} +1 -1
- package/dist/node/{column-views.f17b6142.js → column-views.a396d3ac.js} +2 -2
- package/dist/node/{column-views.f17b6142.js.map → column-views.a396d3ac.js.map} +1 -1
- package/dist/node/column-views.aae09aca.js +2 -0
- package/dist/node/column-views.aae09aca.js.map +1 -0
- package/dist/node/{column-views.db5d74bd.js → column-views.ac1b58b7.js} +2 -2
- package/dist/node/{column-views.db5d74bd.js.map → column-views.ac1b58b7.js.map} +1 -1
- package/dist/node/column-views.aef76eee.js +2 -0
- package/dist/node/column-views.aef76eee.js.map +1 -0
- package/dist/node/column-views.b64cd0ea.js +2 -0
- package/dist/node/column-views.b64cd0ea.js.map +1 -0
- package/dist/node/column-views.b6cd4360.js +2 -0
- package/dist/node/column-views.b6cd4360.js.map +1 -0
- package/dist/node/column-views.c0be1157.js +2 -0
- package/dist/node/column-views.c0be1157.js.map +1 -0
- package/dist/node/column-views.c29e9eb8.js +2 -0
- package/dist/node/column-views.c29e9eb8.js.map +1 -0
- package/dist/node/column-views.c8df6435.js +2 -0
- package/dist/node/column-views.c8df6435.js.map +1 -0
- package/dist/node/column-views.cd2a5c85.js +2 -0
- package/dist/node/column-views.cd2a5c85.js.map +1 -0
- package/dist/node/{column-views.3d220e0c.js → column-views.cd77a1d8.js} +2 -2
- package/dist/node/{column-views.3d220e0c.js.map → column-views.cd77a1d8.js.map} +1 -1
- package/dist/node/column-views.cd7b223b.css +2 -0
- package/dist/node/column-views.cd7b223b.css.map +1 -0
- package/dist/node/column-views.cf2a78c1.js +2 -0
- package/dist/node/column-views.cf2a78c1.js.map +1 -0
- package/dist/node/{column-views.c7f6fc0a.js → column-views.d529d3aa.js} +2 -2
- package/dist/node/{column-views.c7f6fc0a.js.map → column-views.d529d3aa.js.map} +1 -1
- package/dist/node/{column-views.7010a03b.js → column-views.dd972321.js} +2 -2
- package/dist/node/{column-views.7010a03b.js.map → column-views.dd972321.js.map} +1 -1
- package/dist/node/column-views.e065152e.js +2 -0
- package/dist/node/column-views.e065152e.js.map +1 -0
- package/dist/node/{column-views.6c7a40e0.js → column-views.e08f8715.js} +2 -2
- package/dist/node/{column-views.6c7a40e0.js.map → column-views.e08f8715.js.map} +1 -1
- package/dist/node/{column-views.507635e2.js → column-views.e0d9865e.js} +2 -2
- package/dist/node/column-views.e0d9865e.js.map +1 -0
- package/dist/node/column-views.e2562224.js +2 -0
- package/dist/node/column-views.e2562224.js.map +1 -0
- package/dist/node/column-views.e803e4ae.css +2 -0
- package/dist/node/column-views.e803e4ae.css.map +1 -0
- package/dist/node/column-views.edb4ba54.js +2 -0
- package/dist/node/column-views.edb4ba54.js.map +1 -0
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +14 -14
- package/src/age-axis.module.sass +4 -2
- package/src/age-axis.ts +49 -15
- package/src/age-model-overlay.ts +22 -1
- package/src/column.module.sass +32 -9
- package/src/column.ts +91 -19
- package/src/correlation-chart/main.ts +10 -2
- package/src/correlation-chart/prepare-data.ts +7 -4
- package/src/correlation-chart/stories/correlation-chart.stories.ts +26 -1
- package/src/data-provider/base.ts +33 -25
- package/src/data-provider/fetch.ts +10 -3
- package/src/data-provider/store.ts +16 -10
- package/src/facets/base-sample-column.module.sass +14 -0
- package/src/facets/base-sample-column.ts +114 -0
- package/src/facets/detrital-zircon/index.ts +31 -63
- package/src/facets/fossils/index.module.sass +43 -13
- package/src/facets/fossils/index.ts +246 -80
- package/src/facets/fossils/provider.ts +121 -25
- package/src/facets/index.ts +2 -0
- package/src/facets/measurements/index.ts +38 -0
- package/src/facets/measurements/provider.ts +80 -0
- package/src/prepare-units/composite-scale.ts +183 -155
- package/src/prepare-units/dynamic-scales.ts +298 -0
- package/src/prepare-units/helpers.ts +99 -87
- package/src/prepare-units/index.ts +77 -51
- package/src/prepare-units/types.ts +138 -0
- package/src/prepare-units/utils.ts +29 -1
- package/src/section.ts +46 -9
- package/src/unit-details/panel.module.sass +8 -1
- package/src/unit-details/panel.ts +123 -53
- package/src/unit-details/popover.ts +5 -0
- package/src/units/boxes.ts +2 -69
- package/src/units/composite.ts +3 -49
- package/src/units/selection.ts +21 -7
- package/dist/esm/column-views.07db2ab1.js.map +0 -1
- package/dist/esm/column-views.0e06c069.js.map +0 -1
- package/dist/esm/column-views.1c92b88f.js +0 -16
- package/dist/esm/column-views.1c92b88f.js.map +0 -1
- package/dist/esm/column-views.1e055ed5.js.map +0 -1
- package/dist/esm/column-views.2e0ff311.js.map +0 -1
- package/dist/esm/column-views.3048acc1.js +0 -66
- package/dist/esm/column-views.3048acc1.js.map +0 -1
- package/dist/esm/column-views.34a1ac4f.js.map +0 -1
- package/dist/esm/column-views.3729c372.js +0 -13
- package/dist/esm/column-views.39657bbf.js.map +0 -1
- package/dist/esm/column-views.3b637517.js.map +0 -1
- package/dist/esm/column-views.3f246167.js.map +0 -1
- package/dist/esm/column-views.4ab0ec82.js.map +0 -1
- package/dist/esm/column-views.4d22c21c.js.map +0 -1
- package/dist/esm/column-views.57636733.css.map +0 -1
- package/dist/esm/column-views.60dc6bfc.js +0 -108
- package/dist/esm/column-views.60dc6bfc.js.map +0 -1
- package/dist/esm/column-views.64a84c43.js.map +0 -1
- package/dist/esm/column-views.6d5e3098.js +0 -11
- package/dist/esm/column-views.9771145a.js.map +0 -1
- package/dist/esm/column-views.9892f825.js.map +0 -1
- package/dist/esm/column-views.a23b2c92.js.map +0 -1
- package/dist/esm/column-views.a2cf8f33.js.map +0 -1
- package/dist/esm/column-views.abe90091.js.map +0 -1
- package/dist/esm/column-views.b12a6374.css.map +0 -1
- package/dist/esm/column-views.b17f793f.css.map +0 -1
- package/dist/esm/column-views.b72918ce.css.map +0 -1
- package/dist/esm/column-views.c71c321c.js +0 -104
- package/dist/esm/column-views.c71c321c.js.map +0 -1
- package/dist/esm/column-views.cdadc5c2.js.map +0 -1
- package/dist/esm/column-views.d48cb0d8.js.map +0 -1
- package/dist/esm/column-views.f08929e2.js.map +0 -1
- package/dist/esm/column-views.ff031876.js.map +0 -1
- package/dist/node/column-views.0bb1ec93.js +0 -2
- package/dist/node/column-views.0bb1ec93.js.map +0 -1
- package/dist/node/column-views.13c4ea85.js +0 -2
- package/dist/node/column-views.13c4ea85.js.map +0 -1
- package/dist/node/column-views.1a0b56fc.js +0 -2
- package/dist/node/column-views.1a0b56fc.js.map +0 -1
- package/dist/node/column-views.226d0bdb.js +0 -2
- package/dist/node/column-views.226d0bdb.js.map +0 -1
- package/dist/node/column-views.2926f656.css +0 -2
- package/dist/node/column-views.2926f656.css.map +0 -1
- package/dist/node/column-views.2ab1c2f8.js +0 -2
- package/dist/node/column-views.2ab1c2f8.js.map +0 -1
- package/dist/node/column-views.3345cd7a.js +0 -2
- package/dist/node/column-views.3345cd7a.js.map +0 -1
- package/dist/node/column-views.33752461.js +0 -2
- package/dist/node/column-views.33752461.js.map +0 -1
- package/dist/node/column-views.372bbee2.js +0 -2
- package/dist/node/column-views.372bbee2.js.map +0 -1
- package/dist/node/column-views.38357d4a.js +0 -2
- package/dist/node/column-views.38357d4a.js.map +0 -1
- package/dist/node/column-views.3a55ecd7.css.map +0 -1
- package/dist/node/column-views.3eeac38d.js +0 -2
- package/dist/node/column-views.3eeac38d.js.map +0 -1
- package/dist/node/column-views.3f032518.js +0 -2
- package/dist/node/column-views.3f032518.js.map +0 -1
- package/dist/node/column-views.45168c80.js +0 -2
- package/dist/node/column-views.45168c80.js.map +0 -1
- package/dist/node/column-views.507635e2.js.map +0 -1
- package/dist/node/column-views.556e8f69.js +0 -2
- package/dist/node/column-views.556e8f69.js.map +0 -1
- package/dist/node/column-views.5f05b73f.js +0 -2
- package/dist/node/column-views.5f05b73f.js.map +0 -1
- package/dist/node/column-views.6ae7bb69.js +0 -2
- package/dist/node/column-views.6ae7bb69.js.map +0 -1
- package/dist/node/column-views.755f726e.js +0 -2
- package/dist/node/column-views.755f726e.js.map +0 -1
- package/dist/node/column-views.75b0a8f8.js +0 -2
- package/dist/node/column-views.75b0a8f8.js.map +0 -1
- package/dist/node/column-views.78d3f3c5.js +0 -2
- package/dist/node/column-views.78d3f3c5.js.map +0 -1
- package/dist/node/column-views.8cfed88b.js +0 -2
- package/dist/node/column-views.8cfed88b.js.map +0 -1
- package/dist/node/column-views.99fb74c0.js +0 -2
- package/dist/node/column-views.99fb74c0.js.map +0 -1
- package/dist/node/column-views.a501cea0.js +0 -2
- package/dist/node/column-views.a501cea0.js.map +0 -1
- package/dist/node/column-views.af275c48.js +0 -2
- package/dist/node/column-views.af275c48.js.map +0 -1
- package/dist/node/column-views.afbf351c.js +0 -2
- package/dist/node/column-views.afbf351c.js.map +0 -1
- package/dist/node/column-views.b180e8c9.js +0 -2
- package/dist/node/column-views.b180e8c9.js.map +0 -1
- package/dist/node/column-views.cd468adb.css +0 -2
- package/dist/node/column-views.cd468adb.css.map +0 -1
- package/dist/node/column-views.d6708353.js +0 -2
- package/dist/node/column-views.d6708353.js.map +0 -1
- package/dist/node/column-views.e1a43131.css +0 -2
- package/dist/node/column-views.e1a43131.css.map +0 -1
- package/dist/node/column-views.e9515ec1.js +0 -2
- package/dist/node/column-views.e9515ec1.js.map +0 -1
- package/dist/node/column-views.f15a6ed4.js +0 -2
- package/dist/node/column-views.f15a6ed4.js.map +0 -1
- package/dist/node/column-views.fc05616e.js +0 -2
- package/dist/node/column-views.fc05616e.js.map +0 -1
|
@@ -1,44 +1,32 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getSectionAgeRange,
|
|
3
|
-
|
|
3
|
+
getSectionPosRange,
|
|
4
|
+
groupUnitsIntoSectionsByOverlap,
|
|
5
|
+
groupUnitsIntoSectionsBySectionID,
|
|
4
6
|
mergeOverlappingSections,
|
|
7
|
+
preprocessSectionUnit,
|
|
5
8
|
preprocessUnits,
|
|
6
9
|
} from "./helpers";
|
|
7
10
|
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
8
11
|
import { useMemo } from "react";
|
|
9
|
-
import type { ExtUnit } from "./helpers";
|
|
10
12
|
import { UnitLong } from "@macrostrat/api-types";
|
|
11
13
|
import {
|
|
12
14
|
collapseUnconformitiesByPixelHeight,
|
|
13
|
-
ColumnScaleOptions,
|
|
14
|
-
CompositeColumnData,
|
|
15
15
|
computeSectionHeights,
|
|
16
16
|
finalizeSectionHeights,
|
|
17
|
-
PackageLayoutData,
|
|
18
17
|
} from "./composite-scale";
|
|
19
|
-
import
|
|
20
|
-
|
|
18
|
+
import {
|
|
19
|
+
agesOverlap,
|
|
20
|
+
MergeSectionsMode,
|
|
21
|
+
PrepareColumnOptions,
|
|
22
|
+
PreparedColumnData,
|
|
23
|
+
unitsOverlap,
|
|
24
|
+
} from "./utils";
|
|
25
|
+
import { SectionInfo } from "./types";
|
|
21
26
|
|
|
22
27
|
export * from "./utils";
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
export interface PrepareColumnOptions extends ColumnScaleOptions {
|
|
26
|
-
axisType: ColumnAxisType;
|
|
27
|
-
t_age?: number;
|
|
28
|
-
b_age?: number;
|
|
29
|
-
mergeSections?: MergeSectionsMode;
|
|
30
|
-
collapseSmallUnconformities?: boolean | number;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export enum MergeSectionsMode {
|
|
34
|
-
ALL = "all",
|
|
35
|
-
OVERLAPPING = "overlapping",
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface PreparedColumnData extends CompositeColumnData {
|
|
39
|
-
sections: PackageLayoutData[];
|
|
40
|
-
units: ExtUnit[];
|
|
41
|
-
}
|
|
28
|
+
export * from "./types";
|
|
29
|
+
export { preprocessUnits };
|
|
42
30
|
|
|
43
31
|
export function usePreparedColumnUnits(
|
|
44
32
|
data: UnitLong[],
|
|
@@ -58,27 +46,55 @@ export function prepareColumnUnits(
|
|
|
58
46
|
): PreparedColumnData {
|
|
59
47
|
/** Prepare units for rendering into Macrostrat columns */
|
|
60
48
|
|
|
49
|
+
let { t_age, b_age, t_pos, b_pos } = options;
|
|
50
|
+
|
|
61
51
|
const {
|
|
62
|
-
t_age,
|
|
63
|
-
b_age,
|
|
64
52
|
mergeSections = MergeSectionsMode.OVERLAPPING,
|
|
65
53
|
axisType,
|
|
66
54
|
unconformityHeight,
|
|
67
55
|
collapseSmallUnconformities = false,
|
|
56
|
+
hybridScale,
|
|
57
|
+
scale,
|
|
68
58
|
} = options;
|
|
69
59
|
|
|
60
|
+
if (scale != null) {
|
|
61
|
+
// Set t_age and b_age based on scale domain if not already set
|
|
62
|
+
const domain = scale.domain();
|
|
63
|
+
if (axisType == ColumnAxisType.AGE) {
|
|
64
|
+
if (t_age == null) t_age = Math.min(...domain);
|
|
65
|
+
if (b_age == null) b_age = Math.max(...domain);
|
|
66
|
+
} else {
|
|
67
|
+
if (t_pos == null) t_pos = Math.min(...domain);
|
|
68
|
+
if (b_pos == null) b_pos = Math.max(...domain);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Start by ensuring that ages and positions are numbers
|
|
73
|
+
// also set up some values for eODP-style columns
|
|
74
|
+
let units1 = units.map(preprocessSectionUnit);
|
|
75
|
+
|
|
70
76
|
/** Prototype filtering to age range */
|
|
71
|
-
|
|
77
|
+
units1 = units1.filter((d) => {
|
|
72
78
|
// Filter units by t_age and b_age, inclusive
|
|
73
|
-
|
|
79
|
+
if (axisType == ColumnAxisType.AGE) {
|
|
80
|
+
return agesOverlap(d, { t_age, b_age });
|
|
81
|
+
} else {
|
|
82
|
+
return unitsOverlap(d, { t_pos, b_pos } as any, axisType);
|
|
83
|
+
}
|
|
74
84
|
});
|
|
75
85
|
|
|
86
|
+
let mergeMode = mergeSections;
|
|
87
|
+
// if (axisType != ColumnAxisType.AGE) {
|
|
88
|
+
// // For non-age columns, we always merge sections.
|
|
89
|
+
// // This is because the "groupUnitsIntoSections" function is not well-defined
|
|
90
|
+
// // for non-age columns.
|
|
91
|
+
// mergeMode = MergeSectionsMode.ALL;
|
|
92
|
+
// }
|
|
93
|
+
|
|
76
94
|
let sections0: SectionInfo<UnitLong>[];
|
|
77
|
-
if (
|
|
78
|
-
mergeSections == MergeSectionsMode.ALL &&
|
|
79
|
-
axisType != ColumnAxisType.ORDINAL
|
|
80
|
-
) {
|
|
95
|
+
if (mergeMode == MergeSectionsMode.ALL) {
|
|
81
96
|
// For the "merge sections" mode, we need to create a single section
|
|
97
|
+
const [b_unit_pos, t_unit_pos] = getSectionPosRange(units1, axisType);
|
|
82
98
|
const [b_unit_age, t_unit_age] = getSectionAgeRange(units1);
|
|
83
99
|
sections0 = [
|
|
84
100
|
{
|
|
@@ -86,13 +102,31 @@ export function prepareColumnUnits(
|
|
|
86
102
|
/**
|
|
87
103
|
* If ages limits are directly specified, use them to define the section bounds.
|
|
88
104
|
* */
|
|
89
|
-
|
|
90
|
-
|
|
105
|
+
t_pos: t_unit_pos,
|
|
106
|
+
b_pos: b_unit_pos,
|
|
107
|
+
t_age: t_unit_age,
|
|
108
|
+
b_age: b_unit_age,
|
|
91
109
|
units: units1,
|
|
92
110
|
},
|
|
93
111
|
];
|
|
112
|
+
} else if (axisType == ColumnAxisType.AGE) {
|
|
113
|
+
sections0 = groupUnitsIntoSectionsBySectionID(units1, axisType);
|
|
94
114
|
} else {
|
|
95
|
-
sections0 =
|
|
115
|
+
sections0 = groupUnitsIntoSectionsByOverlap(units1, axisType);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Limit sections to the range specified by t_age/b_age or t_pos/b_pos global options
|
|
119
|
+
for (let section of sections0) {
|
|
120
|
+
if (axisType == ColumnAxisType.AGE) {
|
|
121
|
+
section.t_age = Math.max(section.t_age, t_age ?? -Infinity);
|
|
122
|
+
section.b_age = Math.min(section.b_age, b_age ?? Infinity);
|
|
123
|
+
} else if (axisType == ColumnAxisType.DEPTH) {
|
|
124
|
+
section.t_pos = Math.max(section.t_pos, t_pos ?? -Infinity);
|
|
125
|
+
section.b_pos = Math.min(section.b_pos, b_pos ?? Infinity);
|
|
126
|
+
} else if (axisType == ColumnAxisType.HEIGHT) {
|
|
127
|
+
section.t_pos = Math.max(section.t_pos, t_pos ?? -Infinity);
|
|
128
|
+
section.b_pos = Math.min(section.b_pos, b_pos ?? Infinity);
|
|
129
|
+
}
|
|
96
130
|
}
|
|
97
131
|
|
|
98
132
|
/** Merging overlapping sections really only makes sense for age/height/depth
|
|
@@ -102,24 +136,14 @@ export function prepareColumnUnits(
|
|
|
102
136
|
let sections = sections0;
|
|
103
137
|
if (
|
|
104
138
|
mergeSections == MergeSectionsMode.OVERLAPPING &&
|
|
105
|
-
axisType
|
|
139
|
+
axisType == ColumnAxisType.AGE
|
|
106
140
|
) {
|
|
107
141
|
sections = mergeOverlappingSections(sections);
|
|
108
142
|
}
|
|
109
143
|
// Filter out undefined sections just in case
|
|
110
144
|
sections = sections.filter((d) => d != null);
|
|
111
145
|
|
|
112
|
-
|
|
113
|
-
* are correctly limited to the t_age and b_age applied to the overall column.
|
|
114
|
-
*/
|
|
115
|
-
sections = sections.map((section) => {
|
|
116
|
-
const { t_age, b_age } = section;
|
|
117
|
-
return {
|
|
118
|
-
...section,
|
|
119
|
-
t_age: Math.max(t_age, options.t_age ?? -Infinity),
|
|
120
|
-
b_age: Math.min(b_age, options.b_age ?? Infinity),
|
|
121
|
-
};
|
|
122
|
-
});
|
|
146
|
+
// SCALES
|
|
123
147
|
|
|
124
148
|
/* Compute pixel scales etc. for sections
|
|
125
149
|
* We need to do this now to determine which unconformities
|
|
@@ -127,7 +151,9 @@ export function prepareColumnUnits(
|
|
|
127
151
|
*/
|
|
128
152
|
let sectionsWithScales = computeSectionHeights(sections, options);
|
|
129
153
|
|
|
130
|
-
if (collapseSmallUnconformities
|
|
154
|
+
if (collapseSmallUnconformities && hybridScale == null) {
|
|
155
|
+
// Collapse small unconformities in pixel height space
|
|
156
|
+
// TODO: this doesn't seem to work properly for non-age columns?
|
|
131
157
|
let threshold = unconformityHeight ?? 30;
|
|
132
158
|
if (typeof collapseSmallUnconformities == "number") {
|
|
133
159
|
threshold = collapseSmallUnconformities;
|
|
@@ -141,7 +167,7 @@ export function prepareColumnUnits(
|
|
|
141
167
|
}
|
|
142
168
|
|
|
143
169
|
/** Prepare section scale information using groups */
|
|
144
|
-
|
|
170
|
+
let { totalHeight, sections: sections2 } = finalizeSectionHeights(
|
|
145
171
|
sectionsWithScales,
|
|
146
172
|
unconformityHeight,
|
|
147
173
|
);
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { UnitLong } from "@macrostrat/api-types";
|
|
2
|
+
import type { ColumnAxisType } from "@macrostrat/column-components";
|
|
3
|
+
import type { ScaleContinuousNumeric } from "d3-scale";
|
|
4
|
+
|
|
5
|
+
export interface ColumnHeightScaleOptions {
|
|
6
|
+
/** A fixed pixel scale to use for the section (pixels per Myr) */
|
|
7
|
+
pixelScale?: number;
|
|
8
|
+
/** The target height of a constituent unit in pixels, for dynamic
|
|
9
|
+
* scale generation */
|
|
10
|
+
targetUnitHeight?: number;
|
|
11
|
+
/** Min height of a section in pixels. Will override minPixelScale in some cases. */
|
|
12
|
+
minSectionHeight?: number;
|
|
13
|
+
/** The minimum pixel scale to use for the section (pixels per Myr). This is mostly
|
|
14
|
+
* needed because small sections (<1-2 units) don't necessarily have space to comfortably
|
|
15
|
+
* render two axis labels */
|
|
16
|
+
minPixelScale?: number;
|
|
17
|
+
// Axis scale type
|
|
18
|
+
axisType?: ColumnAxisType;
|
|
19
|
+
// Unconformity height in pixels
|
|
20
|
+
unconformityHeight?: number;
|
|
21
|
+
// Whether to collapse unconformities that are less than a height threshold
|
|
22
|
+
collapseSmallUnconformities?: boolean | number;
|
|
23
|
+
// A continuous scale to use instead of generating one
|
|
24
|
+
// TODO: discontinuous scales are not yet supported
|
|
25
|
+
scale?: ScaleContinuousNumeric<number, number>;
|
|
26
|
+
// Hybrid scale type.
|
|
27
|
+
// This overrides parameters such as the axis type
|
|
28
|
+
hybridScale?: HybridScaleDefinition;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export enum HybridScaleType {
|
|
32
|
+
// An age-domain scale that puts equal vertical space between surfaces
|
|
33
|
+
EquidistantSurfaces = "equidistant-surfaces",
|
|
34
|
+
// A height-domain scale that is based on the average height of units between surfaces
|
|
35
|
+
ApproximateHeight = "approximate-height",
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export enum HeightMethod {
|
|
39
|
+
Minimum = "minimum",
|
|
40
|
+
Average = "average",
|
|
41
|
+
Maximum = "maximum",
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface HybridScaleOptions {
|
|
45
|
+
pixelOffset?: number;
|
|
46
|
+
pixelScale?: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type ApproxHeightScaleOptions = {
|
|
50
|
+
minHeight?: number;
|
|
51
|
+
defaultHeight?: number;
|
|
52
|
+
heightMethod?: HeightMethod;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export type HybridScaleDefinition =
|
|
56
|
+
| ({
|
|
57
|
+
type: HybridScaleType.ApproximateHeight;
|
|
58
|
+
} & ApproxHeightScaleOptions)
|
|
59
|
+
| {
|
|
60
|
+
type: HybridScaleType.EquidistantSurfaces;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export interface SectionScaleOptions extends ColumnHeightScaleOptions {
|
|
64
|
+
axisType: ColumnAxisType;
|
|
65
|
+
domain: [number, number];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Output of a section scale. For now, this assumes that the
|
|
69
|
+
* mapping is linear, but it could be extended to support arbitrary
|
|
70
|
+
* scale functions.
|
|
71
|
+
*/
|
|
72
|
+
export interface PackageScaleInfo {
|
|
73
|
+
domain: [number, number];
|
|
74
|
+
pixelHeight: number;
|
|
75
|
+
// TODO: add a function
|
|
76
|
+
scale: ScaleContinuousNumeric<number, number>;
|
|
77
|
+
pixelScale?: number; // if it's a linear scale, this could be defined
|
|
78
|
+
// Subsidiary scale for height mapping (for hybrid scales)
|
|
79
|
+
heightScale?: ScaleContinuousNumeric<number, number>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type PackageScaleLayoutData = PackageScaleInfo & {
|
|
83
|
+
// A unique key for the section to use in React
|
|
84
|
+
key: string;
|
|
85
|
+
offset: number;
|
|
86
|
+
// How much to
|
|
87
|
+
paddingTop: number;
|
|
88
|
+
};
|
|
89
|
+
export interface StratigraphicPackage {
|
|
90
|
+
/** A collection of stratigraphic information organized in time, corresponding
|
|
91
|
+
* to single or multiple columns. */
|
|
92
|
+
t_age: number;
|
|
93
|
+
b_age: number;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface SectionInfo<
|
|
97
|
+
T extends UnitLong = ExtUnit,
|
|
98
|
+
> extends StratigraphicPackage {
|
|
99
|
+
/** A time-bounded part of a single stratigraphic column. */
|
|
100
|
+
section_id: number | number[];
|
|
101
|
+
units: T[];
|
|
102
|
+
b_pos?: number;
|
|
103
|
+
t_pos?: number;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface ExtUnit extends UnitLong {
|
|
107
|
+
bottomOverlap: boolean;
|
|
108
|
+
overlappingUnits: number[];
|
|
109
|
+
column?: number;
|
|
110
|
+
/* Positions (ages or heights) where the unit is clipped to its containing section.
|
|
111
|
+
* This is relevant if we are filtering by age/height/depth range.
|
|
112
|
+
*/
|
|
113
|
+
t_clip_pos?: number;
|
|
114
|
+
b_clip_pos?: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export type PackageLayoutData<T extends UnitLong = ExtUnit> = SectionInfo<T> & {
|
|
118
|
+
scaleInfo: PackageScaleLayoutData;
|
|
119
|
+
// A unique key for the section to use in React
|
|
120
|
+
key: string;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export interface CompositeScaleData {
|
|
124
|
+
totalHeight: number;
|
|
125
|
+
sections: PackageScaleLayoutData[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface ColumnScaleOptions extends ColumnHeightScaleOptions {
|
|
129
|
+
axisType: ColumnAxisType;
|
|
130
|
+
unconformityHeight: number;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface CompositeColumnData<T extends UnitLong = ExtUnit> extends Omit<
|
|
134
|
+
CompositeScaleData,
|
|
135
|
+
"sections"
|
|
136
|
+
> {
|
|
137
|
+
sections: PackageLayoutData<T>[];
|
|
138
|
+
}
|
|
@@ -4,10 +4,38 @@ import {
|
|
|
4
4
|
compareAgeRanges,
|
|
5
5
|
} from "@macrostrat/stratigraphy-utils";
|
|
6
6
|
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
7
|
-
import {
|
|
7
|
+
import { ScaleContinuousNumeric } from "d3-scale";
|
|
8
|
+
import type {
|
|
9
|
+
ColumnScaleOptions,
|
|
10
|
+
CompositeColumnData,
|
|
11
|
+
ExtUnit,
|
|
12
|
+
PackageLayoutData,
|
|
13
|
+
StratigraphicPackage,
|
|
14
|
+
} from "./types";
|
|
8
15
|
|
|
9
16
|
const dt = 0.001;
|
|
10
17
|
|
|
18
|
+
export interface PrepareColumnOptions extends ColumnScaleOptions {
|
|
19
|
+
axisType: ColumnAxisType;
|
|
20
|
+
t_age?: number;
|
|
21
|
+
b_age?: number;
|
|
22
|
+
t_pos?: number;
|
|
23
|
+
b_pos?: number;
|
|
24
|
+
mergeSections?: MergeSectionsMode;
|
|
25
|
+
collapseSmallUnconformities?: boolean | number;
|
|
26
|
+
scale?: ScaleContinuousNumeric<any, any>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export enum MergeSectionsMode {
|
|
30
|
+
ALL = "all",
|
|
31
|
+
OVERLAPPING = "overlapping",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface PreparedColumnData extends CompositeColumnData {
|
|
35
|
+
sections: PackageLayoutData[];
|
|
36
|
+
units: ExtUnit[];
|
|
37
|
+
}
|
|
38
|
+
|
|
11
39
|
interface UnitsOverlap {
|
|
12
40
|
(
|
|
13
41
|
a: StratigraphicPackage,
|
package/src/section.ts
CHANGED
|
@@ -4,18 +4,23 @@ import {
|
|
|
4
4
|
SectionLabelsColumn,
|
|
5
5
|
} from "./units";
|
|
6
6
|
import { ReactNode, FunctionComponent, useMemo } from "react";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
Timescale,
|
|
9
|
+
TimescaleOrientation,
|
|
10
|
+
useMacrostratIntervals,
|
|
11
|
+
} from "@macrostrat/timescale";
|
|
8
12
|
import { ColumnAxisType, SVG } from "@macrostrat/column-components";
|
|
9
13
|
import hyper from "@macrostrat/hyper";
|
|
10
14
|
import styles from "./column.module.sass";
|
|
11
|
-
import type { ExtUnit } from "./prepare-units/helpers";
|
|
12
|
-
import { PackageScaleLayoutData } from "./prepare-units/composite-scale";
|
|
13
15
|
import {
|
|
14
16
|
useMacrostratColumnData,
|
|
15
17
|
useMacrostratUnits,
|
|
16
18
|
MacrostratColumnProvider,
|
|
19
|
+
useMacrostratBaseURL,
|
|
17
20
|
} from "./data-provider";
|
|
18
21
|
import { Duration } from "./unit-details";
|
|
22
|
+
import { Value } from "@macrostrat/data-components";
|
|
23
|
+
import type { ExtUnit, PackageScaleLayoutData } from "./prepare-units/types";
|
|
19
24
|
|
|
20
25
|
const h = hyper.styled(styles);
|
|
21
26
|
|
|
@@ -84,6 +89,7 @@ function SectionUnitsColumn(props: SectionSharedProps) {
|
|
|
84
89
|
unitComponentProps,
|
|
85
90
|
clipUnits,
|
|
86
91
|
maxInternalColumns,
|
|
92
|
+
axisType,
|
|
87
93
|
unconformityLabels = true,
|
|
88
94
|
} = props;
|
|
89
95
|
|
|
@@ -127,6 +133,7 @@ function SectionUnitsColumn(props: SectionSharedProps) {
|
|
|
127
133
|
h.if(unconformityLabels)(UnconformityLabels, {
|
|
128
134
|
width,
|
|
129
135
|
sections: scaleData,
|
|
136
|
+
verbose: false,
|
|
130
137
|
}),
|
|
131
138
|
]);
|
|
132
139
|
}
|
|
@@ -145,7 +152,7 @@ function SectionUnits(props: SectionProps) {
|
|
|
145
152
|
maxInternalColumns,
|
|
146
153
|
} = props;
|
|
147
154
|
|
|
148
|
-
const { domain, pixelScale, pixelHeight } = scaleInfo;
|
|
155
|
+
const { domain, pixelScale, pixelHeight, scale } = scaleInfo;
|
|
149
156
|
|
|
150
157
|
/** Ensure that we can arrange units into the maximum number
|
|
151
158
|
* of columns defined by unitComponentProps, but that we don't
|
|
@@ -177,6 +184,7 @@ function SectionUnits(props: SectionProps) {
|
|
|
177
184
|
units,
|
|
178
185
|
domain,
|
|
179
186
|
pixelScale, // Actually pixels per myr,
|
|
187
|
+
scale,
|
|
180
188
|
},
|
|
181
189
|
h(CompositeUnitsColumn, {
|
|
182
190
|
width,
|
|
@@ -213,6 +221,10 @@ type CompositeTimescaleCoreProps = CompositeTimescaleProps & {
|
|
|
213
221
|
export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
|
|
214
222
|
const { levels = 3, packages, unconformityLabels = false } = props;
|
|
215
223
|
|
|
224
|
+
// Use intervals from Macrostrat API
|
|
225
|
+
const baseURL = useMacrostratBaseURL();
|
|
226
|
+
const intervals = useMacrostratIntervals(baseURL);
|
|
227
|
+
|
|
216
228
|
let _levels: [number, number];
|
|
217
229
|
if (typeof levels === "number") {
|
|
218
230
|
// If levels is a number, use the most common starting level
|
|
@@ -227,7 +239,7 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
|
|
|
227
239
|
h(
|
|
228
240
|
"div.timescales",
|
|
229
241
|
packages.map((group) => {
|
|
230
|
-
const {
|
|
242
|
+
const { pixelHeight, paddingTop, key, scale } = group;
|
|
231
243
|
return h(
|
|
232
244
|
"div.timescale-container",
|
|
233
245
|
{ style: { paddingTop, "--timescale-level-count": nCols }, key },
|
|
@@ -238,7 +250,8 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
|
|
|
238
250
|
levels: _levels,
|
|
239
251
|
absoluteAgeScale: true,
|
|
240
252
|
showAgeAxis: false,
|
|
241
|
-
|
|
253
|
+
scale,
|
|
254
|
+
intervals,
|
|
242
255
|
}),
|
|
243
256
|
],
|
|
244
257
|
);
|
|
@@ -248,6 +261,7 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
|
|
|
248
261
|
width: "100%",
|
|
249
262
|
sections: packages,
|
|
250
263
|
className: "unconformity-labels",
|
|
264
|
+
axisType: ColumnAxisType.AGE,
|
|
251
265
|
}),
|
|
252
266
|
]);
|
|
253
267
|
}
|
|
@@ -255,9 +269,11 @@ export function CompositeTimescaleCore(props: CompositeTimescaleCoreProps) {
|
|
|
255
269
|
export function UnconformityLabels(props: {
|
|
256
270
|
width: string | number;
|
|
257
271
|
sections: PackageScaleLayoutData[];
|
|
272
|
+
axisType?: ColumnAxisType;
|
|
258
273
|
className?: string;
|
|
274
|
+
verbose?: boolean;
|
|
259
275
|
}) {
|
|
260
|
-
const { width, sections, className } = props;
|
|
276
|
+
const { width, sections, className, axisType, verbose } = props;
|
|
261
277
|
|
|
262
278
|
return h(
|
|
263
279
|
"div.unconformity-labels",
|
|
@@ -273,6 +289,7 @@ export function UnconformityLabels(props: {
|
|
|
273
289
|
const upperAge = lastGroup?.domain[0];
|
|
274
290
|
const lowerAge = scaleInfo.domain[1];
|
|
275
291
|
return h(Unconformity, {
|
|
292
|
+
axisType,
|
|
276
293
|
upperAge,
|
|
277
294
|
lowerAge,
|
|
278
295
|
style: {
|
|
@@ -280,12 +297,19 @@ export function UnconformityLabels(props: {
|
|
|
280
297
|
height: scaleInfo.paddingTop,
|
|
281
298
|
top,
|
|
282
299
|
},
|
|
300
|
+
verbose,
|
|
283
301
|
});
|
|
284
302
|
}),
|
|
285
303
|
);
|
|
286
304
|
}
|
|
287
305
|
|
|
288
|
-
function Unconformity({
|
|
306
|
+
function Unconformity({
|
|
307
|
+
upperAge,
|
|
308
|
+
lowerAge,
|
|
309
|
+
style,
|
|
310
|
+
axisType,
|
|
311
|
+
verbose = false,
|
|
312
|
+
}) {
|
|
289
313
|
if (upperAge == null || lowerAge == null) {
|
|
290
314
|
return null;
|
|
291
315
|
}
|
|
@@ -303,7 +327,20 @@ function Unconformity({ upperAge, lowerAge, style }) {
|
|
|
303
327
|
className = "small";
|
|
304
328
|
}
|
|
305
329
|
|
|
330
|
+
let val: ReactNode;
|
|
331
|
+
if (axisType === ColumnAxisType.DEPTH || axisType === ColumnAxisType.HEIGHT) {
|
|
332
|
+
const _txt = ageGap.toLocaleString("en-US", { maximumFractionDigits: 2 });
|
|
333
|
+
val = h(Value, { value: _txt, unit: "m" });
|
|
334
|
+
} else {
|
|
335
|
+
val = h(Duration, { value: ageGap });
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
let prefix: ReactNode = null;
|
|
339
|
+
if (verbose) {
|
|
340
|
+
prefix = h([" ", h("span.prefix", " gap")]);
|
|
341
|
+
}
|
|
342
|
+
|
|
306
343
|
return h("div.unconformity", { style, className }, [
|
|
307
|
-
h("div.unconformity-
|
|
344
|
+
h("div.unconformity-inner", h("div.unconformity-text", [val, prefix])),
|
|
308
345
|
]);
|
|
309
346
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
overflow: hidden
|
|
14
14
|
.title-container
|
|
15
15
|
gap: 0.5em
|
|
16
|
-
align-items:
|
|
16
|
+
align-items: baseline
|
|
17
17
|
margin: 0
|
|
18
18
|
flex-grow: 1
|
|
19
19
|
z-index: 5
|
|
@@ -50,6 +50,13 @@
|
|
|
50
50
|
position: relative
|
|
51
51
|
margin: 1em
|
|
52
52
|
|
|
53
|
+
.units-list
|
|
54
|
+
.item
|
|
55
|
+
&:after
|
|
56
|
+
content: ', '
|
|
57
|
+
&:last-child:after
|
|
58
|
+
content: ''
|
|
59
|
+
|
|
53
60
|
.proportion, .sep, .no-units, .strat-name-text
|
|
54
61
|
color: var(--secondary-color)
|
|
55
62
|
font-style: italic
|