@mailwoman/react 9.2.0 → 9.4.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.
Files changed (278) hide show
  1. package/README.md +1 -1
  2. package/fonts.css +59 -0
  3. package/lib/common/About.tsx +89 -0
  4. package/{common → lib/common}/CopyButton.tsx +1 -1
  5. package/{common → lib/common}/KindBadge.tsx +2 -7
  6. package/{common → lib/common}/LoadingIndicator.tsx +1 -1
  7. package/lib/common/confidence-tiers.ts +50 -0
  8. package/lib/common/text-tokens.ts +88 -0
  9. package/{index.ts → lib/index.ts} +44 -42
  10. package/{map → lib/map}/CompareToggle.tsx +2 -2
  11. package/{map/GeocoderDemo.tsx → lib/map/Geocoder.tsx} +45 -44
  12. package/{map/DemoControls.tsx → lib/map/GeocoderControls.tsx} +19 -19
  13. package/{map/DemoMap.tsx → lib/map/MapCanvas.tsx} +16 -16
  14. package/{map → lib/map}/OverlayLayers.tsx +3 -3
  15. package/{map → lib/map}/PlaceAutocomplete.tsx +2 -2
  16. package/{map → lib/map}/PlaceMarker.tsx +1 -1
  17. package/{map → lib/map}/ResolvedPlaceLayers.tsx +5 -4
  18. package/{map → lib/map}/ResultCamera.tsx +3 -3
  19. package/{map → lib/map}/ResultOverlay.tsx +2 -2
  20. package/{map → lib/map}/ResultPanel.tsx +4 -3
  21. package/{map → lib/map}/VersionPicker.tsx +3 -3
  22. package/lib/map/fake-runtime.ts +122 -0
  23. package/{map → lib/map}/index.ts +26 -26
  24. package/lib/map/map-debug.ts +51 -0
  25. package/{map → lib/map}/place-render.ts +5 -4
  26. package/{map → lib/map}/types.ts +51 -46
  27. package/{map/useDemoGeocode.ts → lib/map/useGeocode.ts} +11 -11
  28. package/{map → lib/map}/useMapPlaceRender.ts +2 -2
  29. package/{map → lib/map}/usePlaceAutocomplete.ts +2 -2
  30. package/{pipeline → lib/pipeline}/CandidatePicker.tsx +2 -2
  31. package/{pipeline → lib/pipeline}/ComponentTable.tsx +1 -1
  32. package/lib/pipeline/ConfidenceCell.tsx +31 -0
  33. package/lib/pipeline/FailureDiagnostic.tsx +56 -0
  34. package/{pipeline → lib/pipeline}/PipelineExplorer.tsx +5 -4
  35. package/{pipeline → lib/pipeline}/QueryForm.tsx +2 -2
  36. package/{pipeline → lib/pipeline}/ResolvedPlace.tsx +17 -4
  37. package/lib/pipeline/SpanHighlight.tsx +97 -0
  38. package/lib/pipeline/TimingPanel.tsx +65 -0
  39. package/lib/pipeline/TreeView.tsx +55 -0
  40. package/{pipeline → lib/pipeline}/copy.ts +1 -1
  41. package/{pipeline → lib/pipeline}/presets.ts +2 -1
  42. package/{pipeline → lib/pipeline}/types.ts +2 -75
  43. package/{pipeline → lib/pipeline}/useParsePipeline.ts +2 -1
  44. package/{poi → lib/poi}/LiveResultsBlock.tsx +2 -2
  45. package/{poi → lib/poi}/POIExplorer.tsx +4 -3
  46. package/{poi → lib/poi}/SubjectPanel.tsx +1 -1
  47. package/{poi → lib/poi}/runtime.ts +3 -3
  48. package/{poi → lib/poi}/types.ts +3 -2
  49. package/{poi → lib/poi}/usePOISearch.ts +5 -5
  50. package/{runtime/useDemoRuntime.ts → lib/runtime/useReleaseRuntime.ts} +24 -26
  51. package/out/common/About.d.ts +12 -0
  52. package/out/common/About.d.ts.map +1 -0
  53. package/out/common/About.js +5 -0
  54. package/out/common/About.js.map +1 -0
  55. package/out/common/ClientOnly.d.ts.map +1 -1
  56. package/out/common/ClientOnly.js.map +1 -1
  57. package/out/common/CopyButton.d.ts.map +1 -1
  58. package/out/common/CopyButton.js +1 -1
  59. package/out/common/CopyButton.js.map +1 -1
  60. package/out/common/KindBadge.d.ts +2 -9
  61. package/out/common/KindBadge.d.ts.map +1 -1
  62. package/out/common/KindBadge.js.map +1 -1
  63. package/out/common/LoadingIndicator.d.ts.map +1 -1
  64. package/out/common/LoadingIndicator.js +1 -1
  65. package/out/common/LoadingIndicator.js.map +1 -1
  66. package/out/common/PresetChips.d.ts.map +1 -1
  67. package/out/common/PresetChips.js.map +1 -1
  68. package/out/common/confidence-tiers.d.ts +36 -0
  69. package/out/common/confidence-tiers.d.ts.map +1 -0
  70. package/out/common/confidence-tiers.js +42 -0
  71. package/out/common/confidence-tiers.js.map +1 -0
  72. package/out/common/cx.d.ts.map +1 -1
  73. package/out/common/cx.js.map +1 -1
  74. package/out/common/text-tokens.d.ts +46 -0
  75. package/out/common/text-tokens.d.ts.map +1 -0
  76. package/out/common/text-tokens.js +52 -0
  77. package/out/common/text-tokens.js.map +1 -0
  78. package/out/common/useClipboard.d.ts.map +1 -1
  79. package/out/common/useClipboard.js.map +1 -1
  80. package/out/common/useDebouncedValue.d.ts.map +1 -1
  81. package/out/common/useDebouncedValue.js.map +1 -1
  82. package/out/index.d.ts +27 -18
  83. package/out/index.d.ts.map +1 -1
  84. package/out/index.js +16 -10
  85. package/out/index.js.map +1 -1
  86. package/out/map/BackendControl.d.ts.map +1 -1
  87. package/out/map/BackendControl.js.map +1 -1
  88. package/out/map/CompareToggle.d.ts +2 -2
  89. package/out/map/CompareToggle.d.ts.map +1 -1
  90. package/out/map/CompareToggle.js.map +1 -1
  91. package/out/map/{GeocoderDemo.d.ts → Geocoder.d.ts} +17 -17
  92. package/out/map/Geocoder.d.ts.map +1 -0
  93. package/out/map/{GeocoderDemo.js → Geocoder.js} +30 -30
  94. package/out/map/Geocoder.js.map +1 -0
  95. package/out/map/GeocoderControls.d.ts +63 -0
  96. package/out/map/GeocoderControls.d.ts.map +1 -0
  97. package/out/map/{DemoControls.js → GeocoderControls.js} +2 -2
  98. package/out/map/GeocoderControls.js.map +1 -0
  99. package/out/map/{DemoMap.d.ts → MapCanvas.d.ts} +16 -16
  100. package/out/map/MapCanvas.d.ts.map +1 -0
  101. package/out/map/{DemoMap.js → MapCanvas.js} +2 -2
  102. package/out/map/MapCanvas.js.map +1 -0
  103. package/out/map/OverlayLayers.d.ts +3 -3
  104. package/out/map/OverlayLayers.d.ts.map +1 -1
  105. package/out/map/OverlayLayers.js +2 -2
  106. package/out/map/OverlayLayers.js.map +1 -1
  107. package/out/map/PlaceAutocomplete.d.ts +1 -1
  108. package/out/map/PlaceAutocomplete.d.ts.map +1 -1
  109. package/out/map/PlaceAutocomplete.js +1 -1
  110. package/out/map/PlaceAutocomplete.js.map +1 -1
  111. package/out/map/PlaceMarker.d.ts +1 -1
  112. package/out/map/PlaceMarker.d.ts.map +1 -1
  113. package/out/map/PlaceMarker.js.map +1 -1
  114. package/out/map/ResolvedPlaceLayers.d.ts +4 -4
  115. package/out/map/ResolvedPlaceLayers.d.ts.map +1 -1
  116. package/out/map/ResolvedPlaceLayers.js.map +1 -1
  117. package/out/map/ResultCamera.d.ts +3 -3
  118. package/out/map/ResultCamera.d.ts.map +1 -1
  119. package/out/map/ResultCamera.js +2 -2
  120. package/out/map/ResultCamera.js.map +1 -1
  121. package/out/map/ResultOverlay.d.ts +2 -2
  122. package/out/map/ResultOverlay.d.ts.map +1 -1
  123. package/out/map/ResultOverlay.js.map +1 -1
  124. package/out/map/ResultPanel.d.ts +2 -2
  125. package/out/map/ResultPanel.d.ts.map +1 -1
  126. package/out/map/ResultPanel.js +1 -1
  127. package/out/map/ResultPanel.js.map +1 -1
  128. package/out/map/VersionPicker.d.ts +3 -3
  129. package/out/map/VersionPicker.d.ts.map +1 -1
  130. package/out/map/VersionPicker.js.map +1 -1
  131. package/out/map/fake-runtime.d.ts +38 -0
  132. package/out/map/fake-runtime.d.ts.map +1 -0
  133. package/out/map/fake-runtime.js +107 -0
  134. package/out/map/fake-runtime.js.map +1 -0
  135. package/out/map/geometry.d.ts.map +1 -1
  136. package/out/map/geometry.js.map +1 -1
  137. package/out/map/index.d.ts +19 -19
  138. package/out/map/index.d.ts.map +1 -1
  139. package/out/map/index.js +11 -11
  140. package/out/map/index.js.map +1 -1
  141. package/out/map/map-debug.d.ts +31 -0
  142. package/out/map/map-debug.d.ts.map +1 -0
  143. package/out/map/map-debug.js +31 -0
  144. package/out/map/map-debug.js.map +1 -0
  145. package/out/map/place-render.d.ts +3 -3
  146. package/out/map/place-render.d.ts.map +1 -1
  147. package/out/map/place-render.js +2 -2
  148. package/out/map/place-render.js.map +1 -1
  149. package/out/map/types.d.ts +50 -46
  150. package/out/map/types.d.ts.map +1 -1
  151. package/out/map/types.js +6 -6
  152. package/out/map/types.js.map +1 -1
  153. package/out/map/useCompareState.d.ts.map +1 -1
  154. package/out/map/useCompareState.js.map +1 -1
  155. package/out/map/{useDemoGeocode.d.ts → useGeocode.d.ts} +11 -11
  156. package/out/map/useGeocode.d.ts.map +1 -0
  157. package/out/map/{useDemoGeocode.js → useGeocode.js} +5 -5
  158. package/out/map/useGeocode.js.map +1 -0
  159. package/out/map/useMapPlaceRender.d.ts +1 -1
  160. package/out/map/useMapPlaceRender.d.ts.map +1 -1
  161. package/out/map/useMapPlaceRender.js +1 -1
  162. package/out/map/useMapPlaceRender.js.map +1 -1
  163. package/out/map/usePlaceAutocomplete.d.ts +1 -1
  164. package/out/map/usePlaceAutocomplete.d.ts.map +1 -1
  165. package/out/map/usePlaceAutocomplete.js +1 -1
  166. package/out/map/usePlaceAutocomplete.js.map +1 -1
  167. package/out/pipeline/CandidatePicker.d.ts +1 -1
  168. package/out/pipeline/CandidatePicker.d.ts.map +1 -1
  169. package/out/pipeline/CandidatePicker.js +1 -1
  170. package/out/pipeline/CandidatePicker.js.map +1 -1
  171. package/out/pipeline/ComponentTable.d.ts +1 -1
  172. package/out/pipeline/ComponentTable.d.ts.map +1 -1
  173. package/out/pipeline/ComponentTable.js.map +1 -1
  174. package/out/pipeline/ConfidenceCell.d.ts +2 -2
  175. package/out/pipeline/ConfidenceCell.d.ts.map +1 -1
  176. package/out/pipeline/ConfidenceCell.js +5 -17
  177. package/out/pipeline/ConfidenceCell.js.map +1 -1
  178. package/out/pipeline/FailureDiagnostic.d.ts +15 -0
  179. package/out/pipeline/FailureDiagnostic.d.ts.map +1 -0
  180. package/out/pipeline/FailureDiagnostic.js +21 -0
  181. package/out/pipeline/FailureDiagnostic.js.map +1 -0
  182. package/out/pipeline/PipelineExplorer.d.ts +1 -1
  183. package/out/pipeline/PipelineExplorer.d.ts.map +1 -1
  184. package/out/pipeline/PipelineExplorer.js +3 -3
  185. package/out/pipeline/PipelineExplorer.js.map +1 -1
  186. package/out/pipeline/QueryForm.d.ts +2 -2
  187. package/out/pipeline/QueryForm.d.ts.map +1 -1
  188. package/out/pipeline/QueryForm.js.map +1 -1
  189. package/out/pipeline/ResolvedPlace.d.ts +1 -1
  190. package/out/pipeline/ResolvedPlace.d.ts.map +1 -1
  191. package/out/pipeline/ResolvedPlace.js +4 -10
  192. package/out/pipeline/ResolvedPlace.js.map +1 -1
  193. package/out/pipeline/SpanHighlight.d.ts +23 -0
  194. package/out/pipeline/SpanHighlight.d.ts.map +1 -0
  195. package/out/pipeline/SpanHighlight.js +31 -0
  196. package/out/pipeline/SpanHighlight.js.map +1 -0
  197. package/out/pipeline/TimingPanel.d.ts +16 -0
  198. package/out/pipeline/TimingPanel.d.ts.map +1 -0
  199. package/out/pipeline/TimingPanel.js +20 -0
  200. package/out/pipeline/TimingPanel.js.map +1 -0
  201. package/out/pipeline/TreeView.d.ts +17 -0
  202. package/out/pipeline/TreeView.d.ts.map +1 -0
  203. package/out/pipeline/TreeView.js +15 -0
  204. package/out/pipeline/TreeView.js.map +1 -0
  205. package/out/pipeline/copy.d.ts +1 -1
  206. package/out/pipeline/copy.d.ts.map +1 -1
  207. package/out/pipeline/copy.js.map +1 -1
  208. package/out/pipeline/presets.d.ts.map +1 -1
  209. package/out/pipeline/presets.js +2 -1
  210. package/out/pipeline/presets.js.map +1 -1
  211. package/out/pipeline/types.d.ts +2 -68
  212. package/out/pipeline/types.d.ts.map +1 -1
  213. package/out/pipeline/types.js +1 -1
  214. package/out/pipeline/types.js.map +1 -1
  215. package/out/pipeline/useParsePipeline.d.ts +2 -1
  216. package/out/pipeline/useParsePipeline.d.ts.map +1 -1
  217. package/out/pipeline/useParsePipeline.js.map +1 -1
  218. package/out/poi/AbstainPanel.d.ts.map +1 -1
  219. package/out/poi/AbstainPanel.js.map +1 -1
  220. package/out/poi/LiveResultsBlock.d.ts +1 -1
  221. package/out/poi/LiveResultsBlock.d.ts.map +1 -1
  222. package/out/poi/LiveResultsBlock.js +1 -1
  223. package/out/poi/LiveResultsBlock.js.map +1 -1
  224. package/out/poi/OverpassBlock.d.ts.map +1 -1
  225. package/out/poi/OverpassBlock.js.map +1 -1
  226. package/out/poi/POIExplorer.d.ts +1 -1
  227. package/out/poi/POIExplorer.d.ts.map +1 -1
  228. package/out/poi/POIExplorer.js +2 -2
  229. package/out/poi/POIExplorer.js.map +1 -1
  230. package/out/poi/QueryInput.d.ts.map +1 -1
  231. package/out/poi/QueryInput.js.map +1 -1
  232. package/out/poi/SubjectPanel.d.ts +1 -1
  233. package/out/poi/SubjectPanel.d.ts.map +1 -1
  234. package/out/poi/SubjectPanel.js.map +1 -1
  235. package/out/poi/runtime.d.ts +1 -1
  236. package/out/poi/runtime.d.ts.map +1 -1
  237. package/out/poi/runtime.js.map +1 -1
  238. package/out/poi/types.d.ts +3 -2
  239. package/out/poi/types.d.ts.map +1 -1
  240. package/out/poi/types.js +1 -1
  241. package/out/poi/types.js.map +1 -1
  242. package/out/poi/usePOISearch.d.ts +1 -1
  243. package/out/poi/usePOISearch.d.ts.map +1 -1
  244. package/out/poi/usePOISearch.js +4 -4
  245. package/out/poi/usePOISearch.js.map +1 -1
  246. package/out/runtime/{useDemoRuntime.d.ts → useReleaseRuntime.d.ts} +20 -22
  247. package/out/runtime/useReleaseRuntime.d.ts.map +1 -0
  248. package/out/runtime/{useDemoRuntime.js → useReleaseRuntime.js} +6 -6
  249. package/out/runtime/useReleaseRuntime.js.map +1 -0
  250. package/package.json +221 -34
  251. package/styleframe.config.ts +321 -0
  252. package/styles.css +1074 -664
  253. package/tokens/index.css +115 -0
  254. package/tokens/tokens.json +521 -0
  255. package/tokens/tokens.resolver.json +185 -0
  256. package/out/map/DemoControls.d.ts +0 -64
  257. package/out/map/DemoControls.d.ts.map +0 -1
  258. package/out/map/DemoControls.js.map +0 -1
  259. package/out/map/DemoMap.d.ts.map +0 -1
  260. package/out/map/DemoMap.js.map +0 -1
  261. package/out/map/GeocoderDemo.d.ts.map +0 -1
  262. package/out/map/GeocoderDemo.js.map +0 -1
  263. package/out/map/useDemoGeocode.d.ts.map +0 -1
  264. package/out/map/useDemoGeocode.js.map +0 -1
  265. package/out/runtime/useDemoRuntime.d.ts.map +0 -1
  266. package/out/runtime/useDemoRuntime.js.map +0 -1
  267. package/pipeline/ConfidenceCell.tsx +0 -43
  268. /package/{common → lib/common}/ClientOnly.tsx +0 -0
  269. /package/{common → lib/common}/PresetChips.tsx +0 -0
  270. /package/{common → lib/common}/cx.ts +0 -0
  271. /package/{common → lib/common}/useClipboard.ts +0 -0
  272. /package/{common → lib/common}/useDebouncedValue.ts +0 -0
  273. /package/{map → lib/map}/BackendControl.tsx +0 -0
  274. /package/{map → lib/map}/geometry.ts +0 -0
  275. /package/{map → lib/map}/useCompareState.ts +0 -0
  276. /package/{poi → lib/poi}/AbstainPanel.tsx +0 -0
  277. /package/{poi → lib/poi}/OverpassBlock.tsx +0 -0
  278. /package/{poi → lib/poi}/QueryInput.tsx +0 -0
@@ -1,5 +1,5 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { cx } from "../common/cx.js";
2
+ import { cx } from "#common/cx";
3
3
  export function CandidatePicker({ candidates, selectedIndex, onSelect }) {
4
4
  return (_jsxs("div", { className: "mw-candidates", children: [_jsxs("h2", { children: ["Other candidates (", candidates.length - 1, ")"] }), _jsx("ol", { className: "mw-candidates__list", children: candidates.map((candidate, i) => (_jsx("li", { children: _jsxs("button", { type: "button", className: cx("mw-candidates__btn", { "mw-candidates__btn--active": i === selectedIndex }), onClick: () => onSelect(i), title: `${candidate.placetype} • WOF ${candidate.id} • score ${candidate.score.toFixed(3)}`, children: [_jsxs("span", { className: "mw-candidates__rank", children: ["#", i + 1] }), _jsx("span", { className: "mw-candidates__name", children: candidate.name }), _jsxs("span", { className: "mw-candidates__meta", children: [candidate.placetype, " \u00B7 ", candidate.score.toFixed(2)] })] }) }, `${candidate.id}-${i}`))) })] }));
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CandidatePicker.js","sourceRoot":"","sources":["../../pipeline/CandidatePicker.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AASpC,MAAM,UAAU,eAAe,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAwB;IAC5F,OAAO,CACN,eAAK,SAAS,EAAC,eAAe,aAC7B,+CAAuB,UAAU,CAAC,MAAM,GAAG,CAAC,SAAO,EACnD,aAAI,SAAS,EAAC,qBAAqB,YACjC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CACjC,uBACC,kBACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,EAAE,4BAA4B,EAAE,CAAC,KAAK,aAAa,EAAE,CAAC,EAC1F,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,GAAG,SAAS,CAAC,SAAS,UAAU,SAAS,CAAC,EAAE,YAAY,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAE3F,gBAAM,SAAS,EAAC,qBAAqB,kBAAG,CAAC,GAAG,CAAC,IAAQ,EACrD,eAAM,SAAS,EAAC,qBAAqB,YAAE,SAAS,CAAC,IAAI,GAAQ,EAC7D,gBAAM,SAAS,EAAC,qBAAqB,aACnC,SAAS,CAAC,SAAS,cAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAC7C,IACC,IAZD,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAa1B,CACL,CAAC,GACE,IACA,CACN,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"CandidatePicker.js","sourceRoot":"","sources":["../../lib/pipeline/CandidatePicker.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAQ/B,MAAM,UAAU,eAAe,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAwB;IAC5F,OAAO,CACN,eAAK,SAAS,EAAC,eAAe,aAC7B,+CAAuB,UAAU,CAAC,MAAM,GAAG,CAAC,SAAO,EACnD,aAAI,SAAS,EAAC,qBAAqB,YACjC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CACjC,uBACC,kBACC,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,EAAE,4BAA4B,EAAE,CAAC,KAAK,aAAa,EAAE,CAAC,EAC1F,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,GAAG,SAAS,CAAC,SAAS,UAAU,SAAS,CAAC,EAAE,YAAY,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAE3F,gBAAM,SAAS,EAAC,qBAAqB,kBAAG,CAAC,GAAG,CAAC,IAAQ,EACrD,eAAM,SAAS,EAAC,qBAAqB,YAAE,SAAS,CAAC,IAAI,GAAQ,EAC7D,gBAAM,SAAS,EAAC,qBAAqB,aACnC,SAAS,CAAC,SAAS,cAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAC7C,IACC,IAZD,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAa1B,CACL,CAAC,GACE,IACA,CACN,CAAA;AACF,CAAC"}
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * `ComponentTable` — the tag / value / confidence table of decoded components. Presentational.
7
7
  */
8
+ import type { ParsedComponent } from "@mailwoman/core/pipeline/client-result";
8
9
  import type { ReactNode } from "react";
9
- import type { ParsedComponent } from "./types.ts";
10
10
  export interface ComponentTableProps {
11
11
  nodes: ParsedComponent[];
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentTable.d.ts","sourceRoot":"","sources":["../../pipeline/ComponentTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,eAAe,EAAE,CAAA;CACxB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,mBAAmB,GAAG,SAAS,CAuBxE"}
1
+ {"version":3,"file":"ComponentTable.d.ts","sourceRoot":"","sources":["../../lib/pipeline/ComponentTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,eAAe,EAAE,CAAA;CACxB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,mBAAmB,GAAG,SAAS,CAuBxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentTable.js","sourceRoot":"","sources":["../../pipeline/ComponentTable.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAA;AAOrD,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAuB;IAC5D,OAAO,CACN,iBAAO,SAAS,EAAC,eAAe,aAC/B,0BACC,yBACC,+BAAY,EACZ,iCAAc,EACd,sCAAmB,IACf,GACE,EACR,0BACE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,yBACC,uBAAK,IAAI,CAAC,GAAG,GAAM,EACnB,uBAAK,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAM,EACnC,uBACC,KAAC,cAAc,IAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAI,GAC3C,KALG,CAAC,CAML,CACL,CAAC,GACK,IACD,CACR,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"ComponentTable.js","sourceRoot":"","sources":["../../lib/pipeline/ComponentTable.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAA;AAMrD,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAuB;IAC5D,OAAO,CACN,iBAAO,SAAS,EAAC,eAAe,aAC/B,0BACC,yBACC,+BAAY,EACZ,iCAAc,EACd,sCAAmB,IACf,GACE,EACR,0BACE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,yBACC,uBAAK,IAAI,CAAC,GAAG,GAAM,EACnB,uBAAK,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,GAAM,EACnC,uBACC,KAAC,cAAc,IAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAI,GAC3C,KALG,CAAC,CAML,CACL,CAAC,GACK,IACD,CACR,CAAA;AACF,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * @license AGPL-3.0
4
4
  * @author Teffen Ellis, et al.
5
5
  *
6
- * `ConfidenceCell` — a compact confidence bar + value for the component table. Tiers the fill colour
7
- * at 0.8 / 0.5. Presentational.
6
+ * `ConfidenceCell` — a compact confidence bar + value for the component table. The fill colour follows the shared
7
+ * confidence tiers. Presentational.
8
8
  */
9
9
  export interface ConfidenceCellProps {
10
10
  confidence?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfidenceCell.d.ts","sourceRoot":"","sources":["../../pipeline/ConfidenceCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAoBH,MAAM,WAAW,mBAAmB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,mBAAmB,+BAWjE"}
1
+ {"version":3,"file":"ConfidenceCell.d.ts","sourceRoot":"","sources":["../../lib/pipeline/ConfidenceCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,mBAAmB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,mBAAmB,+BAcjE"}
@@ -4,27 +4,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  * @license AGPL-3.0
5
5
  * @author Teffen Ellis, et al.
6
6
  *
7
- * `ConfidenceCell` — a compact confidence bar + value for the component table. Tiers the fill colour
8
- * at 0.8 / 0.5. Presentational.
7
+ * `ConfidenceCell` — a compact confidence bar + value for the component table. The fill colour follows the shared
8
+ * confidence tiers. Presentational.
9
9
  */
10
- import { cx } from "../common/cx.js";
11
- /**
12
- * At or above this the cell is drawn as high-confidence. Presentation only — see docs/src/shared/confidence-tiers.ts.
13
- */
14
- const HIGH_CONFIDENCE_MIN = 0.8;
15
- /**
16
- * At or above this the cell is drawn as medium-confidence; below it, low.
17
- */
18
- const MID_CONFIDENCE_MIN = 0.5;
19
- function tier(confidence) {
20
- if (confidence == null)
21
- return "mid";
22
- return confidence >= HIGH_CONFIDENCE_MIN ? "high" : confidence >= MID_CONFIDENCE_MIN ? "mid" : "low";
23
- }
10
+ import { confidenceTierOrMid } from "#common/confidence-tiers";
11
+ import { cx } from "#common/cx";
24
12
  export function ConfidenceCell({ confidence }) {
25
13
  if (confidence == null)
26
14
  return _jsx("span", { className: "mw-conf__dash", children: "\u2014" });
27
15
  const pct = Math.max(0, Math.min(1, confidence)) * 100;
28
- return (_jsxs("div", { className: "mw-conf", children: [_jsx("div", { className: cx("mw-conf__bar", `mw-conf__bar--${tier(confidence)}`), style: { width: `${pct}%` } }), _jsx("span", { className: "mw-conf__value", children: confidence.toFixed(2) })] }));
16
+ return (_jsxs("div", { className: "mw-conf", children: [_jsx("div", { className: cx("mw-conf__bar", `mw-conf__bar--${confidenceTierOrMid(confidence)}`), style: { width: `${pct}%` } }), _jsx("span", { className: "mw-conf__value", children: confidence.toFixed(2) })] }));
29
17
  }
30
18
  //# sourceMappingURL=ConfidenceCell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfidenceCell.js","sourceRoot":"","sources":["../../pipeline/ConfidenceCell.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC;;GAEG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAE/B;;GAEG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B,SAAS,IAAI,CAAC,UAAmB;IAChC,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAEpC,OAAO,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AACrG,CAAC;AAMD,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAuB;IACjE,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,eAAM,SAAS,EAAC,eAAe,uBAAS,CAAA;IAEvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAA;IAEtD,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,cAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,iBAAiB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAI,EACxG,eAAM,SAAS,EAAC,gBAAgB,YAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAQ,IAC1D,CACN,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"ConfidenceCell.js","sourceRoot":"","sources":["../../lib/pipeline/ConfidenceCell.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAM/B,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAuB;IACjE,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,eAAM,SAAS,EAAC,eAAe,uBAAS,CAAA;IAEvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAA;IAEtD,OAAO,CACN,eAAK,SAAS,EAAC,SAAS,aACvB,cACC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,iBAAiB,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,EACjF,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAC1B,EACF,eAAM,SAAS,EAAC,gBAAgB,YAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAQ,IAC1D,CACN,CAAA;AACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `FailureDiagnostic` — what to say when nothing resolved. It reads the parsed components and names the missing
7
+ * piece a person can add (a city, a state), so the answer is a next step rather than "no hit".
8
+ */
9
+ import type { ParsedComponent } from "@mailwoman/core/pipeline/client-result";
10
+ import type { ReactNode } from "react";
11
+ export interface FailureDiagnosticProps {
12
+ nodes: ParsedComponent[];
13
+ }
14
+ export declare function FailureDiagnostic({ nodes }: FailureDiagnosticProps): ReactNode;
15
+ //# sourceMappingURL=FailureDiagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailureDiagnostic.d.ts","sourceRoot":"","sources":["../../lib/pipeline/FailureDiagnostic.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,eAAe,EAAE,CAAA;CACxB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,sBAAsB,GAAG,SAAS,CAuC9E"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function FailureDiagnostic({ nodes }) {
3
+ const hasLocality = nodes.some((n) => n.tag === "locality");
4
+ const hasPostcode = nodes.some((n) => n.tag === "postcode");
5
+ const hasRegion = nodes.some((n) => n.tag === "region");
6
+ const hints = [];
7
+ if (!hasLocality && !hasPostcode) {
8
+ hints.push("The parser found no city or postcode in this input. Try adding one — e.g. append ', Chicago, IL 60613'.");
9
+ }
10
+ if (hasPostcode && !hasLocality) {
11
+ hints.push("Only a postcode was extracted. WOF ships placeholder coordinates (0, 0) for about 22% of US postcodes, and the cascade drops those.");
12
+ }
13
+ if (hasLocality && !hasRegion) {
14
+ hints.push("No state in the parse. US localities share names across states (Springfield, Portland, …); add a state to disambiguate.");
15
+ }
16
+ if (!hints.length) {
17
+ hints.push("The parsed components look reasonable, but the gazetteer does not index this entry.");
18
+ }
19
+ return (_jsxs("div", { className: "mw-failure", children: [_jsx("h2", { children: "No gazetteer hit" }), _jsx("ul", { children: hints.map((hint, i) => (_jsx("li", { children: hint }, i))) })] }));
20
+ }
21
+ //# sourceMappingURL=FailureDiagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FailureDiagnostic.js","sourceRoot":"","sources":["../../lib/pipeline/FailureDiagnostic.tsx"],"names":[],"mappings":";AAgBA,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAA0B;IAClE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IAEvD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACT,yGAAyG,CACzG,CAAA;IACF,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CACT,qIAAqI,CACrI,CAAA;IACF,CAAC;IAED,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACT,yHAAyH,CACzH,CAAA;IACF,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAA;IAClG,CAAC;IAED,OAAO,CACN,eAAK,SAAS,EAAC,YAAY,aAC1B,4CAAyB,EACzB,uBACE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,uBAAa,IAAI,IAAR,CAAC,CAAa,CACvB,CAAC,GACE,IACA,CACN,CAAA;AACF,CAAC"}
@@ -9,8 +9,8 @@
9
9
  * it. No model/gazetteer code here — composition + a `ClientOnly` SSR boundary only.
10
10
  */
11
11
  import type { ReactNode } from "react";
12
+ import type { PipelinePanels, PipelineRuntime } from "#pipeline/types";
12
13
  import { type Preset } from "../common/PresetChips.tsx";
13
- import type { PipelinePanels, PipelineRuntime } from "./types.ts";
14
14
  export interface PipelineExplorerProps {
15
15
  /**
16
16
  * The injected model/gazetteer runtime (the host wires this to its bundle).
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineExplorer.d.ts","sourceRoot":"","sources":["../../pipeline/PipelineExplorer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAOpE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGjE,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;CACvB;AAiGD,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,cAAyC,EACzC,OAA0B,EAC1B,MAAkB,GAClB,EAAE,qBAAqB,GAAG,SAAS,CAcnC"}
1
+ {"version":3,"file":"PipelineExplorer.d.ts","sourceRoot":"","sources":["../../lib/pipeline/PipelineExplorer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAOtE,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAMpE,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,OAAO,EAAE,eAAe,CAAA;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;CACvB;AAiGD,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,cAAyC,EACzC,OAA0B,EAC1B,MAAkB,GAClB,EAAE,qBAAqB,GAAG,SAAS,CAcnC"}
@@ -1,4 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { buildParsePayload } from "#pipeline/copy";
3
+ import { PIPELINE_DEFAULT_ADDRESS, PIPELINE_PRESETS } from "#pipeline/presets";
4
+ import { useParsePipeline } from "#pipeline/useParsePipeline";
2
5
  import { ClientOnly } from "../common/ClientOnly.js";
3
6
  import { CopyButton } from "../common/CopyButton.js";
4
7
  import { KindBadge } from "../common/KindBadge.js";
@@ -6,11 +9,8 @@ import { LoadingIndicator } from "../common/LoadingIndicator.js";
6
9
  import { PresetChips } from "../common/PresetChips.js";
7
10
  import { CandidatePicker } from "./CandidatePicker.js";
8
11
  import { ComponentTable } from "./ComponentTable.js";
9
- import { buildParsePayload } from "./copy.js";
10
- import { PIPELINE_DEFAULT_ADDRESS, PIPELINE_PRESETS } from "./presets.js";
11
12
  import { QueryForm } from "./QueryForm.js";
12
13
  import { ResolvedPlace } from "./ResolvedPlace.js";
13
- import { useParsePipeline } from "./useParsePipeline.js";
14
14
  function PipelineExplorerInner({ runtime, defaultAddress, presets, panels }) {
15
15
  const pipeline = useParsePipeline({ runtime, defaultText: defaultAddress });
16
16
  const { text, setText, busy, parseStage, result, parseError, selectedCandidate } = pipeline;
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineExplorer.js","sourceRoot":"","sources":["../../pipeline/PipelineExplorer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineExplorer.js","sourceRoot":"","sources":["../../lib/pipeline/PipelineExplorer.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAA0B,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAyB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAAgC,CAAA;AACjE,OAAO,EAAE,WAAW,EAAe,MAAM,0BAA2B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAA;AA0BnD,SAAS,qBAAqB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAA8B;IACtG,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAA;IAC3E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,QAAQ,CAAA;IAE3F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,YAAY,GAAG,UAAU,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAA;IAE/D,OAAO,CACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,cAAc,EAEtB,KAAC,SAAS,IACT,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,QAAQ,CAAC,MAAM,EACzB,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EACxB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,wBAAwB,GACpC,EAEF,KAAC,WAAW,IACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAChC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjB,OAAO,CAAC,KAAK,CAAC,CAAA;oBACd,QAAQ,CAAC,KAAK,EAAE,CAAA;gBACjB,CAAC,GACA,EAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5B,KAAC,gBAAgB,IAChB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACjE,UAAU,EAAE,OAAO,CAAC,SAAS,EAC7B,KAAK,EAAE,OAAO,CAAC,QAAQ,GACtB,CACF,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,UAAU,YAAE,YAAY,GAAK,CAAC,CAAC,CAAC,IAAI,EAEhE,IAAI,CAAC,CAAC,CAAC,CACP,cAAK,SAAS,EAAC,WAAW,YACzB,KAAC,gBAAgB,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE,UAAU,EAAE,UAAU,GAAI,GACtF,CACN,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CACZ,eAAK,SAAS,EAAC,WAAW,aACzB,eAAK,SAAS,EAAC,mBAAmB,aACjC,6CAA0B,EAC1B,KAAC,UAAU,IACV,KAAK,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACzD,KAAK,EAAC,WAAW,EACjB,WAAW,EAAC,eAAU,GACrB,IACG,EAEL,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAI,CAAC,CAAC,CAAC,IAAI,EAEvE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAE7C,KAAC,cAAc,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,EAEtC,iBAAiB,CAAC,CAAC,CAAC,CACpB,8BACC,KAAC,aAAa,IAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,GAAI,EACvE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC/B,KAAC,eAAe,IACf,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,aAAa,EAAE,QAAQ,CAAC,sBAAsB,EAC9C,QAAQ,EAAE,QAAQ,CAAC,eAAe,GACjC,CACF,CAAC,CAAC,CAAC,IAAI,IACN,CACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CACpB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CACtB,CAAC,CAAC,CAAC,IAAI,IACH,CACN,CAAC,CAAC,CAAC,IAAI,EAEP,MAAM,CAAC,MAAM,IACT,CACN,CAAA;AACF,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAiD,EAAE,CAAA;AAElE,MAAM,UAAU,gBAAgB,CAAC,EAChC,OAAO,EACP,cAAc,GAAG,wBAAwB,EACzC,OAAO,GAAG,gBAAgB,EAC1B,MAAM,GAAG,SAAS,GACK;IACvB,OAAO,CACN,KAAC,UAAU,IACV,QAAQ,EACP,cAAK,SAAS,EAAC,sBAAsB,YACpC,mDAA0B,GACrB,YAGN,GAAG,EAAE,CAAC,CACN,KAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAI,CAC7G,GACW,CACb,CAAA;AACF,CAAC"}
@@ -15,11 +15,11 @@ export interface QueryFormProps {
15
15
  busy?: boolean;
16
16
  placeholder?: string;
17
17
  /**
18
- * Keydown on the input — the seam a combobox (the demo's place-autocomplete) needs for arrow/Enter/Esc nav.
18
+ * Keydown on the input — the hook a combobox (the demo's place-autocomplete) needs for arrow/Enter/Esc nav.
19
19
  */
20
20
  onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
21
21
  /**
22
- * Escape hatch for extra `<input>` attributes (aria-combobox props, `autoComplete`, …). Merged last.
22
+ * Override for extra `<input>` attributes (aria-combobox props, `autoComplete`, …). Merged last.
23
23
  */
24
24
  inputProps?: InputHTMLAttributes<HTMLInputElement>;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueryForm.d.ts","sourceRoot":"","sources":["../../pipeline/QueryForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI1E,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IAC5D;;OAEG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;CAClD;AAED,wBAAgB,SAAS,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACV,EAAE,cAAc,GAAG,SAAS,CA+B5B"}
1
+ {"version":3,"file":"QueryForm.d.ts","sourceRoot":"","sources":["../../lib/pipeline/QueryForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAI1E,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IAC5D;;OAEG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;CAClD;AAED,wBAAgB,SAAS,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACV,EAAE,cAAc,GAAG,SAAS,CA+B5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryForm.js","sourceRoot":"","sources":["../../pipeline/QueryForm.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAAgC,CAAA;AAmBjE,MAAM,UAAU,SAAS,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACM;IAChB,OAAO,CACN,gBACC,SAAS,EAAC,UAAU,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,QAAQ,EAAE,CAAA;QACX,CAAC,aAED,gBAAO,OAAO,EAAC,mBAAmB,wBAAgB,EAClD,gBACC,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,KAChB,UAAU,GACb,EACF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,YAC9C,IAAI,CAAC,CAAC,CAAC,CACP,8BACC,KAAC,gBAAgB,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,GAAG,sBAC9C,CACH,CAAC,CAAC,CAAC,CACH,iBAAiB,CACjB,GACO,IACH,CACP,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"QueryForm.js","sourceRoot":"","sources":["../../lib/pipeline/QueryForm.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAAgC,CAAA;AAmBjE,MAAM,UAAU,SAAS,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,SAAS,EACT,UAAU,GACM;IAChB,OAAO,CACN,gBACC,SAAS,EAAC,UAAU,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,QAAQ,EAAE,CAAA;QACX,CAAC,aAED,gBAAO,OAAO,EAAC,mBAAmB,wBAAgB,EAClD,gBACC,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,KAChB,UAAU,GACb,EACF,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,YAC9C,IAAI,CAAC,CAAC,CAAC,CACP,8BACC,KAAC,gBAAgB,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,GAAG,sBAC9C,CACH,CAAC,CAAC,CAAC,CACH,iBAAiB,CACjB,GACO,IACH,CACP,CAAA;AACF,CAAC"}
@@ -6,8 +6,8 @@
6
6
  * `ResolvedPlace` — the "Resolved place" detail list (name, placetype, WOF id, coords, score) plus an
7
7
  * optional dual-role note. Presentational.
8
8
  */
9
+ import type { DualRoleView, ResolvedPlaceView } from "@mailwoman/core/pipeline/client-result";
9
10
  import { type ReactNode } from "react";
10
- import type { DualRoleView, ResolvedPlaceView } from "./types.ts";
11
11
  export interface ResolvedPlaceProps {
12
12
  place: ResolvedPlaceView;
13
13
  dualRoles?: DualRoleView[];
@@ -1 +1 @@
1
- {"version":3,"file":"ResolvedPlace.d.ts","sourceRoot":"","sources":["../../pipeline/ResolvedPlace.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,iBAAiB,CAAA;IACxB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,SAAS,CA+BjF"}
1
+ {"version":3,"file":"ResolvedPlace.d.ts","sourceRoot":"","sources":["../../lib/pipeline/ResolvedPlace.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC7F,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEhD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,iBAAiB,CAAA;IACxB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,SAAS,CA6CjF"}
@@ -1,14 +1,8 @@
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
- * `ResolvedPlace` — the "Resolved place" detail list (name, placetype, WOF id, coords, score) plus an
8
- * optional dual-role note. Presentational.
9
- */
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
2
  import { Fragment } from "react";
11
3
  export function ResolvedPlace({ place, dualRoles }) {
12
- return (_jsxs("div", { className: "mw-resolved", children: [_jsx("h2", { children: "Resolved place" }), _jsxs("dl", { children: [_jsx("dt", { children: "name" }), _jsx("dd", { children: place.name }), _jsx("dt", { children: "placetype" }), _jsx("dd", { children: place.placetype }), _jsx("dt", { children: "WOF id" }), _jsx("dd", { children: place.id }), _jsx("dt", { children: "coords" }), _jsxs("dd", { children: [place.lat.toFixed(4), ", ", place.lon.toFixed(4)] }), _jsx("dt", { children: "score" }), _jsx("dd", { children: place.score.toFixed(3) })] }), dualRoles && dualRoles.length ? (_jsxs("p", { className: "mw-resolved__dual", children: ["\uD83C\uDFDB\uFE0F ", _jsx("strong", { children: "Dual-role place." }), " ", place.name, " also resolves as", " ", dualRoles.map((role, i) => (_jsxs(Fragment, { children: [i > 0 ? ", " : "", "a ", _jsx("strong", { children: role.role }), " (", role.relationshipType.replaceAll("-", " "), ")"] }, `${role.role}-${role.id}`))), "."] })) : null] }));
4
+ return (_jsxs("div", { className: "mw-resolved", children: [_jsx("h2", { children: "Resolved place" }), _jsxs("dl", { children: [_jsx("dt", { children: "name" }), _jsx("dd", { children: place.name }), _jsx("dt", { children: "placetype" }), _jsx("dd", { children: place.placetype }), place.tier ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "precision" }), _jsx("dd", { children: place.tier === "address_point"
5
+ ? "📍 exact address point (≤10 m)"
6
+ : `≈ interpolated · ±${place.uncertaintyM ?? "?"} m` })] })) : (_jsxs(_Fragment, { children: [_jsx("dt", { children: "WOF id" }), _jsx("dd", { children: place.id })] })), _jsx("dt", { children: "coords" }), _jsxs("dd", { children: [place.lat.toFixed(4), ", ", place.lon.toFixed(4)] }), _jsx("dt", { children: "score" }), _jsx("dd", { children: place.score.toFixed(3) })] }), dualRoles && dualRoles.length ? (_jsxs("p", { className: "mw-resolved__dual", children: ["\uD83C\uDFDB\uFE0F ", _jsx("strong", { children: "Dual-role place." }), " ", place.name, " also resolves as", " ", dualRoles.map((role, i) => (_jsxs(Fragment, { children: [i > 0 ? ", " : "", "a ", _jsx("strong", { children: role.role }), " (", role.relationshipType.replaceAll("-", " "), ")"] }, `${role.role}-${role.id}`))), "."] })) : null] }));
13
7
  }
14
8
  //# sourceMappingURL=ResolvedPlace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResolvedPlace.js","sourceRoot":"","sources":["../../pipeline/ResolvedPlace.tsx"],"names":[],"mappings":";AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAShD,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAsB;IACrE,OAAO,CACN,eAAK,SAAS,EAAC,aAAa,aAC3B,0CAAuB,EACvB,yBACC,gCAAa,EACb,uBAAK,KAAK,CAAC,IAAI,GAAM,EACrB,qCAAkB,EAClB,uBAAK,KAAK,CAAC,SAAS,GAAM,EAC1B,kCAAe,EACf,uBAAK,KAAK,CAAC,EAAE,GAAM,EACnB,kCAAe,EACf,yBACE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IACzC,EACL,iCAAc,EACd,uBAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAM,IAC7B,EACJ,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAChC,aAAG,SAAS,EAAC,mBAAmB,oCAC3B,gDAAiC,OAAE,KAAK,CAAC,IAAI,uBAAmB,GAAG,EACtE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3B,MAAC,QAAQ,eACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAG,2BAAS,IAAI,CAAC,IAAI,GAAU,QAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,UADhF,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAE7B,CACX,CAAC,SAEC,CACJ,CAAC,CAAC,CAAC,IAAI,IACH,CACN,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"ResolvedPlace.js","sourceRoot":"","sources":["../../lib/pipeline/ResolvedPlace.tsx"],"names":[],"mappings":";AAUA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAOhD,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAsB;IACrE,OAAO,CACN,eAAK,SAAS,EAAC,aAAa,aAC3B,0CAAuB,EACvB,yBACC,gCAAa,EACb,uBAAK,KAAK,CAAC,IAAI,GAAM,EACrB,qCAAkB,EAClB,uBAAK,KAAK,CAAC,SAAS,GAAM,EACzB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAEb,8BACC,qCAAkB,EAClB,uBACE,KAAK,CAAC,IAAI,KAAK,eAAe;oCAC9B,CAAC,CAAC,gCAAgC;oCAClC,CAAC,CAAC,qBAAqB,KAAK,CAAC,YAAY,IAAI,GAAG,IAAI,GACjD,IACH,CACH,CAAC,CAAC,CAAC,CACH,8BACC,kCAAe,EACf,uBAAK,KAAK,CAAC,EAAE,GAAM,IACjB,CACH,EACD,kCAAe,EACf,yBACE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IACzC,EACL,iCAAc,EACd,uBAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAM,IAC7B,EACJ,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAChC,aAAG,SAAS,EAAC,mBAAmB,oCAC3B,gDAAiC,OAAE,KAAK,CAAC,IAAI,uBAAmB,GAAG,EACtE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3B,MAAC,QAAQ,eACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAG,2BAAS,IAAI,CAAC,IAAI,GAAU,QAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,UADhF,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAE7B,CACX,CAAC,SAEC,CACJ,CAAC,CAAC,CAAC,IAAI,IACH,CACN,CAAA;AACF,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `SpanHighlight` — a displaCy-style span ribbon over the raw input: each tagged span is a column with the text on
7
+ * top, tinted by its confidence tier, and the tag beneath. Gaps (delimiters, unparsed characters) fall through as
8
+ * plain text, so a dropped span is visible as a literal break in the colour.
9
+ */
10
+ import type { ParsedComponent } from "@mailwoman/core/pipeline/client-result";
11
+ import type { ReactNode } from "react";
12
+ export interface SpanHighlightProps {
13
+ /**
14
+ * The raw text handed to the parser — `nodes[].start/end` index into this.
15
+ */
16
+ input: string;
17
+ /**
18
+ * Flattened parse nodes; only those with numeric `start`/`end` are rendered.
19
+ */
20
+ nodes: ParsedComponent[];
21
+ }
22
+ export declare function SpanHighlight({ input, nodes }: SpanHighlightProps): ReactNode;
23
+ //# sourceMappingURL=SpanHighlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanHighlight.d.ts","sourceRoot":"","sources":["../../lib/pipeline/SpanHighlight.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,EAAE,eAAe,EAAE,CAAA;CACxB;AASD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAAG,SAAS,CA8D7E"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { confidenceTierOrMid } from "#common/confidence-tiers";
3
+ import { shortestSpanOwners } from "#common/text-tokens";
4
+ export function SpanHighlight({ input, nodes }) {
5
+ if (!input)
6
+ return null;
7
+ // Keep only well-formed spans that index into the input.
8
+ const spans = nodes.filter((n) => typeof n.start === "number" &&
9
+ typeof n.end === "number" &&
10
+ n.start >= 0 &&
11
+ n.end > n.start &&
12
+ n.end <= input.length);
13
+ if (!spans.length)
14
+ return null;
15
+ // Per-character owner: the most specific (shortest) span covering it, the same rule the word-level panels apply
16
+ // per word. The leaf always wins whatever nesting the tree hands over, so every character renders once.
17
+ const characters = Array.from({ length: input.length }, (_, i) => ({ start: i, end: i + 1 }));
18
+ const owner = shortestSpanOwners(characters, spans);
19
+ // Coalesce runs of the same owner into segments.
20
+ const segments = [];
21
+ let from = 0;
22
+ for (let i = 1; i <= input.length; i++) {
23
+ if (i === input.length || owner[i] !== owner[from]) {
24
+ const ownerIndex = owner[from] ?? -1;
25
+ segments.push({ text: input.slice(from, i), node: ownerIndex === -1 ? null : (spans[ownerIndex] ?? null) });
26
+ from = i;
27
+ }
28
+ }
29
+ return (_jsxs("div", { className: "mw-spans", children: [_jsxs("div", { className: "mw-spans__legend", children: [_jsx("span", { children: "confidence" }), _jsx("span", { className: "mw-spans__swatch mw-spans__swatch--low" }), " low", _jsx("span", { className: "mw-spans__swatch mw-spans__swatch--mid" }), " mid", _jsx("span", { className: "mw-spans__swatch mw-spans__swatch--high" }), " high"] }), _jsx("div", { className: "mw-spans__track", children: segments.map((seg, i) => seg.node ? (_jsxs("span", { className: `mw-spans__seg mw-spans__seg--${confidenceTierOrMid(seg.node.confidence)}`, title: `${seg.node.tag}${seg.node.confidence != null ? ` · ${seg.node.confidence.toFixed(2)}` : ""}`, children: [_jsx("span", { className: "mw-spans__text", children: seg.text }), _jsx("span", { className: "mw-spans__tag", children: seg.node.tag })] }, i)) : (_jsx("span", { className: "mw-spans__gap", children: seg.text }, i))) })] }));
30
+ }
31
+ //# sourceMappingURL=SpanHighlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanHighlight.js","sourceRoot":"","sources":["../../lib/pipeline/SpanHighlight.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `TimingPanel` — the per-stage timing breakdown: a stacked bar sized by each stage's wall-clock, plus a legend.
7
+ * Stage colours are distinct hues, never the confidence red/amber/green, because they encode the pipeline stage and
8
+ * not quality.
9
+ */
10
+ import type { StageTiming } from "@mailwoman/core/pipeline/client-result";
11
+ import type { ReactNode } from "react";
12
+ export interface TimingPanelProps {
13
+ timing: StageTiming;
14
+ }
15
+ export declare function TimingPanel({ timing }: TimingPanelProps): ReactNode;
16
+ //# sourceMappingURL=TimingPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimingPanel.d.ts","sourceRoot":"","sources":["../../lib/pipeline/TimingPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,WAAW,CAAA;CACnB;AAYD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAG,SAAS,CAqCnE"}
@@ -0,0 +1,20 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ const STAGES = [
3
+ { key: "shape", label: "shape + kind" },
4
+ { key: "classify", label: "classify" },
5
+ { key: "resolve", label: "resolve" },
6
+ ];
7
+ function formatMilliseconds(ms) {
8
+ return ms >= 100 ? `${Math.round(ms)} ms` : `${ms.toFixed(1)} ms`;
9
+ }
10
+ export function TimingPanel({ timing }) {
11
+ const present = STAGES.flatMap((stage) => {
12
+ const ms = timing[stage.key];
13
+ return typeof ms === "number" ? [{ ...stage, ms }] : [];
14
+ });
15
+ const total = present.reduce((sum, stage) => sum + stage.ms, 0);
16
+ if (total <= 0)
17
+ return null;
18
+ return (_jsxs("div", { className: "mw-timing", children: [_jsxs("div", { className: "mw-timing__heading", children: ["Timing ", _jsxs("span", { className: "mw-timing__total", children: [formatMilliseconds(total), " total"] })] }), _jsx("div", { className: "mw-timing__bar", children: present.map((stage) => (_jsx("div", { className: `mw-timing__seg mw-timing__seg--${stage.key}`, style: { width: `${Math.max((stage.ms / total) * 100, 1.5)}%` }, title: `${stage.label}: ${formatMilliseconds(stage.ms)}` }, stage.key))) }), _jsx("div", { className: "mw-timing__legend", children: present.map((stage) => (_jsxs("span", { className: "mw-timing__item", children: [_jsx("span", { className: `mw-timing__swatch mw-timing__seg--${stage.key}` }), stage.label, " ", _jsx("span", { className: "mw-timing__ms", children: formatMilliseconds(stage.ms) })] }, stage.key))) })] }));
19
+ }
20
+ //# sourceMappingURL=TimingPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimingPanel.js","sourceRoot":"","sources":["../../lib/pipeline/TimingPanel.tsx"],"names":[],"mappings":";AAiBA,MAAM,MAAM,GAA6D;IACxE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;IACvC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACtC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACpC,CAAA;AAED,SAAS,kBAAkB,CAAC,EAAU;IACrC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAoB;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE5B,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAE/D,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3B,OAAO,CACN,eAAK,SAAS,EAAC,WAAW,aACzB,eAAK,SAAS,EAAC,oBAAoB,wBAC3B,gBAAM,SAAS,EAAC,kBAAkB,aAAE,kBAAkB,CAAC,KAAK,CAAC,cAAc,IAC7E,EACN,cAAK,SAAS,EAAC,gBAAgB,YAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAEvB,cAEC,SAAS,EAAE,kCAAkC,KAAK,CAAC,GAAG,EAAE,EACxD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAC/D,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAHnD,KAAK,CAAC,GAAG,CAIb,CACF,CAAC,GACG,EACN,cAAK,SAAS,EAAC,mBAAmB,YAChC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACvB,gBAAsB,SAAS,EAAC,iBAAiB,aAChD,eAAM,SAAS,EAAE,qCAAqC,KAAK,CAAC,GAAG,EAAE,GAAI,EACpE,KAAK,CAAC,KAAK,OAAE,eAAM,SAAS,EAAC,eAAe,YAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAQ,KAFzE,KAAK,CAAC,GAAG,CAGb,CACP,CAAC,GACG,IACD,CACN,CAAA;AACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * `TreeView` — the parse's containment tree as nested lists with a guide rail per level. The tag tint follows the
7
+ * confidence tier; the value and score render in monospace.
8
+ */
9
+ import type { ReactNode } from "react";
10
+ export interface TreeViewProps {
11
+ /**
12
+ * The parser's `AddressTree` (`result.tree`): the view reads `.roots` and recurses `.children`.
13
+ */
14
+ tree: unknown;
15
+ }
16
+ export declare function TreeView({ tree }: TreeViewProps): ReactNode;
17
+ //# sourceMappingURL=TreeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.d.ts","sourceRoot":"","sources":["../../lib/pipeline/TreeView.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAWtC,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,IAAI,EAAE,OAAO,CAAA;CACb;AAuBD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,GAAG,SAAS,CAM3D"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { confidenceTierOrMid } from "#common/confidence-tiers";
3
+ function renderNode(node, path) {
4
+ if (typeof node.tag !== "string")
5
+ return null;
6
+ const kids = Array.isArray(node.children) ? node.children : [];
7
+ return (_jsxs("li", { className: "mw-tree__node", children: [_jsxs("span", { className: "mw-tree__row", children: [_jsx("span", { className: `mw-tree__tag mw-tree__tag--${confidenceTierOrMid(node.confidence)}`, children: node.tag }), node.value != null && String(node.value) !== "" ? (_jsx("span", { className: "mw-tree__value", children: String(node.value) })) : null, typeof node.confidence === "number" ? (_jsx("span", { className: "mw-tree__conf", children: node.confidence.toFixed(2) })) : null] }), kids.length ? _jsx("ul", { className: "mw-tree__children", children: kids.map((c, i) => renderNode(c, `${path}.${i}`)) }) : null] }, path));
8
+ }
9
+ export function TreeView({ tree }) {
10
+ const roots = tree?.roots;
11
+ if (!Array.isArray(roots) || !roots.length)
12
+ return null;
13
+ return _jsx("ul", { className: "mw-tree mw-tree__children", children: roots.map((n, i) => renderNode(n, String(i))) });
14
+ }
15
+ //# sourceMappingURL=TreeView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../../lib/pipeline/TreeView.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAgB9D,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC/C,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE7C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9D,OAAO,CACN,cAAe,SAAS,EAAC,eAAe,aACvC,gBAAM,SAAS,EAAC,cAAc,aAC7B,eAAM,SAAS,EAAE,8BAA8B,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAG,IAAI,CAAC,GAAG,GAAQ,EACvG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAClD,eAAM,SAAS,EAAC,gBAAgB,YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,CAC5D,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtC,eAAM,SAAS,EAAC,eAAe,YAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAQ,CACnE,CAAC,CAAC,CAAC,IAAI,IACF,EACN,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAI,SAAS,EAAC,mBAAmB,YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,GAAM,CAAC,CAAC,CAAC,IAAI,KAVxG,IAAI,CAWR,CACL,CAAA;AACF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAiB;IAC/C,MAAM,KAAK,GAAI,IAAiD,EAAE,KAAK,CAAA;IAEvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAEvD,OAAO,aAAI,SAAS,EAAC,2BAA2B,YAAG,KAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAM,CAAA;AACtH,CAAC"}
@@ -6,6 +6,6 @@
6
6
  * Builds the "Copy JSON" payload for a parse result — the components + the selected resolved place,
7
7
  * pretty-printed. Pure; shared by the explorer's copy button.
8
8
  */
9
- import type { ParseResult, ResolvedPlaceView } from "./types.ts";
9
+ import type { ParseResult, ResolvedPlaceView } from "@mailwoman/core/pipeline/client-result";
10
10
  export declare function buildParsePayload(result: ParseResult, selected: ResolvedPlaceView | null): string;
11
11
  //# sourceMappingURL=copy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../pipeline/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEhE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAyBjG"}
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../lib/pipeline/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAE5F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAyBjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../pipeline/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,UAAU,iBAAiB,CAAC,MAAmB,EAAE,QAAkC;IACxF,OAAO,IAAI,CAAC,SAAS,CACpB;QACC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;SACrB,CAAC,CAAC;QACH,QAAQ,EAAE,QAAQ;YACjB,CAAC,CAAC;gBACA,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACrB;YACF,CAAC,CAAC,IAAI;KACP,EACD,IAAI,EACJ,CAAC,CACD,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../lib/pipeline/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,UAAU,iBAAiB,CAAC,MAAmB,EAAE,QAAkC;IACxF,OAAO,IAAI,CAAC,SAAS,CACpB;QACC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;SACrB,CAAC,CAAC;QACH,QAAQ,EAAE,QAAQ;YACjB,CAAC,CAAC;gBACA,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACrB;YACF,CAAC,CAAC,IAAI;KACP,EACD,IAAI,EACJ,CAAC,CACD,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../pipeline/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,mDAAmD,CAAA;AAKxF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAsBlD,CAAA"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../lib/pipeline/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,mDAAmD,CAAA;AAKxF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAuBlD,CAAA"}
@@ -26,6 +26,7 @@ export const PIPELINE_PRESETS = [
26
26
  { label: "Space Needle", value: "400 Broad St, Seattle, WA 98109", country: "us" },
27
27
  { label: "ZIP only", value: "90210", country: "us" },
28
28
  { label: "Berlin (native order)", value: "Straußstraße 27, 12623 Berlin", country: "de" },
29
+ { label: "Berlin city-state (int'l order)", value: "5 Hauptstraße, Berlin, Berlin 10115", country: "de" },
29
30
  { label: "Paris (street fall-through)", value: "181 Rue du Chevaleret, Paris", country: "fr" },
30
31
  // GB dependent_locality (placetype-pair-prior arc) — "Henbury" flips to dependent_locality via the en-gb pair-index
31
32
  // prior; the UK postcode is also structurally detectable (parity with docs EXAMPLE_ADDRESSES).
@@ -36,7 +37,7 @@ export const PIPELINE_PRESETS = [
36
37
  },
37
38
  // NZ dependent_locality (en-nz pair-prior arc) — Plimmerton is a suburb (dependent_locality) of Porirua. Postcode
38
39
  // DELIBERATELY OMITTED: a trailing "Porirua 5026" folds "porirua 5026" in segment mode and misses the index's bare
39
- // "porirua" key (tracked as #1308). The `country: "nz"` pin is load-bearing — locale-gate can't structurally detect
40
+ // "porirua" key (tracked as #1308). The `country: "nz"` pin is required — locale-hint can't structurally detect
40
41
  // NZ (4-digit postcode isn't distinctive), so only the pin selects the nz index; free-typed NZ stays unfired.
41
42
  { label: "Plimmerton (NZ dependent_locality)", value: "35 Steyne Avenue, Plimmerton, Porirua", country: "nz" },
42
43
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../pipeline/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gDAAgD,CAAA;AAExF,wHAAwH;AACxH,wHAAwH;AACxH,2GAA2G;AAC3G;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA0B;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gDAAgD,EAAE,OAAO,EAAE,IAAI,EAAE;IAChG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,uCAAuC,EAAE,OAAO,EAAE,IAAI,EAAE;IACtF,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,0CAA0C,EAAE,OAAO,EAAE,IAAI,EAAE;IACnG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kCAAkC,EAAE,OAAO,EAAE,IAAI,EAAE;IACjF,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,EAAE;IACxF,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,iCAAiC,EAAE,OAAO,EAAE,IAAI,EAAE;IAClF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,EAAE;IACzF,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,8BAA8B,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9F,oHAAoH;IACpH,+FAA+F;IAC/F;QACC,KAAK,EAAE,sCAAsC;QAC7C,KAAK,EAAE,oDAAoD;QAC3D,OAAO,EAAE,IAAI;KACb;IACD,kHAAkH;IAClH,mHAAmH;IACnH,oHAAoH;IACpH,8GAA8G;IAC9G,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,uCAAuC,EAAE,OAAO,EAAE,IAAI,EAAE;CAC9G,CAAA"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../lib/pipeline/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gDAAgD,CAAA;AAExF,wHAAwH;AACxH,wHAAwH;AACxH,2GAA2G;AAC3G;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA0B;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gDAAgD,EAAE,OAAO,EAAE,IAAI,EAAE;IAChG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,uCAAuC,EAAE,OAAO,EAAE,IAAI,EAAE;IACtF,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,0CAA0C,EAAE,OAAO,EAAE,IAAI,EAAE;IACnG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kCAAkC,EAAE,OAAO,EAAE,IAAI,EAAE;IACjF,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,EAAE;IACxF,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,iCAAiC,EAAE,OAAO,EAAE,IAAI,EAAE;IAClF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,IAAI,EAAE;IACzF,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,qCAAqC,EAAE,OAAO,EAAE,IAAI,EAAE;IACzG,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,8BAA8B,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9F,oHAAoH;IACpH,+FAA+F;IAC/F;QACC,KAAK,EAAE,sCAAsC;QAC7C,KAAK,EAAE,oDAAoD;QAC3D,OAAO,EAAE,IAAI;KACb;IACD,kHAAkH;IAClH,mHAAmH;IACnH,gHAAgH;IAChH,8GAA8G;IAC9G,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,uCAAuC,EAAE,OAAO,EAAE,IAAI,EAAE;CAC9G,CAAA"}
@@ -5,77 +5,11 @@
5
5
  *
6
6
  * Types for the pipeline (parse + resolve) explorer. The model/gazetteer runtime is INJECTED as a
7
7
  * {@link PipelineRuntime}: this package owns the UI state machine + presentation, while the host
8
- * (the docs site's DemoEmbed, or any app) owns loading ONNX/WOF and executing a parse. That keeps
8
+ * (the docs site's RuntimeEmbed, or any app) owns loading ONNX/WOF and executing a parse. That keeps
9
9
  * onnxruntime-web, sql.js-httpvfs, and node builtins entirely out of this package's browser graph.
10
10
  */
11
+ import type { ParseResult } from "@mailwoman/core/pipeline/client-result";
11
12
  import type { ReactNode } from "react";
12
- import type { KindBadgeResult } from "../common/KindBadge.tsx";
13
- /**
14
- * One decoded component, as the table + span views render it. Offsets index into `ParseResult.input`.
15
- */
16
- export interface ParsedComponent {
17
- tag: string;
18
- value?: unknown;
19
- confidence?: number;
20
- start?: number;
21
- end?: number;
22
- }
23
- /**
24
- * A resolved gazetteer place, projected to what the "Resolved place" panel + copy payload need.
25
- */
26
- export interface ResolvedPlaceView {
27
- id: number;
28
- name: string;
29
- placetype: string;
30
- lat: number;
31
- lon: number;
32
- score: number;
33
- }
34
- /**
35
- * An additional admin role a resolved place also fulfils (the dual-role / city-state relation, #402).
36
- */
37
- export interface DualRoleView {
38
- id: number;
39
- name: string;
40
- placetype: string;
41
- relationshipType: string;
42
- role: string;
43
- }
44
- /**
45
- * Per-stage wall-clock (ms) for one parse. `resolve` is absent when the lookup is skipped.
46
- */
47
- export interface StageTiming {
48
- shape: number;
49
- classify: number;
50
- resolve?: number;
51
- }
52
- /**
53
- * FST gazetteer-prior provenance, as the "FST prior" disclosure renders it.
54
- */
55
- export interface FSTProvenance {
56
- builtAt: string;
57
- stateCount: number;
58
- placeCount: number;
59
- importanceMatches: number;
60
- }
61
- /**
62
- * The presentational projection of one parse+resolve. The host's `runParse` produces it.
63
- */
64
- export interface ParseResult {
65
- input: string;
66
- /**
67
- * Opaque hierarchy — handed straight to a host-injected tree/visualizer panel.
68
- */
69
- tree: unknown;
70
- nodes: ParsedComponent[];
71
- kindResult?: KindBadgeResult;
72
- timing?: StageTiming;
73
- resolved: ResolvedPlaceView | null;
74
- candidates: ResolvedPlaceView[];
75
- fstActive: boolean;
76
- fstProvenance?: FSTProvenance | null;
77
- dualRoles?: DualRoleView[];
78
- }
79
13
  /**
80
14
  * Bundle-load progress surfaced before the runtime is `ready`.
81
15
  */