@macrostrat/column-views 1.0.3 → 2.0.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 +17 -0
- package/dist/esm/_shared.f7eec55a.js +9 -0
- package/dist/esm/_shared.f7eec55a.js.map +1 -0
- package/dist/esm/age-axis.4a8cf5e6.js +98 -0
- package/dist/esm/age-axis.4a8cf5e6.js.map +1 -0
- package/dist/esm/age-axis.module.03773a80.css +33 -0
- package/dist/esm/age-axis.module.03773a80.css.map +1 -0
- package/dist/esm/age-axis.module.3cc91335.js +22 -0
- package/dist/esm/age-axis.module.3cc91335.js.map +1 -0
- package/dist/esm/age-model-overlay.c7226855.js +57 -0
- package/dist/esm/age-model-overlay.c7226855.js.map +1 -0
- package/dist/esm/age-model-overlay.module.5d9e78fb.css +14 -0
- package/dist/esm/age-model-overlay.module.5d9e78fb.css.map +1 -0
- package/dist/esm/age-model-overlay.module.cd985dcb.js +16 -0
- package/dist/esm/age-model-overlay.module.cd985dcb.js.map +1 -0
- package/dist/esm/base.910b80b4.js +288 -0
- package/dist/esm/base.910b80b4.js.map +1 -0
- package/dist/esm/boxes.8292cff2.js +258 -0
- package/dist/esm/boxes.8292cff2.js.map +1 -0
- package/dist/esm/boxes.module.2b5fb18e.css +26 -0
- package/dist/esm/boxes.module.2b5fb18e.css.map +1 -0
- package/dist/esm/boxes.module.4ebc7796.js +19 -0
- package/dist/esm/boxes.module.4ebc7796.js.map +1 -0
- package/dist/esm/{carbon-isotopes.3b502a9e.js → carbon-isotopes.10db8285.js} +2 -2
- package/dist/esm/{carbon-isotopes.3b502a9e.js.map → carbon-isotopes.10db8285.js.map} +1 -1
- package/dist/esm/colors.395c6db5.js +40 -0
- package/dist/esm/colors.395c6db5.js.map +1 -0
- package/dist/esm/column-correlation.c8dcfe98.js +9 -0
- package/dist/esm/column-correlation.c8dcfe98.js.map +1 -0
- package/dist/esm/column-nav.5414677c.js +55 -0
- package/dist/esm/column-nav.5414677c.js.map +1 -0
- package/dist/esm/column-navigation.37cd3245.js +9 -0
- package/dist/esm/column-navigation.37cd3245.js.map +1 -0
- package/dist/esm/column.01d68dd8.js +127 -0
- package/dist/esm/column.01d68dd8.js.map +1 -0
- package/dist/esm/{column.db058031.js → column.a25f8ebd.js} +4 -4
- package/dist/esm/column.a25f8ebd.js.map +1 -0
- package/dist/esm/column.module.1b776e15.js +46 -0
- package/dist/esm/column.module.1b776e15.js.map +1 -0
- package/dist/esm/column.module.a67a6b4c.css +159 -0
- package/dist/esm/column.module.a67a6b4c.css.map +1 -0
- package/dist/esm/composite-scale.577bf64a.js +222 -0
- package/dist/esm/composite-scale.577bf64a.js.map +1 -0
- package/dist/esm/composite.039e4798.js +163 -0
- package/dist/esm/composite.039e4798.js.map +1 -0
- package/dist/esm/{core.4db8e452.js → core.843310d3.js} +11 -12
- package/dist/esm/core.843310d3.js.map +1 -0
- package/dist/esm/core.91ede078.js +206 -0
- package/dist/esm/core.91ede078.js.map +1 -0
- package/dist/esm/correlation-chart.abd8b346.js +9 -0
- package/dist/esm/correlation-chart.abd8b346.js.map +1 -0
- package/dist/esm/data-provider.1506eb64.js.map +1 -1
- package/dist/esm/data-provider.f10c6d0b.js +13 -0
- package/dist/esm/data-provider.f10c6d0b.js.map +1 -0
- package/dist/esm/fetch.99aec438.js +152 -0
- package/dist/esm/fetch.99aec438.js.map +1 -0
- package/dist/esm/hash-string.285b37fb.js +39 -0
- package/dist/esm/hash-string.285b37fb.js.map +1 -0
- package/dist/esm/helpers.2f0a0cb7.js +141 -0
- package/dist/esm/helpers.2f0a0cb7.js.map +1 -0
- package/dist/esm/index.d.ts +797 -130
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +13 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inset-map.3c18106d.js +66 -0
- package/dist/esm/inset-map.3c18106d.js.map +1 -0
- package/dist/esm/keyboard-navigation.6713401b.js +48 -0
- package/dist/esm/keyboard-navigation.6713401b.js.map +1 -0
- package/dist/esm/keyboard-navigation.a9fc80dd.js +112 -0
- package/dist/esm/keyboard-navigation.a9fc80dd.js.map +1 -0
- package/dist/esm/layers.033d3fb0.js +170 -0
- package/dist/esm/layers.033d3fb0.js.map +1 -0
- package/dist/esm/main.2e0375a5.js +221 -0
- package/dist/esm/main.2e0375a5.js.map +1 -0
- package/dist/esm/main.module.3dd9500b.css +134 -0
- package/dist/esm/main.module.3dd9500b.css.map +1 -0
- package/dist/esm/main.module.c09154b1.js +70 -0
- package/dist/esm/main.module.c09154b1.js.map +1 -0
- package/dist/esm/mapbox.cac42eed.js +167 -0
- package/dist/esm/mapbox.cac42eed.js.map +1 -0
- package/dist/esm/maps.bcdea9c1.js +11 -0
- package/dist/esm/maps.bcdea9c1.js.map +1 -0
- package/dist/esm/{names.f6a4e9a4.js → names.a8f2b452.js} +5 -5
- package/dist/esm/names.a8f2b452.js.map +1 -0
- package/dist/esm/panel.598f76a5.js +420 -0
- package/dist/esm/panel.598f76a5.js.map +1 -0
- package/dist/esm/panel.module.386166cc.js +58 -0
- package/dist/esm/panel.module.386166cc.js.map +1 -0
- package/dist/esm/panel.module.3d2ea3c6.css +111 -0
- package/dist/esm/panel.module.3d2ea3c6.css.map +1 -0
- package/dist/esm/popover.a810b7bc.js +66 -0
- package/dist/esm/popover.a810b7bc.js.map +1 -0
- package/dist/esm/popover.module.c4ba4189.js +22 -0
- package/dist/esm/popover.module.c4ba4189.js.map +1 -0
- package/dist/esm/{selection-popover.module.0a701258.css → popover.module.c4d6bfb0.css} +11 -8
- package/dist/esm/popover.module.c4d6bfb0.css.map +1 -0
- package/dist/esm/prepare-data.d4284b4a.js +125 -0
- package/dist/esm/prepare-data.d4284b4a.js.map +1 -0
- package/dist/esm/prepare-units.6c890a96.js +104 -0
- package/dist/esm/prepare-units.6c890a96.js.map +1 -0
- package/dist/esm/{resolvers.b5c82b78.js → resolvers.36013b49.js} +13 -2
- package/dist/esm/resolvers.36013b49.js.map +1 -0
- package/dist/esm/section.a34d379a.js +215 -0
- package/dist/esm/section.a34d379a.js.map +1 -0
- package/dist/esm/selection.f5b0297e.js +143 -0
- package/dist/esm/selection.f5b0297e.js.map +1 -0
- package/dist/esm/state.178ef364.js +75 -0
- package/dist/esm/state.178ef364.js.map +1 -0
- package/dist/esm/state.2952cbca.js +118 -0
- package/dist/esm/state.2952cbca.js.map +1 -0
- package/dist/esm/store.c4d7a8a4.js +52 -0
- package/dist/esm/store.c4d7a8a4.js.map +1 -0
- package/dist/esm/styles.7bc776d1.js +95 -0
- package/dist/esm/styles.7bc776d1.js.map +1 -0
- package/dist/esm/svg.4b9a96c1.js +89 -0
- package/dist/esm/svg.4b9a96c1.js.map +1 -0
- package/dist/esm/types.0f0b57c9.js +3 -0
- package/dist/esm/types.0f0b57c9.js.map +1 -0
- package/dist/esm/unit-details.071cefed.js +9 -0
- package/dist/esm/unit-details.071cefed.js.map +1 -0
- package/dist/esm/units.5a4fc058.js +98 -0
- package/dist/esm/units.5a4fc058.js.map +1 -0
- package/dist/esm/utils.d7a43a2a.js +55 -0
- package/dist/esm/utils.d7a43a2a.js.map +1 -0
- package/dist/node/index.js.map +1 -1
- package/package.json +24 -7
- package/src/age-axis.module.sass +27 -0
- package/src/age-axis.ts +82 -19
- package/src/age-model-overlay.module.sass +11 -0
- package/src/age-model-overlay.ts +73 -0
- package/src/carbon-isotopes/column.ts +4 -2
- package/src/carbon-isotopes/core.ts +9 -6
- package/src/carbon-isotopes/data-provider.ts +3 -3
- package/src/column.module.sass +58 -49
- package/src/column.ts +149 -135
- package/src/correlation-chart/hash-string.ts +57 -0
- package/src/correlation-chart/index.ts +2 -0
- package/src/correlation-chart/main.module.sass +122 -0
- package/src/correlation-chart/main.ts +305 -0
- package/src/correlation-chart/prepare-data.ts +217 -0
- package/src/correlation-chart/stories/correlation-chart.stories.ts +192 -0
- package/src/correlation-chart/stories/stories.module.sass +18 -0
- package/src/correlation-chart/unconformity-line.module.sass +8 -0
- package/src/correlation-chart/unconformity-line.ts +25 -0
- package/src/data-provider/base.ts +388 -0
- package/src/data-provider/column-nav.ts +53 -0
- package/src/data-provider/fetch.ts +231 -0
- package/src/data-provider/index.ts +4 -0
- package/src/data-provider/store.ts +72 -0
- package/src/index.ts +5 -3
- package/src/maps/_shared/index.ts +2 -0
- package/src/maps/_shared/inset-map.stories.ts +20 -0
- package/src/maps/_shared/inset-map.ts +87 -0
- package/src/maps/_shared/styles.ts +57 -0
- package/src/maps/column-correlation/column-correlation-map.stories.ts +96 -0
- package/src/maps/column-correlation/core.ts +225 -0
- package/src/maps/column-correlation/index.ts +2 -0
- package/src/maps/column-correlation/state.ts +192 -0
- package/src/maps/column-navigation/index.ts +2 -0
- package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +102 -0
- package/src/maps/column-navigation/mapbox/index.ts +219 -0
- package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +119 -0
- package/src/maps/column-navigation/mapbox/state.ts +109 -0
- package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +46 -0
- package/src/{map → maps/column-navigation/svg}/index.ts +18 -6
- package/src/{map → maps/column-navigation/svg}/layers.ts +28 -109
- package/src/maps/column-navigation/utils/keyboard-navigation.ts +58 -0
- package/src/maps/index.ts +3 -0
- package/src/prepare-units/composite-scale.ts +353 -0
- package/src/prepare-units/helpers.ts +226 -0
- package/src/prepare-units/index.ts +177 -0
- package/src/prepare-units/utils.ts +98 -0
- package/src/section.ts +264 -84
- package/src/unit-details/index.ts +2 -215
- package/src/unit-details/{index.module.sass → panel.module.sass} +39 -8
- package/src/unit-details/panel.ts +523 -0
- package/src/{selection-popover.module.sass → unit-details/popover.module.sass} +4 -2
- package/src/unit-details/popover.ts +82 -0
- package/src/units/boxes.module.sass +16 -0
- package/src/units/boxes.ts +243 -90
- package/src/units/colors.ts +64 -0
- package/src/units/composite.ts +157 -152
- package/src/units/index.ts +76 -9
- package/src/units/names.ts +8 -4
- package/src/units/resolvers.ts +11 -0
- package/src/units/selection.ts +115 -101
- package/src/units/types.ts +5 -16
- package/dist/esm/age-axis.64c509ee.js +0 -41
- package/dist/esm/age-axis.64c509ee.js.map +0 -1
- package/dist/esm/boxes.13968b76.js +0 -164
- package/dist/esm/boxes.13968b76.js.map +0 -1
- package/dist/esm/boxes.module.28873d08.css +0 -4
- package/dist/esm/boxes.module.28873d08.css.map +0 -1
- package/dist/esm/boxes.module.605bdcd6.js +0 -13
- package/dist/esm/boxes.module.605bdcd6.js.map +0 -1
- package/dist/esm/column.8dd26e1a.js +0 -149
- package/dist/esm/column.8dd26e1a.js.map +0 -1
- package/dist/esm/column.db058031.js.map +0 -1
- package/dist/esm/column.module.039d872c.css +0 -151
- package/dist/esm/column.module.039d872c.css.map +0 -1
- package/dist/esm/column.module.e632868a.js +0 -19
- package/dist/esm/column.module.e632868a.js.map +0 -1
- package/dist/esm/composite.608a4ca2.js +0 -153
- package/dist/esm/composite.608a4ca2.js.map +0 -1
- package/dist/esm/core.4db8e452.js.map +0 -1
- package/dist/esm/helpers.8a03cfc7.js +0 -94
- package/dist/esm/helpers.8a03cfc7.js.map +0 -1
- package/dist/esm/index.module.0844afd8.css +0 -65
- package/dist/esm/index.module.0844afd8.css.map +0 -1
- package/dist/esm/index.module.24fe3a2e.js +0 -37
- package/dist/esm/index.module.24fe3a2e.js.map +0 -1
- package/dist/esm/layers.ad5fd25d.js +0 -231
- package/dist/esm/layers.ad5fd25d.js.map +0 -1
- package/dist/esm/map.7aa26f17.js +0 -82
- package/dist/esm/map.7aa26f17.js.map +0 -1
- package/dist/esm/names.f6a4e9a4.js.map +0 -1
- package/dist/esm/providers.cd1e652f.js +0 -25
- package/dist/esm/providers.cd1e652f.js.map +0 -1
- package/dist/esm/resolvers.b5c82b78.js.map +0 -1
- package/dist/esm/section.cc1b1100.js +0 -118
- package/dist/esm/section.cc1b1100.js.map +0 -1
- package/dist/esm/selection-popover.17d1bd55.js +0 -60
- package/dist/esm/selection-popover.17d1bd55.js.map +0 -1
- package/dist/esm/selection-popover.module.0a701258.css.map +0 -1
- package/dist/esm/selection-popover.module.e22f5183.js +0 -22
- package/dist/esm/selection-popover.module.e22f5183.js.map +0 -1
- package/dist/esm/selection.bbf26d0e.js +0 -117
- package/dist/esm/selection.bbf26d0e.js.map +0 -1
- package/dist/esm/store.25eaa168.js +0 -18
- package/dist/esm/store.25eaa168.js.map +0 -1
- package/dist/esm/types.f016e032.js +0 -18
- package/dist/esm/types.f016e032.js.map +0 -1
- package/dist/esm/unit-details.56ff8b70.js +0 -209
- package/dist/esm/unit-details.56ff8b70.js.map +0 -1
- package/dist/esm/units.361088d4.js +0 -42
- package/dist/esm/units.361088d4.js.map +0 -1
- package/src/helpers.ts +0 -133
- package/src/providers.ts +0 -34
- package/src/selection-popover.ts +0 -71
- package/src/store.ts +0 -12
- package/src/units/units.scss +0 -16
- /package/src/{map → maps/column-navigation/svg}/animated.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format
|
|
|
4
4
|
is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this
|
|
5
5
|
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [2.0.0] - 2025-04-09
|
|
8
|
+
|
|
9
|
+
Major update for columns and correlation diagrams:
|
|
10
|
+
|
|
11
|
+
- Add Mapbox-based column selection and correlation-line selection maps
|
|
12
|
+
- Add `ColoredUnitComponent` based on mixing unit colors by lithology
|
|
13
|
+
- Fully integrated management of composite column scales, allowing for much more
|
|
14
|
+
flexible column creation
|
|
15
|
+
- Added the ability to have zig-zag cutoffs when units overflow the time bounds
|
|
16
|
+
of the column
|
|
17
|
+
- Added a unified `MacrostratDataProvider` that allows frontend caching of data
|
|
18
|
+
dictionaries in the UI
|
|
19
|
+
- Major improvements to columns and styling
|
|
20
|
+
|
|
21
|
+
This release will support rendering of stratigraphic columns in Rockd and
|
|
22
|
+
Macrostrat.
|
|
23
|
+
|
|
7
24
|
## [1.0.3] - 2025-03-08
|
|
8
25
|
|
|
9
26
|
Export `UnitDetailsPanel`
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import {InsetMap as $5593f90ffec284da$export$1e8149fc0d15fed0} from "./inset-map.3c18106d.js";
|
|
2
|
+
import {buildColumnsStyle as $1dbfddc9637b572c$export$d2995719c3a4ae17} from "./styles.7bc776d1.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export {$5593f90ffec284da$export$1e8149fc0d15fed0 as InsetMap, $1dbfddc9637b572c$export$d2995719c3a4ae17 as buildColumnsStyle};
|
|
9
|
+
//# sourceMappingURL=_shared.f7eec55a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"","sources":["packages/column-views/src/maps/_shared/index.ts"],"sourcesContent":["export * from \"./inset-map\";\nexport * from \"./styles\";\n"],"names":[],"version":3,"file":"_shared.f7eec55a.js.map"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import "./age-axis.module.03773a80.css";
|
|
2
|
+
import $lfxOo$ageaxismodule3cc91335js from "./age-axis.module.3cc91335.js";
|
|
3
|
+
import {useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./store.c4d7a8a4.js";
|
|
4
|
+
import $lfxOo$macrostrathyper from "@macrostrat/hyper";
|
|
5
|
+
import {ColumnContext as $lfxOo$ColumnContext, ColumnAxis as $lfxOo$ColumnAxis, ColumnAxisType as $lfxOo$ColumnAxisType, SVG as $lfxOo$SVG, AgeAxis as $lfxOo$AgeAxis} from "@macrostrat/column-components";
|
|
6
|
+
import {useContext as $lfxOo$useContext} from "react";
|
|
7
|
+
import {Parenthetical as $lfxOo$Parenthetical} from "@macrostrat/data-components";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
function $parcel$interopDefault(a) {
|
|
11
|
+
return a && a.__esModule ? a.default : a;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const $43794af7643cdf40$var$h = (0, $lfxOo$macrostrathyper).styled((0, ($parcel$interopDefault($lfxOo$ageaxismodule3cc91335js))));
|
|
20
|
+
const $43794af7643cdf40$var$AgeAxisCore = ({ ticks: ticks, tickSpacing: tickSpacing = 40, showDomain: showDomain = false })=>{
|
|
21
|
+
const { pixelHeight: pixelHeight } = (0, $lfxOo$useContext)((0, $lfxOo$ColumnContext));
|
|
22
|
+
// A tick roughly every 40 pixels
|
|
23
|
+
let v = Math.max(Math.round(pixelHeight / tickSpacing), 1);
|
|
24
|
+
return $43794af7643cdf40$var$h("g.axis", {
|
|
25
|
+
transform: "translate(20 0)"
|
|
26
|
+
}, [
|
|
27
|
+
$43794af7643cdf40$var$h((0, $lfxOo$ColumnAxis), {
|
|
28
|
+
ticks: v,
|
|
29
|
+
showDomain: showDomain
|
|
30
|
+
})
|
|
31
|
+
]);
|
|
32
|
+
};
|
|
33
|
+
function $43794af7643cdf40$export$64204d5cbb3e8227(props) {
|
|
34
|
+
const { label: label = "Age", unit: unit = "Ma", className: className } = props;
|
|
35
|
+
return $43794af7643cdf40$var$h("div.column-axis-label.age-axis-label", {
|
|
36
|
+
className: className
|
|
37
|
+
}, [
|
|
38
|
+
label,
|
|
39
|
+
" ",
|
|
40
|
+
$43794af7643cdf40$var$h.if(unit)((0, $lfxOo$Parenthetical), {
|
|
41
|
+
className: "age-axis-unit"
|
|
42
|
+
}, unit)
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
function $43794af7643cdf40$export$40b6b0e4520eeb34() {
|
|
46
|
+
const { axisType: axisType, sections: sections, totalHeight: totalHeight } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
|
|
47
|
+
const packages = sections.map((section)=>{
|
|
48
|
+
return {
|
|
49
|
+
key: `section-${section.section_id}`,
|
|
50
|
+
...section.scaleInfo
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
return $43794af7643cdf40$var$h($43794af7643cdf40$export$ac30ca3cf5df959d, {
|
|
54
|
+
axisType: axisType,
|
|
55
|
+
packages: packages,
|
|
56
|
+
totalHeight: totalHeight
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function $43794af7643cdf40$export$ac30ca3cf5df959d(props) {
|
|
60
|
+
const { axisType: axisType, totalHeight: totalHeight, packages: packages } = props;
|
|
61
|
+
if (axisType == (0, $lfxOo$ColumnAxisType).ORDINAL) return null;
|
|
62
|
+
let axisLabel = "Age";
|
|
63
|
+
let axisUnit = "Ma";
|
|
64
|
+
if (axisType == (0, $lfxOo$ColumnAxisType).DEPTH) {
|
|
65
|
+
axisLabel = "Depth";
|
|
66
|
+
axisUnit = "m";
|
|
67
|
+
} else if (axisType == (0, $lfxOo$ColumnAxisType).HEIGHT) {
|
|
68
|
+
axisLabel = "Height";
|
|
69
|
+
axisUnit = "m";
|
|
70
|
+
}
|
|
71
|
+
return $43794af7643cdf40$var$h([
|
|
72
|
+
$43794af7643cdf40$var$h($43794af7643cdf40$export$64204d5cbb3e8227, {
|
|
73
|
+
label: axisLabel,
|
|
74
|
+
unit: axisUnit
|
|
75
|
+
}),
|
|
76
|
+
$43794af7643cdf40$var$h((0, $lfxOo$SVG), {
|
|
77
|
+
className: "age-axis-column",
|
|
78
|
+
style: {
|
|
79
|
+
width: `22px`,
|
|
80
|
+
height: `${totalHeight}px`
|
|
81
|
+
},
|
|
82
|
+
width: 22,
|
|
83
|
+
height: totalHeight
|
|
84
|
+
}, packages.map((group, i)=>{
|
|
85
|
+
const { key: key, scale: scale } = group;
|
|
86
|
+
return $43794af7643cdf40$var$h((0, $lfxOo$AgeAxis), {
|
|
87
|
+
key: key,
|
|
88
|
+
className: "age-axis",
|
|
89
|
+
scale: scale,
|
|
90
|
+
tickSizeOuter: 3
|
|
91
|
+
});
|
|
92
|
+
}))
|
|
93
|
+
]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
export {$43794af7643cdf40$export$64204d5cbb3e8227 as VerticalAxisLabel, $43794af7643cdf40$export$40b6b0e4520eeb34 as CompositeAgeAxis, $43794af7643cdf40$export$ac30ca3cf5df959d as CompositeAgeAxisCore};
|
|
98
|
+
//# sourceMappingURL=age-axis.4a8cf5e6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;AAeA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,yEAAK;AAE5B,MAAM,oCAAc,CAAC,SAAE,KAAK,eAAE,cAAc,gBAAI,aAAa,OAAO;IAClE,MAAM,eAAE,WAAW,EAAE,GAAG,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,oBAAY;IAC/C,iCAAiC;IACjC,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc,cAAc;IAExD,OAAO,wBAAE,UAAU;QAAE,WAAW;IAAkB,GAAG;QACnD,wBAAE,CAAA,GAAA,iBAAS,GAAG;YACZ,OAAO;wBACP;QACF;KACD;AACH;AAEO,SAAS,0CAAkB,KAAK;IACrC,MAAM,SAAE,QAAQ,aAAO,OAAO,iBAAM,SAAS,EAAE,GAAG;IAClD,OAAO,wBAAE,wCAAwC;mBAAE;IAAU,GAAG;QAC9D;QACA;QACA,wBAAE,EAAE,CAAC,MAAM,CAAA,GAAA,oBAAY,GAAG;YAAE,WAAW;QAAgB,GAAG;KAC3D;AACH;AAEO,SAAS;IACd,MAAM,YAAE,QAAQ,YAAE,QAAQ,eAAE,WAAW,EAAE,GAAG,CAAA,GAAA,yCAAsB;IAElE,MAAM,WAAW,SAAS,GAAG,CAAC,CAAC;QAC7B,OAAO;YACL,KAAK,CAAC,QAAQ,EAAE,QAAQ,UAAU,EAAE;YACpC,GAAG,QAAQ,SAAS;QACtB;IACF;IAEA,OAAO,wBAAE,2CAAsB;kBAC7B;kBACA;qBACA;IACF;AACF;AAQO,SAAS,0CAAqB,KAAsC;IACzE,MAAM,YAAE,QAAQ,eAAE,WAAW,YAAE,QAAQ,EAAE,GAAG;IAE5C,IAAI,YAAY,CAAA,GAAA,qBAAa,EAAE,OAAO,EACpC,OAAO;IAGT,IAAI,YAAoB;IACxB,IAAI,WAAW;IACf,IAAI,YAAY,CAAA,GAAA,qBAAa,EAAE,KAAK,EAAE;QACpC,YAAY;QACZ,WAAW;IACb,OAAO,IAAI,YAAY,CAAA,GAAA,qBAAa,EAAE,MAAM,EAAE;QAC5C,YAAY;QACZ,WAAW;IACb;IAEA,OAAO,wBAAE;QACP,wBAAE,2CAAmB;YACnB,OAAO;YACP,MAAM;QACR;QACA,wBACE,CAAA,GAAA,UAAE,GACF;YACE,WAAW;YACX,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC;gBAAE,QAAQ,GAAG,YAAY,EAAE,CAAC;YAAC;YACnD,OAAO;YACP,QAAQ;QACV,GACA,SAAS,GAAG,CAAC,CAAC,OAAO;YACnB,MAAM,OAAE,GAAG,SAAE,KAAK,EAAE,GAAG;YAEvB,OAAO,wBAAE,CAAA,GAAA,cAAM,GAAG;qBAChB;gBACA,WAAW;uBACX;gBACA,eAAe;YACjB;QACF;KAEH;AACH","sources":["packages/column-views/src/age-axis.ts"],"sourcesContent":["import hyper from \"@macrostrat/hyper\";\nimport {\n SVG,\n ColumnSVG,\n ColumnAxis,\n ColumnContext,\n ColumnAxisType,\n AgeAxis,\n} from \"@macrostrat/column-components\";\nimport { useContext } from \"react\";\nimport styles from \"./age-axis.module.sass\";\nimport { useMacrostratColumnData } from \"./data-provider\";\nimport { Parenthetical } from \"@macrostrat/data-components\";\nimport { PackageScaleLayoutData } from \"./prepare-units/composite-scale\";\n\nconst h = hyper.styled(styles);\n\nconst AgeAxisCore = ({ ticks, tickSpacing = 40, showDomain = false }) => {\n const { pixelHeight } = useContext(ColumnContext);\n // A tick roughly every 40 pixels\n let v = Math.max(Math.round(pixelHeight / tickSpacing), 1);\n\n return h(\"g.axis\", { transform: \"translate(20 0)\" }, [\n h(ColumnAxis, {\n ticks: v,\n showDomain,\n }),\n ]);\n};\n\nexport function VerticalAxisLabel(props) {\n const { label = \"Age\", unit = \"Ma\", className } = props;\n return h(\"div.column-axis-label.age-axis-label\", { className }, [\n label,\n \" \",\n h.if(unit)(Parenthetical, { className: \"age-axis-unit\" }, unit),\n ]);\n}\n\nexport function CompositeAgeAxis() {\n const { axisType, sections, totalHeight } = useMacrostratColumnData();\n\n const packages = sections.map((section) => {\n return {\n key: `section-${section.section_id}`,\n ...section.scaleInfo,\n };\n });\n\n return h(CompositeAgeAxisCore, {\n axisType,\n packages,\n totalHeight,\n });\n}\n\nexport interface CompositeStratigraphicScaleInfo {\n axisType: ColumnAxisType;\n totalHeight: number;\n packages: PackageScaleLayoutData[];\n}\n\nexport function CompositeAgeAxisCore(props: CompositeStratigraphicScaleInfo) {\n const { axisType, totalHeight, packages } = props;\n\n if (axisType == ColumnAxisType.ORDINAL) {\n return null;\n }\n\n let axisLabel: string = \"Age\";\n let axisUnit = \"Ma\";\n if (axisType == ColumnAxisType.DEPTH) {\n axisLabel = \"Depth\";\n axisUnit = \"m\";\n } else if (axisType == ColumnAxisType.HEIGHT) {\n axisLabel = \"Height\";\n axisUnit = \"m\";\n }\n\n return h([\n h(VerticalAxisLabel, {\n label: axisLabel,\n unit: axisUnit,\n }),\n h(\n SVG,\n {\n className: \"age-axis-column\",\n style: { width: `22px`, height: `${totalHeight}px` },\n width: 22,\n height: totalHeight,\n },\n packages.map((group, i) => {\n const { key, scale } = group;\n\n return h(AgeAxis, {\n key,\n className: \"age-axis\",\n scale,\n tickSizeOuter: 3,\n });\n })\n ),\n ]);\n}\n"],"names":[],"version":3,"file":"age-axis.4a8cf5e6.js.map"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
._FHjpa_age-axis {
|
|
2
|
+
transform: translateX(20px);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
._FHjpa_age-axis .tick text {
|
|
6
|
+
text-anchor: middle;
|
|
7
|
+
font-size: var(--column-axis-font-size, .8rem);
|
|
8
|
+
transform: rotate(-90deg)translate(8px, -12px);
|
|
9
|
+
font-weight: 400 !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
._FHjpa_age-axis .tick line {
|
|
13
|
+
stroke-width: 1px !important;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
._FHjpa_age-axis-column {
|
|
17
|
+
flex-shrink: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
._FHjpa_age-axis-label {
|
|
21
|
+
writing-mode: vertical-lr;
|
|
22
|
+
font-size: var(--column-axis-font-size, .8rem);
|
|
23
|
+
text-align: center;
|
|
24
|
+
max-height: 100vh;
|
|
25
|
+
position: sticky;
|
|
26
|
+
top: 0;
|
|
27
|
+
transform: rotate(180deg);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
._FHjpa_age-axis-unit {
|
|
31
|
+
color: var(--text-subtle-color);
|
|
32
|
+
}
|
|
33
|
+
/*# sourceMappingURL=age-axis.module.03773a80.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"AAAA;;;;AAII;;;;;;;AAOA;;;;AAGJ;;;;AAGA;;;;;;;;;;AAQA","sources":["packages/column-views/src/age-axis.module.sass"],"sourcesContent":[".age-axis\n transform: translateX(20px)\n\n :global(.tick)\n text\n text-anchor: middle\n // TODO: allow font size to vary without this..\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n font-size: var(--column-axis-font-size, 0.8rem)\n\n line\n stroke-width: 1px !important\n\n.age-axis-column\n flex-shrink: 0\n\n.age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: var(--column-axis-font-size, 0.8rem)\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n.age-axis-unit\n color: var(--text-subtle-color)\n"],"names":[],"version":3,"file":"age-axis.module.03773a80.css.map"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
function $parcel$export(e, n, v, s) {
|
|
3
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
4
|
+
}
|
|
5
|
+
var $047fd20e1964ef56$exports = {};
|
|
6
|
+
|
|
7
|
+
$parcel$export($047fd20e1964ef56$exports, "age-axis", () => $047fd20e1964ef56$export$8e012612e152e560, (v) => $047fd20e1964ef56$export$8e012612e152e560 = v);
|
|
8
|
+
$parcel$export($047fd20e1964ef56$exports, "age-axis-column", () => $047fd20e1964ef56$export$5bb449cff67e2830, (v) => $047fd20e1964ef56$export$5bb449cff67e2830 = v);
|
|
9
|
+
$parcel$export($047fd20e1964ef56$exports, "age-axis-label", () => $047fd20e1964ef56$export$629e44847e8dc64c, (v) => $047fd20e1964ef56$export$629e44847e8dc64c = v);
|
|
10
|
+
$parcel$export($047fd20e1964ef56$exports, "age-axis-unit", () => $047fd20e1964ef56$export$1609122694a59b0a, (v) => $047fd20e1964ef56$export$1609122694a59b0a = v);
|
|
11
|
+
var $047fd20e1964ef56$export$8e012612e152e560;
|
|
12
|
+
var $047fd20e1964ef56$export$5bb449cff67e2830;
|
|
13
|
+
var $047fd20e1964ef56$export$629e44847e8dc64c;
|
|
14
|
+
var $047fd20e1964ef56$export$1609122694a59b0a;
|
|
15
|
+
$047fd20e1964ef56$export$8e012612e152e560 = `_FHjpa_age-axis`;
|
|
16
|
+
$047fd20e1964ef56$export$5bb449cff67e2830 = `_FHjpa_age-axis-column`;
|
|
17
|
+
$047fd20e1964ef56$export$629e44847e8dc64c = `_FHjpa_age-axis-label`;
|
|
18
|
+
$047fd20e1964ef56$export$1609122694a59b0a = `_FHjpa_age-axis-unit`;
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
export {$047fd20e1964ef56$exports as default};
|
|
22
|
+
//# sourceMappingURL=age-axis.module.3cc91335.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAHA,4CAA6B,CAAC,eAAe,CAAC;AAC9C,4CAAoC,CAAC,sBAAsB,CAAC;AAC5D,4CAAmC,CAAC,qBAAqB,CAAC;AAC1D,4CAAkC,CAAC,oBAAoB,CAAC","sources":["packages/column-views/src/age-axis.module.sass"],"sourcesContent":[".age-axis\n transform: translateX(20px)\n\n :global(.tick)\n text\n text-anchor: middle\n // TODO: allow font size to vary without this..\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px, -12px)\n font-size: var(--column-axis-font-size, 0.8rem)\n\n line\n stroke-width: 1px !important\n\n.age-axis-column\n flex-shrink: 0\n\n.age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: var(--column-axis-font-size, 0.8rem)\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n.age-axis-unit\n color: var(--text-subtle-color)\n"],"names":[],"version":3,"file":"age-axis.module.3cc91335.js.map"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import "./age-model-overlay.module.5d9e78fb.css";
|
|
2
|
+
import $3vk6I$agemodeloverlaymodulecd985dcbjs from "./age-model-overlay.module.cd985dcb.js";
|
|
3
|
+
import {useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76, useMacrostratUnits as $d5074f164411387e$export$6fb40844db555b2} from "./store.c4d7a8a4.js";
|
|
4
|
+
import $3vk6I$macrostrathyper from "@macrostrat/hyper";
|
|
5
|
+
import {useAPIResult as $3vk6I$useAPIResult} from "@macrostrat/ui-components";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
function $parcel$interopDefault(a) {
|
|
9
|
+
return a && a.__esModule ? a.default : a;
|
|
10
|
+
}
|
|
11
|
+
/** An in-development overlay for a column's age model.
|
|
12
|
+
*
|
|
13
|
+
* Age model info:
|
|
14
|
+
* {
|
|
15
|
+
* "boundary_id": 8049,
|
|
16
|
+
* "col_id": 432,
|
|
17
|
+
* "section_id": 3104,
|
|
18
|
+
* "interval_id": 268,
|
|
19
|
+
* "interval_name": "Calymmian",
|
|
20
|
+
* "age_bottom": 1600,
|
|
21
|
+
* "age_top": 1400,
|
|
22
|
+
* "rel_position": 0.85,
|
|
23
|
+
* "model_age": 1430,
|
|
24
|
+
* "boundary_status": "absolute",
|
|
25
|
+
* "boundary_type": "",
|
|
26
|
+
* "boundary_position": null,
|
|
27
|
+
* "unit_below": 11541,
|
|
28
|
+
* "unit_above": 0,
|
|
29
|
+
* "ref_id": 217
|
|
30
|
+
* },
|
|
31
|
+
*
|
|
32
|
+
* */
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
const $1a65c216af27346a$var$h = (0, $3vk6I$macrostrathyper).styled((0, ($parcel$interopDefault($3vk6I$agemodeloverlaymodulecd985dcbjs))));
|
|
37
|
+
function $1a65c216af27346a$export$1d1ebe9df97e8db() {
|
|
38
|
+
const col_id = (0, $d5074f164411387e$export$6fb40844db555b2)()?.[0]?.col_id;
|
|
39
|
+
const scale = (0, $d5074f164411387e$export$a7fc62995ec4f76)();
|
|
40
|
+
const ageModel = (0, $3vk6I$useAPIResult)("https://macrostrat.org/api/v2/age_model", {
|
|
41
|
+
col_id: col_id
|
|
42
|
+
}, (res)=>res.success.data);
|
|
43
|
+
if (ageModel == null) return null;
|
|
44
|
+
return $1a65c216af27346a$var$h("div.boundary-age-model", ageModel.map((surface)=>{
|
|
45
|
+
const height = scale(surface.model_age);
|
|
46
|
+
return $1a65c216af27346a$var$h("div.boundary-age-model-surface", {
|
|
47
|
+
key: surface.boundary_id,
|
|
48
|
+
style: {
|
|
49
|
+
top: `${height}px`
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
export {$1a65c216af27346a$export$1d1ebe9df97e8db as BoundaryAgeModelOverlay};
|
|
57
|
+
//# sourceMappingURL=age-model-overlay.c7226855.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;AAMH,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,iFAAK;AAoBrB,SAAS;IACd,MAAM,SAAS,CAAA,GAAA,wCAAiB,KAAK,CAAC,EAAE,EAAE;IAC1C,MAAM,QAAQ,CAAA,GAAA,wCAAgB;IAE9B,MAAM,WAAW,CAAA,GAAA,mBAAW,EAC1B,2CACA;gBAAE;IAAO,GACT,CAAC,MAAQ,IAAI,OAAO,CAAC,IAAI;IAG3B,IAAI,YAAY,MACd,OAAO;IAGT,OAAO,wBACL,0BACA,SAAS,GAAG,CAAC,CAAC;QACZ,MAAM,SAAS,MAAM,QAAQ,SAAS;QAEtC,OAAO,wBAAE,kCAAkC;YACzC,KAAK,QAAQ,WAAW;YACxB,OAAO;gBAAE,KAAK,GAAG,OAAO,EAAE,CAAC;YAAC;QAC9B;IACF;AAEJ","sources":["packages/column-views/src/age-model-overlay.ts"],"sourcesContent":["/** An in-development overlay for a column's age model.\n *\n * Age model info:\n * {\n * \"boundary_id\": 8049,\n * \"col_id\": 432,\n * \"section_id\": 3104,\n * \"interval_id\": 268,\n * \"interval_name\": \"Calymmian\",\n * \"age_bottom\": 1600,\n * \"age_top\": 1400,\n * \"rel_position\": 0.85,\n * \"model_age\": 1430,\n * \"boundary_status\": \"absolute\",\n * \"boundary_type\": \"\",\n * \"boundary_position\": null,\n * \"unit_below\": 11541,\n * \"unit_above\": 0,\n * \"ref_id\": 217\n * },\n *\n * */\n\nimport hyper from \"@macrostrat/hyper\";\nimport styles from \"./age-model-overlay.module.sass\";\nimport { useAPIResult } from \"@macrostrat/ui-components\";\nimport { useCompositeScale, useMacrostratUnits } from \"./data-provider\";\nconst h = hyper.styled(styles);\n\ninterface AgeModelSurface {\n boundary_id: number;\n col_id: number;\n section_id: number;\n interval_id: number;\n interval_name: string;\n age_bottom: number;\n age_top: number;\n rel_position: number;\n model_age: number;\n boundary_status: \"absolute\" | \"relative\" | \"modeled\";\n boundary_type: string;\n boundary_position: null | number;\n unit_below: number;\n unit_above: number;\n ref_id: number;\n}\n\nexport function BoundaryAgeModelOverlay() {\n const col_id = useMacrostratUnits()?.[0]?.col_id;\n const scale = useCompositeScale();\n\n const ageModel = useAPIResult(\n \"https://macrostrat.org/api/v2/age_model\",\n { col_id },\n (res) => res.success.data\n );\n\n if (ageModel == null) {\n return null;\n }\n\n return h(\n \"div.boundary-age-model\",\n ageModel.map((surface) => {\n const height = scale(surface.model_age);\n\n return h(\"div.boundary-age-model-surface\", {\n key: surface.boundary_id,\n style: { top: `${height}px` },\n });\n })\n );\n}\n"],"names":[],"version":3,"file":"age-model-overlay.c7226855.js.map"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
._4q2yq_boundary-age-model {
|
|
2
|
+
width: 100%;
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 0;
|
|
5
|
+
left: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
._4q2yq_boundary-age-model-surface {
|
|
9
|
+
border-top: 1px solid #90ee90;
|
|
10
|
+
position: absolute;
|
|
11
|
+
left: 0;
|
|
12
|
+
right: 0;
|
|
13
|
+
}
|
|
14
|
+
/*# sourceMappingURL=age-model-overlay.module.5d9e78fb.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"AAAA;;;;;;;AAMA","sources":["packages/column-views/src/age-model-overlay.module.sass"],"sourcesContent":[".boundary-age-model\n top: 0\n left: 0\n position: absolute\n width: 100%\n\n.boundary-age-model-surface\n left: 0\n right: 0\n position: absolute\n border-top: 1px solid lightgreen\n"],"names":[],"version":3,"file":"age-model-overlay.module.5d9e78fb.css.map"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
function $parcel$export(e, n, v, s) {
|
|
3
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
4
|
+
}
|
|
5
|
+
var $28b135fe9cba32cc$exports = {};
|
|
6
|
+
|
|
7
|
+
$parcel$export($28b135fe9cba32cc$exports, "boundary-age-model", () => $28b135fe9cba32cc$export$4462bd5ca2cb539e, (v) => $28b135fe9cba32cc$export$4462bd5ca2cb539e = v);
|
|
8
|
+
$parcel$export($28b135fe9cba32cc$exports, "boundary-age-model-surface", () => $28b135fe9cba32cc$export$c9df9e1edaffc12d, (v) => $28b135fe9cba32cc$export$c9df9e1edaffc12d = v);
|
|
9
|
+
var $28b135fe9cba32cc$export$4462bd5ca2cb539e;
|
|
10
|
+
var $28b135fe9cba32cc$export$c9df9e1edaffc12d;
|
|
11
|
+
$28b135fe9cba32cc$export$4462bd5ca2cb539e = `_4q2yq_boundary-age-model`;
|
|
12
|
+
$28b135fe9cba32cc$export$c9df9e1edaffc12d = `_4q2yq_boundary-age-model-surface`;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export {$28b135fe9cba32cc$exports as default};
|
|
16
|
+
//# sourceMappingURL=age-model-overlay.module.cd985dcb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;AAAA,IAAA;AACA,IAAA;AADA,4CAAuC,CAAC,yBAAyB,CAAC;AAClE,4CAA+C,CAAC,iCAAiC,CAAC","sources":["packages/column-views/src/age-model-overlay.module.sass"],"sourcesContent":[".boundary-age-model\n top: 0\n left: 0\n position: absolute\n width: 100%\n\n.boundary-age-model-surface\n left: 0\n right: 0\n position: absolute\n border-top: 1px solid lightgreen\n"],"names":[],"version":3,"file":"age-model-overlay.module.cd985dcb.js.map"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import {fetchAllColumns as $33a46f9423c8104a$export$45bd78cd093090fa, fetchEnvironments as $33a46f9423c8104a$export$780b4b253712916c, fetchIntervals as $33a46f9423c8104a$export$5d2ec2e733dfe6c7, fetchLithologies as $33a46f9423c8104a$export$1aa679bd5e605f82, fetchRefs as $33a46f9423c8104a$export$cd7bfa0860f58b96} from "./fetch.99aec438.js";
|
|
2
|
+
import {useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./store.c4d7a8a4.js";
|
|
3
|
+
import $8Y44A$crossfetch from "cross-fetch";
|
|
4
|
+
import {useContext as $8Y44A$useContext, useEffect as $8Y44A$useEffect, useMemo as $8Y44A$useMemo, useState as $8Y44A$useState, createContext as $8Y44A$createContext} from "react";
|
|
5
|
+
import $8Y44A$macrostrathyper from "@macrostrat/hyper";
|
|
6
|
+
import {create as $8Y44A$create, useStore as $8Y44A$useStore} from "zustand";
|
|
7
|
+
import {APIProvider as $8Y44A$APIProvider} from "@macrostrat/ui-components";
|
|
8
|
+
import {ColumnProvider as $8Y44A$ColumnProvider} from "@macrostrat/column-components";
|
|
9
|
+
|
|
10
|
+
/** Data provider for information that needs to be loaded in bulk for frontend views */
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
function $774a5efa27d1c77b$var$createMacrostratStore(baseURL = "https://macrostrat.org/api/v2") {
|
|
19
|
+
return (0, $8Y44A$create)((set, get)=>{
|
|
20
|
+
return {
|
|
21
|
+
baseURL: baseURL,
|
|
22
|
+
inFlightRequests: new Set(),
|
|
23
|
+
async fetch (url, options) {
|
|
24
|
+
const url1 = baseURL + url;
|
|
25
|
+
// Avoid duplicate requests
|
|
26
|
+
const { inFlightRequests: inFlightRequests } = get();
|
|
27
|
+
if (inFlightRequests.has(url1)) return null; // Return null if already in flight
|
|
28
|
+
inFlightRequests.add(url1);
|
|
29
|
+
//set({ inFlightRequests });
|
|
30
|
+
const res = await (0, $8Y44A$crossfetch)(url1, options);
|
|
31
|
+
inFlightRequests.delete(url1);
|
|
32
|
+
//set({in})
|
|
33
|
+
return res;
|
|
34
|
+
},
|
|
35
|
+
...$774a5efa27d1c77b$var$createLithologiesSlice(set, get),
|
|
36
|
+
...$774a5efa27d1c77b$var$createIntervalsSlice(set, get),
|
|
37
|
+
...$774a5efa27d1c77b$var$createEnvironmentsSlice(set, get),
|
|
38
|
+
...$774a5efa27d1c77b$var$createColumnsSlice(set, get),
|
|
39
|
+
...$774a5efa27d1c77b$var$createRefsSlice(set, get)
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function $774a5efa27d1c77b$var$createRefsSlice(set, get) {
|
|
44
|
+
return {
|
|
45
|
+
refs: new Map(),
|
|
46
|
+
async getRefs (ids) {
|
|
47
|
+
const { refs: refs, fetch: fetch } = get();
|
|
48
|
+
const missing = ids.filter((id)=>!refs.has(id));
|
|
49
|
+
if (missing.length == 0) return ids.map((id)=>refs.get(id));
|
|
50
|
+
const data = await (0, $33a46f9423c8104a$export$cd7bfa0860f58b96)(missing, fetch);
|
|
51
|
+
if (data == null) return [];
|
|
52
|
+
for (const d of data)refs.set(d.ref_id, d);
|
|
53
|
+
set({
|
|
54
|
+
refs: refs
|
|
55
|
+
});
|
|
56
|
+
return ids.map((id)=>refs.get(id));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function $774a5efa27d1c77b$var$createColumnsSlice(set, get) {
|
|
61
|
+
// Column footprints separated by project
|
|
62
|
+
return {
|
|
63
|
+
columnFootprints: new Map(),
|
|
64
|
+
async getColumns (projectID, inProcess) {
|
|
65
|
+
const { columnFootprints: columnFootprints, baseURL: baseURL, fetch: fetch } = get();
|
|
66
|
+
const key = projectID ?? -1;
|
|
67
|
+
let _inProcess = inProcess;
|
|
68
|
+
if (projectID == null) // If no project is specified, in process columns cannot be included
|
|
69
|
+
_inProcess = false;
|
|
70
|
+
let footprints = columnFootprints.get(key);
|
|
71
|
+
if (footprints == null || footprints.inProcess != _inProcess) {
|
|
72
|
+
// Fetch the columns
|
|
73
|
+
const statusCode = inProcess ? "in process" : null;
|
|
74
|
+
let columns = await (0, $33a46f9423c8104a$export$45bd78cd093090fa)({
|
|
75
|
+
projectID: projectID,
|
|
76
|
+
statusCode: null,
|
|
77
|
+
fetch: fetch
|
|
78
|
+
});
|
|
79
|
+
if (columns == null) return;
|
|
80
|
+
if (_inProcess) {
|
|
81
|
+
const inProcessColumns = await (0, $33a46f9423c8104a$export$45bd78cd093090fa)({
|
|
82
|
+
projectID: projectID,
|
|
83
|
+
statusCode: "in process",
|
|
84
|
+
fetch: fetch
|
|
85
|
+
});
|
|
86
|
+
if (inProcessColumns == null) return;
|
|
87
|
+
// Combine active and in-process columns
|
|
88
|
+
columns = columns.concat(inProcessColumns);
|
|
89
|
+
}
|
|
90
|
+
footprints = {
|
|
91
|
+
project_id: projectID,
|
|
92
|
+
inProcess: inProcess,
|
|
93
|
+
columns: columns
|
|
94
|
+
};
|
|
95
|
+
// We could break multi-project result sets into separate caches here...
|
|
96
|
+
// Copy the original map
|
|
97
|
+
const columnFootprints2 = new Map(columnFootprints);
|
|
98
|
+
columnFootprints2.set(key, footprints);
|
|
99
|
+
set({
|
|
100
|
+
columnFootprints: columnFootprints2
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return footprints.columns;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function $774a5efa27d1c77b$var$createLithologiesSlice(set, get) {
|
|
108
|
+
return {
|
|
109
|
+
lithologies: null,
|
|
110
|
+
async getLithologies (ids) {
|
|
111
|
+
const { lithologies: lithologies, fetch: fetch } = get();
|
|
112
|
+
let lithMap = lithologies;
|
|
113
|
+
if (lithMap == null) {
|
|
114
|
+
const data = await (0, $33a46f9423c8104a$export$1aa679bd5e605f82)(fetch);
|
|
115
|
+
if (data == null) return;
|
|
116
|
+
lithMap = new Map(data.map((d)=>[
|
|
117
|
+
d.lith_id,
|
|
118
|
+
d
|
|
119
|
+
]));
|
|
120
|
+
set({
|
|
121
|
+
lithologies: lithMap
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Now get the lithologies
|
|
125
|
+
if (ids == null) return lithMap.values();
|
|
126
|
+
return ids.map((id)=>lithMap.get(id));
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function $774a5efa27d1c77b$var$createEnvironmentsSlice(set, get) {
|
|
131
|
+
return {
|
|
132
|
+
environments: null,
|
|
133
|
+
async getEnvironments (ids) {
|
|
134
|
+
const { environments: environments, fetch: fetch } = get();
|
|
135
|
+
let envMap = environments;
|
|
136
|
+
if (envMap == null) {
|
|
137
|
+
const data = await (0, $33a46f9423c8104a$export$780b4b253712916c)(fetch);
|
|
138
|
+
if (data == null) return [];
|
|
139
|
+
envMap = new Map(data.map((d)=>[
|
|
140
|
+
d.environ_id,
|
|
141
|
+
d
|
|
142
|
+
]));
|
|
143
|
+
set({
|
|
144
|
+
environments: envMap
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// Now get the environments
|
|
148
|
+
if (ids == null) return envMap.values();
|
|
149
|
+
return ids.map((id)=>envMap.get(id));
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function $774a5efa27d1c77b$var$createIntervalsSlice(set, get) {
|
|
154
|
+
return {
|
|
155
|
+
intervals: null,
|
|
156
|
+
async getIntervals (ids, timescaleID) {
|
|
157
|
+
const { intervals: intervals, fetch: fetch } = get();
|
|
158
|
+
let _intervals = intervals;
|
|
159
|
+
if (intervals == null || !$774a5efa27d1c77b$var$includesTimescale(intervals, timescaleID)) {
|
|
160
|
+
// Fetch the intervals
|
|
161
|
+
const data = await (0, $33a46f9423c8104a$export$5d2ec2e733dfe6c7)(timescaleID, fetch);
|
|
162
|
+
if (data == null) return [];
|
|
163
|
+
const intervalMap = intervals ?? new Map();
|
|
164
|
+
for (const d of data)intervalMap.set(d.int_id, d);
|
|
165
|
+
_intervals = intervalMap;
|
|
166
|
+
set({
|
|
167
|
+
intervals: _intervals
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
if (ids == null && timescaleID == null) return Array.from(_intervals.values());
|
|
171
|
+
if (timescaleID != null) return Array.from(_intervals.values()).filter((d)=>d.timescale_id == timescaleID);
|
|
172
|
+
return ids.map((id)=>intervals.get(id));
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function $774a5efa27d1c77b$var$includesTimescale(intervals, timescaleID) {
|
|
177
|
+
if (intervals == null) return false;
|
|
178
|
+
if (timescaleID == null) return true;
|
|
179
|
+
return Array.from(intervals.values()).some((d)=>d.timescale_id == timescaleID);
|
|
180
|
+
}
|
|
181
|
+
function $774a5efa27d1c77b$export$fb98d5bae3a6800(selector) {
|
|
182
|
+
const ctx = (0, $8Y44A$useContext)($774a5efa27d1c77b$var$MacrostratDataProviderContext);
|
|
183
|
+
if (ctx == null) throw new Error("Missing MacrostratDataProvider");
|
|
184
|
+
if (selector === "api") return ctx;
|
|
185
|
+
return (0, $8Y44A$useStore)(ctx, selector);
|
|
186
|
+
}
|
|
187
|
+
const $774a5efa27d1c77b$var$dataTypeMapping = {
|
|
188
|
+
lithologies: (store)=>store.getLithologies,
|
|
189
|
+
intervals: (store)=>store.getIntervals,
|
|
190
|
+
columns: (store)=>store.getColumns,
|
|
191
|
+
environments: (store)=>store.getEnvironments,
|
|
192
|
+
refs: (store)=>store.getRefs
|
|
193
|
+
};
|
|
194
|
+
function $774a5efa27d1c77b$export$89dd4e5ae4a82373(dataType) {
|
|
195
|
+
if (dataType == "columns") throw new Error("Columns are not provided as a map");
|
|
196
|
+
const operator = $774a5efa27d1c77b$export$fb98d5bae3a6800($774a5efa27d1c77b$var$dataTypeMapping[dataType]);
|
|
197
|
+
(0, $8Y44A$useEffect)(()=>{
|
|
198
|
+
operator();
|
|
199
|
+
}, []);
|
|
200
|
+
return $774a5efa27d1c77b$export$fb98d5bae3a6800((state)=>state[dataType]);
|
|
201
|
+
}
|
|
202
|
+
function $774a5efa27d1c77b$export$81eaae0b474404fd(projectID, inProcess) {
|
|
203
|
+
const getColumns = $774a5efa27d1c77b$export$fb98d5bae3a6800((s)=>s.getColumns);
|
|
204
|
+
const columnsMap = $774a5efa27d1c77b$export$fb98d5bae3a6800((s)=>s.columnFootprints);
|
|
205
|
+
const key = projectID ?? -1;
|
|
206
|
+
const colData = columnsMap?.get(key);
|
|
207
|
+
(0, $8Y44A$useEffect)(()=>{
|
|
208
|
+
// Refetch if the columns are not available, or if we have requested inProcess columns where we didn't before
|
|
209
|
+
if (colData == null || inProcess && !colData.inProcess) getColumns(projectID, inProcess);
|
|
210
|
+
// If we've already fetched the columns there's nothing to do...
|
|
211
|
+
}, [
|
|
212
|
+
colData,
|
|
213
|
+
inProcess,
|
|
214
|
+
getColumns
|
|
215
|
+
]);
|
|
216
|
+
return (0, $8Y44A$useMemo)(()=>{
|
|
217
|
+
if (colData == null) return null;
|
|
218
|
+
let columns = colData.columns;
|
|
219
|
+
if (!inProcess && colData.inProcess) // Our available set of columns includes 'in process' columns, but we don't want them
|
|
220
|
+
columns.features = columns.features?.filter((d)=>d.properties.status != "in process");
|
|
221
|
+
return columns;
|
|
222
|
+
}, [
|
|
223
|
+
colData,
|
|
224
|
+
inProcess
|
|
225
|
+
]);
|
|
226
|
+
}
|
|
227
|
+
function $774a5efa27d1c77b$export$b9c9fc603d74a555(dataType, ...args) {
|
|
228
|
+
const selector = $774a5efa27d1c77b$var$dataTypeMapping[dataType];
|
|
229
|
+
const operator = $774a5efa27d1c77b$export$fb98d5bae3a6800(selector);
|
|
230
|
+
const [value, setValue] = (0, $8Y44A$useState)(null);
|
|
231
|
+
(0, $8Y44A$useEffect)(()=>{
|
|
232
|
+
operator(...args).then(setValue);
|
|
233
|
+
}, [
|
|
234
|
+
operator,
|
|
235
|
+
...args
|
|
236
|
+
]);
|
|
237
|
+
return value;
|
|
238
|
+
}
|
|
239
|
+
/** By default, we provide a store linked to the production API */ const $774a5efa27d1c77b$var$MacrostratDataProviderContext = (0, $8Y44A$createContext)($774a5efa27d1c77b$var$createMacrostratStore());
|
|
240
|
+
function $774a5efa27d1c77b$export$690613f93cdc5576(props) {
|
|
241
|
+
const { baseURL: baseURL = "https://macrostrat.org/api/v2", children: children } = props;
|
|
242
|
+
const [store] = (0, $8Y44A$useState)(()=>$774a5efa27d1c77b$var$createMacrostratStore(baseURL));
|
|
243
|
+
return (0, $8Y44A$macrostrathyper)($774a5efa27d1c77b$export$3098013bc6cc316d, {
|
|
244
|
+
baseURL: baseURL
|
|
245
|
+
}, (0, $8Y44A$macrostrathyper)($774a5efa27d1c77b$var$MacrostratDataProviderContext.Provider, {
|
|
246
|
+
value: store
|
|
247
|
+
}, children));
|
|
248
|
+
}
|
|
249
|
+
function $774a5efa27d1c77b$export$3098013bc6cc316d({ children: children, useDev: useDev = false, baseURL: baseURL }) {
|
|
250
|
+
baseURL ??= useDev ? "https://dev2.macrostrat.org/api/v2" : "https://macrostrat.org/api/v2";
|
|
251
|
+
return (0, $8Y44A$macrostrathyper)((0, $8Y44A$APIProvider), {
|
|
252
|
+
baseURL: baseURL,
|
|
253
|
+
unwrapResponse: (res)=>res.success.data
|
|
254
|
+
}, children);
|
|
255
|
+
}
|
|
256
|
+
function $774a5efa27d1c77b$export$9e42f9b6e0d67c7d(props) {
|
|
257
|
+
/** A column provider specialized the Macrostrat API. Maps more
|
|
258
|
+
* generic concepts to Macrostrat-specific ones.
|
|
259
|
+
*/ const { axisType: axisType } = (0, $d5074f164411387e$export$f8509b7cce386c7d)();
|
|
260
|
+
const { units: units, domain: domain, pixelScale: pixelScale, children: children } = props;
|
|
261
|
+
return (0, $8Y44A$macrostrathyper)((0, $8Y44A$ColumnProvider), {
|
|
262
|
+
axisType: axisType,
|
|
263
|
+
divisions: units,
|
|
264
|
+
range: domain,
|
|
265
|
+
pixelsPerMeter: pixelScale
|
|
266
|
+
}, children);
|
|
267
|
+
}
|
|
268
|
+
function $774a5efa27d1c77b$export$8492a5cae82b6a70({ children: children }) {
|
|
269
|
+
(0, $8Y44A$useEffect)(()=>{
|
|
270
|
+
console.warn("LithologiesProvider is deprecated. Replace with MacrostratDataProvider");
|
|
271
|
+
}, []);
|
|
272
|
+
return children;
|
|
273
|
+
}
|
|
274
|
+
function $774a5efa27d1c77b$export$4d18a90c945d129f() {
|
|
275
|
+
const getLithologies = $774a5efa27d1c77b$export$fb98d5bae3a6800((s)=>s.getLithologies);
|
|
276
|
+
const lithologies = $774a5efa27d1c77b$export$fb98d5bae3a6800((s)=>s.lithologies);
|
|
277
|
+
(0, $8Y44A$useEffect)(()=>{
|
|
278
|
+
if (lithologies == null) getLithologies();
|
|
279
|
+
}, [
|
|
280
|
+
lithologies,
|
|
281
|
+
getLithologies
|
|
282
|
+
]);
|
|
283
|
+
return lithologies;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
export {$774a5efa27d1c77b$export$fb98d5bae3a6800 as useMacrostratStore, $774a5efa27d1c77b$export$89dd4e5ae4a82373 as useMacrostratDefs, $774a5efa27d1c77b$export$81eaae0b474404fd as useMacrostratColumns, $774a5efa27d1c77b$export$b9c9fc603d74a555 as useMacrostratData, $774a5efa27d1c77b$export$690613f93cdc5576 as MacrostratDataProvider, $774a5efa27d1c77b$export$3098013bc6cc316d as MacrostratAPIProvider, $774a5efa27d1c77b$export$9e42f9b6e0d67c7d as MacrostratColumnProvider, $774a5efa27d1c77b$export$8492a5cae82b6a70 as LithologiesProvider, $774a5efa27d1c77b$export$4d18a90c945d129f as useLithologies};
|
|
288
|
+
//# sourceMappingURL=base.910b80b4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/column-views/src/data-provider/base.ts"],"sourcesContent":["/** Data provider for information that needs to be loaded in bulk for frontend views */\nimport baseFetch from \"cross-fetch\";\nimport { createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { create, useStore } from \"zustand\";\nimport {\n ColumnGeoJSONRecord,\n ColumnGeoJSONRecordWithID,\n Environment,\n MacrostratRef,\n} from \"@macrostrat/api-types\";\nimport {\n fetchAllColumns,\n fetchEnvironments,\n fetchIntervals,\n fetchLithologies,\n fetchRefs,\n} from \"./fetch\";\nimport { APIProvider } from \"@macrostrat/ui-components\";\nimport { ColumnProvider } from \"@macrostrat/column-components\";\n\nimport { ReactNode } from \"react\";\nimport { useMacrostratColumnData } from \"./store\";\n\nexport interface MacrostratDataProviderProps {\n baseURL: string;\n children: React.ReactNode;\n}\n\ninterface ColumnFootprintsStorage {\n project_id: number;\n // Whether the \"in process\" flag was used\n inProcess: boolean;\n // The column footprints\n columns: ColumnGeoJSONRecordWithID[];\n}\n\ninterface RefsSlice {\n refs: Map<number, MacrostratRef>;\n inFlightRequests: Set<string>; // Track requests to avoid duplicates\n getRefs(ids: number[]): Promise<MacrostratRef[]>;\n}\n\ninterface MacrostratStore extends RefsSlice {\n baseURL: string;\n fetch: any;\n lithologies: Map<number, any> | null;\n getLithologies(ids: number[] | null): Promise<any>;\n intervals: Map<number, any> | null;\n getIntervals(ids: number[] | null, timescaleID: number | null): Promise<any>;\n environments: Map<number, Environment> | null;\n getEnvironments(ids: number[] | null): Promise<Environment[]>;\n columnFootprints: Map<number, ColumnFootprintsStorage>;\n getColumns(\n projectID: number | null,\n inProcess: boolean\n ): Promise<ColumnGeoJSONRecord[]>;\n}\n\nfunction createMacrostratStore(\n baseURL: string = \"https://macrostrat.org/api/v2\"\n) {\n return create<MacrostratStore>((set, get): MacrostratStore => {\n return {\n baseURL,\n inFlightRequests: new Set(),\n async fetch(url: string, options?: RequestInit) {\n const url1 = baseURL + url;\n // Avoid duplicate requests\n const { inFlightRequests } = get();\n if (inFlightRequests.has(url1)) {\n return null; // Return null if already in flight\n }\n inFlightRequests.add(url1);\n //set({ inFlightRequests });\n const res = await baseFetch(url1, options);\n inFlightRequests.delete(url1);\n //set({in})\n return res;\n },\n ...createLithologiesSlice(set, get),\n ...createIntervalsSlice(set, get),\n ...createEnvironmentsSlice(set, get),\n ...createColumnsSlice(set, get),\n ...createRefsSlice(set, get),\n };\n });\n}\n\nfunction createRefsSlice(set, get) {\n return {\n refs: new Map(),\n async getRefs(ids: number[]): Promise<MacrostratRef[]> {\n const { refs, fetch } = get();\n const missing = ids.filter((id) => !refs.has(id));\n if (missing.length == 0) {\n return ids.map((id) => refs.get(id));\n }\n const data = await fetchRefs(missing, fetch);\n if (data == null) return [];\n for (const d of data) {\n refs.set(d.ref_id, d);\n }\n set({ refs });\n return ids.map((id) => refs.get(id));\n },\n };\n}\n\nfunction createColumnsSlice(set, get) {\n // Column footprints separated by project\n return {\n columnFootprints: new Map(),\n async getColumns(projectID: number | null, inProcess: boolean) {\n const { columnFootprints, baseURL, fetch } = get();\n const key = projectID ?? -1;\n let _inProcess = inProcess;\n if (projectID == null) {\n // If no project is specified, in process columns cannot be included\n _inProcess = false;\n }\n let footprints = columnFootprints.get(key);\n if (footprints == null || footprints.inProcess != _inProcess) {\n // Fetch the columns\n const statusCode = inProcess ? \"in process\" : null;\n let columns = await fetchAllColumns({\n projectID,\n statusCode: null,\n fetch,\n });\n if (columns == null) {\n return;\n }\n if (_inProcess) {\n const inProcessColumns = await fetchAllColumns({\n projectID,\n statusCode: \"in process\",\n fetch,\n });\n if (inProcessColumns == null) {\n return;\n }\n // Combine active and in-process columns\n columns = columns.concat(inProcessColumns);\n }\n\n footprints = {\n project_id: projectID,\n inProcess,\n columns,\n };\n // We could break multi-project result sets into separate caches here...\n // Copy the original map\n const columnFootprints2 = new Map(columnFootprints);\n columnFootprints2.set(key, footprints);\n set({ columnFootprints: columnFootprints2 });\n }\n return footprints.columns;\n },\n };\n}\n\nfunction createLithologiesSlice(set, get) {\n return {\n lithologies: null,\n async getLithologies(ids: number[] | null) {\n const { lithologies, fetch } = get();\n let lithMap = lithologies;\n if (lithMap == null) {\n const data = await fetchLithologies(fetch);\n if (data == null) return;\n lithMap = new Map(data.map((d) => [d.lith_id, d]));\n set({ lithologies: lithMap });\n }\n // Now get the lithologies\n if (ids == null) return lithMap.values();\n return ids.map((id) => lithMap.get(id));\n },\n };\n}\n\nfunction createEnvironmentsSlice(set, get) {\n return {\n environments: null,\n async getEnvironments(ids: number[] | null): Promise<Environment[]> {\n const { environments, fetch } = get();\n let envMap = environments;\n if (envMap == null) {\n const data = await fetchEnvironments(fetch);\n if (data == null) return [];\n envMap = new Map(data.map((d) => [d.environ_id, d]));\n set({ environments: envMap });\n }\n // Now get the environments\n if (ids == null) return envMap.values();\n return ids.map((id) => envMap.get(id));\n },\n };\n}\n\nfunction createIntervalsSlice(set, get) {\n return {\n intervals: null,\n async getIntervals(ids: number[] | null, timescaleID: number | null) {\n const { intervals, fetch } = get();\n let _intervals = intervals;\n if (intervals == null || !includesTimescale(intervals, timescaleID)) {\n // Fetch the intervals\n const data = await fetchIntervals(timescaleID, fetch);\n if (data == null) {\n return [];\n }\n const intervalMap = intervals ?? new Map();\n for (const d of data) {\n intervalMap.set(d.int_id, d);\n }\n _intervals = intervalMap;\n set({ intervals: _intervals });\n }\n if (ids == null && timescaleID == null)\n return Array.from(_intervals.values());\n if (timescaleID != null) {\n return Array.from(_intervals.values() as any[]).filter(\n (d) => d.timescale_id == timescaleID\n );\n }\n return ids.map((id) => intervals.get(id));\n },\n };\n}\n\nfunction includesTimescale(intervals: Map<number, any>, timescaleID: number) {\n if (intervals == null) return false;\n if (timescaleID == null) return true;\n return Array.from(intervals.values()).some(\n (d) => d.timescale_id == timescaleID\n );\n}\n\ntype MacrostratSelector = (store: MacrostratStore) => any;\n\nexport function useMacrostratStore(selector: MacrostratSelector | \"api\") {\n const ctx = useContext(MacrostratDataProviderContext);\n if (ctx == null) {\n throw new Error(\"Missing MacrostratDataProvider\");\n }\n if (selector === \"api\") {\n return ctx;\n }\n\n return useStore(ctx, selector);\n}\n\nconst dataTypeMapping = {\n lithologies: (store) => store.getLithologies,\n intervals: (store) => store.getIntervals,\n columns: (store) => store.getColumns,\n environments: (store) => store.getEnvironments,\n refs: (store) => store.getRefs,\n};\n\nexport function useMacrostratDefs(dataType: string): Map<number, any> | null {\n if (dataType == \"columns\") {\n throw new Error(\"Columns are not provided as a map\");\n }\n const operator = useMacrostratStore(dataTypeMapping[dataType]);\n useEffect(() => {\n operator();\n }, []);\n return useMacrostratStore((state) => state[dataType]);\n}\n\nexport function useMacrostratColumns(\n projectID: number | null,\n inProcess: boolean\n) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n const columnsMap = useMacrostratStore((s) => s.columnFootprints);\n const key = projectID ?? -1;\n const colData = columnsMap?.get(key);\n useEffect(() => {\n // Refetch if the columns are not available, or if we have requested inProcess columns where we didn't before\n if (colData == null || (inProcess && !colData.inProcess)) {\n getColumns(projectID, inProcess);\n }\n // If we've already fetched the columns there's nothing to do...\n }, [colData, inProcess, getColumns]);\n\n return useMemo(() => {\n if (colData == null) return null;\n let columns = colData.columns;\n if (!inProcess && colData.inProcess) {\n // Our available set of columns includes 'in process' columns, but we don't want them\n columns.features = columns.features?.filter(\n (d) => d.properties.status != \"in process\"\n );\n }\n return columns;\n }, [colData, inProcess]);\n}\n\nexport function useMacrostratData(dataType: string, ...args: any[]) {\n const selector = dataTypeMapping[dataType];\n const operator = useMacrostratStore(selector);\n\n const [value, setValue] = useState(null);\n\n useEffect(() => {\n operator(...args).then(setValue);\n }, [operator, ...args]);\n\n return value;\n}\n\n/** By default, we provide a store linked to the production API */\nconst MacrostratDataProviderContext = createContext(createMacrostratStore());\n\nexport function MacrostratDataProvider(props: MacrostratDataProviderProps) {\n const { baseURL = \"https://macrostrat.org/api/v2\", children } = props;\n\n const [store] = useState(() => createMacrostratStore(baseURL));\n\n return h(\n MacrostratAPIProvider,\n { baseURL },\n h(MacrostratDataProviderContext.Provider, { value: store }, children)\n );\n}\n\n/** Legacy API provider so useAPIResult can work */\n\ntype APIProviderProps = {\n children: ReactNode;\n useDev?: boolean;\n baseURL?: string;\n};\n\nexport function MacrostratAPIProvider({\n children,\n useDev = false,\n baseURL,\n}: APIProviderProps) {\n baseURL ??= useDev\n ? \"https://dev2.macrostrat.org/api/v2\"\n : \"https://macrostrat.org/api/v2\";\n\n return h(\n APIProvider,\n {\n baseURL,\n unwrapResponse: (res) => res.success.data,\n },\n children\n );\n}\n\nexport function MacrostratColumnProvider(props) {\n /** A column provider specialized the Macrostrat API. Maps more\n * generic concepts to Macrostrat-specific ones.\n */\n\n const { axisType } = useMacrostratColumnData();\n const { units, domain, pixelScale, children } = props;\n return h(\n ColumnProvider,\n { axisType, divisions: units, range: domain, pixelsPerMeter: pixelScale },\n children\n );\n}\n\n/** This is now a legacy provider */\nexport function LithologiesProvider({ children }) {\n useEffect(() => {\n console.warn(\n \"LithologiesProvider is deprecated. Replace with MacrostratDataProvider\"\n );\n }, []);\n return children;\n}\n\nexport function useLithologies() {\n const getLithologies = useMacrostratStore((s) => s.getLithologies);\n const lithologies = useMacrostratStore((s) => s.lithologies);\n useEffect(() => {\n if (lithologies == null) getLithologies();\n }, [lithologies, getLithologies]);\n return lithologies;\n}\n"],"names":[],"version":3,"file":"base.910b80b4.js.map"}
|