diff --git a/package.json b/package.json index 72e2756d5..9fa2f548a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@macrostrat/web", "private": true, - "version": "5.2.2", + "version": "5.3.0", "description": "Macrostrat map interface", "type": "module", "scripts": { @@ -61,23 +61,23 @@ "@macrostrat-web/sift": "workspace:*", "@macrostrat-web/text-toolchain": "workspace:*", "@macrostrat-web/utility-functions": "workspace:*", - "@macrostrat/api-types": "^1.1.0", - "@macrostrat/color-utils": "^1.1.0", - "@macrostrat/column-components": "^1.1.0", - "@macrostrat/column-views": "^2.1.2", - "@macrostrat/data-components": "^0.2.0", - "@macrostrat/data-sheet": "^2.0.2", - "@macrostrat/feedback-components": "^1.1.9", - "@macrostrat/form-components": "^0.2.4", + "@macrostrat/api-types": "^1.1.3", + "@macrostrat/color-utils": "^1.1.2", + "@macrostrat/column-components": "^1.3.1", + "@macrostrat/column-views": "^2.2.1", + "@macrostrat/data-components": "^0.2.2", + "@macrostrat/data-sheet": "^2.2.1", + "@macrostrat/feedback-components": "^1.1.10", + "@macrostrat/form-components": "^0.2.5", "@macrostrat/hyper": "^3.0.6", - "@macrostrat/map-interface": "^1.5.6", - "@macrostrat/map-styles": "^1.2.0", - "@macrostrat/mapbox-react": "^2.6.0", - "@macrostrat/mapbox-utils": "^1.5.0", - "@macrostrat/style-system": "^0.2.1", - "@macrostrat/svg-map-components": "^1.0.4", - "@macrostrat/timescale": "^2.2.1", - "@macrostrat/ui-components": "^4.4.5", + "@macrostrat/map-interface": "^1.6.0", + "@macrostrat/map-styles": "^1.2.4", + "@macrostrat/mapbox-react": "^2.6.4", + "@macrostrat/mapbox-utils": "^1.6.1", + "@macrostrat/style-system": "^0.2.3", + "@macrostrat/svg-map-components": "^1.0.6", + "@macrostrat/timescale": "^2.3.0", + "@macrostrat/ui-components": "^4.5.2", "@react-hook/size": "^2.1.2", "@supabase/postgrest-js": "^1.18.1", "@turf/bbox": "^6.5.0", @@ -102,7 +102,7 @@ "classnames": "^2.2.6", "compression": "^1.7.4", "cookie-parser": "^1.4.6", - "cross-fetch": "^4.0.0", + "cross-fetch": "^4.1.0", "d3-array": "^3.1.1", "d3-axis": "^3.0.0", "d3-format": "^3.1.0", diff --git a/packages/column-builder/package.json b/packages/column-builder/package.json index 2ad51e6ae..73ba7abf3 100644 --- a/packages/column-builder/package.json +++ b/packages/column-builder/package.json @@ -22,7 +22,7 @@ "@supabase/postgrest-js": "^1.18.1", "@types/mapbox__mapbox-gl-draw": "^1.2.3", "axios": "^1.13.2", - "cross-fetch": "^3.1.5", + "cross-fetch": "^4.0.0", "mapbox-gl": "^3.0.0", "react": "^18", "react-beautiful-dnd": "^13.1.0", diff --git a/packages/section-editor/src/column/index.ts b/packages/section-editor/src/column/index.ts index d42b8b2dc..323c15ba0 100644 --- a/packages/section-editor/src/column/index.ts +++ b/packages/section-editor/src/column/index.ts @@ -9,8 +9,6 @@ import { FaciesProvider, AssetPathContext, GrainsizeLayoutProvider, - GeologicPatternProvider, - SymbolColumn, DivisionEditOverlay, ColumnImage, LithologyColumn, @@ -175,7 +173,6 @@ class StratColumn extends Component { h(CoveredOverlay), h(LithologyBoxes), ]), - h(SymbolColumn, { left: 90, symbols: [] }), h(ColumnAxis), h(GrainsizeAxis), // Notes column diff --git a/pages/columns/@column/+data.ts b/pages/columns/@column/+data.shared.ts similarity index 85% rename from pages/columns/@column/+data.ts rename to pages/columns/@column/+data.shared.ts index 5681b1ab1..b17c18962 100644 --- a/pages/columns/@column/+data.ts +++ b/pages/columns/@column/+data.shared.ts @@ -1,7 +1,6 @@ // https://vike.dev/onBeforeRender import { apiV2Prefix } from "@macrostrat-web/settings"; -import { preprocessUnits } from "@macrostrat/column-views"; import fetch from "cross-fetch"; import { ColumnSummary } from "#/map/map-interface/app-state/handlers/columns"; @@ -34,6 +33,8 @@ export async function data(pageContext) { { project_id, col_id, + show_position: true, + response: "long", }, (res) => res ), @@ -75,19 +76,13 @@ async function getData( * gets around the current limitation that there's no way to request any column data * without knowing the status_code. */ - let res = await getAndUnwrap( - assembleURL(entity, { ...args, status_code: "active" }) - ); - let data = unwrapResponse(res); - - if (data.length > 0) { - return data; - } + const url = assembleURL(entity, { + ...args, + status_code: "active,in process", + }); - let res2 = await getAndUnwrap( - assembleURL(entity, { ...args, status_code: "in process" }) - ); - return unwrapResponse(res2); + const res = await getAndUnwrap(url); + return unwrapResponse(res); } function assembleURL( @@ -100,7 +95,7 @@ function assembleURL( }: { col_id: number; project_id: number; - status_code?: "active" | "in process"; + status_code?: string; [key: string]: string | number; } ) { diff --git a/pages/columns/@column/column-inspector/facets.ts b/pages/columns/@column/column-inspector/facets.ts new file mode 100644 index 000000000..ca1d6fea3 --- /dev/null +++ b/pages/columns/@column/column-inspector/facets.ts @@ -0,0 +1,71 @@ +import hyper from "@macrostrat/hyper"; +import { useAPIResult } from "@macrostrat/ui-components"; +import { + BaseMeasurementsColumn, + IsotopesColumn, + MeasurementDataProvider, + TruncatedList, +} from "@macrostrat/column-views"; +import { apiDomain } from "@macrostrat-web/settings"; +import styles from "./index.module.sass"; + +const h = hyper.styled(styles); + +function useSGPData({ col_id }) { + const res = useAPIResult( + apiDomain + "/api/pg/sgp_unit_matches", + { + col_id: `eq.${col_id}`, + }, + (d) => d + ); + return res; +} + +export function SGPMeasurementsColumn({ columnID }) { + const data = useSGPData({ col_id: columnID }); + + if (data == null) return null; + + return h(BaseMeasurementsColumn, { + data, + noteComponent: SGPSamplesNote, + }); +} + +function SGPSamplesNote(props) { + const { note } = props; + const sgp_samples = note?.data?.sgp_samples; + + if (sgp_samples == null || sgp_samples.length === 0) return null; + + return h(TruncatedList, { + className: "sgp-samples", + data: sgp_samples, + itemRenderer: (p) => h("span", p.data.name), + }); +} + +export function StableIsotopesColumn({ columnID }) { + return h( + "div.isotopes-column", + h(MeasurementDataProvider, { col_id: columnID }, [ + h(IsotopesColumn, { + parameter: "D13C", + label: "δ¹³C", + color: "dodgeblue", + domain: [-14, 6], + width: 100, + nTicks: 4, + }), + h(IsotopesColumn, { + parameter: "D18O", + label: "δ¹⁸O", + color: "red", + domain: [-40, 0], + width: 100, + nTicks: 4, + }), + ]) + ); +} diff --git a/pages/columns/@column/column-inspector/index.module.sass b/pages/columns/@column/column-inspector/index.module.sass index 89a7a2643..6f081ef42 100644 --- a/pages/columns/@column/column-inspector/index.module.sass +++ b/pages/columns/@column/column-inspector/index.module.sass @@ -12,6 +12,7 @@ max-width: 80rem margin: 0 auto + gap: 1em .left-column @@ -38,7 +39,7 @@ .column-view - margin: 0 4em 4em + margin: 0 0 4em padding: 0 .column-header @@ -109,3 +110,14 @@ rect.selection-overlay .column-map, .unit-details-panel box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3) border-radius: 6px + + +.column-title-row + display: flex + flex-direction: row + align-items: baseline + justify-content: space-between + +.isotopes-column + display: flex + flex-direction: row diff --git a/pages/columns/@column/column-inspector/index.ts b/pages/columns/@column/column-inspector/index.ts index d64c1a7e0..21abd5898 100644 --- a/pages/columns/@column/column-inspector/index.ts +++ b/pages/columns/@column/column-inspector/index.ts @@ -1,7 +1,14 @@ import { ColoredUnitComponent, - MacrostratDataProvider, Column, + DetritalColumn, + FossilDataType, + HybridScaleType, + Identifier, + MacrostratColumnStateProvider, + MacrostratDataProvider, + PBDBFossilsColumn, + ReferencesField, } from "@macrostrat/column-views"; import { hyperStyled } from "@macrostrat/hyper"; import { useCallback, useEffect, useMemo, useState } from "react"; @@ -10,10 +17,16 @@ import { PatternProvider } from "~/_providers"; import styles from "./index.module.sass"; import { navigate } from "vike/client/router"; +import { SGPMeasurementsColumn, StableIsotopesColumn } from "./facets"; import { ModalUnitPanel } from "./modal-panel"; import { PageBreadcrumbs } from "~/components"; import { onDemand } from "~/_utils"; +import { ErrorBoundary } from "@macrostrat/ui-components"; +import { DataField } from "@macrostrat/data-components"; +import { ColumnAxisType } from "@macrostrat/column-components"; +import { atom, useAtom, useAtomValue } from "jotai"; +import { Button, FormGroup, HTMLSelect } from "@blueprintjs/core"; const ColumnMap = onDemand(() => import("./map").then((mod) => mod.ColumnMap)); @@ -27,10 +40,79 @@ export function ColumnPage(props) { ); } +const heightAxisTypeAtom = atom(); +const facetAtom = atom(); + +function inferHeightAxisType(axisType: ColumnAxisType, units): ColumnAxisType { + if (axisType !== ColumnAxisType.HEIGHT && axisType !== ColumnAxisType.DEPTH) { + return axisType; + } + // Infer axis type from units + const u0 = units[0]; + if (u0?.t_pos != null && u0?.b_pos != null) { + const t_pos = Number(u0.t_pos); + const b_pos = Number(u0.b_pos); + const d_pos = t_pos - b_pos; + if (d_pos > 0) { + return ColumnAxisType.HEIGHT; + } else { + return ColumnAxisType.DEPTH; + } + } + return null; +} + function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) { - console.log(columnInfo); const { units } = columnInfo; + const userSetAxisType = useAtomValue(heightAxisTypeAtom); + const isSection = columnInfo.col_type == "section"; + + console.log(userSetAxisType); + + const defaultAxisType = isSection + ? ColumnAxisType.HEIGHT + : ColumnAxisType.AGE; + + let axisType = userSetAxisType ?? defaultAxisType; + axisType = inferHeightAxisType(axisType, units); + + let facetType = useAtomValue(facetAtom); + const facetElement = useMemo(() => { + return facetElements(facetType, columnInfo.col_id); + }, [facetType, columnInfo.col_id]); + + // Set subsidiary options + + let hybridScale = null; + let maxInternalColumns = undefined; + let unconformityLabels = true; + let showTimescale = true; + + if (isSection) { + maxInternalColumns = 1; + if (axisType !== ColumnAxisType.AGE) { + unconformityLabels = false; + showTimescale = false; + } + } else if ( + axisType == ColumnAxisType.HEIGHT || + axisType == ColumnAxisType.DEPTH + ) { + // Set up for approximate height column + hybridScale = { type: HybridScaleType.ApproximateHeight }; + // Show ages on secondary axis + axisType = ColumnAxisType.HEIGHT; + } + + if (axisType == ColumnAxisType.ORDINAL) { + // For ordinal columns, use the fancier "equidistant-surfaces" scale + axisType = ColumnAxisType.AGE; + hybridScale = { type: HybridScaleType.EquidistantSurfaces }; + + maxInternalColumns = undefined; + } + const [selectedUnitID, setSelectedUnitID] = useState( getInitialSelectedUnitID ); @@ -44,12 +126,6 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) { setHashString(selectedUnitID); }, [selectedUnitID]); - console.log(columnInfo); - - const lon = new Number(columnInfo.lng); - const lat = new Number(columnInfo.lat); - const zoom = 7; - const onSelectColumn = useCallback( (col_id: number) => { // do nothing @@ -61,29 +137,7 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) { [setSelectedUnitID] ); - let assistantContent = h("div.column-info", [ - h("h1.page-title", [ - h("span.col-name", columnInfo.col_name), - h.if(columnInfo.col_group != null)("span.subtitle", [ - h("span.separator", " – "), - h('a', { href: `/columns/groups/${columnInfo.col_group_id}` }, h("span.col-group", `${columnInfo.col_group}`)), - ]), - ]), - h("p.column-details", [ - h("span.column-id", ["#", columnInfo.col_id]), - ", ", - h("span.project", ["project ", columnInfo.project_id]), - ", ", - h( - "a", - { - href: `/map/loc/${lon}/${lat}/column#z=${zoom}&show=columns,geology`, - }, - "show in map" - ), - ".", - ]), - ]); + let assistantContent = h(ColumnGlobalModal, { data: columnInfo }); if (selectedUnit != null) { assistantContent = h(ModalUnitPanel, { @@ -94,43 +148,188 @@ function ColumnPageInner({ columnInfo, linkPrefix = "/", projectID }) { }); } + let children = null; + let showLabelColumn = true; + if (facetElement != null) { + showLabelColumn = false; + children = h("div.facet-container", [facetElement]); + } + return h("div.page-container", [ h("div.main", [ - h("div.left-column", [ - h("div.column-header", [ - h("nav", [ - h(PageBreadcrumbs, { showLogo: true, title: columnInfo.col_name }), + // This is probably too high in the page hierarchy + h(ErrorBoundary, [ + h(MacrostratColumnStateProvider, { units }, [ + h("div.left-column", [ + h("div.column-header", [ + h("nav", [ + h(PageBreadcrumbs, { + showLogo: true, + title: columnInfo.col_name, + }), + ]), + ]), + h("div.column-view", [ + h( + Column, + { + units, + unitComponent: ColoredUnitComponent, + unconformityLabels, + collapseSmallUnconformities: true, + showTimescale, + axisType, + columnWidth: 300, + width: 450, + onUnitSelected: setSelectedUnitID, + selectedUnit: selectedUnitID, + maxInternalColumns, + showLabelColumn, + hybridScale, + pixelScale: 20, + }, + children + ), + ]), + ]), + h("div.right-column", [ + h("div.right-column-boxes", [ + h(ColumnMap, { + className: "column-map", + inProcess: true, + projectID, + selectedColumn: columnInfo.col_id, + onSelectColumn, + }), + assistantContent, + ]), ]), - ]), - h("div.column-view", [ - h(Column, { - units, - unitComponent: ColoredUnitComponent, - unconformityLabels: true, - collapseSmallUnconformities: true, - columnWidth: 300, - width: 450, - onUnitSelected: setSelectedUnitID, - selectedUnit: selectedUnitID, - }), - ]), - ]), - h("div.right-column", [ - h("div.right-column-boxes", [ - h(ColumnMap, { - className: "column-map", - inProcess: true, - projectID, - selectedColumn: columnInfo.col_id, - onSelectColumn, - }), - assistantContent, ]), ]), ]), ]); } +function ColumnGlobalModal({ data }) { + return h("div.column-assistant", [ + h(ColumnBasicInfo, { data }), + h(ColumnSettingsPanel), + ]); +} + +function ColumnBasicInfo({ data, showColumnID = true }) { + if (data == null) return null; + return h("div.column-info", [ + h("div.column-title-row", [ + h("h1", data.col_name), + h.if(showColumnID)("h2", h(Identifier, { id: data.col_id })), + ]), + h(DataField, { + row: true, + label: "Project", + value: data.project_id, + }), + h(DataField, { row: true, label: "Group", value: data.col_group }), + h(ReferencesField, { + refs: data.refs, + inline: false, + row: true, + className: "column-refs", + }), + // Show in Map + ]); +} + +let ageAxisOptions = { + Height: ColumnAxisType.HEIGHT, + Age: ColumnAxisType.AGE, + Ordinal: ColumnAxisType.ORDINAL, +}; + +function facetElements(facet: string | null, columnID: number) { + switch (facet) { + case "stable-isotopes": + return h(StableIsotopesColumn, { columnID }); + case "sgp-samples": + return h(SGPMeasurementsColumn, { columnID }); + case "fossil-taxa": + return h(PBDBFossilsColumn, { + columnID, + type: FossilDataType.Occurrences, + }); + case "fossil-collections": + return h(PBDBFossilsColumn, { + columnID, + type: FossilDataType.Collections, + }); + case "detrital-zircons": + return h(DetritalColumn, { columnID, color: "magenta" }); + default: + return null; + } +} + +function ColumnSettingsPanel() { + return h("div.column-settings-panel", [h(AxisTypeControl), h(FacetControl)]); +} + +function AxisTypeControl() { + const optionsValues = Object.entries(ageAxisOptions).map(([k, v]) => { + return { label: k, value: v }; + }); + const [axisType, setAxisType] = useAtom(heightAxisTypeAtom); + return h( + FormGroup, + { label: "Axis type", inline: true }, + h([ + h(HTMLSelect, { + options: optionsValues, + value: axisType, + onChange: (evt) => { + const value = evt.target.value as ColumnAxisType; + // set axis type + console.log("Selected axis type:", value); + setAxisType(value); + }, + }), + h(Button, { + minimal: true, + small: true, + icon: "cross", + disabled: axisType == null, + onClick: () => setAxisType(null), + }), + ]) + ); +} + +const facets = [ + { label: "None", value: null }, + { label: "Carbon/oxygen isotopes", value: "stable-isotopes" }, + { label: "SGP", value: "sgp-samples" }, + { label: "Fossils (taxa)", value: "fossil-taxa" }, + { label: "Fossils (collections)", value: "fossil-collections" }, + { label: "Detrital zircons", value: "detrital-zircons" }, +]; + +function FacetControl() { + const [facet, setFacet] = useAtom(facetAtom); + return h("div.facet-control", [ + h( + FormGroup, + { label: "Facet", inline: true }, + h(HTMLSelect, { + options: facets, + value: facet, + onChange: (evt) => { + const value = evt.target.value; + setFacet(value); + }, + }) + ), + ]); +} + function getHashParams() { // Harvest selected unit ID from hash string const currentHash = document.location.hash.substring(1); diff --git a/pages/columns/grouped-cols.ts b/pages/columns/grouped-cols.ts index f84fe8c94..925d9463e 100644 --- a/pages/columns/grouped-cols.ts +++ b/pages/columns/grouped-cols.ts @@ -116,13 +116,14 @@ async function fetchColumns(opts: ColumnFilterOptions) { } } - function buildQueryArg(values: number[]) { - d; - return values.map((v) => v.toString()).join(","); - } + const res = await fetchAPIV2Result("/columns", params); - return (await fetchAPIV2Result("/columns", params)) as Promise<{ + return res as Promise<{ data: ColumnResponseShort[]; refs: { [key: number]: string }; }>; } + +function buildQueryArg(values: number[]) { + return values.map((v) => v.toString()).join(","); +} diff --git a/pages/columns/map.client.ts b/pages/columns/map.client.ts index 9cc993cd1..e86d5a0ec 100644 --- a/pages/columns/map.client.ts +++ b/pages/columns/map.client.ts @@ -8,8 +8,12 @@ import { apiV2Prefix, mapboxAccessToken } from "@macrostrat-web/settings"; import { ErrorBoundary } from "@macrostrat/ui-components"; import { useMapStyleOperator } from "@macrostrat/mapbox-react"; import mapboxgl from "mapbox-gl"; +import { navigate as vikeNavigate } from "vike/client/router"; -export function ColumnMapContainer(props) { +export function ColumnMapContainer(props: { + columnIDs?: number[] | null; + projectID?: number | null; +}) { return h( ErrorBoundary, h( @@ -41,9 +45,13 @@ function ColumnsMapInner({ style: { height: "100%" }, accessToken: mapboxAccessToken, onSelectColumn: (col) => { - if (col) { - window.open(`/columns/${col}`, "_self"); + console.log(col, projectID); + if (col == null) return; + let url = `/columns/${col}`; + if (projectID != null) { + url = `/projects/${projectID}` + url; } + vikeNavigate(url); }, columns: columnData, projectID, @@ -54,24 +62,41 @@ function ColumnsMapInner({ } function FitBounds({ columnData }) { - useMapStyleOperator((map) => { - if (!map || columnData.length === 0) return; + useMapStyleOperator( + (map) => { + if (!map || columnData.length === 0) return; + + console.log(columnData); - // Extract coordinates - const coords = columnData.map((col) => col.geometry.coordinates[0][0]); - if (coords.length === 0) return; + // Extract coordinates + const coords = columnData + .map(getRepresentativeCoordinate) + .filter(Boolean); + if (coords.length === 0) return; - // Build bounds using the first coordinate - const bounds = coords.reduce( - (b, coord) => b.extend(coord), - new mapboxgl.LngLatBounds(coords[0], coords[0]) - ); + // Build bounds using the first coordinate + const bounds = coords.reduce( + (b, coord) => b.extend(coord), + new mapboxgl.LngLatBounds(coords[0], coords[0]) + ); - map.fitBounds(bounds, { - padding: 50, - duration: 0, - }); - }, [columnData]); + map.fitBounds(bounds, { + padding: 50, + duration: 0, + }); + }, + [columnData] + ); return null; } +function getRepresentativeCoordinate(column) { + const geom = column.geometry; + if (geom.type === "Point") { + return geom.coordinates; + } + if (geom.type === "Polygon") { + return geom.coordinates[0][0]; + } + return null; +} diff --git a/pages/index/+data.ts b/pages/index/+data.ts index de402d8b4..6bba81245 100644 --- a/pages/index/+data.ts +++ b/pages/index/+data.ts @@ -9,6 +9,7 @@ interface PageStats { export async function data(pageContext) { // `.page.server.js` files always run in Node.js; we could use SQL/ORM queries here. + const data = await fetchAPIData("/stats", { all: true }); let columns = 0; diff --git a/pages/projects/+data.ts b/pages/projects/+data.shared.ts similarity index 100% rename from pages/projects/+data.ts rename to pages/projects/+data.shared.ts diff --git a/pages/projects/@project/+Page.client.ts b/pages/projects/@project/+Page.ts similarity index 100% rename from pages/projects/@project/+Page.client.ts rename to pages/projects/@project/+Page.ts diff --git a/pages/projects/@project/+data.ts b/pages/projects/@project/+data.shared.ts similarity index 74% rename from pages/projects/@project/+data.ts rename to pages/projects/@project/+data.shared.ts index 9823dd6b8..d61c2986c 100644 --- a/pages/projects/@project/+data.ts +++ b/pages/projects/@project/+data.shared.ts @@ -3,7 +3,9 @@ import { fetchAPIData } from "~/_utils/fetch-helpers"; export async function data(pageContext) { // `.page.server.js` files always run in Node.js; we could use SQL/ORM queries here. - const project_id = pageContext.routeParams.project; + const _project_id = pageContext.routeParams.project; + + const project_id = Number(_project_id); const projects = await fetchAPIData(`/defs/projects`, { project_id, @@ -11,7 +13,7 @@ export async function data(pageContext) { }); const project = projects[0]; - const allColumnGroups = await getGroupedColumns(project_id); + const allColumnGroups = await getGroupedColumns({ project_id }); return { allColumnGroups, diff --git a/pages/projects/@project/columns/@column/+data.shared.ts b/pages/projects/@project/columns/@column/+data.shared.ts new file mode 100644 index 000000000..686683ab3 --- /dev/null +++ b/pages/projects/@project/columns/@column/+data.shared.ts @@ -0,0 +1 @@ +export { data } from "#/columns/@column/+data.shared"; diff --git a/pages/projects/@project/columns/@column/+data.ts b/pages/projects/@project/columns/@column/+data.ts deleted file mode 100644 index 42696ff9f..000000000 --- a/pages/projects/@project/columns/@column/+data.ts +++ /dev/null @@ -1 +0,0 @@ -export { data } from "#/columns/@column/+data"; diff --git a/src/_utils/fetch-helpers.ts b/src/_utils/fetch-helpers.ts index 7ca650f39..e3d86f3dc 100644 --- a/src/_utils/fetch-helpers.ts +++ b/src/_utils/fetch-helpers.ts @@ -20,7 +20,7 @@ export async function fetchAPIV2Result(apiURL: string, params: any) { } export async function fetchAPIData(apiURL: string, params: any) { - const res = fetchAPIV2Result(apiURL, params); + const res = await fetchAPIV2Result(apiURL, params); return res?.data || []; } @@ -46,19 +46,21 @@ function isServer() { ); } -function fetchWrapper(url: string): Promise { +async function fetchWrapper(url: string): Promise { const startTime = performance.now(); - - return fetch(url).then((response) => { + try { + const res = await fetch(url); if (isServer()) { const endTime = performance.now(); const duration = endTime - startTime; console.log( - `Fetching ${url} - status ${response.status} - ${duration.toFixed( - 2 - )} ms` + `Fetching ${url} - status ${res.status} - ${duration.toFixed(2)} ms` ); } - return response; - }); + return res; + } catch (error) { + // Not really sure why we have to catch and re-throw here, but if we don't, + // the app crashes. + throw new Error(`Network error while fetching ${url}: ${error}`); + } } diff --git a/yarn.lock b/yarn.lock index bff9de9d8..d9680b0cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2904,7 +2904,7 @@ __metadata: "@types/react": "npm:^17" "@types/react-beautiful-dnd": "npm:^13.1.2" axios: "npm:^1.13.2" - cross-fetch: "npm:^3.1.5" + cross-fetch: "npm:^4.0.0" eslint: "npm:^8.7.0" eslint-config-next: "npm:^12.0.8" mapbox-gl: "npm:^3.0.0" @@ -3053,12 +3053,12 @@ __metadata: languageName: unknown linkType: soft -"@macrostrat/api-types@npm:^1.1.0, @macrostrat/api-types@npm:^1.1.1": - version: 1.1.1 - resolution: "@macrostrat/api-types@npm:1.1.1" +"@macrostrat/api-types@npm:^1.1.3": + version: 1.1.3 + resolution: "@macrostrat/api-types@npm:1.1.3" dependencies: "@types/geojson": "npm:^7946.0.16" - checksum: 10/f7d438cde57d68de4e19dc17bff30601bdef53858602e6d7a51636fb4ffa2d5b7630165fcddc72bb453e5b51f7e93a470b436a348ca39dcee24402bed2272501 + checksum: 10/b3cdd5309c0e4898ff2e672cc7c4b161c61389d72ba335a3c9b2e750f3903c771c6fec9ea00f095130fe2c2b15a28ae54c0227c0355819dfefeb479f07091c08 languageName: node linkType: hard @@ -3106,7 +3106,7 @@ __metadata: languageName: node linkType: hard -"@macrostrat/color-utils@npm:1.1.1, @macrostrat/color-utils@npm:^1.0.1, @macrostrat/color-utils@npm:^1.1.0, @macrostrat/color-utils@npm:^1.1.1": +"@macrostrat/color-utils@npm:1.1.1, @macrostrat/color-utils@npm:^1.0.1, @macrostrat/color-utils@npm:^1.1.1": version: 1.1.1 resolution: "@macrostrat/color-utils@npm:1.1.1" dependencies: @@ -3116,7 +3116,17 @@ __metadata: languageName: node linkType: hard -"@macrostrat/column-components@npm:^1.0.3, @macrostrat/column-components@npm:^1.1.0, @macrostrat/column-components@npm:^1.2.0": +"@macrostrat/color-utils@npm:1.1.2, @macrostrat/color-utils@npm:^1.1.2": + version: 1.1.2 + resolution: "@macrostrat/color-utils@npm:1.1.2" + dependencies: + "@types/chroma-js": "npm:^3.1.1" + chroma-js: "npm:^3.0.0" + checksum: 10/776689dc4cdd24eb4c3943e74673471d42e11c16a622d5bc9c32a04859fd990f55fa3ac1253c79ad4bd09c644bdb82f4ed89c9459852d90cbe6263eb0c8dea5b + languageName: node + linkType: hard + +"@macrostrat/column-components@npm:^1.0.3": version: 1.2.0 resolution: "@macrostrat/column-components@npm:1.2.0" dependencies: @@ -3151,23 +3161,58 @@ __metadata: languageName: node linkType: hard -"@macrostrat/column-views@npm:^2.1.2": - version: 2.1.2 - resolution: "@macrostrat/column-views@npm:2.1.2" +"@macrostrat/column-components@npm:^1.3.1": + version: 1.3.1 + resolution: "@macrostrat/column-components@npm:1.3.1" dependencies: - "@macrostrat/api-types": "npm:^1.1.1" - "@macrostrat/color-utils": "npm:^1.1.1" - "@macrostrat/column-components": "npm:^1.2.0" - "@macrostrat/data-components": "npm:^0.2.0" + "@blueprintjs/core": "npm:^5.0.0" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/map-interface": "npm:^1.4.0" - "@macrostrat/map-styles": "npm:^1.2.1" - "@macrostrat/mapbox-react": "npm:^2.6.2" - "@macrostrat/mapbox-utils": "npm:^1.6.0" - "@macrostrat/stratigraphy-utils": "npm:^1.0.1" - "@macrostrat/svg-map-components": "npm:^1.0.5" - "@macrostrat/timescale": "npm:^2.2.1" - "@macrostrat/ui-components": "npm:^4.3.0" + "@macrostrat/stratigraphy-utils": "npm:^1.0.2" + "@macrostrat/timescale": "npm:^2.3.0" + "@macrostrat/ui-components": "npm:^4.5.2" + chroma-js: "npm:^2.1.0" + classnames: "npm:^2.2.6" + d3-axis: "npm:^3.0.0" + d3-format: "npm:^3.1.0" + d3-path: "npm:^3.1.0" + d3-scale: "npm:^3.2.1" + d3-selection: "npm:^3.0.0" + fscreen: "npm:^1.0.2" + immutability-helper: "npm:^3.0.2" + labella: "npm:^1.1.4" + react-color: "npm:^2.18.0" + react-draggable: "npm:^4.4.5" + react-images: "npm:^1.1.0-beta.1" + react-router-dom: "npm:^5.1.2" + react-scroll: "npm:^1.7.16" + react-select: "npm:^3.0.8" + react-svg-textures: "npm:^1.4.7" + ui-box: "npm:^5.4.1" + uuid: "npm:^7.0.3" + peerDependencies: + react: ^16.13.1||^17||^18||^19 + react-dom: ^16.13.1||^17||^18||^19 + checksum: 10/b3b9a3e44d58875acd0d317b3ac7cab1d5ba43f60ca6c061ac270c077f04c487cf2efa5ad4b09fbabd3691b4410572f2af5023dce8a0c9afe702faa09aebaaa4 + languageName: node + linkType: hard + +"@macrostrat/column-views@npm:^2.2.1": + version: 2.2.1 + resolution: "@macrostrat/column-views@npm:2.2.1" + dependencies: + "@macrostrat/api-types": "npm:^1.1.3" + "@macrostrat/color-utils": "npm:^1.1.2" + "@macrostrat/column-components": "npm:^1.3.1" + "@macrostrat/data-components": "npm:^0.2.2" + "@macrostrat/hyper": "npm:^3.0.6" + "@macrostrat/map-interface": "npm:^1.6.0" + "@macrostrat/map-styles": "npm:^1.2.4" + "@macrostrat/mapbox-react": "npm:^2.6.4" + "@macrostrat/mapbox-utils": "npm:^1.6.1" + "@macrostrat/stratigraphy-utils": "npm:^1.0.2" + "@macrostrat/svg-map-components": "npm:^1.0.7" + "@macrostrat/timescale": "npm:^2.3.0" + "@macrostrat/ui-components": "npm:^4.5.2" "@turf/buffer": "npm:^7.2.0" "@turf/centroid": "npm:^7.2.0" "@turf/distance": "npm:^7.2.0" @@ -3189,6 +3234,8 @@ __metadata: d3-path: "npm:^3.1.0" d3-scale: "npm:^4.0.2" d3-shape: "npm:^3.2.0" + jotai: "npm:^2.15.1" + jotai-scope: "npm:^0.9.7" mapbox-gl: "npm:^2.15.0||^3.0.0" react-spring: "npm:^9.7.5" topojson-client: "npm:^3.1.0" @@ -3197,7 +3244,7 @@ __metadata: peerDependencies: "@blueprintjs/core": ^5.0.0 react: ^16.13.1||^17||^18||^19 - checksum: 10/f13c75e28d1c3f1d8c4e6041cfac1d39d2c45cb2a5d2960c1bb194c2b5f7098304b2f53eadb302e7c16e22f60ceed3050e942b223c1ecbcaed3553c4855ae7ea + checksum: 10/cbc3154e5624e3d28573512407d75e235351e6a983ab6de8e662cdcbc264adaf0f3e27c2a098e0908711998771ba96b6d3c3f5385b55d312b43819615d4550e9 languageName: node linkType: hard @@ -3223,15 +3270,15 @@ __metadata: languageName: node linkType: hard -"@macrostrat/data-components@npm:^0.2.0": - version: 0.2.0 - resolution: "@macrostrat/data-components@npm:0.2.0" +"@macrostrat/data-components@npm:^0.2.2": + version: 0.2.2 + resolution: "@macrostrat/data-components@npm:0.2.2" dependencies: - "@macrostrat/color-utils": "npm:^1.1.1" + "@macrostrat/color-utils": "npm:^1.1.2" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/map-interface": "npm:^1.3.1" - "@macrostrat/stratigraphy-utils": "npm:^1.0.1" - "@macrostrat/ui-components": "npm:^4.3.0" + "@macrostrat/mapbox-utils": "npm:^1.6.1" + "@macrostrat/stratigraphy-utils": "npm:^1.0.2" + "@macrostrat/ui-components": "npm:^4.5.2" "@visx/axis": "npm:^3.12.0" "@visx/gradient": "npm:^3.12.0" "@visx/scale": "npm:^3.12.0" @@ -3243,20 +3290,20 @@ __metadata: peerDependencies: "@blueprintjs/core": ^5.10.2 react: ^16.13.1||^17||^18||^19 - checksum: 10/de3e12becfa425682bfcf8463ba1307c1dd518c11d9e40fde56d9432d3dd40494bb4f6eccae416b8d4dece802df02b5f15efe35a976f2c9e69a82e6ef231e25c + checksum: 10/1d807a950758d9dea8efe35c96514e6b531aa0459ac6efe5432d1e038a279de07b97495d0eaa8b78039f52eb1fe563e526e22555443cf367149d8d6775cf67ad languageName: node linkType: hard -"@macrostrat/data-sheet@npm:^2.0.2, @macrostrat/data-sheet@npm:^2.1.1": - version: 2.1.1 - resolution: "@macrostrat/data-sheet@npm:2.1.1" +"@macrostrat/data-sheet@npm:^2.2.1": + version: 2.2.1 + resolution: "@macrostrat/data-sheet@npm:2.2.1" dependencies: "@blueprintjs/core": "npm:^5.10.2" "@blueprintjs/table": "npm:^5.1.4" - "@macrostrat/color-utils": "npm:^1.1.1" - "@macrostrat/data-components": "npm:^0.2.0" + "@macrostrat/color-utils": "npm:^1.1.2" + "@macrostrat/data-components": "npm:^0.2.2" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/ui-components": "npm:^4.3.0" + "@macrostrat/ui-components": "npm:^4.5.2" "@supabase/postgrest-js": "npm:^1.17.7" chroma-js: "npm:^2.4.2" classnames: "npm:^2.3.1" @@ -3267,22 +3314,22 @@ __metadata: underscore: "npm:^1.13.7" zustand: "npm:^5.0.2" zustand-computed: "npm:^2.1.0" - checksum: 10/3744c1d0c68f9e4663daa196ccd35faf34fbafafca898f2033ccf4f0945dd538c1745dd408fb1d7b7c75e838d7211ca71ba60c5e7061f5530bdfec8a1bb477f5 + checksum: 10/42b65ea77cc2bd8417e7e14ab07d5281903ccc8c84a81973dce13dd9c6677ce9f14d3cdb03b3bfb6a3bf98c8b12aa78a98286981fea1c37cd73747ba687e0ff9 languageName: node linkType: hard -"@macrostrat/feedback-components@npm:^1.1.9": - version: 1.1.9 - resolution: "@macrostrat/feedback-components@npm:1.1.9" +"@macrostrat/feedback-components@npm:^1.1.10": + version: 1.1.10 + resolution: "@macrostrat/feedback-components@npm:1.1.10" dependencies: "@babel/preset-react": "npm:^7.18.6" "@blueprintjs/core": "npm:^5.10.2" "@blueprintjs/select": "npm:^5.3.10" - "@macrostrat/color-utils": "npm:^1.1.1" - "@macrostrat/data-components": "npm:^0.2.0" - "@macrostrat/data-sheet": "npm:^2.1.1" + "@macrostrat/color-utils": "npm:^1.1.2" + "@macrostrat/data-components": "npm:^0.2.2" + "@macrostrat/data-sheet": "npm:^2.2.1" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/ui-components": "npm:^4.4.6" + "@macrostrat/ui-components": "npm:^4.5.2" "@xyflow/react": "npm:^12.3.6" classnames: "npm:^2.5.1" d3-force: "npm:^3.0.0" @@ -3293,7 +3340,7 @@ __metadata: peerDependencies: react: ^17||^18||^19 react-dom: ^17||^18||^19 - checksum: 10/6491167a7690f068e14dc9b2c7ad74e792d2e1fa10df7c7849d60b7863008c51c4f1197e242f0c42c832f13a0b94ff5bb070e3c1ebe5d3bb8245933bb6c5838e + checksum: 10/f35d02dd0cac6dd6cd57deab03fb50b0d80ffa3d2f1d015f7057357bcdcbfc6650be78e2f6977cfa8bb0c296aaf504e7cff29f7702269d3a1d4ca94b9b84463e languageName: node linkType: hard @@ -3323,17 +3370,17 @@ __metadata: languageName: node linkType: hard -"@macrostrat/form-components@npm:^0.2.4": - version: 0.2.4 - resolution: "@macrostrat/form-components@npm:0.2.4" +"@macrostrat/form-components@npm:^0.2.5": + version: 0.2.5 + resolution: "@macrostrat/form-components@npm:0.2.5" dependencies: "@blueprintjs/core": "npm:^5.10.2" "@blueprintjs/icons": "npm:^5.9.0" "@blueprintjs/select": "npm:^5.3.10" "@blueprintjs/table": "npm:^5.3.4" - "@macrostrat/color-utils": "npm:^1.1.1" + "@macrostrat/color-utils": "npm:^1.1.2" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/ui-components": "npm:^4.4.4" + "@macrostrat/ui-components": "npm:^4.5.2" "@mantine/core": "npm:^4.2.1" "@mantine/hooks": "npm:^4.2.1" "@mapbox/mapbox-gl-draw": "npm:^1.5.0" @@ -3345,7 +3392,7 @@ __metadata: peerDependencies: react: ^16.13.1||^17||^18||^19 react-dom: ^16.13.1||^17||^18||^19 - checksum: 10/9afcec73d1f2acee9ecbb52765bdcff23d92120e586167f3adcc7c87dd26075084765c3fa3d74004d1f9cf1134886099a42979ec506dc3b18025a2ebe2ae4ab3 + checksum: 10/19ef5cdd99c6c6b8fa906154bc4cf30906767b4d4fc3ee8decb5f82e4e91170af9518ff94c97535d46d5560b185e6785113dc0918edebdb48d688a64038db6f7 languageName: node linkType: hard @@ -3361,18 +3408,18 @@ __metadata: languageName: node linkType: hard -"@macrostrat/map-interface@npm:1.5.2, @macrostrat/map-interface@npm:^1.3.1, @macrostrat/map-interface@npm:^1.4.0": - version: 1.5.2 - resolution: "@macrostrat/map-interface@npm:1.5.2" +"@macrostrat/map-interface@npm:1.6.0, @macrostrat/map-interface@npm:^1.6.0": + version: 1.6.0 + resolution: "@macrostrat/map-interface@npm:1.6.0" dependencies: "@blueprintjs/core": "npm:^5.0.0" - "@macrostrat/color-utils": "npm:^1.1.1" - "@macrostrat/data-components": "npm:^0.2.0" + "@macrostrat/color-utils": "npm:^1.1.2" + "@macrostrat/data-components": "npm:^0.2.2" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/map-interface": "npm:1.5.2" - "@macrostrat/mapbox-react": "npm:^2.6.2" - "@macrostrat/mapbox-utils": "npm:^1.6.0" - "@macrostrat/ui-components": "npm:^4.4.4" + "@macrostrat/map-interface": "npm:1.6.0" + "@macrostrat/mapbox-react": "npm:^2.6.4" + "@macrostrat/mapbox-utils": "npm:^1.6.1" + "@macrostrat/ui-components": "npm:^4.5.2" "@mapbox/tilebelt": "npm:^2.0.0" "@visx/axis": "npm:^3.12.0" "@visx/scale": "npm:^3.12.0" @@ -3388,53 +3435,37 @@ __metadata: peerDependencies: react: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 react-dom: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 - checksum: 10/29f5a88f18867bc4b20dd46c450714260865cc38ece7c88f86d25e3e83e4c963aceae0f4329acaef12a821bfba0d5962ad1b14eda67120578fe4ab99b6bf6a74 + checksum: 10/5f0879eb8833bd21bc05ffb9acaf72f3ffb1b1dc84c30658388b096adf2d50ace8f923d2236cb23c1ad47bc3f6f541de7f2e76228f46c615c749996af464d3db languageName: node linkType: hard -"@macrostrat/map-interface@npm:1.5.6, @macrostrat/map-interface@npm:^1.5.6": - version: 1.5.6 - resolution: "@macrostrat/map-interface@npm:1.5.6" +"@macrostrat/map-styles@npm:^1.2.1": + version: 1.2.1 + resolution: "@macrostrat/map-styles@npm:1.2.1" dependencies: - "@blueprintjs/core": "npm:^5.0.0" - "@macrostrat/color-utils": "npm:^1.1.1" - "@macrostrat/data-components": "npm:^0.2.0" - "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/map-interface": "npm:1.5.6" - "@macrostrat/mapbox-react": "npm:^2.6.2" - "@macrostrat/mapbox-utils": "npm:^1.6.0" - "@macrostrat/ui-components": "npm:^4.4.4" - "@mapbox/tilebelt": "npm:^2.0.0" - "@visx/axis": "npm:^3.12.0" - "@visx/scale": "npm:^3.12.0" - chroma-js: "npm:^3.1.2" - classnames: "npm:^2.5.1" - d3-array: "npm:^3.2.4" - d3-format: "npm:^3.1.0" + "@macrostrat/color-utils": "npm:1.1.1" + axios: "npm:^1.7.9" mapbox-gl: "npm:^2.15.0||^3.0.0" - query-string: "npm:^9.0.0" - transition-hook: "npm:^1.5.2" - underscore: "npm:^1.13.6" - use-resize-observer: "npm:^9.1.0" - peerDependencies: - react: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 - react-dom: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 - checksum: 10/0db3d063c98a04bffe7eaeafcba6649f6c56993db712fd02f1d063b80e0b7e1be34407a63074f721fd1dc9e732012a5edabb8c38cdb0ecb723a994831dfaa8d2 + checksum: 10/1c8f5c7f8ed8d9c0f35a6e36d17b4342ecff12eb2fb5fa6b050202b29751239a01a31e8c833e54b35a0936382b6625622b9a2ae809d239423da5709c83266e4c languageName: node linkType: hard -"@macrostrat/map-styles@npm:^1.2.0, @macrostrat/map-styles@npm:^1.2.1": - version: 1.2.1 - resolution: "@macrostrat/map-styles@npm:1.2.1" +"@macrostrat/map-styles@npm:^1.2.4": + version: 1.2.4 + resolution: "@macrostrat/map-styles@npm:1.2.4" dependencies: - "@macrostrat/color-utils": "npm:1.1.1" + "@macrostrat/color-utils": "npm:1.1.2" + "@macrostrat/ui-components": "npm:4.5.2" + "@types/d3-selection": "npm:^3.0.11" axios: "npm:^1.7.9" + d3-selection: "npm:^3.0.0" mapbox-gl: "npm:^2.15.0||^3.0.0" - checksum: 10/1c8f5c7f8ed8d9c0f35a6e36d17b4342ecff12eb2fb5fa6b050202b29751239a01a31e8c833e54b35a0936382b6625622b9a2ae809d239423da5709c83266e4c + textures: "npm:^1.2.3" + checksum: 10/c4da393e1bd3cf6de293626eaeb9b4676f867e3d24d50478f787942b02320292fe4e18613674b51e7e572b4e1161fb0c6acbec687c6f14837f9efc54ded6967d languageName: node linkType: hard -"@macrostrat/mapbox-react@npm:^2.6.0, @macrostrat/mapbox-react@npm:^2.6.2": +"@macrostrat/mapbox-react@npm:^2.6.0": version: 2.6.2 resolution: "@macrostrat/mapbox-react@npm:2.6.2" dependencies: @@ -3457,6 +3488,29 @@ __metadata: languageName: node linkType: hard +"@macrostrat/mapbox-react@npm:^2.6.4": + version: 2.6.4 + resolution: "@macrostrat/mapbox-react@npm:2.6.4" + dependencies: + "@macrostrat/hyper": "npm:^3.0.6" + "@macrostrat/map-styles": "npm:^1.2.4" + "@macrostrat/mapbox-utils": "npm:^1.6.1" + "@macrostrat/ui-components": "npm:^4.5.2" + "@turf/centroid": "npm:^7.1.0" + "@types/mapbox-gl": "npm:^3.4.1" + classnames: "npm:^2.3.1" + immutability-helper: "npm:^3.1.1" + mapbox-gl: "npm:^2.15.0||^3.0.0" + mapbox-gl-controls: "npm:^2.3.5" + zustand: "npm:^5.0.1" + peerDependencies: + "@blueprintjs/core": ^3||^4||^5.10.2 + react: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 + react-dom: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 + checksum: 10/3475d34c1f2f77d5dabb01ce1085f29aa6a66df2e5da5f4a1bff6b01797aecdc1fe95cb78cb5fdbbbe1010badeaaf2d3af1ae15064506d81d8abdb5c417a346b + languageName: node + linkType: hard + "@macrostrat/mapbox-utils@npm:^1.1.1, @macrostrat/mapbox-utils@npm:^1.5.0, @macrostrat/mapbox-utils@npm:^1.6.0": version: 1.6.0 resolution: "@macrostrat/mapbox-utils@npm:1.6.0" @@ -3469,6 +3523,18 @@ __metadata: languageName: node linkType: hard +"@macrostrat/mapbox-utils@npm:^1.6.1": + version: 1.6.1 + resolution: "@macrostrat/mapbox-utils@npm:1.6.1" + dependencies: + "@turf/bbox": "npm:^7.1.0" + "@types/mapbox-gl": "npm:^3.4.1" + axios: "npm:^1.7.9" + mapbox-gl: "npm:^2.15.0||^3.0.0" + checksum: 10/045654256c789866362e0a621619ee3ed05679cd7cb1abd1520234736c64e77aa342e23e4a5908bfb47d1c19984c704b94b89ad2b7820b01ffde9025960d75ca + languageName: node + linkType: hard + "@macrostrat/revision-info-webpack@npm:^1.0.0": version: 1.0.0 resolution: "@macrostrat/revision-info-webpack@npm:1.0.0" @@ -3485,20 +3551,27 @@ __metadata: languageName: node linkType: hard -"@macrostrat/style-system@npm:^0.2.1": - version: 0.2.1 - resolution: "@macrostrat/style-system@npm:0.2.1" +"@macrostrat/stratigraphy-utils@npm:^1.0.2": + version: 1.0.2 + resolution: "@macrostrat/stratigraphy-utils@npm:1.0.2" + checksum: 10/4e36cbf1be436634397164a458a62a979b80e2397a6ace9f6bb37d75ceacc9eab2c82fd0978b6147b2b531fbce29c07b2aa427a26a3edb426384e8b925ae1a6f + languageName: node + linkType: hard + +"@macrostrat/style-system@npm:^0.2.3": + version: 0.2.3 + resolution: "@macrostrat/style-system@npm:0.2.3" dependencies: "@blueprintjs/colors": "npm:^5.1.1" "@blueprintjs/core": "npm:^5.10.2" peerDependencies: - react: ^16.13.1||^17||^18 - react-dom: ^16.13.1||^17||^18 - checksum: 10/c7319dc3be0dc675e3ba275cb81283200285ebc87ad904e2c9731a50e12d8112e999b96f20cf518c76b47d213452155be032050c6fb815eeb296e3d72ecfac91 + react: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 + react-dom: ^16.8.6||^17.0.0||^18.0.0||^19.0.0 + checksum: 10/e137f420563eee626f4e0fd89c7836ce01426eb1a9538f9a248672f1401e116b4378883f7024f9def26dfd09ac196140933e262a02dfdc8961d78a37139d8d61 languageName: node linkType: hard -"@macrostrat/svg-map-components@npm:^1.0.2, @macrostrat/svg-map-components@npm:^1.0.4, @macrostrat/svg-map-components@npm:^1.0.5": +"@macrostrat/svg-map-components@npm:^1.0.2": version: 1.0.5 resolution: "@macrostrat/svg-map-components@npm:1.0.5" dependencies: @@ -3527,7 +3600,65 @@ __metadata: languageName: node linkType: hard -"@macrostrat/timescale@npm:^2.2.0, @macrostrat/timescale@npm:^2.2.1": +"@macrostrat/svg-map-components@npm:^1.0.6": + version: 1.0.6 + resolution: "@macrostrat/svg-map-components@npm:1.0.6" + dependencies: + "@macrostrat/hyper": "npm:^3.0.6" + "@macrostrat/ui-components": "npm:^4.5.0" + "@types/d3-array": "npm:^3.2.1" + "@types/d3-drag": "npm:^3.0.7" + "@types/d3-geo": "npm:^3.1.0" + "@types/d3-selection": "npm:^3.0.11" + "@types/d3-zoom": "npm:^3.0.8" + "@types/geojson": "npm:^7946.0.16" + "@types/react-dom": "npm:^18" + axios: "npm:^1.7.9" + d3-array: "npm:^3.2.4" + d3-drag: "npm:^3.0.0" + d3-geo: "npm:^3.1.1" + d3-selection: "npm:^3.0.0" + d3-zoom: "npm:^3.0.0" + kld-intersections: "npm:^0.7.0" + kld-path-parser: "npm:^0.2.1" + topojson-client: "npm:^3.1.0" + peerDependencies: + react: ^16.13.1||^17||^18||^19 + react-dom: ^16.13.1||^17||^18||^19 + checksum: 10/c39220d904d7e90ad68b05bf04b157695bf20a78d8c92f582c4523adc73c7eb265ad90b95b66676919a471a47caa5243a6cd539f588eb126eb3dffb3fdadb73b + languageName: node + linkType: hard + +"@macrostrat/svg-map-components@npm:^1.0.7": + version: 1.0.7 + resolution: "@macrostrat/svg-map-components@npm:1.0.7" + dependencies: + "@macrostrat/hyper": "npm:^3.0.6" + "@macrostrat/ui-components": "npm:^4.5.2" + "@types/d3-array": "npm:^3.2.1" + "@types/d3-drag": "npm:^3.0.7" + "@types/d3-geo": "npm:^3.1.0" + "@types/d3-selection": "npm:^3.0.11" + "@types/d3-zoom": "npm:^3.0.8" + "@types/geojson": "npm:^7946.0.16" + "@types/react-dom": "npm:^18" + axios: "npm:^1.7.9" + d3-array: "npm:^3.2.4" + d3-drag: "npm:^3.0.0" + d3-geo: "npm:^3.1.1" + d3-selection: "npm:^3.0.0" + d3-zoom: "npm:^3.0.0" + kld-intersections: "npm:^0.7.0" + kld-path-parser: "npm:^0.2.1" + topojson-client: "npm:^3.1.0" + peerDependencies: + react: ^16.13.1||^17||^18||^19 + react-dom: ^16.13.1||^17||^18||^19 + checksum: 10/2ab07592941bab4939fa0fcc94d70c7e1d37cf3dc3f5b07406ebd0070952f8ad9f359b3e2d7f1376b552bdac5283a2794f90a1066dc040653034dd10ef23b25d + languageName: node + linkType: hard + +"@macrostrat/timescale@npm:^2.2.0": version: 2.2.1 resolution: "@macrostrat/timescale@npm:2.2.1" dependencies: @@ -3547,41 +3678,29 @@ __metadata: languageName: node linkType: hard -"@macrostrat/ui-components@npm:^4.0.0, @macrostrat/ui-components@npm:^4.1.1, @macrostrat/ui-components@npm:^4.1.2, @macrostrat/ui-components@npm:^4.3.0, @macrostrat/ui-components@npm:^4.4.4": - version: 4.4.4 - resolution: "@macrostrat/ui-components@npm:4.4.4" +"@macrostrat/timescale@npm:^2.3.0": + version: 2.3.0 + resolution: "@macrostrat/timescale@npm:2.3.0" dependencies: - "@blueprintjs/core": "npm:^5.10.2" - "@blueprintjs/datetime2": "npm:^2.3.11" - "@blueprintjs/select": "npm:^5.3.10" "@macrostrat/hyper": "npm:^3.0.6" - "@types/react": "npm:^18.3.12" - "@types/react-dom": "npm:^18" - axios: "npm:^1.7.9" - chroma-js: "npm:^2.4.2||^3.0.0" - classnames: "npm:^2.3.0" + "@macrostrat/ui-components": "npm:^4.5.2" + "@types/classnames": "npm:^2.3.4" + "@types/d3-array": "npm:^3.2.1" + "@visx/axis": "npm:^3.12.0" + "@visx/scale": "npm:^3.12.0" + classnames: "npm:^2.2.6" d3-array: "npm:^3.2.4" - immutability-helper: "npm:^3.1.1" - query-string: "npm:^9.0.0" - react-color: "npm:^2.19.3" - react-dropzone: "npm:^11.4.2" - react-intersection-observer: "npm:^8.32.1" - react-json-tree: "npm:^0.19.0" - ui-box: "npm:^5.4.1" - underscore: "npm:^1.13.1" - use-async-effect: "npm:^2.2.1" - use-element-dimensions: "npm:^2.1.3" - zustand: "npm:^5.0.3" + d3-format: "npm:^3.1.0" peerDependencies: - react: ^16.8.6 || ^17 || ^18 || ^19 - react-dom: ^16.8.6 || ^17 || ^18 || ^19 - checksum: 10/0f170c2b6df1899faced929b9512c9c770971ccdfd97b8cd91704dd4864e77e1fbf8b2215b042677c8e1890a809d0a59495ab7d29ecd6acb360f25c1df1534ca + react: ^16.13.1||^17||^18||^19 + react-dom: ^16.13.1||^17||^18||^19 + checksum: 10/937618c6b84162a802073f4cc0f6092a9af35a9e07b10b697df42af2ace23a5fd720fa48fad67e55ba6ee1bc8a72b2d3eb46aea0d4ca38ede9450e36b6d2e1a8 languageName: node linkType: hard -"@macrostrat/ui-components@npm:^4.4.5": - version: 4.4.5 - resolution: "@macrostrat/ui-components@npm:4.4.5" +"@macrostrat/ui-components@npm:4.5.2, @macrostrat/ui-components@npm:^4.5.0, @macrostrat/ui-components@npm:^4.5.2": + version: 4.5.2 + resolution: "@macrostrat/ui-components@npm:4.5.2" dependencies: "@blueprintjs/core": "npm:^5.10.2" "@blueprintjs/datetime2": "npm:^2.3.11" @@ -3607,13 +3726,13 @@ __metadata: peerDependencies: react: ^16.8.6 || ^17 || ^18 || ^19 react-dom: ^16.8.6 || ^17 || ^18 || ^19 - checksum: 10/b4632a85e3b90add75ba65379263ff78d073b08cc8b0793a13e1a17ddc5f89782478cb30ba04dd2cba3967375a812beaee6e9b376ee697fa17c7471c332b67e6 + checksum: 10/265d6af254f8825c2c8a1624db14bf931c5575dda4d34521c19c86f69767fab64b3a65f30d6d0d6afeb79458763fad20eeea5f37431970dc4dea4307cc62fe92 languageName: node linkType: hard -"@macrostrat/ui-components@npm:^4.4.6": - version: 4.4.6 - resolution: "@macrostrat/ui-components@npm:4.4.6" +"@macrostrat/ui-components@npm:^4.0.0, @macrostrat/ui-components@npm:^4.1.1, @macrostrat/ui-components@npm:^4.1.2, @macrostrat/ui-components@npm:^4.3.0": + version: 4.4.4 + resolution: "@macrostrat/ui-components@npm:4.4.4" dependencies: "@blueprintjs/core": "npm:^5.10.2" "@blueprintjs/datetime2": "npm:^2.3.11" @@ -3639,7 +3758,7 @@ __metadata: peerDependencies: react: ^16.8.6 || ^17 || ^18 || ^19 react-dom: ^16.8.6 || ^17 || ^18 || ^19 - checksum: 10/017138c1ad2c363d82efbf16cef6592b5cf47138df82651f8c2190ed161a1cba3daffea5d2cf2b15ebe364d4692f62cd27088827d56567d73cf37b763e20e84c + checksum: 10/0f170c2b6df1899faced929b9512c9c770971ccdfd97b8cd91704dd4864e77e1fbf8b2215b042677c8e1890a809d0a59495ab7d29ecd6acb360f25c1df1534ca languageName: node linkType: hard @@ -3667,24 +3786,24 @@ __metadata: "@macrostrat-web/sift": "workspace:*" "@macrostrat-web/text-toolchain": "workspace:*" "@macrostrat-web/utility-functions": "workspace:*" - "@macrostrat/api-types": "npm:^1.1.0" - "@macrostrat/color-utils": "npm:^1.1.0" - "@macrostrat/column-components": "npm:^1.1.0" - "@macrostrat/column-views": "npm:^2.1.2" - "@macrostrat/data-components": "npm:^0.2.0" - "@macrostrat/data-sheet": "npm:^2.0.2" - "@macrostrat/feedback-components": "npm:^1.1.9" - "@macrostrat/form-components": "npm:^0.2.4" + "@macrostrat/api-types": "npm:^1.1.3" + "@macrostrat/color-utils": "npm:^1.1.2" + "@macrostrat/column-components": "npm:^1.3.1" + "@macrostrat/column-views": "npm:^2.2.1" + "@macrostrat/data-components": "npm:^0.2.2" + "@macrostrat/data-sheet": "npm:^2.2.1" + "@macrostrat/feedback-components": "npm:^1.1.10" + "@macrostrat/form-components": "npm:^0.2.5" "@macrostrat/hyper": "npm:^3.0.6" - "@macrostrat/map-interface": "npm:^1.5.6" - "@macrostrat/map-styles": "npm:^1.2.0" - "@macrostrat/mapbox-react": "npm:^2.6.0" - "@macrostrat/mapbox-utils": "npm:^1.5.0" + "@macrostrat/map-interface": "npm:^1.6.0" + "@macrostrat/map-styles": "npm:^1.2.4" + "@macrostrat/mapbox-react": "npm:^2.6.4" + "@macrostrat/mapbox-utils": "npm:^1.6.1" "@macrostrat/revision-info-webpack": "npm:^1.0.0" - "@macrostrat/style-system": "npm:^0.2.1" - "@macrostrat/svg-map-components": "npm:^1.0.4" - "@macrostrat/timescale": "npm:^2.2.1" - "@macrostrat/ui-components": "npm:^4.4.5" + "@macrostrat/style-system": "npm:^0.2.3" + "@macrostrat/svg-map-components": "npm:^1.0.6" + "@macrostrat/timescale": "npm:^2.3.0" + "@macrostrat/ui-components": "npm:^4.5.2" "@mdx-js/rollup": "npm:^2.3.0" "@react-hook/size": "npm:^2.1.2" "@supabase/postgrest-js": "npm:^1.18.1" @@ -3715,7 +3834,7 @@ __metadata: classnames: "npm:^2.2.6" compression: "npm:^1.7.4" cookie-parser: "npm:^1.4.6" - cross-fetch: "npm:^4.0.0" + cross-fetch: "npm:^4.1.0" d3-array: "npm:^3.1.1" d3-axis: "npm:^3.0.0" d3-format: "npm:^3.1.0" @@ -8854,15 +8973,6 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.5": - version: 3.1.8 - resolution: "cross-fetch@npm:3.1.8" - dependencies: - node-fetch: "npm:^2.6.12" - checksum: 10/ac8c4ca87d2ac0e17a19b6a293a67ee8934881aee5ec9a5a8323c30e9a9a60a0f5291d3c0d633ec2a2f970cbc60978d628804dfaf03add92d7e720b6d37f392c - languageName: node - linkType: hard - "cross-fetch@npm:^4.0.0, cross-fetch@npm:^4.1.0": version: 4.1.0 resolution: "cross-fetch@npm:4.1.0" @@ -13196,6 +13306,16 @@ __metadata: languageName: node linkType: hard +"jotai-scope@npm:^0.9.7": + version: 0.9.7 + resolution: "jotai-scope@npm:0.9.7" + peerDependencies: + jotai: ">=2.15.0" + react: ">=16.0.0" + checksum: 10/1fb6e34fd56adafa6dc5a448d9faa1ef40ccb16fe28542538d9d7b8e8ee7a5302bdce7c7049c848641529ad4f69876f969246a7e8fd01a747c691cfe09149293 + languageName: node + linkType: hard + "jotai@npm:^2.15.1": version: 2.15.1 resolution: "jotai@npm:2.15.1" @@ -14980,7 +15100,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.12, node-fetch@npm:^2.7.0": +"node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -19109,7 +19229,7 @@ __metadata: languageName: node linkType: hard -"textures@npm:^1.2.0": +"textures@npm:^1.2.0, textures@npm:^1.2.3": version: 1.2.3 resolution: "textures@npm:1.2.3" checksum: 10/4e1150451d21620304315f9c116c62d25bddcdc98f44785f3b6e3d1597f1a682e054b5edd896b3576efcff3d16ff1082d1a9234e6514dc1e3bbcd711735ddc2b