@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
|
@@ -4,6 +4,11 @@ import {ColumnAxisType as $1qVxh$ColumnAxisType} from "@macrostrat/column-compon
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
const $b6657fba8924a702$var$dt = 0.001;
|
|
7
|
+
var $b6657fba8924a702$export$e1644389ce074058 = /*#__PURE__*/ function(MergeSectionsMode) {
|
|
8
|
+
MergeSectionsMode["ALL"] = "all";
|
|
9
|
+
MergeSectionsMode["OVERLAPPING"] = "overlapping";
|
|
10
|
+
return MergeSectionsMode;
|
|
11
|
+
}({});
|
|
7
12
|
const $b6657fba8924a702$export$f1a15f539858307 = function(a, b, axisType = (0, $1qVxh$ColumnAxisType).AGE, tolerance = 0.001) {
|
|
8
13
|
const rel = (0, $1qVxh$compareAgeRanges)($b6657fba8924a702$export$70e712e2ac0237a(a, axisType), $b6657fba8924a702$export$70e712e2ac0237a(b, axisType), tolerance);
|
|
9
14
|
return rel != (0, $1qVxh$AgeRangeRelationship).Disjoint;
|
|
@@ -51,5 +56,5 @@ function $b6657fba8924a702$export$97de5b0a6b4e4dac(x) {
|
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
|
|
54
|
-
export {$b6657fba8924a702$export$f1a15f539858307 as unitsOverlap, $b6657fba8924a702$export$70e712e2ac0237a as getUnitHeightRange, $b6657fba8924a702$export$d92a67740c050efb as agesOverlap, $b6657fba8924a702$export$ab14c04795685c55 as createUnitSorter, $b6657fba8924a702$export$d0c8ecbd4ed8940c as ensureArray, $b6657fba8924a702$export$97de5b0a6b4e4dac as ensureRealFloat};
|
|
55
|
-
//# sourceMappingURL=column-views.
|
|
59
|
+
export {$b6657fba8924a702$export$e1644389ce074058 as MergeSectionsMode, $b6657fba8924a702$export$f1a15f539858307 as unitsOverlap, $b6657fba8924a702$export$70e712e2ac0237a as getUnitHeightRange, $b6657fba8924a702$export$d92a67740c050efb as agesOverlap, $b6657fba8924a702$export$ab14c04795685c55 as createUnitSorter, $b6657fba8924a702$export$d0c8ecbd4ed8940c as ensureArray, $b6657fba8924a702$export$97de5b0a6b4e4dac as ensureRealFloat};
|
|
60
|
+
//# sourceMappingURL=column-views.54f8b909.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;AAeA,MAAM,2BAAK;AAaJ,IAAA,AAAK,mEAAA;;;WAAA;;AAyBL,MAAM,2CAA6B,SACxC,CAAC,EACD,CAAC,EACD,WAA2B,CAAA,GAAA,qBAAa,EAAE,GAAG,EAC7C,YAAoB,KAAK;IAEzB,MAAM,MAAM,CAAA,GAAA,uBAAe,EACzB,yCAAmB,GAAG,WACtB,yCAAmB,GAAG,WACtB;IAEF,OAAO,OAAO,CAAA,GAAA,2BAAmB,EAAE,QAAQ;AAC7C;AAGO,SAAS,0CACd,CAAuB,EACvB,CAAuB,EACvB,YAAoB,wBAAE;IAEtB,OAAO,yCAAa,GAAG,GAAG,CAAA,GAAA,qBAAa,EAAE,GAAG,EAAE;AAChD;AAQO,SAAS,yCACd,IAAyB,EACzB,QAAwB;IAExB,OAAQ;QACN,KAAK,CAAA,GAAA,qBAAa,EAAE,GAAG;YACrB,OAAO;gBAAC,KAAK,UAAU,IAAI,KAAK,KAAK;gBAAE,KAAK,UAAU,IAAI,KAAK,KAAK;aAAC;QACvE,KAAK,CAAA,GAAA,qBAAa,EAAE,KAAK;QACzB,KAAK,CAAA,GAAA,qBAAa,EAAE,OAAO;QAC3B,KAAK,CAAA,GAAA,qBAAa,EAAE,MAAM;YACxB,OAAO;gBAAC,KAAK,UAAU,IAAI,KAAK,KAAK;gBAAE,KAAK,UAAU,IAAI,KAAK,KAAK;aAAC;QACvE;YACE,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE,UAAU;IACpD;AACF;AAEO,MAAM,4CAAmB,CAAC;IAC/B,OAAO,CAAC,GAAa;QACnB,MAAM,QAAQ,yCAAmB,GAAG;QACpC,MAAM,QAAQ,yCAAmB,GAAG;QACpC,MAAM,QAAQ,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;QACjC,IAAI,SAAS,GACX,OAAO;QAET,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;IAC5B;AACF;AAEO,SAAS,0CAAe,CAAU;IACvC,IAAI,MAAM,OAAO,CAAC,IAChB,OAAO;IAET,OAAO;QAAC;KAAE;AACZ;AAEO,SAAS,0CAAgB,CAAyB;IACvD,IAAI,OAAO,KAAK,UACd,IAAI,WAAW;IAEjB,IAAI,MAAM,IACR,OAAO;IAET,OAAO;AACT","sources":["packages/column-views/src/prepare-units/utils.ts"],"sourcesContent":["import type { BaseUnit } from \"@macrostrat/api-types\";\nimport {\n AgeRangeRelationship,\n compareAgeRanges,\n} from \"@macrostrat/stratigraphy-utils\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { ScaleContinuousNumeric } from \"d3-scale\";\nimport type {\n ColumnScaleOptions,\n CompositeColumnData,\n ExtUnit,\n PackageLayoutData,\n StratigraphicPackage,\n} from \"./types\";\n\nconst dt = 0.001;\n\nexport interface PrepareColumnOptions extends ColumnScaleOptions {\n axisType: ColumnAxisType;\n t_age?: number;\n b_age?: number;\n t_pos?: number;\n b_pos?: number;\n mergeSections?: MergeSectionsMode;\n collapseSmallUnconformities?: boolean | number;\n scale?: ScaleContinuousNumeric<any, any>;\n}\n\nexport enum MergeSectionsMode {\n ALL = \"all\",\n OVERLAPPING = \"overlapping\",\n}\n\nexport interface PreparedColumnData extends CompositeColumnData {\n sections: PackageLayoutData[];\n units: ExtUnit[];\n}\n\ninterface UnitsOverlap {\n (\n a: StratigraphicPackage,\n b: StratigraphicPackage,\n axisType?: ColumnAxisType.AGE,\n tolerance?: number,\n ): boolean;\n (\n a: BaseUnit,\n b: BaseUnit,\n axisType: ColumnAxisType,\n tolerance?: number,\n ): boolean;\n}\n\nexport const unitsOverlap: UnitsOverlap = function (\n a,\n b,\n axisType: ColumnAxisType = ColumnAxisType.AGE,\n tolerance: number = 0.001,\n): boolean {\n const rel = compareAgeRanges(\n getUnitHeightRange(a, axisType),\n getUnitHeightRange(b, axisType),\n tolerance,\n );\n return rel != AgeRangeRelationship.Disjoint;\n};\n\n/** A more permissive overlap function in the age space */\nexport function agesOverlap(\n a: StratigraphicPackage,\n b: StratigraphicPackage,\n tolerance: number = dt,\n): boolean {\n return unitsOverlap(a, b, ColumnAxisType.AGE, tolerance);\n}\n\nexport interface PossiblyClippedUnit extends BaseUnit {\n // Internally created clipped positions\n t_clip_pos?: number;\n b_clip_pos?: number;\n}\n\nexport function getUnitHeightRange(\n unit: PossiblyClippedUnit,\n axisType: ColumnAxisType,\n): [number, number] {\n switch (axisType) {\n case ColumnAxisType.AGE:\n return [unit.b_clip_pos ?? unit.b_age, unit.t_clip_pos ?? unit.t_age];\n case ColumnAxisType.DEPTH:\n case ColumnAxisType.ORDINAL:\n case ColumnAxisType.HEIGHT:\n return [unit.b_clip_pos ?? unit.b_pos, unit.t_clip_pos ?? unit.t_pos];\n default:\n throw new Error(`Unknown axis type: ${axisType}`);\n }\n}\n\nexport const createUnitSorter = (axisType: ColumnAxisType) => {\n return (a: BaseUnit, b: BaseUnit) => {\n const a_pos = getUnitHeightRange(a, axisType);\n const b_pos = getUnitHeightRange(b, axisType);\n const d_top = a_pos[1] - b_pos[1];\n if (d_top != 0) {\n return d_top;\n }\n return a_pos[0] - b_pos[0];\n };\n};\n\nexport function ensureArray<T>(x: T | T[]): T[] {\n if (Array.isArray(x)) {\n return x;\n }\n return [x];\n}\n\nexport function ensureRealFloat(x: number | string | null): number | null {\n if (typeof x == \"string\") {\n x = parseFloat(x);\n }\n if (isNaN(x)) {\n return null;\n }\n return x;\n}\n"],"names":[],"version":3,"file":"column-views.54f8b909.js.map"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
.XUD4UG_legend-panel-header .XUD4UG_title-container {
|
|
17
17
|
z-index: 5;
|
|
18
18
|
flex-grow: 1;
|
|
19
|
-
align-items:
|
|
19
|
+
align-items: baseline;
|
|
20
20
|
gap: .5em;
|
|
21
21
|
margin: 0;
|
|
22
22
|
}
|
|
@@ -67,6 +67,14 @@
|
|
|
67
67
|
position: relative;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
.XUD4UG_units-list .XUD4UG_item:after {
|
|
71
|
+
content: ", ";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.XUD4UG_units-list .XUD4UG_item:last-child:after {
|
|
75
|
+
content: "";
|
|
76
|
+
}
|
|
77
|
+
|
|
70
78
|
.XUD4UG_proportion, .XUD4UG_sep, .XUD4UG_no-units, .XUD4UG_strat-name-text {
|
|
71
79
|
color: var(--secondary-color);
|
|
72
80
|
font-style: italic;
|
|
@@ -137,4 +145,4 @@
|
|
|
137
145
|
.XUD4UG_hidden-actions button {
|
|
138
146
|
color: var(--secondary-color) !important;
|
|
139
147
|
}
|
|
140
|
-
/*# sourceMappingURL=column-views.
|
|
148
|
+
/*# sourceMappingURL=column-views.562db43a.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"AAAA;;;;;;;;;;;;;;;AAaE;;;;;;;;AAOI;;;;AAEF;;;;;AAGA;;;;AAEA;;;;AAGF;;;;;AAGA;;;;;AAKA;;;;AAGF;;;;;AAGE;;;;;AAIF;;;;;AAMI;;;;AAEA;;;;AAGJ;;;;;AAIA;;;;;AAIE;;;;;AAIF;;;;;;;;;AAQA;;;;;;AAKA;;;;;;AAIE;;;;AAEA;;;;AAGF;;;;AAGA;;;;;;;AAOA;;;;;;;;;;;;AAUE","sources":["packages/column-views/src/unit-details/panel.module.sass"],"sourcesContent":[".legend-panel-header\n display: flex\n justify-content: space-between\n align-items: center\n gap: 0.5em\n border-bottom: 1px solid var(--panel-rule-color)\n position: sticky\n top: 0\n background-color: var(--panel-secondary-background-color)\n padding: 0.5em 1em\n z-index: 50\n min-height: 45px\n overflow: hidden\n .title-container\n gap: 0.5em\n align-items: baseline\n margin: 0\n flex-grow: 1\n z-index: 5\n &:hover\n .hidden-actions-container\n visibility: visible\n h1, h2, h3\n display: inline\n margin: 0\n .hidden-actions-container\n visibility: hidden\n button\n transform: translateY(0px)\n\n code\n font-size: 0.9em\n color: var(--secondary-color)\n .unit-id:before\n content: '#'\n // Tertiary color is too light...\n color: var(--secondary-color)\n\n .spacer\n flex: 1\n\n.unit-details-panel\n display: flex\n flex-direction: column\n .unit-details-content-holder\n flex: 1\n overflow-y: scroll\n\n.unit-details-content\n position: relative\n margin: 1em\n\n.units-list\n .item\n &:after\n content: ', '\n &:last-child:after\n content: ''\n\n.proportion, .sep, .no-units, .strat-name-text\n color: var(--secondary-color)\n font-style: italic\n\n.strat-name-id, .identifier\n font-family: var(--monospace-font)\n color: var(--secondary-color)\n\n &::before\n content: '#'\n color: var(--tertiary-color)\n\n.color-swatch\n width: 1em\n height: 1em\n border-radius: 0.2em\n margin-right: 0.2em\n border: 1px solid var(--panel-rule-color)\n display: inline-block\n\n.refs\n list-style: none\n margin: 0\n padding-left: 0\n\n.interval-proportions\n flex-grow: 1\n width: 100%\n text-align: right\n .discourage-break\n white-space: nowrap\n .sep\n margin: 0 0.3em\n\n.clickable\n cursor: pointer\n\n.hidden-actions-container\n min-width: 0\n display: inline-block\n //margin-right: -5em\n width: 0\n position: relative\n\n.hidden-actions\n padding-left: 1em\n width: fit-content\n display: flex\n align-items: center\n gap: 0.25em\n background-color: var(--panel-secondary-background-color)\n z-index: 50\n position: relative\n bottom: 0\n button\n color: var(--secondary-color) !important\n"],"names":[],"version":3,"file":"column-views.562db43a.css.map"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useColumnFeatures as $33a46f9423c8104a$export$e3270a4e30e40ff9} from "./column-views.
|
|
1
|
+
import {useColumnFeatures as $33a46f9423c8104a$export$e3270a4e30e40ff9} from "./column-views.8c296309.js";
|
|
2
2
|
import {buildKeyMapping as $40b71acee908f16d$export$b3975a0f05980d25, buildTriangulation as $40b71acee908f16d$export$39cd73f2cb8dc4f7} from "./column-views.dc42f5d0.js";
|
|
3
3
|
import $26TqL$macrostrathyper from "@macrostrat/hyper";
|
|
4
4
|
import {FeatureLayer as $26TqL$FeatureLayer, Feature as $26TqL$Feature, MapContext as $26TqL$MapContext} from "@macrostrat/svg-map-components";
|
|
@@ -166,4 +166,4 @@ const $93f116a6493b17c3$export$b9d912252344e099 = (props)=>{
|
|
|
166
166
|
|
|
167
167
|
|
|
168
168
|
export {$93f116a6493b17c3$export$2254347cd20e6080 as MeasurementsLayer, $93f116a6493b17c3$export$f177ff57c101017a as ColumnFeatures, $93f116a6493b17c3$export$8c41dd563753848 as ColumnKeyboardNavigation, $93f116a6493b17c3$export$f02cc02ad0e0bba3 as Columns, $93f116a6493b17c3$export$4d8f6e6df85d9012 as ColumnCenters, $93f116a6493b17c3$export$b9d912252344e099 as CurrentColumn};
|
|
169
|
-
//# sourceMappingURL=column-views.
|
|
169
|
+
//# sourceMappingURL=column-views.58b891df.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/column-views/src/maps/column-navigation/svg/layers.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n Feature,\n FeatureLayer,\n MapContext,\n} from \"@macrostrat/svg-map-components\";\nimport { useAPIResult, useKeyHandler } from \"@macrostrat/ui-components\";\nimport chroma from \"chroma-js\";\nimport { ExtendedFeature } from \"d3-geo\";\nimport { Polygon } from \"geojson\";\nimport { useContext, useMemo } from \"react\";\nimport { useColumnFeatures } from \"../../../data-provider\";\nimport {\n buildKeyMapping,\n buildTriangulation,\n} from \"../utils/keyboard-navigation\";\n\nconst defaultStyle = {\n fill: \"rgb(239, 180, 249)\",\n stroke: \"magenta\",\n};\n\nexport function MeasurementsLayer(props) {\n const { style = defaultStyle, ...params } = props;\n const res: any = useAPIResult(\"/measurements\", {\n ...params,\n format: \"geojson\",\n response: \"light\",\n });\n if (res == null) return null;\n\n return h(FeatureLayer, {\n useCanvas: false,\n style,\n features: res.features?.filter((d) => d.properties.unit_id != null) ?? [],\n });\n}\n\ntype ColumnProps = { col_id: number };\n\ntype ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;\n\nfunction ColumnFeatures(props) {\n const {\n features,\n onClick,\n color = \"rgba(150,150,150, 1)\",\n singleFeature = true,\n } = props;\n\n const c = chroma(color);\n\n return h(\n FeatureLayer,\n {\n className: \"columns\",\n useCanvas: onClick == null,\n style: {\n fill: c.alpha(0.2).css(),\n stroke: c.alpha(0.4).css(),\n },\n },\n features?.map((f) => {\n return h(Feature, {\n id: f.id ?? f.properties.col_id,\n onClick,\n feature: f,\n });\n }),\n );\n}\n\nenum MacrostratStatusCode {\n InProcess = \"in process\",\n}\n\ninterface ColumnNavProps {\n col_id: number;\n status_code?: MacrostratStatusCode;\n project_id?: number;\n onChange(col_id: number): void;\n}\n\ninterface KeyboardNavProps extends ColumnNavProps {\n features: ColumnFeature[];\n showLayers: boolean;\n}\n\nfunction ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const {\n features = [],\n col_id = null,\n onChange,\n showLayers = false,\n ...projectArgs\n } = props;\n const { projection } = useContext(MapContext);\n const { centroids, tri } = useMemo(\n () => buildTriangulation(features),\n [features],\n );\n\n const currentIndex = useMemo(() => {\n return features.findIndex((d) => d.properties.col_id == col_id);\n }, [features, col_id]);\n\n const neighbors = tri.delaunay.neighbors[currentIndex];\n\n const keyMapping = useMemo(() => {\n return buildKeyMapping(neighbors, centroids, currentIndex, projection);\n }, [neighbors, currentIndex]);\n\n useKeyHandler(\n (event) => {\n const nextColumnIx = keyMapping[event.keyCode];\n if (nextColumnIx == null) return;\n // @ts-ignore\n onChange(features[nextColumnIx]);\n },\n [keyMapping],\n );\n\n if (neighbors == null) return null;\n const neighborFeatures = neighbors.map((d) => features[d]);\n\n return h.if(showLayers)([\n h(FeatureLayer, {\n features: tri.links().features,\n useCanvas: false,\n style: {\n stroke: \"purple\",\n fill: \"transparent\",\n },\n }),\n h(FeatureLayer, {\n features: neighborFeatures,\n useCanvas: false,\n style: {\n stroke: \"rgb(93, 101, 212)\",\n strokeWidth: 3,\n fill: \"rgba(93, 101, 212, 0.5)\",\n },\n }),\n h(FeatureLayer, {\n features: [\n {\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: centroids,\n },\n },\n ],\n useCanvas: false,\n style: {\n r: 1,\n fill: \"purple\",\n },\n }),\n ]);\n}\n\ninterface ColumnExtraInfo {\n apiRoute?: string;\n color?: string;\n filterColumns?(d: ColumnFeature): boolean;\n showDebugLayers?: boolean;\n format?: \"topojson\" | \"geojson\";\n}\n\nconst Columns = (props: ColumnNavProps & ColumnExtraInfo) => {\n const {\n apiRoute = \"/columns\",\n onChange,\n col_id = null,\n status_code,\n project_id,\n color,\n filterColumns,\n showDebugLayers = false,\n format = \"topojson\",\n } = props;\n\n let features: any[] = useColumnFeatures({\n apiRoute,\n status_code,\n project_id,\n format,\n }) as any;\n\n if (features == null) return null;\n\n if (filterColumns != null) {\n features = features.filter(filterColumns);\n }\n\n return h([\n h(ColumnKeyboardNavigation, {\n features,\n col_id,\n onChange,\n status_code,\n project_id,\n showLayers: showDebugLayers,\n }),\n h(ColumnFeatures, { features, onClick: onChange, color }),\n ]);\n};\n\nconst ColumnCenters = (props: ColumnNavProps) => {\n return h(Columns, { apiRoute: \"/defs/columns\", ...props });\n};\n\nconst CurrentColumn = (props) => {\n const { feature } = props;\n return h(FeatureLayer, {\n features: [feature],\n style: {\n fill: \"rgba(255,0,0,0.4)\",\n stroke: \"rgba(255,0,0,0.6)\",\n strokeWidth: 2,\n },\n });\n};\n\nexport {\n Columns,\n CurrentColumn,\n ColumnCenters,\n ColumnFeatures,\n ColumnKeyboardNavigation,\n};\n"],"names":[],"version":3,"file":"column-views.
|
|
1
|
+
{"mappings":"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","sources":["packages/column-views/src/maps/column-navigation/svg/layers.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n Feature,\n FeatureLayer,\n MapContext,\n} from \"@macrostrat/svg-map-components\";\nimport { useAPIResult, useKeyHandler } from \"@macrostrat/ui-components\";\nimport chroma from \"chroma-js\";\nimport { ExtendedFeature } from \"d3-geo\";\nimport { Polygon } from \"geojson\";\nimport { useContext, useMemo } from \"react\";\nimport { useColumnFeatures } from \"../../../data-provider\";\nimport {\n buildKeyMapping,\n buildTriangulation,\n} from \"../utils/keyboard-navigation\";\n\nconst defaultStyle = {\n fill: \"rgb(239, 180, 249)\",\n stroke: \"magenta\",\n};\n\nexport function MeasurementsLayer(props) {\n const { style = defaultStyle, ...params } = props;\n const res: any = useAPIResult(\"/measurements\", {\n ...params,\n format: \"geojson\",\n response: \"light\",\n });\n if (res == null) return null;\n\n return h(FeatureLayer, {\n useCanvas: false,\n style,\n features: res.features?.filter((d) => d.properties.unit_id != null) ?? [],\n });\n}\n\ntype ColumnProps = { col_id: number };\n\ntype ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;\n\nfunction ColumnFeatures(props) {\n const {\n features,\n onClick,\n color = \"rgba(150,150,150, 1)\",\n singleFeature = true,\n } = props;\n\n const c = chroma(color);\n\n return h(\n FeatureLayer,\n {\n className: \"columns\",\n useCanvas: onClick == null,\n style: {\n fill: c.alpha(0.2).css(),\n stroke: c.alpha(0.4).css(),\n },\n },\n features?.map((f) => {\n return h(Feature, {\n id: f.id ?? f.properties.col_id,\n onClick,\n feature: f,\n });\n }),\n );\n}\n\nenum MacrostratStatusCode {\n InProcess = \"in process\",\n}\n\ninterface ColumnNavProps {\n col_id: number;\n status_code?: MacrostratStatusCode;\n project_id?: number;\n onChange(col_id: number): void;\n}\n\ninterface KeyboardNavProps extends ColumnNavProps {\n features: ColumnFeature[];\n showLayers: boolean;\n}\n\nfunction ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const {\n features = [],\n col_id = null,\n onChange,\n showLayers = false,\n ...projectArgs\n } = props;\n const { projection } = useContext(MapContext);\n const { centroids, tri } = useMemo(\n () => buildTriangulation(features),\n [features],\n );\n\n const currentIndex = useMemo(() => {\n return features.findIndex((d) => d.properties.col_id == col_id);\n }, [features, col_id]);\n\n const neighbors = tri.delaunay.neighbors[currentIndex];\n\n const keyMapping = useMemo(() => {\n return buildKeyMapping(neighbors, centroids, currentIndex, projection);\n }, [neighbors, currentIndex]);\n\n useKeyHandler(\n (event) => {\n const nextColumnIx = keyMapping[event.keyCode];\n if (nextColumnIx == null) return;\n // @ts-ignore\n onChange(features[nextColumnIx]);\n },\n [keyMapping],\n );\n\n if (neighbors == null) return null;\n const neighborFeatures = neighbors.map((d) => features[d]);\n\n return h.if(showLayers)([\n h(FeatureLayer, {\n features: tri.links().features,\n useCanvas: false,\n style: {\n stroke: \"purple\",\n fill: \"transparent\",\n },\n }),\n h(FeatureLayer, {\n features: neighborFeatures,\n useCanvas: false,\n style: {\n stroke: \"rgb(93, 101, 212)\",\n strokeWidth: 3,\n fill: \"rgba(93, 101, 212, 0.5)\",\n },\n }),\n h(FeatureLayer, {\n features: [\n {\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: centroids,\n },\n },\n ],\n useCanvas: false,\n style: {\n r: 1,\n fill: \"purple\",\n },\n }),\n ]);\n}\n\ninterface ColumnExtraInfo {\n apiRoute?: string;\n color?: string;\n filterColumns?(d: ColumnFeature): boolean;\n showDebugLayers?: boolean;\n format?: \"topojson\" | \"geojson\";\n}\n\nconst Columns = (props: ColumnNavProps & ColumnExtraInfo) => {\n const {\n apiRoute = \"/columns\",\n onChange,\n col_id = null,\n status_code,\n project_id,\n color,\n filterColumns,\n showDebugLayers = false,\n format = \"topojson\",\n } = props;\n\n let features: any[] = useColumnFeatures({\n apiRoute,\n status_code,\n project_id,\n format,\n }) as any;\n\n if (features == null) return null;\n\n if (filterColumns != null) {\n features = features.filter(filterColumns);\n }\n\n return h([\n h(ColumnKeyboardNavigation, {\n features,\n col_id,\n onChange,\n status_code,\n project_id,\n showLayers: showDebugLayers,\n }),\n h(ColumnFeatures, { features, onClick: onChange, color }),\n ]);\n};\n\nconst ColumnCenters = (props: ColumnNavProps) => {\n return h(Columns, { apiRoute: \"/defs/columns\", ...props });\n};\n\nconst CurrentColumn = (props) => {\n const { feature } = props;\n return h(FeatureLayer, {\n features: [feature],\n style: {\n fill: \"rgba(255,0,0,0.4)\",\n stroke: \"rgba(255,0,0,0.6)\",\n strokeWidth: 2,\n },\n });\n};\n\nexport {\n Columns,\n CurrentColumn,\n ColumnCenters,\n ColumnFeatures,\n ColumnKeyboardNavigation,\n};\n"],"names":[],"version":3,"file":"column-views.58b891df.js.map"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {IsotopesDataset as $d71d096cfe00860f$export$c69bd0285aa5d775, IsotopesColumn as $d71d096cfe00860f$export$5d8aa8022c284748} from "./column-views.
|
|
1
|
+
import {IsotopesDataset as $d71d096cfe00860f$export$c69bd0285aa5d775, IsotopesColumn as $d71d096cfe00860f$export$5d8aa8022c284748} from "./column-views.0ce9b697.js";
|
|
2
2
|
import {MeasurementDataContext as $5dbb619f2c7bef60$export$c644ef985ce7a4c4, MeasurementDataProvider as $5dbb619f2c7bef60$export$5f01d5b342a89841, useMeasurementData as $5dbb619f2c7bef60$export$8a0335fd9ff72150} from "./column-views.a7c5ae16.js";
|
|
3
3
|
|
|
4
4
|
|
|
@@ -6,4 +6,4 @@ import {MeasurementDataContext as $5dbb619f2c7bef60$export$c644ef985ce7a4c4, Mea
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
export {$d71d096cfe00860f$export$c69bd0285aa5d775 as IsotopesDataset, $d71d096cfe00860f$export$5d8aa8022c284748 as IsotopesColumn, $5dbb619f2c7bef60$export$c644ef985ce7a4c4 as MeasurementDataContext, $5dbb619f2c7bef60$export$5f01d5b342a89841 as MeasurementDataProvider, $5dbb619f2c7bef60$export$8a0335fd9ff72150 as useMeasurementData};
|
|
9
|
-
//# sourceMappingURL=column-views.
|
|
9
|
+
//# sourceMappingURL=column-views.60365cdb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"","sources":["packages/column-views/src/facets/carbon-isotopes/index.ts"],"sourcesContent":["export * from \"./isotopes-column\";\nexport * from \"./data-provider\";\n"],"names":[],"version":3,"file":"column-views.
|
|
1
|
+
{"mappings":"","sources":["packages/column-views/src/facets/carbon-isotopes/index.ts"],"sourcesContent":["export * from \"./isotopes-column\";\nexport * from \"./data-provider\";\n"],"names":[],"version":3,"file":"column-views.60365cdb.js.map"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {group as $7EBVZ$group} from "d3-array";
|
|
2
|
+
import {createAPIContext as $7EBVZ$createAPIContext, useAPIResult as $7EBVZ$useAPIResult, useAsyncMemo as $7EBVZ$useAsyncMemo} from "@macrostrat/ui-components";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
const $a3ff7da576c02df0$var$responseUnwrapper = (d)=>d.records;
|
|
7
|
+
const $a3ff7da576c02df0$var$pbdbAPIContext = (0, $7EBVZ$createAPIContext)({
|
|
8
|
+
baseURL: "https://paleobiodb.org/data1.2",
|
|
9
|
+
unwrapResponse: $a3ff7da576c02df0$var$responseUnwrapper
|
|
10
|
+
});
|
|
11
|
+
var $a3ff7da576c02df0$export$a990c76b38782f57 = /*#__PURE__*/ function(FossilDataType) {
|
|
12
|
+
FossilDataType["Occurrences"] = "occs";
|
|
13
|
+
FossilDataType["Collections"] = "colls";
|
|
14
|
+
return FossilDataType;
|
|
15
|
+
}({});
|
|
16
|
+
function $a3ff7da576c02df0$export$c4ed16553d869511(type, { col_id: col_id }) {
|
|
17
|
+
const params = {
|
|
18
|
+
ms_column: col_id,
|
|
19
|
+
show: "full,mslink"
|
|
20
|
+
};
|
|
21
|
+
return (0, $7EBVZ$useAPIResult)(`/${type}/list.json`, params, {
|
|
22
|
+
context: $a3ff7da576c02df0$var$pbdbAPIContext
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function $a3ff7da576c02df0$export$e6af757fa9780077(col_id, type = "colls") {
|
|
26
|
+
// Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here
|
|
27
|
+
// we create a unified view of data over both sources.
|
|
28
|
+
return (0, $7EBVZ$useAsyncMemo)(async ()=>{
|
|
29
|
+
if (col_id == null) return null;
|
|
30
|
+
return await $a3ff7da576c02df0$var$fetchFossilData(col_id, type);
|
|
31
|
+
}, [
|
|
32
|
+
col_id,
|
|
33
|
+
type
|
|
34
|
+
]);
|
|
35
|
+
}
|
|
36
|
+
async function $a3ff7da576c02df0$var$fetchMacrostratFossilData(col_id, type) {
|
|
37
|
+
if (type !== "colls") // Macrostrat API only supports collections
|
|
38
|
+
return [];
|
|
39
|
+
// Fetch fossil collections linked to columns from the Macrostrat API
|
|
40
|
+
const resp = await fetch(`https://macrostrat.org/api/fossils?col_id=${col_id}`);
|
|
41
|
+
const res = await resp.json();
|
|
42
|
+
// Create collections from Macrostrat data
|
|
43
|
+
return res.success.data;
|
|
44
|
+
}
|
|
45
|
+
async function $a3ff7da576c02df0$var$fetchPDBDFossilData(col_id, type) {
|
|
46
|
+
const resp = await fetch(`https://paleobiodb.org/data1.2/${type}/list.json?ms_column=${col_id}&show=mslink,full`);
|
|
47
|
+
const res = await resp.json();
|
|
48
|
+
return res.records.map(type == "colls" ? $a3ff7da576c02df0$var$createMacrostratCollection : $a3ff7da576c02df0$var$preprocessOccurrence);
|
|
49
|
+
}
|
|
50
|
+
async function $a3ff7da576c02df0$var$fetchFossilData(colID, type) {
|
|
51
|
+
const [macrostratData, pbdbData] = await Promise.all([
|
|
52
|
+
$a3ff7da576c02df0$var$fetchMacrostratFossilData(colID, type),
|
|
53
|
+
$a3ff7da576c02df0$var$fetchPDBDFossilData(colID, type)
|
|
54
|
+
]);
|
|
55
|
+
const data = [
|
|
56
|
+
...macrostratData,
|
|
57
|
+
...pbdbData
|
|
58
|
+
];
|
|
59
|
+
return (0, $7EBVZ$group)(data, (d)=>d.unit_id);
|
|
60
|
+
}
|
|
61
|
+
function $a3ff7da576c02df0$var$preprocessOccurrence(d) {
|
|
62
|
+
/* Preprocess data for an occurrence into a Macrostrat-like format */ // Standardize names of Macrostrat units and columns
|
|
63
|
+
const unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
64
|
+
const col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
65
|
+
// taxon names may be stored in different fields
|
|
66
|
+
const occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
67
|
+
const cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
68
|
+
return {
|
|
69
|
+
...d,
|
|
70
|
+
unit_id: unit_id,
|
|
71
|
+
col_id: col_id,
|
|
72
|
+
taxon_name: d.tna,
|
|
73
|
+
best_name: d.idn ?? d.tna,
|
|
74
|
+
occ_id: occ_id,
|
|
75
|
+
cltn_id: cltn_id,
|
|
76
|
+
cltn_name: d.nam
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function $a3ff7da576c02df0$var$createMacrostratCollection(d) {
|
|
80
|
+
/* Preprocess data for a collection into a Macrostrat-like format */ let unit_id = null;
|
|
81
|
+
let col_id = null;
|
|
82
|
+
// Standardize names of Macrostrat units and columns
|
|
83
|
+
if (d.msu != null) unit_id = parseInt(d.msu.replace(/^\w+:/, ""));
|
|
84
|
+
if (d.msc != null) col_id = parseInt(d.msc.replace(/^\w+:/, ""));
|
|
85
|
+
// taxon names may be stored in different fields
|
|
86
|
+
let taxon_name = d.tna;
|
|
87
|
+
let occ_id = null;
|
|
88
|
+
if (d.oid != null && d.oid.startsWith("occ:")) occ_id = parseInt(d.oid.replace(/^occ:/, ""));
|
|
89
|
+
if (d.idn != null) taxon_name = d.idn;
|
|
90
|
+
let cltn_id = d.cltn_id;
|
|
91
|
+
if (d.oid != null && d.oid.startsWith("col:")) cltn_id = parseInt(d.oid.replace(/^col:/, ""));
|
|
92
|
+
else if (d.cid != null && d.cid.startsWith("col:")) cltn_id = parseInt(d.cid.replace(/^col:/, ""));
|
|
93
|
+
return {
|
|
94
|
+
...d,
|
|
95
|
+
unit_id: unit_id,
|
|
96
|
+
col_id: col_id,
|
|
97
|
+
taxon_name: taxon_name,
|
|
98
|
+
occ_id: occ_id,
|
|
99
|
+
cltn_id: cltn_id,
|
|
100
|
+
cltn_name: d.nam,
|
|
101
|
+
t_age: d.t_age,
|
|
102
|
+
b_age: d.b_age
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
export {$a3ff7da576c02df0$export$a990c76b38782f57 as FossilDataType, $a3ff7da576c02df0$export$c4ed16553d869511 as usePBDBFossilData, $a3ff7da576c02df0$export$e6af757fa9780077 as useFossilData};
|
|
108
|
+
//# sourceMappingURL=column-views.6698b95a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/column-views/src/facets/fossils/provider.ts"],"sourcesContent":["import { group, InternMap } from \"d3-array\";\nimport {\n createAPIContext,\n useAPIResult,\n useAsyncMemo,\n} from \"@macrostrat/ui-components\";\n\nconst responseUnwrapper = (d) => d.records;\n\nconst pbdbAPIContext = createAPIContext({\n baseURL: \"https://paleobiodb.org/data1.2\",\n unwrapResponse: responseUnwrapper,\n});\n\nexport enum FossilDataType {\n Occurrences = \"occs\",\n Collections = \"colls\",\n}\n\nexport function usePBDBFossilData(\n type: FossilDataType,\n { col_id },\n): any[] | null {\n const params = {\n ms_column: col_id,\n show: \"full,mslink\",\n };\n return useAPIResult(`/${type}/list.json`, params, {\n context: pbdbAPIContext,\n });\n}\n\nexport interface PBDBIdentifier {\n unit_id: number;\n col_id: number;\n cltn_id: number;\n}\n\nexport interface PBDBCollection extends PBDBIdentifier {\n cltn_name: string;\n pbdb_occs: number;\n t_age: number;\n b_age: number;\n [key: string]: any; // Allow for additional properties\n}\n\nexport interface PBDBOccurrence extends PBDBIdentifier {\n occ_id: number;\n cltn_id: number;\n taxon_name: string;\n best_name: string;\n [key: string]: any; // Allow for additional properties\n}\n\nexport function useFossilData(\n col_id: number,\n type = FossilDataType.Collections,\n) {\n // Fossil links are stored in both Macrostrat and PBDB, depending on how the link was assembled. Here\n // we create a unified view of data over both sources.\n return useAsyncMemo(async () => {\n if (col_id == null) return null;\n return await fetchFossilData(col_id, type);\n }, [col_id, type]);\n}\n\nasync function fetchMacrostratFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n if (type !== FossilDataType.Collections) {\n // Macrostrat API only supports collections\n return [];\n }\n\n // Fetch fossil collections linked to columns from the Macrostrat API\n const resp = await fetch(\n `https://macrostrat.org/api/fossils?col_id=${col_id}`,\n );\n const res = await resp.json();\n // Create collections from Macrostrat data\n return res.success.data;\n}\n\nasync function fetchPDBDFossilData(\n col_id: number,\n type: FossilDataType,\n): Promise<PBDBCollection[]> {\n const resp = await fetch(\n `https://paleobiodb.org/data1.2/${type}/list.json?ms_column=${col_id}&show=mslink,full`,\n );\n const res = await resp.json();\n return res.records.map(\n type == FossilDataType.Collections\n ? createMacrostratCollection\n : preprocessOccurrence,\n );\n}\n\nasync function fetchFossilData(\n colID: number,\n type: FossilDataType,\n): Promise<InternMap<number, PBDBOccurrence[] | PBDBCollection[]>> {\n const [macrostratData, pbdbData] = await Promise.all([\n fetchMacrostratFossilData(colID, type),\n fetchPDBDFossilData(colID, type),\n ]);\n\n const data = [...macrostratData, ...pbdbData];\n\n return group(data, (d) => d.unit_id);\n}\n\nfunction preprocessOccurrence(d): PBDBOccurrence {\n /* Preprocess data for an occurrence into a Macrostrat-like format */\n // Standardize names of Macrostrat units and columns\n const unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n const col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n\n // taxon names may be stored in different fields\n const occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n const cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name: d.tna,\n best_name: d.idn ?? d.tna,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n };\n}\n\nfunction createMacrostratCollection(d): PBDBCollection {\n /* Preprocess data for a collection into a Macrostrat-like format */\n let unit_id = null;\n let col_id = null;\n // Standardize names of Macrostrat units and columns\n if (d.msu != null) {\n unit_id = parseInt(d.msu.replace(/^\\w+:/, \"\"));\n }\n if (d.msc != null) {\n col_id = parseInt(d.msc.replace(/^\\w+:/, \"\"));\n }\n\n // taxon names may be stored in different fields\n let taxon_name = d.tna;\n let occ_id = null;\n if (d.oid != null && d.oid.startsWith(\"occ:\")) {\n occ_id = parseInt(d.oid.replace(/^occ:/, \"\"));\n }\n if (d.idn != null) {\n taxon_name = d.idn;\n }\n\n let cltn_id = d.cltn_id;\n if (d.oid != null && d.oid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.oid.replace(/^col:/, \"\"));\n } else if (d.cid != null && d.cid.startsWith(\"col:\")) {\n cltn_id = parseInt(d.cid.replace(/^col:/, \"\"));\n }\n\n return {\n ...d,\n unit_id,\n col_id,\n taxon_name,\n occ_id,\n cltn_id,\n cltn_name: d.nam,\n t_age: d.t_age,\n b_age: d.b_age,\n };\n}\n"],"names":[],"version":3,"file":"column-views.6698b95a.js.map"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
function $parcel$export(e, n, v, s) {
|
|
3
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
4
|
+
}
|
|
5
|
+
var $4629ffa28ca3dfc9$exports = {};
|
|
6
|
+
|
|
7
|
+
$parcel$export($4629ffa28ca3dfc9$exports, "too-many", () => $4629ffa28ca3dfc9$export$76144d85d033d82a, (v) => $4629ffa28ca3dfc9$export$76144d85d033d82a = v);
|
|
8
|
+
$parcel$export($4629ffa28ca3dfc9$exports, "truncated-list", () => $4629ffa28ca3dfc9$export$12f42f335e4f5e49, (v) => $4629ffa28ca3dfc9$export$12f42f335e4f5e49 = v);
|
|
9
|
+
var $4629ffa28ca3dfc9$export$76144d85d033d82a;
|
|
10
|
+
var $4629ffa28ca3dfc9$export$12f42f335e4f5e49;
|
|
11
|
+
$4629ffa28ca3dfc9$export$76144d85d033d82a = `sf_8dq_too-many`;
|
|
12
|
+
$4629ffa28ca3dfc9$export$12f42f335e4f5e49 = `sf_8dq_truncated-list`;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export {$4629ffa28ca3dfc9$exports as default};
|
|
16
|
+
//# sourceMappingURL=column-views.6e7082db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;AAAA,IAAA;AACA,IAAA;AADA,4CAA6B,CAAC,eAAe,CAAC;AAC9C,4CAAmC,CAAC,qBAAqB,CAAC","sources":["packages/column-views/src/facets/base-sample-column.module.sass"],"sourcesContent":[".truncated-list\n padding-left: 0.2em\n font-size: 0.9em\n list-style: none\n border-left: 1px solid var(--column-stroke-color)\n margin: 1px 0\n li\n display: inline\n &:not(:last-child):after\n content: \", \"\n color: var(--secondary-color)\n li.too-many\n color: var(--secondary-color)\n font-style: italic\n"],"names":[],"version":3,"file":"column-views.6e7082db.js.map"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import {getUnitHeightRange as $b6657fba8924a702$export$70e712e2ac0237a} from "./column-views.54f8b909.js";
|
|
2
|
+
import {HeightMethod as $1254c5929638d7f9$export$e40aae6f0de9bb95, HybridScaleType as $1254c5929638d7f9$export$45e8e2d7a1794c23} from "./column-views.079119f4.js";
|
|
3
|
+
import {scaleLinear as $a4oUv$scaleLinear} from "d3-scale";
|
|
4
|
+
import {ColumnAxisType as $a4oUv$ColumnAxisType} from "@macrostrat/column-components";
|
|
5
|
+
import {mergeAgeRanges as $a4oUv$mergeAgeRanges, MergeMode as $a4oUv$MergeMode} from "@macrostrat/stratigraphy-utils";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
function $90d6b105908858a7$export$151c207e6887154c(units, tolerance = 0.001) {
|
|
13
|
+
/** Compute age surfaces for a column based on unit tops and bottoms */ const surfaces = [];
|
|
14
|
+
for (const unit of units){
|
|
15
|
+
// Top surface
|
|
16
|
+
surfaces.push({
|
|
17
|
+
age: unit.t_age,
|
|
18
|
+
units_below: [
|
|
19
|
+
unit.unit_id
|
|
20
|
+
],
|
|
21
|
+
units_above: []
|
|
22
|
+
});
|
|
23
|
+
// Bottom surface
|
|
24
|
+
surfaces.push({
|
|
25
|
+
age: unit.b_age,
|
|
26
|
+
units_above: [
|
|
27
|
+
unit.unit_id
|
|
28
|
+
],
|
|
29
|
+
units_below: []
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Merge duplicate surfaces (same age)
|
|
33
|
+
const mergedSurfaces = [];
|
|
34
|
+
for (const surface of surfaces){
|
|
35
|
+
const existingSurface = mergedSurfaces.find((s)=>Math.abs(s.age - surface.age) < tolerance);
|
|
36
|
+
if (existingSurface) {
|
|
37
|
+
existingSurface.units_above.push(...surface.units_above);
|
|
38
|
+
existingSurface.units_below.push(...surface.units_below);
|
|
39
|
+
} else mergedSurfaces.push(surface);
|
|
40
|
+
}
|
|
41
|
+
// Sort surfaces by age (ascending)
|
|
42
|
+
mergedSurfaces.sort((a, b)=>a.age - b.age);
|
|
43
|
+
return mergedSurfaces.map((s, i)=>({
|
|
44
|
+
...s,
|
|
45
|
+
index: i
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
function $90d6b105908858a7$var$getUnitsInAgeDomains(surfaces, units) {
|
|
49
|
+
// Get unit IDs represented between the same surface, and the proportion of their total height represented
|
|
50
|
+
const domainUnitInfo = [];
|
|
51
|
+
for(let i = 0; i < surfaces.length - 1; i++){
|
|
52
|
+
const topSurface = surfaces[i];
|
|
53
|
+
const bottomSurface = surfaces[i + 1];
|
|
54
|
+
const unitsInDomain = units.filter((unit)=>{
|
|
55
|
+
return unit.t_age <= topSurface.age + 0.001 && unit.b_age >= bottomSurface.age - 0.001;
|
|
56
|
+
});
|
|
57
|
+
domainUnitInfo.push({
|
|
58
|
+
t_age: topSurface.age,
|
|
59
|
+
b_age: bottomSurface.age,
|
|
60
|
+
units: unitsInDomain
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return domainUnitInfo;
|
|
64
|
+
}
|
|
65
|
+
function $90d6b105908858a7$var$proportionOfUnitInDomain(unit, t_age, b_age) {
|
|
66
|
+
// Compute the proportion of a unit's height that lies within the given age domain
|
|
67
|
+
const rng = (0, $b6657fba8924a702$export$70e712e2ac0237a)(unit, (0, $a4oUv$ColumnAxisType).AGE);
|
|
68
|
+
const rng1 = [
|
|
69
|
+
b_age,
|
|
70
|
+
t_age
|
|
71
|
+
];
|
|
72
|
+
// Compute overlap
|
|
73
|
+
const mergedRange = (0, $a4oUv$mergeAgeRanges)([
|
|
74
|
+
rng,
|
|
75
|
+
rng1
|
|
76
|
+
], (0, $a4oUv$MergeMode).Inner);
|
|
77
|
+
const unitHeight = Math.abs(rng[1] - rng[0]);
|
|
78
|
+
const mergedHeight = Math.abs(mergedRange[1] - mergedRange[0]);
|
|
79
|
+
return mergedHeight / unitHeight;
|
|
80
|
+
}
|
|
81
|
+
function $90d6b105908858a7$export$6b39f1b6356d94b6(def, units, domain, options = {}) {
|
|
82
|
+
const surfaces = $90d6b105908858a7$export$151c207e6887154c(units);
|
|
83
|
+
const filteredSurfaces = surfaces.filter((s)=>s.age < Math.max(...domain) && s.age > Math.min(...domain));
|
|
84
|
+
const s1 = [
|
|
85
|
+
{
|
|
86
|
+
index: -1,
|
|
87
|
+
age: Math.min(...domain),
|
|
88
|
+
units_above: [],
|
|
89
|
+
units_below: []
|
|
90
|
+
},
|
|
91
|
+
...filteredSurfaces,
|
|
92
|
+
{
|
|
93
|
+
index: -1,
|
|
94
|
+
age: Math.max(...domain),
|
|
95
|
+
units_above: [],
|
|
96
|
+
units_below: []
|
|
97
|
+
}
|
|
98
|
+
];
|
|
99
|
+
const { type: type, ...rest } = def;
|
|
100
|
+
if (type === (0, $1254c5929638d7f9$export$45e8e2d7a1794c23).EquidistantSurfaces) return $90d6b105908858a7$export$d02d2d708a7b495f(s1, options);
|
|
101
|
+
return $90d6b105908858a7$export$be7a6f1f0a23d12c(s1, units, {
|
|
102
|
+
...options,
|
|
103
|
+
...rest
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function $90d6b105908858a7$var$getApproximateHeight(unit, method = (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Maximum) {
|
|
107
|
+
// Get approximate height of a unit based on specified method
|
|
108
|
+
const heights = [];
|
|
109
|
+
let minHeight = unit.min_thick;
|
|
110
|
+
if (method === (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Minimum || method === (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Average) {
|
|
111
|
+
const h = unit.min_thick;
|
|
112
|
+
if (h != null && !isNaN(h) && h > 0) heights.push(h);
|
|
113
|
+
}
|
|
114
|
+
if (method === (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Average || method === (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Maximum) {
|
|
115
|
+
const h = unit.max_thick;
|
|
116
|
+
if (h != null && !isNaN(h) && h > 0) heights.push(h);
|
|
117
|
+
}
|
|
118
|
+
if (heights.length === 0) return null;
|
|
119
|
+
if (method === (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Average) return heights.reduce((sum, h)=>sum + h, 0) / heights.length;
|
|
120
|
+
else return heights[0];
|
|
121
|
+
}
|
|
122
|
+
function $90d6b105908858a7$export$be7a6f1f0a23d12c(surfaces, units, options = {}) {
|
|
123
|
+
/** Build a variable age scale that places age surfaces equally far apart in height space.
|
|
124
|
+
* It is presumed that gaps are already removed from the unit set provided.
|
|
125
|
+
* */ const { pixelScale: pixelScale = 1, pixelOffset: pixelOffset = 0, minHeight: minHeight = 5, heightMethod: heightMethod = (0, $1254c5929638d7f9$export$e40aae6f0de9bb95).Maximum, defaultHeight: // Default height for when height is unknown
|
|
126
|
+
defaultHeight = 100 } = options;
|
|
127
|
+
// Get units associated with each surface
|
|
128
|
+
// Note: we could hoist this if it proved useful for other scale types
|
|
129
|
+
const domainInfo = $90d6b105908858a7$var$getUnitsInAgeDomains(surfaces, units);
|
|
130
|
+
// Compute the height in pixels for each surface
|
|
131
|
+
const surfaceHeights = [];
|
|
132
|
+
const ageDomain = [];
|
|
133
|
+
let lastHeight = pixelOffset;
|
|
134
|
+
for (const domain of domainInfo){
|
|
135
|
+
if (lastHeight == pixelOffset) {
|
|
136
|
+
surfaceHeights.push(lastHeight);
|
|
137
|
+
ageDomain.push(domain.t_age);
|
|
138
|
+
}
|
|
139
|
+
// Approximate height based on units in this domain
|
|
140
|
+
const units = domain.units;
|
|
141
|
+
let unitHeightInfo = [];
|
|
142
|
+
for (const unit of units){
|
|
143
|
+
const proportion = $90d6b105908858a7$var$proportionOfUnitInDomain(unit, domain.t_age, domain.b_age);
|
|
144
|
+
const height = $90d6b105908858a7$var$getApproximateHeight(unit, heightMethod);
|
|
145
|
+
if (height != null) unitHeightInfo.push({
|
|
146
|
+
unit: unit,
|
|
147
|
+
height: height * proportion
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
let thisHeight = 0;
|
|
151
|
+
if (unitHeightInfo.length === 0) thisHeight = defaultHeight; // Default height if no units with height info
|
|
152
|
+
else {
|
|
153
|
+
// Normalize weights (take the mean)
|
|
154
|
+
const meanHeight = unitHeightInfo.reduce((sum, d)=>sum + d.height, 0) / unitHeightInfo.length;
|
|
155
|
+
if (meanHeight == 0) thisHeight = defaultHeight; // Arbitrary height for zero-height intervals
|
|
156
|
+
else if (meanHeight < minHeight) thisHeight = minHeight; // Minimum height
|
|
157
|
+
else thisHeight = meanHeight;
|
|
158
|
+
}
|
|
159
|
+
lastHeight += thisHeight;
|
|
160
|
+
surfaceHeights.push(lastHeight);
|
|
161
|
+
ageDomain.push(domain.b_age);
|
|
162
|
+
}
|
|
163
|
+
// Build a piecewise linear scale mapping age to pixel height
|
|
164
|
+
const pixelRange = surfaceHeights.map((h)=>h * pixelScale);
|
|
165
|
+
const scale = (0, $a4oUv$scaleLinear)().domain(ageDomain).range(pixelRange);
|
|
166
|
+
const heightDomain = surfaceHeights.map((h)=>lastHeight - h);
|
|
167
|
+
const heightScale = (0, $a4oUv$scaleLinear)().domain(heightDomain).range(pixelRange);
|
|
168
|
+
const domain = [
|
|
169
|
+
ageDomain[ageDomain.length - 1],
|
|
170
|
+
ageDomain[0]
|
|
171
|
+
];
|
|
172
|
+
return {
|
|
173
|
+
scale: scale,
|
|
174
|
+
pixelScale: null,
|
|
175
|
+
domain: domain,
|
|
176
|
+
pixelHeight: Math.abs(pixelRange[pixelRange.length - 1] - pixelRange[0]),
|
|
177
|
+
heightScale: heightScale
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function $90d6b105908858a7$export$d02d2d708a7b495f(surfaces, options = {}) {
|
|
181
|
+
/** Build a variable age scale that places age surfaces equally far apart in height space.
|
|
182
|
+
* It is presumed that gaps are already removed from the unit set provided.
|
|
183
|
+
* */ const { pixelScale: pixelScale = 30 } = options;
|
|
184
|
+
const domain = [
|
|
185
|
+
surfaces[surfaces.length - 1].age,
|
|
186
|
+
surfaces[0].age
|
|
187
|
+
];
|
|
188
|
+
// Compute the height in pixels for each surface
|
|
189
|
+
const surfaceHeights = surfaces.map((surface, i)=>{
|
|
190
|
+
return i * pixelScale;
|
|
191
|
+
});
|
|
192
|
+
// Build a piecewise linear scale mapping age to pixel height
|
|
193
|
+
const ageDomain = surfaces.map((s)=>s.age);
|
|
194
|
+
const pixelRange = surfaceHeights;
|
|
195
|
+
const scale = (0, $a4oUv$scaleLinear)().domain(ageDomain).range(pixelRange);
|
|
196
|
+
return {
|
|
197
|
+
scale: scale,
|
|
198
|
+
pixelScale: null,
|
|
199
|
+
domain: domain,
|
|
200
|
+
pixelHeight: Math.abs(pixelRange[pixelRange.length - 1] - pixelRange[0])
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
export {$90d6b105908858a7$export$151c207e6887154c as buildColumnSurfaces, $90d6b105908858a7$export$6b39f1b6356d94b6 as buildHybridScale, $90d6b105908858a7$export$d02d2d708a7b495f as buildScaleFromSurfacesSimple, $90d6b105908858a7$export$be7a6f1f0a23d12c as buildApproximateHeightScale};
|
|
206
|
+
//# sourceMappingURL=column-views.70164236.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/column-views/src/prepare-units/dynamic-scales.ts"],"sourcesContent":["import type { UnitLong } from \"@macrostrat/api-types\";\nimport { scaleLinear } from \"d3-scale\";\nimport { getUnitHeightRange } from \"./utils\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { mergeAgeRanges, MergeMode } from \"@macrostrat/stratigraphy-utils\";\nimport type {\n ApproxHeightScaleOptions,\n ExtUnit,\n HybridScaleDefinition,\n HybridScaleOptions,\n PackageScaleInfo,\n} from \"./types\";\nimport { HybridScaleType, HeightMethod } from \"./types\";\n\ninterface BaseSurface {\n index: number;\n age: number;\n units_below: number[];\n units_above: number[];\n}\n\nexport function buildColumnSurfaces<T extends UnitLong>(\n units: T[],\n tolerance: number = 0.001,\n): BaseSurface[] {\n /** Compute age surfaces for a column based on unit tops and bottoms */\n const surfaces: Omit<BaseSurface, \"index\">[] = [];\n for (const unit of units) {\n // Top surface\n surfaces.push({\n age: unit.t_age,\n units_below: [unit.unit_id],\n units_above: [],\n });\n // Bottom surface\n surfaces.push({\n age: unit.b_age,\n units_above: [unit.unit_id],\n units_below: [],\n });\n }\n\n // Merge duplicate surfaces (same age)\n const mergedSurfaces: Omit<BaseSurface, \"index\">[] = [];\n for (const surface of surfaces) {\n const existingSurface = mergedSurfaces.find(\n (s) => Math.abs(s.age - surface.age) < tolerance,\n );\n if (existingSurface) {\n existingSurface.units_above.push(...surface.units_above);\n existingSurface.units_below.push(...surface.units_below);\n } else {\n mergedSurfaces.push(surface);\n }\n }\n\n // Sort surfaces by age (ascending)\n mergedSurfaces.sort((a, b) => a.age - b.age);\n\n return mergedSurfaces.map((s, i) => ({ ...s, index: i }));\n}\n\ninterface AgeDomainUnitInfo {\n t_age: number;\n b_age: number;\n units: ExtUnit[];\n}\n\nfunction getUnitsInAgeDomains(\n surfaces: BaseSurface[],\n units: ExtUnit[],\n): AgeDomainUnitInfo[] {\n // Get unit IDs represented between the same surface, and the proportion of their total height represented\n const domainUnitInfo: AgeDomainUnitInfo[] = [];\n for (let i = 0; i < surfaces.length - 1; i++) {\n const topSurface = surfaces[i];\n const bottomSurface = surfaces[i + 1];\n const unitsInDomain = units.filter((unit) => {\n return (\n unit.t_age <= topSurface.age + 0.001 &&\n unit.b_age >= bottomSurface.age - 0.001\n );\n });\n domainUnitInfo.push({\n t_age: topSurface.age,\n b_age: bottomSurface.age,\n units: unitsInDomain,\n });\n }\n return domainUnitInfo;\n}\n\nfunction proportionOfUnitInDomain(\n unit: ExtUnit,\n t_age: number,\n b_age: number,\n): number {\n // Compute the proportion of a unit's height that lies within the given age domain\n\n const rng = getUnitHeightRange(unit, ColumnAxisType.AGE);\n const rng1: [number, number] = [b_age, t_age];\n // Compute overlap\n\n const mergedRange = mergeAgeRanges([rng, rng1], MergeMode.Inner);\n\n const unitHeight = Math.abs(rng[1] - rng[0]);\n const mergedHeight = Math.abs(mergedRange[1] - mergedRange[0]);\n\n return mergedHeight / unitHeight;\n}\n\nexport function buildHybridScale<T extends UnitLong>(\n def: HybridScaleDefinition,\n units: T[],\n domain: [number, number],\n options: HybridScaleOptions = {},\n): PackageScaleInfo {\n const surfaces = buildColumnSurfaces(units);\n\n const filteredSurfaces = surfaces.filter(\n (s) => s.age < Math.max(...domain) && s.age > Math.min(...domain),\n );\n\n const s1 = [\n { index: -1, age: Math.min(...domain), units_above: [], units_below: [] },\n ...filteredSurfaces,\n {\n index: -1,\n age: Math.max(...domain),\n units_above: [],\n units_below: [],\n },\n ];\n\n const { type, ...rest } = def;\n\n if (type === HybridScaleType.EquidistantSurfaces) {\n return buildScaleFromSurfacesSimple(s1, options);\n }\n\n return buildApproximateHeightScale(s1, units, { ...options, ...rest });\n}\n\nfunction getApproximateHeight(\n unit: ExtUnit,\n method: HeightMethod = HeightMethod.Maximum,\n): number | null {\n // Get approximate height of a unit based on specified method\n const heights = [];\n let minHeight = unit.min_thick;\n if (method === HeightMethod.Minimum || method === HeightMethod.Average) {\n const h = unit.min_thick;\n if (h != null && !isNaN(h) && h > 0) heights.push(h);\n }\n if (method === HeightMethod.Average || method === HeightMethod.Maximum) {\n const h = unit.max_thick;\n if (h != null && !isNaN(h) && h > 0) heights.push(h);\n }\n\n if (heights.length === 0) return null;\n\n if (method === HeightMethod.Average) {\n return heights.reduce((sum, h) => sum + h, 0) / heights.length;\n } else {\n return heights[0];\n }\n}\n\nexport function buildApproximateHeightScale(\n surfaces: BaseSurface[],\n units: UnitLong[],\n options: HybridScaleOptions & ApproxHeightScaleOptions = {},\n): PackageScaleInfo {\n /** Build a variable age scale that places age surfaces equally far apart in height space.\n * It is presumed that gaps are already removed from the unit set provided.\n * */\n\n const {\n pixelScale = 1, // pixels per meter\n pixelOffset = 0,\n minHeight = 5,\n heightMethod = HeightMethod.Maximum,\n // Default height for when height is unknown\n defaultHeight = 100,\n } = options;\n\n // Get units associated with each surface\n // Note: we could hoist this if it proved useful for other scale types\n const domainInfo = getUnitsInAgeDomains(surfaces, units as ExtUnit[]);\n\n // Compute the height in pixels for each surface\n\n const surfaceHeights = [];\n const ageDomain = [];\n let lastHeight = pixelOffset;\n\n for (const domain of domainInfo) {\n if (lastHeight == pixelOffset) {\n surfaceHeights.push(lastHeight);\n ageDomain.push(domain.t_age);\n }\n\n // Approximate height based on units in this domain\n const units = domain.units;\n let unitHeightInfo: { unit: ExtUnit; height: number }[] = [];\n\n for (const unit of units) {\n const proportion = proportionOfUnitInDomain(\n unit,\n domain.t_age,\n domain.b_age,\n );\n const height = getApproximateHeight(unit, heightMethod);\n if (height != null) {\n unitHeightInfo.push({ unit, height: height * proportion });\n }\n }\n\n let thisHeight = 0;\n if (unitHeightInfo.length === 0) {\n thisHeight = defaultHeight; // Default height if no units with height info\n } else {\n // Normalize weights (take the mean)\n\n const meanHeight =\n unitHeightInfo.reduce((sum, d) => sum + d.height, 0) /\n unitHeightInfo.length;\n\n if (meanHeight == 0) {\n thisHeight = defaultHeight; // Arbitrary height for zero-height intervals\n } else if (meanHeight < minHeight) {\n thisHeight = minHeight; // Minimum height\n } else {\n thisHeight = meanHeight;\n }\n }\n\n lastHeight += thisHeight;\n surfaceHeights.push(lastHeight);\n ageDomain.push(domain.b_age);\n }\n\n // Build a piecewise linear scale mapping age to pixel height\n const pixelRange = surfaceHeights.map((h) => h * pixelScale);\n\n const scale = scaleLinear().domain(ageDomain).range(pixelRange);\n\n const heightDomain = surfaceHeights.map((h) => lastHeight - h);\n\n const heightScale = scaleLinear().domain(heightDomain).range(pixelRange);\n\n const domain: [number, number] = [\n ageDomain[ageDomain.length - 1],\n ageDomain[0],\n ];\n\n return {\n scale,\n pixelScale: null, // pixels per unit\n domain,\n pixelHeight: Math.abs(pixelRange[pixelRange.length - 1] - pixelRange[0]),\n heightScale,\n };\n}\n\nexport function buildScaleFromSurfacesSimple(\n surfaces: BaseSurface[],\n options: HybridScaleOptions = {},\n): PackageScaleInfo {\n /** Build a variable age scale that places age surfaces equally far apart in height space.\n * It is presumed that gaps are already removed from the unit set provided.\n * */\n\n const { pixelScale = 30 } = options;\n\n const domain: [number, number] = [\n surfaces[surfaces.length - 1].age,\n surfaces[0].age,\n ];\n // Compute the height in pixels for each surface\n\n const surfaceHeights = surfaces.map((surface, i) => {\n return i * pixelScale;\n });\n\n // Build a piecewise linear scale mapping age to pixel height\n const ageDomain = surfaces.map((s) => s.age);\n const pixelRange = surfaceHeights;\n\n const scale = scaleLinear().domain(ageDomain).range(pixelRange);\n\n return {\n scale,\n pixelScale: null, // pixels per unit\n domain,\n pixelHeight: Math.abs(pixelRange[pixelRange.length - 1] - pixelRange[0]),\n };\n}\n"],"names":[],"version":3,"file":"column-views.70164236.js.map"}
|