@mailwoman/react 8.1.0 → 8.2.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/common/ClientOnly.tsx +6 -2
- package/common/CopyButton.tsx +9 -3
- package/common/KindBadge.tsx +1 -1
- package/common/LoadingIndicator.tsx +22 -7
- package/common/PresetChips.tsx +6 -2
- package/common/cx.ts +3 -1
- package/common/useClipboard.ts +7 -2
- package/index.ts +5 -0
- package/map/BackendControl.tsx +12 -4
- package/map/CompareToggle.tsx +27 -9
- package/map/DemoControls.tsx +31 -11
- package/map/DemoMap.tsx +33 -11
- package/map/GeocoderDemo.tsx +25 -8
- package/map/OverlayLayers.tsx +7 -3
- package/map/PlaceAutocomplete.tsx +25 -9
- package/map/PlaceMarker.tsx +18 -6
- package/map/ResolvedPlaceLayers.tsx +15 -5
- package/map/ResultCamera.tsx +6 -2
- package/map/ResultOverlay.tsx +18 -6
- package/map/ResultPanel.tsx +21 -7
- package/map/VersionPicker.tsx +18 -6
- package/map/geometry.ts +28 -8
- package/map/index.ts +3 -0
- package/map/place-render.ts +36 -12
- package/map/types.ts +132 -44
- package/map/useCompareState.ts +15 -5
- package/map/useDemoGeocode.ts +12 -4
- package/map/useMapPlaceRender.ts +3 -1
- package/map/usePlaceAutocomplete.ts +52 -18
- package/out/common/ClientOnly.d.ts +6 -2
- package/out/common/ClientOnly.d.ts.map +1 -1
- package/out/common/ClientOnly.js.map +1 -1
- package/out/common/CopyButton.d.ts +9 -3
- package/out/common/CopyButton.d.ts.map +1 -1
- package/out/common/CopyButton.js.map +1 -1
- package/out/common/KindBadge.js +1 -1
- package/out/common/KindBadge.js.map +1 -1
- package/out/common/LoadingIndicator.d.ts +21 -6
- package/out/common/LoadingIndicator.d.ts.map +1 -1
- package/out/common/LoadingIndicator.js +4 -1
- package/out/common/LoadingIndicator.js.map +1 -1
- package/out/common/PresetChips.d.ts +6 -2
- package/out/common/PresetChips.d.ts.map +1 -1
- package/out/common/PresetChips.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/useClipboard.d.ts +3 -1
- package/out/common/useClipboard.d.ts.map +1 -1
- package/out/common/useClipboard.js +6 -2
- package/out/common/useClipboard.js.map +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js.map +1 -1
- package/out/map/BackendControl.d.ts +12 -4
- package/out/map/BackendControl.d.ts.map +1 -1
- package/out/map/BackendControl.js +3 -1
- package/out/map/BackendControl.js.map +1 -1
- package/out/map/CompareToggle.d.ts +27 -9
- package/out/map/CompareToggle.d.ts.map +1 -1
- package/out/map/CompareToggle.js +3 -1
- package/out/map/CompareToggle.js.map +1 -1
- package/out/map/DemoControls.d.ts +30 -10
- package/out/map/DemoControls.d.ts.map +1 -1
- package/out/map/DemoControls.js +4 -2
- package/out/map/DemoControls.js.map +1 -1
- package/out/map/DemoMap.d.ts +33 -11
- package/out/map/DemoMap.d.ts.map +1 -1
- package/out/map/DemoMap.js.map +1 -1
- package/out/map/GeocoderDemo.d.ts +16 -6
- package/out/map/GeocoderDemo.d.ts.map +1 -1
- package/out/map/GeocoderDemo.js +9 -3
- package/out/map/GeocoderDemo.js.map +1 -1
- package/out/map/OverlayLayers.d.ts +6 -2
- package/out/map/OverlayLayers.d.ts.map +1 -1
- package/out/map/OverlayLayers.js +4 -2
- package/out/map/OverlayLayers.js.map +1 -1
- package/out/map/PlaceAutocomplete.d.ts +24 -8
- package/out/map/PlaceAutocomplete.d.ts.map +1 -1
- package/out/map/PlaceAutocomplete.js +4 -2
- package/out/map/PlaceAutocomplete.js.map +1 -1
- package/out/map/PlaceMarker.d.ts +15 -5
- package/out/map/PlaceMarker.d.ts.map +1 -1
- package/out/map/PlaceMarker.js +6 -2
- package/out/map/PlaceMarker.js.map +1 -1
- package/out/map/ResolvedPlaceLayers.d.ts +15 -5
- package/out/map/ResolvedPlaceLayers.d.ts.map +1 -1
- package/out/map/ResolvedPlaceLayers.js +3 -1
- package/out/map/ResolvedPlaceLayers.js.map +1 -1
- package/out/map/ResultCamera.d.ts +6 -2
- package/out/map/ResultCamera.d.ts.map +1 -1
- package/out/map/ResultCamera.js +3 -1
- package/out/map/ResultCamera.js.map +1 -1
- package/out/map/ResultOverlay.d.ts +15 -5
- package/out/map/ResultOverlay.d.ts.map +1 -1
- package/out/map/ResultOverlay.js +3 -1
- package/out/map/ResultOverlay.js.map +1 -1
- package/out/map/ResultPanel.d.ts +21 -7
- package/out/map/ResultPanel.d.ts.map +1 -1
- package/out/map/ResultPanel.js +3 -1
- package/out/map/ResultPanel.js.map +1 -1
- package/out/map/VersionPicker.d.ts +18 -6
- package/out/map/VersionPicker.d.ts.map +1 -1
- package/out/map/VersionPicker.js +3 -1
- package/out/map/VersionPicker.js.map +1 -1
- package/out/map/geometry.d.ts +12 -4
- package/out/map/geometry.d.ts.map +1 -1
- package/out/map/geometry.js +17 -5
- package/out/map/geometry.js.map +1 -1
- package/out/map/index.d.ts.map +1 -1
- package/out/map/index.js.map +1 -1
- package/out/map/place-render.d.ts +27 -9
- package/out/map/place-render.d.ts.map +1 -1
- package/out/map/place-render.js +9 -3
- package/out/map/place-render.js.map +1 -1
- package/out/map/types.d.ts +132 -44
- package/out/map/types.d.ts.map +1 -1
- package/out/map/useCompareState.d.ts +15 -5
- package/out/map/useCompareState.d.ts.map +1 -1
- package/out/map/useCompareState.js.map +1 -1
- package/out/map/useDemoGeocode.d.ts +12 -4
- package/out/map/useDemoGeocode.d.ts.map +1 -1
- package/out/map/useDemoGeocode.js.map +1 -1
- package/out/map/useMapPlaceRender.d.ts +3 -1
- package/out/map/useMapPlaceRender.d.ts.map +1 -1
- package/out/map/useMapPlaceRender.js +3 -1
- package/out/map/useMapPlaceRender.js.map +1 -1
- package/out/map/usePlaceAutocomplete.d.ts +45 -15
- package/out/map/usePlaceAutocomplete.d.ts.map +1 -1
- package/out/map/usePlaceAutocomplete.js +7 -3
- package/out/map/usePlaceAutocomplete.js.map +1 -1
- package/out/pipeline/ConfidenceCell.d.ts.map +1 -1
- package/out/pipeline/ConfidenceCell.js +9 -1
- package/out/pipeline/ConfidenceCell.js.map +1 -1
- package/out/pipeline/PipelineExplorer.d.ts +12 -4
- package/out/pipeline/PipelineExplorer.d.ts.map +1 -1
- package/out/pipeline/PipelineExplorer.js +6 -2
- package/out/pipeline/PipelineExplorer.js.map +1 -1
- package/out/pipeline/QueryForm.d.ts +6 -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/ResolvedPlace.js.map +1 -1
- package/out/pipeline/presets.d.ts +7 -0
- package/out/pipeline/presets.d.ts.map +1 -1
- package/out/pipeline/presets.js +7 -0
- package/out/pipeline/presets.js.map +1 -1
- package/out/pipeline/types.d.ts +60 -20
- package/out/pipeline/types.d.ts.map +1 -1
- package/out/pipeline/useParsePipeline.d.ts +12 -4
- package/out/pipeline/useParsePipeline.d.ts.map +1 -1
- package/out/pipeline/useParsePipeline.js +2 -2
- package/out/pipeline/useParsePipeline.js.map +1 -1
- package/out/poi/LiveResultsBlock.d.ts +6 -2
- 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 +12 -4
- package/out/poi/POIExplorer.d.ts.map +1 -1
- package/out/poi/POIExplorer.js.map +1 -1
- package/out/poi/SubjectPanel.d.ts.map +1 -1
- package/out/poi/SubjectPanel.js +4 -2
- package/out/poi/SubjectPanel.js.map +1 -1
- package/out/poi/runtime.d.ts +9 -2
- package/out/poi/runtime.d.ts.map +1 -1
- package/out/poi/runtime.js +10 -3
- package/out/poi/runtime.js.map +1 -1
- package/out/poi/types.d.ts +40 -15
- package/out/poi/types.d.ts.map +1 -1
- package/out/poi/usePOISearch.d.ts +27 -9
- package/out/poi/usePOISearch.d.ts.map +1 -1
- package/out/poi/usePOISearch.js +5 -3
- package/out/poi/usePOISearch.js.map +1 -1
- package/out/runtime/useDemoRuntime.d.ts +81 -27
- package/out/runtime/useDemoRuntime.d.ts.map +1 -1
- package/out/runtime/useDemoRuntime.js.map +1 -1
- package/package.json +4 -4
- package/pipeline/ConfidenceCell.tsx +11 -1
- package/pipeline/PipelineExplorer.tsx +19 -6
- package/pipeline/QueryForm.tsx +7 -3
- package/pipeline/ResolvedPlace.tsx +2 -2
- package/pipeline/presets.ts +7 -0
- package/pipeline/types.ts +60 -20
- package/pipeline/useParsePipeline.ts +14 -6
- package/poi/LiveResultsBlock.tsx +7 -3
- package/poi/POIExplorer.tsx +14 -4
- package/poi/SubjectPanel.tsx +4 -2
- package/poi/runtime.ts +11 -3
- package/poi/types.ts +41 -15
- package/poi/usePOISearch.ts +34 -12
- package/runtime/useDemoRuntime.ts +82 -27
package/out/poi/types.d.ts
CHANGED
|
@@ -8,29 +8,38 @@
|
|
|
8
8
|
* INJECTED async function ({@link POILiveSearch}) so the httpvfs/worker machinery stays out of this
|
|
9
9
|
* package's browser graph (it lives in the docs site, which knows where the layer is served).
|
|
10
10
|
*/
|
|
11
|
-
import type { POIPhraseLookup, QueryKindResult } from "@mailwoman/kind-classifier";
|
|
12
|
-
import type { createKindClassifier } from "@mailwoman/kind-classifier";
|
|
11
|
+
import type { POIPhraseLookup, QueryKindResult, createKindClassifier } from "@mailwoman/kind-classifier";
|
|
13
12
|
import type { createPOITaxonomyLookup } from "@mailwoman/poi-taxonomy/table";
|
|
14
13
|
export type TaxonomyLookup = ReturnType<typeof createPOITaxonomyLookup>;
|
|
15
14
|
export type CategoryRecord = NonNullable<ReturnType<TaxonomyLookup["getPOICategory"]>>;
|
|
16
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The lazily-loaded POI runtime: the taxonomy lookup, the adapted lexicon, and the kind classifier over it.
|
|
17
|
+
*/
|
|
17
18
|
export interface POIRuntime {
|
|
18
19
|
lookup: TaxonomyLookup;
|
|
19
20
|
lexicon: POIPhraseLookup;
|
|
20
21
|
classify: ReturnType<typeof createKindClassifier>;
|
|
21
22
|
}
|
|
22
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Fields shared by every resolved POI subject, category or brand.
|
|
25
|
+
*/
|
|
23
26
|
export interface POISubjectBase {
|
|
24
27
|
matchedPhrase: string;
|
|
25
28
|
confidence: number;
|
|
26
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* The non-subject remainder of the query (the location anchor, e.g. "near Springfield").
|
|
31
|
+
*/
|
|
27
32
|
remainder: string;
|
|
28
33
|
}
|
|
29
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* A resolved POI subject that names a taxonomy CATEGORY (`cafe`, `hospital`, `drinking fountain`).
|
|
36
|
+
*/
|
|
30
37
|
export interface POICategorySubject extends POISubjectBase {
|
|
31
38
|
kind: "category";
|
|
32
39
|
category: CategoryRecord;
|
|
33
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Whether this category needs the locally-built OSM (ODbL) layer — precomputed off the runtime.
|
|
42
|
+
*/
|
|
34
43
|
buildLocal: boolean;
|
|
35
44
|
}
|
|
36
45
|
/**
|
|
@@ -40,21 +49,31 @@ export interface POICategorySubject extends POISubjectBase {
|
|
|
40
49
|
*/
|
|
41
50
|
export interface POIBrandSubject extends POISubjectBase {
|
|
42
51
|
kind: "brand";
|
|
43
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* The brand's canonical display name.
|
|
54
|
+
*/
|
|
44
55
|
name: string;
|
|
45
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Wikidata QID, when the lexicon carried one (`Q319642` = Chevron). Absent ⇒ matched by name alone.
|
|
58
|
+
*/
|
|
46
59
|
wikidata?: string;
|
|
47
60
|
}
|
|
48
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* A resolved POI subject — a taxonomy category or a chain brand — plus its match metadata.
|
|
63
|
+
*/
|
|
49
64
|
export type POISubject = POICategorySubject | POIBrandSubject;
|
|
50
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* The intent-only result: the kind verdict plus (when a subject was detected) its OverpassQL export (category only).
|
|
67
|
+
*/
|
|
51
68
|
export interface POIExplorerResult {
|
|
52
69
|
kindResult: QueryKindResult;
|
|
53
70
|
subject?: POISubject;
|
|
54
71
|
overpassQL?: string;
|
|
55
72
|
overpassError?: string;
|
|
56
73
|
}
|
|
57
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* One live poi.db hit, as the results list renders it.
|
|
76
|
+
*/
|
|
58
77
|
export interface POISearchHit {
|
|
59
78
|
name: string;
|
|
60
79
|
lat: number;
|
|
@@ -92,10 +111,14 @@ export type POILiveSearch = (params: {
|
|
|
92
111
|
categoryID: string;
|
|
93
112
|
overtureCategoryIDs: string[];
|
|
94
113
|
anchor: string;
|
|
95
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Present when the subject is a chain brand — the probe fetches by this QID, not a category k-ring.
|
|
116
|
+
*/
|
|
96
117
|
brandWikidata?: string;
|
|
97
118
|
}) => Promise<POILiveSearchResult>;
|
|
98
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* "Search live" state machine.
|
|
121
|
+
*/
|
|
99
122
|
export type LiveSearchState = {
|
|
100
123
|
status: "idle";
|
|
101
124
|
} | {
|
|
@@ -108,6 +131,8 @@ export type LiveSearchState = {
|
|
|
108
131
|
hits: POISearchHit[];
|
|
109
132
|
centerName: string;
|
|
110
133
|
};
|
|
111
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* A single-argument runtime loader — injectable so stories/tests can substitute a mock taxonomy.
|
|
136
|
+
*/
|
|
112
137
|
export type LoadPOIRuntime = () => Promise<POIRuntime>;
|
|
113
138
|
//# sourceMappingURL=types.d.ts.map
|
package/out/poi/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../poi/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../poi/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,17 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { LiveSearchState, LoadPOIRuntime, POIExplorerResult, POILiveSearch } from "./types.ts";
|
|
12
12
|
export interface UsePOISearchOptions {
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* The current query text (controlled by the caller).
|
|
15
|
+
*/
|
|
14
16
|
text: string;
|
|
15
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Runtime loader. @default loadPOIRuntime
|
|
19
|
+
*/
|
|
16
20
|
loadRuntime?: LoadPOIRuntime;
|
|
17
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Injected live-search probe. Absent ⇒ the live-results affordance is disabled.
|
|
23
|
+
*/
|
|
18
24
|
runLiveSearch?: POILiveSearch;
|
|
19
25
|
/**
|
|
20
26
|
* Whether the injected probe can serve BRAND subjects (fetch by Wikidata QID). Default false: brand subjects show the
|
|
@@ -23,19 +29,31 @@ export interface UsePOISearchOptions {
|
|
|
23
29
|
* live search is unaffected either way.
|
|
24
30
|
*/
|
|
25
31
|
brandLiveSearch?: boolean;
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Debounce before (re)classifying. @default 250
|
|
34
|
+
*/
|
|
27
35
|
debounceMs?: number;
|
|
28
36
|
}
|
|
29
37
|
export interface UsePOISearch {
|
|
30
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* True once the taxonomy runtime has loaded.
|
|
40
|
+
*/
|
|
31
41
|
runtimeReady: boolean;
|
|
32
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* The intent result for the current (debounced) query, or null for empty input.
|
|
44
|
+
*/
|
|
33
45
|
result: POIExplorerResult | null;
|
|
34
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* State of the on-demand live poi.db search.
|
|
48
|
+
*/
|
|
35
49
|
liveSearch: LiveSearchState;
|
|
36
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Whether a live search can run right now (a probe is wired + there's a resolved subject with an anchor).
|
|
52
|
+
*/
|
|
37
53
|
canSearchLive: boolean;
|
|
38
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Kick off a live search for the current subject. No-op when {@link canSearchLive} is false.
|
|
56
|
+
*/
|
|
39
57
|
searchLive: () => Promise<void>;
|
|
40
58
|
}
|
|
41
59
|
export declare function usePOISearch({ text, loadRuntime, runLiveSearch, brandLiveSearch, debounceMs, }: UsePOISearchOptions): UsePOISearch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePOISearch.d.ts","sourceRoot":"","sources":["../../poi/usePOISearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAc,MAAM,YAAY,CAAA;AAE/G,MAAM,WAAW,mBAAmB;IACnC
|
|
1
|
+
{"version":3,"file":"usePOISearch.d.ts","sourceRoot":"","sources":["../../poi/usePOISearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAc,MAAM,YAAY,CAAA;AAE/G,MAAM,WAAW,mBAAmB;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IACrB;;OAEG;IACH,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAChC;;OAEG;IACH,UAAU,EAAE,eAAe,CAAA;IAC3B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/B;AA6BD,wBAAgB,YAAY,CAAC,EAC5B,IAAI,EACJ,WAA4B,EAC5B,aAAa,EACb,eAAuB,EACvB,UAAgB,GAChB,EAAE,mBAAmB,GAAG,YAAY,CAwJpC"}
|
package/out/poi/usePOISearch.js
CHANGED
|
@@ -14,7 +14,9 @@ import { computeQueryShape } from "@mailwoman/query-shape";
|
|
|
14
14
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
15
15
|
import { useDebouncedValue } from "../common/useDebouncedValue.js";
|
|
16
16
|
import { loadPOIRuntime } from "./runtime.js";
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Compute the OverpassQL export for a matched subject, capturing any emitter error rather than throwing.
|
|
19
|
+
*/
|
|
18
20
|
function buildOverpass(runtime, categoryID, matchedPhrase, remainder) {
|
|
19
21
|
const category = runtime.lookup.getPOICategory(categoryID);
|
|
20
22
|
if (!category) {
|
|
@@ -27,8 +29,8 @@ function buildOverpass(runtime, categoryID, matchedPhrase, remainder) {
|
|
|
27
29
|
try {
|
|
28
30
|
return { overpassQL: emitOverpassQL(intent, category.osmTag ? { osmTag: category.osmTag } : {}) };
|
|
29
31
|
}
|
|
30
|
-
catch (
|
|
31
|
-
return { overpassError:
|
|
32
|
+
catch (error) {
|
|
33
|
+
return { overpassError: error instanceof Error ? error.message : String(error) };
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
export function usePOISearch({ text, loadRuntime = loadPOIRuntime, runLiveSearch, brandLiveSearch = false, debounceMs = 250, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePOISearch.js","sourceRoot":"","sources":["../../poi/usePOISearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"usePOISearch.js","sourceRoot":"","sources":["../../poi/usePOISearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,18 +16,30 @@
|
|
|
16
16
|
* FST, WOF lookup, calibrator, …) and `TRelease` (the host's release-manifest entry). The package
|
|
17
17
|
* never inspects either; it just holds, reveals, and re-loads them across version/backend switches.
|
|
18
18
|
*/
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* The minimal contract a release-manifest entry must satisfy. Hosts extend this with their own fields.
|
|
21
|
+
*/
|
|
20
22
|
export interface DemoReleaseBase {
|
|
21
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The version tag this entry describes (matched against `selectedVersion`).
|
|
25
|
+
*/
|
|
22
26
|
version: string;
|
|
23
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Optional display label a version picker shows; falls back to `version`.
|
|
29
|
+
*/
|
|
24
30
|
label?: string;
|
|
25
31
|
}
|
|
26
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* The releases manifest the host fetches — the default version plus the selectable release entries.
|
|
34
|
+
*/
|
|
27
35
|
export interface DemoManifest<TRelease extends DemoReleaseBase = DemoReleaseBase> {
|
|
28
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* The version selected on first load (before the user picks another).
|
|
38
|
+
*/
|
|
29
39
|
defaultVersion: string;
|
|
30
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Every selectable release.
|
|
42
|
+
*/
|
|
31
43
|
releases: TRelease[];
|
|
32
44
|
}
|
|
33
45
|
/**
|
|
@@ -36,20 +48,34 @@ export interface DemoManifest<TRelease extends DemoReleaseBase = DemoReleaseBase
|
|
|
36
48
|
* the terminal state (revealing the assets + clearing progress on success, surfacing the error on failure).
|
|
37
49
|
*/
|
|
38
50
|
export interface DemoAssetsLoadContext {
|
|
39
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Aborts when this load is superseded (version/backend switch) or the provider unmounts.
|
|
53
|
+
*/
|
|
40
54
|
signal: AbortSignal;
|
|
41
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Whether the host should force the CPU/WASM backend (opt out of WebGPU) for this load.
|
|
57
|
+
*/
|
|
42
58
|
forceWASM: boolean;
|
|
43
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Set the human-readable progress line (e.g. `Loading v7 model (~28 MB)…`).
|
|
61
|
+
*/
|
|
44
62
|
setProgress: (progress: string) => void;
|
|
45
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Set the staged-loader step labels (e.g. `["Loading classifier", "Loading FST gazetteer"]`).
|
|
65
|
+
*/
|
|
46
66
|
setStepLabels: (labels: string[]) => void;
|
|
47
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Advance the staged-loader step index (0-based).
|
|
69
|
+
*/
|
|
48
70
|
setStepIndex: (index: number) => void;
|
|
49
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Report the backend the neural runtime resolved to (e.g. `webgpu (27 MB int8)`).
|
|
73
|
+
*/
|
|
50
74
|
setBackend: (backend: string) => void;
|
|
51
75
|
}
|
|
52
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* The injected loaders the hook orchestrates. Nothing here is model- or map-aware — the host owns all that.
|
|
78
|
+
*/
|
|
53
79
|
export interface DemoRuntimeConfig<TAssets, TRelease extends DemoReleaseBase = DemoReleaseBase> {
|
|
54
80
|
/**
|
|
55
81
|
* Fetch + normalize the releases manifest. Returns `null` when no manifest is available (the demo then shows nothing
|
|
@@ -62,7 +88,9 @@ export interface DemoRuntimeConfig<TAssets, TRelease extends DemoReleaseBase = D
|
|
|
62
88
|
* `errorMessage`. Bail early when `ctx.signal.aborted` — the hook discards a superseded result regardless.
|
|
63
89
|
*/
|
|
64
90
|
loadAssets: (release: TRelease, ctx: DemoAssetsLoadContext) => Promise<TAssets>;
|
|
65
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* The progress line shown before the manifest arrives. @default "Loading releases…"
|
|
93
|
+
*/
|
|
66
94
|
initialProgress?: string;
|
|
67
95
|
}
|
|
68
96
|
/**
|
|
@@ -75,31 +103,57 @@ export interface DemoRuntimeConfig<TAssets, TRelease extends DemoReleaseBase = D
|
|
|
75
103
|
* subpath's `DemoRuntime`.
|
|
76
104
|
*/
|
|
77
105
|
export interface DemoLoaderState<TAssets, TRelease extends DemoReleaseBase = DemoReleaseBase> {
|
|
78
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* The releases manifest, once fetched.
|
|
108
|
+
*/
|
|
79
109
|
manifest: DemoManifest<TRelease> | null;
|
|
80
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* The currently-selected version, or `null` before the manifest resolves.
|
|
112
|
+
*/
|
|
81
113
|
selectedVersion: string | null;
|
|
82
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* The release entry matching `selectedVersion` (convenience over `manifest.releases.find`).
|
|
116
|
+
*/
|
|
83
117
|
selectedRelease: TRelease | null;
|
|
84
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* The loaded asset bundle for the selected version, or `null` while (re)loading.
|
|
120
|
+
*/
|
|
85
121
|
assets: TAssets | null;
|
|
86
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Whether the asset bundle is loaded and ready to use.
|
|
124
|
+
*/
|
|
87
125
|
ready: boolean;
|
|
88
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* Human-readable load progress (`""` when idle/ready).
|
|
128
|
+
*/
|
|
89
129
|
loadingProgress: string;
|
|
90
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* Staged-loader step index (0-based; `-1` before the first step).
|
|
132
|
+
*/
|
|
91
133
|
loadingStepIndex: number;
|
|
92
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Staged-loader step labels.
|
|
136
|
+
*/
|
|
93
137
|
loadingStepLabels: string[];
|
|
94
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* A load error (manifest or asset), distinct from any per-parse error a consumer tracks separately.
|
|
140
|
+
*/
|
|
95
141
|
errorMessage: string | null;
|
|
96
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* The backend the neural runtime resolved to (e.g. `webgpu (27 MB int8)`), or `""` before it's known.
|
|
144
|
+
*/
|
|
97
145
|
activeBackend: string;
|
|
98
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* Whether the CPU/WASM backend is currently forced.
|
|
148
|
+
*/
|
|
99
149
|
forceWASM: boolean;
|
|
100
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Switch to a different version (clears any error, then reloads the asset bundle).
|
|
152
|
+
*/
|
|
101
153
|
selectVersion: (version: string) => void;
|
|
102
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* Force (or unforce) the CPU/WASM backend — reloads the asset bundle.
|
|
156
|
+
*/
|
|
103
157
|
setForceWASM: (forceWASM: boolean) => void;
|
|
104
158
|
}
|
|
105
159
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDemoRuntime.d.ts","sourceRoot":"","sources":["../../runtime/useDemoRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH
|
|
1
|
+
{"version":3,"file":"useDemoRuntime.d.ts","sourceRoot":"","sources":["../../runtime/useDemoRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,SAAS,eAAe,GAAG,eAAe;IAC/E;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,EAAE,QAAQ,EAAE,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;IACnB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC;;OAEG;IACH,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IACzC;;OAEG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;OAEG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,EAAE,QAAQ,SAAS,eAAe,GAAG,eAAe;IAC7F;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;IAC7E;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/E;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,EAAE,QAAQ,SAAS,eAAe,GAAG,eAAe;IAC3F;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;IACvC;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;OAEG;IACH,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAA;IAChC;;OAEG;IACH,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB;;OAEG;IACH,KAAK,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,eAAe,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC;;OAEG;IACH,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,SAAS,eAAe,GAAG,eAAe,EACzF,MAAM,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC1C,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CA4HpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDemoRuntime.js","sourceRoot":"","sources":["../../runtime/useDemoRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useDemoRuntime.js","sourceRoot":"","sources":["../../runtime/useDemoRuntime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/react",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "React components + headless hooks for mailwoman — parse/geocode/POI explorers, Storybook-tested, Docusaurus-independent.",
|
|
5
5
|
"license": "AGPL-3.0-only OR LicenseRef-Commercial",
|
|
6
6
|
"repository": {
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"test:node": "vitest run --config vitest.node.config.ts"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@mailwoman/kind-classifier": "8.
|
|
71
|
-
"@mailwoman/poi-taxonomy": "8.
|
|
72
|
-
"@mailwoman/query-shape": "8.
|
|
70
|
+
"@mailwoman/kind-classifier": "8.2.0",
|
|
71
|
+
"@mailwoman/poi-taxonomy": "8.2.0",
|
|
72
|
+
"@mailwoman/query-shape": "8.2.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
75
|
"@storybook/addon-docs": "^10.5.4",
|
|
@@ -9,10 +9,20 @@
|
|
|
9
9
|
|
|
10
10
|
import { cx } from "../common/cx.ts"
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* At or above this the cell is drawn as high-confidence. Presentation only — see docs/src/shared/confidence-tiers.ts.
|
|
14
|
+
*/
|
|
15
|
+
const HIGH_CONFIDENCE_MIN = 0.8
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* At or above this the cell is drawn as medium-confidence; below it, low.
|
|
19
|
+
*/
|
|
20
|
+
const MID_CONFIDENCE_MIN = 0.5
|
|
21
|
+
|
|
12
22
|
function tier(confidence?: number): "high" | "mid" | "low" {
|
|
13
23
|
if (confidence == null) return "mid"
|
|
14
24
|
|
|
15
|
-
return confidence >=
|
|
25
|
+
return confidence >= HIGH_CONFIDENCE_MIN ? "high" : confidence >= MID_CONFIDENCE_MIN ? "mid" : "low"
|
|
16
26
|
}
|
|
17
27
|
|
|
18
28
|
export interface ConfidenceCellProps {
|
|
@@ -26,13 +26,21 @@ import type { PipelinePanels, PipelineRuntime } from "./types.ts"
|
|
|
26
26
|
import { useParsePipeline } from "./useParsePipeline.ts"
|
|
27
27
|
|
|
28
28
|
export interface PipelineExplorerProps {
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* The injected model/gazetteer runtime (the host wires this to its bundle).
|
|
31
|
+
*/
|
|
30
32
|
runtime: PipelineRuntime
|
|
31
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Address to pre-fill. @default the White House
|
|
35
|
+
*/
|
|
32
36
|
defaultAddress?: string
|
|
33
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Example chips. @default the built-in address presets
|
|
39
|
+
*/
|
|
34
40
|
presets?: ReadonlyArray<Preset>
|
|
35
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Host-injected panels + controls (version selector, span highlight, tree, …).
|
|
43
|
+
*/
|
|
36
44
|
panels?: PipelinePanels
|
|
37
45
|
}
|
|
38
46
|
|
|
@@ -76,7 +84,7 @@ function PipelineExplorerInner({ runtime, defaultAddress, presets, panels }: Pip
|
|
|
76
84
|
{loading && !runtime.ready ? (
|
|
77
85
|
<LoadingIndicator
|
|
78
86
|
mode="staged"
|
|
79
|
-
steps={loading.stepLabels.length
|
|
87
|
+
steps={loading.stepLabels.length ? loading.stepLabels : undefined}
|
|
80
88
|
activeStep={loading.stepIndex}
|
|
81
89
|
label={loading.progress}
|
|
82
90
|
/>
|
|
@@ -126,11 +134,16 @@ function PipelineExplorerInner({ runtime, defaultAddress, presets, panels }: Pip
|
|
|
126
134
|
)
|
|
127
135
|
}
|
|
128
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Stable empty default — a fresh `{}` per render would churn every downstream memo dep.
|
|
139
|
+
*/
|
|
140
|
+
const NO_PANELS: NonNullable<PipelineExplorerProps["panels"]> = {}
|
|
141
|
+
|
|
129
142
|
export function PipelineExplorer({
|
|
130
143
|
runtime,
|
|
131
144
|
defaultAddress = PIPELINE_DEFAULT_ADDRESS,
|
|
132
145
|
presets = PIPELINE_PRESETS,
|
|
133
|
-
panels =
|
|
146
|
+
panels = NO_PANELS,
|
|
134
147
|
}: PipelineExplorerProps): ReactNode {
|
|
135
148
|
return (
|
|
136
149
|
<ClientOnly
|
package/pipeline/QueryForm.tsx
CHANGED
|
@@ -18,9 +18,13 @@ export interface QueryFormProps {
|
|
|
18
18
|
disabled?: boolean
|
|
19
19
|
busy?: boolean
|
|
20
20
|
placeholder?: string
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Keydown on the input — the seam a combobox (the demo's place-autocomplete) needs for arrow/Enter/Esc nav.
|
|
23
|
+
*/
|
|
22
24
|
onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Escape hatch for extra `<input>` attributes (aria-combobox props, `autoComplete`, …). Merged last.
|
|
27
|
+
*/
|
|
24
28
|
inputProps?: InputHTMLAttributes<HTMLInputElement>
|
|
25
29
|
}
|
|
26
30
|
|
|
@@ -45,7 +49,7 @@ export function QueryForm({
|
|
|
45
49
|
<label htmlFor="mw-pipeline-input">Address</label>
|
|
46
50
|
<input
|
|
47
51
|
id="mw-pipeline-input"
|
|
48
|
-
type="
|
|
52
|
+
type="search"
|
|
49
53
|
value={value}
|
|
50
54
|
onChange={(e) => onChange(e.target.value)}
|
|
51
55
|
disabled={disabled}
|
|
@@ -34,12 +34,12 @@ export function ResolvedPlace({ place, dualRoles }: ResolvedPlaceProps): ReactNo
|
|
|
34
34
|
<dt>score</dt>
|
|
35
35
|
<dd>{place.score.toFixed(3)}</dd>
|
|
36
36
|
</dl>
|
|
37
|
-
{dualRoles && dualRoles.length
|
|
37
|
+
{dualRoles && dualRoles.length ? (
|
|
38
38
|
<p className="mw-resolved__dual">
|
|
39
39
|
🏛️ <strong>Dual-role place.</strong> {place.name} also resolves as{" "}
|
|
40
40
|
{dualRoles.map((role, i) => (
|
|
41
41
|
<Fragment key={`${role.role}-${role.id}`}>
|
|
42
|
-
{i > 0 ? ", " : ""}a <strong>{role.role}</strong> ({role.relationshipType.
|
|
42
|
+
{i > 0 ? ", " : ""}a <strong>{role.role}</strong> ({role.relationshipType.replaceAll("-", " ")})
|
|
43
43
|
</Fragment>
|
|
44
44
|
))}
|
|
45
45
|
.
|
package/pipeline/presets.ts
CHANGED
|
@@ -9,11 +9,18 @@
|
|
|
9
9
|
|
|
10
10
|
import type { Preset } from "../common/PresetChips.tsx"
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Address the pipeline explorer opens on. Chosen because it exercises every stage — house number, street, directional,
|
|
14
|
+
* locality and region — in one line.
|
|
15
|
+
*/
|
|
12
16
|
export const PIPELINE_DEFAULT_ADDRESS = "1600 Pennsylvania Ave NW, Washington, DC 20500"
|
|
13
17
|
|
|
14
18
|
// `country` mirrors the docs `EXAMPLE_ADDRESSES` set (kept in parity) — the placetype-pair country pin (#1278 phase 2's
|
|
15
19
|
// `{country}` override). A host that wires the pair prior pins the country while the input equals the preset text, so a
|
|
16
20
|
// locale structural routing can't detect (NZ) still fires; free-typed input drops to structural detection.
|
|
21
|
+
/**
|
|
22
|
+
* Preset inputs offered in the explorer, each picked to show a different parse behaviour.
|
|
23
|
+
*/
|
|
17
24
|
export const PIPELINE_PRESETS: ReadonlyArray<Preset> = [
|
|
18
25
|
{ label: "White House", value: "1600 Pennsylvania Ave NW, Washington, DC 20500", country: "us" },
|
|
19
26
|
{ label: "Apple Park", value: "1 Apple Park Way, Cupertino, CA 95014", country: "us" },
|