@mailwoman/react 9.4.0 → 10.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/README.md +17 -16
- package/fonts.css +97 -22
- package/lib/common/About.tsx +87 -71
- package/lib/common/ClientOnly.tsx +2 -14
- package/lib/common/CopyButton.tsx +3 -1
- package/lib/common/LoadingIndicator.tsx +4 -2
- package/lib/common/PresetChips.tsx +9 -8
- package/lib/common/confidence-tiers.ts +7 -6
- package/lib/common/cx.ts +3 -1
- package/lib/common/text-tokens.ts +7 -4
- package/lib/common/useBuildInfo.ts +54 -0
- package/lib/common/useClipboard.ts +2 -11
- package/lib/common.ts +22 -0
- package/lib/index.ts +27 -112
- package/lib/map/AppIdentity.tsx +85 -0
- package/lib/map/BackendControl.tsx +16 -13
- package/lib/map/CompareToggle.tsx +11 -33
- package/lib/map/DebugInfo.tsx +88 -0
- package/lib/map/Geocoder.tsx +92 -58
- package/lib/map/GeocoderControls.tsx +582 -127
- package/lib/map/GraticuleLayer.tsx +54 -0
- package/lib/map/MapCanvas.tsx +23 -12
- package/lib/map/MapChipRow.tsx +73 -0
- package/lib/map/MapCompass.tsx +68 -0
- package/lib/map/MapControlStack.tsx +97 -0
- package/lib/map/MapFooter.tsx +101 -0
- package/lib/map/MapProgressBar.tsx +55 -0
- package/lib/map/MapSearchBar.tsx +82 -0
- package/lib/map/MapSheet.tsx +71 -0
- package/lib/map/OverlayLayers.tsx +1 -1
- package/lib/map/PlaceAutocomplete.tsx +10 -21
- package/lib/map/PlaceMarker.tsx +4 -2
- package/lib/map/ResolvedPlaceLayers.tsx +5 -14
- package/lib/map/ResultCamera.tsx +8 -31
- package/lib/map/ResultOverlay.tsx +2 -12
- package/lib/map/ResultPanel.tsx +1 -20
- package/lib/map/VersionPicker.tsx +10 -19
- package/lib/map/fake-runtime.ts +10 -12
- package/lib/map/geometry.ts +14 -47
- package/lib/map/graticule.ts +80 -0
- package/lib/map/map-debug.ts +1 -1
- package/lib/map/place-render.ts +28 -60
- package/lib/map/types.ts +65 -97
- package/lib/map/useCompareState.ts +5 -4
- package/lib/map/useGeocode.ts +7 -5
- package/lib/map/useMapBearing.ts +56 -0
- package/lib/map/useMapLabelPick.ts +114 -0
- package/lib/map/useMapPlaceRender.ts +2 -6
- package/lib/map/usePlaceAutocomplete.ts +44 -50
- package/lib/map.ts +95 -0
- package/lib/pipeline/CandidatePicker.tsx +13 -5
- package/lib/pipeline/ConfidenceCell.tsx +1 -1
- package/lib/pipeline/FailureDiagnostic.tsx +8 -2
- package/lib/pipeline/QueryForm.tsx +5 -2
- package/lib/pipeline/ResolvedPlace.tsx +1 -1
- package/lib/pipeline/SpanHighlight.tsx +7 -5
- package/lib/pipeline/TimingPanel.tsx +1 -1
- package/lib/pipeline/TreeView.tsx +1 -1
- package/lib/pipeline/copy.ts +22 -25
- package/lib/pipeline/presets.ts +15 -13
- package/lib/pipeline/types.ts +21 -14
- package/lib/pipeline/useParsePipeline.ts +38 -24
- package/lib/pipeline.ts +36 -0
- package/lib/poi/AbstainPanel.tsx +1 -1
- package/lib/poi/LiveResultsBlock.tsx +2 -1
- package/lib/poi/POIExplorer.tsx +24 -15
- package/lib/poi/QueryInput.tsx +1 -1
- package/lib/poi/SubjectPanel.tsx +4 -3
- package/lib/poi/runtime.ts +5 -16
- package/lib/poi/types.ts +39 -27
- package/lib/poi/usePOISearch.ts +39 -44
- package/lib/poi.ts +39 -0
- package/lib/runtime/useReleaseRuntime.ts +125 -74
- package/lib/runtime.ts +16 -0
- package/lib/search/SearchModal.tsx +317 -0
- package/lib/search/search.css +144 -0
- package/lib/search/types.ts +67 -0
- package/lib/search.ts +11 -0
- package/out/common/About.d.ts +13 -4
- package/out/common/About.d.ts.map +1 -1
- package/out/common/About.js +5 -2
- package/out/common/About.js.map +1 -1
- package/out/common/ClientOnly.d.ts +2 -11
- package/out/common/ClientOnly.d.ts.map +1 -1
- package/out/common/ClientOnly.js +1 -13
- package/out/common/ClientOnly.js.map +1 -1
- package/out/common/CopyButton.d.ts +3 -1
- package/out/common/CopyButton.d.ts.map +1 -1
- package/out/common/CopyButton.js.map +1 -1
- package/out/common/LoadingIndicator.d.ts +4 -2
- package/out/common/LoadingIndicator.d.ts.map +1 -1
- package/out/common/LoadingIndicator.js.map +1 -1
- package/out/common/PresetChips.d.ts +9 -8
- package/out/common/PresetChips.d.ts.map +1 -1
- package/out/common/PresetChips.js.map +1 -1
- package/out/common/confidence-tiers.d.ts +7 -6
- package/out/common/confidence-tiers.d.ts.map +1 -1
- package/out/common/confidence-tiers.js +7 -6
- package/out/common/confidence-tiers.js.map +1 -1
- package/out/common/cx.d.ts +3 -1
- package/out/common/cx.d.ts.map +1 -1
- package/out/common/cx.js +3 -1
- package/out/common/cx.js.map +1 -1
- package/out/common/text-tokens.d.ts +4 -3
- package/out/common/text-tokens.d.ts.map +1 -1
- package/out/common/text-tokens.js +6 -3
- package/out/common/text-tokens.js.map +1 -1
- package/out/common/useBuildInfo.d.ts +27 -0
- package/out/common/useBuildInfo.d.ts.map +1 -0
- package/out/common/useBuildInfo.js +32 -0
- package/out/common/useBuildInfo.js.map +1 -0
- package/out/common/useClipboard.d.ts +1 -3
- package/out/common/useClipboard.d.ts.map +1 -1
- package/out/common/useClipboard.js +2 -11
- package/out/common/useClipboard.js.map +1 -1
- package/out/common.d.ts +22 -0
- package/out/common.d.ts.map +1 -0
- package/out/common.js +15 -0
- package/out/common.js.map +1 -0
- package/out/index.d.ts +26 -71
- package/out/index.d.ts.map +1 -1
- package/out/index.js +21 -47
- package/out/index.js.map +1 -1
- package/out/map/AppIdentity.d.ts +42 -0
- package/out/map/AppIdentity.d.ts.map +1 -0
- package/out/map/AppIdentity.js +16 -0
- package/out/map/AppIdentity.js.map +1 -0
- package/out/map/BackendControl.d.ts +9 -10
- package/out/map/BackendControl.d.ts.map +1 -1
- package/out/map/BackendControl.js +2 -2
- package/out/map/BackendControl.js.map +1 -1
- package/out/map/CompareToggle.d.ts +8 -31
- package/out/map/CompareToggle.d.ts.map +1 -1
- package/out/map/CompareToggle.js +5 -2
- package/out/map/CompareToggle.js.map +1 -1
- package/out/map/DebugInfo.d.ts +34 -0
- package/out/map/DebugInfo.d.ts.map +1 -0
- package/out/map/DebugInfo.js +39 -0
- package/out/map/DebugInfo.js.map +1 -0
- package/out/map/Geocoder.d.ts +47 -26
- package/out/map/Geocoder.d.ts.map +1 -1
- package/out/map/Geocoder.js +34 -50
- package/out/map/Geocoder.js.map +1 -1
- package/out/map/GeocoderControls.d.ts +23 -33
- package/out/map/GeocoderControls.d.ts.map +1 -1
- package/out/map/GeocoderControls.js +277 -16
- package/out/map/GeocoderControls.js.map +1 -1
- package/out/map/GraticuleLayer.d.ts +28 -0
- package/out/map/GraticuleLayer.d.ts.map +1 -0
- package/out/map/GraticuleLayer.js +25 -0
- package/out/map/GraticuleLayer.js.map +1 -0
- package/out/map/MapCanvas.d.ts +23 -12
- package/out/map/MapCanvas.d.ts.map +1 -1
- package/out/map/MapCanvas.js +5 -2
- package/out/map/MapCanvas.js.map +1 -1
- package/out/map/MapChipRow.d.ts +43 -0
- package/out/map/MapChipRow.d.ts.map +1 -0
- package/out/map/MapChipRow.js +12 -0
- package/out/map/MapChipRow.js.map +1 -0
- package/out/map/MapCompass.d.ts +33 -0
- package/out/map/MapCompass.d.ts.map +1 -0
- package/out/map/MapCompass.js +15 -0
- package/out/map/MapCompass.js.map +1 -0
- package/out/map/MapControlStack.d.ts +56 -0
- package/out/map/MapControlStack.d.ts.map +1 -0
- package/out/map/MapControlStack.js +18 -0
- package/out/map/MapControlStack.js.map +1 -0
- package/out/map/MapFooter.d.ts +27 -0
- package/out/map/MapFooter.d.ts.map +1 -0
- package/out/map/MapFooter.js +37 -0
- package/out/map/MapFooter.js.map +1 -0
- package/out/map/MapProgressBar.d.ts +31 -0
- package/out/map/MapProgressBar.d.ts.map +1 -0
- package/out/map/MapProgressBar.js +8 -0
- package/out/map/MapProgressBar.js.map +1 -0
- package/out/map/MapSearchBar.d.ts +48 -0
- package/out/map/MapSearchBar.d.ts.map +1 -0
- package/out/map/MapSearchBar.js +12 -0
- package/out/map/MapSearchBar.js.map +1 -0
- package/out/map/MapSheet.d.ts +35 -0
- package/out/map/MapSheet.d.ts.map +1 -0
- package/out/map/MapSheet.js +29 -0
- package/out/map/MapSheet.js.map +1 -0
- package/out/map/OverlayLayers.d.ts +1 -1
- package/out/map/OverlayLayers.js +2 -2
- package/out/map/PlaceAutocomplete.d.ts +10 -21
- package/out/map/PlaceAutocomplete.d.ts.map +1 -1
- package/out/map/PlaceAutocomplete.js +2 -1
- package/out/map/PlaceAutocomplete.js.map +1 -1
- package/out/map/PlaceMarker.d.ts +4 -2
- package/out/map/PlaceMarker.d.ts.map +1 -1
- package/out/map/PlaceMarker.js +3 -1
- package/out/map/PlaceMarker.js.map +1 -1
- package/out/map/ResolvedPlaceLayers.d.ts +5 -14
- package/out/map/ResolvedPlaceLayers.d.ts.map +1 -1
- package/out/map/ResolvedPlaceLayers.js +2 -2
- package/out/map/ResolvedPlaceLayers.js.map +1 -1
- package/out/map/ResultCamera.d.ts +8 -31
- package/out/map/ResultCamera.d.ts.map +1 -1
- package/out/map/ResultCamera.js +3 -28
- package/out/map/ResultCamera.js.map +1 -1
- package/out/map/ResultOverlay.d.ts +2 -12
- package/out/map/ResultOverlay.d.ts.map +1 -1
- package/out/map/ResultOverlay.js +1 -2
- package/out/map/ResultOverlay.js.map +1 -1
- package/out/map/ResultPanel.d.ts +1 -20
- package/out/map/ResultPanel.d.ts.map +1 -1
- package/out/map/ResultPanel.js +1 -1
- package/out/map/ResultPanel.js.map +1 -1
- package/out/map/VersionPicker.d.ts +7 -19
- package/out/map/VersionPicker.d.ts.map +1 -1
- package/out/map/VersionPicker.js +5 -2
- package/out/map/VersionPicker.js.map +1 -1
- package/out/map/fake-runtime.d.ts +9 -11
- package/out/map/fake-runtime.d.ts.map +1 -1
- package/out/map/fake-runtime.js +9 -12
- package/out/map/fake-runtime.js.map +1 -1
- package/out/map/geometry.d.ts +13 -34
- package/out/map/geometry.d.ts.map +1 -1
- package/out/map/geometry.js +9 -34
- package/out/map/geometry.js.map +1 -1
- package/out/map/graticule.d.ts +17 -0
- package/out/map/graticule.d.ts.map +1 -0
- package/out/map/graticule.js +67 -0
- package/out/map/graticule.js.map +1 -0
- package/out/map/map-debug.d.ts +1 -1
- package/out/map/map-debug.d.ts.map +1 -1
- package/out/map/map-debug.js +1 -1
- package/out/map/map-debug.js.map +1 -1
- package/out/map/place-render.d.ts +23 -43
- package/out/map/place-render.d.ts.map +1 -1
- package/out/map/place-render.js +4 -39
- package/out/map/place-render.js.map +1 -1
- package/out/map/types.d.ts +67 -95
- package/out/map/types.d.ts.map +1 -1
- package/out/map/types.js +1 -10
- package/out/map/types.js.map +1 -1
- package/out/map/useCompareState.d.ts +5 -4
- package/out/map/useCompareState.d.ts.map +1 -1
- package/out/map/useCompareState.js +3 -3
- package/out/map/useCompareState.js.map +1 -1
- package/out/map/useGeocode.d.ts +5 -3
- package/out/map/useGeocode.d.ts.map +1 -1
- package/out/map/useGeocode.js +4 -4
- package/out/map/useGeocode.js.map +1 -1
- package/out/map/useMapBearing.d.ts +28 -0
- package/out/map/useMapBearing.d.ts.map +1 -0
- package/out/map/useMapBearing.js +30 -0
- package/out/map/useMapBearing.js.map +1 -0
- package/out/map/useMapLabelPick.d.ts +13 -0
- package/out/map/useMapLabelPick.d.ts.map +1 -0
- package/out/map/useMapLabelPick.js +95 -0
- package/out/map/useMapLabelPick.js.map +1 -0
- package/out/map/useMapPlaceRender.d.ts +2 -6
- package/out/map/useMapPlaceRender.d.ts.map +1 -1
- package/out/map/useMapPlaceRender.js +2 -6
- package/out/map/useMapPlaceRender.js.map +1 -1
- package/out/map/usePlaceAutocomplete.d.ts +30 -28
- package/out/map/usePlaceAutocomplete.d.ts.map +1 -1
- package/out/map/usePlaceAutocomplete.js +6 -33
- package/out/map/usePlaceAutocomplete.js.map +1 -1
- package/out/map.d.ts +69 -0
- package/out/map.d.ts.map +1 -0
- package/out/map.js +46 -0
- package/out/map.js.map +1 -0
- package/out/pipeline/CandidatePicker.d.ts +12 -2
- package/out/pipeline/CandidatePicker.d.ts.map +1 -1
- package/out/pipeline/CandidatePicker.js +2 -2
- package/out/pipeline/CandidatePicker.js.map +1 -1
- package/out/pipeline/ConfidenceCell.d.ts +1 -1
- package/out/pipeline/ConfidenceCell.js +1 -1
- package/out/pipeline/FailureDiagnostic.d.ts +8 -2
- package/out/pipeline/FailureDiagnostic.d.ts.map +1 -1
- package/out/pipeline/FailureDiagnostic.js +3 -0
- package/out/pipeline/FailureDiagnostic.js.map +1 -1
- package/out/pipeline/PipelineExplorer.js +1 -1
- package/out/pipeline/QueryForm.d.ts +5 -2
- package/out/pipeline/QueryForm.d.ts.map +1 -1
- package/out/pipeline/QueryForm.js +1 -1
- package/out/pipeline/QueryForm.js.map +1 -1
- package/out/pipeline/ResolvedPlace.js +1 -1
- package/out/pipeline/SpanHighlight.d.ts +4 -3
- package/out/pipeline/SpanHighlight.d.ts.map +1 -1
- package/out/pipeline/SpanHighlight.js +3 -2
- package/out/pipeline/SpanHighlight.js.map +1 -1
- package/out/pipeline/TimingPanel.d.ts +1 -1
- package/out/pipeline/TimingPanel.js +1 -1
- package/out/pipeline/TreeView.d.ts +1 -1
- package/out/pipeline/copy.d.ts +1 -1
- package/out/pipeline/copy.d.ts.map +1 -1
- package/out/pipeline/copy.js +4 -3
- package/out/pipeline/copy.js.map +1 -1
- package/out/pipeline/presets.d.ts +5 -4
- package/out/pipeline/presets.d.ts.map +1 -1
- package/out/pipeline/presets.js +15 -13
- package/out/pipeline/presets.js.map +1 -1
- package/out/pipeline/types.d.ts +21 -14
- package/out/pipeline/types.d.ts.map +1 -1
- package/out/pipeline/types.js +2 -4
- package/out/pipeline/types.js.map +1 -1
- package/out/pipeline/useParsePipeline.d.ts +15 -7
- package/out/pipeline/useParsePipeline.d.ts.map +1 -1
- package/out/pipeline/useParsePipeline.js +10 -7
- package/out/pipeline/useParsePipeline.js.map +1 -1
- package/out/pipeline.d.ts +33 -0
- package/out/pipeline.d.ts.map +1 -0
- package/out/pipeline.js +21 -0
- package/out/pipeline.js.map +1 -0
- package/out/poi/AbstainPanel.d.ts +1 -1
- package/out/poi/LiveResultsBlock.d.ts +2 -1
- package/out/poi/LiveResultsBlock.d.ts.map +1 -1
- package/out/poi/LiveResultsBlock.js +1 -1
- package/out/poi/LiveResultsBlock.js.map +1 -1
- package/out/poi/POIExplorer.d.ts +22 -12
- package/out/poi/POIExplorer.d.ts.map +1 -1
- package/out/poi/POIExplorer.js +10 -9
- package/out/poi/POIExplorer.js.map +1 -1
- package/out/poi/QueryInput.d.ts +1 -1
- package/out/poi/SubjectPanel.d.ts +2 -2
- package/out/poi/SubjectPanel.d.ts.map +1 -1
- package/out/poi/SubjectPanel.js +3 -2
- package/out/poi/SubjectPanel.js.map +1 -1
- package/out/poi/runtime.d.ts +5 -14
- package/out/poi/runtime.d.ts.map +1 -1
- package/out/poi/runtime.js +5 -16
- package/out/poi/runtime.js.map +1 -1
- package/out/poi/types.d.ts +39 -27
- package/out/poi/types.d.ts.map +1 -1
- package/out/poi/types.js +2 -4
- package/out/poi/types.js.map +1 -1
- package/out/poi/usePOISearch.d.ts +28 -17
- package/out/poi/usePOISearch.d.ts.map +1 -1
- package/out/poi/usePOISearch.js +6 -32
- package/out/poi/usePOISearch.js.map +1 -1
- package/out/poi.d.ts +23 -0
- package/out/poi.d.ts.map +1 -0
- package/out/poi.js +15 -0
- package/out/poi.js.map +1 -0
- package/out/runtime/useReleaseRuntime.d.ts +64 -65
- package/out/runtime/useReleaseRuntime.d.ts.map +1 -1
- package/out/runtime/useReleaseRuntime.js +31 -26
- package/out/runtime/useReleaseRuntime.js.map +1 -1
- package/out/runtime.d.ts +9 -0
- package/out/runtime.d.ts.map +1 -0
- package/out/runtime.js +8 -0
- package/out/runtime.js.map +1 -0
- package/out/search/SearchModal.d.ts +33 -0
- package/out/search/SearchModal.d.ts.map +1 -0
- package/out/search/SearchModal.js +187 -0
- package/out/search/SearchModal.js.map +1 -0
- package/out/search/types.d.ts +64 -0
- package/out/search/types.d.ts.map +1 -0
- package/out/search/types.js +13 -0
- package/out/search/types.js.map +1 -0
- package/out/search.d.ts +11 -0
- package/out/search.d.ts.map +1 -0
- package/out/search.js +9 -0
- package/out/search.js.map +1 -0
- package/package.json +132 -133
- package/styles.css +1340 -202
- package/tokens/index.css +26 -7
- package/tokens/tokens.json +121 -6
- package/tokens/tokens.resolver.json +1 -1
- package/lib/map/index.ts +0 -76
- package/out/map/index.d.ts +0 -52
- package/out/map/index.d.ts.map +0 -1
- package/out/map/index.js +0 -36
- package/out/map/index.js.map +0 -1
- package/styleframe.config.ts +0 -321
- package/vitest.node.config.ts +0 -20
package/out/map/place-render.js
CHANGED
|
@@ -2,49 +2,22 @@
|
|
|
2
2
|
* @copyright Sister Software
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* `computeMapPlaceRenderSpec` — the PURE core that replaces the docs demo's ~100-line imperative
|
|
7
|
-
* marker/bbox/camera redraw effect (`_app.tsx:601-705`). It takes an ALREADY-RESOLVED place (the async
|
|
8
|
-
* polygon-DB fetch is a host/runtime concern — a later phase — so a crisp polygon arrives pre-fetched
|
|
9
|
-
* as `place.geometry`) and returns a declarative render spec: the marker position(s), the outline
|
|
10
|
-
* geometry to draw, and the camera target. No map instance, no DOM, no `react-map-gl` — so it is
|
|
11
|
-
* node-testable (see `place-render.node.test.ts`). The declarative components in this folder render
|
|
12
|
-
* the spec; a controlled-viewport consumer applies the camera.
|
|
13
|
-
*
|
|
14
|
-
* The decision cascade is a faithful, side-effect-free transcription of the imperative effect:
|
|
15
|
-
* 1. street tier (situs / interp) → exact-radius circle, fly to a tight zoom
|
|
16
|
-
* 2. crisp admin polygon (pre-fetched) → draw the polygon, fit its bounds
|
|
17
|
-
* 3. anchor-centroid postcode (no bbox) → ~3 km "around here" circle, fly to zoom 11
|
|
18
|
-
* 4. bbox with real extent → bbox-sized approximate circle, fit the bbox
|
|
19
|
-
* 5. bare point → no outline, fly to zoom 12
|
|
20
5
|
*/
|
|
21
6
|
import { approxCircleGeometry, bboxToBounds, geomBounds, radiusCircleGeometry } from "#map/geometry";
|
|
22
|
-
/**
|
|
23
|
-
* Zoom levels the imperative effect flew to, kept named so the cascade reads as intent, not magic numbers.
|
|
24
|
-
*/
|
|
25
7
|
const ZOOM = {
|
|
26
8
|
addressPoint: 17,
|
|
27
9
|
interpolated: 15,
|
|
28
10
|
postcode: 11,
|
|
29
11
|
point: 12,
|
|
30
12
|
};
|
|
31
|
-
/**
|
|
32
|
-
* Padding (px) `fitBounds` insets a fitted box by, matching the ported effect.
|
|
33
|
-
*/
|
|
34
13
|
const FIT_PADDING = 40;
|
|
35
|
-
/**
|
|
36
|
-
* The minimum lat/lon span (degrees) a bbox must exceed to be treated as a real extent rather than a point.
|
|
37
|
-
*/
|
|
38
14
|
const MIN_EXTENT_DEG = 0.001;
|
|
39
15
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* inverse of the old redraw effect with the imperative map mutation and the async DB load removed.
|
|
16
|
+
* Computes the markers, outline and camera target for a resolved place without loading data,
|
|
17
|
+
* so the caller must put any fetched polygon in `place.geometry` first.
|
|
43
18
|
*/
|
|
44
19
|
export function computeMapPlaceRenderSpec(place) {
|
|
45
20
|
const markers = [[place.lon, place.lat]];
|
|
46
|
-
// 1. Street tier (#377): the honest uncertainty circle (exact meter radius) + a tight zoom. Takes precedence over
|
|
47
|
-
// the admin polygon/bbox paths — a precise point gets no admin boundary.
|
|
48
21
|
if (place.tier && place.uncertaintyM != null) {
|
|
49
22
|
return {
|
|
50
23
|
markers,
|
|
@@ -56,7 +29,6 @@ export function computeMapPlaceRenderSpec(place) {
|
|
|
56
29
|
},
|
|
57
30
|
};
|
|
58
31
|
}
|
|
59
|
-
// 2. Crisp admin polygon (host pre-fetched it from the polygon DB) — draw the real boundary and fit it.
|
|
60
32
|
if (place.geometry) {
|
|
61
33
|
return {
|
|
62
34
|
markers,
|
|
@@ -64,8 +36,6 @@ export function computeMapPlaceRenderSpec(place) {
|
|
|
64
36
|
camera: { kind: "bounds", bounds: bboxToBounds(geomBounds(place.geometry)), padding: FIT_PADDING },
|
|
65
37
|
};
|
|
66
38
|
}
|
|
67
|
-
// 3. Anchor-centroid postcode: no bbox, no polygon — a default ~3 km circle says "approximately here" without
|
|
68
|
-
// inventing a boundary.
|
|
69
39
|
if (!place.bbox && place.placetype === "postcode") {
|
|
70
40
|
return {
|
|
71
41
|
markers,
|
|
@@ -73,8 +43,6 @@ export function computeMapPlaceRenderSpec(place) {
|
|
|
73
43
|
camera: { kind: "center", center: [place.lon, place.lat], zoom: ZOOM.postcode },
|
|
74
44
|
};
|
|
75
45
|
}
|
|
76
|
-
// 4. A bbox with real extent — draw an approximate CIRCLE sized from the bbox (a rectangle would read as a wrong,
|
|
77
|
-
// real boundary) and fit the bbox.
|
|
78
46
|
const bbox = place.bbox;
|
|
79
47
|
if (bbox && Math.max(bbox.maxLat - bbox.minLat, bbox.maxLon - bbox.minLon) > MIN_EXTENT_DEG) {
|
|
80
48
|
return {
|
|
@@ -83,7 +51,6 @@ export function computeMapPlaceRenderSpec(place) {
|
|
|
83
51
|
camera: { kind: "bounds", bounds: bboxToBounds(bbox), padding: FIT_PADDING },
|
|
84
52
|
};
|
|
85
53
|
}
|
|
86
|
-
// 5. A bare point (no tier, no polygon, no meaningful bbox) — just a marker and a mid zoom.
|
|
87
54
|
return {
|
|
88
55
|
markers,
|
|
89
56
|
outline: null,
|
|
@@ -91,10 +58,8 @@ export function computeMapPlaceRenderSpec(place) {
|
|
|
91
58
|
};
|
|
92
59
|
}
|
|
93
60
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* needs the map's pixel dimensions, which only the live map has, so that case is applied imperatively by
|
|
97
|
-
* `<ResultCamera>`. Pure + node-testable.
|
|
61
|
+
* Converts a `center` camera target into a `viewState` patch for a controlled `<MapCanvas>`,
|
|
62
|
+
* returning `null` for a `bounds` target that `<ResultCamera>` must fit imperatively.
|
|
98
63
|
*/
|
|
99
64
|
export function cameraToViewState(camera) {
|
|
100
65
|
if (camera.kind !== "center")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-render.js","sourceRoot":"","sources":["../../lib/map/place-render.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"place-render.js","sourceRoot":"","sources":["../../lib/map/place-render.ts"],"names":[],"mappings":"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"}
|
package/out/map/types.d.ts
CHANGED
|
@@ -3,66 +3,42 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
* Types for the geocoder map surface.
|
|
7
|
-
* machine + the declarative map, while the host injects a {@link GeocoderRuntime} that owns ONNX / httpvfs
|
|
8
|
-
* / R2 and the composed map style. {@link GeocoderRuntime} EXTENDS {@link PipelineRuntime} so the shared
|
|
9
|
-
* `runParse` / `parseStageLabels` / `loading` contract is reused, and adds the map-specific surface
|
|
10
|
-
* (style, overlays, initial center, viewport bias, backend/version selection). Phase 4 adds the
|
|
11
|
-
* `resolveMapPlace` enricher, the {@link GeocoderPanels} injection bag, and the {@link CompareContext}.
|
|
12
|
-
*
|
|
13
|
-
* The map-spec types are imported type-only from `react-map-gl/maplibre`; nothing here loads maplibre at
|
|
14
|
-
* runtime, so this module stays node-safe (its concrete-value CONSUMERS — `MapCanvas`, `Geocoder` —
|
|
15
|
-
* are the ones behind the `@mailwoman/react/map` subpath).
|
|
6
|
+
* Types for the geocoder map surface. Its `react-map-gl/maplibre` imports are type-only, so the module stays node-safe.
|
|
16
7
|
*/
|
|
17
8
|
import type { ParseResult, ResolvedPlaceView } from "@mailwoman/core/pipeline/client-result";
|
|
18
9
|
import type { ReactNode } from "react";
|
|
19
|
-
import type { LayerSpecification, SourceSpecification } from "react-map-gl/maplibre";
|
|
10
|
+
import type { LayerSpecification, MapInstance, SourceSpecification } from "react-map-gl/maplibre";
|
|
20
11
|
import type { LngLat, ResolvedMapPlace } from "#map/place-render";
|
|
21
12
|
import type { PipelineRuntime } from "#pipeline/types";
|
|
22
13
|
import type { MapCanvasStyle } from "./MapCanvas.tsx";
|
|
23
14
|
/**
|
|
24
|
-
*
|
|
15
|
+
* An alias for {@link LngLat}.
|
|
25
16
|
*
|
|
26
|
-
* @deprecated Alias kept for existing imports — {@link LngLat}
|
|
17
|
+
* @deprecated Alias kept for existing imports — {@link LngLat}
|
|
18
|
+
* (from `@mailwoman/react/map`) is the canonical name.
|
|
27
19
|
*/
|
|
28
20
|
export type LngLatTuple = LngLat;
|
|
29
21
|
/**
|
|
30
22
|
* A viewport bias handed to `runParse` — the map's current center (and optionally zoom) as a soft prior.
|
|
31
23
|
*/
|
|
32
24
|
export interface MapBias {
|
|
33
|
-
/**
|
|
34
|
-
* Map center as `[lon, lat]`, typically read from `map.getCenter()`.
|
|
35
|
-
*/
|
|
36
25
|
center: LngLat;
|
|
37
|
-
/**
|
|
38
|
-
* Current zoom, if the host wants distance-aware biasing.
|
|
39
|
-
*/
|
|
40
26
|
zoom?: number;
|
|
41
27
|
}
|
|
42
28
|
/**
|
|
43
|
-
* A host-supplied overlay: one map `<Source>` plus one or more `<Layer>`s laid over the basemap
|
|
44
|
-
* race-dots, …). The host composes the specs; the package renders them declaratively in a later phase.
|
|
29
|
+
* A host-supplied overlay: one map `<Source>` plus one or more `<Layer>`s laid over the basemap.
|
|
45
30
|
*/
|
|
46
31
|
export interface OverlaySpec {
|
|
47
32
|
/**
|
|
48
33
|
* Stable id — used as the `<Source>` id and the layer-id prefix.
|
|
49
34
|
*/
|
|
50
35
|
id: string;
|
|
51
|
-
/**
|
|
52
|
-
* The map source spec (vector/geojson/raster).
|
|
53
|
-
*/
|
|
54
36
|
source: SourceSpecification;
|
|
55
|
-
/**
|
|
56
|
-
* The layers drawn from that source.
|
|
57
|
-
*/
|
|
58
37
|
layers: LayerSpecification[];
|
|
59
38
|
/**
|
|
60
|
-
*
|
|
39
|
+
* @default true
|
|
61
40
|
*/
|
|
62
41
|
visible?: boolean;
|
|
63
|
-
/**
|
|
64
|
-
* Human label for a layer-toggle control.
|
|
65
|
-
*/
|
|
66
42
|
label?: string;
|
|
67
43
|
}
|
|
68
44
|
/**
|
|
@@ -87,11 +63,12 @@ export interface Suggestion {
|
|
|
87
63
|
*/
|
|
88
64
|
export interface VersionOption {
|
|
89
65
|
/**
|
|
90
|
-
* The version tag
|
|
66
|
+
* The version tag, such as a git tag or model-card version.
|
|
91
67
|
*/
|
|
92
68
|
version: string;
|
|
93
69
|
/**
|
|
94
|
-
* Display label
|
|
70
|
+
* Display label.
|
|
71
|
+
* The picker falls back to `version`.
|
|
95
72
|
*/
|
|
96
73
|
label?: string;
|
|
97
74
|
}
|
|
@@ -100,32 +77,26 @@ export interface VersionOption {
|
|
|
100
77
|
*/
|
|
101
78
|
export type InferenceBackend = "webgpu" | "wasm";
|
|
102
79
|
/**
|
|
103
|
-
* The injected geocoder runtime
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* `@mailwoman/neural`'s web loader, httpvfs, or Docusaurus.
|
|
80
|
+
* The injected geocoder runtime extends {@link PipelineRuntime} with the map.
|
|
81
|
+
* It also supplies version and backend controls.
|
|
82
|
+
*
|
|
83
|
+
* The package imports no `@mailwoman/cartographer`, `@mailwoman/neural` web loader, httpvfs, or Docusaurus.
|
|
108
84
|
*/
|
|
109
85
|
export interface GeocoderRuntime extends PipelineRuntime {
|
|
110
86
|
/**
|
|
111
87
|
* The composed basemap style (URL or `StyleSpecification`).
|
|
112
88
|
*/
|
|
113
89
|
mapStyle: MapCanvasStyle;
|
|
114
|
-
/**
|
|
115
|
-
* Host-supplied overlays (coverage, race-dots, …).
|
|
116
|
-
*/
|
|
117
90
|
overlays?: OverlaySpec[];
|
|
118
91
|
/**
|
|
119
|
-
* Initial map center as `[lon, lat]
|
|
92
|
+
* Initial map center as `[lon, lat]`.
|
|
120
93
|
*/
|
|
121
94
|
initialCenter: LngLat;
|
|
122
|
-
/**
|
|
123
|
-
* Initial zoom for the first camera.
|
|
124
|
-
*/
|
|
125
95
|
initialZoom?: number;
|
|
126
96
|
/**
|
|
127
|
-
* A bias-aware parse
|
|
128
|
-
*
|
|
97
|
+
* A bias-aware parse that feeds the current viewport center as a soft prior.
|
|
98
|
+
*
|
|
99
|
+
* Absent, the host falls back to {@link PipelineRuntime.runParse}.
|
|
129
100
|
*/
|
|
130
101
|
runParseWithBias?: (input: string, bias: MapBias | null, hooks: {
|
|
131
102
|
onStage: (stage: number) => void;
|
|
@@ -139,20 +110,23 @@ export interface GeocoderRuntime extends PipelineRuntime {
|
|
|
139
110
|
*/
|
|
140
111
|
calibrator?: (raw: number) => number | null;
|
|
141
112
|
/**
|
|
142
|
-
* Enrich the selected candidate into the richer {@link ResolvedMapPlace} the declarative
|
|
143
|
-
* street tier + uncertainty, a pre-fetched crisp polygon) —
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
113
|
+
* Enrich the selected candidate into the richer {@link ResolvedMapPlace} the declarative
|
|
114
|
+
* map render consumes (bbox, street tier + uncertainty, a pre-fetched crisp polygon) —
|
|
115
|
+
* the fields that live on the host's `ResolvedHit` but not on the shared {@link ResolvedPlaceView}.
|
|
116
|
+
*
|
|
117
|
+
* The host owns this because those extras (and the async polygon fetch in the real runtime)
|
|
118
|
+
* are host/gazetteer concerns.
|
|
119
|
+
* The package keeps {@link ParseResult} unpolluted.
|
|
120
|
+
*
|
|
121
|
+
* Absent → the candidate renders as a bare point (marker + a mid-zoom fly-to).
|
|
122
|
+
*
|
|
123
|
+
* A `null` result also renders no overlay.
|
|
147
124
|
*/
|
|
148
125
|
resolveMapPlace?: (candidate: ResolvedPlaceView, result: ParseResult) => ResolvedMapPlace | null;
|
|
149
126
|
/**
|
|
150
127
|
* The selectable model bundles the version picker offers.
|
|
151
128
|
*/
|
|
152
129
|
availableVersions?: VersionOption[];
|
|
153
|
-
/**
|
|
154
|
-
* The currently-selected model version.
|
|
155
|
-
*/
|
|
156
130
|
selectedVersion?: string;
|
|
157
131
|
/**
|
|
158
132
|
* Switch the active model bundle (re-loads weights/tokenizer/gazetteer).
|
|
@@ -163,26 +137,23 @@ export interface GeocoderRuntime extends PipelineRuntime {
|
|
|
163
137
|
*/
|
|
164
138
|
activeBackend?: string;
|
|
165
139
|
/**
|
|
166
|
-
* Whether the CPU/
|
|
140
|
+
* Whether the CPU/wasm backend is currently forced (the controlled value for the backend toggle).
|
|
167
141
|
*/
|
|
168
142
|
forceWASM?: boolean;
|
|
169
143
|
/**
|
|
170
|
-
* Force the
|
|
144
|
+
* Force the wasm backend (opt out of WebGPU), for the backend toggle.
|
|
171
145
|
*/
|
|
172
146
|
setForceWASM?: (forceWASM: boolean) => void;
|
|
173
147
|
}
|
|
174
148
|
/**
|
|
175
|
-
* The compare-mode state a {@link GeocoderPanels.compare} render-prop receives
|
|
176
|
-
* host-side
|
|
149
|
+
* The compare-mode state a {@link GeocoderPanels.compare} render-prop receives.
|
|
150
|
+
* the second parse itself stays host-side.
|
|
177
151
|
*/
|
|
178
152
|
export interface CompareContext {
|
|
179
153
|
/**
|
|
180
154
|
* The current primary parse result, or `null` before the first submit.
|
|
181
155
|
*/
|
|
182
156
|
result: ParseResult | null;
|
|
183
|
-
/**
|
|
184
|
-
* Whether the compare toggle is on.
|
|
185
|
-
*/
|
|
186
157
|
compareMode: boolean;
|
|
187
158
|
/**
|
|
188
159
|
* The version selected to compare against, or `null` when none is chosen.
|
|
@@ -190,38 +161,28 @@ export interface CompareContext {
|
|
|
190
161
|
compareVersion: string | null;
|
|
191
162
|
}
|
|
192
163
|
/**
|
|
193
|
-
* The state a {@link GeocoderPanels.result} render-prop receives, so a host can render its
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* by the package (`useGeocode`).
|
|
164
|
+
* The state a {@link GeocoderPanels.result} render-prop receives, so a host can render its own result block.
|
|
165
|
+
*
|
|
166
|
+
* The candidate-selection state stays owned by the package (`useGeocode`).
|
|
197
167
|
*/
|
|
198
168
|
export interface ResultContext {
|
|
199
|
-
/**
|
|
200
|
-
* The current parse+resolve result.
|
|
201
|
-
*/
|
|
202
169
|
result: ParseResult;
|
|
203
170
|
/**
|
|
204
171
|
* The selected candidate (falls back to the first), enriched for the resolved-place detail.
|
|
205
172
|
*/
|
|
206
173
|
selectedCandidate: ResolvedPlaceView | null;
|
|
207
|
-
/**
|
|
208
|
-
* The selected candidate index, for the picker's active state.
|
|
209
|
-
*/
|
|
210
174
|
selectedCandidateIndex: number;
|
|
211
|
-
/**
|
|
212
|
-
* Fired when a candidate in the picker is chosen.
|
|
213
|
-
*/
|
|
214
175
|
onSelectCandidate: (index: number) => void;
|
|
215
176
|
}
|
|
216
177
|
/**
|
|
217
|
-
* Host-injected panels for {@link Geocoder}, the map analogue of `PipelinePanels`.
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
178
|
+
* Host-injected panels for {@link Geocoder}, the map analogue of `PipelinePanels`.
|
|
179
|
+
*
|
|
180
|
+
* Each is an already-rendered `ReactNode` or a thunk.
|
|
181
|
+
* Every field is optional.
|
|
221
182
|
*/
|
|
222
183
|
export interface GeocoderPanels {
|
|
223
184
|
/**
|
|
224
|
-
* Rendered at the top of the control panel
|
|
185
|
+
* Rendered at the top of the control panel, such as the host's "About this geocoder".
|
|
225
186
|
*/
|
|
226
187
|
header?: ReactNode;
|
|
227
188
|
/**
|
|
@@ -229,13 +190,13 @@ export interface GeocoderPanels {
|
|
|
229
190
|
*/
|
|
230
191
|
releaseInfo?: ReactNode;
|
|
231
192
|
/**
|
|
232
|
-
* Rendered at the bottom of the control panel
|
|
193
|
+
* Rendered at the bottom of the control panel, such as a guided tour.
|
|
233
194
|
*/
|
|
234
195
|
footer?: ReactNode;
|
|
235
196
|
/**
|
|
236
|
-
* A device-location / proximity-bias control, rendered between the query form and the autocomplete list
|
|
237
|
-
*
|
|
238
|
-
* {@link GeocoderRuntime.runParseWithBias}
|
|
197
|
+
* A device-location / proximity-bias control, rendered between the query form and the autocomplete list.
|
|
198
|
+
*
|
|
199
|
+
* Host-owned because the geolocation permission feeds {@link GeocoderRuntime.runParseWithBias}.
|
|
239
200
|
*/
|
|
240
201
|
bias?: ReactNode;
|
|
241
202
|
/**
|
|
@@ -243,22 +204,27 @@ export interface GeocoderPanels {
|
|
|
243
204
|
*/
|
|
244
205
|
extras?: (result: ParseResult) => ReactNode;
|
|
245
206
|
/**
|
|
246
|
-
* Rendered just above the result block
|
|
247
|
-
*
|
|
248
|
-
* renderers those toggles drive.
|
|
207
|
+
* Rendered just above the result block for content that reads on this answer. a
|
|
208
|
+
* control that reads on the model belongs in {@link developerExtras}.
|
|
249
209
|
*/
|
|
250
210
|
aboveResult?: (context: {
|
|
251
211
|
result: ParseResult | null;
|
|
252
212
|
}) => ReactNode;
|
|
253
213
|
/**
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
|
|
214
|
+
* Host controls appended to the Developer sheet.
|
|
215
|
+
* The host owns their state and renderers.
|
|
216
|
+
*/
|
|
217
|
+
developerExtras?: ReactNode;
|
|
218
|
+
/**
|
|
219
|
+
* Replaces the package's default {@link ResultPanel}.
|
|
220
|
+
*
|
|
221
|
+
* When absent, the built-in panel renders.
|
|
222
|
+
* When provided, the host renders from {@link ResultContext}.
|
|
257
223
|
*/
|
|
258
224
|
result?: (context: ResultContext) => ReactNode;
|
|
259
225
|
/**
|
|
260
|
-
* Rendered in place of the resolved-place panel when
|
|
261
|
-
* {@link result} is set.
|
|
226
|
+
* Rendered in place of the resolved-place panel when no place resolved. ignored
|
|
227
|
+
* when {@link result} is set.
|
|
262
228
|
*/
|
|
263
229
|
failure?: (result: ParseResult) => ReactNode;
|
|
264
230
|
/**
|
|
@@ -266,9 +232,8 @@ export interface GeocoderPanels {
|
|
|
266
232
|
*/
|
|
267
233
|
compare?: (context: CompareContext) => ReactNode;
|
|
268
234
|
/**
|
|
269
|
-
* The model-visualizer / debug drawer
|
|
270
|
-
*
|
|
271
|
-
* dev-mode state and returns `null` when the drawer is closed.
|
|
235
|
+
* The model-visualizer / debug drawer mounted beside the map, as a render-prop
|
|
236
|
+
* receiving the live result and returning `null` when closed.
|
|
272
237
|
*/
|
|
273
238
|
debugDrawer?: (context: {
|
|
274
239
|
result: ParseResult | null;
|
|
@@ -277,6 +242,13 @@ export interface GeocoderPanels {
|
|
|
277
242
|
* Extra map controls mounted as `<MapCanvas>` children (host's DebugControl / LayerToggle via `useControl`).
|
|
278
243
|
*/
|
|
279
244
|
mapControls?: ReactNode;
|
|
245
|
+
/**
|
|
246
|
+
* A layer control rendered in the chrome's top column, as a render-prop over the
|
|
247
|
+
* live map handle (null until the map instantiates).
|
|
248
|
+
*/
|
|
249
|
+
layers?: (context: {
|
|
250
|
+
map: MapInstance | null;
|
|
251
|
+
}) => ReactNode;
|
|
280
252
|
/**
|
|
281
253
|
* A permalink control for the current address (host's PermalinkButton).
|
|
282
254
|
*/
|
package/out/map/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/map/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/map/types.ts"],"names":[],"mappings":"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"}
|
package/out/map/types.js
CHANGED
|
@@ -3,16 +3,7 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
* Types for the geocoder map surface.
|
|
7
|
-
* machine + the declarative map, while the host injects a {@link GeocoderRuntime} that owns ONNX / httpvfs
|
|
8
|
-
* / R2 and the composed map style. {@link GeocoderRuntime} EXTENDS {@link PipelineRuntime} so the shared
|
|
9
|
-
* `runParse` / `parseStageLabels` / `loading` contract is reused, and adds the map-specific surface
|
|
10
|
-
* (style, overlays, initial center, viewport bias, backend/version selection). Phase 4 adds the
|
|
11
|
-
* `resolveMapPlace` enricher, the {@link GeocoderPanels} injection bag, and the {@link CompareContext}.
|
|
12
|
-
*
|
|
13
|
-
* The map-spec types are imported type-only from `react-map-gl/maplibre`; nothing here loads maplibre at
|
|
14
|
-
* runtime, so this module stays node-safe (its concrete-value CONSUMERS — `MapCanvas`, `Geocoder` —
|
|
15
|
-
* are the ones behind the `@mailwoman/react/map` subpath).
|
|
6
|
+
* Types for the geocoder map surface. Its `react-map-gl/maplibre` imports are type-only, so the module stays node-safe.
|
|
16
7
|
*/
|
|
17
8
|
export {};
|
|
18
9
|
//# sourceMappingURL=types.js.map
|
package/out/map/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/map/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/map/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
6
|
* `useCompareState` — the small headless state machine behind the demo's compare toggle
|
|
7
|
-
* (`_app.tsx:142-143, 1238-1305`): whether compare mode is on
|
|
8
|
-
*
|
|
9
|
-
* rejected (the picker filters it out, this guards the programmatic path). The
|
|
7
|
+
* (`_app.tsx:142-143, 1238-1305`): whether compare mode is on and which version to compare against.
|
|
8
|
+
* The off state clears the chosen version. A selected compare version equal to the primary is
|
|
9
|
+
* rejected (the picker filters it out, this guards the programmatic path). The second parse itself is a
|
|
10
10
|
* host concern surfaced through `panels.compare` — this hook owns only the toggle + selection.
|
|
11
11
|
*/
|
|
12
12
|
export interface UseCompareState {
|
|
@@ -19,7 +19,8 @@ export interface UseCompareState {
|
|
|
19
19
|
*/
|
|
20
20
|
compareVersion: string | null;
|
|
21
21
|
/**
|
|
22
|
-
* Flip compare mode
|
|
22
|
+
* Flip compare mode.
|
|
23
|
+
* The off state clears the chosen version.
|
|
23
24
|
*/
|
|
24
25
|
setCompareMode: (compareMode: boolean) => void;
|
|
25
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCompareState.d.ts","sourceRoot":"","sources":["../../lib/map/useCompareState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B
|
|
1
|
+
{"version":3,"file":"useCompareState.d.ts","sourceRoot":"","sources":["../../lib/map/useCompareState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;;OAGG;IACH,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C;;OAEG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACnD;;OAEG;IACH,cAAc,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;CAChD;AAED,wBAAgB,eAAe,IAAI,eAAe,CAiBjD"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
6
|
* `useCompareState` — the small headless state machine behind the demo's compare toggle
|
|
7
|
-
* (`_app.tsx:142-143, 1238-1305`): whether compare mode is on
|
|
8
|
-
*
|
|
9
|
-
* rejected (the picker filters it out, this guards the programmatic path). The
|
|
7
|
+
* (`_app.tsx:142-143, 1238-1305`): whether compare mode is on and which version to compare against.
|
|
8
|
+
* The off state clears the chosen version. A selected compare version equal to the primary is
|
|
9
|
+
* rejected (the picker filters it out, this guards the programmatic path). The second parse itself is a
|
|
10
10
|
* host concern surfaced through `panels.compare` — this hook owns only the toggle + selection.
|
|
11
11
|
*/
|
|
12
12
|
import { useCallback, useState } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCompareState.js","sourceRoot":"","sources":["../../lib/map/useCompareState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useCompareState.js","sourceRoot":"","sources":["../../lib/map/useCompareState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AA0B7C,MAAM,UAAU,eAAe;IAC9B,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC1D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEzE,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,IAAa,EAAE,EAAE;QACpD,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,cAAsB,EAAE,EAAE;QAC7D,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACrE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;AAC1F,CAAC"}
|
package/out/map/useGeocode.d.ts
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
* `useGeocode` — the parse+resolve state machine for the geocoder map. It
|
|
6
|
+
* `useGeocode` — the parse+resolve state machine for the geocoder map. It reuses the pipeline's
|
|
7
7
|
* `useParsePipeline` (text / busy / stage / result / candidate selection) and layers on the two map-only
|
|
8
8
|
* concerns the geocoder adds over the base explorer:
|
|
9
9
|
*
|
|
10
10
|
* 1. Viewport bias — when the runtime exposes `runParseWithBias`, the current map center (read through
|
|
11
|
-
* an injected `getBias`, itself reading the `MapRef`)
|
|
11
|
+
* an injected `getBias`, itself reading the `MapRef`) supplies a soft proximity prior. The
|
|
12
12
|
* bias is injected by deriving a `runParse` that binds it, so `useParsePipeline` is reused verbatim.
|
|
13
13
|
* 2. The map render place — the selected candidate, enriched by the host's `resolveMapPlace` into the
|
|
14
14
|
* richer {@link ResolvedMapPlace} the declarative overlays consume (bbox / tier / polygon). Absent
|
|
@@ -30,7 +30,9 @@ export interface UseGeocodeOptions {
|
|
|
30
30
|
*/
|
|
31
31
|
defaultText: string;
|
|
32
32
|
/**
|
|
33
|
-
* Read the current viewport bias (the map center) at submit time.
|
|
33
|
+
* Read the current viewport bias (the map center) at submit time.
|
|
34
|
+
*
|
|
35
|
+
* Absent → no bias.
|
|
34
36
|
*/
|
|
35
37
|
getBias?: () => MapBias | null;
|
|
36
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGeocode.d.ts","sourceRoot":"","sources":["../../lib/map/useGeocode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAEpF,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB
|
|
1
|
+
{"version":3,"file":"useGeocode.d.ts","sourceRoot":"","sources":["../../lib/map/useGeocode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAEpF,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IACnD;;OAEG;IACH,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACjC;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,UAAU,CAyB3F"}
|
package/out/map/useGeocode.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*
|
|
6
|
-
* `useGeocode` — the parse+resolve state machine for the geocoder map. It
|
|
6
|
+
* `useGeocode` — the parse+resolve state machine for the geocoder map. It reuses the pipeline's
|
|
7
7
|
* `useParsePipeline` (text / busy / stage / result / candidate selection) and layers on the two map-only
|
|
8
8
|
* concerns the geocoder adds over the base explorer:
|
|
9
9
|
*
|
|
10
10
|
* 1. Viewport bias — when the runtime exposes `runParseWithBias`, the current map center (read through
|
|
11
|
-
* an injected `getBias`, itself reading the `MapRef`)
|
|
11
|
+
* an injected `getBias`, itself reading the `MapRef`) supplies a soft proximity prior. The
|
|
12
12
|
* bias is injected by deriving a `runParse` that binds it, so `useParsePipeline` is reused verbatim.
|
|
13
13
|
* 2. The map render place — the selected candidate, enriched by the host's `resolveMapPlace` into the
|
|
14
14
|
* richer {@link ResolvedMapPlace} the declarative overlays consume (bbox / tier / polygon). Absent
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
import { useMemo } from "react";
|
|
21
21
|
import { useParsePipeline } from "#pipeline/useParsePipeline";
|
|
22
22
|
export function useGeocode({ runtime, defaultText, getBias }) {
|
|
23
|
-
// Bind the viewport bias into a derived `runParse` so `useParsePipeline` is reused unchanged.
|
|
24
|
-
// bias-aware parse, pass it straight through.
|
|
23
|
+
// Bind the viewport bias into a derived `runParse` so `useParsePipeline` is reused unchanged.
|
|
24
|
+
// When the runtime has no bias-aware parse, pass it straight through.
|
|
25
25
|
const geoRuntime = useMemo(() => {
|
|
26
26
|
const withBias = runtime.runParseWithBias;
|
|
27
27
|
if (!withBias)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGeocode.js","sourceRoot":"","sources":["../../lib/map/useGeocode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAK/B,OAAO,EAAE,gBAAgB,EAAyB,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"useGeocode.js","sourceRoot":"","sources":["../../lib/map/useGeocode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAK/B,OAAO,EAAE,gBAAgB,EAAyB,MAAM,4BAA4B,CAAA;AA0BpF,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAqB;IAC9E,8FAA8F;IAC9F,sEAAsE;IACtE,MAAM,UAAU,GAAG,OAAO,CAAkB,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAEzC,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAA;QAE7B,OAAO;YACN,GAAG,OAAO;YACV,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,KAAK,CAAC;SACvE,CAAA;IACF,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAEtB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;IAEvE,MAAM,QAAQ,GAAG,OAAO,CAA0B,GAAG,EAAE;QACtD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAEhE,OAAO,OAAO,CAAC,eAAe;YAC7B,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAA;IAC9B,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAE1D,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*
|
|
6
|
+
* The map's rotation as React state, read through `useSyncExternalStore` and subscribed to `move` as well as `rotate`, since a `flyTo` or `easeTo` carrying a direction fires no rotate event.
|
|
7
|
+
*/
|
|
8
|
+
import type { MapInstance } from "react-map-gl/maplibre";
|
|
9
|
+
/**
|
|
10
|
+
* The map's bearing and a callback that returns the map to north.
|
|
11
|
+
*/
|
|
12
|
+
export interface UseMapBearing {
|
|
13
|
+
/**
|
|
14
|
+
* Degrees off north, as MapLibre reports it.
|
|
15
|
+
* Zero while there is no map.
|
|
16
|
+
*/
|
|
17
|
+
bearing: number;
|
|
18
|
+
/**
|
|
19
|
+
* Rotate the map back to north.
|
|
20
|
+
* A no-op while there is no map.
|
|
21
|
+
*/
|
|
22
|
+
resetNorth: () => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reads the live map bearing and exposes `resetNorth`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useMapBearing(map: MapInstance | null): UseMapBearing;
|
|
28
|
+
//# sourceMappingURL=useMapBearing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMapBearing.d.ts","sourceRoot":"","sources":["../../lib/map/useMapBearing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,UAAU,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,aAAa,CAyBpE"}
|