@macrostrat/column-views 2.1.4 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -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.77b49a43.js → column-views.0859feb3.js} +52 -23
- package/dist/esm/column-views.0859feb3.js.map +1 -0
- package/dist/esm/{column-views.1f7fb650.js → column-views.0a8a07f4.js} +3 -3
- package/dist/esm/{column-views.1f7fb650.js.map → column-views.0a8a07f4.js.map} +1 -1
- package/dist/esm/{column-views.0732894f.js → column-views.0f7f6ee6.js} +2 -2
- package/dist/esm/{column-views.0732894f.js.map → column-views.0f7f6ee6.js.map} +1 -1
- package/dist/esm/{column-views.448c0687.css → column-views.1151416d.css} +5 -5
- package/dist/esm/column-views.1151416d.css.map +1 -0
- package/dist/esm/{column-views.676cb1d3.js → column-views.1b644998.js} +3 -3
- package/dist/esm/{column-views.676cb1d3.js.map → column-views.1b644998.js.map} +1 -1
- package/dist/esm/{column-views.686d21ad.js → column-views.22ec902b.js} +4 -1
- package/dist/esm/column-views.22ec902b.js.map +1 -0
- package/dist/esm/{column-views.02f3732a.js → column-views.285cbb65.js} +40 -20
- package/dist/esm/column-views.285cbb65.js.map +1 -0
- package/dist/esm/{column-views.97d542eb.js → column-views.2d602a57.js} +4 -4
- package/dist/esm/column-views.2d602a57.js.map +1 -0
- package/dist/esm/{column-views.b17f793f.css → column-views.321af3ae.css} +7 -1
- package/dist/esm/{column-views.686d21ad.js.map → column-views.321af3ae.css.map} +1 -1
- package/dist/esm/column-views.3a7179c4.js +137 -0
- package/dist/esm/column-views.3a7179c4.js.map +1 -0
- package/dist/esm/{column-views.78bd3f09.js → column-views.3e1b8c7d.js} +2 -2
- package/dist/esm/{column-views.78bd3f09.js.map → column-views.3e1b8c7d.js.map} +1 -1
- package/dist/esm/{column-views.42b89c52.js → column-views.3f528c5c.js} +50 -22
- package/dist/esm/column-views.3f528c5c.js.map +1 -0
- package/dist/esm/{column-views.1e055ed5.js → column-views.4fd4ec92.js} +17 -3
- package/dist/esm/column-views.4fd4ec92.js.map +1 -0
- package/dist/esm/{column-views.769fa0ee.js → column-views.53186d53.js} +2 -2
- package/dist/esm/{column-views.769fa0ee.js.map → column-views.53186d53.js.map} +1 -1
- package/dist/esm/{column-views.39657bbf.js → column-views.54f8b909.js} +7 -2
- package/dist/esm/column-views.54f8b909.js.map +1 -0
- package/dist/esm/{column-views.b72918ce.css → column-views.562db43a.css} +10 -2
- package/dist/esm/column-views.562db43a.css.map +1 -0
- package/dist/esm/{column-views.9e1c82fe.js → column-views.58b891df.js} +2 -2
- package/dist/esm/{column-views.9e1c82fe.js.map → column-views.58b891df.js.map} +1 -1
- package/dist/esm/{column-views.775846c9.js → column-views.5a49cd68.js} +8 -38
- package/dist/esm/column-views.5a49cd68.js.map +1 -0
- package/dist/esm/{column-views.f20eb583.js → column-views.5d969bc5.js} +4 -5
- package/dist/esm/column-views.5d969bc5.js.map +1 -0
- package/dist/esm/{column-views.243da806.js → column-views.63b7e5aa.js} +3 -3
- package/dist/esm/{column-views.243da806.js.map → column-views.63b7e5aa.js.map} +1 -1
- package/dist/esm/column-views.6698b95a.js +108 -0
- package/dist/esm/column-views.6698b95a.js.map +1 -0
- package/dist/esm/column-views.6c644353.js +184 -0
- package/dist/esm/column-views.6c644353.js.map +1 -0
- package/dist/esm/column-views.6e7082db.js +16 -0
- package/dist/esm/column-views.6e7082db.js.map +1 -0
- package/dist/esm/column-views.70164236.js +206 -0
- package/dist/esm/column-views.70164236.js.map +1 -0
- package/dist/esm/{column-views.7ca9e1cd.js → column-views.73b8ff16.js} +19 -21
- package/dist/esm/column-views.73b8ff16.js.map +1 -0
- package/dist/esm/{column-views.cc5244c4.js → column-views.77561197.js} +91 -55
- package/dist/esm/column-views.77561197.js.map +1 -0
- package/dist/esm/{column-views.e7ab5af0.js → column-views.83395185.js} +3 -3
- package/dist/esm/{column-views.e7ab5af0.js.map → column-views.83395185.js.map} +1 -1
- package/dist/esm/{column-views.8e3dec90.js → column-views.86a51ce7.js} +2 -2
- package/dist/esm/{column-views.8e3dec90.js.map → column-views.86a51ce7.js.map} +1 -1
- package/dist/esm/{column-views.f08929e2.js → column-views.88d63dd0.js} +5 -3
- package/dist/esm/column-views.88d63dd0.js.map +1 -0
- package/dist/esm/{column-views.3f246167.js → column-views.8c296309.js} +5 -5
- package/dist/esm/column-views.8c296309.js.map +1 -0
- package/dist/esm/{column-views.ab0380ed.js → column-views.8d24b179.js} +3 -3
- package/dist/esm/{column-views.ab0380ed.js.map → column-views.8d24b179.js.map} +1 -1
- package/dist/esm/{column-views.a6301a41.js → column-views.986e7566.js} +7 -7
- package/dist/esm/{column-views.a6301a41.js.map → column-views.986e7566.js.map} +1 -1
- package/dist/esm/{column-views.86619334.js → column-views.9ddbe7df.js} +2 -2
- package/dist/esm/{column-views.86619334.js.map → column-views.9ddbe7df.js.map} +1 -1
- package/dist/esm/{column-views.2ff3dd8b.js → column-views.ae7c0a2b.js} +31 -60
- package/dist/esm/column-views.ae7c0a2b.js.map +1 -0
- package/dist/esm/{column-views.9892f825.js → column-views.aecf25bc.js} +75 -42
- package/dist/esm/column-views.aecf25bc.js.map +1 -0
- package/dist/esm/column-views.b7016f82.css +54 -0
- package/dist/esm/column-views.b7016f82.css.map +1 -0
- package/dist/esm/{column-views.a195109e.js → column-views.ba0381cc.js} +2 -2
- package/dist/esm/{column-views.a195109e.js.map → column-views.ba0381cc.js.map} +1 -1
- package/dist/esm/{column-views.75ea6dbe.js → column-views.c518ef14.js} +9 -4
- package/dist/esm/column-views.c518ef14.js.map +1 -0
- package/dist/esm/{column-views.f7523c1d.js → column-views.c92a359e.js} +2 -2
- package/dist/esm/{column-views.f7523c1d.js.map → column-views.c92a359e.js.map} +1 -1
- package/dist/esm/{column-views.cdadc5c2.js → column-views.cc733361.js} +7 -1
- package/dist/esm/column-views.cc733361.js.map +1 -0
- package/dist/esm/{column-views.4d22c21c.js → column-views.d15d8655.js} +22 -4
- package/dist/esm/column-views.d15d8655.js.map +1 -0
- package/dist/esm/{column-views.5e2dc19d.js → column-views.d261b02d.js} +3 -3
- package/dist/esm/{column-views.5e2dc19d.js.map → column-views.d261b02d.js.map} +1 -1
- package/dist/esm/{column-views.fbc7401f.js → column-views.d406665d.js} +5 -5
- package/dist/esm/{column-views.fbc7401f.js.map → column-views.d406665d.js.map} +1 -1
- package/dist/esm/{column-views.7715e35e.js → column-views.d69c4a9f.js} +3 -3
- package/dist/esm/{column-views.7715e35e.js.map → column-views.d69c4a9f.js.map} +1 -1
- package/dist/esm/{column-views.547b2730.js → column-views.d9c6b527.js} +15 -12
- package/dist/esm/column-views.d9c6b527.js.map +1 -0
- 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.e3bf5384.js +15 -0
- package/dist/esm/{column-views.38a305a0.js.map → column-views.e3bf5384.js.map} +1 -1
- package/dist/esm/{column-views.e3b9a317.js → column-views.e4c26185.js} +2 -2
- package/dist/esm/{column-views.e3b9a317.js.map → column-views.e4c26185.js.map} +1 -1
- package/dist/esm/column-views.e84bd756.js +92 -0
- package/dist/esm/column-views.e84bd756.js.map +1 -0
- package/dist/esm/column-views.ea4ebbb7.js +31 -0
- package/dist/esm/column-views.ea4ebbb7.js.map +1 -0
- package/dist/esm/column-views.ed05e233.js +13 -0
- package/dist/esm/{column-views.0a159282.js.map → column-views.ed05e233.js.map} +1 -1
- package/dist/esm/{column-views.64a84c43.js → column-views.f2fd0e4a.js} +10 -2
- package/dist/esm/column-views.f2fd0e4a.js.map +1 -0
- package/dist/esm/{column-views.935ef6f7.js → column-views.f46a0b36.js} +2 -2
- package/dist/esm/{column-views.935ef6f7.js.map → column-views.f46a0b36.js.map} +1 -1
- package/dist/esm/{column-views.d48cb0d8.js → column-views.fcf25ec6.js} +7 -1
- package/dist/esm/column-views.fcf25ec6.js.map +1 -0
- package/dist/esm/index.d.ts +217 -406
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -12
- package/dist/node/{column-views.858b5cf4.js → column-views.01debc76.js} +2 -2
- package/dist/node/{column-views.858b5cf4.js.map → column-views.01debc76.js.map} +1 -1
- package/dist/node/{column-views.51bc87ca.js → column-views.040499c9.js} +2 -2
- package/dist/node/{column-views.51bc87ca.js.map → column-views.040499c9.js.map} +1 -1
- package/dist/node/{column-views.e3ba0594.js → column-views.07ff1fdf.js} +2 -2
- package/dist/node/{column-views.e3ba0594.js.map → column-views.07ff1fdf.js.map} +1 -1
- package/dist/node/{column-views.3a55ecd7.css → column-views.0840b115.css} +2 -2
- package/dist/node/column-views.0840b115.css.map +1 -0
- package/dist/node/column-views.0b3a384e.js +2 -0
- package/dist/node/column-views.0b3a384e.js.map +1 -0
- package/dist/node/column-views.0bd15ee4.js +2 -0
- package/dist/node/column-views.0bd15ee4.js.map +1 -0
- package/dist/node/column-views.105f6ad2.js +2 -0
- package/dist/node/column-views.105f6ad2.js.map +1 -0
- package/dist/node/column-views.1261be59.js +2 -0
- package/dist/node/column-views.1261be59.js.map +1 -0
- package/dist/node/{column-views.45fab61b.js → column-views.13e69859.js} +2 -2
- package/dist/node/{column-views.45fab61b.js.map → column-views.13e69859.js.map} +1 -1
- package/dist/node/column-views.16f336ee.js +2 -0
- package/dist/node/column-views.16f336ee.js.map +1 -0
- package/dist/node/{column-views.58d2f993.js → column-views.1a7f8afd.js} +2 -2
- package/dist/node/{column-views.58d2f993.js.map → column-views.1a7f8afd.js.map} +1 -1
- package/dist/node/column-views.29eb25bd.css +2 -0
- package/dist/node/column-views.29eb25bd.css.map +1 -0
- package/dist/node/column-views.2bd97c2e.js +2 -0
- package/dist/node/column-views.2bd97c2e.js.map +1 -0
- package/dist/node/column-views.3b37363f.js +2 -0
- package/dist/node/column-views.3b37363f.js.map +1 -0
- package/dist/node/column-views.45296250.js +2 -0
- package/dist/node/column-views.45296250.js.map +1 -0
- package/dist/node/{column-views.0cbd4a3f.js → column-views.48a3cfa3.js} +2 -2
- package/dist/node/{column-views.0cbd4a3f.js.map → column-views.48a3cfa3.js.map} +1 -1
- package/dist/node/{column-views.42db0bb8.js → column-views.492c2c72.js} +2 -2
- package/dist/node/{column-views.42db0bb8.js.map → column-views.492c2c72.js.map} +1 -1
- package/dist/node/column-views.50a992d3.css +2 -0
- package/dist/node/column-views.50a992d3.css.map +1 -0
- package/dist/node/column-views.573cb29d.js +2 -0
- package/dist/node/column-views.573cb29d.js.map +1 -0
- package/dist/node/column-views.576e3c5a.js +2 -0
- package/dist/node/column-views.576e3c5a.js.map +1 -0
- package/dist/node/column-views.5f3b0b04.js +2 -0
- package/dist/node/column-views.5f3b0b04.js.map +1 -0
- package/dist/node/column-views.6fd5a922.js +2 -0
- package/dist/node/column-views.6fd5a922.js.map +1 -0
- package/dist/node/column-views.7150ba18.js +2 -0
- package/dist/node/column-views.7150ba18.js.map +1 -0
- package/dist/node/column-views.728c8dfc.js +2 -0
- package/dist/node/column-views.728c8dfc.js.map +1 -0
- package/dist/node/column-views.7425d37b.js +2 -0
- package/dist/node/column-views.7425d37b.js.map +1 -0
- package/dist/node/{column-views.2e4e357d.js → column-views.75582658.js} +2 -2
- package/dist/node/{column-views.2e4e357d.js.map → column-views.75582658.js.map} +1 -1
- package/dist/node/column-views.77ace3a2.js +2 -0
- package/dist/node/column-views.77ace3a2.js.map +1 -0
- package/dist/node/column-views.7f9c7448.js +2 -0
- package/dist/node/column-views.7f9c7448.js.map +1 -0
- package/dist/node/{column-views.a2274834.js → column-views.81294fb7.js} +2 -2
- package/dist/node/{column-views.a2274834.js.map → column-views.81294fb7.js.map} +1 -1
- package/dist/node/column-views.827a9894.js +2 -0
- package/dist/node/column-views.827a9894.js.map +1 -0
- package/dist/node/column-views.87b1439e.js +2 -0
- package/dist/node/column-views.87b1439e.js.map +1 -0
- package/dist/node/{column-views.492b4917.js → column-views.9dda582d.js} +2 -2
- package/dist/node/{column-views.492b4917.js.map → column-views.9dda582d.js.map} +1 -1
- package/dist/node/{column-views.2a6b842d.js → column-views.9e155f20.js} +2 -2
- package/dist/node/column-views.9e155f20.js.map +1 -0
- package/dist/node/column-views.a16cd1f2.js +2 -0
- package/dist/node/column-views.a16cd1f2.js.map +1 -0
- package/dist/node/{column-views.eeca917f.js → column-views.a34732e7.js} +2 -2
- package/dist/node/{column-views.eeca917f.js.map → column-views.a34732e7.js.map} +1 -1
- package/dist/node/{column-views.65f091ea.js → column-views.a396d3ac.js} +2 -2
- package/dist/node/{column-views.65f091ea.js.map → column-views.a396d3ac.js.map} +1 -1
- package/dist/node/column-views.aae09aca.js +2 -0
- package/dist/node/column-views.aae09aca.js.map +1 -0
- package/dist/node/{column-views.a372c943.js → column-views.ac1b58b7.js} +2 -2
- package/dist/node/{column-views.a372c943.js.map → column-views.ac1b58b7.js.map} +1 -1
- package/dist/node/column-views.aef76eee.js +2 -0
- package/dist/node/column-views.aef76eee.js.map +1 -0
- package/dist/node/column-views.b64cd0ea.js +2 -0
- package/dist/node/column-views.b64cd0ea.js.map +1 -0
- package/dist/node/{column-views.2d957a97.js → column-views.b6cd4360.js} +2 -2
- package/dist/node/column-views.b6cd4360.js.map +1 -0
- package/dist/node/column-views.c0be1157.js +2 -0
- package/dist/node/column-views.c0be1157.js.map +1 -0
- package/dist/node/column-views.c29e9eb8.js +2 -0
- package/dist/node/column-views.c29e9eb8.js.map +1 -0
- package/dist/node/column-views.c8df6435.js +2 -0
- package/dist/node/column-views.c8df6435.js.map +1 -0
- package/dist/node/column-views.cd2a5c85.js +2 -0
- package/dist/node/column-views.cd2a5c85.js.map +1 -0
- package/dist/node/{column-views.df97f28e.js → column-views.cd77a1d8.js} +2 -2
- package/dist/node/{column-views.df97f28e.js.map → column-views.cd77a1d8.js.map} +1 -1
- package/dist/node/column-views.cd7b223b.css +2 -0
- package/dist/node/column-views.cd7b223b.css.map +1 -0
- package/dist/node/column-views.cf2a78c1.js +2 -0
- package/dist/node/column-views.cf2a78c1.js.map +1 -0
- package/dist/node/{column-views.c7f6fc0a.js → column-views.d529d3aa.js} +2 -2
- package/dist/node/{column-views.c7f6fc0a.js.map → column-views.d529d3aa.js.map} +1 -1
- package/dist/node/{column-views.7010a03b.js → column-views.dd972321.js} +2 -2
- package/dist/node/{column-views.7010a03b.js.map → column-views.dd972321.js.map} +1 -1
- package/dist/node/column-views.e065152e.js +2 -0
- package/dist/node/column-views.e065152e.js.map +1 -0
- package/dist/node/{column-views.2ca669bc.js → column-views.e08f8715.js} +2 -2
- package/dist/node/{column-views.2ca669bc.js.map → column-views.e08f8715.js.map} +1 -1
- package/dist/node/{column-views.91043465.js → column-views.e0d9865e.js} +2 -2
- package/dist/node/column-views.e0d9865e.js.map +1 -0
- package/dist/node/column-views.e2562224.js +2 -0
- package/dist/node/column-views.e2562224.js.map +1 -0
- package/dist/node/column-views.e803e4ae.css +2 -0
- package/dist/node/column-views.e803e4ae.css.map +1 -0
- package/dist/node/column-views.edb4ba54.js +2 -0
- package/dist/node/column-views.edb4ba54.js.map +1 -0
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +13 -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 +91 -19
- package/src/correlation-chart/main.ts +10 -2
- package/src/correlation-chart/prepare-data.ts +7 -4
- package/src/correlation-chart/stories/correlation-chart.stories.ts +26 -1
- package/src/data-provider/base.ts +32 -24
- package/src/data-provider/fetch.ts +10 -3
- package/src/data-provider/store.ts +16 -10
- package/src/facets/base-sample-column.module.sass +14 -0
- package/src/facets/base-sample-column.ts +114 -0
- package/src/facets/detrital-zircon/index.ts +31 -63
- package/src/facets/fossils/index.module.sass +43 -13
- package/src/facets/fossils/index.ts +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/prepare-units/composite-scale.ts +183 -155
- package/src/prepare-units/dynamic-scales.ts +298 -0
- package/src/prepare-units/helpers.ts +99 -87
- package/src/prepare-units/index.ts +77 -51
- package/src/prepare-units/types.ts +138 -0
- package/src/prepare-units/utils.ts +29 -1
- package/src/section.ts +46 -9
- package/src/unit-details/panel.module.sass +8 -1
- package/src/unit-details/panel.ts +123 -53
- package/src/unit-details/popover.ts +5 -0
- package/src/units/boxes.ts +1 -5
- package/src/units/composite.ts +3 -49
- package/src/units/selection.ts +21 -7
- 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.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.97d542eb.js.map +0 -1
- package/dist/esm/column-views.9892f825.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.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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;AAgCO,IAAA,AAAK,mEAAA;;;WAAA;;AAUL,SAAS,0CACd,IAAgB,EAChB,OAA6B;IAE7B;;GAEC,GACD,OAAO,CAAA,GAAA,cAAM,EAAE;QACb,OAAO,0CAAmB,MAAM;IAClC,GAAG;QAAC;WAAS,OAAO,MAAM,CAAC;KAAS;AACtC;AAEO,SAAS,0CACd,KAAiB,EACjB,OAA6B;IAE7B,wDAAwD,GAExD,MAAM,SACJ,KAAK,SACL,KAAK,iBACL,yCACA,QAAQ,sBACR,kBAAkB,+BAClB,8BAA8B,OAC/B,GAAG;IAEJ,qCAAqC,GACrC,IAAI,SAAS,MAAM,MAAM,CAAC,CAAC;QACzB,6CAA6C;QAC7C,OAAO,CAAA,GAAA,yCAAU,EAAE,GAAG;mBAAE;mBAAO;QAAM;IACvC;IAEA,IAAI;IACJ,IACE,0BACA,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EAClC;QACA,oEAAoE;QACpE,MAAM,CAAC,YAAY,WAAW,GAAG,CAAA,GAAA,yCAAiB,EAAE;QACpD,YAAY;YACV;gBACE,YAAY;gBACZ;;WAEG,GACH,OAAO,SAAS;gBAChB,OAAO,SAAS;gBAChB,OAAO;YACT;SACD;IACH,OACE,YAAY,CAAA,GAAA,yCAAqB,EAAE,QAAQ;IAG7C;;;GAGC,GACD,IAAI,WAAW;IACf,IACE,kCACA,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EAElC,WAAW,CAAA,GAAA,yCAAuB,EAAE;IAEtC,6CAA6C;IAC7C,WAAW,SAAS,MAAM,CAAC,CAAC,IAAM,KAAK;IAEvC;;GAEC,GACD,WAAW,SAAS,GAAG,CAAC,CAAC;QACvB,MAAM,SAAE,KAAK,SAAE,KAAK,EAAE,GAAG;QACzB,OAAO;YACL,GAAG,OAAO;YACV,OAAO,KAAK,GAAG,CAAC,OAAO,QAAQ,KAAK,IAAI,CAAC;YACzC,OAAO,KAAK,GAAG,CAAC,OAAO,QAAQ,KAAK,IAAI;QAC1C;IACF;IAEA;;;GAGC,GACD,IAAI,qBAAqB,CAAA,GAAA,yCAAoB,EAAE,UAAU;IAEzD,IAAI,+BAA+B,OAAO;QACxC,IAAI,YAAY,sBAAsB;QACtC,IAAI,OAAO,+BAA+B,UACxC,YAAY;QAGd,qBAAqB,CAAA,GAAA,yCAAkC,EACrD,oBACA,WACA;IAEJ;IAEA,mDAAmD,GACnD,MAAM,eAAE,WAAW,EAAE,UAAU,SAAS,EAAE,GAAG,CAAA,GAAA,yCAAqB,EAChE,oBACA;IAGF;;;KAGG,GACH,MAAM,cAAc,UAAU,GAAG,CAAC,CAAC;QACjC,OAAO;YACL,GAAG,OAAO;YACV,OAAO,CAAA,GAAA,yCAAc,EAAE,SAAS;QAClC;IACF;IAEA;;;GAGC,GACD,MAAM,SAAS,YAAY,MAAM,CAAC,CAAC,KAAK;QACtC,MAAM,SAAE,KAAK,EAAE,GAAG;QAClB,KAAK,MAAM,QAAQ,MACjB,IAAI,IAAI,CAAC;QAEX,OAAO;IACT,GAAG,EAAE;IAEL,OAAO;QACL,OAAO;qBACP;QACA,UAAU;IACZ;AACF","sources":["packages/column-views/src/prepare-units/index.ts"],"sourcesContent":["import {\n getSectionAgeRange,\n groupUnitsIntoSections,\n mergeOverlappingSections,\n preprocessUnits,\n} from \"./helpers\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { useMemo } from \"react\";\nimport type { ExtUnit } from \"./helpers\";\nimport { UnitLong } from \"@macrostrat/api-types\";\nimport {\n collapseUnconformitiesByPixelHeight,\n ColumnScaleOptions,\n CompositeColumnData,\n computeSectionHeights,\n finalizeSectionHeights,\n PackageLayoutData,\n} from \"./composite-scale\";\nimport type { SectionInfo } from \"./helpers\";\nimport { agesOverlap, getUnitHeightRange, unitsOverlap } from \"./utils\";\n\nexport * from \"./utils\";\nexport { preprocessUnits, groupUnitsIntoSections };\n\nexport interface PrepareColumnOptions extends ColumnScaleOptions {\n axisType: ColumnAxisType;\n t_age?: number;\n b_age?: number;\n mergeSections?: MergeSectionsMode;\n collapseSmallUnconformities?: boolean | number;\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\nexport function usePreparedColumnUnits(\n data: UnitLong[],\n options: PrepareColumnOptions,\n): PreparedColumnData {\n /** This function wraps and memoizes all preparation steps for converting\n * an array of units from the /units route to a form ready for usage.\n */\n return useMemo(() => {\n return prepareColumnUnits(data, options);\n }, [data, ...Object.values(options)]);\n}\n\nexport function prepareColumnUnits(\n units: UnitLong[],\n options: PrepareColumnOptions,\n): PreparedColumnData {\n /** Prepare units for rendering into Macrostrat columns */\n\n const {\n t_age,\n b_age,\n mergeSections = MergeSectionsMode.OVERLAPPING,\n axisType,\n unconformityHeight,\n collapseSmallUnconformities = false,\n } = options;\n\n /** Prototype filtering to age range */\n let units1 = units.filter((d) => {\n // Filter units by t_age and b_age, inclusive\n return agesOverlap(d, { t_age, b_age });\n });\n\n let sections0: SectionInfo<UnitLong>[];\n if (\n mergeSections == MergeSectionsMode.ALL &&\n axisType != ColumnAxisType.ORDINAL\n ) {\n // For the \"merge sections\" mode, we need to create a single section\n const [b_unit_age, t_unit_age] = getSectionAgeRange(units1);\n sections0 = [\n {\n section_id: 0,\n /**\n * If ages limits are directly specified, use them to define the section bounds.\n * */\n t_age: t_age ?? t_unit_age,\n b_age: b_age ?? b_unit_age,\n units: units1,\n },\n ];\n } else {\n sections0 = groupUnitsIntoSections(units1, axisType);\n }\n\n /** Merging overlapping sections really only makes sense for age/height/depth\n * columns. Ordinal columns are numbered by section so merging them\n * results in collisions.\n */\n let sections = sections0;\n if (\n mergeSections == MergeSectionsMode.OVERLAPPING &&\n axisType != ColumnAxisType.ORDINAL\n ) {\n sections = mergeOverlappingSections(sections);\n }\n // Filter out undefined sections just in case\n sections = sections.filter((d) => d != null);\n\n /* Now that we are done merging sections, we can ensure that our sections\n * are correctly limited to the t_age and b_age applied to the overall column.\n */\n sections = sections.map((section) => {\n const { t_age, b_age } = section;\n return {\n ...section,\n t_age: Math.max(t_age, options.t_age ?? -Infinity),\n b_age: Math.min(b_age, options.b_age ?? Infinity),\n };\n });\n\n /* Compute pixel scales etc. for sections\n * We need to do this now to determine which unconformities\n * are small enough to collapse.\n */\n let sectionsWithScales = computeSectionHeights(sections, options);\n\n if (collapseSmallUnconformities ?? false) {\n let threshold = unconformityHeight ?? 30;\n if (typeof collapseSmallUnconformities == \"number\") {\n threshold = collapseSmallUnconformities;\n }\n\n sectionsWithScales = collapseUnconformitiesByPixelHeight(\n sectionsWithScales,\n threshold,\n options,\n );\n }\n\n /** Prepare section scale information using groups */\n const { totalHeight, sections: sections2 } = finalizeSectionHeights(\n sectionsWithScales,\n unconformityHeight,\n );\n\n /** For each section, find units that are overlapping.\n * We do this after merging sections so that we can\n * handle cases where there are overlapping units across sections\n * */\n const sectionsOut = sections2.map((section) => {\n return {\n ...section,\n units: preprocessUnits(section, axisType),\n };\n });\n\n /** Reconstitute the units so that they are sorted by section and properly enhanced.\n * This is mostly important so that unit keyboard navigation\n * predictably selects adjacent units.\n */\n const units2 = sectionsOut.reduce((acc, group) => {\n const { units } = group;\n for (const unit of units) {\n acc.push(unit);\n }\n return acc;\n }, []);\n\n return {\n units: units2,\n totalHeight,\n sections: sectionsOut,\n };\n}\n"],"names":[],"version":3,"file":"column-views.c71c321c.js.map"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/column-views/src/unit-details/panel.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport styles from \"./panel.module.sass\";\nimport { JSONView } from \"@macrostrat/ui-components\";\nimport { Button, ButtonGroup } from \"@blueprintjs/core\";\nimport { ReactNode, useMemo, useState } from \"react\";\nimport {\n DataField,\n EnvironmentsList,\n IntervalShort,\n IntervalTag,\n ItemList,\n LithologyList,\n LithologyTagFeature,\n Parenthetical,\n Value,\n} from \"@macrostrat/data-components\";\nimport { useMacrostratData, useMacrostratDefs } from \"../data-provider\";\nimport {\n Environment,\n UnitLong,\n UnitLongFull,\n Lithology,\n Interval,\n StratUnit,\n} from \"@macrostrat/api-types\";\nimport { defaultNameFunction } from \"../units/names\";\nimport classNames from \"classnames\";\n\nconst h = hyper.styled(styles);\n\nexport function UnitDetailsPanel({\n unit,\n onClose,\n className,\n features = new Set<UnitDetailsFeature>([\n UnitDetailsFeature.AdjacentUnits,\n UnitDetailsFeature.OutcropType,\n UnitDetailsFeature.JSONToggle,\n UnitDetailsFeature.DepthRange,\n ]),\n lithologyFeatures,\n actions,\n selectUnit,\n columnUnits,\n onClickItem,\n}: {\n unit: any;\n onClose?: any;\n showLithologyProportions?: boolean;\n className?: string;\n actions?: ReactNode;\n features?: Set<UnitDetailsFeature>;\n lithologyFeatures?: Set<LithologyTagFeature>;\n columnUnits?: UnitLong[];\n selectUnit?: (unitID: number) => void;\n onClickItem?: (item: any) => void;\n}) {\n const [showJSON, setShowJSON] = useState(false);\n\n let content = null;\n if (showJSON) {\n content = h(JSONView, { data: unit, showRoot: false });\n } else {\n content = h(UnitDetailsContent, {\n unit,\n features,\n lithologyFeatures,\n onClickItem,\n });\n }\n\n let title = defaultNameFunction(unit);\n\n let hiddenActions = null;\n if (features.has(UnitDetailsFeature.JSONToggle)) {\n hiddenActions = h(Button, {\n icon: \"code\",\n small: true,\n minimal: true,\n key: \"json-view-toggle\",\n className: classNames(\"json-view-toggle\", { enabled: setShowJSON }),\n onClick(evt) {\n setShowJSON(!showJSON);\n evt.stopPropagation();\n },\n });\n }\n\n return h(\"div.unit-details-panel\", { className }, [\n h(LegendPanelHeader, {\n onClose,\n title,\n id: unit.unit_id,\n actions,\n hiddenActions,\n }),\n h(\"div.unit-details-content-holder\", content),\n ]);\n}\n\nexport function LegendPanelHeader({\n title,\n id,\n onClose,\n actions = null,\n hiddenActions,\n}: {\n title?: string | null;\n id?: number | null;\n onClose?: () => void;\n actions?: ReactNode | null;\n hiddenActions?: ReactNode | null;\n}) {\n return h(\"header.legend-panel-header\", [\n h(\"div.title-container\", [\n h.if(title != null)(\"h3\", title),\n h.if(hiddenActions != null || id != null)(\n \"span.hidden-actions-container\",\n h(\"div.hidden-actions\", [\n h.if(id != null)(\"code.unit-id\", id),\n h.if(hiddenActions != null)([hiddenActions]),\n ]),\n ),\n ]),\n h(\"div.spacer\"),\n h.if(actions != null)(ButtonGroup, { minimal: true }, actions),\n h.if(onClose != null)(Button, {\n icon: \"cross\",\n minimal: true,\n small: true,\n onClick() {\n onClose();\n },\n }),\n ]);\n}\n\nexport enum UnitDetailsFeature {\n AdjacentUnits = \"adjacent-units\",\n Color = \"color\",\n OutcropType = \"outcrop-type\",\n JSONToggle = \"json-toggle\",\n DepthRange = \"depth-range\",\n}\n\nfunction UnitDetailsContent({\n unit,\n selectUnit,\n columnUnits,\n lithologyFeatures = new Set([\n LithologyTagFeature.Proportion,\n LithologyTagFeature.Attributes,\n ]),\n features = new Set<UnitDetailsFeature>([\n UnitDetailsFeature.AdjacentUnits,\n UnitDetailsFeature.OutcropType,\n ]),\n onClickItem,\n getItemHref,\n}: {\n unit: UnitLong;\n selectUnit?: (unitID: number) => void;\n columnUnits?: UnitLong[];\n lithologyFeatures?: Set<LithologyTagFeature>;\n features?: Set<UnitDetailsFeature>;\n onClickItem?: (\n event: MouseEvent,\n item:\n | Lithology\n | Environment\n | UnitLong\n | Interval\n | { strat_name_id: number },\n ) => void;\n getItemHref?: (item: Lithology | Environment | UnitLong) => string | null;\n}) {\n const lithMap = useMacrostratDefs(\"lithologies\");\n const envMap = useMacrostratDefs(\"environments\");\n\n const environments = enhanceEnvironments(unit.environ, envMap);\n const lithologies = enhanceLithologies(unit.lith ?? [], lithMap);\n\n // Create a lookup table of units if provided\n const columnUnitsMap = useMemo(() => {\n const map = new Map<number, UnitLong>();\n for (const colUnit of columnUnits ?? []) {\n map.set(colUnit.unit_id, colUnit);\n }\n return map;\n }, [columnUnits]);\n\n let outcropField = null;\n if (features.has(UnitDetailsFeature.OutcropType)) {\n // Determine outcrop type\n let outcrop = unit.outcrop;\n if (outcrop == \"both\") {\n outcrop = \"surface and subsurface\";\n }\n outcropField = h(DataField, {\n label: \"Outcrop\",\n value: outcrop,\n });\n }\n\n let thicknessOrHeightRange = null;\n const [thickness, thicknessUnit] = getThickness(unit);\n // Proxy for actual heights in t_pos and b_pos\n if (\n features.has(UnitDetailsFeature.DepthRange) &&\n unit.t_pos != null &&\n unit.b_pos != null &&\n unit.min_thick == unit.max_thick && // We have an actual fixed height\n unit.min_thick != 0 // Not a zero thickness\n ) {\n const label = unit.t_pos < unit.b_pos ? \"Depth\" : \"Height\";\n const u1 = \"m\";\n\n thicknessOrHeightRange = h(DataField, {\n unit: u1,\n label,\n value: formatRange(unit.b_pos, unit.t_pos),\n children: h(\n Parenthetical,\n h(Value, { value: thickness, unit: thicknessUnit }),\n ),\n });\n }\n thicknessOrHeightRange ??= h(DataField, {\n label: \"Thickness\",\n value: thickness,\n unit: thicknessUnit,\n });\n\n /** We are trying to move away from passing the \"color\" parameter in the API */\n let colorSwatch: ReactNode = null;\n if (\"color\" in unit && features.has(UnitDetailsFeature.Color)) {\n const unit1 = unit as UnitLongFull;\n colorSwatch = h(\"div.color-swatch\", {\n style: { backgroundColor: unit1.color },\n });\n }\n\n return h(\"div.unit-details-content\", [\n thicknessOrHeightRange,\n h(LithologyList, {\n label: \"Lithology\",\n lithologies,\n features: lithologyFeatures,\n getItemHref,\n onClickItem,\n }),\n h(AgeField, { unit }, [\n h(Parenthetical, h(Duration, { value: unit.b_age - unit.t_age })),\n h(IntervalProportions, {\n unit,\n onClickItem,\n }),\n ]),\n h(EnvironmentsList, {\n environments,\n onClickItem,\n getItemHref,\n }),\n h.if(unit.strat_name_id != null)(StratNameField, {\n strat_name_id: unit.strat_name_id,\n }),\n outcropField,\n h.if(features.has(UnitDetailsFeature.AdjacentUnits))([\n h(\n DataField,\n { label: \"Above\" },\n h(UnitIDList, { units: unit.units_above, selectUnit }),\n ),\n h(\n DataField,\n { label: \"Below\" },\n h(UnitIDList, { units: unit.units_below, selectUnit }),\n ),\n ]),\n colorSwatch,\n h(ReferencesField, { refs: unit.refs, inline: true }),\n ]);\n}\n\nexport function ReferencesField({ refs, className = null, ...rest }) {\n if (refs == null || refs.length === 0) {\n return null;\n }\n return h(\n DataField,\n {\n label: \"Source\",\n className: classNames(\"refs-field\", className),\n ...rest,\n },\n h(BibInfo, { refs }),\n );\n}\n\nfunction StratNameField({\n strat_name_id,\n onClickItem,\n}: {\n strat_name_id: number;\n onClickItem?: (event: MouseEvent, item: { strat_name_id: number }) => void;\n}) {\n const stratNames = useMemo(() => [strat_name_id], [strat_name_id]);\n const data = useMacrostratData(\"strat_names\", stratNames);\n const stratNameData = data?.[0];\n let inner: any = h(Identifier, { id: strat_name_id });\n const name = stratNameData?.strat_name_long;\n if (name != null) {\n inner = h(\"span.strat-name\", name);\n }\n\n const clickable = onClickItem != null;\n\n const className = classNames({\n clickable,\n });\n\n return h(\n DataField,\n {\n label: \"Stratigraphic name\",\n },\n h(\n clickable ? \"a\" : \"span\",\n {\n className,\n onClick: (e) => onClickItem(e, { strat_name_id }),\n },\n inner,\n ),\n );\n}\n\nfunction getThickness(unit): [string, string] {\n let minThickness = unit.min_thick ?? 0;\n let maxThickness = unit.max_thick ?? unit.min_thick ?? 0;\n let _unit = \"m\";\n\n if (minThickness == 0 && maxThickness == 0) {\n return [\"Unknown\", null];\n }\n\n if (minThickness < 0.8 && maxThickness < 1.2) {\n // Convert to cm\n minThickness = minThickness * 100;\n maxThickness = maxThickness * 100;\n _unit = \"cm\";\n } else if (minThickness > 800 && maxThickness > 1200) {\n // Convert to km\n minThickness = minThickness / 1000;\n maxThickness = maxThickness / 1000;\n _unit = \"km\";\n }\n\n if (minThickness == maxThickness) {\n return [formatSignificance(minThickness), _unit];\n }\n\n return [formatRange(minThickness, maxThickness), _unit];\n}\n\nfunction ThicknessField({ unit, label = \"Thickness\" }) {\n const [value, thicknessUnit] = getThickness(unit);\n return h(DataField, {\n label,\n value,\n unit: thicknessUnit,\n });\n}\n\nfunction BibInfo({ refs }) {\n const refData = useMacrostratData(\"refs\", refs);\n\n if (refData == null || refData.length === 0) {\n return null;\n }\n\n if (refData.length == 1) {\n return h(Citation, {\n data: refData[0],\n tag: \"span\",\n key: refData[0].ref_id,\n });\n }\n\n return h(\n \"ul.refs\",\n refData.map((data, i) =>\n h(Citation, { data, tag: \"li\", key: data.ref_id }),\n ),\n );\n}\n\nfunction Citation({ data, tag = \"p\" }) {\n return h(tag, { className: \"citation\" }, [\n h(\"span.authors\", data.author),\n \", \",\n h(\"span.year\", data.pub_year),\n \", \",\n h(\"span.title\", data.ref),\n ]);\n}\n\nfunction AgeField({ unit, children }) {\n const [b_age, t_age, _unit] = getAgeRange(unit);\n\n return h(\n DataField,\n {\n label: \"Age\",\n value: formatRange(b_age, t_age),\n unit: _unit,\n },\n children,\n );\n}\n\nfunction getAgeRange(_unit) {\n let b_age = _unit.b_age;\n let t_age = _unit.t_age;\n let unit = \"Ma\";\n\n if (b_age < 0.8 && t_age < 1.2) {\n b_age *= 1000;\n t_age *= 1000;\n unit = \"ka\";\n } else if (b_age > 800 && t_age > 1200) {\n b_age /= 1000;\n t_age /= 1000;\n unit = \"Ga\";\n }\n\n return [b_age, t_age, unit];\n}\n\nfunction getAge(value) {\n /** Get the age value in Ma, ka, or Ga as appropriate */\n let unit = \"Ma\";\n if (value < 0.8) {\n unit = \"ka\";\n value *= 1000;\n if (value < 5) {\n unit = \"yr\";\n value *= 1000;\n }\n } else if (value > 1000) {\n unit = \"Ga\";\n value /= 1000;\n }\n\n return [value, unit];\n}\n\nexport function AgeLabel({\n age,\n maximumFractionDigits = 2,\n minimumFractionDigits = 0,\n className,\n}: {\n age: number;\n className?: string;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n}) {\n /** Component to display a single age value with unit conversion from\n * Ma to ka or Ga as appropriate.\n */\n const [value, unit] = getAge(age);\n\n const _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits,\n minimumFractionDigits,\n });\n\n return h(Value, { value: _value, unit, className });\n}\n\nexport function Duration({\n value,\n maximumFractionDigits = 2,\n minimumFractionDigits = 0,\n}) {\n let unit = \"Myr\";\n if (value < 0.8) {\n unit = \"kyr\";\n value *= 1000;\n if (value < 5) {\n unit = \"yr\";\n value *= 1000;\n }\n } else if (value > 1000) {\n unit = \"Gyr\";\n value /= 1000;\n }\n\n let _value = value.toLocaleString(\"en-US\", {\n maximumFractionDigits,\n minimumFractionDigits,\n });\n\n return h(Value, { value: _value, unit });\n}\n\nfunction enhanceEnvironments(\n environments: Partial<Environment>[],\n envMap: Map<number, Environment>,\n) {\n return environments.map((env) => {\n return {\n ...(envMap?.get(env.environ_id) ?? {}),\n ...env,\n };\n });\n}\n\nfunction enhanceLithologies(\n lithologies: Partial<UnitLong[\"lith\"]>,\n lithMap: Map<number, any>,\n) {\n return lithologies.map((lith) => {\n return {\n ...(lithMap?.get(lith.lith_id) ?? {}), // get lithology details\n ...lith, // override with the unit's specific lithology data\n };\n });\n}\n\nexport function Identifier({\n id,\n onClick,\n className,\n}: {\n id: number | string;\n onClick?: (id: number | string) => void;\n className?: string;\n}) {\n /** An item that displays a numeric identifier, optionally clickable */\n const tag = onClick != null ? \"a\" : \"span\";\n return h(\n tag,\n {\n onClick() {\n onClick?.(id);\n },\n className: classNames(\n \"identifier\",\n { clickable: onClick != null },\n className,\n ),\n },\n id,\n );\n}\n\nfunction UnitIDList({ units, selectUnit }) {\n const u1 = units.filter((d) => d != 0);\n\n if (u1.length === 0) {\n return h(\"span.no-units\", \"None\");\n }\n\n let tag = \"span\";\n if (selectUnit != null) {\n tag = \"a\";\n }\n\n return h(\n ItemList,\n { className: \"unit-id-list\" },\n u1.map((unitID) => {\n return h(Identifier, {\n className: \"unit-id\",\n onClick() {\n selectUnit?.(unitID);\n },\n key: unitID,\n id: unitID,\n });\n }),\n );\n}\n\nfunction IntervalProportions({ unit, onClickItem }) {\n const i0 = unit.b_int_id;\n const i1 = unit.t_int_id;\n let b_prop = unit.b_prop ?? 0;\n let t_prop = unit.t_prop ?? 1;\n\n const intervalMap = useMacrostratDefs(\"intervals\");\n const int0 = intervalMap?.get(i0) ?? {};\n\n const interval0: IntervalShort = {\n ...int0,\n id: i0,\n name: unit.b_int_name,\n };\n\n let p0: ReactNode = null;\n const int1 = intervalMap?.get(i1) ?? {};\n const p1: ReactNode = h(Proportion, { value: t_prop });\n\n if (i0 !== i1 || b_prop !== 0 || t_prop !== 1) {\n // We have a single interval with undefined proportions\n p0 = h(Proportion, { value: b_prop });\n }\n\n if (i0 === i1 && (b_prop !== 0 || t_prop !== 1)) {\n p0 = h(\"span.joint-proportion\", [p0, h(\"span.sep\", \"to\"), p1]);\n }\n\n const clickable = onClickItem != null;\n\n const handleClick = (event: MouseEvent) => {\n if (onClickItem) {\n onClickItem(event, interval0);\n }\n };\n\n return h(\"div.interval-proportions\", [\n h(IntervalTag, {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\n interval: interval0,\n prefix: p0,\n }),\n h.if(i0 != i1)(\"span.discourage-break\", [\n h(\"span.sep\", \"to\"),\n h(IntervalTag, {\n className: clickable ? \"clickable\" : \"\",\n onClick: clickable ? handleClick : undefined,\n interval: {\n ...int1,\n id: i1,\n name: unit.t_int_name,\n },\n prefix: p1,\n }),\n ]),\n ]);\n}\n\nconst formatProportion = (d) => {\n if (d == null) return null;\n return d.toFixed(1);\n};\n\nfunction Proportion({ value }) {\n let content = null;\n if (value == 0) {\n content = \"base\";\n } else if (value == 1) {\n content = \"top\";\n } else {\n content = formatProportion(value * 100) + \"%\";\n }\n\n return h(\"span.proportion\", content);\n}\n\nfunction formatRange(min, max, precision = null) {\n if (min == null || max == null) return null;\n if (min === max) {\n return min.toFixed(precision);\n }\n\n return `${formatSignificance(min, precision)}–${formatSignificance(\n max,\n precision,\n )}`;\n}\n\nfunction formatSignificance(value, precision = null) {\n // Format to preserve a reasonable number of significant figures\n // this could be done with an easier algorithm, probably:\n\n if (precision == null) {\n return value.toLocaleString();\n }\n if (precision >= 0) {\n return value.toFixed(precision);\n }\n if (precision < 0) {\n return (\n (value / Math.pow(10, -precision)).toFixed(0) + \"0\".repeat(-precision)\n );\n }\n}\n"],"names":[],"version":3,"file":"column-views.cc5244c4.js.map"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAZA,4CAAqC;AACrC,4CAAqC;AACrC,4CAAiC;AACjC,4CAA4C;AAC5C,4CAAgC;AAChC,4CAAwC;AACxC,4CAAiC;AACjC,4CAAyB;AACzB,4CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAAsC;AACtC,4CAAqC","sources":["packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container, body:global(.light-mode) .column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-emphasized-color, #000)\n --column-text-color: var(--text-emphasized-color, #000)\n\n/* We have to duplicate the dark mode styles here\n because we want to set them either if the preferred\n color scheme is dark OR if dark mode is explicitly enabled.\n If dark mode is explicitly enabled, we want to override\n the media query. */\n@media (prefers-color-scheme: dark)\n body:not(:global(.light-mode)) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n height: fit-content\n\n g.lithology-column .column-clip-frame\n stroke: none\n\n .unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\n\n .selection-overlay\n fill: var(--selection-overlay-color, red)\n fill-opacity: var(--selection-overlay-opacity, 0.5)\n\n g.lithology-column use.frame\n stroke: var(--column-stroke-color)\n stroke-width: 1.5px !important\n pointer-events: none\n\n.column-container :global .unit-label\n text-align: center\n\n.column-container :global .col-note-label\n font-size: 10px\n line-height: 9px\n border-left: none !important\n margin: 1px 0\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n padding: 1px\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .default-buttons\n width: 100%\n margin: 0 -10px\n\n.column-container :global div.section\n display: flex\n flex-direction: row\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global(.timescale)\n width: calc(calc(1.5em + 1.5px) * var(--timescale-level-count, 4))\n --timescale-level-size: 1.5em\n\n.timescale-column\n position: relative\n\n.section-main\n position: relative\n margin-bottom: -4px\n\n.section-units-container\n position: relative\n\n.main-column\n position: relative\n\n.unconformity-labels\n position: absolute\n top: 0\n left: 0\n pointer-events: none\n\n\n.unconformity\n text-align: center\n position: absolute\n top: 0px\n display: flex\n justify-content: center\n align-items: center\n font-size: 0.8em\n &.giga\n font-weight: 800\n font-size: 1em\n &.mega\n font-weight: 600\n font-weight: 700\n font-size: 0.9em\n &.large\n font-weight: 600\n &.small\n font-weight: 300\n\n\n.unconformity-text\n width: var(--column-width)\n color: var(--column-stroke-color)\n --unit-font-style: normal\n\n\n.column-title-row\n display: flex\n flex-direction: row\n gap: 1em\n justify-content: space-between\n align-items: baseline\n"],"names":[],"version":3,"file":"column-views.cdadc5c2.js.map"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAnBA,4CAA8B,CAAC,gBAAgB,CAAC;AAChD,4CAAiC,CAAC,mBAAmB,CAAC;AACtD,4CAAqC,CAAC,uBAAuB,CAAC;AAC9D,4CAAmC,CAAC,qBAAqB,CAAC;AAC1D,4CAA6C,CAAC,+BAA+B,CAAC;AAC9E,2CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAAyC,CAAC,2BAA2B,CAAC;AACtE,4CAAwC,CAAC,0BAA0B,CAAC;AACpE,4CAA6B,CAAC,eAAe,CAAC;AAC9C,4CAA+B,CAAC,iBAAiB,CAAC;AAClD,4CAAyB,CAAC,WAAW,CAAC;AACtC,4CAAwB,CAAC,UAAU,CAAC;AACpC,4CAA2B,CAAC,aAAa,CAAC;AAC1C,4CAAkC,CAAC,oBAAoB,CAAC;AACxD,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAAyC,CAAC,2BAA2B,CAAC;AACtE,4CAAgD,CAAC,kCAAkC,CAAC;AACpF,4CAAuC,CAAC,yBAAyB,CAAC;AAClE,4CAA4B,CAAC,cAAc,CAAC","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: center\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.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.d48cb0d8.js.map"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":";;;;;;;AAwCO,SAAS,0CACd,OAAqB,EACrB,QAAkC;IAElC,QAAQ,GAAG,CAAC;IACZ,MAAM,iBACJ,gBAAgB,CAAA,GAAA,yCAAgB,EAAE,WAAW,oBAC7C,gBAAgB,EAChB,GAAG,MACJ,GAAG;IAEJ,MAAM,OAA6B;QACjC,UAAU,CAAA,GAAA,qBAAa,EAAE,GAAG;0BAC5B;QACA,GAAG,IAAI;IACT;IAEA,IAAI,QAAQ,MAAM,IAAI,GACpB,OAAO;IAGT,2EAA2E;IAC3E,MAAM,SAAS,QAAQ,GAAG,CAAC,CAAC,IAAM,EAAE,KAAK,EAAE,IAAI;IAE/C,MAAM,YAAY,QAAQ,GAAG,CAAC,CAAC,IAAM,EAAE,QAAQ;IAE/C,MAAM,gBAAgB,CAAA,GAAA,yCAAiB,EAAE,QAAQ;IAEjD,MAAM,YAAE,QAAQ,eAAE,WAAW,EAAE,GAAG;IAElC,MAAM,YAA6C;QACjD,UAAU,CAAA,GAAA,qBAAa,EAAE,GAAG;qBAC5B;QACA,UAAU,SAAS,GAAG,CAAC,CAAC,IAAM,EAAE,SAAS;IAC3C;IAEA,MAAM,WAAW,SAAS,GAAG,CAAC,CAAC;QAC7B,OAAO,sCAAgB,GAAG;IAC5B;IAEA,OAAO;mBAAE;kBAAW;QAAU,UAAU,UAAU,MAAM;IAAC;AAC3D;AA4BO,SAAS,0CACd,GAA2B;IAE3B,MAAM,cAAE,UAAU,SAAE,KAAK,SAAE,KAAK,EAAE,GAAG;IACrC,+BAA+B;IAC/B,MAAM,YAAY,IAAI;IACtB,KAAK,MAAM,UAAU,WAAY;QAC/B,MAAM,SAAE,KAAK,EAAE,GAAG;QAClB,KAAK,MAAM,QAAQ,MAAO;YACxB,IAAI,KAAK,aAAa,IAAI,MAAM;YAChC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,aAAa,GACnC,UAAU,GAAG,CAAC,KAAK,aAAa,EAAE,IAAI;YAExC,UAAU,GAAG,CAAC,KAAK,aAAa,EAAE,GAAG,CAAC,OAAO,QAAQ,EAAE;QACzD;IACF;IAEA,sCAAsC;IACtC,MAAM,aAA0B,EAAE;IAClC,KAAK,MAAM,CAAC,eAAe,WAAW,IAAI,UAAW;QACnD,MAAM,QAAQ,WAAW,GAAG,CAAC,CAAC,IAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,KAAK;QAClE,MAAM,gBAAgB,MAAM,MAAM,CAAC,CAAC,IAAM,KAAK;QAC/C,MAAM,CAAC,OAAO,MAAM,GAAG,CAAA,GAAA,qBAAa,EAClC,cAAc,GAAG,CAAC,CAAC,IAAM;gBAAC,EAAE,KAAK;gBAAE,EAAE,KAAK;aAAC;QAE7C,IAAI,cAAc,MAAM,IAAI,GAAG;QAE/B,WAAW,IAAI,CAAC;mBACd;mBACA;2BACA;YACA,iBAAiB,aAAa,CAAC,EAAE,CAAC,eAAe;mBACjD;QACF;IACF;IAEA,OAAO;AACT;AAEO,SAAS,0CAAoB,GAAc;IAChD,MAAM,mBAAE,eAAe,iBAAE,aAAa,SAAE,KAAK,EAAE,GAAG;IAClD,MAAM,QAAwB,EAAE;IAChC,IAAI,aAA2B;IAC/B,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;QACrC,MAAM,OAAO,KAAK,CAAC,EAAE;QACrB,IAAI,QAAQ,MAAM;YAChB,IAAI,cAAc,MAAM;gBACtB,MAAM,IAAI,CAAC;gBACX,aAAa;YACf;YACA;QACF;QACA,IAAI,cAAc,MAChB,aAAa;YACX,UAAU;YACV,QAAQ;2BACR;6BACA;YACA,OAAO,KAAK,KAAK;YACjB,OAAO,KAAK,KAAK;YACjB,OAAO,EAAE;QACX;aAEA,WAAW,MAAM,GAAG;QAEtB,WAAW,KAAK,CAAC,IAAI,CAAC;IACxB;IACA,OAAO;AACT;AAEA,SAAS,sCACP,GAAsB,EACtB,SAAmB;IAEnB,+BAA+B,GAC/B,MAAM,SAAE,KAAK,SAAE,KAAK,SAAE,KAAK,EAAE,GAAG;IAEhC,OAAO;QACL,YAAY,UAAU,GAAG,CAAC,CAAC;YACzB,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC,OAAS,KAAK,MAAM,IAAI;YACjD,GAAG,IAAI,CAAC,CAAC,GAAG,IAAM,EAAE,KAAK,GAAG,EAAE,KAAK;YACnC,OAAO;gBACL,UAAU;gBACV,+CAA+C;gBAC/C,OAAO,CAAA,GAAA,sBAAc,EACnB;oBACE,GAAG,GAAG;oBACN,OAAO;gBACT,GACA,CAAA,GAAA,qBAAa,EAAE,GAAG;YAEtB;QACF;QACA,gBAAgB,IAAI,SAAS,CAAC,UAAU;eACxC;eACA;IACF;AACF;AAEO,SAAS,0CACd,GAAwB;IAExB,OAAO;QACL,QAAQ,IAAI,UAAU,CAAC,MAAM;QAC7B,UAAU,IAAI,UAAU,CAAC,QAAQ;QACjC,YAAY,IAAI,UAAU,CAAC,UAAU;IACvC;AACF","sources":["packages/column-views/src/correlation-chart/prepare-data.ts"],"sourcesContent":["import { CompositeStratigraphicScaleInfo } from \"../age-axis\";\nimport { PackageLayoutData } from \"../prepare-units/composite-scale\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { type ColumnGeoJSONRecord, UnitLong } from \"@macrostrat/api-types\";\nimport {\n MergeSectionsMode,\n PrepareColumnOptions,\n prepareColumnUnits,\n preprocessUnits,\n} from \"../prepare-units\";\nimport { mergeAgeRanges } from \"@macrostrat/stratigraphy-utils\";\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\ninterface ColumnData {\n columnID: number;\n units: UnitLong[];\n}\n\nexport interface CorrelationChartSettings\n extends Omit<PrepareColumnOptions, \"axisType\"> {\n targetUnitHeight?: number;\n}\n\nexport interface CorrelationChartData {\n packages: MultiColumnPackageData[];\n scaleInfo: CompositeStratigraphicScaleInfo;\n nColumns: number;\n}\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\nexport function buildCorrelationChartData(\n columns: ColumnData[],\n settings: CorrelationChartSettings,\n): CorrelationChartData {\n console.log(settings);\n const {\n mergeSections = MergeSectionsMode.OVERLAPPING,\n targetUnitHeight,\n ...rest\n } = settings;\n\n const opts: PrepareColumnOptions = {\n axisType: ColumnAxisType.AGE,\n targetUnitHeight,\n ...rest,\n };\n\n if (columns.length == 0) {\n return null;\n }\n\n // Flatten the units array to pretend that all units are in the same column\n const _units = columns.map((d) => d.units).flat();\n\n const columnIDs = columns.map((d) => d.columnID);\n\n const preparedUnits = prepareColumnUnits(_units, opts);\n\n const { sections, totalHeight } = preparedUnits;\n\n const scaleInfo: CompositeStratigraphicScaleInfo = {\n axisType: ColumnAxisType.AGE,\n totalHeight,\n packages: sections.map((d) => d.scaleInfo),\n };\n\n const packages = sections.map((d) => {\n return separateColumns(d, columnIDs);\n });\n\n return { scaleInfo, packages, nColumns: columnIDs.length };\n}\n\ninterface UnitGroup {\n b_age: number;\n t_age: number;\n strat_name_id: number;\n strat_name_long: string;\n units: (UnitLong | null)[];\n}\n\nexport interface UnitGroupBox extends UnitGroup {\n units: UnitLong[];\n startCol: number;\n endCol: number;\n}\n\ninterface ColumnExt {\n columnID: number;\n units: UnitLong[];\n}\n\ninterface MultiColumnPackageData {\n columnData: ColumnExt[];\n bestPixelScale: number;\n b_age: number;\n t_age: number;\n}\n\nexport function findLaterallyExtensiveUnits(\n pkg: MultiColumnPackageData,\n): UnitGroup[] {\n const { columnData, b_age, t_age } = pkg;\n // Group units by strat_name_id\n const unitIndex = new Map<number, Map<number, UnitLong>>();\n for (const column of columnData) {\n const { units } = column;\n for (const unit of units) {\n if (unit.strat_name_id == null) continue;\n if (!unitIndex.has(unit.strat_name_id)) {\n unitIndex.set(unit.strat_name_id, new Map());\n }\n unitIndex.get(unit.strat_name_id).set(column.columnID, unit);\n }\n }\n\n // Prepare grouped units for rendering\n const unitGroups: UnitGroup[] = [];\n for (const [strat_name_id, unitIndex0] of unitIndex) {\n const units = columnData.map((d) => unitIndex0.get(d.columnID) ?? null);\n const filteredUnits = units.filter((d) => d != null);\n const [t_age, b_age] = mergeAgeRanges(\n filteredUnits.map((d) => [d.t_age, d.b_age]),\n );\n if (filteredUnits.length <= 1) continue;\n\n unitGroups.push({\n b_age,\n t_age,\n strat_name_id,\n strat_name_long: filteredUnits[0].strat_name_long,\n units,\n });\n }\n\n return unitGroups;\n}\n\nexport function splitStratIntoBoxes(pkg: UnitGroup): UnitGroupBox[] {\n const { strat_name_long, strat_name_id, units } = pkg;\n const boxes: UnitGroupBox[] = [];\n let currentBox: UnitGroupBox = null;\n for (let i = 0; i < units.length; i++) {\n const unit = units[i];\n if (unit == null) {\n if (currentBox != null) {\n boxes.push(currentBox);\n currentBox = null;\n }\n continue;\n }\n if (currentBox == null) {\n currentBox = {\n startCol: i,\n endCol: i,\n strat_name_id,\n strat_name_long,\n t_age: unit.t_age,\n b_age: unit.b_age,\n units: [],\n };\n } else {\n currentBox.endCol = i;\n }\n currentBox.units.push(unit);\n }\n return boxes;\n}\n\nfunction separateColumns(\n pkg: PackageLayoutData,\n columnIDs: number[],\n): MultiColumnPackageData {\n /** Separate columns by col_id */\n const { units, t_age, b_age } = pkg;\n\n return {\n columnData: columnIDs.map((d) => {\n const u1 = units.filter((unit) => unit.col_id == d);\n u1.sort((a, b) => a.t_age - b.t_age);\n return {\n columnID: d,\n // Ensure that the units correctly show overlap\n units: preprocessUnits(\n {\n ...pkg,\n units: u1,\n },\n ColumnAxisType.AGE,\n ),\n };\n }),\n bestPixelScale: pkg.scaleInfo.pixelScale,\n t_age,\n b_age,\n };\n}\n\nexport function columnGeoJSONRecordToColumnIdentifier(\n col: ColumnGeoJSONRecord,\n): ColumnIdentifier {\n return {\n col_id: col.properties.col_id,\n col_name: col.properties.col_name,\n project_id: col.properties.project_id,\n };\n}\n"],"names":[],"version":3,"file":"column-views.f08929e2.js.map"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/column-views/src/units/boxes.ts"],"sourcesContent":["import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n zigZagBoxPath,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget } from \"./selection\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { useLithologies } from \"../data-provider\";\nimport { getMixedUnitColor } from \"./colors\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions,\n Clickable,\n Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n //const key = `unit-${d.unit_id}`;\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":[],"version":3,"file":"column-views.f20eb583.js.map"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./column-views.8cfed88b.js";import"./column-views.78d3f3c5.js";import"./column-views.a501cea0.js";import"./column-views.58d2f993.js";import"./column-views.a4e6d4ad.js";import e from"@macrostrat/hyper";import{useMemo as t,useCallback as n}from"react";function a(e,t,n,a){Object.defineProperty(e,t,{get:n,set:a,enumerable:!0,configurable:!0})}var i=globalThis,l={},r={},o=i.parcelRequirea149;null==o&&((o=function(e){if(e in l)return l[e].exports;if(e in r){var t=r[e];delete r[e];var n={id:e,exports:{}};return l[e]=n,t.call(n.exports,n,n.exports),n.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,t){r[e]=t},i.parcelRequirea149=o),o.register;var u={};a(u,"TruncatedList",()=>_),a(u,"PBDBFossilsColumn",()=>x),a(u,"BaseMeasurementsColumn",()=>v);var s=o("iWhRv"),d=o("wtIgl"),c=o("dx7no"),f=o("6KYbn"),m=o("jDygK");let p=e.styled(m&&m.__esModule?m.default:m);function g(e){let{note:t,spacing:n}=e,{data:a,unit:i}=t;return p(_,{data:a,className:"fossil-collections",itemRenderer:h})}function _({data:e,className:t,maxItems:n=5,itemRenderer:a=e=>p("span",e.data)}){let i=null,l=e;if(e.length>n){let t=e.length-n;l=e.slice(0,n),i=p("li.too-many",`and ${t} more`)}return p("ul.truncated-list",{className:t},[l.map((e,t)=>p("li.element",{key:t},p(a,{data:e}))),i])}function h({data:e}){return p("a.link-id",{href:`https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${e.cltn_id}`},e.cltn_name)}function x({columnID:e,color:n="magenta"}){let a=(0,c.useFossilData)({col_id:e}),{axisType:i,units:l}=(0,d.useMacrostratColumnData)(),r=t(()=>{if(null==a||null==l)return[];let e=Array.from(a.values()).map(e=>{let t;return{data:e,unit:l.find((t=e[0],e=>e.unit_id==t.unit_id))}}).filter(e=>null!=e.unit);return e.sort((e,t)=>l.indexOf(e.unit)-l.indexOf(t.unit)),e.map(e=>{let{unit:t,data:n}=e,a=(0,s.getUnitHeightRange)(t,i);return{top_height:a[1],height:a[0],data:n,unit:t,id:t.unit_id}})},[a,l]),o=t(()=>e=>p(g,{color:n,...e}),[500,n]);return null==a||null==l?null:p("div.dz-spectra",p(f.ColumnNotes,{width:500,paddingLeft:40,notes:r,noteComponent:o}))}function v({data:e,noteComponent:a,width:i=500,paddingLeft:l=40,className:r,getUnitID:o=e=>e.unit_id}){let{axisType:u,units:c}=(0,d.useMacrostratColumnData)(),m=n(e=>t=>o(t)===e.unit_id,[o]),g=t(()=>{if(null==e||null==c)return[];let t=Array.from(e.values()).map(e=>({data:e,unit:c.find(m(e))})).filter(e=>null!=e.unit);return t.sort((e,t)=>c.indexOf(e.unit)-c.indexOf(t.unit)),t.map(e=>{let{unit:t,data:n}=e,a=(0,s.getUnitHeightRange)(t,u);return{top_height:a[1],height:a[0],data:n,unit:t,id:t.unit_id}})},[e,c,m]);return null==e||null==c?null:p("div",{className:r},p(f.ColumnNotes,{width:i,paddingLeft:l,notes:g,noteComponent:a}))}export{_ as TruncatedList,x as PBDBFossilsColumn,v as BaseMeasurementsColumn};
|
|
2
|
-
//# sourceMappingURL=column-views.085f4a51.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,W,C,C,e,C,K,O,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,C,E,E,E,gB,I,G,E,E,oB,I,G,E,E,yB,I,G,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCWA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAgBvB,SAAS,EAAW,CAAsB,EACxC,GAAM,CAAA,KAAE,CAAI,CAAA,QAAE,CAAO,CAAE,CAAG,EACpB,CAAA,KAAE,CAAI,CAAA,KAAE,CAAI,CAAE,CAAG,EAEvB,OAAO,EAAE,EAAe,CACtB,KAAA,EACA,UAAW,qBACX,aAAc,CAChB,EACF,CASO,SAAS,EAAc,CAAA,KAC5B,CAAI,CAAA,UACJ,CAAS,CAAA,SACT,EAAW,CAAA,CAAA,aACX,EAAe,AAAC,GAAM,EAAE,OAAQ,EAAE,IAAI,CAAA,CACnB,EACnB,IAAI,EAAU,KACV,EAAK,EACT,GAAI,EAAK,MAAM,CAAG,EAAU,CAC1B,IAAM,EAAI,EAAK,MAAM,CAAG,EACxB,EAAK,EAAK,KAAK,CAAC,EAAG,GACnB,EAAU,EAAE,cAAe,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAC5C,CAEA,OAAO,EAAE,oBAAqB,CAAE,UAAA,CAAU,EAAG,CAC3C,EAAG,GAAG,CAAC,CAAC,EAAG,IACF,EAAE,aAAc,CAAE,IAAK,CAAE,EAAG,EAAE,EAAc,CAAE,KAAM,CAAE,KAE/D,EACD,CACH,CAEA,SAAS,EAAmB,CAAA,KAAE,CAAI,CAA4B,EAC5D,OAAO,EACL,YACA,CACE,KAAM,CAAC,mEAAmE,EAAE,EAAK,O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","sources":["<anon>","packages/column-views/src/facets/fossils/index.ts"],"sourcesContent":["import \"./column-views.8cfed88b.js\";\nimport \"./column-views.78d3f3c5.js\";\nimport \"./column-views.a501cea0.js\";\nimport \"./column-views.58d2f993.js\";\nimport \"./column-views.a4e6d4ad.js\";\nimport $2jHE4$macrostrathyper from \"@macrostrat/hyper\";\nimport {useMemo as $2jHE4$useMemo, useCallback as $2jHE4$useCallback} from \"react\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $ea2f112131e22f14$exports = {};\n\n$parcel$export($ea2f112131e22f14$exports, \"TruncatedList\", () => $ea2f112131e22f14$export$653e47a7a0da0f0d);\n$parcel$export($ea2f112131e22f14$exports, \"PBDBFossilsColumn\", () => $ea2f112131e22f14$export$554267114407ef68);\n$parcel$export($ea2f112131e22f14$exports, \"BaseMeasurementsColumn\", () => $ea2f112131e22f14$export$ce5c4f2fdf4e644d);\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $wtIgl = parcelRequire(\"wtIgl\");\n\n\nvar $dx7no = parcelRequire(\"dx7no\");\n\nvar $6KYbn = parcelRequire(\"6KYbn\");\n\n\nvar $jDygK = parcelRequire(\"jDygK\");\nconst $ea2f112131e22f14$var$h = (0, $2jHE4$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($jDygK))));\nfunction $ea2f112131e22f14$var$FossilInfo(props) {\n const { note: note, spacing: spacing } = props;\n const { data: data, unit: unit } = note;\n return $ea2f112131e22f14$var$h($ea2f112131e22f14$export$653e47a7a0da0f0d, {\n data: data,\n className: \"fossil-collections\",\n itemRenderer: $ea2f112131e22f14$var$PBDBCollectionLink\n });\n}\nfunction $ea2f112131e22f14$export$653e47a7a0da0f0d({ data: data, className: className, maxItems: maxItems = 5, itemRenderer: itemRenderer = (p)=>$ea2f112131e22f14$var$h(\"span\", p.data) }) {\n let tooMany = null;\n let d1 = data;\n if (data.length > maxItems) {\n const n = data.length - maxItems;\n d1 = data.slice(0, maxItems);\n tooMany = $ea2f112131e22f14$var$h(\"li.too-many\", `and ${n} more`);\n }\n return $ea2f112131e22f14$var$h(\"ul.truncated-list\", {\n className: className\n }, [\n d1.map((d, i)=>{\n return $ea2f112131e22f14$var$h(\"li.element\", {\n key: i\n }, $ea2f112131e22f14$var$h(itemRenderer, {\n data: d\n }));\n }),\n tooMany\n ]);\n}\nfunction $ea2f112131e22f14$var$PBDBCollectionLink({ data: data }) {\n return $ea2f112131e22f14$var$h(\"a.link-id\", {\n href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${data.cltn_id}`\n }, data.cltn_name);\n}\nconst $ea2f112131e22f14$var$matchingUnit = (dz)=>(d)=>d.unit_id == dz.unit_id;\nfunction $ea2f112131e22f14$export$554267114407ef68({ columnID: columnID, color: color = \"magenta\" }) {\n const data = (0, $dx7no.useFossilData)({\n col_id: columnID\n });\n const { axisType: axisType, units: units } = (0, $wtIgl.useMacrostratColumnData)();\n const notes = (0, $2jHE4$useMemo)(()=>{\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values()).map((d)=>{\n return {\n data: d,\n unit: units.find($ea2f112131e22f14$var$matchingUnit(d[0]))\n };\n }).filter((d)=>d.unit != null);\n unitRefData.sort((a, b)=>{\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n return unitRefData.map((d)=>{\n const { unit: unit, data: data } = d;\n const heightRange = (0, $iWhRv.getUnitHeightRange)(unit, axisType);\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data: data,\n unit: unit,\n id: unit.unit_id\n };\n });\n }, [\n data,\n units\n ]);\n const width = 500;\n const paddingLeft = 40;\n const noteComponent = (0, $2jHE4$useMemo)(()=>{\n return (props)=>{\n return $ea2f112131e22f14$var$h($ea2f112131e22f14$var$FossilInfo, {\n color: color,\n ...props\n });\n };\n }, [\n width,\n color\n ]);\n if (data == null || units == null) return null;\n return $ea2f112131e22f14$var$h(\"div.dz-spectra\", $ea2f112131e22f14$var$h((0, $6KYbn.ColumnNotes), {\n width: width,\n paddingLeft: paddingLeft,\n notes: notes,\n noteComponent: noteComponent\n }));\n}\nfunction $ea2f112131e22f14$export$ce5c4f2fdf4e644d({ data: data, noteComponent: noteComponent, width: width = 500, paddingLeft: paddingLeft = 40, className: className, getUnitID: getUnitID = (d)=>d.unit_id }) {\n const { axisType: axisType, units: units } = (0, $wtIgl.useMacrostratColumnData)();\n const matchingUnit = (0, $2jHE4$useCallback)((dz)=>{\n return (d)=>{\n return getUnitID(d) === dz.unit_id;\n };\n }, [\n getUnitID\n ]);\n const notes = (0, $2jHE4$useMemo)(()=>{\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values()).map((d)=>{\n return {\n data: d,\n unit: units.find(matchingUnit(d))\n };\n }).filter((d)=>d.unit != null);\n unitRefData.sort((a, b)=>{\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n return unitRefData.map((d)=>{\n const { unit: unit, data: data } = d;\n const heightRange = (0, $iWhRv.getUnitHeightRange)(unit, axisType);\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data: data,\n unit: unit,\n id: unit.unit_id\n };\n });\n }, [\n data,\n units,\n matchingUnit\n ]);\n if (data == null || units == null) return null;\n return $ea2f112131e22f14$var$h(\"div\", {\n className: className\n }, $ea2f112131e22f14$var$h((0, $6KYbn.ColumnNotes), {\n width: width,\n paddingLeft: paddingLeft,\n notes: notes,\n noteComponent: noteComponent\n }));\n}\n\n\nexport {$ea2f112131e22f14$export$653e47a7a0da0f0d as TruncatedList, $ea2f112131e22f14$export$554267114407ef68 as PBDBFossilsColumn, $ea2f112131e22f14$export$ce5c4f2fdf4e644d as BaseMeasurementsColumn};\n//# sourceMappingURL=column-views.085f4a51.js.map\n","import { getUnitHeightRange } from \"../../prepare-units\";\nimport { useMacrostratColumnData } from \"../../data-provider\";\nimport hyper from \"@macrostrat/hyper\";\nimport { PBDBCollection, useFossilData } from \"./provider\";\nimport { useMacrostratUnits } from \"../../data-provider\";\nimport { ColumnNotes } from \"../../notes\";\nimport { useMemo } from \"react\";\nimport type { IUnit } from \"../../units\";\nimport styles from \"./index.module.sass\";\nimport { useCallback } from \"react\";\n\nconst h = hyper.styled(styles);\n\ninterface FossilItemProps {\n note: {\n data: PBDBCollection[];\n unit?: IUnit;\n };\n spacing?: {\n below?: number;\n above?: number;\n };\n width?: number;\n height?: number;\n color?: string;\n}\n\nfunction FossilInfo(props: FossilItemProps) {\n const { note, spacing } = props;\n const { data, unit } = note;\n\n return h(TruncatedList, {\n data,\n className: \"fossil-collections\",\n itemRenderer: PBDBCollectionLink,\n });\n}\n\ninterface TruncatedListProps {\n data: any[];\n className?: string;\n maxItems?: number;\n itemRenderer?: (props: { data: any }) => any;\n}\n\nexport function TruncatedList({\n data,\n className,\n maxItems = 5,\n itemRenderer = (p) => h(\"span\", p.data),\n}: TruncatedListProps) {\n let tooMany = null;\n let d1 = data;\n if (data.length > maxItems) {\n const n = data.length - maxItems;\n d1 = data.slice(0, maxItems);\n tooMany = h(\"li.too-many\", `and ${n} more`);\n }\n\n return h(\"ul.truncated-list\", { className }, [\n d1.map((d, i) => {\n return h(\"li.element\", { key: i }, h(itemRenderer, { data: d }));\n }),\n tooMany,\n ]);\n}\n\nfunction PBDBCollectionLink({ data }: { data: PBDBCollection }) {\n return h(\n \"a.link-id\",\n {\n href: `https://paleobiodb.org/classic/basicCollectionSearch?collection_no=${data.cltn_id}`,\n },\n data.cltn_name,\n );\n}\n\nconst matchingUnit = (dz) => (d) => d.unit_id == dz.unit_id;\n\nexport function PBDBFossilsColumn({ columnID, color = \"magenta\" }) {\n const data = useFossilData({ col_id: columnID });\n\n const { axisType, units } = useMacrostratColumnData();\n\n const notes: any[] = useMemo(() => {\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values())\n .map((d) => {\n return {\n data: d,\n unit: units.find(matchingUnit(d[0])),\n };\n })\n .filter((d) => d.unit != null);\n\n unitRefData.sort((a, b) => {\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n\n return unitRefData.map((d) => {\n const { unit, data } = d;\n const heightRange = getUnitHeightRange(unit, axisType);\n\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data,\n unit,\n id: unit.unit_id,\n };\n });\n }, [data, units]);\n\n const width = 500;\n const paddingLeft = 40;\n\n const noteComponent = useMemo(() => {\n return (props) => {\n return h(FossilInfo, {\n color,\n ...props,\n });\n };\n }, [width, color]);\n\n if (data == null || units == null) return null;\n\n return h(\n \"div.dz-spectra\",\n h(ColumnNotes, {\n width,\n paddingLeft,\n notes,\n noteComponent,\n }),\n );\n}\n\nexport interface BaseMeasurementsColumnProps<T> {\n data: T[];\n noteComponent?: any;\n width?: number;\n paddingLeft?: number;\n className?: string;\n getUnitID?: (d: T) => number | string;\n}\n\nexport function BaseMeasurementsColumn({\n data,\n noteComponent,\n width = 500,\n paddingLeft = 40,\n className,\n getUnitID = (d) => d.unit_id,\n}: BaseMeasurementsColumnProps<any>) {\n const { axisType, units } = useMacrostratColumnData();\n\n const matchingUnit = useCallback(\n (dz) => {\n return (d) => {\n return getUnitID(d) === dz.unit_id;\n };\n },\n [getUnitID],\n );\n\n const notes: any[] = useMemo(() => {\n if (data == null || units == null) return [];\n let unitRefData = Array.from(data.values())\n .map((d) => {\n return {\n data: d,\n unit: units.find(matchingUnit(d)),\n };\n })\n .filter((d) => d.unit != null);\n\n unitRefData.sort((a, b) => {\n const v1 = units.indexOf(a.unit);\n const v2 = units.indexOf(b.unit);\n return v1 - v2;\n });\n\n return unitRefData.map((d) => {\n const { unit, data } = d;\n const heightRange = getUnitHeightRange(unit, axisType);\n\n return {\n top_height: heightRange[1],\n height: heightRange[0],\n data,\n unit,\n id: unit.unit_id,\n };\n });\n }, [data, units, matchingUnit]);\n\n if (data == null || units == null) return null;\n\n return h(\n \"div\",\n { className },\n h(ColumnNotes, {\n width,\n paddingLeft,\n notes,\n noteComponent,\n }),\n );\n}\n"],"names":["$2jHE4$macrostrathyper","useMemo","$2jHE4$useMemo","useCallback","$2jHE4$useCallback","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$ea2f112131e22f14$exports","$ea2f112131e22f14$export$653e47a7a0da0f0d","$ea2f112131e22f14$export$554267114407ef68","$ea2f112131e22f14$export$ce5c4f2fdf4e644d","$iWhRv","$wtIgl","$dx7no","$6KYbn","$jDygK","$ea2f112131e22f14$var$h","styled","a","__esModule","default","$ea2f112131e22f14$var$FossilInfo","props","note","spacing","data","unit","className","itemRenderer","$ea2f112131e22f14$var$PBDBCollectionLink","maxItems","p","tooMany","d1","length","slice","map","d","i","key","href","cltn_id","cltn_name","columnID","color","useFossilData","col_id","axisType","units","useMacrostratColumnData","notes","unitRefData","Array","from","values","dz","find","unit_id","filter","sort","b","v1","indexOf","heightRange","getUnitHeightRange","top_height","height","noteComponent","ColumnNotes","width","paddingLeft","getUnitID","matchingUnit","TruncatedList","PBDBFossilsColumn","BaseMeasurementsColumn"],"version":3,"file":"column-views.085f4a51.js.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./column-views.91043465.js";import"./column-views.3eeac38d.js";import"./column-views.dfb2361a.js";import"./column-views.fea32686.js";import"./column-views.a7256aa7.js";import"./column-views.1a0b56fc.js";import"./column-views.4ca62e5d.js";import"./column-views.2d957a97.js";import"./column-views.758b9bc1.js";import e from"@macrostrat/hyper";import{useMemo as n,useRef as t}from"react";import{useInDarkMode as o}from"@macrostrat/ui-components";import i from"classnames";import{SVG as r,ColumnProvider as a,ColumnAxisType as l}from"@macrostrat/column-components";var s=globalThis,c={},m={},u=s.parcelRequirea149;null==u&&((u=function(e){if(e in c)return c[e].exports;if(e in m){var n=m[e];delete m[e];var t={id:e,exports:{}};return c[e]=t,n.call(t.exports,t,t.exports),t.exports}var o=Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}).register=function(e,n){m[e]=n},s.parcelRequirea149=u),u.register,Object.defineProperty({},"CorrelationChart",{get:()=>_,set:void 0,enumerable:!0,configurable:!0});var f=u("7tWYE"),p=u("a3mb1"),d=u("2KV3o"),b=u("cf1sk"),g=u("7exMg"),C=u("8ldOM"),S=u("4hG2H"),h=u("1n4Pb"),v=u("dMbCm");let H=e.styled(b&&b.__esModule?b.default:b);function _({data:e,columnSpacing:a=0,columnWidth:l=130,unconformityLabels:s=!0,showUnitPopover:c=!0,selectedUnit:m,onUnitSelected:u,unitComponent:f,...b}){let g={targetUnitHeight:10,unconformityHeight:60,minSectionHeight:60,collapseSmallUnconformities:!0},S=n(()=>e?(0,C.buildCorrelationChartData)(e,{...g,...b}):null,[e,...Object.values(b)]),h=t(null),_=n(()=>e?.map(e=>e.units).flat()??[],[e]),U=i({"dark-mode":o()});if(null==S)return null;let{packages:A,scaleInfo:E,nColumns:R}=S;return H(v.ColumnContainer,{className:"correlation-diagram"},H(p.UnitSelectionProvider,{columnRef:h,selectedUnit:m,onUnitSelected:u,units:_},H(w,[H(y,{key:"timescale",scaleInfo:E,unconformityLabels:s}),H("div.main-chart",{ref:h},[H(r,{className:U,innerWidth:(l+a)*R,height:E.totalHeight,paddingH:4},A.map((e,n)=>{let{offset:t,domain:o,pixelScale:i,key:r}=E.packages[n];return H(x,{columnData:e.columnData,key:r,columnWidth:l,columnSpacing:a,offset:t,domain:o,pixelScale:i,unitComponent:f})})),H.if(c)(d.UnitSelectionPopover),H(p.UnitKeyboardNavigation,{units:_})])])))}function x({columnData:e,columnSpacing:n,columnWidth:t,unitComponent:o,offset:i,domain:r,pixelScale:a}){return H("g.package",{transform:`translate(0 ${i})`},[H("g.column-units",[e.map((e,i)=>H(U,{units:e.units,unitComponent:o,width:t,key:i,domain:r,pixelScale:a,offsetLeft:i*(t+n)}))])])}function U(e){let{units:n,width:t=150,offsetLeft:o,domain:i,pixelScale:r,unitComponent:s=f.ColoredUnitComponent}=e;return 0==n.length?null:H("g.section",{transform:`translate(${o} 0)`},H(a,{divisions:n,range:i,pixelsPerMeter:r,axisType:l.AGE},H(h.UnitBoxes,{unitComponent:s,unitComponentProps:{nColumns:2,width:t,showLabel:!1}})))}function w({children:e}){let n=(0,p.useUnitSelectionStore)(e=>e.setSelectedUnit);return H("div.correlation-chart-inner",{onClick(){n(null)}},e)}function y(e){let{scaleInfo:n,unconformityLabels:t=!0}=e;return H("div.column-container.age-axis-container",[H(S.CompositeAgeAxisCore,{...n}),H(g.CompositeTimescaleCore,{...n,unconformityLabels:t})])}export{_ as CorrelationChart};
|
|
2
|
-
//# sourceMappingURL=column-views.0dfc7ef7.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,M,mB,A,Q,W,C,C,U,C,K,O,A,Q,iB,C,K,2B,A,Q,M,Y,A,Q,O,C,C,kB,C,C,kB,C,K,+B,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,O,c,C,C,E,mB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,SCAA,EAAA,EAAA,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SAoCA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAchB,SAAS,EAAiB,CAAA,KAC/B,CAAI,CAAA,cACJ,EAAgB,CAAA,CAAA,YAChB,EAAc,GAAA,CAAA,mBACd,EAAqB,CAAA,CAAA,CAAA,gBACrB,EAAkB,CAAA,CAAA,CAAA,aAClB,CAAY,CAAA,eACZ,CAAc,CAAA,cACd,CAAa,CACb,GAAG,EACmB,EACtB,IAAM,EAAoB,CACxB,iBAAkB,GAClB,mBAAoB,GACpB,iBAAkB,GAClB,4BAA6B,CAAA,CAC/B,EAEM,EAAY,AAAA,EAAQ,IACxB,AAAK,EACE,AAAA,CAAA,EAAA,EAAA,yBAAwB,AAAxB,EAA0B,EAAM,CACrC,GAAG,CAAiB,CACpB,GAAG,CAAU,AACf,GAJkB,KAKjB,CAAC,KAAS,OAAO,MAAM,CAAC,GAAY,EAEjC,EAAY,AAAA,EAAO,MAGnB,EAAQ,AAAA,EAAQ,IACb,GAAM,IAAI,AAAC,GAAO,EAAG,KAAK,EAAE,QAAU,EAAE,CAC9C,CAAC,EAAK,EAIH,EAAY,AAAA,EAAW,CAC3B,YAHiB,AAAA,GAInB,GAEA,GAAI,AAAa,MAAb,EACF,OAAO,KAGT,GAAM,CAAA,SAAE,CAAQ,CAAA,UAAE,CAAS,CAAA,SAAE,CAAQ,CAAE,CAAG,EAI1C,OAAO,EACL,EAAA,eAAc,CACd,CAAE,UAAW,qBAAsB,EACnC,EACE,EAAA,qBAAoB,CACpB,CAAE,UAAA,EAAW,aAAA,EAAc,eAAA,EAAgB,MAAA,CAAM,EACjD,EAAE,EAAW,CACX,EAAE,EAAiB,CACjB,IAAK,YACL,UAAA,EACA,mBAAA,CACF,GACA,EAAE,iBAAkB,CAAE,IAAK,CAAU,EAAG,CACtC,EACE,EACA,CACE,UAAA,EACA,WAnBM,AAAC,CAAA,EAAc,CAAA,EAAiB,EAoBtC,OAAQ,EAAU,WAAW,CAC7B,SAAU,CACZ,EACA,EAAS,GAAG,CAAC,CAAC,EAAK,KACjB,GAAM,CAAA,OAAE,CAAM,CAAA,OAAE,CAAM,CAAA,WAAE,CAAU,CAAA,IAAE,CAAG,CAAE,CAAG,EAAU,QAAQ,CAAC,EAAE,CACjE,OAAO,EAAE,EAAS,CAChB,WAAY,EAAI,UAAU,CAC1B,IAAA,EACA,YAAA,EACA,cAAA,EACA,OAAA,EACA,OAAA,EACA,WAAA,EACA,cAAA,CACF,EACF,IAEF,EAAE,EAAE,CAAC,GAAiB,EAAA,oBAAmB,EAEzC,EAAE,EAAA,sBAAqB,CAAG,CAAE,MAAA,CAAM,GACnC,EACF,GAGP,CAEA,SAAS,EAAQ,CAAA,WACf,CAAU,CAAA,cACV,CAAa,CAAA,YACb,CAAW,CAAA,cACX,CAAa,CAAA,OACb,CAAM,CAAA,OACN,CAAM,CAAA,WACN,CAAU,CACX,EACC,OAAO,EAAE,YAAa,CAAE,UAAW,CAAC,YAAY,EAAE,EAAO,CAAC,CAAC,AAAC,EAAG,CAG7D,EAAE,iBAAkB,CAClB,EAAW,GAAG,CAAC,CAAC,EAAM,IACb,EAAE,EAAQ,CACf,MAAO,EAAK,KAAK,CACjB,cAAA,EACA,MAAO,EACP,IAAK,EACL,OAAA,EACA,WAAA,EACA,WAAY,EAAK,CAAA,EAAc,CAAA,CACjC,IAEH,EACF,CACH,CAgBA,SAAS,EAAO,CAAkB,EAChC,GAAM,CAAA,MACJ,CAAK,CAAA,MACL,EAAQ,GAAA,CAAA,WACR,CAAU,CAAA,OACV,CAAM,CAAA,WACN,CAAU,CAAA,cACV,EAAgB,EAAA,oBAAmB,AAAA,CACpC,CAAG,SAIJ,AAAI,AAAgB,GAAhB,EAAM,MAAM,CACP,KAGF,EACL,YACA,CACE,UAAW,CAAC,UAAU,EAAE,EAAW,GAAG,CAAC,AACzC,EACA,EACE,EACA,CAEE,UAAW,EACX,MAAO,EACP,eAAgB,EAChB,SAAU,AAAA,EAAe,GAAG,AAC9B,EACA,EAAE,EAAA,SAAQ,CAAG,CACX,cAAA,EACA,mBAAoB,CAClB,SAAU,EACV,MAxBY,EAyBZ,UAAW,CAAA,CACb,CACF,IAGN,CAkEA,SAAS,EAAU,CAAA,SAAE,CAAQ,CAAE,EAC7B,IAAM,EAAkB,AAAA,CAAA,EAAA,EAAA,qBAAoB,AAApB,EACtB,AAAC,GAAU,EAAM,eAAe,EAGlC,OAAO,EACL,8BACA,CACE,UACE,EAAgB,KAClB,CACF,EACA,EAEJ,CAQA,SAAS,EAAgB,CAA2B,EAClD,GAAM,CAAA,UAAE,CAAS,CAAA,mBAAE,EAAqB,CAAA,CAAA,CAAM,CAAG,EACjD,OAAO,EAAE,0CAA2C,CAClD,EAAE,EAAA,oBAAmB,CAAG,CAAE,GAAG,CAAS,AAAC,GACvC,EAAE,EAAA,sBAAqB,CAAG,CAAE,GAAG,CAAS,CAAE,mBAAA,CAAmB,GAC9D,CACH,Q,K,gB","sources":["<anon>","packages/column-views/src/correlation-chart/main.ts"],"sourcesContent":["import \"./column-views.91043465.js\";\nimport \"./column-views.3eeac38d.js\";\nimport \"./column-views.dfb2361a.js\";\nimport \"./column-views.fea32686.js\";\nimport \"./column-views.a7256aa7.js\";\nimport \"./column-views.1a0b56fc.js\";\nimport \"./column-views.4ca62e5d.js\";\nimport \"./column-views.2d957a97.js\";\nimport \"./column-views.758b9bc1.js\";\nimport $8OJSO$macrostrathyper from \"@macrostrat/hyper\";\nimport {useMemo as $8OJSO$useMemo, useRef as $8OJSO$useRef} from \"react\";\nimport {useInDarkMode as $8OJSO$useInDarkMode} from \"@macrostrat/ui-components\";\nimport $8OJSO$classnames from \"classnames\";\nimport {SVG as $8OJSO$SVG, ColumnProvider as $8OJSO$ColumnProvider, ColumnAxisType as $8OJSO$ColumnAxisType} from \"@macrostrat/column-components\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $25f1fcddbe40b91f$exports = {};\n\n$parcel$export($25f1fcddbe40b91f$exports, \"CorrelationChart\", () => $25f1fcddbe40b91f$export$9ebf875c09445bec);\n/** Correlation chart */ \nvar $7tWYE = parcelRequire(\"7tWYE\");\nvar $a3mb1 = parcelRequire(\"a3mb1\");\n\nvar $2KV3o = parcelRequire(\"2KV3o\");\n\n\nvar $cf1sk = parcelRequire(\"cf1sk\");\n\n\n\nvar $7exMg = parcelRequire(\"7exMg\");\n\n\nvar $8ldOM = parcelRequire(\"8ldOM\");\n\nvar $4hG2H = parcelRequire(\"4hG2H\");\n\n\nvar $1n4Pb = parcelRequire(\"1n4Pb\");\n\nvar $dMbCm = parcelRequire(\"dMbCm\");\nconst $25f1fcddbe40b91f$var$h = (0, $8OJSO$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($cf1sk))));\nfunction $25f1fcddbe40b91f$export$9ebf875c09445bec({ data: data, columnSpacing: columnSpacing = 0, columnWidth: columnWidth = 130, unconformityLabels: unconformityLabels = true, showUnitPopover: showUnitPopover = true, selectedUnit: selectedUnit, onUnitSelected: onUnitSelected, unitComponent: unitComponent, ...scaleProps }) {\n const defaultScaleProps = {\n targetUnitHeight: 10,\n unconformityHeight: 60,\n minSectionHeight: 60,\n collapseSmallUnconformities: true\n };\n const chartData = (0, $8OJSO$useMemo)(()=>{\n if (!data) return null;\n return (0, $8ldOM.buildCorrelationChartData)(data, {\n ...defaultScaleProps,\n ...scaleProps\n });\n }, [\n data,\n ...Object.values(scaleProps)\n ]);\n const columnRef = (0, $8OJSO$useRef)(null);\n // A flattened units array is used to support keyboard navigation\n const units = (0, $8OJSO$useMemo)(()=>{\n return data?.map((d0)=>d0.units).flat() ?? [];\n }, [\n data\n ]);\n const inDarkMode = (0, $8OJSO$useInDarkMode)();\n const className = (0, $8OJSO$classnames)({\n \"dark-mode\": inDarkMode\n });\n if (chartData == null) return null;\n const { packages: packages, scaleInfo: scaleInfo, nColumns: nColumns } = chartData;\n const mainWidth = (columnWidth + columnSpacing) * nColumns;\n return $25f1fcddbe40b91f$var$h((0, $dMbCm.ColumnContainer), {\n className: \"correlation-diagram\"\n }, $25f1fcddbe40b91f$var$h((0, $a3mb1.UnitSelectionProvider), {\n columnRef: columnRef,\n selectedUnit: selectedUnit,\n onUnitSelected: onUnitSelected,\n units: units\n }, $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$ChartArea, [\n $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$TimescaleColumn, {\n key: \"timescale\",\n scaleInfo: scaleInfo,\n unconformityLabels: unconformityLabels\n }),\n $25f1fcddbe40b91f$var$h(\"div.main-chart\", {\n ref: columnRef\n }, [\n $25f1fcddbe40b91f$var$h((0, $8OJSO$SVG), {\n className: className,\n innerWidth: mainWidth,\n height: scaleInfo.totalHeight,\n paddingH: 4\n }, packages.map((pkg, i)=>{\n const { offset: offset, domain: domain, pixelScale: pixelScale, key: key } = scaleInfo.packages[i];\n return $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$Package, {\n columnData: pkg.columnData,\n key: key,\n columnWidth: columnWidth,\n columnSpacing: columnSpacing,\n offset: offset,\n domain: domain,\n pixelScale: pixelScale,\n unitComponent: unitComponent\n });\n })),\n $25f1fcddbe40b91f$var$h.if(showUnitPopover)((0, $2KV3o.UnitSelectionPopover)),\n // Navigation only works within a column for now...\n $25f1fcddbe40b91f$var$h((0, $a3mb1.UnitKeyboardNavigation), {\n units: units\n })\n ])\n ])));\n}\nfunction $25f1fcddbe40b91f$var$Package({ columnData: columnData, columnSpacing: columnSpacing, columnWidth: columnWidth, unitComponent: unitComponent, offset: offset, domain: domain, pixelScale: pixelScale }) {\n return $25f1fcddbe40b91f$var$h(\"g.package\", {\n transform: `translate(0 ${offset})`\n }, [\n // Disable the SVG overlay for now\n //h(PackageSVGOverlay, { data, columnSpacing }),\n $25f1fcddbe40b91f$var$h(\"g.column-units\", [\n columnData.map((data, i)=>{\n return $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$Column, {\n units: data.units,\n unitComponent: unitComponent,\n width: columnWidth,\n key: i,\n domain: domain,\n pixelScale: pixelScale,\n offsetLeft: i * (columnWidth + columnSpacing)\n });\n })\n ])\n ]);\n}\nfunction $25f1fcddbe40b91f$var$Column(props) {\n const { units: units, width: width = 150, offsetLeft: offsetLeft, domain: domain, pixelScale: pixelScale, unitComponent: unitComponent = (0, $7tWYE.ColoredUnitComponent) } = props;\n const columnWidth = width;\n if (units.length == 0) return null;\n return $25f1fcddbe40b91f$var$h(\"g.section\", {\n transform: `translate(${offsetLeft} 0)`\n }, $25f1fcddbe40b91f$var$h((0, $8OJSO$ColumnProvider), {\n // Need to tighten up types here...\n divisions: units,\n range: domain,\n pixelsPerMeter: pixelScale,\n axisType: (0, $8OJSO$ColumnAxisType).AGE\n }, $25f1fcddbe40b91f$var$h((0, $1n4Pb.UnitBoxes), {\n unitComponent: unitComponent,\n unitComponentProps: {\n nColumns: 2,\n width: columnWidth,\n showLabel: false\n }\n })));\n}\nfunction $25f1fcddbe40b91f$var$PackageSVGOverlay({ data: data, columnWidth: columnWidth = 100, columnSpacing: columnSpacing = 0 }) {\n const { b_age: b_age, t_age: t_age, bestPixelScale: bestPixelScale, columnData: columnData } = data;\n const width = (columnWidth + columnSpacing) * columnData.length;\n const height = Math.ceil((b_age - t_age) * bestPixelScale) + 2;\n const extensiveUnits = (0, $8ldOM.findLaterallyExtensiveUnits)(data);\n const scale = (val)=>{\n return (val - t_age) * bestPixelScale;\n };\n return $25f1fcddbe40b91f$var$h(\"div.package-overlay\", {\n style: {\n width: width,\n height: height\n }\n }, extensiveUnits.map((d)=>{\n return $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$LaterallyExtensiveUnit, {\n data: d,\n scale: scale,\n pixelScale: bestPixelScale,\n columnSpacing: columnSpacing\n });\n }));\n}\nfunction $25f1fcddbe40b91f$var$LaterallyExtensiveUnit({ data: data, scale: scale, pixelScale: pixelScale, columnSpacing: columnSpacing }) {\n const { b_age: b_age, t_age: t_age, strat_name_long: strat_name_long, units: units } = data;\n // Build boxes by column groups\n const boxes = (0, $8ldOM.splitStratIntoBoxes)(data);\n return $25f1fcddbe40b91f$var$h(\"div.laterally-extensive-unit\", boxes.map((d, i)=>{\n return $25f1fcddbe40b91f$var$h($25f1fcddbe40b91f$var$StratColSpan, {\n scale: scale,\n data: d,\n pixelScale: pixelScale,\n key: i,\n columnSpacing: columnSpacing\n });\n }));\n}\nfunction $25f1fcddbe40b91f$var$StratColSpan({ data: data, scale: scale, columnWidth: columnWidth = 100, columnSpacing: columnSpacing = 0, pixelScale: pixelScale = 1 }) {\n const { startCol: startCol, endCol: endCol, strat_name_long: strat_name_long, t_age: t_age, b_age: b_age } = data;\n const top = scale(t_age);\n const left = startCol * (columnWidth + columnSpacing);\n const width = (endCol - startCol + 1) * (columnWidth + columnSpacing);\n const height = (b_age - t_age) * pixelScale;\n return $25f1fcddbe40b91f$var$h(\"div.strat-col-span\", {\n style: {\n top: top,\n height: height,\n width: width,\n left: left\n }\n }, strat_name_long);\n}\nfunction $25f1fcddbe40b91f$var$ChartArea({ children: children }) {\n const setSelectedUnit = (0, $a3mb1.useUnitSelectionStore)((state)=>state.setSelectedUnit);\n return $25f1fcddbe40b91f$var$h(\"div.correlation-chart-inner\", {\n onClick () {\n setSelectedUnit(null);\n }\n }, children);\n}\nfunction $25f1fcddbe40b91f$var$TimescaleColumn(props) {\n const { scaleInfo: scaleInfo, unconformityLabels: unconformityLabels = true } = props;\n return $25f1fcddbe40b91f$var$h(\"div.column-container.age-axis-container\", [\n $25f1fcddbe40b91f$var$h((0, $4hG2H.CompositeAgeAxisCore), {\n ...scaleInfo\n }),\n $25f1fcddbe40b91f$var$h((0, $7exMg.CompositeTimescaleCore), {\n ...scaleInfo,\n unconformityLabels: unconformityLabels\n })\n ]);\n}\n\n\nexport {$25f1fcddbe40b91f$export$9ebf875c09445bec as CorrelationChart};\n//# sourceMappingURL=column-views.0dfc7ef7.js.map\n","/** Correlation chart */\nimport {\n UnitSelectionProvider,\n UnitKeyboardNavigation,\n useUnitSelectionStore,\n} from \"../units\";\nimport { UnitSelectionPopover } from \"../unit-details\";\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./main.module.sass\";\nimport { useMemo, useRef } from \"react\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { CompositeTimescaleCore } from \"../section\";\nimport classNames from \"classnames\";\nimport {\n findLaterallyExtensiveUnits,\n splitStratIntoBoxes,\n UnitGroupBox,\n CorrelationChartSettings,\n buildCorrelationChartData,\n} from \"./prepare-data\";\nimport {\n CompositeAgeAxisCore,\n CompositeStratigraphicScaleInfo,\n} from \"../age-axis\";\nimport {\n ColumnAxisType,\n ColumnProvider,\n SVG,\n} from \"@macrostrat/column-components\";\nimport { ColoredUnitComponent } from \"../units\";\nimport { UnitBoxes } from \"../units/boxes\";\nimport { ExtUnit } from \"../prepare-units/helpers\";\nimport { ColumnContainer } from \"../column\";\nimport { ColumnData } from \"../data-provider\";\nimport { BaseUnit } from \"@macrostrat/api-types\";\n\nconst h = hyper.styled(styles);\n\nexport interface CorrelationChartProps extends CorrelationChartSettings {\n data: ColumnData[];\n columnWidth?: number;\n columnSpacing?: number;\n targetUnitHeight?: number;\n unconformityLabels?: boolean;\n selectedUnit?: number | null;\n showUnitPopover?: boolean;\n unitComponent?: any;\n onUnitSelected?: (unitID: number | null, unit: BaseUnit | null) => void;\n}\n\nexport function CorrelationChart({\n data,\n columnSpacing = 0,\n columnWidth = 130,\n unconformityLabels = true,\n showUnitPopover = true,\n selectedUnit,\n onUnitSelected,\n unitComponent,\n ...scaleProps\n}: CorrelationChartProps) {\n const defaultScaleProps = {\n targetUnitHeight: 10,\n unconformityHeight: 60,\n minSectionHeight: 60,\n collapseSmallUnconformities: true,\n };\n\n const chartData = useMemo(() => {\n if (!data) return null;\n return buildCorrelationChartData(data, {\n ...defaultScaleProps,\n ...scaleProps,\n });\n }, [data, ...Object.values(scaleProps)]);\n\n const columnRef = useRef(null);\n\n // A flattened units array is used to support keyboard navigation\n const units = useMemo(() => {\n return data?.map((d0) => d0.units).flat() ?? [];\n }, [data]);\n\n const inDarkMode = useInDarkMode();\n\n const className = classNames({\n \"dark-mode\": inDarkMode,\n });\n\n if (chartData == null) {\n return null;\n }\n\n const { packages, scaleInfo, nColumns } = chartData;\n\n const mainWidth = (columnWidth + columnSpacing) * nColumns;\n\n return h(\n ColumnContainer,\n { className: \"correlation-diagram\" },\n h(\n UnitSelectionProvider,\n { columnRef, selectedUnit, onUnitSelected, units },\n h(ChartArea, [\n h(TimescaleColumn, {\n key: \"timescale\",\n scaleInfo,\n unconformityLabels,\n }),\n h(\"div.main-chart\", { ref: columnRef }, [\n h(\n SVG,\n {\n className,\n innerWidth: mainWidth,\n height: scaleInfo.totalHeight,\n paddingH: 4,\n },\n packages.map((pkg, i) => {\n const { offset, domain, pixelScale, key } = scaleInfo.packages[i];\n return h(Package, {\n columnData: pkg.columnData,\n key,\n columnWidth,\n columnSpacing,\n offset,\n domain,\n pixelScale,\n unitComponent,\n });\n }),\n ),\n h.if(showUnitPopover)(UnitSelectionPopover),\n // Navigation only works within a column for now...\n h(UnitKeyboardNavigation, { units }),\n ]),\n ]),\n ),\n );\n}\n\nfunction Package({\n columnData,\n columnSpacing,\n columnWidth,\n unitComponent,\n offset,\n domain,\n pixelScale,\n}) {\n return h(\"g.package\", { transform: `translate(0 ${offset})` }, [\n // Disable the SVG overlay for now\n //h(PackageSVGOverlay, { data, columnSpacing }),\n h(\"g.column-units\", [\n columnData.map((data, i) => {\n return h(Column, {\n units: data.units,\n unitComponent,\n width: columnWidth,\n key: i,\n domain,\n pixelScale,\n offsetLeft: i * (columnWidth + columnSpacing),\n });\n }),\n ]),\n ]);\n}\n\ninterface ColumnProps {\n units: ExtUnit[];\n unitComponent?: React.FunctionComponent<any>;\n unitComponentProps?: any;\n showLabels?: boolean;\n width?: number;\n columnWidth?: number;\n columnSpacing?: number;\n targetUnitHeight?: number;\n offsetLeft?: number;\n domain: [number, number];\n pixelScale: number;\n}\n\nfunction Column(props: ColumnProps) {\n const {\n units,\n width = 150,\n offsetLeft,\n domain,\n pixelScale,\n unitComponent = ColoredUnitComponent,\n } = props;\n\n const columnWidth = width;\n\n if (units.length == 0) {\n return null;\n }\n\n return h(\n \"g.section\",\n {\n transform: `translate(${offsetLeft} 0)`,\n },\n h(\n ColumnProvider,\n {\n // Need to tighten up types here...\n divisions: units as any[],\n range: domain,\n pixelsPerMeter: pixelScale, // Actually pixels per myr\n axisType: ColumnAxisType.AGE,\n },\n h(UnitBoxes, {\n unitComponent,\n unitComponentProps: {\n nColumns: 2,\n width: columnWidth,\n showLabel: false,\n },\n }),\n ),\n );\n}\n\nfunction PackageSVGOverlay({ data, columnWidth = 100, columnSpacing = 0 }) {\n const { b_age, t_age, bestPixelScale, columnData } = data;\n\n const width = (columnWidth + columnSpacing) * columnData.length;\n const height = Math.ceil((b_age - t_age) * bestPixelScale) + 2;\n\n const extensiveUnits = findLaterallyExtensiveUnits(data);\n\n const scale = (val: number) => {\n return (val - t_age) * bestPixelScale;\n };\n\n return h(\n \"div.package-overlay\",\n { style: { width, height } },\n extensiveUnits.map((d) => {\n return h(LaterallyExtensiveUnit, {\n data: d,\n scale,\n pixelScale: bestPixelScale,\n columnSpacing,\n });\n }),\n );\n}\n\nfunction LaterallyExtensiveUnit({ data, scale, pixelScale, columnSpacing }) {\n const { b_age, t_age, strat_name_long, units } = data;\n // Build boxes by column groups\n const boxes: UnitGroupBox[] = splitStratIntoBoxes(data);\n\n return h(\n \"div.laterally-extensive-unit\",\n boxes.map((d, i) => {\n return h(StratColSpan, {\n scale,\n data: d,\n pixelScale,\n key: i,\n columnSpacing,\n });\n }),\n );\n}\n\nfunction StratColSpan({\n data,\n scale,\n columnWidth = 100,\n columnSpacing = 0,\n pixelScale = 1,\n}) {\n const { startCol, endCol, strat_name_long, t_age, b_age } = data;\n const top = scale(t_age);\n const left = startCol * (columnWidth + columnSpacing);\n const width = (endCol - startCol + 1) * (columnWidth + columnSpacing);\n const height = (b_age - t_age) * pixelScale;\n return h(\n \"div.strat-col-span\",\n { style: { top, height, width, left } },\n strat_name_long,\n );\n}\n\nfunction ChartArea({ children }) {\n const setSelectedUnit = useUnitSelectionStore(\n (state) => state.setSelectedUnit,\n );\n\n return h(\n \"div.correlation-chart-inner\",\n {\n onClick() {\n setSelectedUnit(null);\n },\n },\n children,\n );\n}\n\ninterface TimescaleColumnProps {\n scaleInfo: CompositeStratigraphicScaleInfo;\n showLabels?: boolean;\n unconformityLabels?: boolean;\n}\n\nfunction TimescaleColumn(props: TimescaleColumnProps) {\n const { scaleInfo, unconformityLabels = true } = props;\n return h(\"div.column-container.age-axis-container\", [\n h(CompositeAgeAxisCore, { ...scaleInfo }),\n h(CompositeTimescaleCore, { ...scaleInfo, unconformityLabels }),\n ]);\n}\n"],"names":["$8OJSO$macrostrathyper","useMemo","$8OJSO$useMemo","useRef","$8OJSO$useRef","useInDarkMode","$8OJSO$useInDarkMode","$8OJSO$classnames","SVG","$8OJSO$SVG","ColumnProvider","$8OJSO$ColumnProvider","ColumnAxisType","$8OJSO$ColumnAxisType","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$25f1fcddbe40b91f$export$9ebf875c09445bec","set","s","enumerable","configurable","$7tWYE","$a3mb1","$2KV3o","$cf1sk","$7exMg","$8ldOM","$4hG2H","$1n4Pb","$dMbCm","$25f1fcddbe40b91f$var$h","styled","a","__esModule","default","data","columnSpacing","columnWidth","unconformityLabels","showUnitPopover","selectedUnit","onUnitSelected","unitComponent","scaleProps","defaultScaleProps","targetUnitHeight","unconformityHeight","minSectionHeight","collapseSmallUnconformities","chartData","buildCorrelationChartData","values","columnRef","units","map","d0","flat","className","packages","scaleInfo","nColumns","ColumnContainer","UnitSelectionProvider","$25f1fcddbe40b91f$var$ChartArea","$25f1fcddbe40b91f$var$TimescaleColumn","key","ref","innerWidth","height","totalHeight","paddingH","pkg","i","offset","domain","pixelScale","$25f1fcddbe40b91f$var$Package","columnData","if","UnitSelectionPopover","UnitKeyboardNavigation","transform","$25f1fcddbe40b91f$var$Column","width","offsetLeft","props","ColoredUnitComponent","length","divisions","range","pixelsPerMeter","axisType","AGE","UnitBoxes","unitComponentProps","showLabel","children","setSelectedUnit","useUnitSelectionStore","state","onClick","CompositeAgeAxisCore","CompositeTimescaleCore","CorrelationChart"],"version":3,"file":"column-views.0dfc7ef7.js.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./column-views.45168c80.js";import{ColumnAxisType as e}from"@macrostrat/column-components";import{mergeAgeRanges as t}from"@macrostrat/stratigraphy-utils";var n=globalThis,a={},r={},l=n.parcelRequirea149;null==l&&((l=function(e){if(e in a)return a[e].exports;if(e in r){var t=r[e];delete r[e];var n={id:e,exports:{}};return a[e]=n,t.call(n.exports,n,n.exports),n.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){r[e]=t},n.parcelRequirea149=l),l.register;var o=l("610tc");function i(t,n){console.log(n);let{mergeSections:a=o.MergeSectionsMode.OVERLAPPING,targetUnitHeight:r,...l}=n,i={axisType:e.AGE,targetUnitHeight:r,...l};if(0==t.length)return null;let s=t.map(e=>e.units).flat(),u=t.map(e=>e.columnID),{sections:c,totalHeight:_}=(0,o.prepareColumnUnits)(s,i);return{scaleInfo:{axisType:e.AGE,totalHeight:_,packages:c.map(e=>e.scaleInfo)},packages:c.map(t=>(function(t,n){let{units:a,t_age:r,b_age:l}=t;return{columnData:n.map(n=>{let r=a.filter(e=>e.col_id==n);return r.sort((e,t)=>e.t_age-t.t_age),{columnID:n,units:(0,o.preprocessUnits)({...t,units:r},e.AGE)}}),bestPixelScale:t.scaleInfo.pixelScale,t_age:r,b_age:l}})(t,u)),nColumns:u.length}}function s(e){let{columnData:n,b_age:a,t_age:r}=e,l=new Map;for(let e of n){let{units:t}=e;for(let n of t)null!=n.strat_name_id&&(l.has(n.strat_name_id)||l.set(n.strat_name_id,new Map),l.get(n.strat_name_id).set(e.columnID,n))}let o=[];for(let[e,a]of l){let r=n.map(e=>a.get(e.columnID)??null),l=r.filter(e=>null!=e),[i,s]=t(l.map(e=>[e.t_age,e.b_age]));l.length<=1||o.push({b_age:s,t_age:i,strat_name_id:e,strat_name_long:l[0].strat_name_long,units:r})}return o}function u(e){let{strat_name_long:t,strat_name_id:n,units:a}=e,r=[],l=null;for(let e=0;e<a.length;e++){let o=a[e];if(null==o){null!=l&&(r.push(l),l=null);continue}null==l?l={startCol:e,endCol:e,strat_name_id:n,strat_name_long:t,t_age:o.t_age,b_age:o.b_age,units:[]}:l.endCol=e,l.units.push(o)}return r}function c(e){return{col_id:e.properties.col_id,col_name:e.properties.col_name,project_id:e.properties.project_id}}export{i as buildCorrelationChartData,s as findLaterallyExtensiveUnits,u as splitStratIntoBoxes,c as columnGeoJSONRecordToColumnIdentifier};
|
|
2
|
-
//# sourceMappingURL=column-views.1a0b56fc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["<anon>","packages/column-views/src/correlation-chart/prepare-data.ts"],"sourcesContent":["import \"./column-views.45168c80.js\";\nimport {ColumnAxisType as $kr6st$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {mergeAgeRanges as $kr6st$mergeAgeRanges} from \"@macrostrat/stratigraphy-utils\";\n\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\nvar $610tc = parcelRequire(\"610tc\");\n\nfunction $1f14b283fe089e83$export$7f21dc14b8199dc0(columns, settings) {\n console.log(settings);\n const { mergeSections: mergeSections = (0, $610tc.MergeSectionsMode).OVERLAPPING, targetUnitHeight: targetUnitHeight, ...rest } = settings;\n const opts = {\n axisType: (0, $kr6st$ColumnAxisType).AGE,\n targetUnitHeight: targetUnitHeight,\n ...rest\n };\n if (columns.length == 0) return null;\n // Flatten the units array to pretend that all units are in the same column\n const _units = columns.map((d)=>d.units).flat();\n const columnIDs = columns.map((d)=>d.columnID);\n const preparedUnits = (0, $610tc.prepareColumnUnits)(_units, opts);\n const { sections: sections, totalHeight: totalHeight } = preparedUnits;\n const scaleInfo = {\n axisType: (0, $kr6st$ColumnAxisType).AGE,\n totalHeight: totalHeight,\n packages: sections.map((d)=>d.scaleInfo)\n };\n const packages = sections.map((d)=>{\n return $1f14b283fe089e83$var$separateColumns(d, columnIDs);\n });\n return {\n scaleInfo: scaleInfo,\n packages: packages,\n nColumns: columnIDs.length\n };\n}\nfunction $1f14b283fe089e83$export$cc5d9b95e199a6de(pkg) {\n const { columnData: columnData, b_age: b_age, t_age: t_age } = pkg;\n // Group units by strat_name_id\n const unitIndex = new Map();\n for (const column of columnData){\n const { units: units } = column;\n for (const unit of units){\n if (unit.strat_name_id == null) continue;\n if (!unitIndex.has(unit.strat_name_id)) unitIndex.set(unit.strat_name_id, new Map());\n unitIndex.get(unit.strat_name_id).set(column.columnID, unit);\n }\n }\n // Prepare grouped units for rendering\n const unitGroups = [];\n for (const [strat_name_id, unitIndex0] of unitIndex){\n const units = columnData.map((d)=>unitIndex0.get(d.columnID) ?? null);\n const filteredUnits = units.filter((d)=>d != null);\n const [t_age, b_age] = (0, $kr6st$mergeAgeRanges)(filteredUnits.map((d)=>[\n d.t_age,\n d.b_age\n ]));\n if (filteredUnits.length <= 1) continue;\n unitGroups.push({\n b_age: b_age,\n t_age: t_age,\n strat_name_id: strat_name_id,\n strat_name_long: filteredUnits[0].strat_name_long,\n units: units\n });\n }\n return unitGroups;\n}\nfunction $1f14b283fe089e83$export$3e71a3125322d04b(pkg) {\n const { strat_name_long: strat_name_long, strat_name_id: strat_name_id, units: units } = pkg;\n const boxes = [];\n let currentBox = null;\n for(let i = 0; i < units.length; i++){\n const unit = units[i];\n if (unit == null) {\n if (currentBox != null) {\n boxes.push(currentBox);\n currentBox = null;\n }\n continue;\n }\n if (currentBox == null) currentBox = {\n startCol: i,\n endCol: i,\n strat_name_id: strat_name_id,\n strat_name_long: strat_name_long,\n t_age: unit.t_age,\n b_age: unit.b_age,\n units: []\n };\n else currentBox.endCol = i;\n currentBox.units.push(unit);\n }\n return boxes;\n}\nfunction $1f14b283fe089e83$var$separateColumns(pkg, columnIDs) {\n /** Separate columns by col_id */ const { units: units, t_age: t_age, b_age: b_age } = pkg;\n return {\n columnData: columnIDs.map((d)=>{\n const u1 = units.filter((unit)=>unit.col_id == d);\n u1.sort((a, b)=>a.t_age - b.t_age);\n return {\n columnID: d,\n // Ensure that the units correctly show overlap\n units: (0, $610tc.preprocessUnits)({\n ...pkg,\n units: u1\n }, (0, $kr6st$ColumnAxisType).AGE)\n };\n }),\n bestPixelScale: pkg.scaleInfo.pixelScale,\n t_age: t_age,\n b_age: b_age\n };\n}\nfunction $1f14b283fe089e83$export$63b33da9b6dd754c(col) {\n return {\n col_id: col.properties.col_id,\n col_name: col.properties.col_name,\n project_id: col.properties.project_id\n };\n}\n\n\nexport {$1f14b283fe089e83$export$7f21dc14b8199dc0 as buildCorrelationChartData, $1f14b283fe089e83$export$cc5d9b95e199a6de as findLaterallyExtensiveUnits, $1f14b283fe089e83$export$3e71a3125322d04b as splitStratIntoBoxes, $1f14b283fe089e83$export$63b33da9b6dd754c as columnGeoJSONRecordToColumnIdentifier};\n//# sourceMappingURL=column-views.1a0b56fc.js.map\n","import { CompositeStratigraphicScaleInfo } from \"../age-axis\";\nimport { PackageLayoutData } from \"../prepare-units/composite-scale\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { type ColumnGeoJSONRecord, UnitLong } from \"@macrostrat/api-types\";\nimport {\n MergeSectionsMode,\n PrepareColumnOptions,\n prepareColumnUnits,\n preprocessUnits,\n} from \"../prepare-units\";\nimport { mergeAgeRanges } from \"@macrostrat/stratigraphy-utils\";\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\ninterface ColumnData {\n columnID: number;\n units: UnitLong[];\n}\n\nexport interface CorrelationChartSettings\n extends Omit<PrepareColumnOptions, \"axisType\"> {\n targetUnitHeight?: number;\n}\n\nexport interface CorrelationChartData {\n packages: MultiColumnPackageData[];\n scaleInfo: CompositeStratigraphicScaleInfo;\n nColumns: number;\n}\n\nexport interface ColumnIdentifier {\n col_id: number;\n col_name: string;\n project_id: number;\n}\n\nexport function buildCorrelationChartData(\n columns: ColumnData[],\n settings: CorrelationChartSettings,\n): CorrelationChartData {\n console.log(settings);\n const {\n mergeSections = MergeSectionsMode.OVERLAPPING,\n targetUnitHeight,\n ...rest\n } = settings;\n\n const opts: PrepareColumnOptions = {\n axisType: ColumnAxisType.AGE,\n targetUnitHeight,\n ...rest,\n };\n\n if (columns.length == 0) {\n return null;\n }\n\n // Flatten the units array to pretend that all units are in the same column\n const _units = columns.map((d) => d.units).flat();\n\n const columnIDs = columns.map((d) => d.columnID);\n\n const preparedUnits = prepareColumnUnits(_units, opts);\n\n const { sections, totalHeight } = preparedUnits;\n\n const scaleInfo: CompositeStratigraphicScaleInfo = {\n axisType: ColumnAxisType.AGE,\n totalHeight,\n packages: sections.map((d) => d.scaleInfo),\n };\n\n const packages = sections.map((d) => {\n return separateColumns(d, columnIDs);\n });\n\n return { scaleInfo, packages, nColumns: columnIDs.length };\n}\n\ninterface UnitGroup {\n b_age: number;\n t_age: number;\n strat_name_id: number;\n strat_name_long: string;\n units: (UnitLong | null)[];\n}\n\nexport interface UnitGroupBox extends UnitGroup {\n units: UnitLong[];\n startCol: number;\n endCol: number;\n}\n\ninterface ColumnExt {\n columnID: number;\n units: UnitLong[];\n}\n\ninterface MultiColumnPackageData {\n columnData: ColumnExt[];\n bestPixelScale: number;\n b_age: number;\n t_age: number;\n}\n\nexport function findLaterallyExtensiveUnits(\n pkg: MultiColumnPackageData,\n): UnitGroup[] {\n const { columnData, b_age, t_age } = pkg;\n // Group units by strat_name_id\n const unitIndex = new Map<number, Map<number, UnitLong>>();\n for (const column of columnData) {\n const { units } = column;\n for (const unit of units) {\n if (unit.strat_name_id == null) continue;\n if (!unitIndex.has(unit.strat_name_id)) {\n unitIndex.set(unit.strat_name_id, new Map());\n }\n unitIndex.get(unit.strat_name_id).set(column.columnID, unit);\n }\n }\n\n // Prepare grouped units for rendering\n const unitGroups: UnitGroup[] = [];\n for (const [strat_name_id, unitIndex0] of unitIndex) {\n const units = columnData.map((d) => unitIndex0.get(d.columnID) ?? null);\n const filteredUnits = units.filter((d) => d != null);\n const [t_age, b_age] = mergeAgeRanges(\n filteredUnits.map((d) => [d.t_age, d.b_age]),\n );\n if (filteredUnits.length <= 1) continue;\n\n unitGroups.push({\n b_age,\n t_age,\n strat_name_id,\n strat_name_long: filteredUnits[0].strat_name_long,\n units,\n });\n }\n\n return unitGroups;\n}\n\nexport function splitStratIntoBoxes(pkg: UnitGroup): UnitGroupBox[] {\n const { strat_name_long, strat_name_id, units } = pkg;\n const boxes: UnitGroupBox[] = [];\n let currentBox: UnitGroupBox = null;\n for (let i = 0; i < units.length; i++) {\n const unit = units[i];\n if (unit == null) {\n if (currentBox != null) {\n boxes.push(currentBox);\n currentBox = null;\n }\n continue;\n }\n if (currentBox == null) {\n currentBox = {\n startCol: i,\n endCol: i,\n strat_name_id,\n strat_name_long,\n t_age: unit.t_age,\n b_age: unit.b_age,\n units: [],\n };\n } else {\n currentBox.endCol = i;\n }\n currentBox.units.push(unit);\n }\n return boxes;\n}\n\nfunction separateColumns(\n pkg: PackageLayoutData,\n columnIDs: number[],\n): MultiColumnPackageData {\n /** Separate columns by col_id */\n const { units, t_age, b_age } = pkg;\n\n return {\n columnData: columnIDs.map((d) => {\n const u1 = units.filter((unit) => unit.col_id == d);\n u1.sort((a, b) => a.t_age - b.t_age);\n return {\n columnID: d,\n // Ensure that the units correctly show overlap\n units: preprocessUnits(\n {\n ...pkg,\n units: u1,\n },\n ColumnAxisType.AGE,\n ),\n };\n }),\n bestPixelScale: pkg.scaleInfo.pixelScale,\n t_age,\n b_age,\n };\n}\n\nexport function columnGeoJSONRecordToColumnIdentifier(\n col: ColumnGeoJSONRecord,\n): ColumnIdentifier {\n return {\n col_id: col.properties.col_id,\n col_name: col.properties.col_name,\n project_id: col.properties.project_id,\n };\n}\n"],"names":["ColumnAxisType","$kr6st$ColumnAxisType","mergeAgeRanges","$kr6st$mergeAgeRanges","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$610tc","$1f14b283fe089e83$export$7f21dc14b8199dc0","columns","settings","console","log","mergeSections","MergeSectionsMode","OVERLAPPING","targetUnitHeight","rest","opts","axisType","AGE","length","_units","map","d","units","flat","columnIDs","columnID","sections","totalHeight","prepareColumnUnits","scaleInfo","packages","$1f14b283fe089e83$var$separateColumns","pkg","t_age","b_age","columnData","u1","filter","unit","col_id","sort","a","b","preprocessUnits","bestPixelScale","pixelScale","nColumns","$1f14b283fe089e83$export$cc5d9b95e199a6de","unitIndex","Map","column","strat_name_id","has","set","get","unitGroups","unitIndex0","filteredUnits","push","strat_name_long","$1f14b283fe089e83$export$3e71a3125322d04b","boxes","currentBox","i","startCol","endCol","$1f14b283fe089e83$export$63b33da9b6dd754c","col","properties","col_name","project_id","buildCorrelationChartData","findLaterallyExtensiveUnits","splitStratIntoBoxes","columnGeoJSONRecordToColumnIdentifier"],"version":3,"file":"column-views.1a0b56fc.js.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
.XUD4UG_legend-panel-header{border-bottom:1px solid var(--panel-rule-color);background-color:var(--panel-secondary-background-color);z-index:50;justify-content:space-between;align-items:center;gap:.5em;min-height:45px;padding:.5em 1em;display:flex;position:sticky;top:0;overflow:hidden}.XUD4UG_legend-panel-header .XUD4UG_title-container{z-index:5;flex-grow:1;align-items:center;gap:.5em;margin:0}.XUD4UG_legend-panel-header .XUD4UG_title-container:hover .XUD4UG_hidden-actions-container{visibility:visible}.XUD4UG_legend-panel-header .XUD4UG_title-container h1,.XUD4UG_legend-panel-header .XUD4UG_title-container h2,.XUD4UG_legend-panel-header .XUD4UG_title-container h3{margin:0;display:inline}.XUD4UG_legend-panel-header .XUD4UG_title-container .XUD4UG_hidden-actions-container{visibility:hidden}.XUD4UG_legend-panel-header .XUD4UG_title-container button{transform:translateY(0)}.XUD4UG_legend-panel-header code{color:var(--secondary-color);font-size:.9em}.XUD4UG_legend-panel-header .XUD4UG_unit-id:before{content:"#";color:var(--secondary-color)}.XUD4UG_legend-panel-header .XUD4UG_spacer{flex:1}.XUD4UG_unit-details-panel{flex-direction:column;display:flex}.XUD4UG_unit-details-panel .XUD4UG_unit-details-content-holder{flex:1;overflow-y:scroll}.XUD4UG_unit-details-content{margin:1em;position:relative}.XUD4UG_proportion,.XUD4UG_sep,.XUD4UG_no-units,.XUD4UG_strat-name-text{color:var(--secondary-color);font-style:italic}.XUD4UG_strat-name-id,.XUD4UG_identifier{font-family:var(--monospace-font);color:var(--secondary-color)}.XUD4UG_strat-name-id:before,.XUD4UG_identifier:before{content:"#";color:var(--tertiary-color)}.XUD4UG_color-swatch{border:1px solid var(--panel-rule-color);border-radius:.2em;width:1em;height:1em;margin-right:.2em;display:inline-block}.XUD4UG_refs{margin:0;padding-left:0;list-style:none}.XUD4UG_interval-proportions{text-align:right;flex-grow:1;width:100%}.XUD4UG_interval-proportions .XUD4UG_discourage-break{white-space:nowrap}.XUD4UG_interval-proportions .XUD4UG_sep{margin:0 .3em}.XUD4UG_clickable{cursor:pointer}.XUD4UG_hidden-actions-container{width:0;min-width:0;display:inline-block;position:relative}.XUD4UG_hidden-actions{background-color:var(--panel-secondary-background-color);z-index:50;align-items:center;gap:.25em;width:fit-content;padding-left:1em;display:flex;position:relative;bottom:0}.XUD4UG_hidden-actions button{color:var(--secondary-color)!important}
|
|
2
|
-
/*# sourceMappingURL=column-views.2926f656.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"ACAA,8RAaE,+GAOI,8GAEF,6LAGA,uGAEA,mFAGF,6EAGA,4FAKA,kDAGF,8DAGE,wFAIF,0DAIA,uHAIA,wGAIE,+FAIF,6IAQA,qDAKA,qEAIE,yEAEA,uDAGF,iCAGA,4FAOA,mMAUE","sources":["column-views.2926f656.css","packages/column-views/src/unit-details/panel.module.sass"],"sourcesContent":[".XUD4UG_legend-panel-header {\n border-bottom: 1px solid var(--panel-rule-color);\n background-color: var(--panel-secondary-background-color);\n z-index: 50;\n justify-content: space-between;\n align-items: center;\n gap: .5em;\n min-height: 45px;\n padding: .5em 1em;\n display: flex;\n position: sticky;\n top: 0;\n overflow: hidden;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_title-container {\n z-index: 5;\n flex-grow: 1;\n align-items: center;\n gap: .5em;\n margin: 0;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_title-container:hover .XUD4UG_hidden-actions-container {\n visibility: visible;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_title-container h1, .XUD4UG_legend-panel-header .XUD4UG_title-container h2, .XUD4UG_legend-panel-header .XUD4UG_title-container h3 {\n margin: 0;\n display: inline;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_title-container .XUD4UG_hidden-actions-container {\n visibility: hidden;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_title-container button {\n transform: translateY(0);\n}\n\n.XUD4UG_legend-panel-header code {\n color: var(--secondary-color);\n font-size: .9em;\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_unit-id:before {\n content: \"#\";\n color: var(--secondary-color);\n}\n\n.XUD4UG_legend-panel-header .XUD4UG_spacer {\n flex: 1;\n}\n\n.XUD4UG_unit-details-panel {\n flex-direction: column;\n display: flex;\n}\n\n.XUD4UG_unit-details-panel .XUD4UG_unit-details-content-holder {\n flex: 1;\n overflow-y: scroll;\n}\n\n.XUD4UG_unit-details-content {\n margin: 1em;\n position: relative;\n}\n\n.XUD4UG_proportion, .XUD4UG_sep, .XUD4UG_no-units, .XUD4UG_strat-name-text {\n color: var(--secondary-color);\n font-style: italic;\n}\n\n.XUD4UG_strat-name-id, .XUD4UG_identifier {\n font-family: var(--monospace-font);\n color: var(--secondary-color);\n}\n\n.XUD4UG_strat-name-id:before, .XUD4UG_identifier:before {\n content: \"#\";\n color: var(--tertiary-color);\n}\n\n.XUD4UG_color-swatch {\n border: 1px solid var(--panel-rule-color);\n border-radius: .2em;\n width: 1em;\n height: 1em;\n margin-right: .2em;\n display: inline-block;\n}\n\n.XUD4UG_refs {\n margin: 0;\n padding-left: 0;\n list-style: none;\n}\n\n.XUD4UG_interval-proportions {\n text-align: right;\n flex-grow: 1;\n width: 100%;\n}\n\n.XUD4UG_interval-proportions .XUD4UG_discourage-break {\n white-space: nowrap;\n}\n\n.XUD4UG_interval-proportions .XUD4UG_sep {\n margin: 0 .3em;\n}\n\n.XUD4UG_clickable {\n cursor: pointer;\n}\n\n.XUD4UG_hidden-actions-container {\n width: 0;\n min-width: 0;\n display: inline-block;\n position: relative;\n}\n\n.XUD4UG_hidden-actions {\n background-color: var(--panel-secondary-background-color);\n z-index: 50;\n align-items: center;\n gap: .25em;\n width: fit-content;\n padding-left: 1em;\n display: flex;\n position: relative;\n bottom: 0;\n}\n\n.XUD4UG_hidden-actions button {\n color: var(--secondary-color) !important;\n}\n/*# sourceMappingURL=column-views.2926f656.css.map */\n",".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: center\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.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.2926f656.css.map","sourceRoot":"../../../../"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"A,M,6C,A,Q,M,mB,A,Q,gB,C,K,2B,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,O,c,C,C,E,wB,C,I,I,E,I,K,E,W,C,E,a,C,C,G,I,E,E,SCgBO,SAAS,EAAsB,CAAA,SAAE,CAAQ,CAAA,MAAE,EAAQ,SAAA,CAAW,EACnE,IAAM,EAAO,AAbf,SAAoB,CAAA,OAAE,CAAM,CAAE,EAS5B,OARY,AAAA,EACV,qDACA,CACE,OAAQ,CAAC,GAAG,EAAE,EAAA,CAAQ,AACxB,EACA,AAAC,GAAM,EAIX,EAG0B,CAAE,OAAQ,CAAS,UAE3C,AAAI,AAAQ,MAAR,EAAqB,KAElB,AAAA,EAAE,EAAA,sBAAqB,CAAG,CAC/B,KAAA,EACA,cAAe,CACjB,EACF,CAEA,SAAS,EAAe,CAAK,EAC3B,GAAM,CAAA,KAAE,CAAI,CAAE,CAAG,EACX,EAAc,GAAM,MAAM,mBAEhC,AAAI,AAAe,MAAf,GAAuB,AAAuB,IAAvB,EAAY,MAAM,CAAe,KAErD,AAAA,EAAE,EAAA,aAAY,CAAG,CACtB,UAAW,cACX,KAAM,EACN,aAAc,AAAC,GAAM,AAAA,EAAE,OAAQ,EAAE,IAAI,CAAC,IAAI,CAC5C,EACF,Q,K,qB","sources":["<anon>","packages/column-views/src/facets/measurements/index.ts"],"sourcesContent":["import \"./column-views.085f4a51.js\";\nimport $d6zmK$macrostrathyper from \"@macrostrat/hyper\";\nimport {useAPIResult as $d6zmK$useAPIResult} from \"@macrostrat/ui-components\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nvar $30f674067bcc490b$exports = {};\n\n$parcel$export($30f674067bcc490b$exports, \"SGPMeasurementsColumn\", () => $30f674067bcc490b$export$c49cf57576706bab);\n\n\n\nvar $3S9SB = parcelRequire(\"3S9SB\");\nfunction $30f674067bcc490b$var$useSGPData({ col_id: col_id }) {\n const res = (0, $d6zmK$useAPIResult)(\"https://dev.macrostrat.org/api/pg/sgp_unit_matches\", {\n col_id: `eq.${col_id}`\n }, (d)=>d);\n return res;\n}\nfunction $30f674067bcc490b$export$c49cf57576706bab({ columnID: columnID, color: color = \"magenta\" }) {\n const data = $30f674067bcc490b$var$useSGPData({\n col_id: columnID\n });\n if (data == null) return null;\n return (0, $d6zmK$macrostrathyper)((0, $3S9SB.BaseMeasurementsColumn), {\n data: data,\n noteComponent: $30f674067bcc490b$var$SGPSamplesNote\n });\n}\nfunction $30f674067bcc490b$var$SGPSamplesNote(props) {\n const { note: note } = props;\n const sgp_samples = note?.data?.sgp_samples;\n if (sgp_samples == null || sgp_samples.length === 0) return null;\n return (0, $d6zmK$macrostrathyper)((0, $3S9SB.TruncatedList), {\n className: \"sgp-samples\",\n data: sgp_samples,\n itemRenderer: (p)=>(0, $d6zmK$macrostrathyper)(\"span\", p.data.name)\n });\n}\n\n\nexport {$30f674067bcc490b$export$c49cf57576706bab as SGPMeasurementsColumn};\n//# sourceMappingURL=column-views.2a6b842d.js.map\n","import h from \"@macrostrat/hyper\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\nimport { BaseMeasurementsColumn, TruncatedList } from \"../fossils\";\n\nfunction useSGPData({ col_id }) {\n const res = useAPIResult(\n \"https://dev.macrostrat.org/api/pg/sgp_unit_matches\",\n {\n col_id: `eq.${col_id}`,\n },\n (d) => d,\n );\n\n return res;\n}\n\nexport function SGPMeasurementsColumn({ columnID, color = \"magenta\" }) {\n const data = useSGPData({ col_id: columnID });\n\n if (data == null) return null;\n\n return h(BaseMeasurementsColumn, {\n data,\n noteComponent: SGPSamplesNote,\n });\n}\n\nfunction SGPSamplesNote(props) {\n const { note } = props;\n const sgp_samples = note?.data?.sgp_samples;\n\n if (sgp_samples == null || sgp_samples.length === 0) return null;\n\n return h(TruncatedList, {\n className: \"sgp-samples\",\n data: sgp_samples,\n itemRenderer: (p) => h(\"span\", p.data.name),\n });\n}\n"],"names":["$d6zmK$macrostrathyper","useAPIResult","$d6zmK$useAPIResult","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","Object","defineProperty","get","$30f674067bcc490b$export$c49cf57576706bab","set","s","enumerable","configurable","$3S9SB","columnID","color","data","$30f674067bcc490b$var$useSGPData","col_id","d","BaseMeasurementsColumn","noteComponent","$30f674067bcc490b$var$SGPSamplesNote","props","note","sgp_samples","length","TruncatedList","className","itemRenderer","p","name","SGPMeasurementsColumn"],"version":3,"file":"column-views.2a6b842d.js.map","sourceRoot":"../../../../"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"A,M,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,O,6C,A,Q,kB,C,C,iB,C,C,uB,C,C,a,C,C,sB,C,C,iB,C,C,iB,C,C,uB,C,K,+B,A,Q,kB,C,K,2B,A,Q,M,mB,A,Q,c,C,C,c,C,C,W,C,K,O,A,Q,M,Y,C,I,E,W,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,SCuBA,IAAM,EAAI,AAAA,EAAM,MAAM,C,AAAC,G,AAAA,E,U,C,AAAA,E,O,CAAA,GAoCvB,SAAS,EACP,CAAe,CACf,EAA2B,CAAC,CAAC,EAE7B,GAAM,CAAA,cACJ,EAAgB,CAAA,CAAA,SAChB,EAAW,AAAA,EAAe,GAAG,CAAA,QAC7B,EAAU,CAAA,CACX,CAAG,EACE,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GACvB,CAAA,MAAE,CAAK,CAAE,CAAG,AAAA,EAAW,GAEvB,CAAC,EAAc,EAAU,CAAG,AAAA,CAAA,EAAA,EAAA,kBAAiB,AAAjB,EAAmB,EAAU,GAEzD,EAAI,EAAM,GACV,EAAS,KAAK,GAAG,CAAC,EAAM,GAAgB,GAE9C,MAAO,CACL,EAAG,EAAS,CAAA,EAAI,CAAA,EAAiB,EACjC,EAAG,EAAI,EACP,OAAQ,EAAS,AAAU,EAAV,EACjB,MAAO,EAAgB,EAAQ,AAAU,EAAV,CACjC,CACF,CAEO,SAAS,EAAY,CAAK,EAC/B,GAAM,CACJ,SAAU,CAAC,CAAA,SACX,CAAQ,CAAA,UACR,CAAS,CAAA,cACT,EAAgB,CAAA,CAChB,SAAU,CAAC,CACX,SAAU,CAAE,CACZ,GAAG,EACJ,CAAG,EAEE,CAAA,SAAE,CAAQ,CAAE,CAAG,AAAA,IACf,EAAU,AAAA,CAAA,EAAA,EAAA,cAAa,AAAb,IACV,EAAS,CACb,GAAG,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","sources":["<anon>","packages/column-views/src/units/boxes.ts"],"sourcesContent":["import \"./column-views.e7e26765.js\";\nimport \"./column-views.3eeac38d.js\";\nimport \"./column-views.cdcce702.js\";\nimport \"./column-views.8cfed88b.js\";\nimport \"./column-views.9de31cdb.js\";\nimport \"./column-views.6bba8c57.js\";\nimport {ColumnAxisType as $jfrfr$ColumnAxisType, ColumnContext as $jfrfr$ColumnContext, ColumnLayoutContext as $jfrfr$ColumnLayoutContext, useColumn as $jfrfr$useColumn, useGeologicPattern as $jfrfr$useGeologicPattern, zigZagBoxPath as $jfrfr$zigZagBoxPath, ForeignObject as $jfrfr$ForeignObject, PatternDefsProvider as $jfrfr$PatternDefsProvider} from \"@macrostrat/column-components\";\nimport {SizeAwareLabel as $jfrfr$SizeAwareLabel} from \"@macrostrat/ui-components\";\nimport $jfrfr$macrostrathyper from \"@macrostrat/hyper\";\nimport {useContext as $jfrfr$useContext, forwardRef as $jfrfr$forwardRef, useMemo as $jfrfr$useMemo} from \"react\";\nimport $jfrfr$classnames from \"classnames\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\n\n\n\nvar $5VyZI = parcelRequire(\"5VyZI\");\n\nvar $a3mb1 = parcelRequire(\"a3mb1\");\n\nvar $klU0I = parcelRequire(\"klU0I\");\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nvar $lgTAP = parcelRequire(\"lgTAP\");\n\nvar $bfmPX = parcelRequire(\"bfmPX\");\nconst $82e068a44c11e855$var$h = (0, $jfrfr$macrostrathyper).styled((0, (/*@__PURE__*/$parcel$interopDefault($klU0I))));\nfunction $82e068a44c11e855$var$useUnitRect(division, options = {}) {\n const { widthFraction: widthFraction = 1, axisType: axisType = (0, $jfrfr$ColumnAxisType).AGE, padding: padding = 0 } = options;\n const { scale: scale } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n const { width: width } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnLayoutContext));\n const [bottomHeight, topHeight] = (0, $iWhRv.getUnitHeightRange)(division, axisType);\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2\n };\n}\nfunction $82e068a44c11e855$export$d54fdbabca27e53(props) {\n const { division: d, children: children, className: className, widthFraction: widthFraction = 1, axisType: _, nColumns: __, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const lithMap = (0, $lgTAP.useLithologies)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const backgroundColor = (0, $bfmPX.getMixedUnitColor)(d, lithMap, null, false);\n const [ref, selected, onClick] = (0, $a3mb1.useUnitSelectionTarget)(d);\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h(\"rect.unit.background\", {\n ref: ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick: onClick\n }),\n $82e068a44c11e855$var$h.if(selected)(\"rect.selection-overlay\", bounds)\n ]);\n}\nfunction $82e068a44c11e855$export$1d8b9ae22d404866(props) {\n const { division: d, children: children, fill: fill, defaultFill: defaultFill = \"transparent\", className: className, widthFraction: widthFraction = 1, backgroundColor: backgroundColor, patternColor: patternColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(d, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom\n };\n const _patternID = patternID ?? (0, $5VyZI.resolveID)(d);\n let _fill = fill ?? (0, $jfrfr$useGeologicPattern)(_patternID, defaultFill);\n const hasBackgroundColor = backgroundColor != null;\n const _className = (0, $jfrfr$classnames)(className, {\n colored: hasBackgroundColor\n });\n const [ref, selected, onClick] = (0, $a3mb1.useUnitSelectionTarget)(d);\n //const key = `unit-${d.unit_id}`;\n return $82e068a44c11e855$var$h(\"g.unit\", {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor\n }\n }, [\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick: onClick,\n className: \"background\"\n }),\n $82e068a44c11e855$var$h($82e068a44c11e855$var$UnitRect, {\n ref: ref,\n ...bounds,\n fill: _fill,\n onClick: //mask,\n onClick,\n className: \"unit\"\n }),\n $82e068a44c11e855$var$h.if(selected)($82e068a44c11e855$var$UnitRect, {\n ...bounds,\n className: \"selection-overlay\"\n }),\n //defs,\n children\n ]);\n}\nconst $82e068a44c11e855$var$UnitRect = (0, $jfrfr$forwardRef)((props, ref)=>{\n const { x: x, y: y, width: width, height: height, overflowTop: overflowTop = false, overflowBottom: overflowBottom = false, ...rest } = props;\n if (!overflowTop && !overflowBottom) return $82e068a44c11e855$var$h(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n ref: ref,\n ...rest\n });\n else {\n const d = (0, $jfrfr$zigZagBoxPath)(x, y, width, height, overflowTop, overflowBottom);\n return $82e068a44c11e855$var$h(\"path\", {\n d: d,\n ref: ref,\n ...rest\n });\n }\n});\nfunction $82e068a44c11e855$export$b4f0ca233b98f9af(props) {\n const { division: division, label: label, onLabelUpdated: onLabelUpdated, widthFraction: widthFraction, showLabel: showLabel = true, backgroundColor: backgroundColor, patternID: patternID, axisType: _, ...baseBounds } = props;\n const { axisType: axisType } = (0, $jfrfr$useColumn)();\n const bounds = {\n ...$82e068a44c11e855$var$useUnitRect(division, {\n widthFraction: widthFraction,\n axisType: axisType\n }),\n ...baseBounds\n };\n const { width: width, height: height } = bounds;\n return $82e068a44c11e855$var$h($82e068a44c11e855$export$1d8b9ae22d404866, {\n className: \"labeled-unit\",\n division: division,\n backgroundColor: backgroundColor,\n patternID: patternID,\n ...bounds\n }, [\n $82e068a44c11e855$var$h.if(showLabel)((0, $jfrfr$ForeignObject), {\n ...bounds,\n className: \"unit-label-container\"\n }, $82e068a44c11e855$var$h((0, $jfrfr$SizeAwareLabel), {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: {\n width: width,\n height: height\n },\n label: label,\n onVisibilityChanged (viz) {\n onLabelUpdated(label, viz);\n }\n }))\n ]);\n}\nfunction $82e068a44c11e855$export$5d1cdfabe8dc8085(props) {\n const { unitComponent: unitComponent = $82e068a44c11e855$export$1d8b9ae22d404866, unitComponentProps: unitComponentProps = {} } = props;\n const { divisions: divisions } = (0, $jfrfr$useContext)((0, $jfrfr$ColumnContext));\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n const children = (0, $jfrfr$useMemo)(()=>{\n return divisions.map((division, i)=>{\n // @ts-ignore\n return $82e068a44c11e855$var$h(unitComponent, {\n division: division,\n key: division.unit_id,\n ...unitComponentProps\n });\n });\n }, [\n divisions,\n unitComponent,\n unitComponentProps\n ]);\n return $82e068a44c11e855$var$h((0, $jfrfr$PatternDefsProvider), {\n resolveID: $5VyZI.resolveID,\n scalePattern: $5VyZI.scalePattern\n }, $82e068a44c11e855$var$h(\"g.divisions\", children));\n}\n\n\nexport {$82e068a44c11e855$export$d54fdbabca27e53 as MinimalUnit, $82e068a44c11e855$export$1d8b9ae22d404866 as Unit, $82e068a44c11e855$export$b4f0ca233b98f9af as LabeledUnit, $82e068a44c11e855$export$5d1cdfabe8dc8085 as UnitBoxes};\n//# sourceMappingURL=column-views.2d957a97.js.map\n","import {\n ColumnAxisType,\n ColumnContext,\n ColumnLayoutContext,\n ForeignObject,\n PatternDefsProvider,\n useColumn,\n useGeologicPattern,\n zigZagBoxPath,\n} from \"@macrostrat/column-components\";\nimport { SizeAwareLabel, Clickable } from \"@macrostrat/ui-components\";\nimport hyper from \"@macrostrat/hyper\";\nimport { forwardRef, ReactNode, useContext, useMemo } from \"react\";\nimport { resolveID, scalePattern } from \"./resolvers\";\nimport { useUnitSelectionTarget } from \"./selection\";\nimport { IUnit } from \"./types\";\nimport styles from \"./boxes.module.sass\";\nimport classNames from \"classnames\";\nimport { getUnitHeightRange } from \"../prepare-units/utils\";\nimport { useLithologies } from \"../data-provider\";\nimport { getMixedUnitColor } from \"./colors\";\nimport type { RectBounds } from \"./types\";\n\nconst h = hyper.styled(styles);\n\ninterface UnitRectOptions {\n widthFraction?: number;\n axisType?: ColumnAxisType;\n // Padding to create overflow for zig-zags or other ornamented edges\n padding?: number;\n}\n\ninterface UnitProps extends Clickable, Partial<RectBounds>, UnitRectOptions {\n division: IUnit;\n resolveID?(IUnit): string;\n UUID?: string;\n defaultFill?: string;\n widthFraction?: number;\n children?: ReactNode;\n className?: string;\n fill?: string;\n backgroundColor?: string;\n patternColor?: string;\n patternID?: string | number;\n}\n\nexport interface LabeledUnitProps\n extends UnitRectOptions,\n Clickable,\n Partial<RectBounds> {\n division: IUnit;\n patternID?: string | number;\n label: string;\n onLabelUpdated?(label: string, shown: boolean);\n halfWidth?: boolean;\n showLabel?: boolean;\n backgroundColor?: string;\n}\n\nfunction useUnitRect(\n division: IUnit,\n options: UnitRectOptions = {},\n): RectBounds {\n const {\n widthFraction = 1,\n axisType = ColumnAxisType.AGE,\n padding = 0,\n } = options;\n const { scale } = useContext(ColumnContext);\n const { width } = useContext(ColumnLayoutContext);\n\n const [bottomHeight, topHeight] = getUnitHeightRange(division, axisType);\n\n const y = scale(topHeight);\n const height = Math.abs(scale(bottomHeight) - y);\n\n return {\n x: width * (1 - widthFraction) - padding,\n y: y - padding,\n height: height + padding * 2,\n width: widthFraction * width + padding * 2,\n };\n}\n\nexport function MinimalUnit(props) {\n const {\n division: d,\n children,\n className,\n widthFraction = 1,\n axisType: _, // not sure why this is brought in...\n nColumns: __,\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const lithMap = useLithologies();\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n };\n\n const backgroundColor = getMixedUnitColor(d, lithMap, null, false);\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n return h(\n \"g.unit\",\n {\n className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n \"--column-stroke-color\": backgroundColor,\n },\n },\n [\n h(\"rect.unit.background\", {\n ref,\n ...bounds,\n fill: backgroundColor,\n fillOpacity: 0.8,\n stroke: backgroundColor,\n onClick,\n }),\n h.if(selected)(\"rect.selection-overlay\", bounds),\n ],\n );\n}\n\nfunction Unit(props: UnitProps) {\n const {\n division: d,\n children,\n fill,\n defaultFill = \"transparent\",\n className,\n widthFraction = 1,\n backgroundColor,\n patternColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n\n const hasOverflowTop = d.t_clip_pos != null;\n const hasOverflowBottom = d.b_clip_pos != null;\n\n const bounds = {\n ...useUnitRect(d, { widthFraction, axisType }),\n ...baseBounds,\n overflowTop: hasOverflowTop,\n overflowBottom: hasOverflowBottom,\n };\n const _patternID = patternID ?? resolveID(d);\n let _fill = fill ?? useGeologicPattern(_patternID, defaultFill);\n\n const hasBackgroundColor = backgroundColor != null;\n\n const _className = classNames(className, { colored: hasBackgroundColor });\n\n const [ref, selected, onClick] = useUnitSelectionTarget(d);\n\n //const key = `unit-${d.unit_id}`;\n\n return h(\n \"g.unit\",\n {\n className: _className,\n style: {\n \"--column-unit-background-color\": backgroundColor,\n },\n },\n [\n h(UnitRect, {\n ...bounds,\n fill: backgroundColor,\n onClick,\n className: \"background\",\n }),\n h(UnitRect, {\n ref,\n ...bounds,\n fill: _fill,\n //mask,\n onClick,\n className: \"unit\",\n }),\n h.if(selected)(UnitRect, { ...bounds, className: \"selection-overlay\" }),\n //defs,\n children,\n ],\n );\n}\n\ninterface UnitRectProps {\n x: number;\n y: number;\n width: number;\n height: number;\n className: string;\n // Used to determine if the rect should have a zig-zag edge on the top or bottom\n overflowTop?: boolean;\n overflowBottom?: boolean;\n [key: string]: any;\n}\n\nconst UnitRect = forwardRef((props: UnitRectProps, ref) => {\n const {\n x,\n y,\n width,\n height,\n overflowTop = false,\n overflowBottom = false,\n ...rest\n } = props;\n\n if (!overflowTop && !overflowBottom) {\n return h(\"rect\", {\n x,\n y,\n width,\n height,\n ref,\n ...rest,\n });\n } else {\n const d = zigZagBoxPath(x, y, width, height, overflowTop, overflowBottom);\n return h(\"path\", {\n d,\n ref,\n ...rest,\n });\n }\n});\n\nfunction LabeledUnit(props: LabeledUnitProps) {\n const {\n division,\n label,\n onLabelUpdated,\n widthFraction,\n showLabel = true,\n backgroundColor,\n patternID,\n axisType: _, // not sure why this is brought in...\n ...baseBounds\n } = props;\n\n const { axisType } = useColumn();\n const bounds = {\n ...useUnitRect(division, { widthFraction, axisType }),\n ...baseBounds,\n };\n const { width, height } = bounds;\n return h(\n Unit,\n {\n className: \"labeled-unit\",\n division,\n backgroundColor,\n patternID,\n ...bounds,\n },\n [\n h.if(showLabel)(\n ForeignObject,\n { ...bounds, className: \"unit-label-container\" },\n h(SizeAwareLabel, {\n className: \"unit-overlay\",\n labelClassName: \"unit-label\",\n style: { width, height },\n label,\n onVisibilityChanged(viz) {\n onLabelUpdated(label, viz);\n },\n }),\n ),\n ],\n );\n}\n\nfunction UnitBoxes<T>(props: {\n unitComponent: React.FunctionComponent<{ division: T }>;\n unitComponentProps?: any;\n transformDivisions?(divisions: T[]): T[];\n transformDivision?: (\n division: any,\n index: number,\n divisions: any[],\n ) => T | null;\n}) {\n const { unitComponent = Unit, unitComponentProps = {} } = props;\n const { divisions } = useContext(ColumnContext);\n\n if (divisions.length == 0) {\n console.warn(\"No divisions found in column context\");\n return null;\n }\n\n const children = useMemo(() => {\n return divisions.map((division: any, i) => {\n // @ts-ignore\n return h(unitComponent, {\n division,\n key: division.unit_id,\n ...unitComponentProps,\n });\n });\n }, [divisions, unitComponent, unitComponentProps]);\n\n return h(\n PatternDefsProvider,\n { resolveID, scalePattern },\n h(\"g.divisions\", children),\n );\n}\n\nexport { LabeledUnit, Unit, UnitBoxes, UnitProps };\n"],"names":["ColumnAxisType","$jfrfr$ColumnAxisType","ColumnContext","$jfrfr$ColumnContext","ColumnLayoutContext","$jfrfr$ColumnLayoutContext","useColumn","$jfrfr$useColumn","useGeologicPattern","$jfrfr$useGeologicPattern","zigZagBoxPath","$jfrfr$zigZagBoxPath","ForeignObject","$jfrfr$ForeignObject","PatternDefsProvider","$jfrfr$PatternDefsProvider","SizeAwareLabel","$jfrfr$SizeAwareLabel","$jfrfr$macrostrathyper","useContext","$jfrfr$useContext","forwardRef","$jfrfr$forwardRef","useMemo","$jfrfr$useMemo","$jfrfr$classnames","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$5VyZI","$a3mb1","$klU0I","$iWhRv","$lgTAP","$bfmPX","$82e068a44c11e855$var$h","styled","a","__esModule","default","$82e068a44c11e855$var$useUnitRect","division","options","widthFraction","axisType","AGE","padding","scale","width","bottomHeight","topHeight","getUnitHeightRange","y","height","Math","abs","x","$82e068a44c11e855$export$d54fdbabca27e53","props","d","children","className","_","nColumns","__","baseBounds","lithMap","useLithologies","bounds","backgroundColor","getMixedUnitColor","ref","selected","onClick","useUnitSelectionTarget","style","fill","fillOpacity","stroke","if","$82e068a44c11e855$export$1d8b9ae22d404866","defaultFill","patternColor","patternID","hasOverflowTop","t_clip_pos","hasOverflowBottom","b_clip_pos","overflowTop","overflowBottom","_patternID","resolveID","_fill","_className","colored","$82e068a44c11e855$var$UnitRect","rest","$82e068a44c11e855$export$b4f0ca233b98f9af","label","onLabelUpdated","showLabel","labelClassName","onVisibilityChanged","viz","$82e068a44c11e855$export$5d1cdfabe8dc8085","unitComponent","unitComponentProps","divisions","length","console","warn","map","i","key","unit_id","scalePattern","MinimalUnit","Unit","LabeledUnit","UnitBoxes"],"version":3,"file":"column-views.2d957a97.js.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
.column-container_afc440,body.light-mode .column-container_afc440{--column-background-color:var(--background-color,#fff);--column-stroke-color:var(--text-emphasized-color,#000);--column-text-color:var(--text-emphasized-color,#000)}@media (prefers-color-scheme:dark){body:not(.light-mode) .column-container_afc440{--column-background-color:var(--background-color,#000);--column-stroke-color:var(--text-emphasized-color,#fff);--column-text-color:var(--text-emphasized-color,#fff);color-scheme:dark;color:var(--column-text-color)}body:not(.light-mode) .column-container_afc440 .timescale{color:#000}body:not(.light-mode) .column-container_afc440 svg pattern image{filter:invert()}}body.dark-mode .column-container_afc440{--column-background-color:var(--background-color,#000);--column-stroke-color:var(--text-emphasized-color,#fff);--column-text-color:var(--text-emphasized-color,#fff);color-scheme:dark;color:var(--column-text-color)}body.dark-mode .column-container_afc440 .timescale{color:#000}body.dark-mode .column-container_afc440 svg pattern image{filter:invert()}.column-container_afc440 .column{flex-direction:row;height:fit-content;display:flex;position:relative}.column-container_afc440 g.lithology-column .column-clip-frame{stroke:none}.column-container_afc440 .unit{stroke:var(--column-stroke-color);stroke-width:1px}.column-container_afc440 .selection-overlay{fill:var(--selection-overlay-color,red);fill-opacity:var(--selection-overlay-opacity,.5)}.column-container_afc440 g.lithology-column use.frame{stroke:var(--column-stroke-color);pointer-events:none;stroke-width:1.5px!important}.column-container_afc440 .unit-label{text-align:center}.column-container_afc440 .col-note-label{margin:1px 0;font-size:10px;line-height:9px;border-left:none!important}.column-container_afc440 g.height-range{display:none}.column-container_afc440 .note-inner{border:none;padding:1px}.column-container_afc440 .frame rect{fill:#0000}.column-container_afc440 .default-buttons{width:100%;margin:0 -10px}.column-container_afc440 div.section{flex-direction:row;display:flex}.column-container_afc440 .section .divisions .unit{cursor:pointer}.column-container_afc440 .timescale{width:calc((1.5em + 1.5px)*var(--timescale-level-count,4));--timescale-level-size:1.5em}.timescale-column_afc440{position:relative}.section-main_afc440{margin-bottom:-4px;position:relative}.section-units-container_afc440,.main-column_afc440{position:relative}.unconformity-labels_afc440{pointer-events:none;position:absolute;top:0;left:0}.unconformity_afc440{text-align:center;justify-content:center;align-items:center;font-size:.8em;display:flex;position:absolute;top:0}.unconformity_afc440.giga_afc440{font-size:1em;font-weight:800}.unconformity_afc440.mega_afc440{font-size:.9em;font-weight:700}.unconformity_afc440.large_afc440{font-weight:600}.unconformity_afc440.small_afc440{font-weight:300}.unconformity-text_afc440{width:var(--column-width);color:var(--column-stroke-color);--unit-font-style:normal}.column-title-row_afc440{flex-direction:row;justify-content:space-between;align-items:baseline;gap:1em;display:flex}
|
|
2
|
-
/*# sourceMappingURL=column-views.307661d1.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"ACAA,uOAWE,mCACE,qQAOI,qEAEA,kFAIN,8PAOE,8DAIF,0EAIE,sGAOA,2EAIA,kFAKA,qI,yIASF,uDAGA,gH,qD,6D,gD,oE,qE,kE,4H,2C,0DAqCF,sEAQE,+E,qIAcA,+D,gE,kDAcA,kD,8G","sources":["column-views.307661d1.css","packages/column-views/src/column.module.sass"],"sourcesContent":[".column-container_afc440, body.light-mode .column-container_afc440 {\n --column-background-color: var(--background-color, #fff);\n --column-stroke-color: var(--text-emphasized-color, #000);\n --column-text-color: var(--text-emphasized-color, #000);\n}\n\n@media (prefers-color-scheme: dark) {\n body:not(.light-mode) .column-container_afc440 {\n --column-background-color: var(--background-color, #000);\n --column-stroke-color: var(--text-emphasized-color, #fff);\n --column-text-color: var(--text-emphasized-color, #fff);\n color-scheme: dark;\n color: var(--column-text-color);\n }\n\n body:not(.light-mode) .column-container_afc440 .timescale {\n color: #000;\n }\n\n body:not(.light-mode) .column-container_afc440 svg pattern image {\n filter: invert();\n }\n}\n\nbody.dark-mode .column-container_afc440 {\n --column-background-color: var(--background-color, #000);\n --column-stroke-color: var(--text-emphasized-color, #fff);\n --column-text-color: var(--text-emphasized-color, #fff);\n color-scheme: dark;\n color: var(--column-text-color);\n}\n\nbody.dark-mode .column-container_afc440 .timescale {\n color: #000;\n}\n\nbody.dark-mode .column-container_afc440 svg pattern image {\n filter: invert();\n}\n\n.column-container_afc440 .column {\n flex-direction: row;\n height: fit-content;\n display: flex;\n position: relative;\n}\n\n.column-container_afc440 g.lithology-column .column-clip-frame {\n stroke: none;\n}\n\n.column-container_afc440 .unit {\n stroke: var(--column-stroke-color);\n stroke-width: 1px;\n}\n\n.column-container_afc440 .selection-overlay {\n fill: var(--selection-overlay-color, red);\n fill-opacity: var(--selection-overlay-opacity, .5);\n}\n\n.column-container_afc440 g.lithology-column use.frame {\n stroke: var(--column-stroke-color);\n pointer-events: none;\n stroke-width: 1.5px !important;\n}\n\n.column-container_afc440 .unit-label {\n text-align: center;\n}\n\n.column-container_afc440 .col-note-label {\n margin: 1px 0;\n font-size: 10px;\n line-height: 9px;\n border-left: none !important;\n}\n\n.column-container_afc440 g.height-range {\n display: none;\n}\n\n.column-container_afc440 .note-inner {\n border: none;\n padding: 1px;\n}\n\n.column-container_afc440 .frame rect {\n fill: #0000;\n}\n\n.column-container_afc440 .default-buttons {\n width: 100%;\n margin: 0 -10px;\n}\n\n.column-container_afc440 div.section {\n flex-direction: row;\n display: flex;\n}\n\n.column-container_afc440 .section .divisions .unit {\n cursor: pointer;\n}\n\n.column-container_afc440 .timescale {\n width: calc((1.5em + 1.5px) * var(--timescale-level-count, 4));\n --timescale-level-size: 1.5em;\n}\n\n.timescale-column_afc440 {\n position: relative;\n}\n\n.section-main_afc440 {\n margin-bottom: -4px;\n position: relative;\n}\n\n.section-units-container_afc440, .main-column_afc440 {\n position: relative;\n}\n\n.unconformity-labels_afc440 {\n pointer-events: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.unconformity_afc440 {\n text-align: center;\n justify-content: center;\n align-items: center;\n font-size: .8em;\n display: flex;\n position: absolute;\n top: 0;\n}\n\n.unconformity_afc440.giga_afc440 {\n font-size: 1em;\n font-weight: 800;\n}\n\n.unconformity_afc440.mega_afc440 {\n font-size: .9em;\n font-weight: 700;\n}\n\n.unconformity_afc440.large_afc440 {\n font-weight: 600;\n}\n\n.unconformity_afc440.small_afc440 {\n font-weight: 300;\n}\n\n.unconformity-text_afc440 {\n width: var(--column-width);\n color: var(--column-stroke-color);\n --unit-font-style: normal;\n}\n\n.column-title-row_afc440 {\n flex-direction: row;\n justify-content: space-between;\n align-items: baseline;\n gap: 1em;\n display: flex;\n}\n/*# sourceMappingURL=column-views.307661d1.css.map */\n",".column-container, body:global(.light-mode) .column-container\n --column-background-color: var(--background-color, #fff)\n --column-stroke-color: var(--text-emphasized-color, #000)\n --column-text-color: var(--text-emphasized-color, #000)\n\n/* We have to duplicate the dark mode styles here\n because we want to set them either if the preferred\n color scheme is dark OR if dark mode is explicitly enabled.\n If dark mode is explicitly enabled, we want to override\n the media query. */\n@media (prefers-color-scheme: dark)\n body:not(:global(.light-mode)) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\nbody:global(.dark-mode) .column-container\n --column-background-color: var(--background-color, #000)\n --column-stroke-color: var(--text-emphasized-color, #fff)\n --column-text-color: var(--text-emphasized-color, #fff)\n color-scheme: dark\n color: var(--column-text-color)\n :global\n .timescale\n color: #000\n svg pattern image\n filter: invert(100%)\n\n.column-container :global\n .column\n display: flex\n flex-direction: row\n position: relative\n height: fit-content\n\n g.lithology-column .column-clip-frame\n stroke: none\n\n .unit\n stroke: var(--column-stroke-color)\n stroke-width: 1px\n\n .selection-overlay\n fill: var(--selection-overlay-color, red)\n fill-opacity: var(--selection-overlay-opacity, 0.5)\n\n g.lithology-column use.frame\n stroke: var(--column-stroke-color)\n stroke-width: 1.5px !important\n pointer-events: none\n\n.column-container :global .unit-label\n text-align: center\n\n.column-container :global .col-note-label\n font-size: 10px\n line-height: 9px\n border-left: none !important\n margin: 1px 0\n\n.column-container :global g.height-range\n display: none\n\n.column-container :global .note-inner\n border: none\n padding: 1px\n\n.column-container :global .frame rect\n fill: transparent\n\n.column-container :global .default-buttons\n width: 100%\n margin: 0 -10px\n\n.column-container :global div.section\n display: flex\n flex-direction: row\n\n.column-container :global .section .divisions .unit\n cursor: pointer\n\n.column-container :global(.timescale)\n width: calc(calc(1.5em + 1.5px) * var(--timescale-level-count, 4))\n --timescale-level-size: 1.5em\n\n.timescale-column\n position: relative\n\n.section-main\n position: relative\n margin-bottom: -4px\n\n.section-units-container\n position: relative\n\n.main-column\n position: relative\n\n.unconformity-labels\n position: absolute\n top: 0\n left: 0\n pointer-events: none\n\n\n.unconformity\n text-align: center\n position: absolute\n top: 0px\n display: flex\n justify-content: center\n align-items: center\n font-size: 0.8em\n &.giga\n font-weight: 800\n font-size: 1em\n &.mega\n font-weight: 600\n font-weight: 700\n font-size: 0.9em\n &.large\n font-weight: 600\n &.small\n font-weight: 300\n\n\n.unconformity-text\n width: var(--column-width)\n color: var(--column-stroke-color)\n --unit-font-style: normal\n\n\n.column-title-row\n display: flex\n flex-direction: row\n gap: 1em\n justify-content: space-between\n align-items: baseline\n"],"names":[],"version":3,"file":"column-views.307661d1.css.map","sourceRoot":"../../../../"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./column-views.8cfed88b.js";import{ColumnAxisType as e}from"@macrostrat/column-components";import{scaleLinear as t}from"d3-scale";var a=globalThis,n={},i={},l=a.parcelRequirea149;null==l&&((l=function(e){if(e in n)return n[e].exports;if(e in i){var t=i[e];delete i[e];var a={id:e,exports:{}};return n[e]=a,t.call(a.exports,a,a.exports),a.exports}var l=Error("Cannot find module '"+e+"'");throw l.code="MODULE_NOT_FOUND",l}).register=function(e,t){i[e]=t},a.parcelRequirea149=l),l.register;var o=l("iWhRv");function r(e,t){let a=t/2,n=0,i=[];for(let l of e){let{domain:e,pixelScale:o}=l,[r,s]=e,c=`package-${r}-${s}`;i.push({...f(l,a),key:c,offset:a,paddingTop:a-n}),a=(n=a+o*Math.abs(r-s))+t}return{totalHeight:a+=t/2,sections:i}}function s(e,t){let{totalHeight:a,sections:n}=r(e.map(e=>e.scaleInfo),t),i=[];for(let t in e){let a=e[t],l=n[t];i.push({...a,key:l.key,scaleInfo:l})}return{totalHeight:a,sections:i}}function c(e,t){return e.map(e=>u(e,t))}function u(t,a){let{t_age:n,b_age:i,units:l}=t,r=null;null!=n&&null!=i&&a.axisType==e.AGE&&(r=[i,n]);let s=function(t,a){let{targetUnitHeight:n=20,minPixelScale:i=.2,axisType:l,minSectionHeight:r}=a,s=a.domain??function(t,a){if(null==a)throw Error("Axis type is not set");if(a===e.AGE){let e=Math.min(...t.map(e=>e.t_age));return[Math.max(...t.map(e=>e.b_age)),e]}if(a==e.DEPTH||a==e.ORDINAL){let e=Math.min(...t.map(e=>e.t_pos));return[Math.max(...t.map(e=>e.b_pos)),e]}if(a==e.HEIGHT){let e=Math.max(...t.map(e=>e.t_pos));return[Math.min(...t.map(e=>e.b_pos)),e]}}(t,l),c=Math.abs(s[0]-s[1]),u=a.pixelScale;null==u&&(u=Math.max(n/function(e,t){let a=e.map(e=>{let[a,n]=(0,o.getUnitHeightRange)(e,t);return Math.abs(a-n)});return a.reduce((e,t)=>e+t,0)/a.length}(t,l),i));let p=c*u;return f({domain:s,pixelScale:u=(p=Math.max(p,r??n??0))/c},0)}(l,{...a,domain:r});return{...t,scaleInfo:s}}function f(e,a=0){let{domain:n,pixelScale:i}=e,l=i*Math.abs(n[0]-n[1]);return{domain:n,pixelScale:i,pixelHeight:l,scale:t().domain([n[1],n[0]]).range([a,l+a])}}function p(e,t=!1){let a=[];for(let t of e){let{pixelHeight:e,offset:n,domain:i}=t.scaleInfo;a.push([i[1],n]),a.push([i[0],n+e])}a.sort((e,t)=>e[0]-t[0]);let n=e=>{let t=0,n=null;for(let[i,l]of a){if(e<=i){let a=i-n;if(0===a)return l;let o=(l-t)/a;return t+(e-n)*o}n=i,t=l}};return n.copy=()=>p(e,t),n.domain=()=>{let t=e[0].scaleInfo.domain,a=e[e.length-1].scaleInfo.domain;return t[0]<a[0]?[Math.min(...t),Math.max(...a)]:[Math.max(...t),Math.min(...a)]},n.invert=t=>{for(let a of e){let{pixelHeight:e,pixelScale:n,offset:i,domain:l}=a.scaleInfo;if(t>=i&&t<=i+e&&n>0)return l[1]+(t-i)/n;l[1]}return null},n}function m(e,t,a){let n=[],i=null;for(let l of e){if(null==i){i=l;continue}Math.abs(l.t_age-i.b_age)*Math.max(i.scaleInfo.pixelScale,l.scaleInfo.pixelScale)<t?i=u({units:[...i.units,...l.units],section_id:[...(0,o.ensureArray)(i.section_id),...(0,o.ensureArray)(l.section_id)],t_age:Math.min(i.t_age,l.t_age),b_age:Math.max(i.b_age,l.b_age)},a):(n.push(i),i=l)}return null!=i&&n.push(i),n}export{r as buildCompositeScaleInfo,f as createPackageScale,s as finalizeSectionHeights,c as computeSectionHeights,p as createCompositeScale,m as collapseUnconformitiesByPixelHeight};
|
|
2
|
-
//# sourceMappingURL=column-views.33752461.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["<anon>","packages/column-views/src/prepare-units/composite-scale.ts"],"sourcesContent":["import \"./column-views.8cfed88b.js\";\nimport {ColumnAxisType as $d6XP3$ColumnAxisType} from \"@macrostrat/column-components\";\nimport {scaleLinear as $d6XP3$scaleLinear} from \"d3-scale\";\n\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirea149\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirea149\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\n\n\nvar $iWhRv = parcelRequire(\"iWhRv\");\n\nfunction $8054a162cb094378$export$e7184dd8bb3302ed(inputScales, unconformityHeight) {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */ let totalHeight = unconformityHeight / 2;\n let lastSectionTopHeight = 0;\n const packages2 = [];\n for (const group of inputScales){\n const { domain: domain, pixelScale: pixelScale } = group;\n const [b_age, t_age] = domain;\n const key = `package-${b_age}-${t_age}`;\n packages2.push({\n ...$8054a162cb094378$export$d6235b492bceb8c5(group, totalHeight),\n key: key,\n offset: totalHeight,\n // Unconformity height above this particular section\n paddingTop: totalHeight - lastSectionTopHeight\n });\n const pixelHeight = pixelScale * Math.abs(b_age - t_age);\n lastSectionTopHeight = totalHeight + pixelHeight;\n totalHeight = lastSectionTopHeight + unconformityHeight;\n }\n totalHeight += unconformityHeight / 2;\n return {\n totalHeight: totalHeight,\n sections: packages2\n };\n}\nfunction $8054a162cb094378$export$67442a0f5bef147b(sections, unconformityHeight) {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */ const sectionScales = sections.map((d)=>d.scaleInfo);\n const { totalHeight: totalHeight, sections: packages } = $8054a162cb094378$export$e7184dd8bb3302ed(sectionScales, unconformityHeight);\n // This could perhaps be simplified.\n const sections1 = [];\n for(const i in sections){\n const group = sections[i];\n const scaleInfo = packages[i];\n sections1.push({\n ...group,\n key: scaleInfo.key,\n scaleInfo: scaleInfo\n });\n }\n return {\n totalHeight: totalHeight,\n sections: sections1\n };\n}\nfunction $8054a162cb094378$export$7d3f3129a1a4b84e(sections, opts) {\n return sections.map((group)=>{\n return $8054a162cb094378$var$addScaleToSection(group, opts);\n });\n}\nfunction $8054a162cb094378$var$addScaleToSection(group, opts) {\n const { t_age: t_age, b_age: b_age, units: units } = group;\n let _range = null;\n // if t_age and b_age are set for a group, use them to define the range...\n if (t_age != null && b_age != null && opts.axisType == (0, $d6XP3$ColumnAxisType).AGE) _range = [\n b_age,\n t_age\n ];\n const scaleInfo = $8054a162cb094378$var$buildSectionScale(units, {\n ...opts,\n domain: _range\n });\n return {\n ...group,\n scaleInfo: scaleInfo\n };\n}\nfunction $8054a162cb094378$var$buildSectionScale(data, opts) {\n const { targetUnitHeight: targetUnitHeight = 20, minPixelScale: minPixelScale = 0.2, axisType: axisType, minSectionHeight: minSectionHeight } = opts;\n const domain = opts.domain ?? $8054a162cb094378$var$findSectionHeightRange(data, axisType);\n const dAge = Math.abs(domain[0] - domain[1]);\n let _pixelScale = opts.pixelScale;\n if (_pixelScale == null) {\n const avgAgeRange = $8054a162cb094378$var$findAverageUnitHeight(data, axisType);\n // Get pixel height necessary to render average unit at target height\n _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);\n // OLD METHOD that cares about overall section height vs. individual unit height\n // 0.2 pixel per myr is the floor scale\n //const targetHeight = targetUnitHeight * data.length;\n // 1 pixel per myr is the floor scale\n //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);\n }\n let height = dAge * _pixelScale;\n // If height is less than minSectionHeight, set it to minSectionHeight\n const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;\n height = Math.max(height, _minSectionHeight);\n _pixelScale = height / dAge;\n return $8054a162cb094378$export$d6235b492bceb8c5({\n domain: domain,\n pixelScale: _pixelScale\n }, 0);\n}\nfunction $8054a162cb094378$export$d6235b492bceb8c5(def, offset = 0) {\n /** Build a section scale */ // Domain should be oriented from bottom to top, but scale is oriented from top to bottom\n const { domain: domain, pixelScale: pixelScale } = def;\n const pixelHeight = pixelScale * Math.abs(domain[0] - domain[1]);\n return {\n domain: domain,\n pixelScale: pixelScale,\n pixelHeight: pixelHeight,\n scale: (0, $d6XP3$scaleLinear)().domain([\n domain[1],\n domain[0]\n ]).range([\n offset,\n pixelHeight + offset\n ])\n };\n}\nfunction $8054a162cb094378$var$findSectionHeightRange(data, axisType) {\n if (axisType == null) throw new Error(\"Axis type is not set\");\n if (axisType === (0, $d6XP3$ColumnAxisType).AGE) {\n const t_age = Math.min(...data.map((d)=>d.t_age));\n const b_age = Math.max(...data.map((d)=>d.b_age));\n return [\n b_age,\n t_age\n ];\n } else if (axisType == (0, $d6XP3$ColumnAxisType).DEPTH || axisType == (0, $d6XP3$ColumnAxisType).ORDINAL) {\n const t_pos = Math.min(...data.map((d)=>d.t_pos));\n const b_pos = Math.max(...data.map((d)=>d.b_pos));\n return [\n b_pos,\n t_pos\n ];\n } else if (axisType == (0, $d6XP3$ColumnAxisType).HEIGHT) {\n const t_pos = Math.max(...data.map((d)=>d.t_pos));\n const b_pos = Math.min(...data.map((d)=>d.b_pos));\n return [\n b_pos,\n t_pos\n ];\n }\n}\nfunction $8054a162cb094378$var$findAverageUnitHeight(data, axisType) {\n const unitHeights = data.map((d)=>{\n const [b_pos, t_pos] = (0, $iWhRv.getUnitHeightRange)(d, axisType);\n return Math.abs(b_pos - t_pos);\n });\n return unitHeights.reduce((a, b)=>a + b, 0) / unitHeights.length;\n}\nfunction $8054a162cb094378$export$3ada7641926a616d(sections, interpolateUnconformities = false) {\n /** Create a scale that works across multiple packages */ // Get surfaces at which scale breaks\n let scaleBreaks = [];\n for (const section of sections){\n const { pixelHeight: pixelHeight, offset: offset, domain: domain } = section.scaleInfo;\n scaleBreaks.push([\n domain[1],\n offset\n ]);\n scaleBreaks.push([\n domain[0],\n offset + pixelHeight\n ]);\n }\n // Sort the scale breaks by age\n scaleBreaks.sort((a, b)=>a[0] - b[0]);\n const scale = (age)=>{\n // Accumulate scale breaks and pixel height\n let lastHeight = 0;\n let lastAge = null;\n for (const [age1, height] of scaleBreaks){\n if (age <= age1) {\n let deltaAge = age1 - lastAge;\n if (deltaAge === 0) // If the age is exactly at a scale break, return the height at that break\n return height;\n let pixelScale = (height - lastHeight) / deltaAge;\n return lastHeight + (age - lastAge) * pixelScale;\n }\n lastAge = age1;\n lastHeight = height;\n }\n };\n scale.copy = ()=>{\n return $8054a162cb094378$export$3ada7641926a616d(sections, interpolateUnconformities);\n };\n scale.domain = ()=>{\n /** Return the domain of the scale */ const firstSection = sections[0].scaleInfo.domain;\n const lastSection = sections[sections.length - 1].scaleInfo.domain;\n if (firstSection[0] < lastSection[0]) return [\n Math.min(...firstSection),\n Math.max(...lastSection)\n ];\n else // Catches \"normal\" axes like height\n return [\n Math.max(...firstSection),\n Math.min(...lastSection)\n ];\n };\n scale.invert = (pixelHeight)=>{\n /** Invert the scale to get the age at a given pixel height */ // Iterate through the sections to find the correct one\n let lastAge = null;\n for (const section of sections){\n const { pixelHeight: sectionHeight, pixelScale: pixelScale, offset: offset, domain: domain } = section.scaleInfo;\n if (pixelHeight >= offset && pixelHeight <= offset + sectionHeight && pixelScale > 0) {\n const age = domain[1] + (pixelHeight - offset) / pixelScale;\n return age;\n }\n lastAge = domain[1];\n }\n return null;\n };\n return scale;\n}\nfunction $8054a162cb094378$export$edbf01b435c75274(sections, threshold, opts) {\n const newSections = [];\n let currentSection = null;\n for (const nextSection of sections){\n if (currentSection == null) {\n currentSection = nextSection;\n continue;\n }\n const dAge = Math.abs(nextSection.t_age - currentSection.b_age);\n const pxHeight = dAge * Math.max(currentSection.scaleInfo.pixelScale, nextSection.scaleInfo.pixelScale);\n if (pxHeight < threshold) {\n // We need to merge the sections\n const compositeSection0 = {\n units: [\n ...currentSection.units,\n ...nextSection.units\n ],\n section_id: [\n ...(0, $iWhRv.ensureArray)(currentSection.section_id),\n ...(0, $iWhRv.ensureArray)(nextSection.section_id)\n ],\n t_age: Math.min(currentSection.t_age, nextSection.t_age),\n b_age: Math.max(currentSection.b_age, nextSection.b_age)\n };\n const compositeSection = $8054a162cb094378$var$addScaleToSection(compositeSection0, opts);\n currentSection = compositeSection;\n } else {\n // We need to keep the section\n newSections.push(currentSection);\n currentSection = nextSection;\n }\n }\n if (currentSection != null) newSections.push(currentSection);\n return newSections;\n}\n\n\nexport {$8054a162cb094378$export$e7184dd8bb3302ed as buildCompositeScaleInfo, $8054a162cb094378$export$d6235b492bceb8c5 as createPackageScale, $8054a162cb094378$export$67442a0f5bef147b as finalizeSectionHeights, $8054a162cb094378$export$7d3f3129a1a4b84e as computeSectionHeights, $8054a162cb094378$export$3ada7641926a616d as createCompositeScale, $8054a162cb094378$export$edbf01b435c75274 as collapseUnconformitiesByPixelHeight};\n//# sourceMappingURL=column-views.33752461.js.map\n","import type { ExtUnit, SectionInfo } from \"./helpers\";\nimport { ColumnAxisType } from \"@macrostrat/column-components\";\nimport { ensureArray, getUnitHeightRange } from \"./utils\";\nimport { ScaleLinear, scaleLinear } from \"d3-scale\";\nimport { UnitLong } from \"@macrostrat/api-types\";\n\nexport interface ColumnHeightScaleOptions {\n /** A fixed pixel scale to use for the section (pixels per Myr) */\n pixelScale?: number;\n /** The target height of a constituent unit in pixels, for dynamic\n * scale generation */\n targetUnitHeight?: number;\n /** Min height of a section in pixels. Will override minPixelScale in some cases. */\n minSectionHeight?: number;\n /** The minimum pixel scale to use for the section (pixels per Myr). This is mostly\n * needed because small sections (<1-2 units) don't necessarily have space to comfortably\n * render two axis labels */\n minPixelScale?: number;\n // Axis scale type\n axisType?: ColumnAxisType;\n // Unconformity height in pixels\n unconformityHeight?: number;\n // Whether to collapse unconformities that are less than a height threshold\n collapseSmallUnconformities?: boolean | number;\n}\n\nexport interface SectionScaleOptions extends ColumnHeightScaleOptions {\n axisType: ColumnAxisType;\n domain: [number, number];\n}\n\nexport interface LinearScaleDef {\n domain: [number, number];\n pixelScale: number;\n}\n\n/** Output of a section scale. For now, this assumes that the\n * mapping is linear, but it could be extended to support arbitrary\n * scale functions.\n */\nexport interface PackageScaleInfo extends LinearScaleDef {\n pixelHeight: number;\n // TODO: add a function\n scale: ScaleLinear<number, number>;\n}\n\nexport type PackageScaleLayoutData = PackageScaleInfo & {\n // A unique key for the section to use in React\n key: string;\n offset: number;\n // How much to\n paddingTop: number;\n};\n\nexport type PackageLayoutData<T extends UnitLong = ExtUnit> = SectionInfo<T> & {\n scaleInfo: PackageScaleLayoutData;\n // A unique key for the section to use in React\n key: string;\n};\n\nexport interface CompositeScaleData {\n totalHeight: number;\n sections: PackageScaleLayoutData[];\n}\n\nexport interface ColumnScaleOptions extends ColumnHeightScaleOptions {\n axisType: ColumnAxisType;\n unconformityHeight: number;\n}\n\n// Composite scale information augmented with units in each package\n\nexport interface CompositeColumnData<T extends UnitLong = ExtUnit>\n extends Omit<CompositeScaleData, \"sections\"> {\n sections: PackageLayoutData<T>[];\n}\n\nexport function buildCompositeScaleInfo(\n inputScales: LinearScaleDef[],\n unconformityHeight: number,\n): CompositeScaleData {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n let totalHeight = unconformityHeight / 2;\n let lastSectionTopHeight = 0;\n\n const packages2: PackageScaleLayoutData[] = [];\n for (const group of inputScales) {\n const { domain, pixelScale } = group;\n const [b_age, t_age] = domain;\n const key = `package-${b_age}-${t_age}`;\n\n packages2.push({\n ...createPackageScale(group, totalHeight),\n key,\n offset: totalHeight,\n // Unconformity height above this particular section\n paddingTop: totalHeight - lastSectionTopHeight,\n });\n const pixelHeight = pixelScale * Math.abs(b_age - t_age);\n lastSectionTopHeight = totalHeight + pixelHeight;\n totalHeight = lastSectionTopHeight + unconformityHeight;\n }\n totalHeight += unconformityHeight / 2;\n return {\n totalHeight,\n sections: packages2,\n };\n}\n\nexport function finalizeSectionHeights<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n unconformityHeight: number,\n): CompositeColumnData<T> {\n /** Finalize the heights of sections, including the heights of unconformities\n * between them.\n */\n\n const sectionScales = sections.map((d) => d.scaleInfo);\n const { totalHeight, sections: packages } = buildCompositeScaleInfo(\n sectionScales,\n unconformityHeight,\n );\n\n // This could perhaps be simplified.\n const sections1: PackageLayoutData<T>[] = [];\n for (const i in sections) {\n const group = sections[i];\n const scaleInfo = packages[i];\n sections1.push({\n ...group,\n key: scaleInfo.key,\n scaleInfo,\n });\n }\n return {\n totalHeight,\n sections: sections1,\n };\n}\n\ninterface SectionInfoWithScale<T extends UnitLong = ExtUnit>\n extends SectionInfo<T> {\n scaleInfo: PackageScaleInfo;\n}\n\nexport function computeSectionHeights<T extends UnitLong>(\n sections: SectionInfo<T>[],\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n return sections.map((group) => {\n return addScaleToSection<T>(group, opts);\n });\n}\n\nfunction addScaleToSection<T extends UnitLong = ExtUnit>(\n group: SectionInfo<T>,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T> {\n const { t_age, b_age, units } = group;\n let _range = null;\n // if t_age and b_age are set for a group, use them to define the range...\n if (t_age != null && b_age != null && opts.axisType == ColumnAxisType.AGE) {\n _range = [b_age, t_age];\n }\n\n const scaleInfo = buildSectionScale<T>(units, {\n ...opts,\n domain: _range,\n });\n\n return {\n ...group,\n scaleInfo,\n };\n}\n\nfunction buildSectionScale<T extends UnitLong>(\n data: T[],\n opts: SectionScaleOptions,\n): PackageScaleInfo {\n const {\n targetUnitHeight = 20,\n minPixelScale = 0.2,\n axisType,\n minSectionHeight,\n } = opts;\n const domain = opts.domain ?? findSectionHeightRange(data, axisType);\n\n const dAge = Math.abs(domain[0] - domain[1]);\n\n let _pixelScale = opts.pixelScale;\n if (_pixelScale == null) {\n const avgAgeRange = findAverageUnitHeight(data, axisType);\n // Get pixel height necessary to render average unit at target height\n _pixelScale = Math.max(targetUnitHeight / avgAgeRange, minPixelScale);\n\n // OLD METHOD that cares about overall section height vs. individual unit height\n // 0.2 pixel per myr is the floor scale\n //const targetHeight = targetUnitHeight * data.length;\n // 1 pixel per myr is the floor scale\n //_pixelScale = Math.max(targetHeight / dAge, minPixelScale);\n }\n\n let height = dAge * _pixelScale;\n\n // If height is less than minSectionHeight, set it to minSectionHeight\n const _minSectionHeight = minSectionHeight ?? targetUnitHeight ?? 0;\n height = Math.max(height, _minSectionHeight);\n _pixelScale = height / dAge;\n\n return createPackageScale({ domain, pixelScale: _pixelScale }, 0);\n}\n\nexport function createPackageScale(\n def: LinearScaleDef,\n offset: number = 0,\n): PackageScaleInfo {\n /** Build a section scale */\n // Domain should be oriented from bottom to top, but scale is oriented from top to bottom\n const { domain, pixelScale } = def;\n const pixelHeight = pixelScale * Math.abs(domain[0] - domain[1]);\n return {\n domain,\n pixelScale,\n pixelHeight,\n scale: scaleLinear()\n .domain([domain[1], domain[0]])\n .range([offset, pixelHeight + offset]),\n };\n}\n\nfunction findSectionHeightRange(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): [number, number] {\n if (axisType == null) {\n throw new Error(\"Axis type is not set\");\n }\n if (axisType === ColumnAxisType.AGE) {\n const t_age = Math.min(...data.map((d) => d.t_age));\n const b_age = Math.max(...data.map((d) => d.b_age));\n return [b_age, t_age];\n } else if (\n axisType == ColumnAxisType.DEPTH ||\n axisType == ColumnAxisType.ORDINAL\n ) {\n const t_pos = Math.min(...data.map((d) => d.t_pos));\n const b_pos = Math.max(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n } else if (axisType == ColumnAxisType.HEIGHT) {\n const t_pos = Math.max(...data.map((d) => d.t_pos));\n const b_pos = Math.min(...data.map((d) => d.b_pos));\n return [b_pos, t_pos];\n }\n}\n\nfunction findAverageUnitHeight(\n data: UnitLong[],\n axisType: ColumnAxisType,\n): number {\n const unitHeights = data.map((d) => {\n const [b_pos, t_pos] = getUnitHeightRange(d, axisType);\n return Math.abs(b_pos - t_pos);\n });\n return unitHeights.reduce((a, b) => a + b, 0) / unitHeights.length;\n}\n\nexport interface CompositeColumnScale {\n (age: number): number | null;\n copy(): CompositeColumnScale;\n domain(): [number, number];\n invert(pixelHeight: number): number | null;\n}\n\nexport function createCompositeScale(\n sections: PackageLayoutData[],\n interpolateUnconformities: boolean = false,\n): CompositeColumnScale {\n /** Create a scale that works across multiple packages */\n // Get surfaces at which scale breaks\n let scaleBreaks: [number, number][] = [];\n for (const section of sections) {\n const { pixelHeight, offset, domain } = section.scaleInfo;\n\n scaleBreaks.push([domain[1], offset]);\n scaleBreaks.push([domain[0], offset + pixelHeight]);\n }\n // Sort the scale breaks by age\n scaleBreaks.sort((a, b) => a[0] - b[0]);\n\n const scale = (age) => {\n // Accumulate scale breaks and pixel height\n let lastHeight = 0;\n let lastAge = null;\n for (const [age1, height] of scaleBreaks) {\n if (age <= age1) {\n let deltaAge = age1 - lastAge;\n if (deltaAge === 0) {\n // If the age is exactly at a scale break, return the height at that break\n return height;\n }\n let pixelScale = (height - lastHeight) / deltaAge;\n return lastHeight + (age - lastAge) * pixelScale;\n }\n lastAge = age1;\n lastHeight = height;\n }\n };\n\n scale.copy = () => {\n return createCompositeScale(sections, interpolateUnconformities);\n };\n\n scale.domain = () => {\n /** Return the domain of the scale */\n const firstSection = sections[0].scaleInfo.domain;\n const lastSection = sections[sections.length - 1].scaleInfo.domain;\n if (firstSection[0] < lastSection[0]) {\n return [Math.min(...firstSection), Math.max(...lastSection)];\n } else {\n // Catches \"normal\" axes like height\n return [Math.max(...firstSection), Math.min(...lastSection)];\n }\n };\n\n scale.invert = (pixelHeight) => {\n /** Invert the scale to get the age at a given pixel height */\n // Iterate through the sections to find the correct one\n let lastAge = null;\n for (const section of sections) {\n const {\n pixelHeight: sectionHeight,\n pixelScale,\n offset,\n domain,\n } = section.scaleInfo;\n if (\n pixelHeight >= offset &&\n pixelHeight <= offset + sectionHeight &&\n pixelScale > 0\n ) {\n const age = domain[1] + (pixelHeight - offset) / pixelScale;\n return age;\n }\n lastAge = domain[1];\n }\n return null;\n };\n\n return scale as CompositeColumnScale;\n}\n\n/** Collapse sections separated by unconformities that are smaller than a given pixel height. */\nexport function collapseUnconformitiesByPixelHeight<T extends UnitLong>(\n sections: SectionInfoWithScale<T>[],\n threshold: number,\n opts: ColumnScaleOptions,\n): SectionInfoWithScale<T>[] {\n const newSections = [];\n let currentSection: SectionInfoWithScale<T> | null = null;\n for (const nextSection of sections) {\n if (currentSection == null) {\n currentSection = nextSection;\n continue;\n }\n const dAge = Math.abs(nextSection.t_age - currentSection.b_age);\n const pxHeight =\n dAge *\n Math.max(\n currentSection.scaleInfo.pixelScale,\n nextSection.scaleInfo.pixelScale,\n );\n if (pxHeight < threshold) {\n // We need to merge the sections\n const compositeSection0: SectionInfo<T> = {\n units: [...currentSection.units, ...nextSection.units],\n section_id: [\n ...ensureArray(currentSection.section_id),\n ...ensureArray(nextSection.section_id),\n ],\n t_age: Math.min(currentSection.t_age, nextSection.t_age),\n b_age: Math.max(currentSection.b_age, nextSection.b_age),\n };\n\n const compositeSection = addScaleToSection(compositeSection0, opts);\n currentSection = compositeSection;\n } else {\n // We need to keep the section\n newSections.push(currentSection);\n currentSection = nextSection;\n }\n }\n if (currentSection != null) {\n newSections.push(currentSection);\n }\n\n return newSections;\n}\n"],"names":["ColumnAxisType","$d6XP3$ColumnAxisType","scaleLinear","$d6XP3$scaleLinear","$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","$iWhRv","$8054a162cb094378$export$e7184dd8bb3302ed","inputScales","unconformityHeight","totalHeight","lastSectionTopHeight","packages2","group","domain","pixelScale","b_age","t_age","key","push","$8054a162cb094378$export$d6235b492bceb8c5","offset","paddingTop","Math","abs","sections","$8054a162cb094378$export$67442a0f5bef147b","packages","map","d","scaleInfo","sections1","i","$8054a162cb094378$export$7d3f3129a1a4b84e","opts","$8054a162cb094378$var$addScaleToSection","units","_range","axisType","AGE","$8054a162cb094378$var$buildSectionScale","data","targetUnitHeight","minPixelScale","minSectionHeight","$8054a162cb094378$var$findSectionHeightRange","min","max","DEPTH","ORDINAL","t_pos","b_pos","HEIGHT","dAge","_pixelScale","$8054a162cb094378$var$findAverageUnitHeight","unitHeights","getUnitHeightRange","reduce","a","b","length","height","def","pixelHeight","scale","range","$8054a162cb094378$export$3ada7641926a616d","interpolateUnconformities","scaleBreaks","section","sort","age","lastHeight","lastAge","age1","deltaAge","copy","firstSection","lastSection","invert","sectionHeight","$8054a162cb094378$export$edbf01b435c75274","threshold","newSections","currentSection","nextSection","pxHeight","section_id","ensureArray","buildCompositeScaleInfo","createPackageScale","finalizeSectionHeights","computeSectionHeights","createCompositeScale","collapseUnconformitiesByPixelHeight"],"version":3,"file":"column-views.33752461.js.map","sourceRoot":"../../../../"}
|