@macrostrat/map-interface 1.0.12 → 1.1.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 CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format
4
4
  is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this
5
5
  project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.1.0] - 2024-11-16
8
+
9
+ - Improve map state management with `zustand` (in `@macrostrat/mapbox-react`)
10
+ - Add `styleType` prop to `DevMapPage` component to allow setting "standard"
11
+ Mapbox styles or "macrostrat" styles (the default)
12
+
7
13
  ## [1.0.12] - 2024-11-13
8
14
 
9
15
  - Add a `bounds` option to the `DevMapPage` component
package/dist/index.cjs.js CHANGED
@@ -1,5 +1,4 @@
1
1
  require("./index.cjs.css");
2
- var $9B3TU$react = require("react");
3
2
  var $9B3TU$blueprintjscore = require("@blueprintjs/core");
4
3
  var $9B3TU$macrostrathyper = require("@macrostrat/hyper");
5
4
  var $9B3TU$macrostratmapboxreact = require("@macrostrat/mapbox-react");
@@ -8,6 +7,7 @@ var $9B3TU$classnames = require("classnames");
8
7
  var $9B3TU$macrostratmapboxutils = require("@macrostrat/mapbox-utils");
9
8
  var $9B3TU$d3format = require("d3-format");
10
9
  var $9B3TU$mapboxgl = require("mapbox-gl");
10
+ var $9B3TU$react = require("react");
11
11
  var $9B3TU$macrostratcolorutils = require("@macrostrat/color-utils");
12
12
  var $9B3TU$transitionhook = require("transition-hook");
13
13
  var $9B3TU$underscore = require("underscore");
@@ -48,7 +48,6 @@ $parcel$export($fce5fc950d1fe35b$exports, "MapLoadingButton", () => $fce5fc950d1
48
48
  $parcel$export($fce5fc950d1fe35b$exports, "FloatingNavbar", () => $fce5fc950d1fe35b$export$a8cc0062d02a3841);
49
49
 
50
50
 
51
-
52
51
  var $7a1b0f72a2e7f87d$exports = {};
53
52
 
54
53
  $parcel$export($7a1b0f72a2e7f87d$exports, "loading-button", () => $7a1b0f72a2e7f87d$export$fcaa8d3bc8e9cf1e, (v) => $7a1b0f72a2e7f87d$export$fcaa8d3bc8e9cf1e = v);
@@ -89,13 +88,10 @@ function $fce5fc950d1fe35b$export$4ec83e90d030b2f3({ isLoading: isLoading = fals
89
88
  });
90
89
  }
91
90
  function $fce5fc950d1fe35b$export$9e3bae3c08bde368(props) {
92
- const { isLoading: isLoading } = (0, $9B3TU$macrostratmapboxreact.useMapStatus)();
93
- const mapIsLoading = (0, $9B3TU$react.useMemo)(()=>isLoading, [
94
- isLoading
95
- ]);
91
+ const isLoading = (0, $9B3TU$macrostratmapboxreact.useMapStatus)((s)=>s.isLoading);
96
92
  return $fce5fc950d1fe35b$var$h($fce5fc950d1fe35b$export$4ec83e90d030b2f3, {
97
93
  ...props,
98
- isLoading: mapIsLoading
94
+ isLoading: isLoading
99
95
  });
100
96
  }
101
97
  function $fce5fc950d1fe35b$export$a8cc0062d02a3841({ className: className, children: children, headerElement: headerElement = null, title: title = null, statusElement: statusElement = null, rightElement: rightElement = null, height: height, width: width, style: style = {} }) {
@@ -1006,6 +1002,7 @@ function $2611a7b4364593e5$export$2ab96428dea558d6({ containerRef: containerRef,
1006
1002
  function $2611a7b4364593e5$export$f6eeee399afc4e9a({ onMapMoved: onMapMoved = null }) {
1007
1003
  const mapRef = (0, $9B3TU$macrostratmapboxreact.useMapRef)();
1008
1004
  const dispatch = (0, $9B3TU$macrostratmapboxreact.useMapDispatch)();
1005
+ const isInitialized = (0, $9B3TU$macrostratmapboxreact.useMapInitialized)();
1009
1006
  const mapMovedCallback = (0, $9B3TU$react.useCallback)(()=>{
1010
1007
  const map = mapRef.current;
1011
1008
  if (map == null) return;
@@ -1016,9 +1013,9 @@ function $2611a7b4364593e5$export$f6eeee399afc4e9a({ onMapMoved: onMapMoved = nu
1016
1013
  });
1017
1014
  onMapMoved?.(mapPosition, map);
1018
1015
  }, [
1019
- mapRef.current,
1020
1016
  onMapMoved,
1021
- dispatch
1017
+ dispatch,
1018
+ isInitialized
1022
1019
  ]);
1023
1020
  (0, $9B3TU$react.useEffect)(()=>{
1024
1021
  // Get the current value of the map. Useful for gradually moving away
@@ -1041,6 +1038,7 @@ function $2611a7b4364593e5$export$e57f9eaa51773f82({ ignoredSources: ignoredSour
1041
1038
  const mapRef = (0, $9B3TU$macrostratmapboxreact.useMapRef)();
1042
1039
  const loadingRef = (0, $9B3TU$react.useRef)(false);
1043
1040
  const dispatch = (0, $9B3TU$macrostratmapboxreact.useMapDispatch)();
1041
+ const isInitialized = (0, $9B3TU$macrostratmapboxreact.useMapInitialized)();
1044
1042
  (0, $9B3TU$react.useEffect)(()=>{
1045
1043
  const map = mapRef.current;
1046
1044
  const mapIsLoading = loadingRef.current;
@@ -1074,35 +1072,34 @@ function $2611a7b4364593e5$export$e57f9eaa51773f82({ ignoredSources: ignoredSour
1074
1072
  };
1075
1073
  }, [
1076
1074
  ignoredSources,
1077
- mapRef.current,
1078
- mapIsLoading
1075
+ mapIsLoading,
1076
+ isInitialized
1079
1077
  ]);
1080
1078
  return null;
1081
1079
  }
1082
1080
  function $2611a7b4364593e5$export$5c90a91c7455938c({ position: position, setPosition: setPosition, centerMarker: centerMarker = true }) {
1083
1081
  const mapRef = (0, $9B3TU$macrostratmapboxreact.useMapRef)();
1084
1082
  const markerRef = (0, $9B3TU$react.useRef)(null);
1083
+ const isInitialized = (0, $9B3TU$macrostratmapboxreact.useMapInitialized)();
1085
1084
  (0, $3490fc4f4bda12f7$export$278090850f6b3a9f)(mapRef, markerRef, position);
1086
- const handleMapClick = (0, $9B3TU$react.useCallback)((event)=>{
1087
- setPosition(event.lngLat, event, mapRef.current);
1088
- // We should integrate this with the "easeToCenter" hook
1089
- if (centerMarker) mapRef.current?.flyTo({
1090
- center: event.lngLat,
1091
- duration: 800
1092
- });
1093
- }, [
1094
- mapRef.current,
1095
- setPosition
1096
- ]);
1097
1085
  (0, $9B3TU$react.useEffect)(()=>{
1098
1086
  const map = mapRef.current;
1099
- if (map != null && setPosition != null) map.on("click", handleMapClick);
1087
+ if (map == null || setPosition == null) return;
1088
+ const handleMapClick = (event)=>{
1089
+ setPosition(event.lngLat, event, mapRef.current);
1090
+ // We should integrate this with the "easeToCenter" hook
1091
+ if (centerMarker) mapRef.current?.flyTo({
1092
+ center: event.lngLat,
1093
+ duration: 800
1094
+ });
1095
+ };
1096
+ map.on("click", handleMapClick);
1100
1097
  return ()=>{
1101
1098
  map?.off("click", handleMapClick);
1102
1099
  };
1103
1100
  }, [
1104
- mapRef.current,
1105
- setPosition
1101
+ setPosition,
1102
+ isInitialized
1106
1103
  ]);
1107
1104
  return null;
1108
1105
  }
@@ -1216,54 +1213,46 @@ function $12b6032029db16d4$export$ab1e7a67d6ec5ad8(props) {
1216
1213
  let mapRef = (0, $9B3TU$macrostratmapboxreact.useMapRef)();
1217
1214
  const ref = (0, $9B3TU$react.useRef)();
1218
1215
  const parentRef = (0, $9B3TU$react.useRef)();
1219
- // Keep track of map position for reloads
1220
- (0, $9B3TU$react.useEffect)(()=>{
1221
- console.log("Map updated", mapRef.current);
1222
- }, [
1223
- mapRef.current
1224
- ]);
1225
1216
  (0, $9B3TU$react.useEffect)(()=>{
1226
1217
  if (style == null) return;
1227
- if (mapRef.current != null) {
1218
+ let map = mapRef.current;
1219
+ if (map != null) {
1228
1220
  console.log("Setting style", style);
1229
- mapRef.current.setStyle(style);
1230
- return;
1221
+ map.setStyle(style);
1222
+ } else {
1223
+ console.log("Initializing map", style);
1224
+ const map = initializeMap(ref.current, {
1225
+ style: style,
1226
+ projection: projection,
1227
+ mapPosition: mapPosition,
1228
+ ...rest
1229
+ });
1230
+ dispatch({
1231
+ type: "set-map",
1232
+ payload: map
1233
+ });
1234
+ map.setPadding((0, $3490fc4f4bda12f7$export$bb78f9f01775eef1)(ref, parentRef), {
1235
+ animate: false
1236
+ });
1237
+ onMapLoaded?.(map);
1231
1238
  }
1232
- const map = initializeMap(ref.current, {
1233
- style: style,
1234
- projection: projection,
1235
- mapPosition: mapPosition,
1236
- ...rest
1237
- });
1238
- map.setPadding((0, $3490fc4f4bda12f7$export$bb78f9f01775eef1)(ref, parentRef), {
1239
- animate: false
1240
- });
1241
- map.on("style.load", ()=>{
1239
+ const loadCallback = ()=>{
1242
1240
  onStyleLoaded?.(map);
1243
1241
  dispatch({
1244
1242
  type: "set-style-loaded",
1245
1243
  payload: true
1246
1244
  });
1247
- });
1248
- onMapLoaded?.(map);
1249
- dispatch({
1250
- type: "set-map",
1251
- payload: map
1252
- });
1245
+ };
1246
+ map = mapRef.current;
1247
+ if (map.isStyleLoaded()) // Catch a race condition where the style is loaded before the callback is set
1248
+ loadCallback();
1249
+ map.on("style.load", loadCallback);
1250
+ return ()=>{
1251
+ map.off("style.load", loadCallback);
1252
+ };
1253
1253
  }, [
1254
1254
  style
1255
1255
  ]);
1256
- // Map style updating
1257
- // useEffect(() => {
1258
- // if (mapRef?.current == null || style == null) return;
1259
- // mapRef?.current?.setStyle(style);
1260
- // }, [mapRef.current, style]);
1261
- // Set map position if it changes
1262
- // useEffect(() => {
1263
- // const map = mapRef.current;
1264
- // if (map == null || mapPosition == null) return;
1265
- // setMapPosition(map, mapPosition);
1266
- // }, [mapPosition]);
1267
1256
  const _computedMapPosition = (0, $9B3TU$macrostratmapboxreact.useMapPosition)();
1268
1257
  const { mapUse3D: mapUse3D, mapIsRotated: mapIsRotated } = (0, $9B3TU$macrostratmapboxutils.mapViewInfo)(_computedMapPosition);
1269
1258
  // Get map projection
@@ -1810,7 +1799,7 @@ function $db14eb7a5c07abdb$export$617d79dae526d2cf({ features: features }) {
1810
1799
 
1811
1800
 
1812
1801
  const $6f5ca387ac26c0b5$export$dda1d9f60106f0e9 = (0, ($parcel$interopDefault($9B3TU$macrostrathyper))).styled((0, (/*@__PURE__*/$parcel$interopDefault($33088e8384af337c$exports))));
1813
- function $6f5ca387ac26c0b5$export$c5febf3ae8816972({ title: title = "Map inspector", headerElement: headerElement = null, transformRequest: transformRequest = null, mapPosition: mapPosition = null, mapboxToken: mapboxToken = null, overlayStyle: overlayStyle = null, children: children, style: style, bounds: bounds = null, focusedSource: focusedSource = null, focusedSourceTitle: focusedSourceTitle = null, fitViewport: fitViewport = true }) {
1802
+ function $6f5ca387ac26c0b5$export$c5febf3ae8816972({ title: title = "Map inspector", headerElement: headerElement = null, transformRequest: transformRequest = null, mapPosition: mapPosition = null, mapboxToken: mapboxToken = null, overlayStyle: overlayStyle = null, children: children, style: style, bounds: bounds = null, focusedSource: focusedSource = null, focusedSourceTitle: focusedSourceTitle = null, fitViewport: fitViewport = true, styleType: styleType = "macrostrat" }) {
1814
1803
  /* We apply a custom style to the panel container when we are interacting
1815
1804
  with the search bar, so that we can block map interactions until search
1816
1805
  bar focus is lost.
@@ -1819,15 +1808,15 @@ function $6f5ca387ac26c0b5$export$c5febf3ae8816972({ title: title = "Map inspect
1819
1808
  */ const dark = (0, $9B3TU$macrostratuicomponents.useDarkMode)();
1820
1809
  const isEnabled = dark?.isEnabled;
1821
1810
  if (mapboxToken != null) (0, ($parcel$interopDefault($9B3TU$mapboxgl))).accessToken = mapboxToken;
1822
- style ??= isEnabled ? "mapbox://styles/mapbox/dark-v10" : "mapbox://styles/mapbox/light-v10";
1811
+ if (styleType == "macrostrat") style ??= isEnabled ? "mapbox://styles/jczaplewski/cl5uoqzzq003614o6url9ou9z?optimize=true" : "mapbox://styles/jczaplewski/clatdbkw4002q14lov8zx0bm0?optimize=true";
1812
+ else style ??= isEnabled ? "mapbox://styles/mapbox/dark-v10" : "mapbox://styles/mapbox/light-v10";
1823
1813
  const [isOpen, setOpen] = (0, $9B3TU$react.useState)(false);
1824
1814
  const [state, setState] = (0, $9B3TU$macrostratuicomponents.useStoredState)("macrostrat:dev-map-page", {
1825
1815
  showTileExtent: false,
1826
1816
  xRay: false
1827
1817
  });
1828
1818
  const { showTileExtent: showTileExtent, xRay: xRay } = state;
1829
- const [actualStyle, setActualStyle] = (0, $9B3TU$react.useState)(style);
1830
- console.log("actualStyle", actualStyle);
1819
+ const [actualStyle, setActualStyle] = (0, $9B3TU$react.useState)(null);
1831
1820
  (0, $9B3TU$react.useEffect)(()=>{
1832
1821
  (0, $8646508ae99a5857$export$e739dc8dfc0db9a6)(style, overlayStyle, {
1833
1822
  mapboxToken: mapboxToken,
@@ -1892,6 +1881,7 @@ function $6f5ca387ac26c0b5$export$c5febf3ae8816972({ title: title = "Map inspect
1892
1881
  title: title
1893
1882
  }),
1894
1883
  contextPanel: $6f5ca387ac26c0b5$export$dda1d9f60106f0e9((0, $c3311f59335df34d$export$ec68dd77edbe678b), [
1884
+ children,
1895
1885
  $6f5ca387ac26c0b5$export$dda1d9f60106f0e9((0, $9B3TU$blueprintjscore.Switch), {
1896
1886
  checked: xRay,
1897
1887
  label: "X-ray mode",
@@ -1901,8 +1891,7 @@ function $6f5ca387ac26c0b5$export$c5febf3ae8816972({ title: title = "Map inspect
1901
1891
  xRay: !xRay
1902
1892
  });
1903
1893
  }
1904
- }),
1905
- children
1894
+ })
1906
1895
  ]),
1907
1896
  detailPanel: detailElement,
1908
1897
  contextPanelOpen: isOpen,