@macrostrat/column-views 3.9.0 → 3.10.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 +25 -0
- package/dist/index.cjs +15 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -34
- package/dist/index.js.map +1 -1
- package/dist/units/boxes.cjs +3 -3
- package/dist/units/boxes.cjs.map +1 -1
- package/dist/units/boxes.js +3 -3
- package/dist/units/boxes.js.map +1 -1
- package/dist/units/index.cjs +7 -11
- package/dist/units/index.cjs.map +1 -1
- package/dist/units/index.d.ts +0 -1
- package/dist/units/index.js +4 -9
- package/dist/units/index.js.map +1 -1
- package/package.json +6 -27
- package/src/index.ts +3 -1
- package/src/units/boxes.ts +7 -4
- package/src/units/index.ts +9 -26
- package/dist/maps/column-correlation/core.cjs +0 -288
- package/dist/maps/column-correlation/core.cjs.map +0 -1
- package/dist/maps/column-correlation/core.d.ts +0 -9
- package/dist/maps/column-correlation/core.js +0 -286
- package/dist/maps/column-correlation/core.js.map +0 -1
- package/dist/maps/column-correlation/index.d.ts +0 -2
- package/dist/maps/column-correlation/state.cjs +0 -193
- package/dist/maps/column-correlation/state.cjs.map +0 -1
- package/dist/maps/column-correlation/state.d.ts +0 -62
- package/dist/maps/column-correlation/state.js +0 -190
- package/dist/maps/column-correlation/state.js.map +0 -1
- package/dist/maps/column-navigation/index.d.ts +0 -2
- package/dist/maps/column-navigation/mapbox/index.cjs +0 -215
- package/dist/maps/column-navigation/mapbox/index.cjs.map +0 -1
- package/dist/maps/column-navigation/mapbox/index.d.ts +0 -38
- package/dist/maps/column-navigation/mapbox/index.js +0 -213
- package/dist/maps/column-navigation/mapbox/index.js.map +0 -1
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +0 -105
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +0 -1
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +0 -8
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +0 -105
- package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +0 -1
- package/dist/maps/column-navigation/mapbox/state.cjs +0 -73
- package/dist/maps/column-navigation/mapbox/state.cjs.map +0 -1
- package/dist/maps/column-navigation/mapbox/state.d.ts +0 -23
- package/dist/maps/column-navigation/mapbox/state.js +0 -71
- package/dist/maps/column-navigation/mapbox/state.js.map +0 -1
- package/dist/maps/column-navigation/svg/animated.d.ts +0 -1
- package/dist/maps/column-navigation/svg/data-fetcher.cjs +0 -25
- package/dist/maps/column-navigation/svg/data-fetcher.cjs.map +0 -1
- package/dist/maps/column-navigation/svg/data-fetcher.d.ts +0 -6
- package/dist/maps/column-navigation/svg/data-fetcher.js +0 -25
- package/dist/maps/column-navigation/svg/data-fetcher.js.map +0 -1
- package/dist/maps/column-navigation/svg/index.cjs +0 -94
- package/dist/maps/column-navigation/svg/index.cjs.map +0 -1
- package/dist/maps/column-navigation/svg/index.d.ts +0 -9
- package/dist/maps/column-navigation/svg/index.js +0 -93
- package/dist/maps/column-navigation/svg/index.js.map +0 -1
- package/dist/maps/column-navigation/svg/layers.cjs +0 -177
- package/dist/maps/column-navigation/svg/layers.cjs.map +0 -1
- package/dist/maps/column-navigation/svg/layers.d.ts +0 -54
- package/dist/maps/column-navigation/svg/layers.js +0 -174
- package/dist/maps/column-navigation/svg/layers.js.map +0 -1
- package/dist/maps/column-navigation/utils/keyboard-navigation.cjs +0 -50
- package/dist/maps/column-navigation/utils/keyboard-navigation.cjs.map +0 -1
- package/dist/maps/column-navigation/utils/keyboard-navigation.d.ts +0 -10
- package/dist/maps/column-navigation/utils/keyboard-navigation.js +0 -50
- package/dist/maps/column-navigation/utils/keyboard-navigation.js.map +0 -1
- package/dist/maps/index.d.ts +0 -4
- package/dist/maps/inset-map/index.cjs +0 -71
- package/dist/maps/inset-map/index.cjs.map +0 -1
- package/dist/maps/inset-map/index.d.ts +0 -16
- package/dist/maps/inset-map/index.js +0 -69
- package/dist/maps/inset-map/index.js.map +0 -1
- package/dist/maps/layers/columns.cjs +0 -165
- package/dist/maps/layers/columns.cjs.map +0 -1
- package/dist/maps/layers/columns.d.ts +0 -28
- package/dist/maps/layers/columns.js +0 -165
- package/dist/maps/layers/columns.js.map +0 -1
- package/dist/maps/layers/index.d.ts +0 -2
- package/dist/maps/layers/units.cjs +0 -207
- package/dist/maps/layers/units.cjs.map +0 -1
- package/dist/maps/layers/units.d.ts +0 -14
- package/dist/maps/layers/units.js +0 -204
- package/dist/maps/layers/units.js.map +0 -1
- package/dist/units/colors.cjs +0 -115
- package/dist/units/colors.cjs.map +0 -1
- package/dist/units/colors.d.ts +0 -20
- package/dist/units/colors.js +0 -113
- package/dist/units/colors.js.map +0 -1
- package/dist/units/resolvers.cjs +0 -125
- package/dist/units/resolvers.cjs.map +0 -1
- package/dist/units/resolvers.d.ts +0 -8
- package/dist/units/resolvers.js +0 -125
- package/dist/units/resolvers.js.map +0 -1
- package/src/maps/column-correlation/column-correlation-map.stories.ts +0 -108
- package/src/maps/column-correlation/core.ts +0 -342
- package/src/maps/column-correlation/index.ts +0 -2
- package/src/maps/column-correlation/state.ts +0 -315
- package/src/maps/column-navigation/index.ts +0 -2
- package/src/maps/column-navigation/mapbox/column-navigation-map.stories.ts +0 -278
- package/src/maps/column-navigation/mapbox/index.ts +0 -276
- package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +0 -133
- package/src/maps/column-navigation/mapbox/state.ts +0 -119
- package/src/maps/column-navigation/svg/animated.ts +0 -78
- package/src/maps/column-navigation/svg/column-navigation-svg-map.stories.ts +0 -46
- package/src/maps/column-navigation/svg/data-fetcher.ts +0 -34
- package/src/maps/column-navigation/svg/index.ts +0 -96
- package/src/maps/column-navigation/svg/layers.ts +0 -233
- package/src/maps/column-navigation/utils/keyboard-navigation.ts +0 -58
- package/src/maps/index.ts +0 -4
- package/src/maps/inset-map/index.ts +0 -87
- package/src/maps/inset-map/inset-map.stories.ts +0 -20
- package/src/maps/layers/columns.ts +0 -216
- package/src/maps/layers/index.ts +0 -2
- package/src/maps/layers/units.ts +0 -286
- package/src/maps/unit-map.stories.ts +0 -79
- package/src/units/colors.ts +0 -183
- package/src/units/resolvers.ts +0 -141
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sources":["../../../../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 useMemo,\n} from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport {\n useMacrostratColumns,\n useMacrostratStore,\n} from \"@macrostrat/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 columnIDs?: number[] | 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 columnIDs,\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 let _columns = columns ?? useMacrostratColumns(projectID, inProcess);\n\n // filter columns if specified\n if (columnIDs?.length > 0) {\n _columns = useMemo(() => {\n return _columns?.filter((d) => columnIDs.includes(d.properties.col_id));\n }, [columnIDs, _columns]);\n }\n\n useEffect(() => {\n if (_columns?.length > 0) {\n store.setState({ columns: _columns, selectedColumn });\n }\n }, [_columns]);\n // Update selected column 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 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":["columns"],"mappings":";;;;AAoCA,MAAM,yBAAyB;AAAA,EAC7B;AACF;AAEO,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AACP,qBAAmB,CAAC,MAAM,EAAE,UAAU;AAEzD,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM;AAC7B,WAAO,OAAwB,CAAC,KAAK,QAAyB;AAC5D,aAAO;AAAA,QACL,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa,UAAyB;AACpC,cAAI,EAAE,gBAAgB,UAAU,eAAe,MAAM;AACrD,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,2BAAiB,UAAU,MAAM;AAAA,QACnC;AAAA,QACA,iBAAiB,UAAyB;AACxC,cAAI,EAAE,eAAe,UAAU;AAC/B,gBAAM,EAAE,SAAAA,SAAAA,IAAY,IAAA;AACpB,gBAAM,SAASA,UAAS,KAAK,CAAC,MAAM,EAAE,MAAM,QAAQ;AACpD,0BAAgB,UAAU,MAAM;AAAA,QAClC;AAAA,MAAA;AAAA,IAEJ,CAAC;AAAA,EACH,CAAC;AASD,MAAI,WAAW,WAAW,qBAAqB,WAAW,SAAS;AAGnE,MAAI,WAAW,SAAS,GAAG;AACzB,eAAW,QAAQ,MAAM;AACvB,aAAO,UAAU,OAAO,CAAC,MAAM,UAAU,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,IACxE,GAAG,CAAC,WAAW,QAAQ,CAAC;AAAA,EAC1B;AAEA,YAAU,MAAM;AACd,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,SAAS,EAAE,SAAS,UAAU,gBAAgB;AAAA,IACtD;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAIb,YAAU,MAAM;AACd,UAAM,EAAE,cAAc,gBAAgB,wBAAA,IACpC,MAAM,SAAA;AACR,QAAI,kBAAkB,yBAAyB;AAC7C;AAAA,IACF;AACA,iBAAa,cAAc;AAAA,EAC7B,GAAG,CAAC,cAAc,CAAC;AAEnB,SAAO,EAAE,uBAAuB,UAAU,EAAE,OAAO,MAAA,GAAS,QAAQ;AACtE;AAEO,SAAS,yBACd,UACA;AACA,QAAM,WAAW,WAAW,sBAAsB;AAClD,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACA,SAAO,SAAS,UAAU,QAAQ;AACpC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const AnimatedMapView: (props: any) => import('react').FunctionComponentElement<any>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const dataProvider = require("@macrostrat/data-provider");
|
|
4
|
-
const uiComponents = require("@macrostrat/ui-components");
|
|
5
|
-
function useColumnFeatures({
|
|
6
|
-
status_code,
|
|
7
|
-
project_id,
|
|
8
|
-
format = "geojson"
|
|
9
|
-
}) {
|
|
10
|
-
const fetch = dataProvider.useMacrostratFetch();
|
|
11
|
-
let statusCode = ["active"];
|
|
12
|
-
if (status_code == "in process") {
|
|
13
|
-
statusCode.push("in process");
|
|
14
|
-
}
|
|
15
|
-
return uiComponents.useAsyncMemo(async () => {
|
|
16
|
-
return await dataProvider.fetchAllColumns({
|
|
17
|
-
projectID: project_id,
|
|
18
|
-
statusCode,
|
|
19
|
-
format,
|
|
20
|
-
fetch
|
|
21
|
-
});
|
|
22
|
-
}, [project_id, status_code, format]);
|
|
23
|
-
}
|
|
24
|
-
exports.useColumnFeatures = useColumnFeatures;
|
|
25
|
-
//# sourceMappingURL=data-fetcher.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-fetcher.cjs","sources":["../../../../src/maps/column-navigation/svg/data-fetcher.ts"],"sourcesContent":["import {\n ColumnStatusCode,\n fetchAllColumns,\n useMacrostratFetch,\n} from \"@macrostrat/data-provider\";\nimport { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nexport function useColumnFeatures({\n status_code,\n project_id,\n format = \"geojson\",\n}: {\n apiRoute?: string;\n status_code?: string;\n project_id?: number;\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n}) {\n /** Legacy fetcher for column features */\n const fetch = useMacrostratFetch();\n\n let statusCode: ColumnStatusCode[] = [\"active\"];\n if (status_code == \"in process\") {\n statusCode.push(\"in process\");\n }\n\n return useAsyncMemo(async () => {\n return await fetchAllColumns({\n projectID: project_id,\n statusCode: statusCode,\n format,\n fetch,\n });\n }, [project_id, status_code, format]);\n}\n"],"names":["useMacrostratFetch","useAsyncMemo","fetchAllColumns"],"mappings":";;;;AAOO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAKG;AAED,QAAM,QAAQA,aAAAA,mBAAA;AAEd,MAAI,aAAiC,CAAC,QAAQ;AAC9C,MAAI,eAAe,cAAc;AAC/B,eAAW,KAAK,YAAY;AAAA,EAC9B;AAEA,SAAOC,aAAAA,aAAa,YAAY;AAC9B,WAAO,MAAMC,aAAAA,gBAAgB;AAAA,MAC3B,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAC,YAAY,aAAa,MAAM,CAAC;AACtC;;"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { useMacrostratFetch, fetchAllColumns } from "@macrostrat/data-provider";
|
|
2
|
-
import { useAsyncMemo } from "@macrostrat/ui-components";
|
|
3
|
-
function useColumnFeatures({
|
|
4
|
-
status_code,
|
|
5
|
-
project_id,
|
|
6
|
-
format = "geojson"
|
|
7
|
-
}) {
|
|
8
|
-
const fetch = useMacrostratFetch();
|
|
9
|
-
let statusCode = ["active"];
|
|
10
|
-
if (status_code == "in process") {
|
|
11
|
-
statusCode.push("in process");
|
|
12
|
-
}
|
|
13
|
-
return useAsyncMemo(async () => {
|
|
14
|
-
return await fetchAllColumns({
|
|
15
|
-
projectID: project_id,
|
|
16
|
-
statusCode,
|
|
17
|
-
format,
|
|
18
|
-
fetch
|
|
19
|
-
});
|
|
20
|
-
}, [project_id, status_code, format]);
|
|
21
|
-
}
|
|
22
|
-
export {
|
|
23
|
-
useColumnFeatures
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data-fetcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-fetcher.js","sources":["../../../../src/maps/column-navigation/svg/data-fetcher.ts"],"sourcesContent":["import {\n ColumnStatusCode,\n fetchAllColumns,\n useMacrostratFetch,\n} from \"@macrostrat/data-provider\";\nimport { useAsyncMemo } from \"@macrostrat/ui-components\";\n\nexport function useColumnFeatures({\n status_code,\n project_id,\n format = \"geojson\",\n}: {\n apiRoute?: string;\n status_code?: string;\n project_id?: number;\n format?: \"geojson\" | \"topojson\" | \"geojson_bare\";\n}) {\n /** Legacy fetcher for column features */\n const fetch = useMacrostratFetch();\n\n let statusCode: ColumnStatusCode[] = [\"active\"];\n if (status_code == \"in process\") {\n statusCode.push(\"in process\");\n }\n\n return useAsyncMemo(async () => {\n return await fetchAllColumns({\n projectID: project_id,\n statusCode: statusCode,\n format,\n fetch,\n });\n }, [project_id, status_code, format]);\n}\n"],"names":[],"mappings":";;AAOO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,SAAS;AACX,GAKG;AAED,QAAM,QAAQ,mBAAA;AAEd,MAAI,aAAiC,CAAC,QAAQ;AAC9C,MAAI,eAAe,cAAc;AAC/B,eAAW,KAAK,YAAY;AAAA,EAC9B;AAEA,SAAO,aAAa,YAAY;AAC9B,WAAO,MAAM,gBAAgB;AAAA,MAC3B,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAC,YAAY,aAAa,MAAM,CAAC;AACtC;"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const React = require("react");
|
|
4
|
-
const h = require("@macrostrat/hyper");
|
|
5
|
-
const svgMapComponents = require("@macrostrat/svg-map-components");
|
|
6
|
-
const d3Geo = require("d3-geo");
|
|
7
|
-
const uiComponents = require("@macrostrat/ui-components");
|
|
8
|
-
const layers = require("./layers.cjs");
|
|
9
|
-
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
10
|
-
const h__default = /* @__PURE__ */ _interopDefault(h);
|
|
11
|
-
function ResizableMapFrame(props) {
|
|
12
|
-
const { center, children, style, margin, className, allowZoom, ...rest } = props;
|
|
13
|
-
let { scale } = props;
|
|
14
|
-
const ref = React.useRef(null);
|
|
15
|
-
const sz = uiComponents.useElementSize(ref);
|
|
16
|
-
const { width, height } = sz ?? { width: 0, height: 0 };
|
|
17
|
-
if (scale == null) {
|
|
18
|
-
scale = Math.min(width, height) + 2 * margin;
|
|
19
|
-
}
|
|
20
|
-
let zoomScaleExtent = null;
|
|
21
|
-
if (allowZoom) {
|
|
22
|
-
zoomScaleExtent = [
|
|
23
|
-
0.1 * Math.min(width, height),
|
|
24
|
-
2 * Math.max(width, height)
|
|
25
|
-
];
|
|
26
|
-
}
|
|
27
|
-
return h__default.default("div.map-area", { ref, style, className }, [
|
|
28
|
-
h__default.default(
|
|
29
|
-
svgMapComponents.Globe,
|
|
30
|
-
{
|
|
31
|
-
width,
|
|
32
|
-
height,
|
|
33
|
-
margin,
|
|
34
|
-
center,
|
|
35
|
-
allowDrag: true,
|
|
36
|
-
allowZoom,
|
|
37
|
-
keepNorthUp: true,
|
|
38
|
-
zoomScaleExtent,
|
|
39
|
-
...rest,
|
|
40
|
-
scale
|
|
41
|
-
},
|
|
42
|
-
[h__default.default(svgMapComponents.LandLayer), children]
|
|
43
|
-
)
|
|
44
|
-
]);
|
|
45
|
-
}
|
|
46
|
-
function ColumnNavigationSVGMap(props) {
|
|
47
|
-
const {
|
|
48
|
-
currentColumn,
|
|
49
|
-
setCurrentColumn,
|
|
50
|
-
children,
|
|
51
|
-
style,
|
|
52
|
-
margin = 10,
|
|
53
|
-
scale,
|
|
54
|
-
className,
|
|
55
|
-
showInProcessColumns = false,
|
|
56
|
-
showDebugLayers = false,
|
|
57
|
-
center,
|
|
58
|
-
...rest
|
|
59
|
-
} = props;
|
|
60
|
-
let _center = center ?? [-100, 38];
|
|
61
|
-
if (currentColumn != null) {
|
|
62
|
-
_center = d3Geo.geoCentroid(currentColumn);
|
|
63
|
-
}
|
|
64
|
-
return h__default.default(
|
|
65
|
-
ResizableMapFrame,
|
|
66
|
-
{ center: _center, style, margin, scale, className },
|
|
67
|
-
[
|
|
68
|
-
children,
|
|
69
|
-
h__default.default(layers.Columns, {
|
|
70
|
-
onChange: setCurrentColumn,
|
|
71
|
-
col_id: currentColumn?.properties.col_id,
|
|
72
|
-
showDebugLayers,
|
|
73
|
-
...rest
|
|
74
|
-
}),
|
|
75
|
-
h__default.default.if(showInProcessColumns)(layers.Columns, {
|
|
76
|
-
onChange: setCurrentColumn,
|
|
77
|
-
col_id: currentColumn?.properties.col_id,
|
|
78
|
-
status_code: "in process",
|
|
79
|
-
color: "rgba(200,150,150, 0.5)",
|
|
80
|
-
...rest
|
|
81
|
-
}),
|
|
82
|
-
h__default.default.if(currentColumn != null)(layers.CurrentColumn, { feature: currentColumn })
|
|
83
|
-
]
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
exports.ColumnCenters = layers.ColumnCenters;
|
|
87
|
-
exports.ColumnFeatures = layers.ColumnFeatures;
|
|
88
|
-
exports.ColumnKeyboardNavigation = layers.ColumnKeyboardNavigation;
|
|
89
|
-
exports.Columns = layers.Columns;
|
|
90
|
-
exports.CurrentColumn = layers.CurrentColumn;
|
|
91
|
-
exports.MeasurementsLayer = layers.MeasurementsLayer;
|
|
92
|
-
exports.ColumnNavigationSVGMap = ColumnNavigationSVGMap;
|
|
93
|
-
exports.ResizableMapFrame = ResizableMapFrame;
|
|
94
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children],\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ],\n );\n}\n\nexport * from \"./layers\";\n"],"names":["useRef","useElementSize","h","Globe","LandLayer","geoCentroid","Columns","CurrentColumn"],"mappings":";;;;;;;;;;AAQO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,WAAW,WAAW,GAAG,KAAA,IAChE;AACF,MAAI,EAAE,UAAU;AAChB,QAAM,MAAMA,MAAAA,OAAO,IAAI;AACvB,QAAM,KAAKC,aAAAA,eAAe,GAAG;AAC7B,QAAM,EAAE,OAAO,WAAW,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AACpD,MAAI,SAAS,MAAM;AACjB,YAAQ,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACxC;AAEA,MAAI,kBAAkB;AAEtB,MAAI,WAAW;AACb,sBAAkB;AAAA,MAChB,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,MAC5B,IAAI,KAAK,IAAI,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAEA,SAAOC,WAAAA,QAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClDA,WAAAA;AAAAA,MACEC,iBAAAA;AAAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,MAEF,CAACD,WAAAA,QAAEE,iBAAAA,SAAS,GAAG,QAAQ;AAAA,IAAA;AAAA,EACzB,CACD;AACH;AAKO,SAAS,uBAAuB,OAAO;AAC5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,MAAI,UAA6B,UAAU,CAAC,MAAM,EAAE;AAEpD,MAAI,iBAAiB,MAAM;AACzB,cAAUC,MAAAA,YAAY,aAAa;AAAA,EACrC;AAEA,SAAOH,WAAAA;AAAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACAA,WAAAA,QAAEI,OAAAA,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACDJ,WAAAA,QAAE,GAAG,oBAAoB,EAAEI,gBAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACDJ,WAAAA,QAAE,GAAG,iBAAiB,IAAI,EAAEK,sBAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;;;;;;;;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare function ResizableMapFrame(props: any): import('react').ReactElement<{
|
|
2
|
-
ref: import('react').RefObject<null>;
|
|
3
|
-
style: any;
|
|
4
|
-
className: any;
|
|
5
|
-
}, string | import('react').JSXElementConstructor<any>>;
|
|
6
|
-
type ColumnNavigationSVGMapProps = any;
|
|
7
|
-
export type { ColumnNavigationSVGMapProps };
|
|
8
|
-
export declare function ColumnNavigationSVGMap(props: any): import('react').FunctionComponentElement<any>;
|
|
9
|
-
export * from './layers';
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import h from "@macrostrat/hyper";
|
|
3
|
-
import { Globe, LandLayer } from "@macrostrat/svg-map-components";
|
|
4
|
-
import { geoCentroid } from "d3-geo";
|
|
5
|
-
import { useElementSize } from "@macrostrat/ui-components";
|
|
6
|
-
import { Columns, CurrentColumn } from "./layers.js";
|
|
7
|
-
import { ColumnCenters, ColumnFeatures, ColumnKeyboardNavigation, MeasurementsLayer } from "./layers.js";
|
|
8
|
-
function ResizableMapFrame(props) {
|
|
9
|
-
const { center, children, style, margin, className, allowZoom, ...rest } = props;
|
|
10
|
-
let { scale } = props;
|
|
11
|
-
const ref = useRef(null);
|
|
12
|
-
const sz = useElementSize(ref);
|
|
13
|
-
const { width, height } = sz ?? { width: 0, height: 0 };
|
|
14
|
-
if (scale == null) {
|
|
15
|
-
scale = Math.min(width, height) + 2 * margin;
|
|
16
|
-
}
|
|
17
|
-
let zoomScaleExtent = null;
|
|
18
|
-
if (allowZoom) {
|
|
19
|
-
zoomScaleExtent = [
|
|
20
|
-
0.1 * Math.min(width, height),
|
|
21
|
-
2 * Math.max(width, height)
|
|
22
|
-
];
|
|
23
|
-
}
|
|
24
|
-
return h("div.map-area", { ref, style, className }, [
|
|
25
|
-
h(
|
|
26
|
-
Globe,
|
|
27
|
-
{
|
|
28
|
-
width,
|
|
29
|
-
height,
|
|
30
|
-
margin,
|
|
31
|
-
center,
|
|
32
|
-
allowDrag: true,
|
|
33
|
-
allowZoom,
|
|
34
|
-
keepNorthUp: true,
|
|
35
|
-
zoomScaleExtent,
|
|
36
|
-
...rest,
|
|
37
|
-
scale
|
|
38
|
-
},
|
|
39
|
-
[h(LandLayer), children]
|
|
40
|
-
)
|
|
41
|
-
]);
|
|
42
|
-
}
|
|
43
|
-
function ColumnNavigationSVGMap(props) {
|
|
44
|
-
const {
|
|
45
|
-
currentColumn,
|
|
46
|
-
setCurrentColumn,
|
|
47
|
-
children,
|
|
48
|
-
style,
|
|
49
|
-
margin = 10,
|
|
50
|
-
scale,
|
|
51
|
-
className,
|
|
52
|
-
showInProcessColumns = false,
|
|
53
|
-
showDebugLayers = false,
|
|
54
|
-
center,
|
|
55
|
-
...rest
|
|
56
|
-
} = props;
|
|
57
|
-
let _center = center ?? [-100, 38];
|
|
58
|
-
if (currentColumn != null) {
|
|
59
|
-
_center = geoCentroid(currentColumn);
|
|
60
|
-
}
|
|
61
|
-
return h(
|
|
62
|
-
ResizableMapFrame,
|
|
63
|
-
{ center: _center, style, margin, scale, className },
|
|
64
|
-
[
|
|
65
|
-
children,
|
|
66
|
-
h(Columns, {
|
|
67
|
-
onChange: setCurrentColumn,
|
|
68
|
-
col_id: currentColumn?.properties.col_id,
|
|
69
|
-
showDebugLayers,
|
|
70
|
-
...rest
|
|
71
|
-
}),
|
|
72
|
-
h.if(showInProcessColumns)(Columns, {
|
|
73
|
-
onChange: setCurrentColumn,
|
|
74
|
-
col_id: currentColumn?.properties.col_id,
|
|
75
|
-
status_code: "in process",
|
|
76
|
-
color: "rgba(200,150,150, 0.5)",
|
|
77
|
-
...rest
|
|
78
|
-
}),
|
|
79
|
-
h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn })
|
|
80
|
-
]
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
export {
|
|
84
|
-
ColumnCenters,
|
|
85
|
-
ColumnFeatures,
|
|
86
|
-
ColumnKeyboardNavigation,
|
|
87
|
-
ColumnNavigationSVGMap,
|
|
88
|
-
Columns,
|
|
89
|
-
CurrentColumn,
|
|
90
|
-
MeasurementsLayer,
|
|
91
|
-
ResizableMapFrame
|
|
92
|
-
};
|
|
93
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/maps/column-navigation/svg/index.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport h from \"@macrostrat/hyper\";\nimport { Globe, LandLayer } from \"@macrostrat/svg-map-components\";\nimport { geoCentroid } from \"d3-geo\";\nimport { useElementSize } from \"@macrostrat/ui-components\";\nimport { Columns, CurrentColumn } from \"./layers\";\nimport type { LngLatLike } from \"mapbox-gl\";\n\nexport function ResizableMapFrame(props) {\n const { center, children, style, margin, className, allowZoom, ...rest } =\n props;\n let { scale } = props;\n const ref = useRef(null);\n const sz = useElementSize(ref);\n const { width, height } = sz ?? { width: 0, height: 0 };\n if (scale == null) {\n scale = Math.min(width, height) + 2 * margin;\n }\n\n let zoomScaleExtent = null;\n\n if (allowZoom) {\n zoomScaleExtent = [\n 0.1 * Math.min(width, height),\n 2 * Math.max(width, height),\n ];\n }\n\n return h(\"div.map-area\", { ref, style, className }, [\n h(\n Globe,\n {\n width,\n height,\n margin,\n center,\n allowDrag: true,\n allowZoom,\n keepNorthUp: true,\n zoomScaleExtent,\n ...rest,\n scale,\n },\n [h(LandLayer), children],\n ),\n ]);\n}\n\ntype ColumnNavigationSVGMapProps = any;\nexport type { ColumnNavigationSVGMapProps };\n\nexport function ColumnNavigationSVGMap(props) {\n const {\n currentColumn,\n setCurrentColumn,\n children,\n style,\n margin = 10,\n scale,\n className,\n showInProcessColumns = false,\n showDebugLayers = false,\n center,\n ...rest\n } = props;\n\n let _center: LngLatLike | null = center ?? [-100, 38];\n // Override center if currentColumn is set\n if (currentColumn != null) {\n _center = geoCentroid(currentColumn);\n }\n\n return h(\n ResizableMapFrame,\n { center: _center, style, margin, scale, className },\n [\n children,\n h(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n showDebugLayers,\n ...rest,\n }),\n h.if(showInProcessColumns)(Columns, {\n onChange: setCurrentColumn,\n col_id: currentColumn?.properties.col_id,\n status_code: \"in process\",\n color: \"rgba(200,150,150, 0.5)\",\n ...rest,\n }),\n h.if(currentColumn != null)(CurrentColumn, { feature: currentColumn }),\n ],\n );\n}\n\nexport * from \"./layers\";\n"],"names":[],"mappings":";;;;;;;AAQO,SAAS,kBAAkB,OAAO;AACvC,QAAM,EAAE,QAAQ,UAAU,OAAO,QAAQ,WAAW,WAAW,GAAG,KAAA,IAChE;AACF,MAAI,EAAE,UAAU;AAChB,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,KAAK,eAAe,GAAG;AAC7B,QAAM,EAAE,OAAO,WAAW,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAA;AACpD,MAAI,SAAS,MAAM;AACjB,YAAQ,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACxC;AAEA,MAAI,kBAAkB;AAEtB,MAAI,WAAW;AACb,sBAAkB;AAAA,MAChB,MAAM,KAAK,IAAI,OAAO,MAAM;AAAA,MAC5B,IAAI,KAAK,IAAI,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9B;AAEA,SAAO,EAAE,gBAAgB,EAAE,KAAK,OAAO,aAAa;AAAA,IAClD;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA,GAAG;AAAA,QACH;AAAA,MAAA;AAAA,MAEF,CAAC,EAAE,SAAS,GAAG,QAAQ;AAAA,IAAA;AAAA,EACzB,CACD;AACH;AAKO,SAAS,uBAAuB,OAAO;AAC5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,MAAI,UAA6B,UAAU,CAAC,MAAM,EAAE;AAEpD,MAAI,iBAAiB,MAAM;AACzB,cAAU,YAAY,aAAa;AAAA,EACrC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAA;AAAA,IACzC;AAAA,MACE;AAAA,MACA,EAAE,SAAS;AAAA,QACT,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,oBAAoB,EAAE,SAAS;AAAA,QAClC,UAAU;AAAA,QACV,QAAQ,eAAe,WAAW;AAAA,QAClC,aAAa;AAAA,QACb,OAAO;AAAA,QACP,GAAG;AAAA,MAAA,CACJ;AAAA,MACD,EAAE,GAAG,iBAAiB,IAAI,EAAE,eAAe,EAAE,SAAS,cAAA,CAAe;AAAA,IAAA;AAAA,EACvE;AAEJ;"}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const h = require("@macrostrat/hyper");
|
|
4
|
-
const svgMapComponents = require("@macrostrat/svg-map-components");
|
|
5
|
-
const uiComponents = require("@macrostrat/ui-components");
|
|
6
|
-
const chroma = require("chroma-js");
|
|
7
|
-
const React = require("react");
|
|
8
|
-
const dataFetcher = require("./data-fetcher.cjs");
|
|
9
|
-
const keyboardNavigation = require("../utils/keyboard-navigation.cjs");
|
|
10
|
-
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
11
|
-
const h__default = /* @__PURE__ */ _interopDefault(h);
|
|
12
|
-
const chroma__default = /* @__PURE__ */ _interopDefault(chroma);
|
|
13
|
-
const defaultStyle = {
|
|
14
|
-
fill: "rgb(239, 180, 249)",
|
|
15
|
-
stroke: "magenta"
|
|
16
|
-
};
|
|
17
|
-
function MeasurementsLayer(props) {
|
|
18
|
-
const { style = defaultStyle, ...params } = props;
|
|
19
|
-
const res = uiComponents.useAPIResult("/measurements", {
|
|
20
|
-
...params,
|
|
21
|
-
format: "geojson",
|
|
22
|
-
response: "light"
|
|
23
|
-
});
|
|
24
|
-
if (res == null) return null;
|
|
25
|
-
return h__default.default(svgMapComponents.FeatureLayer, {
|
|
26
|
-
useCanvas: false,
|
|
27
|
-
style,
|
|
28
|
-
features: res.features?.filter((d) => d.properties.unit_id != null) ?? []
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
function ColumnFeatures(props) {
|
|
32
|
-
const {
|
|
33
|
-
features,
|
|
34
|
-
onClick,
|
|
35
|
-
color = "rgba(150,150,150, 1)",
|
|
36
|
-
singleFeature = true
|
|
37
|
-
} = props;
|
|
38
|
-
const c = chroma__default.default(color);
|
|
39
|
-
return h__default.default(
|
|
40
|
-
svgMapComponents.FeatureLayer,
|
|
41
|
-
{
|
|
42
|
-
className: "columns",
|
|
43
|
-
useCanvas: onClick == null,
|
|
44
|
-
style: {
|
|
45
|
-
fill: c.alpha(0.2).css(),
|
|
46
|
-
stroke: c.alpha(0.4).css()
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
features?.map((f) => {
|
|
50
|
-
return h__default.default(svgMapComponents.Feature, {
|
|
51
|
-
id: f.id ?? f.properties.col_id,
|
|
52
|
-
onClick,
|
|
53
|
-
feature: f
|
|
54
|
-
});
|
|
55
|
-
})
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
function ColumnKeyboardNavigation(props) {
|
|
59
|
-
const {
|
|
60
|
-
features = [],
|
|
61
|
-
col_id = null,
|
|
62
|
-
onChange,
|
|
63
|
-
showLayers = false,
|
|
64
|
-
...projectArgs
|
|
65
|
-
} = props;
|
|
66
|
-
const { projection } = React.useContext(svgMapComponents.MapContext);
|
|
67
|
-
const { centroids, tri } = React.useMemo(
|
|
68
|
-
() => keyboardNavigation.buildTriangulation(features),
|
|
69
|
-
[features]
|
|
70
|
-
);
|
|
71
|
-
const currentIndex = React.useMemo(() => {
|
|
72
|
-
return features.findIndex((d) => d.properties.col_id == col_id);
|
|
73
|
-
}, [features, col_id]);
|
|
74
|
-
const neighbors = tri.delaunay.neighbors[currentIndex];
|
|
75
|
-
const keyMapping = React.useMemo(() => {
|
|
76
|
-
return keyboardNavigation.buildKeyMapping(neighbors, centroids, currentIndex, projection);
|
|
77
|
-
}, [neighbors, currentIndex]);
|
|
78
|
-
uiComponents.useKeyHandler(
|
|
79
|
-
(event) => {
|
|
80
|
-
const nextColumnIx = keyMapping[event.keyCode];
|
|
81
|
-
if (nextColumnIx == null) return;
|
|
82
|
-
onChange(features[nextColumnIx]);
|
|
83
|
-
},
|
|
84
|
-
[keyMapping]
|
|
85
|
-
);
|
|
86
|
-
if (neighbors == null) return null;
|
|
87
|
-
const neighborFeatures = neighbors.map((d) => features[d]);
|
|
88
|
-
return h__default.default.if(showLayers)([
|
|
89
|
-
h__default.default(svgMapComponents.FeatureLayer, {
|
|
90
|
-
features: tri.links().features,
|
|
91
|
-
useCanvas: false,
|
|
92
|
-
style: {
|
|
93
|
-
stroke: "purple",
|
|
94
|
-
fill: "transparent"
|
|
95
|
-
}
|
|
96
|
-
}),
|
|
97
|
-
h__default.default(svgMapComponents.FeatureLayer, {
|
|
98
|
-
features: neighborFeatures,
|
|
99
|
-
useCanvas: false,
|
|
100
|
-
style: {
|
|
101
|
-
stroke: "rgb(93, 101, 212)",
|
|
102
|
-
strokeWidth: 3,
|
|
103
|
-
fill: "rgba(93, 101, 212, 0.5)"
|
|
104
|
-
}
|
|
105
|
-
}),
|
|
106
|
-
h__default.default(svgMapComponents.FeatureLayer, {
|
|
107
|
-
features: [
|
|
108
|
-
{
|
|
109
|
-
type: "Feature",
|
|
110
|
-
geometry: {
|
|
111
|
-
type: "MultiPoint",
|
|
112
|
-
coordinates: centroids
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
],
|
|
116
|
-
useCanvas: false,
|
|
117
|
-
style: {
|
|
118
|
-
r: 1,
|
|
119
|
-
fill: "purple"
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
]);
|
|
123
|
-
}
|
|
124
|
-
const Columns = (props) => {
|
|
125
|
-
const {
|
|
126
|
-
apiRoute = "/columns",
|
|
127
|
-
onChange,
|
|
128
|
-
col_id = null,
|
|
129
|
-
status_code,
|
|
130
|
-
project_id,
|
|
131
|
-
color,
|
|
132
|
-
filterColumns,
|
|
133
|
-
showDebugLayers = false,
|
|
134
|
-
format = "topojson"
|
|
135
|
-
} = props;
|
|
136
|
-
let features = dataFetcher.useColumnFeatures({
|
|
137
|
-
status_code,
|
|
138
|
-
project_id,
|
|
139
|
-
format
|
|
140
|
-
});
|
|
141
|
-
if (features == null) return null;
|
|
142
|
-
if (filterColumns != null) {
|
|
143
|
-
features = features.filter(filterColumns);
|
|
144
|
-
}
|
|
145
|
-
return h__default.default([
|
|
146
|
-
h__default.default(ColumnKeyboardNavigation, {
|
|
147
|
-
features,
|
|
148
|
-
col_id,
|
|
149
|
-
onChange,
|
|
150
|
-
status_code,
|
|
151
|
-
project_id,
|
|
152
|
-
showLayers: showDebugLayers
|
|
153
|
-
}),
|
|
154
|
-
h__default.default(ColumnFeatures, { features, onClick: onChange, color })
|
|
155
|
-
]);
|
|
156
|
-
};
|
|
157
|
-
const ColumnCenters = (props) => {
|
|
158
|
-
return h__default.default(Columns, { apiRoute: "/defs/columns", ...props });
|
|
159
|
-
};
|
|
160
|
-
const CurrentColumn = (props) => {
|
|
161
|
-
const { feature } = props;
|
|
162
|
-
return h__default.default(svgMapComponents.FeatureLayer, {
|
|
163
|
-
features: [feature],
|
|
164
|
-
style: {
|
|
165
|
-
fill: "rgba(255,0,0,0.4)",
|
|
166
|
-
stroke: "rgba(255,0,0,0.6)",
|
|
167
|
-
strokeWidth: 2
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
};
|
|
171
|
-
exports.ColumnCenters = ColumnCenters;
|
|
172
|
-
exports.ColumnFeatures = ColumnFeatures;
|
|
173
|
-
exports.ColumnKeyboardNavigation = ColumnKeyboardNavigation;
|
|
174
|
-
exports.Columns = Columns;
|
|
175
|
-
exports.CurrentColumn = CurrentColumn;
|
|
176
|
-
exports.MeasurementsLayer = MeasurementsLayer;
|
|
177
|
-
//# sourceMappingURL=layers.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layers.cjs","sources":["../../../../src/maps/column-navigation/svg/layers.ts"],"sourcesContent":["import h from \"@macrostrat/hyper\";\nimport {\n Feature,\n FeatureLayer,\n MapContext,\n} from \"@macrostrat/svg-map-components\";\nimport { useAPIResult, useKeyHandler } from \"@macrostrat/ui-components\";\nimport chroma from \"chroma-js\";\nimport { ExtendedFeature } from \"d3-geo\";\nimport { Polygon } from \"geojson\";\nimport { useContext, useMemo } from \"react\";\nimport { useColumnFeatures } from \"./data-fetcher\";\nimport {\n buildKeyMapping,\n buildTriangulation,\n} from \"../utils/keyboard-navigation\";\n\nconst defaultStyle = {\n fill: \"rgb(239, 180, 249)\",\n stroke: \"magenta\",\n};\n\nexport function MeasurementsLayer(props) {\n const { style = defaultStyle, ...params } = props;\n const res: any = useAPIResult(\"/measurements\", {\n ...params,\n format: \"geojson\",\n response: \"light\",\n });\n if (res == null) return null;\n\n return h(FeatureLayer, {\n useCanvas: false,\n style,\n features: res.features?.filter((d) => d.properties.unit_id != null) ?? [],\n });\n}\n\ntype ColumnProps = { col_id: number };\n\ntype ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;\n\nfunction ColumnFeatures(props) {\n const {\n features,\n onClick,\n color = \"rgba(150,150,150, 1)\",\n singleFeature = true,\n } = props;\n\n const c = chroma(color);\n\n return h(\n FeatureLayer,\n {\n className: \"columns\",\n useCanvas: onClick == null,\n style: {\n fill: c.alpha(0.2).css(),\n stroke: c.alpha(0.4).css(),\n },\n },\n features?.map((f) => {\n return h(Feature, {\n id: f.id ?? f.properties.col_id,\n onClick,\n feature: f,\n });\n }),\n );\n}\n\nenum MacrostratStatusCode {\n InProcess = \"in process\",\n}\n\ninterface ColumnNavProps {\n col_id: number;\n status_code?: MacrostratStatusCode;\n project_id?: number;\n onChange(col_id: number): void;\n}\n\ninterface KeyboardNavProps extends ColumnNavProps {\n features: ColumnFeature[];\n showLayers: boolean;\n}\n\nfunction ColumnKeyboardNavigation(props: KeyboardNavProps) {\n /** Keyboard navigation of columns using a Delaunay triangulation */\n const {\n features = [],\n col_id = null,\n onChange,\n showLayers = false,\n ...projectArgs\n } = props;\n const { projection } = useContext(MapContext);\n const { centroids, tri } = useMemo(\n () => buildTriangulation(features),\n [features],\n );\n\n const currentIndex = useMemo(() => {\n return features.findIndex((d) => d.properties.col_id == col_id);\n }, [features, col_id]);\n\n const neighbors = tri.delaunay.neighbors[currentIndex];\n\n const keyMapping = useMemo(() => {\n return buildKeyMapping(neighbors, centroids, currentIndex, projection);\n }, [neighbors, currentIndex]);\n\n useKeyHandler(\n (event) => {\n const nextColumnIx = keyMapping[event.keyCode];\n if (nextColumnIx == null) return;\n // @ts-ignore\n onChange(features[nextColumnIx]);\n },\n [keyMapping],\n );\n\n if (neighbors == null) return null;\n const neighborFeatures = neighbors.map((d) => features[d]);\n\n return h.if(showLayers)([\n h(FeatureLayer, {\n features: tri.links().features,\n useCanvas: false,\n style: {\n stroke: \"purple\",\n fill: \"transparent\",\n },\n }),\n h(FeatureLayer, {\n features: neighborFeatures,\n useCanvas: false,\n style: {\n stroke: \"rgb(93, 101, 212)\",\n strokeWidth: 3,\n fill: \"rgba(93, 101, 212, 0.5)\",\n },\n }),\n h(FeatureLayer, {\n features: [\n {\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: centroids,\n },\n },\n ],\n useCanvas: false,\n style: {\n r: 1,\n fill: \"purple\",\n },\n }),\n ]);\n}\n\ninterface ColumnExtraInfo {\n apiRoute?: string;\n color?: string;\n filterColumns?(d: ColumnFeature): boolean;\n showDebugLayers?: boolean;\n format?: \"topojson\" | \"geojson\";\n}\n\nconst Columns = (props: ColumnNavProps & ColumnExtraInfo) => {\n const {\n apiRoute = \"/columns\",\n onChange,\n col_id = null,\n status_code,\n project_id,\n color,\n filterColumns,\n showDebugLayers = false,\n format = \"topojson\",\n } = props;\n\n let features: any[] = useColumnFeatures({\n apiRoute,\n status_code,\n project_id,\n format,\n }) as any;\n\n if (features == null) return null;\n\n if (filterColumns != null) {\n features = features.filter(filterColumns);\n }\n\n return h([\n h(ColumnKeyboardNavigation, {\n features,\n col_id,\n onChange,\n status_code,\n project_id,\n showLayers: showDebugLayers,\n }),\n h(ColumnFeatures, { features, onClick: onChange, color }),\n ]);\n};\n\nconst ColumnCenters = (props: ColumnNavProps) => {\n return h(Columns, { apiRoute: \"/defs/columns\", ...props });\n};\n\nconst CurrentColumn = (props) => {\n const { feature } = props;\n return h(FeatureLayer, {\n features: [feature],\n style: {\n fill: \"rgba(255,0,0,0.4)\",\n stroke: \"rgba(255,0,0,0.6)\",\n strokeWidth: 2,\n },\n });\n};\n\nexport {\n Columns,\n CurrentColumn,\n ColumnCenters,\n ColumnFeatures,\n ColumnKeyboardNavigation,\n};\n"],"names":["useAPIResult","h","FeatureLayer","chroma","Feature","useContext","MapContext","useMemo","buildTriangulation","buildKeyMapping","useKeyHandler","useColumnFeatures"],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { ExtendedFeature } from 'd3-geo';
|
|
2
|
-
import { Polygon } from 'geojson';
|
|
3
|
-
export declare function MeasurementsLayer(props: any): import('react').FunctionComponentElement<{
|
|
4
|
-
[k: string]: any;
|
|
5
|
-
geometry?: object;
|
|
6
|
-
features?: import('@macrostrat/svg-map-components').IFeature[];
|
|
7
|
-
useCanvas?: boolean;
|
|
8
|
-
} & {
|
|
9
|
-
children?: import('react').ReactNode | undefined;
|
|
10
|
-
}> | null;
|
|
11
|
-
type ColumnProps = {
|
|
12
|
-
col_id: number;
|
|
13
|
-
};
|
|
14
|
-
type ColumnFeature = ExtendedFeature<Polygon, ColumnProps>;
|
|
15
|
-
declare function ColumnFeatures(props: any): import('react').FunctionComponentElement<{
|
|
16
|
-
[k: string]: any;
|
|
17
|
-
geometry?: object;
|
|
18
|
-
features?: import('@macrostrat/svg-map-components').IFeature[];
|
|
19
|
-
useCanvas?: boolean;
|
|
20
|
-
} & {
|
|
21
|
-
children?: import('react').ReactNode | undefined;
|
|
22
|
-
}>;
|
|
23
|
-
declare enum MacrostratStatusCode {
|
|
24
|
-
InProcess = "in process"
|
|
25
|
-
}
|
|
26
|
-
interface ColumnNavProps {
|
|
27
|
-
col_id: number;
|
|
28
|
-
status_code?: MacrostratStatusCode;
|
|
29
|
-
project_id?: number;
|
|
30
|
-
onChange(col_id: number): void;
|
|
31
|
-
}
|
|
32
|
-
interface KeyboardNavProps extends ColumnNavProps {
|
|
33
|
-
features: ColumnFeature[];
|
|
34
|
-
showLayers: boolean;
|
|
35
|
-
}
|
|
36
|
-
declare function ColumnKeyboardNavigation(props: KeyboardNavProps): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | null;
|
|
37
|
-
interface ColumnExtraInfo {
|
|
38
|
-
apiRoute?: string;
|
|
39
|
-
color?: string;
|
|
40
|
-
filterColumns?(d: ColumnFeature): boolean;
|
|
41
|
-
showDebugLayers?: boolean;
|
|
42
|
-
format?: "topojson" | "geojson";
|
|
43
|
-
}
|
|
44
|
-
declare const Columns: (props: ColumnNavProps & ColumnExtraInfo) => import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | null;
|
|
45
|
-
declare const ColumnCenters: (props: ColumnNavProps) => import('react').FunctionComponentElement<ColumnNavProps & ColumnExtraInfo>;
|
|
46
|
-
declare const CurrentColumn: (props: any) => import('react').FunctionComponentElement<{
|
|
47
|
-
[k: string]: any;
|
|
48
|
-
geometry?: object;
|
|
49
|
-
features?: import('@macrostrat/svg-map-components').IFeature[];
|
|
50
|
-
useCanvas?: boolean;
|
|
51
|
-
} & {
|
|
52
|
-
children?: import('react').ReactNode | undefined;
|
|
53
|
-
}>;
|
|
54
|
-
export { Columns, CurrentColumn, ColumnCenters, ColumnFeatures, ColumnKeyboardNavigation, };
|