@macrostrat/column-views 3.0.3 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/age-axis.js +2 -2
- package/dist/age-axis.js.map +1 -1
- package/dist/age-axis.module.sass.cjs +6 -1
- package/dist/age-axis.module.sass.cjs.map +1 -1
- package/dist/age-axis.module.sass.js +4 -1
- package/dist/age-axis.module.sass.js.map +1 -1
- package/dist/age-model-overlay.js +2 -2
- package/dist/age-model-overlay.js.map +1 -1
- package/dist/age-model-overlay.module.sass.cjs +6 -1
- package/dist/age-model-overlay.module.sass.cjs.map +1 -1
- package/dist/age-model-overlay.module.sass.js +4 -1
- package/dist/age-model-overlay.module.sass.js.map +1 -1
- package/dist/column.js +2 -2
- package/dist/column.js.map +1 -1
- package/dist/column.module.sass.cjs +6 -1
- package/dist/column.module.sass.cjs.map +1 -1
- package/dist/column.module.sass.js +4 -1
- package/dist/column.module.sass.js.map +1 -1
- package/dist/correlation-chart/main.js +2 -2
- package/dist/correlation-chart/main.js.map +1 -1
- package/dist/correlation-chart/main.module.sass.cjs +6 -1
- package/dist/correlation-chart/main.module.sass.cjs.map +1 -1
- package/dist/correlation-chart/main.module.sass.js +4 -1
- package/dist/correlation-chart/main.module.sass.js.map +1 -1
- package/dist/data-provider/column-nav.js +1 -1
- package/dist/data-provider/index.d.ts +0 -2
- package/dist/data-provider/store.cjs +49 -6
- package/dist/data-provider/store.cjs.map +1 -1
- package/dist/data-provider/store.js +47 -4
- package/dist/data-provider/store.js.map +1 -1
- package/dist/data-provider/unit-selection.cjs +9 -9
- package/dist/data-provider/unit-selection.cjs.map +1 -1
- package/dist/data-provider/unit-selection.d.ts +1 -1
- package/dist/data-provider/unit-selection.js +2 -2
- package/dist/data-provider/unit-selection.js.map +1 -1
- package/dist/facets/carbon-isotopes/isotopes-column.js +2 -2
- package/dist/facets/carbon-isotopes/isotopes-column.js.map +1 -1
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs +6 -1
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.cjs.map +1 -1
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js +4 -1
- package/dist/facets/carbon-isotopes/isotopes-column.module.sass.js.map +1 -1
- package/dist/facets/detrital-zircon/index.js +2 -2
- package/dist/facets/detrital-zircon/index.js.map +1 -1
- package/dist/facets/detrital-zircon/index.module.sass.cjs +6 -1
- package/dist/facets/detrital-zircon/index.module.sass.cjs.map +1 -1
- package/dist/facets/detrital-zircon/index.module.sass.js +4 -1
- package/dist/facets/detrital-zircon/index.module.sass.js.map +1 -1
- package/dist/facets/fossils/index.js +2 -2
- package/dist/facets/fossils/index.js.map +1 -1
- package/dist/facets/fossils/taxon-ranges.js +2 -2
- package/dist/facets/fossils/taxon-ranges.js.map +1 -1
- package/dist/facets/fossils/taxon-ranges.module.sass.cjs +6 -1
- package/dist/facets/fossils/taxon-ranges.module.sass.cjs.map +1 -1
- package/dist/facets/fossils/taxon-ranges.module.sass.js +4 -1
- package/dist/facets/fossils/taxon-ranges.module.sass.js.map +1 -1
- package/dist/facets/measurements/base.js +2 -2
- package/dist/facets/measurements/base.js.map +1 -1
- package/dist/facets/measurements/base.module.sass.cjs +6 -1
- package/dist/facets/measurements/base.module.sass.cjs.map +1 -1
- package/dist/facets/measurements/base.module.sass.js +4 -1
- package/dist/facets/measurements/base.module.sass.js.map +1 -1
- package/dist/index.cjs +15 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -24
- package/dist/index.js.map +1 -1
- package/dist/maps/_shared/styles.cjs +6 -1
- package/dist/maps/_shared/styles.cjs.map +1 -1
- package/dist/maps/_shared/styles.js +6 -1
- package/dist/maps/_shared/styles.js.map +1 -1
- package/dist/maps/column-correlation/state.cjs +2 -2
- package/dist/maps/column-correlation/state.cjs.map +1 -1
- package/dist/maps/column-correlation/state.d.ts +1 -0
- package/dist/maps/column-correlation/state.js +1 -1
- package/dist/maps/column-correlation/state.js.map +1 -1
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +1 -1
- package/dist/maps/column-navigation/mapbox/state.cjs +3 -3
- package/dist/maps/column-navigation/mapbox/state.cjs.map +1 -1
- package/dist/maps/column-navigation/mapbox/state.js +1 -1
- package/dist/maps/column-navigation/mapbox/state.js.map +1 -1
- package/dist/maps/column-navigation/svg/data-fetcher.cjs +25 -0
- package/dist/maps/column-navigation/svg/data-fetcher.cjs.map +1 -0
- package/dist/maps/column-navigation/svg/data-fetcher.d.ts +6 -0
- package/dist/maps/column-navigation/svg/data-fetcher.js +25 -0
- package/dist/maps/column-navigation/svg/data-fetcher.js.map +1 -0
- package/dist/maps/column-navigation/svg/layers.cjs +2 -3
- package/dist/maps/column-navigation/svg/layers.cjs.map +1 -1
- package/dist/maps/column-navigation/svg/layers.js +1 -2
- package/dist/maps/column-navigation/svg/layers.js.map +1 -1
- package/dist/maps/index.d.ts +1 -0
- package/dist/maps/units-overlay/index.cjs +254 -0
- package/dist/maps/units-overlay/index.cjs.map +1 -0
- package/dist/maps/units-overlay/index.d.ts +14 -0
- package/dist/maps/units-overlay/index.js +252 -0
- package/dist/maps/units-overlay/index.js.map +1 -0
- package/dist/section.cjs +3 -3
- package/dist/section.cjs.map +1 -1
- package/dist/section.js +4 -4
- package/dist/section.js.map +1 -1
- package/dist/unit-details/panel.cjs +76 -57
- package/dist/unit-details/panel.cjs.map +1 -1
- package/dist/unit-details/panel.js +74 -55
- package/dist/unit-details/panel.js.map +1 -1
- package/dist/unit-details/panel.module.sass.cjs +6 -1
- package/dist/unit-details/panel.module.sass.cjs.map +1 -1
- package/dist/unit-details/panel.module.sass.js +4 -1
- package/dist/unit-details/panel.module.sass.js.map +1 -1
- package/dist/unit-details/popover.js +2 -2
- package/dist/unit-details/popover.js.map +1 -1
- package/dist/unit-details/popover.module.sass.cjs +6 -1
- package/dist/unit-details/popover.module.sass.cjs.map +1 -1
- package/dist/unit-details/popover.module.sass.js +4 -1
- package/dist/unit-details/popover.module.sass.js.map +1 -1
- package/dist/units/boxes.cjs +1 -0
- package/dist/units/boxes.cjs.map +1 -1
- package/dist/units/boxes.js +3 -2
- package/dist/units/boxes.js.map +1 -1
- package/dist/units/boxes.module.sass.cjs +6 -1
- package/dist/units/boxes.module.sass.cjs.map +1 -1
- package/dist/units/boxes.module.sass.js +4 -1
- package/dist/units/boxes.module.sass.js.map +1 -1
- package/dist/units/colors.cjs +79 -18
- package/dist/units/colors.cjs.map +1 -1
- package/dist/units/colors.d.ts +17 -4
- package/dist/units/colors.js +79 -18
- package/dist/units/colors.js.map +1 -1
- package/dist/units/composite.js +2 -2
- package/dist/units/composite.js.map +1 -1
- package/dist/units/composite.module.sass.cjs +6 -1
- package/dist/units/composite.module.sass.cjs.map +1 -1
- package/dist/units/composite.module.sass.js +4 -1
- package/dist/units/composite.module.sass.js.map +1 -1
- package/dist/units/index.cjs +6 -4
- package/dist/units/index.cjs.map +1 -1
- package/dist/units/index.js +4 -1
- package/dist/units/index.js.map +1 -1
- package/dist/units/resolvers.cjs +11 -0
- package/dist/units/resolvers.cjs.map +1 -1
- package/dist/units/resolvers.d.ts +5 -0
- package/dist/units/resolvers.js +11 -0
- package/dist/units/resolvers.js.map +1 -1
- package/package.json +11 -9
- package/src/correlation-chart/stories/correlation-chart.stories.ts +29 -22
- package/src/data-provider/index.ts +0 -2
- package/src/data-provider/store.ts +52 -10
- package/src/data-provider/unit-selection.ts +4 -4
- package/src/maps/_shared/styles.ts +10 -3
- package/src/maps/column-correlation/state.ts +2 -1
- package/src/maps/column-navigation/mapbox/state.ts +1 -1
- package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +1 -1
- package/src/maps/column-navigation/svg/data-fetcher.ts +34 -0
- package/src/maps/column-navigation/svg/layers.ts +1 -1
- package/src/maps/index.ts +1 -0
- package/src/maps/unit-map.stories.ts +64 -0
- package/src/maps/units-overlay/index.ts +336 -0
- package/src/section.ts +1 -1
- package/src/unit-details/panel.ts +97 -60
- package/src/units/boxes.ts +2 -1
- package/src/units/colors.ts +137 -25
- package/src/units/index.ts +1 -1
- package/src/units/resolvers.ts +16 -0
- package/dist/data-provider/base.cjs +0 -352
- package/dist/data-provider/base.cjs.map +0 -1
- package/dist/data-provider/base.d.ts +0 -65
- package/dist/data-provider/base.js +0 -349
- package/dist/data-provider/base.js.map +0 -1
- package/dist/data-provider/core.cjs +0 -58
- package/dist/data-provider/core.cjs.map +0 -1
- package/dist/data-provider/core.d.ts +0 -31
- package/dist/data-provider/core.js +0 -56
- package/dist/data-provider/core.js.map +0 -1
- package/dist/data-provider/fetch.cjs +0 -212
- package/dist/data-provider/fetch.cjs.map +0 -1
- package/dist/data-provider/fetch.d.ts +0 -27
- package/dist/data-provider/fetch.js +0 -210
- package/dist/data-provider/fetch.js.map +0 -1
- package/dist/data-provider/store.d.ts +0 -34
- package/dist/unit-details/panel.d.ts +0 -87
- package/src/data-provider/base.ts +0 -475
- package/src/data-provider/core.ts +0 -89
- package/src/data-provider/fetch.ts +0 -278
package/dist/units/index.js
CHANGED
|
@@ -4,11 +4,12 @@ import { UnitNamesColumn } from "./names.js";
|
|
|
4
4
|
import { UnitBoxes } from "./boxes.js";
|
|
5
5
|
import { useInDarkMode } from "@macrostrat/ui-components";
|
|
6
6
|
import { getMixedUnitColor } from "./colors.js";
|
|
7
|
+
import { flattenLithologies, getMixedColorForData } from "./colors.js";
|
|
7
8
|
import { TrackedLabeledUnit } from "./composite.js";
|
|
8
9
|
import { AnnotatedUnitsColumn, ColumnNotesProvider, CompositeUnitComponent, CompositeUnitsColumn, LabelTrackerProvider, SectionLabelsColumn } from "./composite.js";
|
|
10
|
+
import { useLithologies, useEnvironments } from "@macrostrat/data-provider";
|
|
9
11
|
import { useMemo } from "react";
|
|
10
12
|
import { resolveID } from "./resolvers.js";
|
|
11
|
-
import { useLithologies, useEnvironments } from "../data-provider/base.js";
|
|
12
13
|
function UnitsColumn({ width = 100 }) {
|
|
13
14
|
return h(LithologyColumn, { width }, h(UnitBoxes));
|
|
14
15
|
}
|
|
@@ -111,6 +112,8 @@ export {
|
|
|
111
112
|
TrackedLabeledUnit,
|
|
112
113
|
UnitComponent,
|
|
113
114
|
UnitsColumn,
|
|
115
|
+
flattenLithologies,
|
|
116
|
+
getMixedColorForData,
|
|
114
117
|
getMixedUnitColor,
|
|
115
118
|
useUnitColor,
|
|
116
119
|
useUnitColorByEnvironment
|
package/dist/units/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/units/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { UnitNamesColumn } from \"./names\";\nimport { ICompositeUnitProps } from \"./composite\";\nimport { UnitBoxes, UnitProps } from \"./boxes\";\nimport { useColumnLayout } from \"@macrostrat/column-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { TrackedLabeledUnit } from \"./composite\";\nimport { useEnvironments, useLithologies } from \"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/units/index.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n LithologyColumn,\n useGeologicPattern,\n} from \"@macrostrat/column-components\";\nimport { UnitNamesColumn } from \"./names\";\nimport { ICompositeUnitProps } from \"./composite\";\nimport { UnitBoxes, UnitProps } from \"./boxes\";\nimport { useColumnLayout } from \"@macrostrat/column-components\";\nimport { useInDarkMode } from \"@macrostrat/ui-components\";\nimport { getMixedUnitColor } from \"./colors\";\nimport { TrackedLabeledUnit } from \"./composite\";\nimport { useEnvironments, useLithologies } from \"@macrostrat/data-provider\";\nimport { useMemo } from \"react\";\nimport { resolveID } from \"./resolvers\";\nimport { Lithology } from \"@macrostrat/api-types\";\n\nexport * from \"./composite\";\nexport * from \"./types\";\nexport * from \"./colors\";\n\nexport function UnitsColumn({ width = 100 }) {\n /*\n A column showing units with USGS color fill\n */\n return h(LithologyColumn, { width }, h(UnitBoxes));\n}\n\nexport function SimpleUnitsColumn(props: ICompositeUnitProps) {\n /*\n A column with units and names either\n overlapping or offset to the right\n */\n const { columnWidth, width, gutterWidth = 0, labelOffset = 30 } = props;\n\n return h([\n h(UnitsColumn, {\n width: columnWidth,\n }),\n h(UnitNamesColumn, {\n transform: `translate(${columnWidth + gutterWidth})`,\n paddingLeft: labelOffset,\n width: width - columnWidth - gutterWidth,\n }),\n ]);\n}\n\nexport function BasicUnitComponent({ division, ...rest }) {\n /** A unit that allows directly setting colors and patterns. */\n\n return h(UnitComponent, {\n division,\n ...rest,\n backgroundColor: division.color,\n patternID: division.patternID,\n });\n}\n\nexport function UnitComponent({ division, nColumns = 2, ...rest }) {\n const width = rest.width ?? useColumnLayout()?.width;\n\n const nOverlappingUnits = division.overlappingUnits?.length ?? 0;\n const _nColumns = nOverlappingUnits == 0 ? 1 : nColumns;\n const columnIx = (division.column ?? 0) % _nColumns;\n const reducedWidth = width / _nColumns;\n const x = (columnIx * width) / _nColumns;\n\n return h(TrackedLabeledUnit, {\n division,\n ...rest,\n width: reducedWidth,\n x,\n });\n}\n\ninterface UnitColorOptions {\n asBackground?: boolean;\n}\n\nexport function useUnitColor(unit, opts: UnitColorOptions = {}): string | null {\n /** Get the color for a unit based on its lithology */\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || lithMap == null) return null;\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, lithMap, inDarkMode, asBackground]);\n}\n\nexport function ColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColor(props.division);\n\n const patternID = useMemo(() => {\n return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nexport function useUnitColorByEnvironment(\n unit,\n opts: UnitColorOptions = {},\n): string | null {\n /** Get the color for a unit based on its lithology */\n const environmentMap = useEnvironments();\n const lithMap = useLithologies();\n const inDarkMode = useInDarkMode();\n const { asBackground = true } = opts;\n\n return useMemo(() => {\n if (unit == null || environmentMap == null) return null;\n let c = getMixedUnitColor(unit, environmentMap, inDarkMode, asBackground, {\n key: \"environ\",\n id_key: \"environ_id\",\n });\n if (c != null) {\n return c;\n }\n // Fallback to lithology color if no environment color is found\n return getMixedUnitColor(unit, lithMap, inDarkMode, asBackground);\n }, [unit?.unit_id, environmentMap, lithMap, inDarkMode, asBackground]);\n}\n\nexport function EnvironmentColoredUnitComponent(props) {\n /** A unit component that is colored using a mixture of lithologies.\n * This is a separate component because it depends on more providers/contexts to determine coloring. */\n const backgroundColor = useUnitColorByEnvironment(props.division);\n\n const patternID = useMemo(() => {\n return resolveID(props.division); // ?? getPatternID(props.division.lith, lithMap);\n }, [props.division?.unit_id]);\n\n const fill = useGeologicPattern(patternID);\n\n return h(UnitComponent, {\n fill,\n backgroundColor,\n ...props,\n });\n}\n\nfunction getPatternID(\n liths: Array<Lithology>,\n lithMap: Map<number, Lithology>,\n): string | null {\n if (lithMap == null || liths == null || liths.length == 0) {\n return null;\n }\n const patternIDs = new Set<string>();\n for (const lith of liths) {\n const lithData = lithMap.get(lith.lith_id);\n if (lithData) {\n patternIDs.add(`${lithData.fill}`);\n }\n }\n let id = patternIDs.values()[0];\n if (id == \"0\") return null;\n return id;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/units/resolvers.cjs
CHANGED
|
@@ -55,6 +55,16 @@ const symbolIndex = {
|
|
|
55
55
|
argillite: 624,
|
|
56
56
|
diamictite: 681
|
|
57
57
|
};
|
|
58
|
+
function getBestFGDCPatternForLithologyList(liths) {
|
|
59
|
+
let lithsSorted = [...liths];
|
|
60
|
+
lithsSorted.sort((a, b) => b.prop - a.prop);
|
|
61
|
+
let firstLith = lithsSorted[0];
|
|
62
|
+
let sym = symbolIndex[firstLith.name];
|
|
63
|
+
if (sym != null) {
|
|
64
|
+
return { lith: firstLith, patternID: `${sym}` };
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
58
68
|
const resolveID = (d) => {
|
|
59
69
|
if (d.lith == null || d.lith.length == 0) {
|
|
60
70
|
return null;
|
|
@@ -109,6 +119,7 @@ const patternScale = {
|
|
|
109
119
|
const scalePattern = (id) => {
|
|
110
120
|
return patternScale[`${id}`] ?? 1;
|
|
111
121
|
};
|
|
122
|
+
exports.getBestFGDCPatternForLithologyList = getBestFGDCPatternForLithologyList;
|
|
112
123
|
exports.resolveID = resolveID;
|
|
113
124
|
exports.scalePattern = scalePattern;
|
|
114
125
|
//# sourceMappingURL=resolvers.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.cjs","sources":["../../src/units/resolvers.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"resolvers.cjs","sources":["../../src/units/resolvers.ts"],"sourcesContent":["import { Lithology, UnitLithology } from \"@macrostrat/api-types\";\nimport { LithologyCore } from \"@macrostrat/api-types/src/lithologies\";\n\nconst symbolIndex = {\n \"dolomite-limestone\": 641,\n lime_mudstone: 627,\n sandstone: 607,\n \"quartz arenite\": 607,\n litharenite: 608,\n sand: 608,\n siltstone: 616,\n silt: 616,\n siliciclastic: 615,\n mud: 620,\n \"dolomitic siltstone\": 616,\n shale: 620,\n limestone: 627,\n dolomite: 642,\n conglomerate: 602,\n carbonate: 627,\n \"dolomite-mudstone\": 642,\n dolostone: 642,\n mudstone: 620,\n slate: 703,\n \"sandy-dolomite\": 645,\n quartzite: 702,\n halite: 668,\n gypsum: 667,\n evaporite: 667,\n claystone: 620,\n anhydrite: 667,\n gabbro: 720,\n basalt: 717,\n diabase: 717,\n rhyolite: 722,\n andesite: 723,\n till: 681,\n loess: 684,\n \"calcareous ooze\": 653,\n \"siliceous ooze\": 653,\n chalk: 626,\n gravel: 601,\n plutonic: 721,\n granite: 719,\n clay: 660,\n syenite: 722,\n tuff: 711,\n volcanic: 725,\n metamorphic: 707,\n volcaniclastic: 714,\n migmatite: 709,\n gneiss: 708,\n tonalite: 727,\n granodiorite: 725,\n monzonite: 723,\n argillite: 624,\n diamictite: 681,\n};\n\nexport function getBestFGDCPatternForLithologyList<\n T extends UnitLithology | Lithology,\n>(liths: T[]): { lith: T; patternID: string } | null {\n let lithsSorted = [...liths];\n lithsSorted.sort((a, b) => b.prop - a.prop);\n let firstLith = lithsSorted[0];\n let sym = symbolIndex[firstLith.name];\n if (sym != null) {\n return { lith: firstLith, patternID: `${sym}` };\n }\n return null;\n}\n\nconst resolveID = (d: any) => {\n if (d.lith == null || d.lith.length == 0) {\n return null;\n }\n let liths = [...d.lith];\n let environs = d.environ.map((d) => d.name).join(\" \");\n liths.sort((a, b) => b.prop - a.prop);\n\n //console.log(d, d.unit_name, liths.map(d => d.name), environs)\n\n let sym = null;\n\n // overrides for IODP columns\n if (d.unit_name == \"clay\") {\n return \"650\";\n }\n if (d.unit_name == \"calcareous clay\") {\n return \"651\";\n }\n\n for (const k of liths) {\n if (k.name == \"sandstone\") {\n // Special cases for sandstone\n if (environs.includes(\"dune\")) {\n return \"609\";\n }\n if (environs.includes(\"marine\")) {\n return \"608\";\n }\n if (environs.includes(\"shore\")) {\n return \"611\";\n }\n if (environs.includes(\"loess\")) {\n return \"686\";\n }\n }\n\n if (k.name == \"conglomerate\") {\n // Special cases for sandstone\n if (environs.includes(\"fluvial\")) {\n return \"603\";\n }\n }\n\n if (k.name.includes(\"tuff\")) {\n return \"711\";\n }\n sym = symbolIndex[k.name];\n if (sym != null) {\n return sym;\n }\n\n if (k.type == \"volcanic\") {\n return \"725\";\n }\n }\n return sym;\n};\n\nconst patternScale = {\n \"609\": 1.5,\n \"603\": 1.5,\n};\n\nconst scalePattern = (id) => {\n return patternScale[`${id}`] ?? 1;\n};\n\nexport { resolveID, scalePattern };\n"],"names":["d"],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { Lithology, UnitLithology } from '@macrostrat/api-types';
|
|
2
|
+
export declare function getBestFGDCPatternForLithologyList<T extends UnitLithology | Lithology>(liths: T[]): {
|
|
3
|
+
lith: T;
|
|
4
|
+
patternID: string;
|
|
5
|
+
} | null;
|
|
1
6
|
declare const resolveID: (d: any) => any;
|
|
2
7
|
declare const scalePattern: (id: any) => any;
|
|
3
8
|
export { resolveID, scalePattern };
|
package/dist/units/resolvers.js
CHANGED
|
@@ -53,6 +53,16 @@ const symbolIndex = {
|
|
|
53
53
|
argillite: 624,
|
|
54
54
|
diamictite: 681
|
|
55
55
|
};
|
|
56
|
+
function getBestFGDCPatternForLithologyList(liths) {
|
|
57
|
+
let lithsSorted = [...liths];
|
|
58
|
+
lithsSorted.sort((a, b) => b.prop - a.prop);
|
|
59
|
+
let firstLith = lithsSorted[0];
|
|
60
|
+
let sym = symbolIndex[firstLith.name];
|
|
61
|
+
if (sym != null) {
|
|
62
|
+
return { lith: firstLith, patternID: `${sym}` };
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
56
66
|
const resolveID = (d) => {
|
|
57
67
|
if (d.lith == null || d.lith.length == 0) {
|
|
58
68
|
return null;
|
|
@@ -108,6 +118,7 @@ const scalePattern = (id) => {
|
|
|
108
118
|
return patternScale[`${id}`] ?? 1;
|
|
109
119
|
};
|
|
110
120
|
export {
|
|
121
|
+
getBestFGDCPatternForLithologyList,
|
|
111
122
|
resolveID,
|
|
112
123
|
scalePattern
|
|
113
124
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sources":["../../src/units/resolvers.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"resolvers.js","sources":["../../src/units/resolvers.ts"],"sourcesContent":["import { Lithology, UnitLithology } from \"@macrostrat/api-types\";\nimport { LithologyCore } from \"@macrostrat/api-types/src/lithologies\";\n\nconst symbolIndex = {\n \"dolomite-limestone\": 641,\n lime_mudstone: 627,\n sandstone: 607,\n \"quartz arenite\": 607,\n litharenite: 608,\n sand: 608,\n siltstone: 616,\n silt: 616,\n siliciclastic: 615,\n mud: 620,\n \"dolomitic siltstone\": 616,\n shale: 620,\n limestone: 627,\n dolomite: 642,\n conglomerate: 602,\n carbonate: 627,\n \"dolomite-mudstone\": 642,\n dolostone: 642,\n mudstone: 620,\n slate: 703,\n \"sandy-dolomite\": 645,\n quartzite: 702,\n halite: 668,\n gypsum: 667,\n evaporite: 667,\n claystone: 620,\n anhydrite: 667,\n gabbro: 720,\n basalt: 717,\n diabase: 717,\n rhyolite: 722,\n andesite: 723,\n till: 681,\n loess: 684,\n \"calcareous ooze\": 653,\n \"siliceous ooze\": 653,\n chalk: 626,\n gravel: 601,\n plutonic: 721,\n granite: 719,\n clay: 660,\n syenite: 722,\n tuff: 711,\n volcanic: 725,\n metamorphic: 707,\n volcaniclastic: 714,\n migmatite: 709,\n gneiss: 708,\n tonalite: 727,\n granodiorite: 725,\n monzonite: 723,\n argillite: 624,\n diamictite: 681,\n};\n\nexport function getBestFGDCPatternForLithologyList<\n T extends UnitLithology | Lithology,\n>(liths: T[]): { lith: T; patternID: string } | null {\n let lithsSorted = [...liths];\n lithsSorted.sort((a, b) => b.prop - a.prop);\n let firstLith = lithsSorted[0];\n let sym = symbolIndex[firstLith.name];\n if (sym != null) {\n return { lith: firstLith, patternID: `${sym}` };\n }\n return null;\n}\n\nconst resolveID = (d: any) => {\n if (d.lith == null || d.lith.length == 0) {\n return null;\n }\n let liths = [...d.lith];\n let environs = d.environ.map((d) => d.name).join(\" \");\n liths.sort((a, b) => b.prop - a.prop);\n\n //console.log(d, d.unit_name, liths.map(d => d.name), environs)\n\n let sym = null;\n\n // overrides for IODP columns\n if (d.unit_name == \"clay\") {\n return \"650\";\n }\n if (d.unit_name == \"calcareous clay\") {\n return \"651\";\n }\n\n for (const k of liths) {\n if (k.name == \"sandstone\") {\n // Special cases for sandstone\n if (environs.includes(\"dune\")) {\n return \"609\";\n }\n if (environs.includes(\"marine\")) {\n return \"608\";\n }\n if (environs.includes(\"shore\")) {\n return \"611\";\n }\n if (environs.includes(\"loess\")) {\n return \"686\";\n }\n }\n\n if (k.name == \"conglomerate\") {\n // Special cases for sandstone\n if (environs.includes(\"fluvial\")) {\n return \"603\";\n }\n }\n\n if (k.name.includes(\"tuff\")) {\n return \"711\";\n }\n sym = symbolIndex[k.name];\n if (sym != null) {\n return sym;\n }\n\n if (k.type == \"volcanic\") {\n return \"725\";\n }\n }\n return sym;\n};\n\nconst patternScale = {\n \"609\": 1.5,\n \"603\": 1.5,\n};\n\nconst scalePattern = (id) => {\n return patternScale[`${id}`] ?? 1;\n};\n\nexport { resolveID, scalePattern };\n"],"names":["d"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@macrostrat/column-views",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Data views for Macrostrat stratigraphic columns",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,16 +49,17 @@
|
|
|
49
49
|
"@macrostrat/api-types": "^1.1.5",
|
|
50
50
|
"@macrostrat/color-utils": "^1.2.1",
|
|
51
51
|
"@macrostrat/column-components": "^2.0.4",
|
|
52
|
-
"@macrostrat/data-components": "^1.
|
|
52
|
+
"@macrostrat/data-components": "^1.1.1",
|
|
53
|
+
"@macrostrat/data-provider": "^1.0.0",
|
|
53
54
|
"@macrostrat/hyper": "^3.0.6",
|
|
54
|
-
"@macrostrat/map-interface": "^2.0.
|
|
55
|
-
"@macrostrat/map-styles": "^2.0
|
|
56
|
-
"@macrostrat/mapbox-react": "^3.0.
|
|
57
|
-
"@macrostrat/mapbox-utils": "^1.7.
|
|
55
|
+
"@macrostrat/map-interface": "^2.0.2",
|
|
56
|
+
"@macrostrat/map-styles": "^2.1.0",
|
|
57
|
+
"@macrostrat/mapbox-react": "^3.0.2",
|
|
58
|
+
"@macrostrat/mapbox-utils": "^1.7.2",
|
|
58
59
|
"@macrostrat/stratigraphy-utils": "^1.2.1",
|
|
59
60
|
"@macrostrat/svg-map-components": "^2.0.1",
|
|
60
61
|
"@macrostrat/timescale": "^3.0.1",
|
|
61
|
-
"@macrostrat/ui-components": "^5.0.
|
|
62
|
+
"@macrostrat/ui-components": "^5.0.5",
|
|
62
63
|
"@turf/boolean-point-in-polygon": "^7.3.2",
|
|
63
64
|
"@turf/buffer": "^7.3.2",
|
|
64
65
|
"@turf/centroid": "^7.3.2",
|
|
@@ -83,14 +84,15 @@
|
|
|
83
84
|
"d3-shape": "^3.2.0",
|
|
84
85
|
"jotai": "^2.16.0",
|
|
85
86
|
"jotai-scope": "^0.10.0",
|
|
86
|
-
"mapbox-gl": "^
|
|
87
|
+
"mapbox-gl": "^3.0.0",
|
|
88
|
+
"p-map": "^7.0.4",
|
|
87
89
|
"react-spring": "^9.7.5",
|
|
88
90
|
"topojson-client": "^3.1.0",
|
|
89
91
|
"zustand": "^5.0.3",
|
|
90
92
|
"zustand-computed": "^2.0.2"
|
|
91
93
|
},
|
|
92
94
|
"devDependencies": {
|
|
93
|
-
"@macrostrat/web-components-bundler": "1.0.
|
|
95
|
+
"@macrostrat/web-components-bundler": "1.0.1"
|
|
94
96
|
},
|
|
95
97
|
"publishConfig": {
|
|
96
98
|
"access": "public"
|
|
@@ -4,14 +4,15 @@ import { useCorrelationLine } from "./utils";
|
|
|
4
4
|
import {
|
|
5
5
|
ColumnCorrelationMap,
|
|
6
6
|
ColumnCorrelationProvider,
|
|
7
|
-
fetchUnits,
|
|
8
|
-
MacrostratDataProvider,
|
|
9
7
|
MergeSectionsMode,
|
|
10
8
|
useCorrelationMapStore,
|
|
11
|
-
useMacrostratBaseURL,
|
|
12
|
-
useMacrostratFetch,
|
|
13
9
|
} from "../..";
|
|
14
10
|
import { hyperStyled } from "@macrostrat/hyper";
|
|
11
|
+
import {
|
|
12
|
+
MacrostratDataProvider,
|
|
13
|
+
fetchUnits,
|
|
14
|
+
useMacrostratFetch,
|
|
15
|
+
} from "@macrostrat/data-provider";
|
|
15
16
|
|
|
16
17
|
import styles from "./stories.module.sass";
|
|
17
18
|
import { CorrelationChart, CorrelationChartProps } from "../main";
|
|
@@ -19,6 +20,7 @@ import { ErrorBoundary, useAsyncMemo } from "@macrostrat/ui-components";
|
|
|
19
20
|
import { OverlaysProvider } from "@blueprintjs/core";
|
|
20
21
|
import { EnvironmentColoredUnitComponent } from "../../units";
|
|
21
22
|
import { scaleLinear, scalePow } from "d3-scale";
|
|
23
|
+
import { MacrostratInteractionProvider } from "@macrostrat/data-components";
|
|
22
24
|
|
|
23
25
|
const mapboxToken = import.meta.env.VITE_MAPBOX_API_TOKEN;
|
|
24
26
|
|
|
@@ -35,29 +37,34 @@ function CorrelationStoryUI({
|
|
|
35
37
|
projectID,
|
|
36
38
|
...rest
|
|
37
39
|
}: any) {
|
|
40
|
+
const domain = "https://dev.macrostrat.org";
|
|
38
41
|
return h(
|
|
39
42
|
MacrostratDataProvider,
|
|
40
|
-
{ baseURL: "
|
|
43
|
+
{ baseURL: domain + "/api/v2" },
|
|
41
44
|
h(
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
MacrostratInteractionProvider,
|
|
46
|
+
{ linkDomain: domain },
|
|
47
|
+
h(
|
|
48
|
+
ColumnCorrelationProvider,
|
|
49
|
+
{
|
|
50
|
+
focusedLine,
|
|
51
|
+
columns: null,
|
|
52
|
+
projectID,
|
|
53
|
+
onSelectColumns(cols, line) {
|
|
54
|
+
setFocusedLine(line);
|
|
55
|
+
},
|
|
49
56
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
h("div.correlation-ui", [
|
|
58
|
+
h("div.correlation-container", h(CorrelationDiagramWrapper, rest)),
|
|
59
|
+
h("div.right-column", [
|
|
60
|
+
h(ColumnCorrelationMap, {
|
|
61
|
+
accessToken: mapboxToken,
|
|
62
|
+
className: "correlation-map",
|
|
63
|
+
//showLogo: false,
|
|
64
|
+
}),
|
|
65
|
+
]),
|
|
59
66
|
]),
|
|
60
|
-
|
|
67
|
+
),
|
|
61
68
|
),
|
|
62
69
|
);
|
|
63
70
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CompositeColumnScale,
|
|
5
5
|
createCompositeScale,
|
|
6
6
|
} from "../prepare-units/composite-scale";
|
|
7
|
-
import { ColumnAxisType } from "@macrostrat/column-components";
|
|
7
|
+
import { ColumnAxisType, ColumnProvider } from "@macrostrat/column-components";
|
|
8
8
|
import type { ExtUnit, PackageLayoutData } from "../prepare-units";
|
|
9
9
|
import {
|
|
10
10
|
allowUnitSelectionAtom,
|
|
@@ -12,14 +12,24 @@ import {
|
|
|
12
12
|
UnitSelectionCallbacks,
|
|
13
13
|
UnitSelectionCallbackManager,
|
|
14
14
|
} from "./unit-selection";
|
|
15
|
-
import { BaseUnit } from "@macrostrat/api-types";
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
import type { BaseUnit } from "@macrostrat/api-types";
|
|
16
|
+
import { type AtomMap, createScopedStore } from "@macrostrat/data-components";
|
|
17
|
+
import { atom } from "jotai";
|
|
18
|
+
import { useEffect } from "react";
|
|
19
|
+
|
|
20
|
+
export const scope = createScopedStore();
|
|
21
|
+
|
|
22
|
+
export const columnUnitsAtom = atom<BaseUnit[]>();
|
|
23
|
+
|
|
24
|
+
export const columnUnitsMapAtom = atom<Map<number, BaseUnit> | null>((get) => {
|
|
25
|
+
const units = get(columnUnitsAtom);
|
|
26
|
+
if (!units) return null;
|
|
27
|
+
const unitMap = new Map<number, BaseUnit>();
|
|
28
|
+
units.forEach((unit) => {
|
|
29
|
+
unitMap.set(unit.unit_id, unit);
|
|
30
|
+
});
|
|
31
|
+
return unitMap;
|
|
32
|
+
});
|
|
23
33
|
|
|
24
34
|
export interface ColumnStateProviderProps<
|
|
25
35
|
T extends BaseUnit,
|
|
@@ -64,9 +74,11 @@ export function MacrostratColumnStateProvider<T extends BaseUnit>({
|
|
|
64
74
|
}
|
|
65
75
|
|
|
66
76
|
return h(
|
|
67
|
-
|
|
77
|
+
scope.Provider,
|
|
68
78
|
{
|
|
69
79
|
atoms: atomMap,
|
|
80
|
+
keepUpdated: true,
|
|
81
|
+
inherit: true,
|
|
70
82
|
},
|
|
71
83
|
[selectionHandlers, children],
|
|
72
84
|
);
|
|
@@ -170,3 +182,33 @@ export function useCompositeScale(): CompositeColumnScale {
|
|
|
170
182
|
[ctx.sections],
|
|
171
183
|
);
|
|
172
184
|
}
|
|
185
|
+
|
|
186
|
+
export function MacrostratColumnProvider(props) {
|
|
187
|
+
/** A column provider specialized the Macrostrat API. Maps more
|
|
188
|
+
* generic concepts to Macrostrat-specific ones.
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
const { axisType } = useMacrostratColumnData();
|
|
192
|
+
const { units, domain, pixelScale, scale, children } = props;
|
|
193
|
+
return h(
|
|
194
|
+
ColumnProvider,
|
|
195
|
+
{
|
|
196
|
+
axisType,
|
|
197
|
+
divisions: units,
|
|
198
|
+
range: domain,
|
|
199
|
+
pixelsPerMeter: pixelScale,
|
|
200
|
+
scale,
|
|
201
|
+
},
|
|
202
|
+
children,
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** This is now a legacy provider */
|
|
207
|
+
export function LithologiesProvider({ children }) {
|
|
208
|
+
useEffect(() => {
|
|
209
|
+
console.warn(
|
|
210
|
+
"LithologiesProvider is deprecated. Replace with MacrostratDataProvider",
|
|
211
|
+
);
|
|
212
|
+
}, []);
|
|
213
|
+
return children;
|
|
214
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { BaseUnit, UnitLong } from "@macrostrat/api-types";
|
|
1
|
+
import type { BaseUnit, UnitLong } from "@macrostrat/api-types";
|
|
2
2
|
import { useKeyHandler } from "@macrostrat/ui-components";
|
|
3
3
|
import { useEffect, useRef, useCallback, useMemo } from "react";
|
|
4
4
|
import type { RectBounds, IUnit } from "../units/types";
|
|
5
5
|
import { atom } from "jotai";
|
|
6
|
-
import {
|
|
7
|
-
import { ColumnData } from "@macrostrat/column-views";
|
|
6
|
+
import { scope, columnUnitsMapAtom } from "./store";
|
|
8
7
|
import {
|
|
9
8
|
AgeRangeQuantifiedDifference,
|
|
10
9
|
ageRangeQuantifiedDifference,
|
|
11
10
|
AgeRangeRelationship,
|
|
12
11
|
} from "@macrostrat/stratigraphy-utils";
|
|
12
|
+
import type { ColumnData } from "@macrostrat/data-provider";
|
|
13
13
|
|
|
14
14
|
type UnitSelectDispatch = (
|
|
15
15
|
unit: number | BaseUnit | null,
|
|
@@ -69,7 +69,7 @@ const selectedUnitAtom = atom(
|
|
|
69
69
|
target: HTMLElement | null = null,
|
|
70
70
|
): BaseUnit | null => {
|
|
71
71
|
if (!get(allowUnitSelectionAtom)) {
|
|
72
|
-
|
|
72
|
+
console.error("Unit selection is disabled.");
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
let unitID: number | null;
|
|
@@ -3,11 +3,18 @@ import { buildGeoJSONSource } from "@macrostrat/mapbox-utils";
|
|
|
3
3
|
import type { Style } from "mapbox-gl";
|
|
4
4
|
|
|
5
5
|
export function buildColumnsStyle(color: string): Style {
|
|
6
|
-
let columnColor =
|
|
6
|
+
let columnColor: any =
|
|
7
|
+
color ?? getCSSVariable("--text-subtle-color", "black");
|
|
7
8
|
const columnSelectedColor = getCSSVariable("--selection-color", "purple");
|
|
8
9
|
|
|
9
|
-
// If color is in the geojson properties, use that
|
|
10
|
-
|
|
10
|
+
// If color is in the feature state or geojson properties, use that as second choice
|
|
11
|
+
|
|
12
|
+
columnColor = [
|
|
13
|
+
"coalesce",
|
|
14
|
+
["feature-state", "color"],
|
|
15
|
+
["get", "color"],
|
|
16
|
+
columnColor,
|
|
17
|
+
];
|
|
11
18
|
|
|
12
19
|
return {
|
|
13
20
|
sources: {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "react";
|
|
16
16
|
import h from "@macrostrat/hyper";
|
|
17
17
|
import { createComputed } from "zustand-computed";
|
|
18
|
-
import { useMacrostratColumns } from "
|
|
18
|
+
import { useMacrostratColumns } from "@macrostrat/data-provider";
|
|
19
19
|
import { buffer } from "@turf/buffer";
|
|
20
20
|
import { booleanPointInPolygon } from "@turf/boolean-point-in-polygon";
|
|
21
21
|
|
|
@@ -26,6 +26,7 @@ export interface CorrelationMapInput {
|
|
|
26
26
|
|
|
27
27
|
export interface CorrelationMapStore extends CorrelationMapInput {
|
|
28
28
|
onClickMap: (event: mapboxgl.MapMouseEvent, point: Point) => void;
|
|
29
|
+
projectID?: number;
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
export interface CorrelationProviderProps extends CorrelationMapInput {
|
|
@@ -2,7 +2,7 @@ import h from "@macrostrat/hyper";
|
|
|
2
2
|
|
|
3
3
|
import { Meta } from "@storybook/react-vite";
|
|
4
4
|
import { ColumnNavigationSVGMap, ColumnNavigationSVGMapProps } from ".";
|
|
5
|
-
import { MacrostratDataProvider } from "
|
|
5
|
+
import { MacrostratDataProvider } from "@macrostrat/data-provider";
|
|
6
6
|
import { useState } from "react";
|
|
7
7
|
|
|
8
8
|
interface ColumnIndexMapProps extends ColumnNavigationSVGMapProps {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ColumnStatusCode,
|
|
3
|
+
fetchAllColumns,
|
|
4
|
+
useMacrostratFetch,
|
|
5
|
+
} from "@macrostrat/data-provider";
|
|
6
|
+
import { useAsyncMemo } from "@macrostrat/ui-components";
|
|
7
|
+
|
|
8
|
+
export function useColumnFeatures({
|
|
9
|
+
status_code,
|
|
10
|
+
project_id,
|
|
11
|
+
format = "geojson",
|
|
12
|
+
}: {
|
|
13
|
+
apiRoute?: string;
|
|
14
|
+
status_code?: string;
|
|
15
|
+
project_id?: number;
|
|
16
|
+
format?: "geojson" | "topojson" | "geojson_bare";
|
|
17
|
+
}) {
|
|
18
|
+
/** Legacy fetcher for column features */
|
|
19
|
+
const fetch = useMacrostratFetch();
|
|
20
|
+
|
|
21
|
+
let statusCode: ColumnStatusCode[] = ["active"];
|
|
22
|
+
if (status_code == "in process") {
|
|
23
|
+
statusCode.push("in process");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return useAsyncMemo(async () => {
|
|
27
|
+
return await fetchAllColumns({
|
|
28
|
+
projectID: project_id,
|
|
29
|
+
statusCode: statusCode,
|
|
30
|
+
format,
|
|
31
|
+
fetch,
|
|
32
|
+
});
|
|
33
|
+
}, [project_id, status_code, format]);
|
|
34
|
+
}
|
|
@@ -9,7 +9,7 @@ import chroma from "chroma-js";
|
|
|
9
9
|
import { ExtendedFeature } from "d3-geo";
|
|
10
10
|
import { Polygon } from "geojson";
|
|
11
11
|
import { useContext, useMemo } from "react";
|
|
12
|
-
import { useColumnFeatures } from "
|
|
12
|
+
import { useColumnFeatures } from "./data-fetcher";
|
|
13
13
|
import {
|
|
14
14
|
buildKeyMapping,
|
|
15
15
|
buildTriangulation,
|
package/src/maps/index.ts
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import h from "@macrostrat/hyper";
|
|
2
|
+
import { Meta } from "@storybook/react-vite";
|
|
3
|
+
import { InsetMap } from "./_shared";
|
|
4
|
+
import { MacrostratDataProvider } from "@macrostrat/data-provider";
|
|
5
|
+
import { useMemo } from "react";
|
|
6
|
+
import { buildUnitsStyle, MacrostratUnitsOverlay } from "./units-overlay";
|
|
7
|
+
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const mapboxToken = import.meta.env.VITE_MAPBOX_API_TOKEN;
|
|
10
|
+
|
|
11
|
+
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
|
12
|
+
export default {
|
|
13
|
+
title: "Column views/Maps/Unit map",
|
|
14
|
+
component: UnitMapComponent,
|
|
15
|
+
description: "A map of units through time",
|
|
16
|
+
argTypes: {
|
|
17
|
+
time: { control: "number", defaultValue: 100 },
|
|
18
|
+
ageSpan: { control: "number", defaultValue: 0.05 },
|
|
19
|
+
patterns: { control: "boolean", defaultValue: false },
|
|
20
|
+
},
|
|
21
|
+
} as Meta<typeof InsetMap>;
|
|
22
|
+
|
|
23
|
+
function UnitMapComponent(props) {
|
|
24
|
+
const overlayStyles = useMemo(() => {
|
|
25
|
+
let styles: any[] = [
|
|
26
|
+
buildUnitsStyle({ color: "#444", patterns: props.patterns }),
|
|
27
|
+
];
|
|
28
|
+
return styles;
|
|
29
|
+
}, []);
|
|
30
|
+
|
|
31
|
+
return h(
|
|
32
|
+
MacrostratDataProvider,
|
|
33
|
+
{
|
|
34
|
+
baseURL: "https://dev.macrostrat.org/api/v2",
|
|
35
|
+
},
|
|
36
|
+
h(
|
|
37
|
+
"div",
|
|
38
|
+
h(
|
|
39
|
+
InsetMap,
|
|
40
|
+
{
|
|
41
|
+
style: { width: "800px", height: "600px" },
|
|
42
|
+
accessToken: mapboxToken,
|
|
43
|
+
overlayStyles,
|
|
44
|
+
},
|
|
45
|
+
h(MacrostratUnitsOverlay, props),
|
|
46
|
+
),
|
|
47
|
+
),
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const UnitMap = {
|
|
52
|
+
args: {
|
|
53
|
+
time: 100,
|
|
54
|
+
ageSpan: 0.05,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const WithPatterns = {
|
|
59
|
+
args: {
|
|
60
|
+
time: 100,
|
|
61
|
+
ageSpan: 0.05,
|
|
62
|
+
patterns: true,
|
|
63
|
+
},
|
|
64
|
+
};
|