@macrostrat/column-views 2.1.4 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/esm/{column-views.77b49a43.js → column-views.0265cf7f.js} +52 -23
- package/dist/esm/column-views.0265cf7f.js.map +1 -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.5e2dc19d.js → column-views.0ce9b697.js} +3 -3
- package/dist/esm/{column-views.5e2dc19d.js.map → column-views.0ce9b697.js.map} +1 -1
- package/dist/esm/{column-views.448c0687.css → column-views.1151416d.css} +5 -5
- package/dist/esm/column-views.1151416d.css.map +1 -0
- 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.42b89c52.js → column-views.29a551f6.js} +60 -27
- package/dist/esm/column-views.29a551f6.js.map +1 -0
- package/dist/esm/{column-views.fbc7401f.js → column-views.2aef5df8.js} +5 -5
- package/dist/esm/{column-views.fbc7401f.js.map → column-views.2aef5df8.js.map} +1 -1
- package/dist/esm/{column-views.ab0380ed.js → column-views.2e854496.js} +3 -3
- package/dist/esm/{column-views.ab0380ed.js.map → column-views.2e854496.js.map} +1 -1
- package/dist/esm/{column-views.7ca9e1cd.js → column-views.2eceafb5.js} +19 -21
- package/dist/esm/column-views.2eceafb5.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.75ea6dbe.js → column-views.382c486d.js} +11 -6
- package/dist/esm/column-views.382c486d.js.map +1 -0
- package/dist/esm/column-views.3a7179c4.js +137 -0
- package/dist/esm/column-views.3a7179c4.js.map +1 -0
- package/dist/esm/{column-views.8e3dec90.js → column-views.413217dc.js} +2 -2
- package/dist/esm/column-views.413217dc.js.map +1 -0
- package/dist/esm/column-views.418f948f.js +15 -0
- package/dist/esm/{column-views.38a305a0.js.map → column-views.418f948f.js.map} +1 -1
- package/dist/esm/{column-views.4d22c21c.js → column-views.41e5f0dc.js} +22 -4
- package/dist/esm/column-views.41e5f0dc.js.map +1 -0
- package/dist/esm/{column-views.676cb1d3.js → column-views.469a4952.js} +3 -3
- package/dist/esm/{column-views.676cb1d3.js.map → column-views.469a4952.js.map} +1 -1
- package/dist/esm/column-views.4ed90896.js +105 -0
- package/dist/esm/column-views.4ed90896.js.map +1 -0
- package/dist/esm/{column-views.547b2730.js → column-views.53722d0a.js} +19 -15
- package/dist/esm/column-views.53722d0a.js.map +1 -0
- 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.86619334.js → column-views.60365cdb.js} +2 -2
- package/dist/esm/{column-views.86619334.js.map → column-views.60365cdb.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.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.2ff3dd8b.js → column-views.748dce47.js} +31 -60
- package/dist/esm/column-views.748dce47.js.map +1 -0
- package/dist/esm/{column-views.775846c9.js → column-views.7683bb52.js} +9 -40
- package/dist/esm/column-views.7683bb52.js.map +1 -0
- package/dist/esm/{column-views.e7ab5af0.js → column-views.787d7696.js} +3 -3
- package/dist/esm/{column-views.e7ab5af0.js.map → column-views.787d7696.js.map} +1 -1
- package/dist/esm/{column-views.f20eb583.js → column-views.81bddbee.js} +6 -8
- package/dist/esm/column-views.81bddbee.js.map +1 -0
- package/dist/esm/{column-views.cc5244c4.js → column-views.8284c3a9.js} +91 -55
- package/dist/esm/column-views.8284c3a9.js.map +1 -0
- 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.935ef6f7.js → column-views.8b623b27.js} +2 -2
- package/dist/esm/{column-views.935ef6f7.js.map → column-views.8b623b27.js.map} +1 -1
- 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.64a84c43.js → column-views.a3fabf0f.js} +38 -30
- package/dist/esm/column-views.a3fabf0f.js.map +1 -0
- package/dist/esm/column-views.abeab9aa.js +184 -0
- package/dist/esm/column-views.abeab9aa.js.map +1 -0
- package/dist/esm/{column-views.02f3732a.js → column-views.adec2e4c.js} +40 -20
- package/dist/esm/column-views.adec2e4c.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.1f7fb650.js → column-views.b08d82e6.js} +3 -3
- package/dist/esm/{column-views.1f7fb650.js.map → column-views.b08d82e6.js.map} +1 -1
- package/dist/esm/{column-views.769fa0ee.js → column-views.b29f8718.js} +2 -2
- package/dist/esm/{column-views.769fa0ee.js.map → column-views.b29f8718.js.map} +1 -1
- package/dist/esm/column-views.b7016f82.css +54 -0
- package/dist/esm/column-views.b7016f82.css.map +1 -0
- package/dist/esm/{column-views.0732894f.js → column-views.bbc77227.js} +2 -2
- package/dist/esm/{column-views.0732894f.js.map → column-views.bbc77227.js.map} +1 -1
- package/dist/esm/column-views.c2fbcba8.js +15 -0
- package/dist/esm/{column-views.0a159282.js.map → column-views.c2fbcba8.js.map} +1 -1
- package/dist/esm/{column-views.e3b9a317.js → column-views.c3495702.js} +2 -2
- package/dist/esm/{column-views.e3b9a317.js.map → column-views.c3495702.js.map} +1 -1
- 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.243da806.js → column-views.cae1a6a1.js} +3 -3
- package/dist/esm/{column-views.243da806.js.map → column-views.cae1a6a1.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.a195109e.js → column-views.d86555b0.js} +2 -2
- package/dist/esm/{column-views.a195109e.js.map → column-views.d86555b0.js.map} +1 -1
- package/dist/esm/{column-views.a6301a41.js → column-views.df34441c.js} +6 -8
- package/dist/esm/column-views.df34441c.js.map +1 -0
- package/dist/esm/{column-views.97d542eb.js → column-views.e17f00d3.js} +4 -4
- package/dist/esm/column-views.e17f00d3.js.map +1 -0
- package/dist/esm/{column-views.7715e35e.js → column-views.e1bc3cfa.js} +3 -3
- package/dist/esm/{column-views.7715e35e.js.map → column-views.e1bc3cfa.js.map} +1 -1
- package/dist/esm/{column-views.8d4ce558.css → column-views.e33ac5c9.css} +26 -9
- package/dist/esm/column-views.e33ac5c9.css.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.78bd3f09.js → column-views.f0b0fc56.js} +2 -2
- package/dist/esm/{column-views.78bd3f09.js.map → column-views.f0b0fc56.js.map} +1 -1
- package/dist/esm/column-views.faacfc3c.js +92 -0
- package/dist/esm/column-views.faacfc3c.js.map +1 -0
- 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 +264 -441
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -12
- package/dist/node/column-views.0201566d.js +2 -0
- package/dist/node/column-views.0201566d.js.map +1 -0
- package/dist/node/column-views.07c503d3.js +2 -0
- package/dist/node/column-views.07c503d3.js.map +1 -0
- 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.2a6b842d.js → column-views.0e7ac946.js} +2 -2
- package/dist/node/column-views.0e7ac946.js.map +1 -0
- package/dist/node/column-views.108db52e.js +2 -0
- package/dist/node/column-views.108db52e.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.16f336ee.js +2 -0
- package/dist/node/column-views.16f336ee.js.map +1 -0
- package/dist/node/column-views.18d54bbb.js +2 -0
- package/dist/node/column-views.18d54bbb.js.map +1 -0
- package/dist/node/column-views.19a84c01.js +2 -0
- package/dist/node/column-views.19a84c01.js.map +1 -0
- package/dist/node/column-views.1a3c399e.js +2 -0
- package/dist/node/column-views.1a3c399e.js.map +1 -0
- package/dist/node/column-views.29483479.js +2 -0
- package/dist/node/column-views.29483479.js.map +1 -0
- package/dist/node/column-views.29eb25bd.css +2 -0
- package/dist/node/column-views.29eb25bd.css.map +1 -0
- package/dist/node/column-views.312db572.js +2 -0
- package/dist/node/column-views.312db572.js.map +1 -0
- package/dist/node/{column-views.2ca669bc.js → column-views.32344397.js} +2 -2
- package/dist/node/{column-views.2ca669bc.js.map → column-views.32344397.js.map} +1 -1
- package/dist/node/column-views.44952ae6.js +2 -0
- package/dist/node/column-views.44952ae6.js.map +1 -0
- package/dist/node/{column-views.a372c943.js → column-views.45a03acc.js} +2 -2
- package/dist/node/{column-views.a372c943.js.map → column-views.45a03acc.js.map} +1 -1
- 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.4b4c214a.js} +2 -2
- package/dist/node/{column-views.42db0bb8.js.map → column-views.4b4c214a.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.65f091ea.js → column-views.54363c13.js} +2 -2
- package/dist/node/{column-views.65f091ea.js.map → column-views.54363c13.js.map} +1 -1
- package/dist/node/{column-views.858b5cf4.js → column-views.554d44a7.js} +2 -2
- package/dist/node/{column-views.858b5cf4.js.map → column-views.554d44a7.js.map} +1 -1
- package/dist/node/column-views.573cb29d.js +2 -0
- package/dist/node/column-views.573cb29d.js.map +1 -0
- package/dist/node/{column-views.492b4917.js → column-views.57dd069c.js} +2 -2
- package/dist/node/{column-views.492b4917.js.map → column-views.57dd069c.js.map} +1 -1
- package/dist/node/{column-views.2e4e357d.js → column-views.588b02a1.js} +2 -2
- package/dist/node/{column-views.2e4e357d.js.map → column-views.588b02a1.js.map} +1 -1
- package/dist/node/column-views.5a8bc8e3.js +2 -0
- package/dist/node/column-views.5a8bc8e3.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.6099a3a9.js +2 -0
- package/dist/node/column-views.6099a3a9.js.map +1 -0
- package/dist/node/column-views.6919fd2a.js +2 -0
- package/dist/node/column-views.6919fd2a.js.map +1 -0
- package/dist/node/{column-views.45fab61b.js → column-views.6b8424fd.js} +2 -2
- package/dist/node/{column-views.45fab61b.js.map → column-views.6b8424fd.js.map} +1 -1
- package/dist/node/column-views.7425d37b.js +2 -0
- package/dist/node/column-views.7425d37b.js.map +1 -0
- 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.92e29010.js +2 -0
- package/dist/node/column-views.92e29010.js.map +1 -0
- package/dist/node/{column-views.7010a03b.js → column-views.93febe9b.js} +2 -2
- package/dist/node/{column-views.7010a03b.js.map → column-views.93febe9b.js.map} +1 -1
- package/dist/node/{column-views.51bc87ca.js → column-views.94c84716.js} +2 -2
- package/dist/node/{column-views.51bc87ca.js.map → column-views.94c84716.js.map} +1 -1
- package/dist/node/column-views.a16cd1f2.js +2 -0
- package/dist/node/column-views.a16cd1f2.js.map +1 -0
- package/dist/node/{column-views.eeca917f.js → column-views.a1e29a15.js} +2 -2
- package/dist/node/{column-views.eeca917f.js.map → column-views.a1e29a15.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.abe0a664.js +2 -0
- package/dist/node/column-views.abe0a664.js.map +1 -0
- package/dist/node/{column-views.a2274834.js → column-views.ae9536b3.js} +2 -2
- package/dist/node/{column-views.a2274834.js.map → column-views.ae9536b3.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.cd7b223b.css +2 -0
- package/dist/node/column-views.cd7b223b.css.map +1 -0
- package/dist/node/{column-views.df97f28e.js → column-views.ce5904a6.js} +2 -2
- package/dist/node/{column-views.df97f28e.js.map → column-views.ce5904a6.js.map} +1 -1
- package/dist/node/column-views.d4545f9f.js +2 -0
- package/dist/node/column-views.d4545f9f.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.2d957a97.js → column-views.db4ccacc.js} +2 -2
- package/dist/node/column-views.db4ccacc.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.ebe61439.js +2 -0
- package/dist/node/column-views.ebe61439.js.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/column-views.f0f5cefd.js +2 -0
- package/dist/node/column-views.f0f5cefd.js.map +1 -0
- package/dist/node/column-views.f1ad131a.js +2 -0
- package/dist/node/column-views.f1ad131a.js.map +1 -0
- package/dist/node/{column-views.58d2f993.js → column-views.f7d72702.js} +2 -2
- package/dist/node/{column-views.58d2f993.js.map → column-views.f7d72702.js.map} +1 -1
- package/dist/node/{column-views.e3ba0594.js → column-views.fcdc74c4.js} +2 -2
- package/dist/node/{column-views.e3ba0594.js.map → column-views.fcdc74c4.js.map} +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +15 -13
- 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 +29 -9
- package/src/column.ts +99 -24
- package/src/correlation-chart/main.ts +11 -3
- 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 +32 -24
- package/src/data-provider/fetch.ts +10 -3
- package/src/data-provider/index.ts +1 -0
- package/src/data-provider/store.ts +74 -13
- package/src/{units/selection.ts → data-provider/unit-selection.ts} +22 -8
- 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 +232 -158
- package/src/facets/fossils/provider.ts +121 -25
- package/src/facets/index.ts +1 -0
- package/src/facets/measurements/index.ts +1 -2
- package/src/maps/column-correlation/state.ts +0 -1
- 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 +6 -1
- package/src/units/boxes.ts +2 -7
- package/src/units/composite.ts +7 -50
- package/src/units/index.ts +0 -1
- package/dist/esm/column-views.02f3732a.js.map +0 -1
- package/dist/esm/column-views.0a159282.js +0 -13
- package/dist/esm/column-views.1e055ed5.js +0 -53
- package/dist/esm/column-views.1e055ed5.js.map +0 -1
- package/dist/esm/column-views.2ff3dd8b.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.38a305a0.js +0 -13
- package/dist/esm/column-views.39657bbf.js.map +0 -1
- package/dist/esm/column-views.3f246167.js.map +0 -1
- package/dist/esm/column-views.42b89c52.js.map +0 -1
- package/dist/esm/column-views.448c0687.css.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.547b2730.js.map +0 -1
- package/dist/esm/column-views.64a84c43.js.map +0 -1
- package/dist/esm/column-views.75ea6dbe.js.map +0 -1
- package/dist/esm/column-views.775846c9.js.map +0 -1
- package/dist/esm/column-views.77b49a43.js.map +0 -1
- package/dist/esm/column-views.7ca9e1cd.js.map +0 -1
- package/dist/esm/column-views.8703a35b.js +0 -163
- package/dist/esm/column-views.8703a35b.js.map +0 -1
- package/dist/esm/column-views.8d4ce558.css.map +0 -1
- package/dist/esm/column-views.8e3dec90.js.map +0 -1
- package/dist/esm/column-views.97d542eb.js.map +0 -1
- package/dist/esm/column-views.9892f825.js.map +0 -1
- package/dist/esm/column-views.a6301a41.js.map +0 -1
- package/dist/esm/column-views.b17f793f.css.map +0 -1
- package/dist/esm/column-views.b3c1eb9e.js +0 -16
- package/dist/esm/column-views.b3c1eb9e.js.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.cc5244c4.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.f20eb583.js.map +0 -1
- package/dist/node/column-views.085f4a51.js +0 -2
- package/dist/node/column-views.085f4a51.js.map +0 -1
- package/dist/node/column-views.0dfc7ef7.js +0 -2
- package/dist/node/column-views.0dfc7ef7.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.2926f656.css +0 -2
- package/dist/node/column-views.2926f656.css.map +0 -1
- package/dist/node/column-views.2a6b842d.js.map +0 -1
- package/dist/node/column-views.2d957a97.js.map +0 -1
- package/dist/node/column-views.307661d1.css +0 -2
- package/dist/node/column-views.307661d1.css.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.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.45168c80.js +0 -2
- package/dist/node/column-views.45168c80.js.map +0 -1
- package/dist/node/column-views.4ca62e5d.js +0 -2
- package/dist/node/column-views.4ca62e5d.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.6f7a432f.js +0 -2
- package/dist/node/column-views.6f7a432f.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.758b9bc1.js +0 -2
- package/dist/node/column-views.758b9bc1.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.80fcf105.js +0 -2
- package/dist/node/column-views.80fcf105.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.91043465.js +0 -2
- package/dist/node/column-views.91043465.js.map +0 -1
- package/dist/node/column-views.976a829b.js +0 -2
- package/dist/node/column-views.976a829b.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.9b7a9ae1.js +0 -2
- package/dist/node/column-views.9b7a9ae1.js.map +0 -1
- package/dist/node/column-views.9de31cdb.js +0 -2
- package/dist/node/column-views.9de31cdb.js.map +0 -1
- package/dist/node/column-views.a4e6d4ad.js +0 -2
- package/dist/node/column-views.a4e6d4ad.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.a7256aa7.js +0 -2
- package/dist/node/column-views.a7256aa7.js.map +0 -1
- package/dist/node/column-views.c4b409e1.css +0 -2
- package/dist/node/column-views.c4b409e1.css.map +0 -1
- package/dist/node/column-views.cef1b814.js +0 -2
- package/dist/node/column-views.cef1b814.js.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.d9add589.js +0 -2
- package/dist/node/column-views.d9add589.js.map +0 -1
- package/dist/node/column-views.dfb2361a.js +0 -2
- package/dist/node/column-views.dfb2361a.js.map +0 -1
- package/dist/node/column-views.e9515ec1.js +0 -2
- package/dist/node/column-views.e9515ec1.js.map +0 -1
package/src/column.ts
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
2
2
|
import { hyperStyled } from "@macrostrat/hyper";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Box,
|
|
5
|
+
extractPadding,
|
|
6
|
+
Padding,
|
|
7
|
+
useDarkMode,
|
|
8
|
+
} from "@macrostrat/ui-components";
|
|
4
9
|
import classNames from "classnames";
|
|
5
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
RefObject,
|
|
12
|
+
useRef,
|
|
13
|
+
HTMLAttributes,
|
|
14
|
+
useCallback,
|
|
15
|
+
CSSProperties,
|
|
16
|
+
ComponentType,
|
|
17
|
+
} from "react";
|
|
6
18
|
import styles from "./column.module.sass";
|
|
19
|
+
import { UnitComponent } from "./units";
|
|
7
20
|
import {
|
|
8
21
|
UnitSelectionProvider,
|
|
9
|
-
UnitComponent,
|
|
10
22
|
UnitKeyboardNavigation,
|
|
11
23
|
useUnitSelectionDispatch,
|
|
12
|
-
} from "./
|
|
24
|
+
} from "./data-provider";
|
|
13
25
|
|
|
14
|
-
import { ColumnHeightScaleOptions } from "./prepare-units/composite-scale";
|
|
15
26
|
import {
|
|
16
27
|
Identifier,
|
|
17
28
|
ReferencesField,
|
|
@@ -27,11 +38,17 @@ import {
|
|
|
27
38
|
CompositeTimescale,
|
|
28
39
|
SectionsColumn,
|
|
29
40
|
} from "./section";
|
|
30
|
-
import { CompositeAgeAxis } from "./age-axis";
|
|
31
|
-
import {
|
|
41
|
+
import { ApproximateHeightAxis, CompositeAgeAxis } from "./age-axis";
|
|
42
|
+
import {
|
|
43
|
+
MergeSectionsMode,
|
|
44
|
+
usePreparedColumnUnits,
|
|
45
|
+
HybridScaleType,
|
|
46
|
+
ColumnHeightScaleOptions,
|
|
47
|
+
} from "./prepare-units";
|
|
32
48
|
import { UnitLong } from "@macrostrat/api-types";
|
|
33
49
|
import { NonIdealState } from "@blueprintjs/core";
|
|
34
50
|
import { DataField } from "@macrostrat/data-components";
|
|
51
|
+
import { ScaleContinuousNumeric } from "d3-scale";
|
|
35
52
|
|
|
36
53
|
const h = hyperStyled(styles);
|
|
37
54
|
|
|
@@ -51,11 +68,14 @@ interface BaseColumnProps extends SectionSharedProps {
|
|
|
51
68
|
) => void;
|
|
52
69
|
}
|
|
53
70
|
|
|
54
|
-
export interface ColumnProps
|
|
71
|
+
export interface ColumnProps
|
|
72
|
+
extends Padding, BaseColumnProps, ColumnHeightScaleOptions {
|
|
55
73
|
// Macrostrat units
|
|
56
74
|
units: UnitLong[];
|
|
57
75
|
t_age?: number;
|
|
58
76
|
b_age?: number;
|
|
77
|
+
t_pos?: number;
|
|
78
|
+
b_pos?: number;
|
|
59
79
|
mergeSections?: MergeSectionsMode;
|
|
60
80
|
showUnitPopover?: boolean;
|
|
61
81
|
allowUnitSelection?: boolean;
|
|
@@ -63,6 +83,7 @@ export interface ColumnProps extends BaseColumnProps, ColumnHeightScaleOptions {
|
|
|
63
83
|
onUnitSelected?: (unitID: number | null, unit: any) => void;
|
|
64
84
|
// Unconformity height in pixels
|
|
65
85
|
unconformityHeight?: number;
|
|
86
|
+
scale?: ScaleContinuousNumeric<number, number>;
|
|
66
87
|
}
|
|
67
88
|
|
|
68
89
|
export function Column(props: ColumnProps) {
|
|
@@ -74,9 +95,10 @@ export function Column(props: ColumnProps) {
|
|
|
74
95
|
selectedUnit,
|
|
75
96
|
children,
|
|
76
97
|
units: rawUnits,
|
|
77
|
-
axisType = ColumnAxisType.AGE,
|
|
78
98
|
t_age,
|
|
79
99
|
b_age,
|
|
100
|
+
t_pos,
|
|
101
|
+
b_pos,
|
|
80
102
|
unconformityHeight = 30,
|
|
81
103
|
targetUnitHeight = 20,
|
|
82
104
|
pixelScale,
|
|
@@ -84,22 +106,53 @@ export function Column(props: ColumnProps) {
|
|
|
84
106
|
minSectionHeight = 50,
|
|
85
107
|
collapseSmallUnconformities = true,
|
|
86
108
|
allowUnitSelection,
|
|
109
|
+
hybridScale,
|
|
110
|
+
scale,
|
|
111
|
+
axisType,
|
|
87
112
|
...rest
|
|
88
113
|
} = props;
|
|
89
114
|
const ref = useRef<HTMLElement>();
|
|
90
115
|
// Selected item position
|
|
91
116
|
|
|
117
|
+
/* Make pixelScale and targetUnitHeight mutually exclusive. PixelScale implies
|
|
118
|
+
* standardization of scales in all sections */
|
|
119
|
+
let _targetUnitHeight = targetUnitHeight;
|
|
120
|
+
let _minSectionHeight = minSectionHeight;
|
|
121
|
+
let _minPixelScale = minPixelScale;
|
|
122
|
+
if (pixelScale != null) {
|
|
123
|
+
_targetUnitHeight = null;
|
|
124
|
+
_minSectionHeight = 0;
|
|
125
|
+
_minPixelScale = pixelScale;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Handle special cases for hybrid scales (WIP, we need to regularize this)
|
|
129
|
+
let _axisType = axisType ?? ColumnAxisType.AGE;
|
|
130
|
+
let ageAxisComponent = CompositeAgeAxis;
|
|
131
|
+
if (
|
|
132
|
+
hybridScale?.type === HybridScaleType.ApproximateHeight &&
|
|
133
|
+
_axisType != ColumnAxisType.AGE
|
|
134
|
+
) {
|
|
135
|
+
// Use approximate height axis for non-age columns if a non-age axis type is requested
|
|
136
|
+
ageAxisComponent = ApproximateHeightAxis;
|
|
137
|
+
_axisType = ColumnAxisType.AGE;
|
|
138
|
+
}
|
|
139
|
+
|
|
92
140
|
const { sections, units, totalHeight } = usePreparedColumnUnits(rawUnits, {
|
|
93
|
-
axisType,
|
|
141
|
+
axisType: _axisType,
|
|
94
142
|
t_age,
|
|
95
143
|
b_age,
|
|
144
|
+
t_pos,
|
|
145
|
+
b_pos,
|
|
96
146
|
mergeSections,
|
|
97
|
-
targetUnitHeight,
|
|
147
|
+
targetUnitHeight: _targetUnitHeight,
|
|
98
148
|
unconformityHeight,
|
|
99
149
|
pixelScale,
|
|
100
|
-
minPixelScale,
|
|
101
|
-
minSectionHeight,
|
|
150
|
+
minPixelScale: _minPixelScale,
|
|
151
|
+
minSectionHeight: _minSectionHeight,
|
|
102
152
|
collapseSmallUnconformities,
|
|
153
|
+
// TODO: consider unifying scale and hybridScale options
|
|
154
|
+
scale,
|
|
155
|
+
hybridScale,
|
|
103
156
|
});
|
|
104
157
|
|
|
105
158
|
if (sections.length === 0) {
|
|
@@ -113,11 +166,15 @@ export function Column(props: ColumnProps) {
|
|
|
113
166
|
);
|
|
114
167
|
}
|
|
115
168
|
|
|
116
|
-
let main: any = h(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
169
|
+
let main: any = h(
|
|
170
|
+
ColumnInner,
|
|
171
|
+
{ columnRef: ref, ageAxisComponent, ...rest },
|
|
172
|
+
[
|
|
173
|
+
children,
|
|
174
|
+
h.if(showUnitPopover)(UnitSelectionPopover),
|
|
175
|
+
h.if(keyboardNavigation)(UnitKeyboardNavigation, { units }),
|
|
176
|
+
],
|
|
177
|
+
);
|
|
121
178
|
|
|
122
179
|
/* By default, unit selection is disabled. However, if any related props are passed,
|
|
123
180
|
we enable it.
|
|
@@ -142,16 +199,27 @@ export function Column(props: ColumnProps) {
|
|
|
142
199
|
|
|
143
200
|
return h(
|
|
144
201
|
MacrostratColumnDataProvider,
|
|
145
|
-
{ units, sections, totalHeight, axisType },
|
|
202
|
+
{ units, sections, totalHeight, axisType: _axisType },
|
|
146
203
|
main,
|
|
147
204
|
);
|
|
148
205
|
}
|
|
149
206
|
|
|
150
207
|
interface ColumnInnerProps extends BaseColumnProps {
|
|
151
208
|
columnRef: RefObject<HTMLElement>;
|
|
209
|
+
ageAxisComponent?: ComponentType;
|
|
152
210
|
}
|
|
153
211
|
|
|
154
212
|
function ColumnInner(props: ColumnInnerProps) {
|
|
213
|
+
const padding = extractPadding(props);
|
|
214
|
+
|
|
215
|
+
// TODO: integrate padding vars more closely with the rest of the spacing (right now padding is a bit ad-hoc)
|
|
216
|
+
const paddingVars: any = {
|
|
217
|
+
"--column-padding-top": `${padding.paddingTop}px`,
|
|
218
|
+
"--column-padding-bottom": `${padding.paddingBottom}px`,
|
|
219
|
+
"--column-padding-left": `${padding.paddingLeft}px`,
|
|
220
|
+
"--column-padding-right": `${padding.paddingRight}px`,
|
|
221
|
+
};
|
|
222
|
+
|
|
155
223
|
const {
|
|
156
224
|
unitComponent = UnitComponent,
|
|
157
225
|
unconformityLabels = true,
|
|
@@ -167,6 +235,7 @@ function ColumnInner(props: ColumnInnerProps) {
|
|
|
167
235
|
timescaleLevels,
|
|
168
236
|
maxInternalColumns,
|
|
169
237
|
onMouseOver,
|
|
238
|
+
ageAxisComponent = CompositeAgeAxis,
|
|
170
239
|
} = props;
|
|
171
240
|
|
|
172
241
|
const { axisType } = useMacrostratColumnData();
|
|
@@ -191,10 +260,11 @@ function ColumnInner(props: ColumnInnerProps) {
|
|
|
191
260
|
ColumnContainer,
|
|
192
261
|
{
|
|
193
262
|
...useMouseEventHandlers(onMouseOver),
|
|
263
|
+
style: paddingVars,
|
|
194
264
|
className,
|
|
195
265
|
},
|
|
196
266
|
h("div.column", { ref: columnRef }, [
|
|
197
|
-
h(
|
|
267
|
+
h(ageAxisComponent),
|
|
198
268
|
h.if(_showTimescale)(CompositeTimescale, { levels: timescaleLevels }),
|
|
199
269
|
h(SectionsColumn, {
|
|
200
270
|
unitComponent,
|
|
@@ -262,16 +332,21 @@ function useMouseEventHandlers(
|
|
|
262
332
|
|
|
263
333
|
export interface ColumnContainerProps extends HTMLAttributes<HTMLDivElement> {
|
|
264
334
|
className?: string;
|
|
335
|
+
style?: CSSProperties;
|
|
265
336
|
}
|
|
266
337
|
|
|
267
338
|
export function ColumnContainer(props: ColumnContainerProps) {
|
|
268
339
|
const { className, ...rest } = props;
|
|
269
340
|
const darkMode = useDarkMode();
|
|
270
341
|
|
|
271
|
-
return h(
|
|
272
|
-
className: classNames(
|
|
273
|
-
|
|
274
|
-
|
|
342
|
+
return h(Box, {
|
|
343
|
+
className: classNames(
|
|
344
|
+
className,
|
|
345
|
+
{
|
|
346
|
+
"dark-mode": darkMode?.isEnabled ?? false,
|
|
347
|
+
},
|
|
348
|
+
"column-container",
|
|
349
|
+
),
|
|
275
350
|
...rest,
|
|
276
351
|
});
|
|
277
352
|
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
UnitSelectionProvider,
|
|
4
4
|
UnitKeyboardNavigation,
|
|
5
5
|
useUnitSelectionStore,
|
|
6
|
-
} from "../
|
|
6
|
+
} from "../data-provider";
|
|
7
7
|
import { UnitSelectionPopover } from "../unit-details";
|
|
8
8
|
import hyper from "@macrostrat/hyper";
|
|
9
9
|
import styles from "./main.module.sass";
|
|
@@ -29,10 +29,11 @@ import {
|
|
|
29
29
|
} from "@macrostrat/column-components";
|
|
30
30
|
import { ColoredUnitComponent } from "../units";
|
|
31
31
|
import { UnitBoxes } from "../units/boxes";
|
|
32
|
-
import { ExtUnit } from "../prepare-units/helpers";
|
|
33
32
|
import { ColumnContainer } from "../column";
|
|
34
33
|
import { ColumnData } from "../data-provider";
|
|
35
34
|
import { BaseUnit } from "@macrostrat/api-types";
|
|
35
|
+
import { ScaleContinuousNumeric } from "d3-scale";
|
|
36
|
+
import { ExtUnit } from "../prepare-units/types";
|
|
36
37
|
|
|
37
38
|
const h = hyper.styled(styles);
|
|
38
39
|
|
|
@@ -117,7 +118,8 @@ export function CorrelationChart({
|
|
|
117
118
|
paddingH: 4,
|
|
118
119
|
},
|
|
119
120
|
packages.map((pkg, i) => {
|
|
120
|
-
const { offset, domain, pixelScale, key } =
|
|
121
|
+
const { offset, domain, pixelScale, scale, key } =
|
|
122
|
+
scaleInfo.packages[i];
|
|
121
123
|
return h(Package, {
|
|
122
124
|
columnData: pkg.columnData,
|
|
123
125
|
key,
|
|
@@ -126,6 +128,7 @@ export function CorrelationChart({
|
|
|
126
128
|
offset,
|
|
127
129
|
domain,
|
|
128
130
|
pixelScale,
|
|
131
|
+
scale,
|
|
129
132
|
unitComponent,
|
|
130
133
|
});
|
|
131
134
|
}),
|
|
@@ -147,6 +150,7 @@ function Package({
|
|
|
147
150
|
offset,
|
|
148
151
|
domain,
|
|
149
152
|
pixelScale,
|
|
153
|
+
scale,
|
|
150
154
|
}) {
|
|
151
155
|
return h("g.package", { transform: `translate(0 ${offset})` }, [
|
|
152
156
|
// Disable the SVG overlay for now
|
|
@@ -160,6 +164,7 @@ function Package({
|
|
|
160
164
|
key: i,
|
|
161
165
|
domain,
|
|
162
166
|
pixelScale,
|
|
167
|
+
scale,
|
|
163
168
|
offsetLeft: i * (columnWidth + columnSpacing),
|
|
164
169
|
});
|
|
165
170
|
}),
|
|
@@ -179,6 +184,7 @@ interface ColumnProps {
|
|
|
179
184
|
offsetLeft?: number;
|
|
180
185
|
domain: [number, number];
|
|
181
186
|
pixelScale: number;
|
|
187
|
+
scale?: ScaleContinuousNumeric<number, number>;
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
function Column(props: ColumnProps) {
|
|
@@ -188,6 +194,7 @@ function Column(props: ColumnProps) {
|
|
|
188
194
|
offsetLeft,
|
|
189
195
|
domain,
|
|
190
196
|
pixelScale,
|
|
197
|
+
scale,
|
|
191
198
|
unitComponent = ColoredUnitComponent,
|
|
192
199
|
} = props;
|
|
193
200
|
|
|
@@ -208,6 +215,7 @@ function Column(props: ColumnProps) {
|
|
|
208
215
|
// Need to tighten up types here...
|
|
209
216
|
divisions: units as any[],
|
|
210
217
|
range: domain,
|
|
218
|
+
scale,
|
|
211
219
|
pixelsPerMeter: pixelScale, // Actually pixels per myr
|
|
212
220
|
axisType: ColumnAxisType.AGE,
|
|
213
221
|
},
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CompositeStratigraphicScaleInfo } from "../age-axis";
|
|
2
|
-
import { PackageLayoutData } from "../prepare-units/composite-scale";
|
|
3
2
|
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
4
3
|
import { type ColumnGeoJSONRecord, UnitLong } from "@macrostrat/api-types";
|
|
5
4
|
import {
|
|
@@ -9,6 +8,7 @@ import {
|
|
|
9
8
|
preprocessUnits,
|
|
10
9
|
} from "../prepare-units";
|
|
11
10
|
import { mergeAgeRanges } from "@macrostrat/stratigraphy-utils";
|
|
11
|
+
import { PackageLayoutData } from "../prepare-units/types";
|
|
12
12
|
|
|
13
13
|
export interface ColumnIdentifier {
|
|
14
14
|
col_id: number;
|
|
@@ -21,8 +21,10 @@ interface ColumnData {
|
|
|
21
21
|
units: UnitLong[];
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export interface CorrelationChartSettings
|
|
25
|
-
|
|
24
|
+
export interface CorrelationChartSettings extends Omit<
|
|
25
|
+
PrepareColumnOptions,
|
|
26
|
+
"axisType"
|
|
27
|
+
> {
|
|
26
28
|
targetUnitHeight?: number;
|
|
27
29
|
}
|
|
28
30
|
|
|
@@ -52,6 +54,7 @@ export function buildCorrelationChartData(
|
|
|
52
54
|
const opts: PrepareColumnOptions = {
|
|
53
55
|
axisType: ColumnAxisType.AGE,
|
|
54
56
|
targetUnitHeight,
|
|
57
|
+
mergeSections,
|
|
55
58
|
...rest,
|
|
56
59
|
};
|
|
57
60
|
|
|
@@ -102,7 +105,7 @@ interface ColumnExt {
|
|
|
102
105
|
|
|
103
106
|
interface MultiColumnPackageData {
|
|
104
107
|
columnData: ColumnExt[];
|
|
105
|
-
bestPixelScale
|
|
108
|
+
bestPixelScale?: number;
|
|
106
109
|
b_age: number;
|
|
107
110
|
t_age: number;
|
|
108
111
|
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
ColumnCorrelationMap,
|
|
7
7
|
ColumnCorrelationProvider,
|
|
8
8
|
fetchUnits,
|
|
9
|
+
MergeSectionsMode,
|
|
9
10
|
useCorrelationMapStore,
|
|
10
11
|
} from "@macrostrat/column-views";
|
|
11
12
|
import { hyperStyled } from "@macrostrat/hyper";
|
|
@@ -16,6 +17,7 @@ import { ErrorBoundary, useAsyncMemo } from "@macrostrat/ui-components";
|
|
|
16
17
|
import { OverlaysProvider } from "@blueprintjs/core";
|
|
17
18
|
import { parseLineFromString, stringifyLine } from "../hash-string";
|
|
18
19
|
import { EnvironmentColoredUnitComponent } from "../../units";
|
|
20
|
+
import { scaleLinear, scalePow } from "d3-scale";
|
|
19
21
|
|
|
20
22
|
const mapboxToken = import.meta.env.VITE_MAPBOX_API_TOKEN;
|
|
21
23
|
|
|
@@ -96,7 +98,7 @@ export default {
|
|
|
96
98
|
focusedLine: "-100,45 -90,50",
|
|
97
99
|
columnSpacing: 0,
|
|
98
100
|
columnWidth: 100,
|
|
99
|
-
collapseSmallUnconformities:
|
|
101
|
+
collapseSmallUnconformities: true,
|
|
100
102
|
targetUnitHeight: 20,
|
|
101
103
|
},
|
|
102
104
|
argTypes: {
|
|
@@ -196,3 +198,26 @@ export const ColoredByEnvironment = Template.bind({});
|
|
|
196
198
|
ColoredByEnvironment.args = {
|
|
197
199
|
unitComponent: EnvironmentColoredUnitComponent,
|
|
198
200
|
};
|
|
201
|
+
|
|
202
|
+
export const RestrictedAgeRange = Template.bind({});
|
|
203
|
+
RestrictedAgeRange.args = {
|
|
204
|
+
t_age: 100,
|
|
205
|
+
b_age: 300,
|
|
206
|
+
focusedLine: "-114.29,42.74 -104.59,39.21",
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
export const WithFixedScale = Template.bind({});
|
|
210
|
+
WithFixedScale.args = {
|
|
211
|
+
scale: scaleLinear().domain([0, 2500]).range([0, 1000]),
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export const WithPowerScale = Template.bind({});
|
|
215
|
+
WithPowerScale.args = {
|
|
216
|
+
scale: scalePow().exponent(0.3).domain([0, 2500]).range([0, 1000]),
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
export const WithPowerScaleMerged = Template.bind({});
|
|
220
|
+
WithPowerScaleMerged.args = {
|
|
221
|
+
scale: scalePow().exponent(0.3).domain([0, 2500]).range([0, 1000]),
|
|
222
|
+
mergeSections: MergeSectionsMode.ALL,
|
|
223
|
+
};
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
Environment,
|
|
10
10
|
MacrostratRef,
|
|
11
11
|
StratName,
|
|
12
|
+
Interval,
|
|
12
13
|
} from "@macrostrat/api-types";
|
|
13
14
|
import {
|
|
14
15
|
fetchAllColumns,
|
|
@@ -49,7 +50,10 @@ interface MacrostratStore extends RefsSlice {
|
|
|
49
50
|
lithologies: Map<number, any> | null;
|
|
50
51
|
getLithologies(ids: number[] | null): Promise<any>;
|
|
51
52
|
intervals: Map<number, any> | null;
|
|
52
|
-
getIntervals(
|
|
53
|
+
getIntervals(
|
|
54
|
+
ids: number[] | null,
|
|
55
|
+
timescaleID: number | null,
|
|
56
|
+
): Promise<Interval[]>;
|
|
53
57
|
environments: Map<number, Environment> | null;
|
|
54
58
|
getEnvironments(ids: number[] | null): Promise<Environment[]>;
|
|
55
59
|
columnFootprints: Map<number, ColumnFootprintsStorage>;
|
|
@@ -121,35 +125,22 @@ function createColumnsSlice(set, get) {
|
|
|
121
125
|
const { columnFootprints, baseURL, fetch } = get();
|
|
122
126
|
const key = projectID ?? -1;
|
|
123
127
|
let _inProcess = inProcess;
|
|
124
|
-
|
|
125
|
-
// If no project is specified, in process columns cannot be included
|
|
126
|
-
_inProcess = false;
|
|
127
|
-
}
|
|
128
|
+
|
|
128
129
|
let footprints = columnFootprints.get(key);
|
|
129
130
|
if (footprints == null || footprints.inProcess != _inProcess) {
|
|
130
131
|
// Fetch the columns
|
|
131
|
-
const statusCode =
|
|
132
|
-
|
|
132
|
+
const statusCode: ColumnStatusCode[] = ["active"];
|
|
133
|
+
if (_inProcess) {
|
|
134
|
+
statusCode.push("in process");
|
|
135
|
+
}
|
|
136
|
+
const columns = await fetchAllColumns({
|
|
133
137
|
projectID,
|
|
134
|
-
statusCode
|
|
138
|
+
statusCode,
|
|
135
139
|
fetch,
|
|
136
140
|
});
|
|
137
141
|
if (columns == null) {
|
|
138
142
|
return;
|
|
139
143
|
}
|
|
140
|
-
if (_inProcess) {
|
|
141
|
-
const inProcessColumns = await fetchAllColumns({
|
|
142
|
-
projectID,
|
|
143
|
-
statusCode: "in process",
|
|
144
|
-
fetch,
|
|
145
|
-
});
|
|
146
|
-
if (inProcessColumns == null) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
// Combine active and in-process columns
|
|
150
|
-
columns = columns.concat(inProcessColumns);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
144
|
footprints = {
|
|
154
145
|
project_id: projectID,
|
|
155
146
|
inProcess,
|
|
@@ -281,10 +272,21 @@ export function useMacrostratStore(selector: MacrostratSelector | "api") {
|
|
|
281
272
|
if (selector === "api") {
|
|
282
273
|
return ctx;
|
|
283
274
|
}
|
|
284
|
-
|
|
285
275
|
return useStore(ctx, selector);
|
|
286
276
|
}
|
|
287
277
|
|
|
278
|
+
export function useMacrostratBaseURL(
|
|
279
|
+
defaultURL = "https://macrostrat.org/api/v2",
|
|
280
|
+
): string {
|
|
281
|
+
/** Get the Macrostrat base URL from the store if set, otherwise return a default value */
|
|
282
|
+
const ctx = useContext(MacrostratDataProviderContext);
|
|
283
|
+
if (ctx == null) {
|
|
284
|
+
// Return default URL if no provider is present
|
|
285
|
+
return defaultURL;
|
|
286
|
+
}
|
|
287
|
+
return ctx.getState().baseURL;
|
|
288
|
+
}
|
|
289
|
+
|
|
288
290
|
type DataTypeKey =
|
|
289
291
|
| "lithologies"
|
|
290
292
|
| "intervals"
|
|
@@ -407,10 +409,16 @@ export function MacrostratColumnProvider(props) {
|
|
|
407
409
|
*/
|
|
408
410
|
|
|
409
411
|
const { axisType } = useMacrostratColumnData();
|
|
410
|
-
const { units, domain, pixelScale, children } = props;
|
|
412
|
+
const { units, domain, pixelScale, scale, children } = props;
|
|
411
413
|
return h(
|
|
412
414
|
ColumnProvider,
|
|
413
|
-
{
|
|
415
|
+
{
|
|
416
|
+
axisType,
|
|
417
|
+
divisions: units,
|
|
418
|
+
range: domain,
|
|
419
|
+
pixelsPerMeter: pixelScale,
|
|
420
|
+
scale,
|
|
421
|
+
},
|
|
414
422
|
children,
|
|
415
423
|
);
|
|
416
424
|
}
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
import crossFetch from "cross-fetch";
|
|
15
15
|
import { feature } from "topojson-client";
|
|
16
16
|
import { geoArea } from "d3-geo";
|
|
17
|
+
import _ from "underscore";
|
|
17
18
|
|
|
18
19
|
function defaultFetch(
|
|
19
20
|
url: string,
|
|
@@ -23,10 +24,12 @@ function defaultFetch(
|
|
|
23
24
|
return crossFetch(baseURL + url, options);
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
export type ColumnStatusCode = "in process" | "active" | "obsolete";
|
|
28
|
+
|
|
26
29
|
export interface ColumnFetchOptions {
|
|
27
30
|
apiBaseURL?: string;
|
|
28
31
|
projectID?: number;
|
|
29
|
-
statusCode?:
|
|
32
|
+
statusCode?: ColumnStatusCode | ColumnStatusCode[];
|
|
30
33
|
format?: "geojson" | "topojson" | "geojson_bare";
|
|
31
34
|
fetch?: any;
|
|
32
35
|
}
|
|
@@ -46,9 +49,13 @@ export async function fetchAllColumns(
|
|
|
46
49
|
if (projectID != null) {
|
|
47
50
|
args = { ...args, project_id: projectID };
|
|
48
51
|
}
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
let _statusCode: string | undefined = undefined;
|
|
53
|
+
if (Array.isArray(statusCode)) {
|
|
54
|
+
_statusCode = statusCode.join(",");
|
|
55
|
+
} else if (statusCode != null) {
|
|
56
|
+
_statusCode = statusCode;
|
|
51
57
|
}
|
|
58
|
+
args.statusCode = _statusCode;
|
|
52
59
|
|
|
53
60
|
if (projectID == null) {
|
|
54
61
|
args = { ...args, all: true };
|
|
@@ -1,18 +1,66 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
useContext,
|
|
4
|
-
ReactNode,
|
|
5
|
-
useMemo,
|
|
6
|
-
useEffect,
|
|
7
|
-
} from "react";
|
|
1
|
+
import { createContext, ReactNode, useContext, useMemo } from "react";
|
|
8
2
|
import h from "@macrostrat/hyper";
|
|
9
3
|
import {
|
|
10
|
-
createCompositeScale,
|
|
11
|
-
PackageLayoutData,
|
|
12
4
|
CompositeColumnScale,
|
|
5
|
+
createCompositeScale,
|
|
13
6
|
} from "../prepare-units/composite-scale";
|
|
14
|
-
import { ExtUnit } from "../prepare-units/helpers";
|
|
15
7
|
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
8
|
+
import type { ExtUnit, PackageLayoutData } from "../prepare-units";
|
|
9
|
+
// An isolated jotai store for Macrostrat column usage
|
|
10
|
+
// TODO: there might be a better way to do this using the MacrostratDataProvider or similar
|
|
11
|
+
import { createIsolation } from "jotai-scope";
|
|
12
|
+
import { atom, type WritableAtom } from "jotai";
|
|
13
|
+
|
|
14
|
+
const { Provider, useAtom, useAtomValue, useStore } = createIsolation();
|
|
15
|
+
|
|
16
|
+
type ProviderProps = {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
initialValues?: Iterable<[WritableAtom<any, any, any>, any]>;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const columnUnitsAtom = atom<ExtUnit[]>();
|
|
22
|
+
|
|
23
|
+
const columnUnitsMapAtom = atom<Map<number, ExtUnit> | null>((get) => {
|
|
24
|
+
const units = get(columnUnitsAtom);
|
|
25
|
+
if (!units) return null;
|
|
26
|
+
const unitMap = new Map<number, ExtUnit>();
|
|
27
|
+
units.forEach((unit) => {
|
|
28
|
+
unitMap.set(unit.unit_id, unit);
|
|
29
|
+
});
|
|
30
|
+
return unitMap;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
function ScopedProvider({ children, ...rest }: ProviderProps) {
|
|
34
|
+
// Always use the same store instance in this tree
|
|
35
|
+
let val = null;
|
|
36
|
+
try {
|
|
37
|
+
val = useStore();
|
|
38
|
+
} catch {
|
|
39
|
+
// No store found, create a new one
|
|
40
|
+
val = null;
|
|
41
|
+
}
|
|
42
|
+
return h(Provider, { store: val, ...rest }, children);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function MacrostratColumnStateProvider({
|
|
46
|
+
children,
|
|
47
|
+
units,
|
|
48
|
+
}: {
|
|
49
|
+
children: ReactNode;
|
|
50
|
+
units: ExtUnit[];
|
|
51
|
+
}) {
|
|
52
|
+
/** Top-level provider for Macrostrat column data.
|
|
53
|
+
* It is either provided by the Column component itself, or
|
|
54
|
+
* can be hoisted higher in the tree to provide a common data context
|
|
55
|
+
*/
|
|
56
|
+
return h(
|
|
57
|
+
ScopedProvider,
|
|
58
|
+
{
|
|
59
|
+
initialValues: [[columnUnitsAtom, units]],
|
|
60
|
+
},
|
|
61
|
+
children,
|
|
62
|
+
);
|
|
63
|
+
}
|
|
16
64
|
|
|
17
65
|
export interface MacrostratColumnDataContext {
|
|
18
66
|
units: ExtUnit[];
|
|
@@ -31,7 +79,7 @@ export function MacrostratColumnDataProvider({
|
|
|
31
79
|
totalHeight,
|
|
32
80
|
axisType,
|
|
33
81
|
}: MacrostratColumnDataContext & { children: ReactNode }) {
|
|
34
|
-
/**
|
|
82
|
+
/** Internal provider for Macrostrat column data.
|
|
35
83
|
* As a general rule, we want to provide data and column-axis
|
|
36
84
|
* height calculations through the context, since these need to
|
|
37
85
|
* be accessed by any component that lays out information on the
|
|
@@ -43,6 +91,7 @@ export function MacrostratColumnDataProvider({
|
|
|
43
91
|
* */
|
|
44
92
|
|
|
45
93
|
const value = useMemo(() => {
|
|
94
|
+
// For now, change ordinal axis types to age axis types
|
|
46
95
|
return {
|
|
47
96
|
units,
|
|
48
97
|
sections,
|
|
@@ -51,7 +100,11 @@ export function MacrostratColumnDataProvider({
|
|
|
51
100
|
};
|
|
52
101
|
}, [units, sections, totalHeight, axisType]);
|
|
53
102
|
|
|
54
|
-
return h(
|
|
103
|
+
return h(
|
|
104
|
+
MacrostratColumnStateProvider,
|
|
105
|
+
{ units },
|
|
106
|
+
h(MacrostratColumnDataContext.Provider, { value }, children),
|
|
107
|
+
);
|
|
55
108
|
}
|
|
56
109
|
|
|
57
110
|
export function useMacrostratColumnData() {
|
|
@@ -65,7 +118,15 @@ export function useMacrostratColumnData() {
|
|
|
65
118
|
}
|
|
66
119
|
|
|
67
120
|
export function useMacrostratUnits() {
|
|
68
|
-
return
|
|
121
|
+
return useAtomValue(columnUnitsAtom);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function useColumnUnitsMap(): Map<number, ExtUnit> | null {
|
|
125
|
+
try {
|
|
126
|
+
return useAtomValue(columnUnitsMapAtom);
|
|
127
|
+
} catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
69
130
|
}
|
|
70
131
|
|
|
71
132
|
export function useCompositeScale(): CompositeColumnScale {
|