@mailwoman/react 9.3.0 → 10.0.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/fonts.css +59 -0
- package/lib/common/About.tsx +105 -0
- package/lib/common/KindBadge.tsx +2 -7
- package/lib/common/confidence-tiers.ts +50 -0
- package/lib/common/index.ts +22 -0
- package/lib/common/text-tokens.ts +88 -0
- package/lib/index.ts +10 -103
- package/lib/map/BackendControl.tsx +7 -3
- package/lib/map/CompareToggle.tsx +5 -4
- package/lib/map/{GeocoderDemo.tsx → Geocoder.tsx} +81 -61
- package/lib/map/GeocoderControls.tsx +352 -0
- package/lib/map/{DemoMap.tsx → MapCanvas.tsx} +15 -15
- package/lib/map/MapChipRow.tsx +77 -0
- package/lib/map/MapCompass.tsx +77 -0
- package/lib/map/MapControlStack.tsx +98 -0
- package/lib/map/MapFooter.tsx +115 -0
- package/lib/map/MapProgressBar.tsx +58 -0
- package/lib/map/MapSearchBar.tsx +68 -0
- package/lib/map/MapSheet.tsx +62 -0
- package/lib/map/PlaceMarker.tsx +1 -1
- package/lib/map/ResolvedPlaceLayers.tsx +3 -3
- package/lib/map/ResultCamera.tsx +1 -1
- package/lib/map/ResultPanel.tsx +2 -2
- package/lib/map/VersionPicker.tsx +3 -3
- package/lib/map/fake-runtime.ts +122 -0
- package/lib/map/index.ts +35 -16
- package/lib/map/map-debug.ts +51 -0
- package/lib/map/place-render.ts +3 -2
- package/lib/map/types.ts +58 -42
- package/lib/map/{useDemoGeocode.ts → useGeocode.ts} +8 -8
- package/lib/map/useMapBearing.ts +56 -0
- package/lib/map/useMapLabelPick.ts +123 -0
- package/lib/pipeline/CandidatePicker.tsx +1 -1
- package/lib/pipeline/ComponentTable.tsx +1 -2
- package/lib/pipeline/ConfidenceCell.tsx +7 -19
- package/lib/pipeline/FailureDiagnostic.tsx +56 -0
- package/lib/pipeline/ResolvedPlace.tsx +17 -4
- package/lib/pipeline/SpanHighlight.tsx +97 -0
- package/lib/pipeline/TimingPanel.tsx +65 -0
- package/lib/pipeline/TreeView.tsx +55 -0
- package/lib/pipeline/copy.ts +1 -1
- package/lib/pipeline/index.ts +36 -0
- package/lib/pipeline/types.ts +2 -75
- package/lib/pipeline/useParsePipeline.ts +31 -19
- package/lib/poi/index.ts +39 -0
- package/lib/poi/types.ts +2 -1
- package/lib/runtime/index.ts +16 -0
- package/lib/runtime/{useDemoRuntime.ts → useReleaseRuntime.ts} +22 -24
- package/out/common/About.d.ts +21 -0
- package/out/common/About.d.ts.map +1 -0
- package/out/common/About.js +8 -0
- package/out/common/About.js.map +1 -0
- package/out/common/KindBadge.d.ts +2 -9
- package/out/common/KindBadge.d.ts.map +1 -1
- package/out/common/KindBadge.js.map +1 -1
- package/out/common/confidence-tiers.d.ts +36 -0
- package/out/common/confidence-tiers.d.ts.map +1 -0
- package/out/common/confidence-tiers.js +42 -0
- package/out/common/confidence-tiers.js.map +1 -0
- package/out/common/index.d.ts +22 -0
- package/out/common/index.d.ts.map +1 -0
- package/out/common/index.js +15 -0
- package/out/common/index.js.map +1 -0
- package/out/common/text-tokens.d.ts +46 -0
- package/out/common/text-tokens.d.ts.map +1 -0
- package/out/common/text-tokens.js +52 -0
- package/out/common/text-tokens.js.map +1 -0
- package/out/index.d.ts +5 -51
- package/out/index.d.ts.map +1 -1
- package/out/index.js +4 -30
- package/out/index.js.map +1 -1
- package/out/map/BackendControl.d.ts.map +1 -1
- package/out/map/BackendControl.js +1 -1
- package/out/map/BackendControl.js.map +1 -1
- package/out/map/CompareToggle.d.ts +2 -2
- package/out/map/CompareToggle.d.ts.map +1 -1
- package/out/map/CompareToggle.js +1 -1
- package/out/map/CompareToggle.js.map +1 -1
- package/out/map/Geocoder.d.ts +67 -0
- package/out/map/Geocoder.d.ts.map +1 -0
- package/out/map/Geocoder.js +98 -0
- package/out/map/Geocoder.js.map +1 -0
- package/out/map/GeocoderControls.d.ts +81 -0
- package/out/map/GeocoderControls.d.ts.map +1 -0
- package/out/map/GeocoderControls.js +79 -0
- package/out/map/GeocoderControls.js.map +1 -0
- package/out/map/{DemoMap.d.ts → MapCanvas.d.ts} +15 -15
- package/out/map/MapCanvas.d.ts.map +1 -0
- package/out/map/{DemoMap.js → MapCanvas.js} +2 -2
- package/out/map/MapCanvas.js.map +1 -0
- package/out/map/MapChipRow.d.ts +47 -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 +42 -0
- package/out/map/MapCompass.d.ts.map +1 -0
- package/out/map/MapCompass.js +11 -0
- package/out/map/MapCompass.js.map +1 -0
- package/out/map/MapControlStack.d.ts +57 -0
- package/out/map/MapControlStack.d.ts.map +1 -0
- package/out/map/MapControlStack.js +15 -0
- package/out/map/MapControlStack.js.map +1 -0
- package/out/map/MapFooter.d.ts +40 -0
- package/out/map/MapFooter.d.ts.map +1 -0
- package/out/map/MapFooter.js +51 -0
- package/out/map/MapFooter.js.map +1 -0
- package/out/map/MapProgressBar.d.ts +34 -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 +49 -0
- package/out/map/MapSearchBar.d.ts.map +1 -0
- package/out/map/MapSearchBar.js +6 -0
- package/out/map/MapSearchBar.js.map +1 -0
- package/out/map/MapSheet.d.ts +32 -0
- package/out/map/MapSheet.d.ts.map +1 -0
- package/out/map/MapSheet.js +33 -0
- package/out/map/MapSheet.js.map +1 -0
- package/out/map/OverlayLayers.js +1 -1
- package/out/map/PlaceMarker.d.ts +1 -1
- package/out/map/ResolvedPlaceLayers.d.ts +3 -3
- package/out/map/ResolvedPlaceLayers.js +1 -1
- package/out/map/ResultCamera.d.ts +1 -1
- package/out/map/ResultCamera.js +1 -1
- package/out/map/ResultPanel.d.ts +2 -2
- 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 +3 -3
- package/out/map/VersionPicker.d.ts.map +1 -1
- package/out/map/fake-runtime.d.ts +38 -0
- package/out/map/fake-runtime.d.ts.map +1 -0
- package/out/map/fake-runtime.js +107 -0
- package/out/map/fake-runtime.js.map +1 -0
- package/out/map/index.d.ts +27 -10
- package/out/map/index.d.ts.map +1 -1
- package/out/map/index.js +16 -6
- package/out/map/index.js.map +1 -1
- package/out/map/map-debug.d.ts +31 -0
- package/out/map/map-debug.d.ts.map +1 -0
- package/out/map/map-debug.js +31 -0
- package/out/map/map-debug.js.map +1 -0
- package/out/map/place-render.d.ts +2 -2
- package/out/map/place-render.d.ts.map +1 -1
- package/out/map/place-render.js +1 -1
- package/out/map/place-render.js.map +1 -1
- package/out/map/types.d.ts +60 -42
- package/out/map/types.d.ts.map +1 -1
- package/out/map/types.js +5 -5
- package/out/map/{useDemoGeocode.d.ts → useGeocode.d.ts} +9 -9
- package/out/map/useGeocode.d.ts.map +1 -0
- package/out/map/{useDemoGeocode.js → useGeocode.js} +4 -4
- package/out/map/useGeocode.js.map +1 -0
- package/out/map/useMapBearing.d.ts +28 -0
- package/out/map/useMapBearing.d.ts.map +1 -0
- package/out/map/useMapBearing.js +35 -0
- package/out/map/useMapBearing.js.map +1 -0
- package/out/map/useMapLabelPick.d.ts +23 -0
- package/out/map/useMapLabelPick.d.ts.map +1 -0
- package/out/map/useMapLabelPick.js +104 -0
- package/out/map/useMapLabelPick.js.map +1 -0
- package/out/pipeline/CandidatePicker.d.ts +1 -1
- package/out/pipeline/CandidatePicker.d.ts.map +1 -1
- package/out/pipeline/CandidatePicker.js +1 -1
- package/out/pipeline/CandidatePicker.js.map +1 -1
- package/out/pipeline/ComponentTable.d.ts +1 -1
- package/out/pipeline/ComponentTable.d.ts.map +1 -1
- package/out/pipeline/ComponentTable.js.map +1 -1
- package/out/pipeline/ConfidenceCell.d.ts +2 -2
- package/out/pipeline/ConfidenceCell.d.ts.map +1 -1
- package/out/pipeline/ConfidenceCell.js +4 -16
- package/out/pipeline/ConfidenceCell.js.map +1 -1
- package/out/pipeline/FailureDiagnostic.d.ts +15 -0
- package/out/pipeline/FailureDiagnostic.d.ts.map +1 -0
- package/out/pipeline/FailureDiagnostic.js +21 -0
- package/out/pipeline/FailureDiagnostic.js.map +1 -0
- package/out/pipeline/PipelineExplorer.js +1 -1
- package/out/pipeline/QueryForm.js +1 -1
- package/out/pipeline/ResolvedPlace.d.ts +1 -1
- package/out/pipeline/ResolvedPlace.d.ts.map +1 -1
- package/out/pipeline/ResolvedPlace.js +4 -10
- package/out/pipeline/ResolvedPlace.js.map +1 -1
- package/out/pipeline/SpanHighlight.d.ts +23 -0
- package/out/pipeline/SpanHighlight.d.ts.map +1 -0
- package/out/pipeline/SpanHighlight.js +31 -0
- package/out/pipeline/SpanHighlight.js.map +1 -0
- package/out/pipeline/TimingPanel.d.ts +16 -0
- package/out/pipeline/TimingPanel.d.ts.map +1 -0
- package/out/pipeline/TimingPanel.js +20 -0
- package/out/pipeline/TimingPanel.js.map +1 -0
- package/out/pipeline/TreeView.d.ts +17 -0
- package/out/pipeline/TreeView.d.ts.map +1 -0
- package/out/pipeline/TreeView.js +15 -0
- package/out/pipeline/TreeView.js.map +1 -0
- package/out/pipeline/copy.d.ts +1 -1
- package/out/pipeline/copy.d.ts.map +1 -1
- package/out/pipeline/index.d.ts +33 -0
- package/out/pipeline/index.d.ts.map +1 -0
- package/out/pipeline/index.js +21 -0
- package/out/pipeline/index.js.map +1 -0
- package/out/pipeline/types.d.ts +2 -68
- package/out/pipeline/types.d.ts.map +1 -1
- package/out/pipeline/types.js +1 -1
- package/out/pipeline/useParsePipeline.d.ts +7 -3
- package/out/pipeline/useParsePipeline.d.ts.map +1 -1
- package/out/pipeline/useParsePipeline.js +6 -2
- package/out/pipeline/useParsePipeline.js.map +1 -1
- package/out/poi/LiveResultsBlock.js +1 -1
- package/out/poi/POIExplorer.js +1 -1
- package/out/poi/SubjectPanel.js +1 -1
- package/out/poi/index.d.ts +23 -0
- package/out/poi/index.d.ts.map +1 -0
- package/out/poi/index.js +15 -0
- package/out/poi/index.js.map +1 -0
- package/out/poi/runtime.d.ts.map +1 -1
- package/out/poi/types.d.ts +2 -1
- package/out/poi/types.d.ts.map +1 -1
- package/out/runtime/index.d.ts +9 -0
- package/out/runtime/index.d.ts.map +1 -0
- package/out/runtime/index.js +8 -0
- package/out/runtime/index.js.map +1 -0
- package/out/runtime/{useDemoRuntime.d.ts → useReleaseRuntime.d.ts} +18 -20
- package/out/runtime/useReleaseRuntime.d.ts.map +1 -0
- package/out/runtime/{useDemoRuntime.js → useReleaseRuntime.js} +4 -4
- package/out/runtime/useReleaseRuntime.js.map +1 -0
- package/package.json +222 -31
- package/styleframe.config.ts +329 -0
- package/styles.css +1995 -663
- package/tokens/index.css +116 -0
- package/tokens/tokens.json +528 -0
- package/tokens/tokens.resolver.json +185 -0
- package/lib/map/DemoControls.tsx +0 -194
- package/out/map/DemoControls.d.ts +0 -64
- package/out/map/DemoControls.d.ts.map +0 -1
- package/out/map/DemoControls.js +0 -30
- package/out/map/DemoControls.js.map +0 -1
- package/out/map/DemoMap.d.ts.map +0 -1
- package/out/map/DemoMap.js.map +0 -1
- package/out/map/GeocoderDemo.d.ts +0 -57
- package/out/map/GeocoderDemo.d.ts.map +0 -1
- package/out/map/GeocoderDemo.js +0 -98
- package/out/map/GeocoderDemo.js.map +0 -1
- package/out/map/useDemoGeocode.d.ts.map +0 -1
- package/out/map/useDemoGeocode.js.map +0 -1
- package/out/runtime/useDemoRuntime.d.ts.map +0 -1
- package/out/runtime/useDemoRuntime.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://www.designtokens.org/schemas/2025.10/resolver.json",
|
|
3
|
+
"version": "2025.10",
|
|
4
|
+
"modifiers": {
|
|
5
|
+
"theme": {
|
|
6
|
+
"contexts": {
|
|
7
|
+
"Default": [],
|
|
8
|
+
"Dark": [
|
|
9
|
+
{
|
|
10
|
+
"color-background-canvas": {
|
|
11
|
+
"$value": "{neutral-950}",
|
|
12
|
+
"$type": "color"
|
|
13
|
+
},
|
|
14
|
+
"color-background-raised": {
|
|
15
|
+
"$value": "{neutral-900}",
|
|
16
|
+
"$type": "color"
|
|
17
|
+
},
|
|
18
|
+
"color-background-sunken": {
|
|
19
|
+
"$value": "{neutral-1000}",
|
|
20
|
+
"$type": "color"
|
|
21
|
+
},
|
|
22
|
+
"color-text-primary": {
|
|
23
|
+
"$value": "{neutral-100}",
|
|
24
|
+
"$type": "color"
|
|
25
|
+
},
|
|
26
|
+
"color-text-secondary": {
|
|
27
|
+
"$value": "{neutral-400}",
|
|
28
|
+
"$type": "color"
|
|
29
|
+
},
|
|
30
|
+
"color-separator": {
|
|
31
|
+
"$value": {
|
|
32
|
+
"colorSpace": "oklch",
|
|
33
|
+
"components": [1, 0, 264],
|
|
34
|
+
"alpha": 0.12
|
|
35
|
+
},
|
|
36
|
+
"$type": "color"
|
|
37
|
+
},
|
|
38
|
+
"color-accent-contrast": {
|
|
39
|
+
"$value": "{neutral-1000}",
|
|
40
|
+
"$type": "color"
|
|
41
|
+
},
|
|
42
|
+
"control-background": {
|
|
43
|
+
"$value": {
|
|
44
|
+
"colorSpace": "oklch",
|
|
45
|
+
"components": [1, 0, 264],
|
|
46
|
+
"alpha": 0.08
|
|
47
|
+
},
|
|
48
|
+
"$type": "color"
|
|
49
|
+
},
|
|
50
|
+
"control-background-pressed": {
|
|
51
|
+
"$value": {
|
|
52
|
+
"colorSpace": "oklch",
|
|
53
|
+
"components": [1, 0, 264],
|
|
54
|
+
"alpha": 0.14
|
|
55
|
+
},
|
|
56
|
+
"$type": "color"
|
|
57
|
+
},
|
|
58
|
+
"control-foreground": {
|
|
59
|
+
"$value": "{neutral-100}",
|
|
60
|
+
"$type": "color"
|
|
61
|
+
},
|
|
62
|
+
"control-border": {
|
|
63
|
+
"$value": {
|
|
64
|
+
"colorSpace": "oklch",
|
|
65
|
+
"components": [1, 0, 264],
|
|
66
|
+
"alpha": 0.16
|
|
67
|
+
},
|
|
68
|
+
"$type": "color"
|
|
69
|
+
},
|
|
70
|
+
"color-state-success": {
|
|
71
|
+
"$value": {
|
|
72
|
+
"colorSpace": "oklch",
|
|
73
|
+
"components": [0.76, 0.16, 150]
|
|
74
|
+
},
|
|
75
|
+
"$type": "color"
|
|
76
|
+
},
|
|
77
|
+
"color-state-success-background": {
|
|
78
|
+
"$value": {
|
|
79
|
+
"colorSpace": "oklch",
|
|
80
|
+
"components": [0.76, 0.16, 150],
|
|
81
|
+
"alpha": 0.18
|
|
82
|
+
},
|
|
83
|
+
"$type": "color"
|
|
84
|
+
},
|
|
85
|
+
"color-state-warning": {
|
|
86
|
+
"$value": {
|
|
87
|
+
"colorSpace": "oklch",
|
|
88
|
+
"components": [0.84, 0.15, 75]
|
|
89
|
+
},
|
|
90
|
+
"$type": "color"
|
|
91
|
+
},
|
|
92
|
+
"color-state-warning-background": {
|
|
93
|
+
"$value": {
|
|
94
|
+
"colorSpace": "oklch",
|
|
95
|
+
"components": [0.84, 0.15, 75],
|
|
96
|
+
"alpha": 0.18
|
|
97
|
+
},
|
|
98
|
+
"$type": "color"
|
|
99
|
+
},
|
|
100
|
+
"color-state-danger": {
|
|
101
|
+
"$value": {
|
|
102
|
+
"colorSpace": "oklch",
|
|
103
|
+
"components": [0.7, 0.19, 25]
|
|
104
|
+
},
|
|
105
|
+
"$type": "color"
|
|
106
|
+
},
|
|
107
|
+
"color-state-danger-background": {
|
|
108
|
+
"$value": {
|
|
109
|
+
"colorSpace": "oklch",
|
|
110
|
+
"components": [0.7, 0.19, 25],
|
|
111
|
+
"alpha": 0.18
|
|
112
|
+
},
|
|
113
|
+
"$type": "color"
|
|
114
|
+
},
|
|
115
|
+
"color-state-info": {
|
|
116
|
+
"$value": {
|
|
117
|
+
"colorSpace": "oklch",
|
|
118
|
+
"components": [0.78, 0.12, 230]
|
|
119
|
+
},
|
|
120
|
+
"$type": "color"
|
|
121
|
+
},
|
|
122
|
+
"color-state-info-background": {
|
|
123
|
+
"$value": {
|
|
124
|
+
"colorSpace": "oklch",
|
|
125
|
+
"components": [0.78, 0.12, 230],
|
|
126
|
+
"alpha": 0.18
|
|
127
|
+
},
|
|
128
|
+
"$type": "color"
|
|
129
|
+
},
|
|
130
|
+
"color-accent-background": {
|
|
131
|
+
"$value": {
|
|
132
|
+
"colorSpace": "oklch",
|
|
133
|
+
"components": [0.65, 0.29, 340],
|
|
134
|
+
"alpha": 0.18
|
|
135
|
+
},
|
|
136
|
+
"$type": "color"
|
|
137
|
+
},
|
|
138
|
+
"material-glass-background": {
|
|
139
|
+
"$value": {
|
|
140
|
+
"colorSpace": "oklch",
|
|
141
|
+
"components": [0.18, 0.026, 264],
|
|
142
|
+
"alpha": 0.86
|
|
143
|
+
},
|
|
144
|
+
"$type": "color"
|
|
145
|
+
},
|
|
146
|
+
"material-glass-border": {
|
|
147
|
+
"$value": {
|
|
148
|
+
"colorSpace": "oklch",
|
|
149
|
+
"components": [1, 0, 264],
|
|
150
|
+
"alpha": 0.14
|
|
151
|
+
},
|
|
152
|
+
"$type": "color"
|
|
153
|
+
},
|
|
154
|
+
"material-glass-highlight": {
|
|
155
|
+
"$value": {
|
|
156
|
+
"colorSpace": "oklch",
|
|
157
|
+
"components": [1, 0, 264],
|
|
158
|
+
"alpha": 0.12
|
|
159
|
+
},
|
|
160
|
+
"$type": "color"
|
|
161
|
+
},
|
|
162
|
+
"material-glass-fallback-background": {
|
|
163
|
+
"$value": "{neutral-900}",
|
|
164
|
+
"$type": "color"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"default": "Default"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"resolutionOrder": [
|
|
173
|
+
{
|
|
174
|
+
"type": "set",
|
|
175
|
+
"sources": [
|
|
176
|
+
{
|
|
177
|
+
"$ref": "tokens.json"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"$ref": "#/modifiers/theme"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
package/lib/map/DemoControls.tsx
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* `<DemoControls>` — the geocoder demo's floating control panel, assembled from the demo-specific units
|
|
7
|
-
* (VersionPicker / CompareToggle / BackendControl / PlaceAutocomplete / ResultPanel) and the REUSED
|
|
8
|
-
* pipeline units (QueryForm / PresetChips / LoadingIndicator). It is the presentational composition the
|
|
9
|
-
* `_app.tsx` control `<section>` (`:1222-1514`) becomes — it reads the injected {@link DemoRuntime} for
|
|
10
|
-
* ready/version/backend/loading state and threads the {@link useDemoGeocode} + {@link usePlaceAutocomplete}
|
|
11
|
-
* + {@link useCompareState} hooks into the controls. Host-specific visualizers arrive via {@link DemoPanels}.
|
|
12
|
-
*
|
|
13
|
-
* NODE-SAFE: pure React + the shared/demo units, no maplibre. It rides `@mailwoman/react/map` as a
|
|
14
|
-
* demo-specific control, not for WebGL.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import type { ReactNode } from "react"
|
|
18
|
-
|
|
19
|
-
import type { DemoPanels, DemoRuntime } from "#map/types"
|
|
20
|
-
import type { UseCompareState } from "#map/useCompareState"
|
|
21
|
-
import type { UseDemoGeocode } from "#map/useDemoGeocode"
|
|
22
|
-
import type { UsePlaceAutocomplete } from "#map/usePlaceAutocomplete"
|
|
23
|
-
|
|
24
|
-
import { LoadingIndicator } from "../common/LoadingIndicator.tsx"
|
|
25
|
-
import { PresetChips, type Preset } from "../common/PresetChips.tsx"
|
|
26
|
-
import { QueryForm } from "../pipeline/QueryForm.tsx"
|
|
27
|
-
import { BackendControl } from "./BackendControl.tsx"
|
|
28
|
-
import { CompareToggle } from "./CompareToggle.tsx"
|
|
29
|
-
import { PlaceAutocomplete } from "./PlaceAutocomplete.tsx"
|
|
30
|
-
import { ResultPanel } from "./ResultPanel.tsx"
|
|
31
|
-
import { VersionPicker } from "./VersionPicker.tsx"
|
|
32
|
-
|
|
33
|
-
export interface DemoControlsProps {
|
|
34
|
-
/**
|
|
35
|
-
* The injected demo runtime.
|
|
36
|
-
*/
|
|
37
|
-
runtime: DemoRuntime
|
|
38
|
-
/**
|
|
39
|
-
* The parse+resolve state machine.
|
|
40
|
-
*/
|
|
41
|
-
geocode: UseDemoGeocode
|
|
42
|
-
/**
|
|
43
|
-
* The place-autocomplete combobox state.
|
|
44
|
-
*/
|
|
45
|
-
autocomplete: UsePlaceAutocomplete
|
|
46
|
-
/**
|
|
47
|
-
* The compare-mode state.
|
|
48
|
-
*/
|
|
49
|
-
compare: UseCompareState
|
|
50
|
-
/**
|
|
51
|
-
* Host-injected panels (about, release blurb, compare, permalink, extras, failure).
|
|
52
|
-
*/
|
|
53
|
-
panels: DemoPanels
|
|
54
|
-
/**
|
|
55
|
-
* Example chips.
|
|
56
|
-
*/
|
|
57
|
-
presets: ReadonlyArray<Preset>
|
|
58
|
-
/**
|
|
59
|
-
* Input placeholder.
|
|
60
|
-
*/
|
|
61
|
-
placeholder: string
|
|
62
|
-
/**
|
|
63
|
-
* Select a model version (the composed demo also clears a now-colliding compare selection).
|
|
64
|
-
*/
|
|
65
|
-
onSelectVersion: (version: string) => void
|
|
66
|
-
/**
|
|
67
|
-
* Toggle the forced WASM backend.
|
|
68
|
-
*/
|
|
69
|
-
onForceWASMChange: (forceWASM: boolean) => void
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* The floating control panel.
|
|
74
|
-
*/
|
|
75
|
-
export function DemoControls({
|
|
76
|
-
runtime,
|
|
77
|
-
geocode,
|
|
78
|
-
autocomplete,
|
|
79
|
-
compare,
|
|
80
|
-
panels,
|
|
81
|
-
presets,
|
|
82
|
-
placeholder,
|
|
83
|
-
onSelectVersion,
|
|
84
|
-
onForceWASMChange,
|
|
85
|
-
}: DemoControlsProps): ReactNode {
|
|
86
|
-
const versions = runtime.availableVersions ?? []
|
|
87
|
-
const { busy, result, selectedCandidate } = geocode
|
|
88
|
-
const loading = runtime.loading
|
|
89
|
-
const errorMessage = geocode.parseError ?? runtime.errorMessage ?? null
|
|
90
|
-
|
|
91
|
-
return (
|
|
92
|
-
<section className="mw-demo-controls">
|
|
93
|
-
{panels.header}
|
|
94
|
-
{panels.releaseInfo}
|
|
95
|
-
|
|
96
|
-
<VersionPicker
|
|
97
|
-
versions={versions}
|
|
98
|
-
selected={runtime.selectedVersion ?? null}
|
|
99
|
-
onSelect={onSelectVersion}
|
|
100
|
-
disabled={busy}
|
|
101
|
-
/>
|
|
102
|
-
|
|
103
|
-
<BackendControl
|
|
104
|
-
activeBackend={runtime.activeBackend}
|
|
105
|
-
forceWASM={runtime.forceWASM ?? false}
|
|
106
|
-
onForceWASMChange={onForceWASMChange}
|
|
107
|
-
/>
|
|
108
|
-
|
|
109
|
-
<CompareToggle
|
|
110
|
-
versions={versions}
|
|
111
|
-
primaryVersion={runtime.selectedVersion ?? null}
|
|
112
|
-
compareMode={compare.compareMode}
|
|
113
|
-
onCompareModeChange={compare.setCompareMode}
|
|
114
|
-
compareVersion={compare.compareVersion}
|
|
115
|
-
onCompareVersionChange={compare.setCompareVersion}
|
|
116
|
-
disabled={busy}
|
|
117
|
-
/>
|
|
118
|
-
|
|
119
|
-
<QueryForm
|
|
120
|
-
value={geocode.text}
|
|
121
|
-
onChange={geocode.setText}
|
|
122
|
-
onSubmit={geocode.submit}
|
|
123
|
-
disabled={!runtime.ready}
|
|
124
|
-
busy={busy}
|
|
125
|
-
placeholder={placeholder}
|
|
126
|
-
onKeyDown={autocomplete.onInputKeyDown}
|
|
127
|
-
inputProps={autocomplete.inputProps}
|
|
128
|
-
/>
|
|
129
|
-
|
|
130
|
-
{panels.bias}
|
|
131
|
-
|
|
132
|
-
<PlaceAutocomplete
|
|
133
|
-
suggestions={autocomplete.suggestions}
|
|
134
|
-
activeIndex={autocomplete.activeIndex}
|
|
135
|
-
onPick={autocomplete.pick}
|
|
136
|
-
onHover={autocomplete.setActiveIndex}
|
|
137
|
-
listboxID={autocomplete.listboxID}
|
|
138
|
-
optionID={autocomplete.optionID}
|
|
139
|
-
/>
|
|
140
|
-
|
|
141
|
-
<PresetChips
|
|
142
|
-
presets={presets}
|
|
143
|
-
disabled={!runtime.ready || busy}
|
|
144
|
-
onPick={(value) => {
|
|
145
|
-
geocode.setText(value)
|
|
146
|
-
geocode.reset()
|
|
147
|
-
}}
|
|
148
|
-
trailing={panels.permalink ? panels.permalink(geocode.text) : null}
|
|
149
|
-
/>
|
|
150
|
-
|
|
151
|
-
{loading && !runtime.ready ? (
|
|
152
|
-
<LoadingIndicator
|
|
153
|
-
mode="staged"
|
|
154
|
-
steps={loading.stepLabels.length ? loading.stepLabels : undefined}
|
|
155
|
-
activeStep={loading.stepIndex}
|
|
156
|
-
label={loading.progress}
|
|
157
|
-
/>
|
|
158
|
-
) : null}
|
|
159
|
-
{errorMessage ? <p className="mw-error">{errorMessage}</p> : null}
|
|
160
|
-
|
|
161
|
-
{panels.aboveResult ? panels.aboveResult({ result }) : null}
|
|
162
|
-
|
|
163
|
-
{busy ? (
|
|
164
|
-
<div className="mw-result">
|
|
165
|
-
<LoadingIndicator mode="staged" steps={runtime.parseStageLabels} activeStep={geocode.parseStage} />
|
|
166
|
-
</div>
|
|
167
|
-
) : result ? (
|
|
168
|
-
panels.result ? (
|
|
169
|
-
panels.result({
|
|
170
|
-
result,
|
|
171
|
-
selectedCandidate,
|
|
172
|
-
selectedCandidateIndex: geocode.selectedCandidateIndex,
|
|
173
|
-
onSelectCandidate: geocode.selectCandidate,
|
|
174
|
-
})
|
|
175
|
-
) : (
|
|
176
|
-
<ResultPanel
|
|
177
|
-
result={result}
|
|
178
|
-
selectedCandidate={selectedCandidate}
|
|
179
|
-
selectedCandidateIndex={geocode.selectedCandidateIndex}
|
|
180
|
-
onSelectCandidate={geocode.selectCandidate}
|
|
181
|
-
extras={panels.extras}
|
|
182
|
-
failure={panels.failure}
|
|
183
|
-
/>
|
|
184
|
-
)
|
|
185
|
-
) : null}
|
|
186
|
-
|
|
187
|
-
{panels.compare
|
|
188
|
-
? panels.compare({ result, compareMode: compare.compareMode, compareVersion: compare.compareVersion })
|
|
189
|
-
: null}
|
|
190
|
-
|
|
191
|
-
{panels.footer}
|
|
192
|
-
</section>
|
|
193
|
-
)
|
|
194
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* `<DemoControls>` — the geocoder demo's floating control panel, assembled from the demo-specific units
|
|
7
|
-
* (VersionPicker / CompareToggle / BackendControl / PlaceAutocomplete / ResultPanel) and the REUSED
|
|
8
|
-
* pipeline units (QueryForm / PresetChips / LoadingIndicator). It is the presentational composition the
|
|
9
|
-
* `_app.tsx` control `<section>` (`:1222-1514`) becomes — it reads the injected {@link DemoRuntime} for
|
|
10
|
-
* ready/version/backend/loading state and threads the {@link useDemoGeocode} + {@link usePlaceAutocomplete}
|
|
11
|
-
* + {@link useCompareState} hooks into the controls. Host-specific visualizers arrive via {@link DemoPanels}.
|
|
12
|
-
*
|
|
13
|
-
* NODE-SAFE: pure React + the shared/demo units, no maplibre. It rides `@mailwoman/react/map` as a
|
|
14
|
-
* demo-specific control, not for WebGL.
|
|
15
|
-
*/
|
|
16
|
-
import type { ReactNode } from "react";
|
|
17
|
-
import type { DemoPanels, DemoRuntime } from "#map/types";
|
|
18
|
-
import type { UseCompareState } from "#map/useCompareState";
|
|
19
|
-
import type { UseDemoGeocode } from "#map/useDemoGeocode";
|
|
20
|
-
import type { UsePlaceAutocomplete } from "#map/usePlaceAutocomplete";
|
|
21
|
-
import { type Preset } from "../common/PresetChips.tsx";
|
|
22
|
-
export interface DemoControlsProps {
|
|
23
|
-
/**
|
|
24
|
-
* The injected demo runtime.
|
|
25
|
-
*/
|
|
26
|
-
runtime: DemoRuntime;
|
|
27
|
-
/**
|
|
28
|
-
* The parse+resolve state machine.
|
|
29
|
-
*/
|
|
30
|
-
geocode: UseDemoGeocode;
|
|
31
|
-
/**
|
|
32
|
-
* The place-autocomplete combobox state.
|
|
33
|
-
*/
|
|
34
|
-
autocomplete: UsePlaceAutocomplete;
|
|
35
|
-
/**
|
|
36
|
-
* The compare-mode state.
|
|
37
|
-
*/
|
|
38
|
-
compare: UseCompareState;
|
|
39
|
-
/**
|
|
40
|
-
* Host-injected panels (about, release blurb, compare, permalink, extras, failure).
|
|
41
|
-
*/
|
|
42
|
-
panels: DemoPanels;
|
|
43
|
-
/**
|
|
44
|
-
* Example chips.
|
|
45
|
-
*/
|
|
46
|
-
presets: ReadonlyArray<Preset>;
|
|
47
|
-
/**
|
|
48
|
-
* Input placeholder.
|
|
49
|
-
*/
|
|
50
|
-
placeholder: string;
|
|
51
|
-
/**
|
|
52
|
-
* Select a model version (the composed demo also clears a now-colliding compare selection).
|
|
53
|
-
*/
|
|
54
|
-
onSelectVersion: (version: string) => void;
|
|
55
|
-
/**
|
|
56
|
-
* Toggle the forced WASM backend.
|
|
57
|
-
*/
|
|
58
|
-
onForceWASMChange: (forceWASM: boolean) => void;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* The floating control panel.
|
|
62
|
-
*/
|
|
63
|
-
export declare function DemoControls({ runtime, geocode, autocomplete, compare, panels, presets, placeholder, onSelectVersion, onForceWASMChange, }: DemoControlsProps): ReactNode;
|
|
64
|
-
//# sourceMappingURL=DemoControls.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DemoControls.d.ts","sourceRoot":"","sources":["../../lib/map/DemoControls.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGrE,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAQpE,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,OAAO,EAAE,WAAW,CAAA;IACpB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,YAAY,EAAE,oBAAoB,CAAA;IAClC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC9B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C;;OAEG;IACH,iBAAiB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAC/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EACX,eAAe,EACf,iBAAiB,GACjB,EAAE,iBAAiB,GAAG,SAAS,CA6G/B"}
|
package/out/map/DemoControls.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { LoadingIndicator } from "../common/LoadingIndicator.js";
|
|
3
|
-
import { PresetChips } from "../common/PresetChips.js";
|
|
4
|
-
import { QueryForm } from "../pipeline/QueryForm.js";
|
|
5
|
-
import { BackendControl } from "./BackendControl.js";
|
|
6
|
-
import { CompareToggle } from "./CompareToggle.js";
|
|
7
|
-
import { PlaceAutocomplete } from "./PlaceAutocomplete.js";
|
|
8
|
-
import { ResultPanel } from "./ResultPanel.js";
|
|
9
|
-
import { VersionPicker } from "./VersionPicker.js";
|
|
10
|
-
/**
|
|
11
|
-
* The floating control panel.
|
|
12
|
-
*/
|
|
13
|
-
export function DemoControls({ runtime, geocode, autocomplete, compare, panels, presets, placeholder, onSelectVersion, onForceWASMChange, }) {
|
|
14
|
-
const versions = runtime.availableVersions ?? [];
|
|
15
|
-
const { busy, result, selectedCandidate } = geocode;
|
|
16
|
-
const loading = runtime.loading;
|
|
17
|
-
const errorMessage = geocode.parseError ?? runtime.errorMessage ?? null;
|
|
18
|
-
return (_jsxs("section", { className: "mw-demo-controls", children: [panels.header, panels.releaseInfo, _jsx(VersionPicker, { versions: versions, selected: runtime.selectedVersion ?? null, onSelect: onSelectVersion, disabled: busy }), _jsx(BackendControl, { activeBackend: runtime.activeBackend, forceWASM: runtime.forceWASM ?? false, onForceWASMChange: onForceWASMChange }), _jsx(CompareToggle, { versions: versions, primaryVersion: runtime.selectedVersion ?? null, compareMode: compare.compareMode, onCompareModeChange: compare.setCompareMode, compareVersion: compare.compareVersion, onCompareVersionChange: compare.setCompareVersion, disabled: busy }), _jsx(QueryForm, { value: geocode.text, onChange: geocode.setText, onSubmit: geocode.submit, disabled: !runtime.ready, busy: busy, placeholder: placeholder, onKeyDown: autocomplete.onInputKeyDown, inputProps: autocomplete.inputProps }), panels.bias, _jsx(PlaceAutocomplete, { suggestions: autocomplete.suggestions, activeIndex: autocomplete.activeIndex, onPick: autocomplete.pick, onHover: autocomplete.setActiveIndex, listboxID: autocomplete.listboxID, optionID: autocomplete.optionID }), _jsx(PresetChips, { presets: presets, disabled: !runtime.ready || busy, onPick: (value) => {
|
|
19
|
-
geocode.setText(value);
|
|
20
|
-
geocode.reset();
|
|
21
|
-
}, trailing: panels.permalink ? panels.permalink(geocode.text) : null }), loading && !runtime.ready ? (_jsx(LoadingIndicator, { mode: "staged", steps: loading.stepLabels.length ? loading.stepLabels : undefined, activeStep: loading.stepIndex, label: loading.progress })) : null, errorMessage ? _jsx("p", { className: "mw-error", children: errorMessage }) : null, panels.aboveResult ? panels.aboveResult({ result }) : null, busy ? (_jsx("div", { className: "mw-result", children: _jsx(LoadingIndicator, { mode: "staged", steps: runtime.parseStageLabels, activeStep: geocode.parseStage }) })) : result ? (panels.result ? (panels.result({
|
|
22
|
-
result,
|
|
23
|
-
selectedCandidate,
|
|
24
|
-
selectedCandidateIndex: geocode.selectedCandidateIndex,
|
|
25
|
-
onSelectCandidate: geocode.selectCandidate,
|
|
26
|
-
})) : (_jsx(ResultPanel, { result: result, selectedCandidate: selectedCandidate, selectedCandidateIndex: geocode.selectedCandidateIndex, onSelectCandidate: geocode.selectCandidate, extras: panels.extras, failure: panels.failure }))) : null, panels.compare
|
|
27
|
-
? panels.compare({ result, compareMode: compare.compareMode, compareVersion: compare.compareVersion })
|
|
28
|
-
: null, panels.footer] }));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=DemoControls.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DemoControls.js","sourceRoot":"","sources":["../../lib/map/DemoControls.tsx"],"names":[],"mappings":"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"}
|
package/out/map/DemoMap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DemoMap.d.ts","sourceRoot":"","sources":["../../lib/map/DemoMap.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEnF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;AAE5D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACtC,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC,CACvG,CAAA;AAED,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,QAAQ,EAAE,YAAY,CAAA;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAC/C;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC9C;;OAEG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CAC5B;AAID;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACvB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,UAAoB,EACpB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACR,EAAE,YAAY,GAAG,SAAS,CAmB1B"}
|
package/out/map/DemoMap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DemoMap.js","sourceRoot":"","sources":["../../lib/map/DemoMap.tsx"],"names":[],"mappings":";AAwBA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAA;AA2D3C,MAAM,IAAI,GAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAE7D;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EACvB,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,UAAU,GAAG,OAAO,EACpB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,GACM;IACd,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,CAAA;IAE/E,OAAO,CACN,cAAK,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,YAC7C,KAAC,GAAG,OACC,QAAQ,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,IAAI,YAEV,QAAQ,GACJ,GACD,CACN,CAAA;AACF,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license AGPL-3.0
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*
|
|
6
|
-
* `<GeocoderDemo>` — the WHOLE geocoder demo, composed. It is the map analogue of `PipelineExplorer`
|
|
7
|
-
* and takes the SAME DI shape: an injected {@link DemoRuntime} (the host owns ONNX / httpvfs / R2 /
|
|
8
|
-
* the composed map style) plus a {@link DemoPanels} bag (the host's ModelVisualizer / VersionCompare /
|
|
9
|
-
* About / Permalink). Everything here is composition + a `ClientOnly` boundary:
|
|
10
|
-
*
|
|
11
|
-
* - the floating {@link DemoControls} panel (version / compare / backend / query+autocomplete / result),
|
|
12
|
-
* - the declarative {@link DemoMap} with the phase-2 overlays ({@link OverlayLayers}) and the
|
|
13
|
-
* resolved-place marker/outline/camera ({@link ResolvedPlaceLayers}) driven by the parse state,
|
|
14
|
-
* - the hooks that wire them: {@link useDemoGeocode} (parse + viewport bias + map place),
|
|
15
|
-
* {@link usePlaceAutocomplete}, {@link useCompareState}.
|
|
16
|
-
*
|
|
17
|
-
* Because it pulls {@link DemoMap} (→ `react-map-gl` → `maplibre-gl`, WebGL + DOM at import), it lives on
|
|
18
|
-
* the `@mailwoman/react/map` subpath ONLY — never the package root. The whole thing renders in Storybook
|
|
19
|
-
* over a fake runtime (offline stub style + canned geocode) with no network, no ONNX, no gazetteer.
|
|
20
|
-
*/
|
|
21
|
-
import { type ReactNode } from "react";
|
|
22
|
-
import type { DemoPanels, DemoRuntime } from "#map/types";
|
|
23
|
-
import type { Preset } from "../common/PresetChips.tsx";
|
|
24
|
-
export interface GeocoderDemoProps {
|
|
25
|
-
/**
|
|
26
|
-
* The injected demo runtime (map style + overlays + parse + version/backend).
|
|
27
|
-
*/
|
|
28
|
-
runtime: DemoRuntime;
|
|
29
|
-
/**
|
|
30
|
-
* Host-injected panels (about, release blurb, compare, permalink, debug drawer, map controls, …).
|
|
31
|
-
*/
|
|
32
|
-
panels?: DemoPanels;
|
|
33
|
-
/**
|
|
34
|
-
* Address to pre-fill.
|
|
35
|
-
*/
|
|
36
|
-
defaultAddress?: string;
|
|
37
|
-
/**
|
|
38
|
-
* Example chips. @default the empty set (host supplies its own).
|
|
39
|
-
*/
|
|
40
|
-
presets?: ReadonlyArray<Preset>;
|
|
41
|
-
/**
|
|
42
|
-
* Only hint the viewport bias once the visitor has zoomed past the global view — a whole-globe center is noise.
|
|
43
|
-
* Matches the demo's `map.getZoom() >= 4` threshold. @default 4
|
|
44
|
-
*/
|
|
45
|
-
minBiasZoom?: number;
|
|
46
|
-
/**
|
|
47
|
-
* Fly/fit the map to the resolved place on each result (via {@link ResolvedPlaceLayers}). @default true. Set false
|
|
48
|
-
* for a host that drives the camera itself (a controlled `<DemoMap viewState>`), or to keep a headless test
|
|
49
|
-
* deterministic — the marker + outline still render, only the animated camera move is skipped.
|
|
50
|
-
*/
|
|
51
|
-
applyResultCamera?: boolean;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* The composed geocoder demo, behind a `ClientOnly` SSR boundary (the map is intrinsically a client component).
|
|
55
|
-
*/
|
|
56
|
-
export declare function GeocoderDemo({ runtime, panels, defaultAddress, presets, minBiasZoom, applyResultCamera, }: GeocoderDemoProps): ReactNode;
|
|
57
|
-
//# sourceMappingURL=GeocoderDemo.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeocoderDemo.d.ts","sourceRoot":"","sources":["../../lib/map/GeocoderDemo.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAW,MAAM,YAAY,CAAA;AAOlE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMvD,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,OAAO,EAAE,WAAW,CAAA;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC3B;AA0HD;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,OAAO,EACP,MAAkB,EAClB,cAAmB,EACnB,OAAoB,EACpB,WAAe,EACf,iBAAwB,GACxB,EAAE,iBAAiB,GAAG,SAAS,CAqB/B"}
|
package/out/map/GeocoderDemo.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* @copyright Sister Software
|
|
4
|
-
* @license AGPL-3.0
|
|
5
|
-
* @author Teffen Ellis, et al.
|
|
6
|
-
*
|
|
7
|
-
* `<GeocoderDemo>` — the WHOLE geocoder demo, composed. It is the map analogue of `PipelineExplorer`
|
|
8
|
-
* and takes the SAME DI shape: an injected {@link DemoRuntime} (the host owns ONNX / httpvfs / R2 /
|
|
9
|
-
* the composed map style) plus a {@link DemoPanels} bag (the host's ModelVisualizer / VersionCompare /
|
|
10
|
-
* About / Permalink). Everything here is composition + a `ClientOnly` boundary:
|
|
11
|
-
*
|
|
12
|
-
* - the floating {@link DemoControls} panel (version / compare / backend / query+autocomplete / result),
|
|
13
|
-
* - the declarative {@link DemoMap} with the phase-2 overlays ({@link OverlayLayers}) and the
|
|
14
|
-
* resolved-place marker/outline/camera ({@link ResolvedPlaceLayers}) driven by the parse state,
|
|
15
|
-
* - the hooks that wire them: {@link useDemoGeocode} (parse + viewport bias + map place),
|
|
16
|
-
* {@link usePlaceAutocomplete}, {@link useCompareState}.
|
|
17
|
-
*
|
|
18
|
-
* Because it pulls {@link DemoMap} (→ `react-map-gl` → `maplibre-gl`, WebGL + DOM at import), it lives on
|
|
19
|
-
* the `@mailwoman/react/map` subpath ONLY — never the package root. The whole thing renders in Storybook
|
|
20
|
-
* over a fake runtime (offline stub style + canned geocode) with no network, no ONNX, no gazetteer.
|
|
21
|
-
*/
|
|
22
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
23
|
-
import { useCompareState } from "#map/useCompareState";
|
|
24
|
-
import { useDemoGeocode } from "#map/useDemoGeocode";
|
|
25
|
-
import { useMapPlaceRender } from "#map/useMapPlaceRender";
|
|
26
|
-
import { usePlaceAutocomplete } from "#map/usePlaceAutocomplete";
|
|
27
|
-
import { ClientOnly } from "../common/ClientOnly.js";
|
|
28
|
-
import { DemoControls } from "./DemoControls.js";
|
|
29
|
-
import { DemoMap } from "./DemoMap.js";
|
|
30
|
-
import { OverlayLayers } from "./OverlayLayers.js";
|
|
31
|
-
import { ResolvedPlaceLayers } from "./ResolvedPlaceLayers.js";
|
|
32
|
-
function GeocoderDemoInner({ runtime, panels, defaultAddress, presets, minBiasZoom, applyResultCamera, }) {
|
|
33
|
-
const mapRef = useRef(null);
|
|
34
|
-
// TEST INJECTION POINT: the e2e viewport-bias suite drives the REAL map (pan + zoom past the bias threshold)
|
|
35
|
-
// before submitting, and a browser test cannot reach a React ref — so the live map handle is
|
|
36
|
-
// republished on `globalThis.__mailwomanDemoMap`, the same global the pre-port demo carried. The
|
|
37
|
-
// ref fills only after react-map-gl instantiates the map, hence the short poll; cleared on
|
|
38
|
-
// unmount so a torn-down demo never leaves a stale handle behind.
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
const host = globalThis;
|
|
41
|
-
const timer = setInterval(() => {
|
|
42
|
-
const map = mapRef.current?.getMap();
|
|
43
|
-
if (map) {
|
|
44
|
-
host.__mailwomanDemoMap = map;
|
|
45
|
-
clearInterval(timer);
|
|
46
|
-
}
|
|
47
|
-
}, 250);
|
|
48
|
-
return () => {
|
|
49
|
-
clearInterval(timer);
|
|
50
|
-
delete host.__mailwomanDemoMap;
|
|
51
|
-
};
|
|
52
|
-
}, []);
|
|
53
|
-
// Read the viewport bias at submit time — through the map handle, never a threaded state value, so granting/zooming
|
|
54
|
-
// mid-session doesn't re-create the parse callback. Below the min-bias zoom, a whole-globe center is noise → null.
|
|
55
|
-
const getBias = useCallback(() => {
|
|
56
|
-
const map = mapRef.current?.getMap();
|
|
57
|
-
if (!map)
|
|
58
|
-
return null;
|
|
59
|
-
const zoom = map.getZoom();
|
|
60
|
-
if (zoom < minBiasZoom)
|
|
61
|
-
return null;
|
|
62
|
-
const center = map.getCenter();
|
|
63
|
-
return { center: [center.lng, center.lat], zoom };
|
|
64
|
-
}, [minBiasZoom]);
|
|
65
|
-
const geocode = useDemoGeocode({ runtime, defaultText: defaultAddress, getBias });
|
|
66
|
-
const compare = useCompareState();
|
|
67
|
-
const autocomplete = usePlaceAutocomplete({
|
|
68
|
-
text: geocode.text,
|
|
69
|
-
setText: geocode.setText,
|
|
70
|
-
autocomplete: runtime.autocomplete,
|
|
71
|
-
});
|
|
72
|
-
const spec = useMapPlaceRender(geocode.mapPlace);
|
|
73
|
-
const onSelectVersion = useCallback((version) => {
|
|
74
|
-
runtime.selectVersion?.(version);
|
|
75
|
-
compare.clearIfPrimary(version);
|
|
76
|
-
}, [runtime, compare]);
|
|
77
|
-
const onForceWASMChange = useCallback((forceWASM) => runtime.setForceWASM?.(forceWASM), [runtime]);
|
|
78
|
-
return (_jsxs("div", { className: "mw-geocoder-demo", children: [_jsx("div", { className: "mw-geocoder-demo__map", children: _jsxs(DemoMap, { mapStyle: runtime.mapStyle, mapRef: mapRef, initialViewState: {
|
|
79
|
-
longitude: runtime.initialCenter[0],
|
|
80
|
-
latitude: runtime.initialCenter[1],
|
|
81
|
-
zoom: runtime.initialZoom ?? 3,
|
|
82
|
-
}, style: { width: "100%", height: "100%" },
|
|
83
|
-
// Match the live demo's chrome: one compact attribution pill (the map's own default is a wide, always-open
|
|
84
|
-
// "MapLibre | © …" bar), no maplibre wordmark logo.
|
|
85
|
-
mapProps: { attributionControl: { compact: true }, maplibreLogo: false }, children: [_jsx(OverlayLayers, { overlays: runtime.overlays }), _jsx(ResolvedPlaceLayers, { spec: spec, applyCamera: applyResultCamera }), panels.mapControls] }) }), _jsx(DemoControls, { runtime: runtime, geocode: geocode, autocomplete: autocomplete, compare: compare, panels: panels, presets: presets, placeholder: defaultAddress, onSelectVersion: onSelectVersion, onForceWASMChange: onForceWASMChange }), panels.debugDrawer ? panels.debugDrawer({ result: geocode.result }) : null] }));
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Stable empty defaults — a fresh `{}`/`[]` per render would churn every downstream memo dep.
|
|
89
|
-
*/
|
|
90
|
-
const NO_PANELS = {};
|
|
91
|
-
const NO_PRESETS = [];
|
|
92
|
-
/**
|
|
93
|
-
* The composed geocoder demo, behind a `ClientOnly` SSR boundary (the map is intrinsically a client component).
|
|
94
|
-
*/
|
|
95
|
-
export function GeocoderDemo({ runtime, panels = NO_PANELS, defaultAddress = "", presets = NO_PRESETS, minBiasZoom = 4, applyResultCamera = true, }) {
|
|
96
|
-
return (_jsx(ClientOnly, { fallback: _jsx("div", { className: "mw-geocoder-demo", children: _jsx("p", { children: "Loading demo\u2026" }) }), children: () => (_jsx(GeocoderDemoInner, { runtime: runtime, panels: panels, defaultAddress: defaultAddress, presets: presets, minBiasZoom: minBiasZoom, applyResultCamera: applyResultCamera })) }));
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=GeocoderDemo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeocoderDemo.js","sourceRoot":"","sources":["../../lib/map/GeocoderDemo.tsx"],"names":[],"mappings":"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"}
|