@macrostrat/column-views 3.2.2 → 3.3.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/index.cjs +15 -9
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +11 -5
  5. package/dist/maps/column-correlation/core.cjs +10 -30
  6. package/dist/maps/column-correlation/core.cjs.map +1 -1
  7. package/dist/maps/column-correlation/core.d.ts +1 -1
  8. package/dist/maps/column-correlation/core.js +10 -30
  9. package/dist/maps/column-correlation/core.js.map +1 -1
  10. package/dist/maps/column-navigation/mapbox/index.cjs +156 -118
  11. package/dist/maps/column-navigation/mapbox/index.cjs.map +1 -1
  12. package/dist/maps/column-navigation/mapbox/index.d.ts +23 -2
  13. package/dist/maps/column-navigation/mapbox/index.js +158 -120
  14. package/dist/maps/column-navigation/mapbox/index.js.map +1 -1
  15. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs +7 -1
  16. package/dist/maps/column-navigation/mapbox/keyboard-navigation.cjs.map +1 -1
  17. package/dist/maps/column-navigation/mapbox/keyboard-navigation.d.ts +3 -26
  18. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js +9 -3
  19. package/dist/maps/column-navigation/mapbox/keyboard-navigation.js.map +1 -1
  20. package/dist/maps/index.d.ts +2 -2
  21. package/dist/maps/{_shared/inset-map.cjs → inset-map/index.cjs} +1 -1
  22. package/dist/maps/inset-map/index.cjs.map +1 -0
  23. package/dist/maps/{_shared/inset-map.js → inset-map/index.js} +1 -1
  24. package/dist/maps/inset-map/index.js.map +1 -0
  25. package/dist/maps/layers/columns.cjs +161 -0
  26. package/dist/maps/layers/columns.cjs.map +1 -0
  27. package/dist/maps/layers/columns.d.ts +28 -0
  28. package/dist/maps/layers/columns.js +161 -0
  29. package/dist/maps/layers/columns.js.map +1 -0
  30. package/dist/maps/layers/index.d.ts +2 -0
  31. package/dist/maps/{units-overlay/index.cjs → layers/units.cjs} +41 -88
  32. package/dist/maps/layers/units.cjs.map +1 -0
  33. package/dist/maps/{units-overlay/index.d.ts → layers/units.d.ts} +1 -1
  34. package/dist/maps/{units-overlay/index.js → layers/units.js} +34 -82
  35. package/dist/maps/layers/units.js.map +1 -0
  36. package/dist/unit-details/age-range.cjs +87 -44
  37. package/dist/unit-details/age-range.cjs.map +1 -1
  38. package/dist/unit-details/age-range.d.ts +32 -5
  39. package/dist/unit-details/age-range.js +85 -44
  40. package/dist/unit-details/age-range.js.map +1 -1
  41. package/package.json +4 -4
  42. package/src/maps/column-correlation/core.ts +9 -29
  43. package/src/maps/column-navigation/mapbox/index.ts +191 -138
  44. package/src/maps/column-navigation/mapbox/keyboard-navigation.ts +17 -3
  45. package/src/maps/index.ts +2 -2
  46. package/src/maps/layers/columns.ts +210 -0
  47. package/src/maps/layers/index.ts +2 -0
  48. package/src/maps/{units-overlay/index.ts → layers/units.ts} +34 -84
  49. package/src/maps/unit-map.stories.ts +27 -12
  50. package/src/unit-details/age-range.ts +125 -47
  51. package/dist/maps/_shared/index.d.ts +0 -2
  52. package/dist/maps/_shared/inset-map.cjs.map +0 -1
  53. package/dist/maps/_shared/inset-map.js.map +0 -1
  54. package/dist/maps/_shared/styles.cjs +0 -73
  55. package/dist/maps/_shared/styles.cjs.map +0 -1
  56. package/dist/maps/_shared/styles.d.ts +0 -2
  57. package/dist/maps/_shared/styles.js +0 -73
  58. package/dist/maps/_shared/styles.js.map +0 -1
  59. package/dist/maps/units-overlay/index.cjs.map +0 -1
  60. package/dist/maps/units-overlay/index.js.map +0 -1
  61. package/src/maps/_shared/index.ts +0 -2
  62. package/src/maps/_shared/styles.ts +0 -76
  63. /package/dist/maps/{_shared/inset-map.d.ts → inset-map/index.d.ts} +0 -0
  64. /package/src/maps/{_shared/inset-map.ts → inset-map/index.ts} +0 -0
  65. /package/src/maps/{_shared → inset-map}/inset-map.stories.ts +0 -0
@@ -3,175 +3,213 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const mapboxReact = require("@macrostrat/mapbox-react");
4
4
  const h = require("@macrostrat/hyper");
5
5
  const React = require("react");
6
- const mapboxUtils = require("@macrostrat/mapbox-utils");
7
6
  const state = require("./state.cjs");
7
+ const index = require("../../inset-map/index.cjs");
8
8
  const d3Geo = require("d3-geo");
9
9
  const keyboardNavigation = require("./keyboard-navigation.cjs");
10
- const styles = require("../../_shared/styles.cjs");
11
- const insetMap = require("../../_shared/inset-map.cjs");
10
+ const columns = require("../../layers/columns.cjs");
12
11
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
13
12
  const h__default = /* @__PURE__ */ _interopDefault(h);
14
13
  function ColumnNavigationMap(props) {
15
14
  const {
16
- columns,
15
+ padding = 50,
16
+ children,
17
+ columnColor,
18
+ showTriangulation,
19
+ triangulationColor,
20
+ keyboardNavigation: keyboardNavigation2 = true,
21
+ columns: columns2,
17
22
  columnIDs,
18
23
  onSelectColumn,
19
24
  onHoverColumn,
20
25
  selectedColumn,
21
26
  hoveredColumn,
22
27
  projectID,
23
- children,
24
28
  inProcess,
25
29
  ...rest
26
30
  } = props;
27
31
  return h__default.default(
28
- state.ColumnNavigationProvider,
32
+ index.InsetMap,
29
33
  {
30
- columns,
31
- columnIDs,
32
- onSelectColumn,
33
- onHoverColumn,
34
- selectedColumn,
35
- hoveredColumn,
36
- projectID,
37
- inProcess
34
+ ...rest,
35
+ boxZoom: false,
36
+ dragRotate: false
38
37
  },
39
- h__default.default(_ColumnNavigationMap, props)
38
+ [
39
+ h__default.default(ColumnsNavigationLayer, {
40
+ color: columnColor,
41
+ columns: columns2,
42
+ columnIDs,
43
+ onSelectColumn,
44
+ onHoverColumn,
45
+ selectedColumn,
46
+ hoveredColumn,
47
+ projectID,
48
+ inProcess,
49
+ keyboardNavigation: keyboardNavigation2,
50
+ showTriangulation,
51
+ triangulationColor
52
+ }),
53
+ children
54
+ ]
40
55
  );
41
56
  }
42
- function _ColumnNavigationMap(props) {
57
+ function ColumnsNavigationLayer(props) {
43
58
  const {
44
- padding = 50,
45
- children,
46
- columnColor,
59
+ enabled,
60
+ color,
61
+ keyboardNavigation: keyboardNavigation$1,
47
62
  showTriangulation,
48
63
  triangulationColor,
49
- keyboardNavigation: keyboardNavigation$1 = true,
50
- ...rest
64
+ ...providerProps
51
65
  } = props;
52
- const overlayStyles = React.useMemo(() => {
53
- let styles$1 = [styles.buildColumnsStyle(columnColor)];
54
- if (showTriangulation) {
55
- styles$1.push(keyboardNavigation.buildKeyboardNavigationStyle(triangulationColor));
56
- }
57
- return styles$1;
58
- }, [columnColor, showTriangulation, triangulationColor]);
59
- return h__default.default(
60
- insetMap.InsetMap,
61
- {
62
- ...rest,
63
- boxZoom: false,
64
- dragRotate: false,
65
- overlayStyles
66
- },
67
- [
68
- h__default.default(ColumnsLayer),
69
- children,
70
- h__default.default.if(keyboardNavigation$1)(keyboardNavigation.ColumnKeyboardNavigation, { showTriangulation })
71
- ]
72
- );
66
+ return h__default.default(state.ColumnNavigationProvider, providerProps, [
67
+ h__default.default(_ColumnsNavigationLayer, { enabled, color }),
68
+ h__default.default.if(keyboardNavigation$1)(keyboardNavigation.ColumnKeyboardNavigation, {
69
+ showTriangulation,
70
+ triangulationColor
71
+ })
72
+ ]);
73
73
  }
74
- function ColumnsLayer({ enabled = true }) {
75
- const columns = state.useColumnNavigationStore((state2) => state2.columns);
76
- const selectedColumn = state.useColumnNavigationStore(
74
+ const columnLayers = ["columns-points", "columns-fill"];
75
+ function _ColumnsNavigationLayer({ enabled = true, color }) {
76
+ const columns$1 = state.useColumnNavigationStore((state2) => state2.columns);
77
+ const selectedColumnID = state.useColumnNavigationStore(
77
78
  (state2) => state2.selectedColumn
78
79
  );
79
- const hoveredColumn = state.useColumnNavigationStore(
80
- (state2) => state2.hoveredColumn
81
- );
82
80
  const selectColumn = state.useColumnNavigationStore((state2) => state2.selectColumn);
83
81
  const setHoveredColumn = state.useColumnNavigationStore(
84
82
  (state2) => state2.setHoveredColumn
85
83
  );
84
+ const onHover = React.useCallback(
85
+ (event) => setHoveredColumn(event.features?.[0]?.id),
86
+ [setHoveredColumn]
87
+ );
88
+ const onSelectColumn = React.useCallback(
89
+ (column) => selectColumn(column.id),
90
+ [selectColumn]
91
+ );
92
+ const selectedColumnFeature = React.useMemo(() => {
93
+ if (columns$1 == null || selectedColumnID == null) return null;
94
+ return columns$1.find((d) => d.id == selectedColumnID);
95
+ }, [selectedColumnID, columns$1]);
96
+ return h__default.default([
97
+ h__default.default(columns.BaseColumnsLayer, { enabled, color, columns: columns$1 }),
98
+ h__default.default(ColumnSelectionManager, {
99
+ selectedColumn: selectedColumnFeature,
100
+ onSelectColumn
101
+ }),
102
+ h__default.default(ColumnHoverInteraction, { onHover })
103
+ ]);
104
+ }
105
+ function ColumnSelectionManager({
106
+ selectedColumn,
107
+ onSelectColumn,
108
+ centerOnSelect = true
109
+ }) {
110
+ const onClick = React.useCallback(
111
+ (event) => {
112
+ if (event.features.length == 0) return;
113
+ const selectedColumn2 = event.features[0];
114
+ onSelectColumn(selectedColumn2);
115
+ },
116
+ [onSelectColumn]
117
+ );
118
+ return h__default.default([
119
+ h__default.default.if(centerOnSelect)(SelectedColumnCenterer, {
120
+ selectedColumn
121
+ }),
122
+ h__default.default(columns.SelectedColumnOverlay, { selectedColumn }),
123
+ h__default.default(ClickInteraction, {
124
+ onClick,
125
+ layers: columnLayers
126
+ })
127
+ ]);
128
+ }
129
+ function ColumnHoverInteraction({ onHover }) {
130
+ return h__default.default(HoverInteraction, { onHover, layers: columnLayers });
131
+ }
132
+ function ClickInteraction({ onClick, layers }) {
86
133
  mapboxReact.useMapStyleOperator(
87
134
  (map) => {
88
- if (columns == null) {
89
- return;
90
- }
91
- const data = {
92
- type: "FeatureCollection",
93
- features: columns
135
+ map.on("click", layers, onClick);
136
+ return () => {
137
+ map.off("click", layers, onClick);
94
138
  };
95
- mapboxUtils.setGeoJSON(map, "columns", data);
139
+ },
140
+ [layers, onClick]
141
+ );
142
+ return null;
143
+ }
144
+ function HoverInteraction({ onHover, layers }) {
145
+ const hoveredFeaturesRef = React.useRef([]);
146
+ const updateFeatureState = React.useCallback((map, features) => {
147
+ for (const f of hoveredFeaturesRef.current) {
148
+ map.setFeatureState(
149
+ { source: f.source, id: f.id, sourceLayer: f.sourceLayer },
150
+ { hover: false }
151
+ );
152
+ }
153
+ for (const f of features) {
154
+ map.setFeatureState(
155
+ { source: f.source, id: f.id, sourceLayer: f.sourceLayer },
156
+ { hover: true }
157
+ );
158
+ }
159
+ hoveredFeaturesRef.current = features;
160
+ }, []);
161
+ mapboxReact.useMapStyleOperator(
162
+ (map) => {
96
163
  const mouseMove = (event) => {
97
164
  if (event.features.length == 0) return;
98
- const hoveredFeature = event.features[0];
99
- setHoveredColumn(hoveredFeature.id);
165
+ onHover?.(event);
166
+ updateFeatureState(map, event.features);
100
167
  map.getCanvas().style.cursor = "pointer";
101
168
  };
102
- const mouseLeave = () => {
103
- setHoveredColumn(null);
169
+ const mouseLeave = (event) => {
170
+ onHover?.(event);
171
+ updateFeatureState(map, event.features ?? []);
104
172
  map.getCanvas().style.cursor = "";
105
173
  };
106
- const clickHandler = (event) => {
107
- if (event.features.length == 0) return;
108
- const selectedColumn2 = event.features[0];
109
- const id = selectedColumn2.id;
110
- selectColumn(id);
111
- };
112
- const layers = ["columns-points", "columns-fill"];
113
174
  map.on("mousemove", layers, mouseMove);
114
175
  map.on("mouseleave", layers, mouseLeave);
115
- map.on("click", layers, clickHandler);
116
176
  return () => {
117
177
  map.off("mouseenter", layers, mouseMove);
118
178
  map.off("mouseleave", layers, mouseLeave);
119
- map.off("click", layers, clickHandler);
120
179
  };
121
180
  },
122
- [columns, enabled]
181
+ [layers, onHover]
123
182
  );
124
- const hoveredColumnRef = React.useRef(null);
125
- mapboxReact.useMapStyleOperator(
126
- (map) => {
127
- const prevHoveredColumn = hoveredColumnRef.current;
128
- if (hoveredColumn == prevHoveredColumn) return;
129
- if (prevHoveredColumn != null) {
130
- map.setFeatureState(
131
- { source: "columns", id: prevHoveredColumn },
132
- { hover: false }
133
- );
134
- }
135
- hoveredColumnRef.current = hoveredColumn;
136
- map.setFeatureState(
137
- { source: "columns", id: hoveredColumn },
138
- { hover: true }
139
- );
140
- },
141
- [hoveredColumn, columns]
142
- );
143
- const selectedColumnRef = React.useRef(null);
183
+ return null;
184
+ }
185
+ function SelectedColumnCenterer({
186
+ selectedColumn,
187
+ easeDuration = 500
188
+ }) {
189
+ const columnCenter = React.useMemo(() => {
190
+ const columnGeometry = selectedColumn?.geometry;
191
+ if (columnGeometry == null) return null;
192
+ return d3Geo.geoCentroid(columnGeometry);
193
+ }, [selectedColumn]);
194
+ const mapRef = mapboxReact.useMapRef();
195
+ const map = mapRef.current;
144
196
  const initialRenderRef = React.useRef(true);
145
- mapboxReact.useMapStyleOperator(
146
- (map) => {
147
- if (columns == null) return;
148
- const prevSelectedColumn = selectedColumnRef.current;
149
- if (selectedColumn == prevSelectedColumn) return;
150
- if (prevSelectedColumn != null) {
151
- map.setFeatureState(
152
- { source: "columns", id: prevSelectedColumn },
153
- { selected: false }
154
- );
155
- }
156
- selectedColumnRef.current = selectedColumn;
157
- map.setFeatureState(
158
- { source: "columns", id: selectedColumn },
159
- { selected: true }
160
- );
161
- const columnGeometry = columns.find(
162
- (d) => d.id == selectedColumn
163
- )?.geometry;
164
- if (columnGeometry == null) return;
165
- const center = d3Geo.geoCentroid(columnGeometry);
166
- const isInitialRender = initialRenderRef.current;
167
- map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });
168
- if (isInitialRender) {
169
- initialRenderRef.current = false;
170
- }
171
- },
172
- [selectedColumn, columns]
173
- );
197
+ React.useEffect(() => {
198
+ if (map == null) return;
199
+ const isInitialRender = initialRenderRef.current;
200
+ if (isInitialRender) initialRenderRef.current = false;
201
+ if (columnCenter == null) return;
202
+ if (isInitialRender) {
203
+ map.setCenter(columnCenter);
204
+ initialRenderRef.current = false;
205
+ } else {
206
+ map.easeTo({ center: columnCenter }, { duration: easeDuration });
207
+ }
208
+ }, [mapRef.current, columnCenter]);
174
209
  return null;
175
210
  }
211
+ exports.ColumnHoverInteraction = ColumnHoverInteraction;
176
212
  exports.ColumnNavigationMap = ColumnNavigationMap;
213
+ exports.ColumnSelectionManager = ColumnSelectionManager;
214
+ exports.ColumnsNavigationLayer = ColumnsNavigationLayer;
177
215
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { FeatureCollection } from \"geojson\";\nimport { ReactNode, useMemo, useRef } from \"react\";\nimport { buildColumnsStyle, InsetMapProps } from \"../../_shared\";\nimport { setGeoJSON } from \"@macrostrat/mapbox-utils\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap } from \"../../_shared\";\nimport { geoCentroid } from \"d3-geo\";\nimport {\n ColumnKeyboardNavigation,\n buildKeyboardNavigationStyle,\n} from \"./keyboard-navigation\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n children,\n inProcess,\n ...rest\n } = props;\n\n return h(\n ColumnNavigationProvider,\n {\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n },\n h(_ColumnNavigationMap, props),\n );\n}\n\nfunction _ColumnNavigationMap(props: ColumnNavigationMapProps) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n ...rest\n } = props;\n\n const overlayStyles = useMemo(() => {\n let styles: any[] = [buildColumnsStyle(columnColor)];\n if (showTriangulation) {\n styles.push(buildKeyboardNavigationStyle(triangulationColor));\n }\n return styles;\n }, [columnColor, showTriangulation, triangulationColor]);\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n overlayStyles,\n },\n [\n h(ColumnsLayer),\n children,\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, { showTriangulation }),\n ],\n );\n}\n\nfunction ColumnsLayer({ enabled = true }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumn = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const hoveredColumn = useColumnNavigationStore(\n (state) => state.hoveredColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n useMapStyleOperator(\n (map) => {\n if (columns == null) {\n return;\n }\n const data: FeatureCollection = {\n type: \"FeatureCollection\",\n features: columns,\n };\n\n setGeoJSON(map, \"columns\", data);\n\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n const hoveredFeature = event.features[0];\n setHoveredColumn(hoveredFeature.id);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = () => {\n setHoveredColumn(null);\n map.getCanvas().style.cursor = \"\";\n };\n\n const clickHandler = (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n const id = selectedColumn.id;\n selectColumn(id);\n };\n\n // Setup hover styles on map\n const layers = [\"columns-points\", \"columns-fill\"];\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n map.on(\"click\", layers, clickHandler);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n map.off(\"click\", layers, clickHandler);\n };\n },\n [columns, enabled],\n );\n\n const hoveredColumnRef = useRef(null);\n useMapStyleOperator(\n (map) => {\n const prevHoveredColumn = hoveredColumnRef.current;\n if (hoveredColumn == prevHoveredColumn) return;\n if (prevHoveredColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevHoveredColumn },\n { hover: false },\n );\n }\n hoveredColumnRef.current = hoveredColumn;\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: hoveredColumn },\n { hover: true },\n );\n },\n [hoveredColumn, columns],\n );\n\n /** Set feature state for selected columns */\n const selectedColumnRef = useRef(null);\n const initialRenderRef = useRef(true);\n useMapStyleOperator(\n (map) => {\n if (columns == null) return;\n const prevSelectedColumn = selectedColumnRef.current;\n if (selectedColumn == prevSelectedColumn) return;\n if (prevSelectedColumn != null) {\n // Deselect previous column\n map.setFeatureState(\n { source: \"columns\", id: prevSelectedColumn },\n { selected: false },\n );\n }\n\n selectedColumnRef.current = selectedColumn;\n\n // Select the current column\n map.setFeatureState(\n { source: \"columns\", id: selectedColumn },\n { selected: true },\n );\n\n // Center the selected column\n const columnGeometry = columns.find(\n (d) => d.id == selectedColumn,\n )?.geometry;\n if (columnGeometry == null) return;\n const center = geoCentroid(columnGeometry);\n\n const isInitialRender = initialRenderRef.current;\n\n map.easeTo({ center }, { duration: isInitialRender ? 0 : 500 });\n if (isInitialRender) {\n initialRenderRef.current = false;\n }\n },\n [selectedColumn, columns],\n );\n\n return null;\n}\n"],"names":["h","ColumnNavigationProvider","keyboardNavigation","useMemo","styles","buildColumnsStyle","buildKeyboardNavigationStyle","InsetMap","ColumnKeyboardNavigation","useColumnNavigationStore","state","useMapStyleOperator","setGeoJSON","selectedColumn","useRef","geoCentroid"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../src/maps/column-navigation/mapbox/index.ts"],"sourcesContent":["import { useMapRef, useMapStyleOperator } from \"@macrostrat/mapbox-react\";\nimport h from \"@macrostrat/hyper\";\nimport { ReactNode, useCallback, useEffect, useMemo, useRef } from \"react\";\n\nimport {\n ColumnNavigationProvider,\n NavigationProviderProps,\n useColumnNavigationStore,\n} from \"./state\";\nimport { InsetMap, type InsetMapProps } from \"../../inset-map\";\nimport { geoCentroid } from \"d3-geo\";\nimport { BaseColumnsLayer, SelectedColumnOverlay } from \"../../layers\";\nimport { ColumnKeyboardNavigation } from \"./keyboard-navigation\";\nimport type { ColumnFeature } from \"../../layers\";\n\nexport interface ColumnNavigationMapProps extends InsetMapProps {\n padding?: number;\n children?: ReactNode;\n accessToken?: string;\n selectedColumn?: number;\n hoveredColumn?: number;\n onSelectColumn?: (colID: number | null) => void;\n onHoverColumn?: (colID: number | null) => void;\n showTriangulation?: boolean;\n columnColor?: string;\n}\n\nexport function ColumnNavigationMap(\n props: ColumnNavigationMapProps & NavigationProviderProps,\n) {\n const {\n padding = 50,\n children,\n columnColor,\n showTriangulation,\n triangulationColor,\n keyboardNavigation = true,\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n ...rest\n } = props;\n\n return h(\n InsetMap,\n {\n ...rest,\n boxZoom: false,\n dragRotate: false,\n },\n [\n h(ColumnsNavigationLayer, {\n color: columnColor,\n columns,\n columnIDs,\n onSelectColumn,\n onHoverColumn,\n selectedColumn,\n hoveredColumn,\n projectID,\n inProcess,\n keyboardNavigation,\n showTriangulation,\n triangulationColor,\n }),\n children,\n ],\n );\n}\n\ninterface ColumnLayerProps {\n enabled?: boolean;\n color?: string;\n}\n\ninterface ColumnKeyboardNavigationProps {\n triangulationColor?: string;\n keyboardNavigation?: boolean;\n showTriangulation?: boolean;\n}\n\nexport function ColumnsNavigationLayer(\n props: NavigationProviderProps &\n ColumnLayerProps &\n ColumnKeyboardNavigationProps,\n) {\n const {\n enabled,\n color,\n keyboardNavigation,\n showTriangulation,\n triangulationColor,\n ...providerProps\n } = props;\n\n return h(ColumnNavigationProvider, providerProps, [\n h(_ColumnsNavigationLayer, { enabled, color }),\n h.if(keyboardNavigation)(ColumnKeyboardNavigation, {\n showTriangulation,\n triangulationColor,\n }),\n ]);\n}\n\nconst columnLayers = [\"columns-points\", \"columns-fill\"];\n\nfunction _ColumnsNavigationLayer({ enabled = true, color }) {\n const columns = useColumnNavigationStore((state) => state.columns);\n const selectedColumnID = useColumnNavigationStore(\n (state) => state.selectedColumn,\n );\n const selectColumn = useColumnNavigationStore((state) => state.selectColumn);\n const setHoveredColumn = useColumnNavigationStore(\n (state) => state.setHoveredColumn,\n );\n\n const onHover = useCallback(\n (event) => setHoveredColumn(event.features?.[0]?.id),\n [setHoveredColumn],\n );\n\n /** Convert features into column IDs to pass to the selection manager */\n const onSelectColumn = useCallback(\n (column) => selectColumn(column.id),\n [selectColumn],\n );\n\n const selectedColumnFeature = useMemo(() => {\n if (columns == null || selectedColumnID == null) return null;\n return columns.find((d) => d.id == selectedColumnID);\n }, [selectedColumnID, columns]);\n\n return h([\n h(BaseColumnsLayer, { enabled, color, columns }),\n h(ColumnSelectionManager, {\n selectedColumn: selectedColumnFeature,\n onSelectColumn,\n }),\n h(ColumnHoverInteraction, { onHover }),\n ]);\n}\n\nexport function ColumnSelectionManager({\n selectedColumn,\n onSelectColumn,\n centerOnSelect = true,\n}: {\n selectedColumn: ColumnFeature;\n onSelectColumn: (column: ColumnFeature) => void;\n centerOnSelect?: boolean;\n}) {\n const onClick = useCallback(\n (event) => {\n if (event.features.length == 0) return;\n const selectedColumn = event.features[0];\n onSelectColumn(selectedColumn);\n },\n [onSelectColumn],\n );\n\n return h([\n h.if(centerOnSelect)(SelectedColumnCenterer, {\n selectedColumn,\n }),\n h(SelectedColumnOverlay, { selectedColumn }),\n h(ClickInteraction, {\n onClick,\n layers: columnLayers,\n }),\n ]);\n}\n\nexport function ColumnHoverInteraction({ onHover }) {\n return h(HoverInteraction, { onHover, layers: columnLayers });\n}\n\nfunction ClickInteraction({ onClick, layers }) {\n useMapStyleOperator(\n (map) => {\n // Setup hover styles on map\n map.on(\"click\", layers, onClick);\n return () => {\n map.off(\"click\", layers, onClick);\n };\n },\n [layers, onClick],\n );\n return null;\n}\n\nfunction HoverInteraction({ onHover, layers }) {\n const hoveredFeaturesRef = useRef([]);\n const updateFeatureState = useCallback((map, features) => {\n // Reset hover state for previously hovered features\n for (const f of hoveredFeaturesRef.current) {\n map.setFeatureState(\n { source: f.source, id: f.id, sourceLayer: f.sourceLayer },\n { hover: false },\n );\n }\n // Set hover state for new features\n for (const f of features) {\n map.setFeatureState(\n { source: f.source, id: f.id, sourceLayer: f.sourceLayer },\n { hover: true },\n );\n }\n hoveredFeaturesRef.current = features;\n }, []);\n\n useMapStyleOperator(\n (map) => {\n const mouseMove = (event) => {\n if (event.features.length == 0) return;\n onHover?.(event);\n updateFeatureState(map, event.features);\n map.getCanvas().style.cursor = \"pointer\";\n };\n const mouseLeave = (event) => {\n onHover?.(event);\n updateFeatureState(map, event.features ?? []);\n map.getCanvas().style.cursor = \"\";\n };\n\n // Setup hover styles on map\n map.on(\"mousemove\", layers, mouseMove);\n map.on(\"mouseleave\", layers, mouseLeave);\n\n return () => {\n map.off(\"mouseenter\", layers, mouseMove);\n map.off(\"mouseleave\", layers, mouseLeave);\n };\n },\n [layers, onHover],\n );\n return null;\n}\n\nfunction SelectedColumnCenterer({\n selectedColumn,\n easeDuration = 500,\n}: {\n selectedColumn: ColumnFeature;\n easeDuration?: number;\n}) {\n const columnCenter = useMemo(() => {\n const columnGeometry = selectedColumn?.geometry;\n if (columnGeometry == null) return null;\n return geoCentroid(columnGeometry);\n }, [selectedColumn]);\n\n const mapRef = useMapRef();\n const map = mapRef.current;\n const initialRenderRef = useRef(true);\n // Center the map on the selected column when it changes\n useEffect(() => {\n if (map == null) return;\n const isInitialRender = initialRenderRef.current;\n if (isInitialRender) initialRenderRef.current = false;\n // If this is the first render of the map, jump to the location. Otherwise, ease to it.\n if (columnCenter == null) return;\n if (isInitialRender) {\n map.setCenter(columnCenter);\n initialRenderRef.current = false;\n } else {\n map.easeTo({ center: columnCenter }, { duration: easeDuration });\n }\n }, [mapRef.current, columnCenter]);\n\n return null;\n}\n"],"names":["keyboardNavigation","columns","h","InsetMap","ColumnNavigationProvider","ColumnKeyboardNavigation","useColumnNavigationStore","state","useCallback","useMemo","BaseColumnsLayer","selectedColumn","SelectedColumnOverlay","useMapStyleOperator","useRef","geoCentroid","useMapRef","useEffect"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
- import { InsetMapProps } from '../../_shared';
3
2
  import { NavigationProviderProps } from './state';
3
+ import { InsetMapProps } from '../../inset-map';
4
+ import { ColumnFeature } from '../../layers';
4
5
  export interface ColumnNavigationMapProps extends InsetMapProps {
5
6
  padding?: number;
6
7
  children?: ReactNode;
@@ -11,7 +12,27 @@ export interface ColumnNavigationMapProps extends InsetMapProps {
11
12
  onHoverColumn?: (colID: number | null) => void;
12
13
  showTriangulation?: boolean;
13
14
  columnColor?: string;
15
+ }
16
+ export declare function ColumnNavigationMap(props: ColumnNavigationMapProps & NavigationProviderProps): import('react').FunctionComponentElement<InsetMapProps>;
17
+ interface ColumnLayerProps {
18
+ enabled?: boolean;
19
+ color?: string;
20
+ }
21
+ interface ColumnKeyboardNavigationProps {
14
22
  triangulationColor?: string;
15
23
  keyboardNavigation?: boolean;
24
+ showTriangulation?: boolean;
16
25
  }
17
- export declare function ColumnNavigationMap(props: ColumnNavigationMapProps & NavigationProviderProps): import('react').FunctionComponentElement<NavigationProviderProps>;
26
+ export declare function ColumnsNavigationLayer(props: NavigationProviderProps & ColumnLayerProps & ColumnKeyboardNavigationProps): import('react').FunctionComponentElement<NavigationProviderProps>;
27
+ export declare function ColumnSelectionManager({ selectedColumn, onSelectColumn, centerOnSelect, }: {
28
+ selectedColumn: ColumnFeature;
29
+ onSelectColumn: (column: ColumnFeature) => void;
30
+ centerOnSelect?: boolean;
31
+ }): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
32
+ export declare function ColumnHoverInteraction({ onHover }: {
33
+ onHover: any;
34
+ }): import('react').FunctionComponentElement<{
35
+ onHover: any;
36
+ layers: any;
37
+ }>;
38
+ export {};