@treasuryspatial/map-react 0.1.10 → 0.1.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"MapModeViewport.d.ts","sourceRoot":"","sources":["../src/MapModeViewport.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6F,MAAM,OAAO,CAAC;AAElH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,qBAAqB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AACjH,MAAM,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,iBAAiB,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAMF,eAAO,MAAM,eAAe,oGAmc1B,CAAC"}
1
+ {"version":3,"file":"MapModeViewport.d.ts","sourceRoot":"","sources":["../src/MapModeViewport.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6F,MAAM,OAAO,CAAC;AAElH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,qBAAqB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AACjH,MAAM,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAEpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,iBAAiB,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAMF,eAAO,MAAM,eAAe,oGA0d1B,CAAC"}
@@ -24,8 +24,10 @@ export const MapModeViewport = forwardRef(function MapModeViewport({ active, geo
24
24
  const lastGeocodeLabelRef = useRef(null);
25
25
  const reverseGeocodeRequestRef = useRef(0);
26
26
  const resizeObserverRef = useRef(null);
27
+ const lastOriginRef = useRef(confirmedSelection?.origin ?? null);
27
28
  const [mapReady, setMapReady] = useState(false);
28
29
  const [mapError, setMapError] = useState('');
30
+ const [threeLayerReady, setThreeLayerReady] = useState(false);
29
31
  const debug = useMemo(() => {
30
32
  if (typeof window === 'undefined')
31
33
  return false;
@@ -42,6 +44,9 @@ export const MapModeViewport = forwardRef(function MapModeViewport({ active, geo
42
44
  }, [lightingPreset]);
43
45
  useEffect(() => {
44
46
  confirmedSelectionRef.current = confirmedSelection ?? null;
47
+ if (confirmedSelection?.origin) {
48
+ lastOriginRef.current = confirmedSelection.origin;
49
+ }
45
50
  }, [confirmedSelection]);
46
51
  useEffect(() => {
47
52
  onCandidateSelectRef.current = onCandidateSelect;
@@ -245,6 +250,9 @@ export const MapModeViewport = forwardRef(function MapModeViewport({ active, geo
245
250
  return;
246
251
  if (candidate?.feature) {
247
252
  controller.setSelected(candidate.feature);
253
+ if (candidate.selection?.origin) {
254
+ lastOriginRef.current = candidate.selection.origin;
255
+ }
248
256
  }
249
257
  else if (confirmedFeature) {
250
258
  controller.setSelected(confirmedFeature);
@@ -259,12 +267,20 @@ export const MapModeViewport = forwardRef(function MapModeViewport({ active, geo
259
267
  const map = mapRef.current;
260
268
  if (!map || !threeLayerRef.current)
261
269
  return;
262
- if (!confirmedSelection) {
263
- threeLayerRef.current.setOrigin(null);
270
+ const selectionOrigin = confirmedSelection?.origin ?? candidate?.selection?.origin ?? null;
271
+ if (selectionOrigin) {
272
+ lastOriginRef.current = selectionOrigin;
273
+ threeLayerRef.current.setOrigin(selectionOrigin);
264
274
  return;
265
275
  }
266
- threeLayerRef.current.setOrigin(confirmedSelection.origin);
267
- }, [mapReady, confirmedSelection]);
276
+ const hasGeometry = Boolean(geometry3dm || meshGroup);
277
+ const fallbackOrigin = hasGeometry ? lastOriginRef.current : null;
278
+ if (fallbackOrigin) {
279
+ threeLayerRef.current.setOrigin(fallbackOrigin);
280
+ return;
281
+ }
282
+ threeLayerRef.current.setOrigin(null);
283
+ }, [mapReady, confirmedSelection, candidate, geometry3dm, meshGroup, threeLayerReady]);
268
284
  useEffect(() => {
269
285
  if (!mapReady)
270
286
  return;
@@ -310,11 +326,18 @@ export const MapModeViewport = forwardRef(function MapModeViewport({ active, geo
310
326
  (applyLightingPreset ?? defaultApplyLightingPreset)(scene, renderer, lightingPresetRef.current);
311
327
  },
312
328
  });
329
+ setThreeLayerReady(true);
313
330
  }
314
331
  const layer = threeLayerRef.current.layer;
315
332
  if (!map.getLayer(layer.id)) {
316
333
  map.addLayer(layer);
317
334
  }
335
+ const selection = confirmedSelectionRef.current;
336
+ const origin = selection?.origin ?? lastOriginRef.current;
337
+ if (origin) {
338
+ lastOriginRef.current = origin;
339
+ threeLayerRef.current?.setOrigin(origin);
340
+ }
318
341
  };
319
342
  const bindFootprintHandlers = (map) => {
320
343
  if (handlersBoundRef.current)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treasuryspatial/map-react",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
- "@treasuryspatial/map-kit": "^0.1.4"
21
+ "@treasuryspatial/map-kit": "^0.1.8"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": ">=18",