@macrostrat/column-views 1.0.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/esm/{data-area.daff8da0.js → column-views.062d164a.js} +1 -1
- package/dist/esm/{data-area.daff8da0.js.map → column-views.062d164a.js.map} +1 -1
- package/dist/esm/{data-provider.1506eb64.js → column-views.07521ce6.js} +1 -1
- package/dist/esm/column-views.07521ce6.js.map +1 -0
- package/dist/esm/column-views.134b2e2a.js +9 -0
- package/dist/esm/column-views.134b2e2a.js.map +1 -0
- package/dist/esm/{selection-popover.module.0a701258.css → column-views.16cc7a58.css} +11 -8
- package/dist/esm/column-views.16cc7a58.css.map +1 -0
- package/dist/esm/column-views.1c589cc4.js +141 -0
- package/dist/esm/column-views.1c589cc4.js.map +1 -0
- package/dist/esm/column-views.1ece326b.js +420 -0
- package/dist/esm/column-views.1ece326b.js.map +1 -0
- package/dist/esm/column-views.1edc7300.js +40 -0
- package/dist/esm/column-views.1edc7300.js.map +1 -0
- package/dist/esm/column-views.240ef158.css +159 -0
- package/dist/esm/column-views.240ef158.css.map +1 -0
- package/dist/esm/column-views.25471fe0.css +111 -0
- package/dist/esm/column-views.25471fe0.css.map +1 -0
- package/dist/esm/column-views.28ee5f43.js +288 -0
- package/dist/esm/column-views.28ee5f43.js.map +1 -0
- package/dist/esm/column-views.30646469.js +118 -0
- package/dist/esm/column-views.30646469.js.map +1 -0
- package/dist/esm/column-views.338a7a83.css +134 -0
- package/dist/esm/column-views.338a7a83.css.map +1 -0
- package/dist/esm/column-views.33dbc778.js +95 -0
- package/dist/esm/column-views.33dbc778.js.map +1 -0
- package/dist/esm/column-views.343b5aa2.js +98 -0
- package/dist/esm/column-views.343b5aa2.js.map +1 -0
- package/dist/esm/column-views.34636ec7.js +104 -0
- package/dist/esm/column-views.34636ec7.js.map +1 -0
- package/dist/esm/column-views.3465c8ad.js +16 -0
- package/dist/esm/column-views.3465c8ad.js.map +1 -0
- package/dist/esm/column-views.39657bbf.js +55 -0
- package/dist/esm/column-views.39657bbf.js.map +1 -0
- package/dist/esm/column-views.3b972a9b.css +4 -0
- package/dist/esm/{composite.module.69a38fd1.css.map → column-views.3b972a9b.css.map} +1 -1
- package/dist/esm/column-views.3bec70d6.js +167 -0
- package/dist/esm/column-views.3bec70d6.js.map +1 -0
- package/dist/esm/column-views.3de4dc43.js +66 -0
- package/dist/esm/column-views.3de4dc43.js.map +1 -0
- package/dist/esm/{column.db058031.js → column-views.3f4db8cb.js} +8 -8
- package/dist/esm/column-views.3f4db8cb.js.map +1 -0
- package/dist/esm/column-views.40c1f361.js +206 -0
- package/dist/esm/column-views.40c1f361.js.map +1 -0
- package/dist/esm/{composite.module.0638e7ee.js → column-views.40cd59b5.js} +1 -1
- package/dist/esm/{composite.module.0638e7ee.js.map → column-views.40cd59b5.js.map} +1 -1
- package/dist/esm/column-views.4637f4ce.js +46 -0
- package/dist/esm/column-views.4637f4ce.js.map +1 -0
- package/dist/esm/column-views.4c4c5bac.js +163 -0
- package/dist/esm/column-views.4c4c5bac.js.map +1 -0
- package/dist/esm/column-views.4d374a35.js +19 -0
- package/dist/esm/column-views.4d374a35.js.map +1 -0
- package/dist/esm/column-views.57c4ddf3.js +125 -0
- package/dist/esm/column-views.57c4ddf3.js.map +1 -0
- package/dist/esm/column-views.58b82432.js +58 -0
- package/dist/esm/column-views.58b82432.js.map +1 -0
- package/dist/esm/column-views.5b2635fd.js +13 -0
- package/dist/esm/column-views.5b2635fd.js.map +1 -0
- package/dist/esm/column-views.5c02fee2.js +258 -0
- package/dist/esm/column-views.5c02fee2.js.map +1 -0
- package/dist/esm/column-views.5cc09c1d.js +152 -0
- package/dist/esm/column-views.5cc09c1d.js.map +1 -0
- package/dist/esm/{names.f6a4e9a4.js → column-views.650bd9f5.js} +5 -5
- package/dist/esm/column-views.650bd9f5.js.map +1 -0
- package/dist/esm/column-views.68409161.js +89 -0
- package/dist/esm/column-views.68409161.js.map +1 -0
- package/dist/esm/column-views.6a954628.js +70 -0
- package/dist/esm/column-views.6a954628.js.map +1 -0
- package/dist/esm/column-views.6c670c13.css +26 -0
- package/dist/esm/column-views.6c670c13.css.map +1 -0
- package/dist/esm/column-views.6d6b73b4.js +55 -0
- package/dist/esm/column-views.6d6b73b4.js.map +1 -0
- package/dist/esm/column-views.86c4b36f.js +222 -0
- package/dist/esm/column-views.86c4b36f.js.map +1 -0
- package/dist/esm/column-views.88de2cee.js +9 -0
- package/dist/esm/column-views.88de2cee.js.map +1 -0
- package/dist/esm/{resolvers.b5c82b78.js → column-views.8dd877af.js} +16 -3
- package/dist/esm/column-views.8dd877af.js.map +1 -0
- package/dist/esm/column-views.8e51206e.js +143 -0
- package/dist/esm/column-views.8e51206e.js.map +1 -0
- package/dist/esm/{column.module.7f47d25a.js → column-views.94b5cca1.js} +1 -1
- package/dist/esm/{column.module.7f47d25a.js.map → column-views.94b5cca1.js.map} +1 -1
- package/dist/esm/column-views.9804efda.js +75 -0
- package/dist/esm/column-views.9804efda.js.map +1 -0
- package/dist/esm/column-views.9bdd477a.js +57 -0
- package/dist/esm/column-views.9bdd477a.js.map +1 -0
- package/dist/esm/column-views.9ced149e.js +98 -0
- package/dist/esm/column-views.9ced149e.js.map +1 -0
- package/dist/esm/{column.module.cbb072df.css → column-views.a7be0a4a.css} +1 -1
- package/dist/esm/{column.module.cbb072df.css.map → column-views.a7be0a4a.css.map} +1 -1
- package/dist/esm/column-views.a98214b2.js +9 -0
- package/dist/esm/column-views.a98214b2.js.map +1 -0
- package/dist/esm/column-views.aa9fcdba.js +221 -0
- package/dist/esm/column-views.aa9fcdba.js.map +1 -0
- package/dist/esm/{isotopes-column.7cb5cc45.js → column-views.ac9fb5e1.js} +3 -3
- package/dist/esm/{isotopes-column.7cb5cc45.js.map → column-views.ac9fb5e1.js.map} +1 -1
- package/dist/esm/column-views.b2e5f1d9.js +11 -0
- package/dist/esm/column-views.b2e5f1d9.js.map +1 -0
- package/dist/esm/column-views.b775c0a3.js +112 -0
- package/dist/esm/column-views.b775c0a3.js.map +1 -0
- package/dist/esm/column-views.beb54e95.js +39 -0
- package/dist/esm/column-views.beb54e95.js.map +1 -0
- package/dist/esm/{core.4db8e452.js → column-views.c58aad3f.js} +15 -16
- package/dist/esm/column-views.c58aad3f.js.map +1 -0
- package/dist/esm/{carbon-isotopes.3b502a9e.js → column-views.d1ad48eb.js} +4 -4
- package/dist/esm/{carbon-isotopes.3b502a9e.js.map → column-views.d1ad48eb.js.map} +1 -1
- package/dist/esm/column-views.dc42f5d0.js +48 -0
- package/dist/esm/column-views.dc42f5d0.js.map +1 -0
- package/dist/esm/column-views.dff52504.js +22 -0
- package/dist/esm/column-views.dff52504.js.map +1 -0
- package/dist/esm/column-views.e2b9c23c.css +33 -0
- package/dist/esm/column-views.e2b9c23c.css.map +1 -0
- package/dist/esm/column-views.e40b8bfb.css +14 -0
- package/dist/esm/column-views.e40b8bfb.css.map +1 -0
- package/dist/esm/column-views.e77b9d6b.js +170 -0
- package/dist/esm/column-views.e77b9d6b.js.map +1 -0
- package/dist/esm/column-views.ea237aa8.js +52 -0
- package/dist/esm/column-views.ea237aa8.js.map +1 -0
- package/dist/esm/column-views.edf77621.js +22 -0
- package/dist/esm/column-views.edf77621.js.map +1 -0
- package/dist/esm/column-views.f1efcc2c.js +9 -0
- package/dist/esm/column-views.f1efcc2c.js.map +1 -0
- package/dist/esm/column-views.f2e5a72f.js +66 -0
- package/dist/esm/column-views.f2e5a72f.js.map +1 -0
- package/dist/esm/column-views.f71ec4b4.js +127 -0
- package/dist/esm/column-views.f71ec4b4.js.map +1 -0
- package/dist/esm/column-views.f9dab157.js +3 -0
- package/dist/esm/column-views.f9dab157.js.map +1 -0
- package/dist/esm/column-views.fa6f3292.js +215 -0
- package/dist/esm/column-views.fa6f3292.js.map +1 -0
- package/dist/esm/column-views.fc2b4611.js +9 -0
- package/dist/esm/column-views.fc2b4611.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/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +29 -13
- 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 +12 -1
- 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/composite.module.69a38fd1.css +0 -4
- package/dist/esm/core.4db8e452.js.map +0 -1
- package/dist/esm/data-provider.1506eb64.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
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import $eIxPJ$macrostrathyper from "@macrostrat/hyper";
|
|
2
|
+
import {useKeyHandler as $eIxPJ$useKeyHandler} from "@macrostrat/ui-components";
|
|
3
|
+
import {createContext as $eIxPJ$createContext, useContext as $eIxPJ$useContext, useState as $eIxPJ$useState, useEffect as $eIxPJ$useEffect, useRef as $eIxPJ$useRef, useCallback as $eIxPJ$useCallback} from "react";
|
|
4
|
+
import {useStore as $eIxPJ$useStore, createStore as $eIxPJ$createStore} from "zustand";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
const $4d5d1c15f39f6a14$var$UnitSelectionContext = (0, $eIxPJ$createContext)(null);
|
|
11
|
+
function $4d5d1c15f39f6a14$export$77a278d5ca56e309() {
|
|
12
|
+
const store = (0, $eIxPJ$useContext)($4d5d1c15f39f6a14$var$UnitSelectionContext);
|
|
13
|
+
if (store == null) return ()=>{};
|
|
14
|
+
return (0, $eIxPJ$useStore)(store, (state)=>state.onUnitSelected);
|
|
15
|
+
}
|
|
16
|
+
function $4d5d1c15f39f6a14$export$b220b1d3591dc9e5(selector) {
|
|
17
|
+
const store = (0, $eIxPJ$useContext)($4d5d1c15f39f6a14$var$UnitSelectionContext);
|
|
18
|
+
if (store == null) throw new Error("useUnitSelectionStore must be used within a UnitSelectionProvider");
|
|
19
|
+
return (0, $eIxPJ$useStore)(store, selector);
|
|
20
|
+
}
|
|
21
|
+
function $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da() {
|
|
22
|
+
return $4d5d1c15f39f6a14$export$b220b1d3591dc9e5((state)=>state.selectedUnitData);
|
|
23
|
+
}
|
|
24
|
+
function $4d5d1c15f39f6a14$export$f19d75b1d4b676a4(props) {
|
|
25
|
+
const [store] = (0, $eIxPJ$useState)(()=>(0, $eIxPJ$createStore)((set)=>({
|
|
26
|
+
selectedUnit: null,
|
|
27
|
+
selectedUnitData: null,
|
|
28
|
+
overlayPosition: null,
|
|
29
|
+
setSelectedUnit (selectedUnit) {
|
|
30
|
+
if (selectedUnit == null) {
|
|
31
|
+
set({
|
|
32
|
+
selectedUnit: null,
|
|
33
|
+
selectedUnitData: null
|
|
34
|
+
});
|
|
35
|
+
return;
|
|
36
|
+
// If it's a number, set the selected unit
|
|
37
|
+
} else if (typeof selectedUnit === "number") set({
|
|
38
|
+
selectedUnit: selectedUnit,
|
|
39
|
+
selectedUnitData: null
|
|
40
|
+
});
|
|
41
|
+
else if ("unit_id" in selectedUnit) set({
|
|
42
|
+
selectedUnit: selectedUnit.unit_id,
|
|
43
|
+
selectedUnitData: selectedUnit
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
onUnitSelected: (unit, target, event)=>{
|
|
47
|
+
console.log("onUnitSelected", unit, target, event);
|
|
48
|
+
const el = props.columnRef?.current;
|
|
49
|
+
let overlayPosition = null;
|
|
50
|
+
if (unit != null && el != null && target != null) {
|
|
51
|
+
const rect = el.getBoundingClientRect();
|
|
52
|
+
const targetRect = target.getBoundingClientRect();
|
|
53
|
+
overlayPosition = {
|
|
54
|
+
x: targetRect.left - rect.left,
|
|
55
|
+
y: targetRect.top - rect.top,
|
|
56
|
+
width: targetRect.width,
|
|
57
|
+
height: targetRect.height
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
props.onUnitSelected?.(unit?.unit_id, unit);
|
|
61
|
+
return set({
|
|
62
|
+
selectedUnit: unit?.unit_id,
|
|
63
|
+
selectedUnitData: unit,
|
|
64
|
+
overlayPosition: overlayPosition
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
})));
|
|
68
|
+
const { units: units, selectedUnit: selectedUnit } = props;
|
|
69
|
+
(0, $eIxPJ$useEffect)(()=>{
|
|
70
|
+
// Synchronize store with provided props
|
|
71
|
+
if (selectedUnit != null) {
|
|
72
|
+
const unitData = units?.find((u)=>u.unit_id === selectedUnit);
|
|
73
|
+
store.setState({
|
|
74
|
+
selectedUnit: selectedUnit,
|
|
75
|
+
selectedUnitData: unitData
|
|
76
|
+
});
|
|
77
|
+
} else store.setState({
|
|
78
|
+
selectedUnit: null,
|
|
79
|
+
selectedUnitData: null
|
|
80
|
+
});
|
|
81
|
+
}, [
|
|
82
|
+
selectedUnit,
|
|
83
|
+
units
|
|
84
|
+
]);
|
|
85
|
+
return (0, $eIxPJ$macrostrathyper)($4d5d1c15f39f6a14$var$UnitSelectionContext.Provider, {
|
|
86
|
+
value: store
|
|
87
|
+
}, props.children);
|
|
88
|
+
}
|
|
89
|
+
function $4d5d1c15f39f6a14$export$cbbec12b1451fe7d(unit) {
|
|
90
|
+
const ref = (0, $eIxPJ$useRef)();
|
|
91
|
+
const selectedUnit = $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da();
|
|
92
|
+
const onSelectUnit = $4d5d1c15f39f6a14$export$b220b1d3591dc9e5((state)=>state.onUnitSelected);
|
|
93
|
+
const selected = selectedUnit?.unit_id == unit.unit_id;
|
|
94
|
+
const onClick = (0, $eIxPJ$useCallback)((evt)=>{
|
|
95
|
+
onSelectUnit(unit, ref.current, evt);
|
|
96
|
+
evt.stopPropagation();
|
|
97
|
+
}, [
|
|
98
|
+
unit,
|
|
99
|
+
onSelectUnit
|
|
100
|
+
]);
|
|
101
|
+
(0, $eIxPJ$useEffect)(()=>{
|
|
102
|
+
if (!selected) return;
|
|
103
|
+
// In case we haven't set the position of the unit (if we don't have a target), set the selected unit
|
|
104
|
+
onSelectUnit(unit, ref.current, null);
|
|
105
|
+
// Scroll the unit into view
|
|
106
|
+
ref.current?.scrollIntoView({
|
|
107
|
+
behavior: "smooth",
|
|
108
|
+
block: "center",
|
|
109
|
+
inline: "nearest"
|
|
110
|
+
});
|
|
111
|
+
}, [
|
|
112
|
+
selected,
|
|
113
|
+
onSelectUnit
|
|
114
|
+
]);
|
|
115
|
+
return [
|
|
116
|
+
ref,
|
|
117
|
+
selected,
|
|
118
|
+
onClick
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
function $4d5d1c15f39f6a14$export$70f5ee19650fc7d1({ units: units }) {
|
|
122
|
+
const selectedUnit = $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da();
|
|
123
|
+
const selectUnit = $4d5d1c15f39f6a14$export$77a278d5ca56e309();
|
|
124
|
+
const ix = units.findIndex((unit)=>unit.unit_id === selectedUnit?.unit_id);
|
|
125
|
+
const keyMap = {
|
|
126
|
+
38: ix - 1,
|
|
127
|
+
40: ix + 1
|
|
128
|
+
};
|
|
129
|
+
(0, $eIxPJ$useKeyHandler)((event)=>{
|
|
130
|
+
const nextIx = keyMap[event.keyCode];
|
|
131
|
+
if (nextIx == null || nextIx < 0 || nextIx >= units.length) return;
|
|
132
|
+
selectUnit(units[nextIx], null, null);
|
|
133
|
+
event.stopPropagation();
|
|
134
|
+
}, [
|
|
135
|
+
units,
|
|
136
|
+
ix
|
|
137
|
+
]);
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
export {$4d5d1c15f39f6a14$export$77a278d5ca56e309 as useUnitSelectionDispatch, $4d5d1c15f39f6a14$export$b220b1d3591dc9e5 as useUnitSelectionStore, $4d5d1c15f39f6a14$export$f0dd93f90aa8e5da as useSelectedUnit, $4d5d1c15f39f6a14$export$f19d75b1d4b676a4 as UnitSelectionProvider, $4d5d1c15f39f6a14$export$cbbec12b1451fe7d as useUnitSelectionTarget, $4d5d1c15f39f6a14$export$70f5ee19650fc7d1 as UnitKeyboardNavigation};
|
|
143
|
+
//# sourceMappingURL=column-views.8e51206e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["packages/column-views/src/units/selection.ts"],"sourcesContent":["import { BaseUnit } from \"@macrostrat/api-types\";\nimport h from \"@macrostrat/hyper\";\nimport { useKeyHandler } from \"@macrostrat/ui-components\";\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n ReactNode,\n RefObject,\n useRef,\n useCallback,\n} from \"react\";\nimport { createStore, StoreApi, useStore } from \"zustand\";\nimport type { RectBounds, IUnit } from \"./types\";\n\ntype UnitSelectDispatch = (\n unit: BaseUnit | null,\n target: HTMLElement | null,\n event: Event | null\n) => void;\n\nconst UnitSelectionContext = createContext<StoreApi<UnitSelectionStore>>(null);\n\nexport function useUnitSelectionDispatch(): UnitSelectDispatch {\n const store = useContext(UnitSelectionContext);\n if (store == null) {\n return () => {};\n }\n return useStore(store, (state) => state.onUnitSelected);\n}\n\nexport function useUnitSelectionStore<T>(\n selector: (state: UnitSelectionStore) => T\n): T {\n const store = useContext(UnitSelectionContext);\n if (store == null) {\n throw new Error(\n \"useUnitSelectionStore must be used within a UnitSelectionProvider\"\n );\n }\n return useStore(store, selector);\n}\n\nexport function useSelectedUnit() {\n return useUnitSelectionStore((state) => state.selectedUnitData);\n}\n\ninterface UnitSelectionStore {\n selectedUnit: number | null;\n selectedUnitData: BaseUnit | null;\n overlayPosition: RectBounds | null;\n onUnitSelected: UnitSelectDispatch;\n setSelectedUnit: (unit: number | null) => void;\n}\n\nexport function UnitSelectionProvider<T extends BaseUnit>(props: {\n children: ReactNode;\n columnRef?: RefObject<HTMLElement>;\n units: T[];\n selectedUnit: number | null;\n onUnitSelected?: (unitID: number | null, unit: T | null) => void;\n}) {\n const [store] = useState(() =>\n createStore<UnitSelectionStore>((set) => ({\n selectedUnit: null,\n selectedUnitData: null,\n overlayPosition: null,\n setSelectedUnit(selectedUnit: number | null | BaseUnit) {\n if (selectedUnit == null) {\n set({ selectedUnit: null, selectedUnitData: null });\n return;\n // If it's a number, set the selected unit\n } else if (typeof selectedUnit === \"number\") {\n set({ selectedUnit, selectedUnitData: null });\n } else if (\"unit_id\" in selectedUnit) {\n set({\n selectedUnit: selectedUnit.unit_id,\n selectedUnitData: selectedUnit,\n });\n }\n },\n onUnitSelected: (unit: T, target: HTMLElement, event: Event) => {\n console.log(\"onUnitSelected\", unit, target, event);\n const el = props.columnRef?.current;\n let overlayPosition = null;\n if (unit != null && el != null && target != null) {\n const rect = el.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n\n overlayPosition = {\n x: targetRect.left - rect.left,\n y: targetRect.top - rect.top,\n width: targetRect.width,\n height: targetRect.height,\n };\n }\n props.onUnitSelected?.(unit?.unit_id, unit);\n\n return set({\n selectedUnit: unit?.unit_id,\n selectedUnitData: unit,\n overlayPosition,\n });\n },\n }))\n );\n\n const { units, selectedUnit } = props;\n\n useEffect(() => {\n // Synchronize store with provided props\n if (selectedUnit != null) {\n const unitData = units?.find((u) => u.unit_id === selectedUnit);\n store.setState({ selectedUnit, selectedUnitData: unitData });\n } else {\n store.setState({ selectedUnit: null, selectedUnitData: null });\n }\n }, [selectedUnit, units]);\n\n return h(UnitSelectionContext.Provider, { value: store }, props.children);\n}\n\nexport function useUnitSelectionTarget(\n unit: IUnit\n): [React.RefObject<HTMLElement>, boolean, (evt: Event) => void] {\n const ref = useRef<HTMLElement>();\n const selectedUnit = useSelectedUnit();\n const onSelectUnit = useUnitSelectionStore((state) => state.onUnitSelected);\n const selected = selectedUnit?.unit_id == unit.unit_id;\n\n const onClick = useCallback(\n (evt: Event) => {\n onSelectUnit(unit, ref.current, evt);\n evt.stopPropagation();\n },\n [unit, onSelectUnit]\n );\n\n useEffect(() => {\n if (!selected) return;\n // In case we haven't set the position of the unit (if we don't have a target), set the selected unit\n onSelectUnit(unit, ref.current, null);\n\n // Scroll the unit into view\n ref.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"nearest\",\n });\n }, [selected, onSelectUnit]);\n\n return [ref, selected, onClick];\n}\n\nexport function UnitKeyboardNavigation<T extends BaseUnit>({\n units,\n}: {\n units: T[];\n}) {\n const selectedUnit = useSelectedUnit();\n const selectUnit = useUnitSelectionDispatch();\n\n const ix = units.findIndex((unit) => unit.unit_id === selectedUnit?.unit_id);\n\n const keyMap = {\n 38: ix - 1,\n 40: ix + 1,\n };\n\n useKeyHandler(\n (event) => {\n const nextIx = keyMap[event.keyCode];\n if (nextIx == null || nextIx < 0 || nextIx >= units.length) return;\n selectUnit(units[nextIx], null, null);\n event.stopPropagation();\n },\n [units, ix]\n );\n return null;\n}\n"],"names":[],"version":3,"file":"column-views.8e51206e.js.map"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAPA,4CAA8B;AAC9B,2CAAgC;AAChC,4CAA2B;AAC3B,4CAAmC;AACnC,4CAA6B;AAC7B,4CAA+B;AAC/B,4CAAoC;AACpC,4CAA+B","sources":["packages/column-views/src/carbon-isotopes/column.module.sass"],"sourcesContent":["@use \"sass:color\"\n\n.column-ui\n width: 100vw\n height: 100vh\n overflow-y: scroll\n display: flex\n flex-direction: row\n\n.column-view\n flex-grow: 1\n padding: 1em\n max-height: 100vh\n overflow-y: scroll\n h1\n font-size: 1.2em\n margin-bottom: 0.2em\n padding-left: 35px\n\n// Column\n.column\n margin-bottom: 1em\n display: flex\n flex-direction: row\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n :global\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px,-12px)\n\n rect.unit\n stroke: black\n stroke-width: 1px\n\n g.lithology-column use.frame\n stroke: black\n stroke-width: 1.5px !important\n pointer-events: none\n\n g.isotopes-column\n rect.underlay\n fill: transparent\n\n .col-note-label\n font-size: 10px\n margin-top: 3px\n padding: 2px 2px 2px 3px\n line-height: 9px\n border-left: none !important\n\n g.height-range\n display: none\n\n .note-inner\n border: none\n\n .frame rect\n fill: transparent\n\n\n\n.bp5-dark\n .column :global\n .lithology-column .frame\n stroke: white\n g.inner\n rect.unit\n filter: invert(100%)\n g.lithology-column use.frame\n stroke: white\n .note\n line, path.col-note-link\n stroke: white\n .y.axis .tick line\n stroke: white\n\n.column-nav\n position: sticky\n top: 2.2em\n h3\n color: #444\n margin-bottom: 0.3em\n\n.default-buttons\n width: 100%\n margin: 0 -10px\n\ndiv.map-column\n width: 600px\n height: 100vh\n display: flex\n flex-direction: column\n\n :global\n .map-area\n flex-grow: 1\n\n .map-placeholder\n position: relative\n\n .macrostrat-map\n .graticule\n stroke-dasharray: inherit\n stroke: color.adjust(#AFE6F0, $lightness: -5%)\n .neatline\n stroke-width: 1.5px\n\n .context-map\n position: absolute\n top: 0\n right: 0\n width: 250px\n height: 250px\n cursor: pointer\n z-index: 100\n &.expanded\n cursor: inherit\n .columns path:hover\n stroke: rgba(255,0,0,.4) !important\n\n .close-button\n position: absolute\n top: 1em\n right: 1em\n\n .land\n background-color: rgb(233, 252, 234)\n"],"names":[],"version":3,"file":"column.
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;AAAA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAPA,4CAA8B;AAC9B,2CAAgC;AAChC,4CAA2B;AAC3B,4CAAmC;AACnC,4CAA6B;AAC7B,4CAA+B;AAC/B,4CAAoC;AACpC,4CAA+B","sources":["packages/column-views/src/carbon-isotopes/column.module.sass"],"sourcesContent":["@use \"sass:color\"\n\n.column-ui\n width: 100vw\n height: 100vh\n overflow-y: scroll\n display: flex\n flex-direction: row\n\n.column-view\n flex-grow: 1\n padding: 1em\n max-height: 100vh\n overflow-y: scroll\n h1\n font-size: 1.2em\n margin-bottom: 0.2em\n padding-left: 35px\n\n// Column\n.column\n margin-bottom: 1em\n display: flex\n flex-direction: row\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n :global\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px,-12px)\n\n rect.unit\n stroke: black\n stroke-width: 1px\n\n g.lithology-column use.frame\n stroke: black\n stroke-width: 1.5px !important\n pointer-events: none\n\n g.isotopes-column\n rect.underlay\n fill: transparent\n\n .col-note-label\n font-size: 10px\n margin-top: 3px\n padding: 2px 2px 2px 3px\n line-height: 9px\n border-left: none !important\n\n g.height-range\n display: none\n\n .note-inner\n border: none\n\n .frame rect\n fill: transparent\n\n\n\n.bp5-dark\n .column :global\n .lithology-column .frame\n stroke: white\n g.inner\n rect.unit\n filter: invert(100%)\n g.lithology-column use.frame\n stroke: white\n .note\n line, path.col-note-link\n stroke: white\n .y.axis .tick line\n stroke: white\n\n.column-nav\n position: sticky\n top: 2.2em\n h3\n color: #444\n margin-bottom: 0.3em\n\n.default-buttons\n width: 100%\n margin: 0 -10px\n\ndiv.map-column\n width: 600px\n height: 100vh\n display: flex\n flex-direction: column\n\n :global\n .map-area\n flex-grow: 1\n\n .map-placeholder\n position: relative\n\n .macrostrat-map\n .graticule\n stroke-dasharray: inherit\n stroke: color.adjust(#AFE6F0, $lightness: -5%)\n .neatline\n stroke-width: 1.5px\n\n .context-map\n position: absolute\n top: 0\n right: 0\n width: 250px\n height: 250px\n cursor: pointer\n z-index: 100\n &.expanded\n cursor: inherit\n .columns path:hover\n stroke: rgba(255,0,0,.4) !important\n\n .close-button\n position: absolute\n top: 1em\n right: 1em\n\n .land\n background-color: rgb(233, 252, 234)\n"],"names":[],"version":3,"file":"column-views.94b5cca1.js.map"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {useMacrostratStore as $774a5efa27d1c77b$export$fb98d5bae3a6800, useMacrostratColumns as $774a5efa27d1c77b$export$81eaae0b474404fd} from "./column-views.28ee5f43.js";
|
|
2
|
+
import {create as $g0ikq$create, useStore as $g0ikq$useStore} from "zustand";
|
|
3
|
+
import {createContext as $g0ikq$createContext, useState as $g0ikq$useState, useEffect as $g0ikq$useEffect, useContext as $g0ikq$useContext} from "react";
|
|
4
|
+
import $g0ikq$macrostrathyper from "@macrostrat/hyper";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
const $09486427d129f589$var$NavigationStoreContext = (0, $g0ikq$createContext)(null);
|
|
11
|
+
function $09486427d129f589$export$8da3b11f62ebf019({ children: children, columns: columns, selectedColumn: selectedColumn, projectID: projectID, inProcess: inProcess, onSelectColumn: onSelectColumn, onHoverColumn: onHoverColumn }) {
|
|
12
|
+
const getColumns = (0, $774a5efa27d1c77b$export$fb98d5bae3a6800)((s)=>s.getColumns);
|
|
13
|
+
const [store] = (0, $g0ikq$useState)(()=>{
|
|
14
|
+
return (0, $g0ikq$create)((set, get)=>{
|
|
15
|
+
return {
|
|
16
|
+
columns: null,
|
|
17
|
+
selectedColumn: null,
|
|
18
|
+
hoveredColumn: null,
|
|
19
|
+
selectColumn (columnID) {
|
|
20
|
+
set({
|
|
21
|
+
selectedColumn: columnID,
|
|
22
|
+
hoveredColumn: null
|
|
23
|
+
});
|
|
24
|
+
const { columns: columns } = get();
|
|
25
|
+
const column = columns?.find((d)=>d.id == columnID);
|
|
26
|
+
onSelectColumn?.(columnID, column);
|
|
27
|
+
},
|
|
28
|
+
setHoveredColumn (columnID) {
|
|
29
|
+
set({
|
|
30
|
+
hoveredColumn: columnID
|
|
31
|
+
});
|
|
32
|
+
const { columns: columns } = get();
|
|
33
|
+
const column = columns?.find((d)=>d.id == columnID);
|
|
34
|
+
onHoverColumn?.(columnID, column);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
// Set up the store
|
|
40
|
+
/** TODO: unify handling of columns between parts of application */ // useAsyncEffect(async () => {
|
|
41
|
+
// let _columns = columns ?? (await getColumns(projectID, inProcess));
|
|
42
|
+
// store.setState({ columns: _columns, selectedColumn });
|
|
43
|
+
// }, [projectID, inProcess, columns, getColumns]);
|
|
44
|
+
const _columns = columns ?? (0, $774a5efa27d1c77b$export$81eaae0b474404fd)(projectID, inProcess);
|
|
45
|
+
(0, $g0ikq$useEffect)(()=>{
|
|
46
|
+
if (_columns != null) store.setState({
|
|
47
|
+
columns: _columns,
|
|
48
|
+
selectedColumn: selectedColumn
|
|
49
|
+
});
|
|
50
|
+
}, [
|
|
51
|
+
_columns
|
|
52
|
+
]);
|
|
53
|
+
// Update selected colun if it is changed externally
|
|
54
|
+
// Kind of an awkward way to do this but we need to allow the selector to run
|
|
55
|
+
(0, $g0ikq$useEffect)(()=>{
|
|
56
|
+
console.log("Selecting column", selectedColumn);
|
|
57
|
+
const { selectColumn: selectColumn, selectedColumn: _internalSelectedColumn } = store.getState();
|
|
58
|
+
if (selectedColumn == _internalSelectedColumn) return;
|
|
59
|
+
selectColumn(selectedColumn);
|
|
60
|
+
}, [
|
|
61
|
+
selectedColumn
|
|
62
|
+
]);
|
|
63
|
+
return (0, $g0ikq$macrostrathyper)($09486427d129f589$var$NavigationStoreContext.Provider, {
|
|
64
|
+
value: store
|
|
65
|
+
}, children);
|
|
66
|
+
}
|
|
67
|
+
function $09486427d129f589$export$642c2b57c47ea41(selector) {
|
|
68
|
+
const storeApi = (0, $g0ikq$useContext)($09486427d129f589$var$NavigationStoreContext);
|
|
69
|
+
if (storeApi == null) throw new Error("Missing ColumnNavigationProvider");
|
|
70
|
+
return (0, $g0ikq$useStore)(storeApi, selector);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
export {$09486427d129f589$export$8da3b11f62ebf019 as ColumnNavigationProvider, $09486427d129f589$export$642c2b57c47ea41 as useColumnNavigationStore};
|
|
75
|
+
//# sourceMappingURL=column-views.9804efda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;AAkCA,MAAM,+CAAyB,CAAA,GAAA,oBAAY,EACzC;AAGK,SAAS,0CAAyB,YACvC,QAAQ,WACR,OAAO,kBACP,cAAc,aACd,SAAS,aACT,SAAS,kBACT,cAAc,iBACd,aAAa,EACW;IACxB,MAAM,aAAa,CAAA,GAAA,wCAAiB,EAAE,CAAC,IAAM,EAAE,UAAU;IAEzD,MAAM,CAAC,MAAM,GAAG,CAAA,GAAA,eAAO,EAAE;QACvB,OAAO,CAAA,GAAA,aAAK,EAAmB,CAAC,KAAK;YACnC,OAAO;gBACL,SAAS;gBACT,gBAAgB;gBAChB,eAAe;gBACf,cAAa,QAAuB;oBAClC,IAAI;wBAAE,gBAAgB;wBAAU,eAAe;oBAAK;oBACpD,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,iBAAiB,UAAU;gBAC7B;gBACA,kBAAiB,QAAuB;oBACtC,IAAI;wBAAE,eAAe;oBAAS;oBAC9B,MAAM,WAAE,OAAO,EAAE,GAAG;oBACpB,MAAM,SAAS,SAAS,KAAK,CAAC,IAAM,EAAE,EAAE,IAAI;oBAC5C,gBAAgB,UAAU;gBAC5B;YACF;QACF;IACF;IAEA,mBAAmB;IACnB,iEAAiE,GACjE,+BAA+B;IAC/B,wEAAwE;IACxE,2DAA2D;IAC3D,mDAAmD;IAEnD,MAAM,WAAW,WAAW,CAAA,GAAA,yCAAmB,EAAE,WAAW;IAC5D,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,YAAY,MACd,MAAM,QAAQ,CAAC;YAAE,SAAS;4BAAU;QAAe;IAEvD,GAAG;QAAC;KAAS;IACb,oDAAoD;IAEpD,6EAA6E;IAC7E,CAAA,GAAA,gBAAQ,EAAE;QACR,QAAQ,GAAG,CAAC,oBAAoB;QAChC,MAAM,gBAAE,YAAY,EAAE,gBAAgB,uBAAuB,EAAE,GAC7D,MAAM,QAAQ;QAChB,IAAI,kBAAkB,yBACpB;QAEF,aAAa;IACf,GAAG;QAAC;KAAe;IAEnB,OAAO,CAAA,GAAA,sBAAA,EAAE,6CAAuB,QAAQ,EAAE;QAAE,OAAO;IAAM,GAAG;AAC9D;AAEO,SAAS,yCACd,QAAyC;IAEzC,MAAM,WAAW,CAAA,GAAA,iBAAS,EAAE;IAC5B,IAAI,YAAY,MACd,MAAM,IAAI,MAAM;IAElB,OAAO,CAAA,GAAA,eAAO,EAAE,UAAU;AAC5B","sources":["packages/column-views/src/maps/column-navigation/mapbox/state.ts"],"sourcesContent":["import { create, StoreApi, useStore } from \"zustand\";\nimport type { ColumnGeoJSONRecordWithID } from \"@macrostrat/api-types\";\nimport {\n createContext,\n useState,\n useContext,\n ReactNode,\n useEffect,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"../../../data-provider\";\n\nexport interface NavigationStore {\n columns: ColumnGeoJSONRecordWithID[];\n selectedColumn: number | null;\n hoveredColumn: number | null;\n selectColumn: (columnID: number | null) => void;\n setHoveredColumn: (columnID: number | null) => void;\n}\n\nexport interface NavigationProviderProps {\n projectID?: number;\n inProcess?: boolean;\n selectedColumn?: number | null;\n hoveredColumn?: number | null;\n columns?: ColumnGeoJSONRecordWithID[] | null;\n children: ReactNode;\n onSelectColumn?: (col_id: number | null, column: any) => void;\n onHoverColumn?: (col_id: number | null, column: any) => void;\n}\n\nconst NavigationStoreContext = createContext<StoreApi<NavigationStore> | null>(\n null\n);\n\nexport function ColumnNavigationProvider({\n children,\n columns,\n selectedColumn,\n projectID,\n inProcess,\n onSelectColumn,\n onHoverColumn,\n}: NavigationProviderProps) {\n const getColumns = useMacrostratStore((s) => s.getColumns);\n\n const [store] = useState(() => {\n return create<NavigationStore>((set, get): NavigationStore => {\n return {\n columns: null,\n selectedColumn: null,\n hoveredColumn: null,\n selectColumn(columnID: number | null) {\n set({ selectedColumn: columnID, hoveredColumn: null });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onSelectColumn?.(columnID, column);\n },\n setHoveredColumn(columnID: number | null) {\n set({ hoveredColumn: columnID });\n const { columns } = get();\n const column = columns?.find((d) => d.id == columnID);\n onHoverColumn?.(columnID, column);\n },\n };\n });\n });\n\n // Set up the store\n /** TODO: unify handling of columns between parts of application */\n // useAsyncEffect(async () => {\n // let _columns = columns ?? (await getColumns(projectID, inProcess));\n // store.setState({ columns: _columns, selectedColumn });\n // }, [projectID, inProcess, columns, getColumns]);\n\n const _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n useEffect(() => {\n if (_columns != null) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected colun if it is changed externally\n\n // Kind of an awkward way to do this but we need to allow the selector to run\n useEffect(() => {\n console.log(\"Selecting column\", selectedColumn);\n const { selectColumn, selectedColumn: _internalSelectedColumn } =\n store.getState();\n if (selectedColumn == _internalSelectedColumn) {\n return;\n }\n selectColumn(selectedColumn);\n }, [selectedColumn]);\n\n return h(NavigationStoreContext.Provider, { value: store }, children);\n}\n\nexport function useColumnNavigationStore(\n selector: (state: NavigationStore) => any\n) {\n const storeApi = useContext(NavigationStoreContext);\n if (storeApi == null) {\n throw new Error(\"Missing ColumnNavigationProvider\");\n }\n return useStore(storeApi, selector);\n}\n"],"names":[],"version":3,"file":"column-views.9804efda.js.map"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import "./column-views.e40b8bfb.css";
|
|
2
|
+
import $3vk6I$columnviews3465c8adjs from "./column-views.3465c8ad.js";
|
|
3
|
+
import {useMacrostratUnits as $d5074f164411387e$export$6fb40844db555b2, useCompositeScale as $d5074f164411387e$export$a7fc62995ec4f76} from "./column-views.ea237aa8.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$columnviews3465c8adjs))));
|
|
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=column-views.9bdd477a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;AAMH,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,uEAAK;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":"column-views.9bdd477a.js.map"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import "./column-views.e2b9c23c.css";
|
|
2
|
+
import $lfxOo$columnviewsdff52504js from "./column-views.dff52504.js";
|
|
3
|
+
import {useMacrostratColumnData as $d5074f164411387e$export$f8509b7cce386c7d} from "./column-views.ea237aa8.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$columnviewsdff52504js))));
|
|
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=column-views.9ced149e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;AAeA,MAAM,0BAAI,CAAA,GAAA,sBAAI,EAAE,MAAM,CAAC,CAAA,GAAA,uEAAK;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":"column-views.9ced149e.js.map"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAEA;;;;;;;;AAOA;;;;;;;AAMI;;;;;;AAMF;;;;;;AAKE;;;;;;;;;;AAWE;;;;;;AAMF;;;;;AAME;;;;;;AAMA;;;;AAIF;;;;;;;;;;;;;;;;AAkBA;;;;AAII;;;;;;;;AAMN;;;;AASF;;;;;;;;;;AAWM;;;;;;;;;;;;AAYA;;;;AAIA;;;;;;;;;AAOE;;;;AAIF","sources":["packages/column-views/src/carbon-isotopes/column.module.sass"],"sourcesContent":["@use \"sass:color\"\n\n.column-ui\n width: 100vw\n height: 100vh\n overflow-y: scroll\n display: flex\n flex-direction: row\n\n.column-view\n flex-grow: 1\n padding: 1em\n max-height: 100vh\n overflow-y: scroll\n h1\n font-size: 1.2em\n margin-bottom: 0.2em\n padding-left: 35px\n\n// Column\n.column\n margin-bottom: 1em\n display: flex\n flex-direction: row\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n :global\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px,-12px)\n\n rect.unit\n stroke: black\n stroke-width: 1px\n\n g.lithology-column use.frame\n stroke: black\n stroke-width: 1.5px !important\n pointer-events: none\n\n g.isotopes-column\n rect.underlay\n fill: transparent\n\n .col-note-label\n font-size: 10px\n margin-top: 3px\n padding: 2px 2px 2px 3px\n line-height: 9px\n border-left: none !important\n\n g.height-range\n display: none\n\n .note-inner\n border: none\n\n .frame rect\n fill: transparent\n\n\n\n.bp5-dark\n .column :global\n .lithology-column .frame\n stroke: white\n g.inner\n rect.unit\n filter: invert(100%)\n g.lithology-column use.frame\n stroke: white\n .note\n line, path.col-note-link\n stroke: white\n .y.axis .tick line\n stroke: white\n\n.column-nav\n position: sticky\n top: 2.2em\n h3\n color: #444\n margin-bottom: 0.3em\n\n.default-buttons\n width: 100%\n margin: 0 -10px\n\ndiv.map-column\n width: 600px\n height: 100vh\n display: flex\n flex-direction: column\n\n :global\n .map-area\n flex-grow: 1\n\n .map-placeholder\n position: relative\n\n .macrostrat-map\n .graticule\n stroke-dasharray: inherit\n stroke: color.adjust(#AFE6F0, $lightness: -5%)\n .neatline\n stroke-width: 1.5px\n\n .context-map\n position: absolute\n top: 0\n right: 0\n width: 250px\n height: 250px\n cursor: pointer\n z-index: 100\n &.expanded\n cursor: inherit\n .columns path:hover\n stroke: rgba(255,0,0,.4) !important\n\n .close-button\n position: absolute\n top: 1em\n right: 1em\n\n .land\n background-color: rgb(233, 252, 234)\n"],"names":[],"version":3,"file":"column.
|
|
1
|
+
{"mappings":"AAEA;;;;;;;;AAOA;;;;;;;AAMI;;;;;;AAMF;;;;;;AAKE;;;;;;;;;;AAWE;;;;;;AAMF;;;;;AAME;;;;;;AAMA;;;;AAIF;;;;;;;;;;;;;;;;AAkBA;;;;AAII;;;;;;;;AAMN;;;;AASF;;;;;;;;;;AAWM;;;;;;;;;;;;AAYA;;;;AAIA;;;;;;;;;AAOE;;;;AAIF","sources":["packages/column-views/src/carbon-isotopes/column.module.sass"],"sourcesContent":["@use \"sass:color\"\n\n.column-ui\n width: 100vw\n height: 100vh\n overflow-y: scroll\n display: flex\n flex-direction: row\n\n.column-view\n flex-grow: 1\n padding: 1em\n max-height: 100vh\n overflow-y: scroll\n h1\n font-size: 1.2em\n margin-bottom: 0.2em\n padding-left: 35px\n\n// Column\n.column\n margin-bottom: 1em\n display: flex\n flex-direction: row\n .age-axis-label\n writing-mode: vertical-lr\n transform: rotate(180deg)\n font-size: 12px\n text-align: center\n position: sticky\n top: 0\n max-height: 100vh\n\n :global\n .tick text\n text-anchor: middle\n font-weight: 400 !important\n transform: rotate(-90deg) translate(8px,-12px)\n\n rect.unit\n stroke: black\n stroke-width: 1px\n\n g.lithology-column use.frame\n stroke: black\n stroke-width: 1.5px !important\n pointer-events: none\n\n g.isotopes-column\n rect.underlay\n fill: transparent\n\n .col-note-label\n font-size: 10px\n margin-top: 3px\n padding: 2px 2px 2px 3px\n line-height: 9px\n border-left: none !important\n\n g.height-range\n display: none\n\n .note-inner\n border: none\n\n .frame rect\n fill: transparent\n\n\n\n.bp5-dark\n .column :global\n .lithology-column .frame\n stroke: white\n g.inner\n rect.unit\n filter: invert(100%)\n g.lithology-column use.frame\n stroke: white\n .note\n line, path.col-note-link\n stroke: white\n .y.axis .tick line\n stroke: white\n\n.column-nav\n position: sticky\n top: 2.2em\n h3\n color: #444\n margin-bottom: 0.3em\n\n.default-buttons\n width: 100%\n margin: 0 -10px\n\ndiv.map-column\n width: 600px\n height: 100vh\n display: flex\n flex-direction: column\n\n :global\n .map-area\n flex-grow: 1\n\n .map-placeholder\n position: relative\n\n .macrostrat-map\n .graticule\n stroke-dasharray: inherit\n stroke: color.adjust(#AFE6F0, $lightness: -5%)\n .neatline\n stroke-width: 1.5px\n\n .context-map\n position: absolute\n top: 0\n right: 0\n width: 250px\n height: 250px\n cursor: pointer\n z-index: 100\n &.expanded\n cursor: inherit\n .columns path:hover\n stroke: rgba(255,0,0,.4) !important\n\n .close-button\n position: absolute\n top: 1em\n right: 1em\n\n .land\n background-color: rgb(233, 252, 234)\n"],"names":[],"version":3,"file":"column-views.a7be0a4a.css.map"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import {ColumnCorrelationMap as $dcd183b733f66144$export$8e7d97509e84cc49} from "./column-views.40c1f361.js";
|
|
2
|
+
import {ColumnCorrelationProvider as $74e211dc185c20b4$export$72ffe141ebf87ef1, useCorrelationMapStore as $74e211dc185c20b4$export$21398703d3a9bb4d} from "./column-views.30646469.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export {$dcd183b733f66144$export$8e7d97509e84cc49 as ColumnCorrelationMap, $74e211dc185c20b4$export$72ffe141ebf87ef1 as ColumnCorrelationProvider, $74e211dc185c20b4$export$21398703d3a9bb4d as useCorrelationMapStore};
|
|
9
|
+
//# sourceMappingURL=column-views.a98214b2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"","sources":["packages/column-views/src/maps/column-correlation/index.ts"],"sourcesContent":["export * from \"./core\";\nexport * from \"./state\";\n"],"names":[],"version":3,"file":"column-views.a98214b2.js.map"}
|