@mailwoman/react 10.0.0 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/README.md +17 -16
  2. package/fonts.css +97 -22
  3. package/lib/common/About.tsx +7 -7
  4. package/lib/common/ClientOnly.tsx +2 -14
  5. package/lib/common/CopyButton.tsx +3 -1
  6. package/lib/common/LoadingIndicator.tsx +4 -2
  7. package/lib/common/PresetChips.tsx +9 -8
  8. package/lib/common/confidence-tiers.ts +7 -6
  9. package/lib/common/cx.ts +3 -1
  10. package/lib/common/text-tokens.ts +7 -4
  11. package/lib/common/useBuildInfo.ts +54 -0
  12. package/lib/common/useClipboard.ts +2 -11
  13. package/lib/common.ts +22 -0
  14. package/lib/index.ts +27 -17
  15. package/lib/map/AppIdentity.tsx +85 -0
  16. package/lib/map/BackendControl.tsx +9 -10
  17. package/lib/map/CompareToggle.tsx +8 -31
  18. package/lib/map/DebugInfo.tsx +88 -0
  19. package/lib/map/Geocoder.tsx +60 -46
  20. package/lib/map/GeocoderControls.tsx +430 -134
  21. package/lib/map/GraticuleLayer.tsx +54 -0
  22. package/lib/map/MapCanvas.tsx +23 -12
  23. package/lib/map/MapChipRow.tsx +4 -8
  24. package/lib/map/MapCompass.tsx +15 -24
  25. package/lib/map/MapControlStack.tsx +8 -9
  26. package/lib/map/MapFooter.tsx +2 -16
  27. package/lib/map/MapProgressBar.tsx +10 -13
  28. package/lib/map/MapSearchBar.tsx +31 -17
  29. package/lib/map/MapSheet.tsx +24 -15
  30. package/lib/map/OverlayLayers.tsx +1 -1
  31. package/lib/map/PlaceAutocomplete.tsx +10 -21
  32. package/lib/map/PlaceMarker.tsx +4 -2
  33. package/lib/map/ResolvedPlaceLayers.tsx +5 -14
  34. package/lib/map/ResultCamera.tsx +8 -31
  35. package/lib/map/ResultOverlay.tsx +2 -12
  36. package/lib/map/ResultPanel.tsx +1 -20
  37. package/lib/map/VersionPicker.tsx +10 -19
  38. package/lib/map/fake-runtime.ts +10 -12
  39. package/lib/map/geometry.ts +14 -47
  40. package/lib/map/graticule.ts +80 -0
  41. package/lib/map/map-debug.ts +1 -1
  42. package/lib/map/place-render.ts +28 -60
  43. package/lib/map/types.ts +58 -104
  44. package/lib/map/useCompareState.ts +5 -4
  45. package/lib/map/useGeocode.ts +7 -5
  46. package/lib/map/useMapBearing.ts +13 -13
  47. package/lib/map/useMapLabelPick.ts +21 -30
  48. package/lib/map/useMapPlaceRender.ts +2 -6
  49. package/lib/map/usePlaceAutocomplete.ts +44 -50
  50. package/lib/map.ts +95 -0
  51. package/lib/pipeline/CandidatePicker.tsx +13 -5
  52. package/lib/pipeline/ConfidenceCell.tsx +1 -1
  53. package/lib/pipeline/FailureDiagnostic.tsx +8 -2
  54. package/lib/pipeline/QueryForm.tsx +5 -2
  55. package/lib/pipeline/ResolvedPlace.tsx +1 -1
  56. package/lib/pipeline/SpanHighlight.tsx +7 -5
  57. package/lib/pipeline/TimingPanel.tsx +1 -1
  58. package/lib/pipeline/TreeView.tsx +1 -1
  59. package/lib/pipeline/copy.ts +22 -25
  60. package/lib/pipeline/presets.ts +15 -13
  61. package/lib/pipeline/types.ts +21 -14
  62. package/lib/pipeline/useParsePipeline.ts +16 -13
  63. package/lib/pipeline.ts +36 -0
  64. package/lib/poi/AbstainPanel.tsx +1 -1
  65. package/lib/poi/LiveResultsBlock.tsx +2 -1
  66. package/lib/poi/POIExplorer.tsx +24 -15
  67. package/lib/poi/QueryInput.tsx +1 -1
  68. package/lib/poi/SubjectPanel.tsx +4 -3
  69. package/lib/poi/runtime.ts +5 -16
  70. package/lib/poi/types.ts +39 -27
  71. package/lib/poi/usePOISearch.ts +39 -44
  72. package/lib/poi.ts +39 -0
  73. package/lib/runtime/useReleaseRuntime.ts +125 -74
  74. package/lib/search/SearchModal.tsx +317 -0
  75. package/lib/search/search.css +144 -0
  76. package/lib/search/types.ts +67 -0
  77. package/lib/search.ts +11 -0
  78. package/out/common/About.d.ts +5 -5
  79. package/out/common/About.d.ts.map +1 -1
  80. package/out/common/About.js +1 -1
  81. package/out/common/About.js.map +1 -1
  82. package/out/common/ClientOnly.d.ts +2 -11
  83. package/out/common/ClientOnly.d.ts.map +1 -1
  84. package/out/common/ClientOnly.js +1 -13
  85. package/out/common/ClientOnly.js.map +1 -1
  86. package/out/common/CopyButton.d.ts +3 -1
  87. package/out/common/CopyButton.d.ts.map +1 -1
  88. package/out/common/CopyButton.js.map +1 -1
  89. package/out/common/LoadingIndicator.d.ts +4 -2
  90. package/out/common/LoadingIndicator.d.ts.map +1 -1
  91. package/out/common/LoadingIndicator.js.map +1 -1
  92. package/out/common/PresetChips.d.ts +9 -8
  93. package/out/common/PresetChips.d.ts.map +1 -1
  94. package/out/common/PresetChips.js.map +1 -1
  95. package/out/common/confidence-tiers.d.ts +7 -6
  96. package/out/common/confidence-tiers.d.ts.map +1 -1
  97. package/out/common/confidence-tiers.js +7 -6
  98. package/out/common/confidence-tiers.js.map +1 -1
  99. package/out/common/cx.d.ts +3 -1
  100. package/out/common/cx.d.ts.map +1 -1
  101. package/out/common/cx.js +3 -1
  102. package/out/common/cx.js.map +1 -1
  103. package/out/common/text-tokens.d.ts +4 -3
  104. package/out/common/text-tokens.d.ts.map +1 -1
  105. package/out/common/text-tokens.js +6 -3
  106. package/out/common/text-tokens.js.map +1 -1
  107. package/out/common/useBuildInfo.d.ts +27 -0
  108. package/out/common/useBuildInfo.d.ts.map +1 -0
  109. package/out/common/useBuildInfo.js +32 -0
  110. package/out/common/useBuildInfo.js.map +1 -0
  111. package/out/common/useClipboard.d.ts +1 -3
  112. package/out/common/useClipboard.d.ts.map +1 -1
  113. package/out/common/useClipboard.js +2 -11
  114. package/out/common/useClipboard.js.map +1 -1
  115. package/out/common.d.ts +22 -0
  116. package/out/common.d.ts.map +1 -0
  117. package/out/common.js +15 -0
  118. package/out/common.js.map +1 -0
  119. package/out/index.d.ts +26 -16
  120. package/out/index.d.ts.map +1 -1
  121. package/out/index.js +21 -15
  122. package/out/index.js.map +1 -1
  123. package/out/map/AppIdentity.d.ts +42 -0
  124. package/out/map/AppIdentity.d.ts.map +1 -0
  125. package/out/map/AppIdentity.js +16 -0
  126. package/out/map/AppIdentity.js.map +1 -0
  127. package/out/map/BackendControl.d.ts +9 -10
  128. package/out/map/BackendControl.d.ts.map +1 -1
  129. package/out/map/BackendControl.js +1 -1
  130. package/out/map/BackendControl.js.map +1 -1
  131. package/out/map/CompareToggle.d.ts +8 -31
  132. package/out/map/CompareToggle.d.ts.map +1 -1
  133. package/out/map/CompareToggle.js +4 -1
  134. package/out/map/CompareToggle.js.map +1 -1
  135. package/out/map/DebugInfo.d.ts +34 -0
  136. package/out/map/DebugInfo.d.ts.map +1 -0
  137. package/out/map/DebugInfo.js +39 -0
  138. package/out/map/DebugInfo.js.map +1 -0
  139. package/out/map/Geocoder.d.ts +41 -30
  140. package/out/map/Geocoder.d.ts.map +1 -1
  141. package/out/map/Geocoder.js +20 -36
  142. package/out/map/Geocoder.js.map +1 -1
  143. package/out/map/GeocoderControls.d.ts +14 -42
  144. package/out/map/GeocoderControls.d.ts.map +1 -1
  145. package/out/map/GeocoderControls.js +250 -38
  146. package/out/map/GeocoderControls.js.map +1 -1
  147. package/out/map/GraticuleLayer.d.ts +28 -0
  148. package/out/map/GraticuleLayer.d.ts.map +1 -0
  149. package/out/map/GraticuleLayer.js +25 -0
  150. package/out/map/GraticuleLayer.js.map +1 -0
  151. package/out/map/MapCanvas.d.ts +23 -12
  152. package/out/map/MapCanvas.d.ts.map +1 -1
  153. package/out/map/MapCanvas.js +5 -2
  154. package/out/map/MapCanvas.js.map +1 -1
  155. package/out/map/MapChipRow.d.ts +4 -8
  156. package/out/map/MapChipRow.d.ts.map +1 -1
  157. package/out/map/MapChipRow.js.map +1 -1
  158. package/out/map/MapCompass.d.ts +11 -20
  159. package/out/map/MapCompass.d.ts.map +1 -1
  160. package/out/map/MapCompass.js +5 -1
  161. package/out/map/MapCompass.js.map +1 -1
  162. package/out/map/MapControlStack.d.ts +8 -9
  163. package/out/map/MapControlStack.d.ts.map +1 -1
  164. package/out/map/MapControlStack.js +4 -1
  165. package/out/map/MapControlStack.js.map +1 -1
  166. package/out/map/MapFooter.d.ts +2 -15
  167. package/out/map/MapFooter.d.ts.map +1 -1
  168. package/out/map/MapFooter.js +0 -14
  169. package/out/map/MapFooter.js.map +1 -1
  170. package/out/map/MapProgressBar.d.ts +10 -13
  171. package/out/map/MapProgressBar.d.ts.map +1 -1
  172. package/out/map/MapProgressBar.js.map +1 -1
  173. package/out/map/MapSearchBar.d.ts +16 -17
  174. package/out/map/MapSearchBar.d.ts.map +1 -1
  175. package/out/map/MapSearchBar.js +6 -0
  176. package/out/map/MapSearchBar.js.map +1 -1
  177. package/out/map/MapSheet.d.ts +15 -12
  178. package/out/map/MapSheet.d.ts.map +1 -1
  179. package/out/map/MapSheet.js +8 -12
  180. package/out/map/MapSheet.js.map +1 -1
  181. package/out/map/OverlayLayers.d.ts +1 -1
  182. package/out/map/OverlayLayers.js +1 -1
  183. package/out/map/PlaceAutocomplete.d.ts +10 -21
  184. package/out/map/PlaceAutocomplete.d.ts.map +1 -1
  185. package/out/map/PlaceAutocomplete.js +2 -1
  186. package/out/map/PlaceAutocomplete.js.map +1 -1
  187. package/out/map/PlaceMarker.d.ts +4 -2
  188. package/out/map/PlaceMarker.d.ts.map +1 -1
  189. package/out/map/PlaceMarker.js +3 -1
  190. package/out/map/PlaceMarker.js.map +1 -1
  191. package/out/map/ResolvedPlaceLayers.d.ts +5 -14
  192. package/out/map/ResolvedPlaceLayers.d.ts.map +1 -1
  193. package/out/map/ResolvedPlaceLayers.js +1 -1
  194. package/out/map/ResolvedPlaceLayers.js.map +1 -1
  195. package/out/map/ResultCamera.d.ts +8 -31
  196. package/out/map/ResultCamera.d.ts.map +1 -1
  197. package/out/map/ResultCamera.js +3 -28
  198. package/out/map/ResultCamera.js.map +1 -1
  199. package/out/map/ResultOverlay.d.ts +2 -12
  200. package/out/map/ResultOverlay.d.ts.map +1 -1
  201. package/out/map/ResultOverlay.js +1 -2
  202. package/out/map/ResultOverlay.js.map +1 -1
  203. package/out/map/ResultPanel.d.ts +1 -20
  204. package/out/map/ResultPanel.d.ts.map +1 -1
  205. package/out/map/ResultPanel.js.map +1 -1
  206. package/out/map/VersionPicker.d.ts +7 -19
  207. package/out/map/VersionPicker.d.ts.map +1 -1
  208. package/out/map/VersionPicker.js +5 -2
  209. package/out/map/VersionPicker.js.map +1 -1
  210. package/out/map/fake-runtime.d.ts +9 -11
  211. package/out/map/fake-runtime.d.ts.map +1 -1
  212. package/out/map/fake-runtime.js +9 -12
  213. package/out/map/fake-runtime.js.map +1 -1
  214. package/out/map/geometry.d.ts +13 -34
  215. package/out/map/geometry.d.ts.map +1 -1
  216. package/out/map/geometry.js +9 -34
  217. package/out/map/geometry.js.map +1 -1
  218. package/out/map/graticule.d.ts +17 -0
  219. package/out/map/graticule.d.ts.map +1 -0
  220. package/out/map/graticule.js +67 -0
  221. package/out/map/graticule.js.map +1 -0
  222. package/out/map/map-debug.d.ts +1 -1
  223. package/out/map/map-debug.js +1 -1
  224. package/out/map/place-render.d.ts +23 -43
  225. package/out/map/place-render.d.ts.map +1 -1
  226. package/out/map/place-render.js +4 -39
  227. package/out/map/place-render.js.map +1 -1
  228. package/out/map/types.d.ts +58 -102
  229. package/out/map/types.d.ts.map +1 -1
  230. package/out/map/types.js +1 -10
  231. package/out/map/types.js.map +1 -1
  232. package/out/map/useCompareState.d.ts +5 -4
  233. package/out/map/useCompareState.d.ts.map +1 -1
  234. package/out/map/useCompareState.js +3 -3
  235. package/out/map/useCompareState.js.map +1 -1
  236. package/out/map/useGeocode.d.ts +5 -3
  237. package/out/map/useGeocode.d.ts.map +1 -1
  238. package/out/map/useGeocode.js +4 -4
  239. package/out/map/useGeocode.js.map +1 -1
  240. package/out/map/useMapBearing.d.ts +11 -11
  241. package/out/map/useMapBearing.d.ts.map +1 -1
  242. package/out/map/useMapBearing.js +6 -11
  243. package/out/map/useMapBearing.js.map +1 -1
  244. package/out/map/useMapLabelPick.d.ts +4 -14
  245. package/out/map/useMapLabelPick.d.ts.map +1 -1
  246. package/out/map/useMapLabelPick.js +21 -30
  247. package/out/map/useMapLabelPick.js.map +1 -1
  248. package/out/map/useMapPlaceRender.d.ts +2 -6
  249. package/out/map/useMapPlaceRender.d.ts.map +1 -1
  250. package/out/map/useMapPlaceRender.js +2 -6
  251. package/out/map/useMapPlaceRender.js.map +1 -1
  252. package/out/map/usePlaceAutocomplete.d.ts +30 -28
  253. package/out/map/usePlaceAutocomplete.d.ts.map +1 -1
  254. package/out/map/usePlaceAutocomplete.js +6 -33
  255. package/out/map/usePlaceAutocomplete.js.map +1 -1
  256. package/out/map.d.ts +69 -0
  257. package/out/map.d.ts.map +1 -0
  258. package/out/map.js +46 -0
  259. package/out/map.js.map +1 -0
  260. package/out/pipeline/CandidatePicker.d.ts +12 -2
  261. package/out/pipeline/CandidatePicker.d.ts.map +1 -1
  262. package/out/pipeline/CandidatePicker.js +1 -1
  263. package/out/pipeline/CandidatePicker.js.map +1 -1
  264. package/out/pipeline/ConfidenceCell.d.ts +1 -1
  265. package/out/pipeline/ConfidenceCell.js +1 -1
  266. package/out/pipeline/FailureDiagnostic.d.ts +8 -2
  267. package/out/pipeline/FailureDiagnostic.d.ts.map +1 -1
  268. package/out/pipeline/FailureDiagnostic.js +3 -0
  269. package/out/pipeline/FailureDiagnostic.js.map +1 -1
  270. package/out/pipeline/QueryForm.d.ts +5 -2
  271. package/out/pipeline/QueryForm.d.ts.map +1 -1
  272. package/out/pipeline/QueryForm.js.map +1 -1
  273. package/out/pipeline/SpanHighlight.d.ts +4 -3
  274. package/out/pipeline/SpanHighlight.d.ts.map +1 -1
  275. package/out/pipeline/SpanHighlight.js +3 -2
  276. package/out/pipeline/SpanHighlight.js.map +1 -1
  277. package/out/pipeline/TimingPanel.d.ts +1 -1
  278. package/out/pipeline/TreeView.d.ts +1 -1
  279. package/out/pipeline/copy.d.ts +1 -1
  280. package/out/pipeline/copy.d.ts.map +1 -1
  281. package/out/pipeline/copy.js +4 -3
  282. package/out/pipeline/copy.js.map +1 -1
  283. package/out/pipeline/presets.d.ts +5 -4
  284. package/out/pipeline/presets.d.ts.map +1 -1
  285. package/out/pipeline/presets.js +15 -13
  286. package/out/pipeline/presets.js.map +1 -1
  287. package/out/pipeline/types.d.ts +21 -14
  288. package/out/pipeline/types.d.ts.map +1 -1
  289. package/out/pipeline/types.js +2 -4
  290. package/out/pipeline/types.js.map +1 -1
  291. package/out/pipeline/useParsePipeline.d.ts +14 -9
  292. package/out/pipeline/useParsePipeline.d.ts.map +1 -1
  293. package/out/pipeline/useParsePipeline.js +7 -8
  294. package/out/pipeline/useParsePipeline.js.map +1 -1
  295. package/out/pipeline.d.ts +33 -0
  296. package/out/pipeline.d.ts.map +1 -0
  297. package/out/pipeline.js +21 -0
  298. package/out/pipeline.js.map +1 -0
  299. package/out/poi/AbstainPanel.d.ts +1 -1
  300. package/out/poi/LiveResultsBlock.d.ts +2 -1
  301. package/out/poi/LiveResultsBlock.d.ts.map +1 -1
  302. package/out/poi/LiveResultsBlock.js.map +1 -1
  303. package/out/poi/POIExplorer.d.ts +22 -12
  304. package/out/poi/POIExplorer.d.ts.map +1 -1
  305. package/out/poi/POIExplorer.js +9 -8
  306. package/out/poi/POIExplorer.js.map +1 -1
  307. package/out/poi/QueryInput.d.ts +1 -1
  308. package/out/poi/SubjectPanel.d.ts +2 -2
  309. package/out/poi/SubjectPanel.d.ts.map +1 -1
  310. package/out/poi/SubjectPanel.js +2 -1
  311. package/out/poi/SubjectPanel.js.map +1 -1
  312. package/out/poi/runtime.d.ts +5 -14
  313. package/out/poi/runtime.d.ts.map +1 -1
  314. package/out/poi/runtime.js +5 -16
  315. package/out/poi/runtime.js.map +1 -1
  316. package/out/poi/types.d.ts +39 -27
  317. package/out/poi/types.d.ts.map +1 -1
  318. package/out/poi/types.js +2 -4
  319. package/out/poi/types.js.map +1 -1
  320. package/out/poi/usePOISearch.d.ts +28 -17
  321. package/out/poi/usePOISearch.d.ts.map +1 -1
  322. package/out/poi/usePOISearch.js +6 -32
  323. package/out/poi/usePOISearch.js.map +1 -1
  324. package/out/poi.d.ts +23 -0
  325. package/out/poi.d.ts.map +1 -0
  326. package/out/poi.js +15 -0
  327. package/out/poi.js.map +1 -0
  328. package/out/runtime/useReleaseRuntime.d.ts +64 -65
  329. package/out/runtime/useReleaseRuntime.d.ts.map +1 -1
  330. package/out/runtime/useReleaseRuntime.js +31 -26
  331. package/out/runtime/useReleaseRuntime.js.map +1 -1
  332. package/out/{runtime/index.d.ts → runtime.d.ts} +1 -1
  333. package/out/runtime.d.ts.map +1 -0
  334. package/out/{runtime/index.js → runtime.js} +1 -1
  335. package/out/runtime.js.map +1 -0
  336. package/out/search/SearchModal.d.ts +33 -0
  337. package/out/search/SearchModal.d.ts.map +1 -0
  338. package/out/search/SearchModal.js +187 -0
  339. package/out/search/SearchModal.js.map +1 -0
  340. package/out/search/types.d.ts +64 -0
  341. package/out/search/types.d.ts.map +1 -0
  342. package/out/search/types.js +13 -0
  343. package/out/search/types.js.map +1 -0
  344. package/out/search.d.ts +11 -0
  345. package/out/search.d.ts.map +1 -0
  346. package/out/search.js +9 -0
  347. package/out/search.js.map +1 -0
  348. package/package.json +60 -142
  349. package/styles.css +482 -266
  350. package/tokens/index.css +24 -6
  351. package/tokens/tokens.json +114 -6
  352. package/lib/common/index.ts +0 -22
  353. package/lib/map/index.ts +0 -95
  354. package/lib/pipeline/index.ts +0 -36
  355. package/lib/poi/index.ts +0 -39
  356. package/out/common/index.d.ts +0 -22
  357. package/out/common/index.d.ts.map +0 -1
  358. package/out/common/index.js +0 -15
  359. package/out/common/index.js.map +0 -1
  360. package/out/map/index.d.ts +0 -69
  361. package/out/map/index.d.ts.map +0 -1
  362. package/out/map/index.js +0 -46
  363. package/out/map/index.js.map +0 -1
  364. package/out/pipeline/index.d.ts +0 -33
  365. package/out/pipeline/index.d.ts.map +0 -1
  366. package/out/pipeline/index.js +0 -21
  367. package/out/pipeline/index.js.map +0 -1
  368. package/out/poi/index.d.ts +0 -23
  369. package/out/poi/index.d.ts.map +0 -1
  370. package/out/poi/index.js +0 -15
  371. package/out/poi/index.js.map +0 -1
  372. package/out/runtime/index.d.ts.map +0 -1
  373. package/out/runtime/index.js.map +0 -1
  374. package/styleframe.config.ts +0 -329
  375. package/vitest.node.config.ts +0 -20
  376. /package/lib/{runtime/index.ts → runtime.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchModal.d.ts","sourceRoot":"","sources":["../../lib/search/SearchModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC;;;;;OAKG;IACH,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;CACnE;AAiBD;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,MAAM,CAEtE;AAuCD,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,+BA+NlF"}
@@ -0,0 +1,187 @@
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
+ * The docs search modal. A native `<dialog>` opened with `showModal()` supplies the focus trap, the inert
8
+ * background, the backdrop, the close on Escape and the return of focus to the opener. The query field is an
9
+ * `<input type="search">` with the ARIA combobox role. DOM focus stays on the input, and the selected hit is
10
+ * named by `aria-activedescendant`. The component owns no data access: `search` is passed in.
11
+ */
12
+ import { useEffect, useId, useMemo, useRef, useState } from "react";
13
+ import { useDebouncedValue } from "#common/useDebouncedValue";
14
+ const DEBOUNCE_MS = 150;
15
+ /**
16
+ * How long a request runs before the live region announces that the index is loading.
17
+ */
18
+ const LOADING_ANNOUNCE_MS = 300;
19
+ const MAX_QUERY_LENGTH = 200;
20
+ const DEFAULT_CATEGORY = "Documentation";
21
+ /**
22
+ * The site-relative link for a hit.
23
+ */
24
+ export function hitHref(hit) {
25
+ return hit.anchor === "" ? hit.url : `${hit.url}#${hit.anchor}`;
26
+ }
27
+ function statusText(status) {
28
+ if (status.kind === "failed")
29
+ return "Search is unavailable. Try again in a moment.";
30
+ if (status.kind === "loading")
31
+ return "Loading the search index…";
32
+ if (status.kind === "idle")
33
+ return "";
34
+ const { response } = status;
35
+ if (!response.hits.length)
36
+ return `No results for “${response.query}”.`;
37
+ return response.hits.length === 1 ? "1 result." : `${response.hits.length} results.`;
38
+ }
39
+ function highlighted(hit) {
40
+ const parts = [];
41
+ let cursor = 0;
42
+ for (const [start, end] of hit.highlights) {
43
+ if (start < cursor)
44
+ continue;
45
+ parts.push(hit.snippet.slice(cursor, start), _jsx("mark", { children: hit.snippet.slice(start, end) }, start));
46
+ cursor = end;
47
+ }
48
+ parts.push(hit.snippet.slice(cursor));
49
+ return parts;
50
+ }
51
+ function title(hit) {
52
+ return hit.hierarchy
53
+ .slice(1)
54
+ .filter((entry) => entry !== null)
55
+ .join(" › ");
56
+ }
57
+ export function SearchModal({ open, onClose, onNavigate, search }) {
58
+ const dialogRef = useRef(null);
59
+ const inputRef = useRef(null);
60
+ const baseID = useId();
61
+ const listboxID = `${baseID}-listbox`;
62
+ const [query, setQuery] = useState("");
63
+ const [settled, setSettled] = useState({ kind: "idle" });
64
+ const [selected, setSelected] = useState(0);
65
+ const [loading, setLoading] = useState(false);
66
+ const trimmed = query.trim().slice(0, MAX_QUERY_LENGTH);
67
+ const debounced = useDebouncedValue(trimmed, DEBOUNCE_MS);
68
+ useEffect(() => {
69
+ const dialog = dialogRef.current;
70
+ if (!dialog)
71
+ return;
72
+ if (open && !dialog.open) {
73
+ dialog.showModal();
74
+ inputRef.current?.focus();
75
+ }
76
+ else if (!open && dialog.open) {
77
+ dialog.close();
78
+ }
79
+ }, [open]);
80
+ useEffect(() => {
81
+ if (debounced === "")
82
+ return;
83
+ // Aborting the earlier request is what keeps a late response from replacing newer results.
84
+ const controller = new AbortController();
85
+ const loadingTimer = setTimeout(() => setLoading(true), LOADING_ANNOUNCE_MS);
86
+ search(debounced, controller.signal).then((response) => {
87
+ if (controller.signal.aborted)
88
+ return;
89
+ clearTimeout(loadingTimer);
90
+ setLoading(false);
91
+ setSettled({ kind: "results", response });
92
+ setSelected(0);
93
+ }, () => {
94
+ if (controller.signal.aborted)
95
+ return;
96
+ clearTimeout(loadingTimer);
97
+ setLoading(false);
98
+ setSettled({ kind: "failed" });
99
+ });
100
+ return () => {
101
+ clearTimeout(loadingTimer);
102
+ setLoading(false);
103
+ controller.abort();
104
+ };
105
+ }, [debounced, search]);
106
+ // An empty query shows no results, whatever the last settled response was.
107
+ const status = debounced === "" ? { kind: "idle" } : settled;
108
+ const response = status.kind === "results" ? status.response : undefined;
109
+ // The announcement reports a slow request while the last results stay on screen.
110
+ const announced = loading && debounced !== "" ? { kind: "loading" } : status;
111
+ const groups = useMemo(() => {
112
+ const hits = response?.hits ?? [];
113
+ const byCategory = new Map();
114
+ for (const hit of hits) {
115
+ const category = hit.hierarchy[0] ?? DEFAULT_CATEGORY;
116
+ byCategory.set(category, [...(byCategory.get(category) ?? []), hit]);
117
+ }
118
+ // Options are numbered in display order so the arrow keys follow what the reader sees.
119
+ let order = 0;
120
+ return [...byCategory].map(([category, entries]) => ({
121
+ category,
122
+ entries: entries.map((hit) => ({ hit, order: order++ })),
123
+ }));
124
+ }, [response]);
125
+ const ordered = groups.flatMap((group) => group.entries);
126
+ const optionID = (order) => `${baseID}-option-${order}`;
127
+ function go(hit) {
128
+ const href = hitHref(hit);
129
+ onClose();
130
+ if (onNavigate) {
131
+ onNavigate(href);
132
+ }
133
+ else {
134
+ globalThis.location.assign(href);
135
+ }
136
+ }
137
+ function onKeyDown(event) {
138
+ // A key that commits or edits an IME composition is not a command.
139
+ if (event.nativeEvent.isComposing)
140
+ return;
141
+ if (!ordered.length)
142
+ return;
143
+ const last = ordered.length - 1;
144
+ const next = event.key === "ArrowDown"
145
+ ? selected === last
146
+ ? 0
147
+ : selected + 1
148
+ : event.key === "ArrowUp"
149
+ ? selected === 0
150
+ ? last
151
+ : selected - 1
152
+ : event.key === "Home"
153
+ ? 0
154
+ : event.key === "End"
155
+ ? last
156
+ : undefined;
157
+ if (next !== undefined) {
158
+ event.preventDefault();
159
+ setSelected(next);
160
+ document.getElementById(optionID(next))?.scrollIntoView({ block: "nearest" });
161
+ }
162
+ else if (event.key === "Enter") {
163
+ event.preventDefault();
164
+ // The hits on screen answer an earlier query until the debounce settles.
165
+ if (trimmed !== debounced)
166
+ return;
167
+ const entry = ordered[selected];
168
+ if (entry) {
169
+ go(entry.hit);
170
+ }
171
+ }
172
+ }
173
+ function onDialogClick(event) {
174
+ // A click whose target is the dialog element itself landed on the backdrop.
175
+ if (event.target === event.currentTarget) {
176
+ event.currentTarget.close();
177
+ }
178
+ }
179
+ function onLinkClick(event, hit) {
180
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0)
181
+ return;
182
+ event.preventDefault();
183
+ go(hit);
184
+ }
185
+ return (_jsxs("dialog", { ref: dialogRef, className: "mw-search", "aria-label": "Search the documentation", onClose: onClose, onClick: onDialogClick, children: [_jsx("form", { role: "search", className: "mw-search__form", onSubmit: (event) => event.preventDefault(), children: _jsx("input", { ref: inputRef, type: "search", className: "mw-search__input", role: "combobox", "aria-label": "Search the documentation", "aria-autocomplete": "list", "aria-expanded": ordered.length > 0, "aria-controls": listboxID, "aria-activedescendant": ordered.length ? optionID(selected) : undefined, autoComplete: "off", spellCheck: false, maxLength: MAX_QUERY_LENGTH, placeholder: "Search the documentation", value: query, onChange: (event) => setQuery(event.target.value), onKeyDown: onKeyDown }) }), response?.corrected !== undefined && (_jsxs("p", { className: "mw-search__corrected", children: ["Showing results for \u201C", response.corrected, "\u201D"] })), _jsx("div", { id: listboxID, role: "listbox", "aria-label": "Search results", className: "mw-search__results", children: groups.map((group, groupIndex) => (_jsxs("div", { role: "group", "aria-labelledby": `${baseID}-group-${groupIndex}`, className: "mw-search__group", children: [_jsx("div", { id: `${baseID}-group-${groupIndex}`, className: "mw-search__category", children: group.category }), group.entries.map(({ hit, order }) => (_jsxs("a", { id: optionID(order), role: "option", "aria-selected": order === selected, href: hitHref(hit), tabIndex: -1, className: "mw-search__option", onPointerMove: () => setSelected(order), onClick: (event) => onLinkClick(event, hit), children: [_jsx("span", { className: "mw-search__title", children: title(hit) }), hit.snippet !== "" && _jsx("span", { className: "mw-search__snippet", children: highlighted(hit) })] }, order)))] }, group.category))) }), _jsx("p", { "aria-live": "polite", className: "mw-search__status", children: statusText(announced) })] }));
186
+ }
187
+ //# sourceMappingURL=SearchModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchModal.js","sourceRoot":"","sources":["../../lib/search/SearchModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The record the docs build indexes and the response the search modal renders. The modal and the
7
+ * query code share these through `import type`.
8
+ */
9
+ /**
10
+ * The number of hierarchy entries: the sidebar category, then `h1` through `h6`.
11
+ */
12
+ export declare const HIERARCHY_DEPTH = 7;
13
+ export interface SearchRecord {
14
+ /**
15
+ * The first 32 hex characters of `sha256(url + "#" + anchor + "\n" + position)`.
16
+ */
17
+ id: string;
18
+ /**
19
+ * Site-relative path without the anchor, such as `/docs/developers/reference/cli`.
20
+ */
21
+ url: string;
22
+ /**
23
+ * The heading id the record links to, or the empty string for the top of the page.
24
+ */
25
+ anchor: string;
26
+ /**
27
+ * Seven entries, `lvl0` through `lvl6`, with `null` below the record's own level.
28
+ */
29
+ hierarchy: (string | null)[];
30
+ /**
31
+ * Aggregated text under the heading, or the empty string for a heading without body text.
32
+ */
33
+ content: string;
34
+ /**
35
+ * Depth of the deepest non-null hierarchy entry, 0 through 6.
36
+ */
37
+ level: number;
38
+ /**
39
+ * Zero-based order of the record on its page.
40
+ */
41
+ position: number;
42
+ }
43
+ export interface SearchHit {
44
+ url: string;
45
+ anchor: string;
46
+ hierarchy: (string | null)[];
47
+ /**
48
+ * At most 160 characters of content around the first match.
49
+ */
50
+ snippet: string;
51
+ /**
52
+ * Character ranges within `snippet` that matched a query token.
53
+ */
54
+ highlights: [start: number, end: number][];
55
+ }
56
+ export interface SearchResponse {
57
+ query: string;
58
+ /**
59
+ * The text actually searched when a token was corrected against the vocabulary.
60
+ */
61
+ corrected?: string;
62
+ hits: SearchHit[];
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/search/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAA;AAEhC,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAA;CAC1C;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,SAAS,EAAE,CAAA;CACjB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ *
6
+ * The record the docs build indexes and the response the search modal renders. The modal and the
7
+ * query code share these through `import type`.
8
+ */
9
+ /**
10
+ * The number of hierarchy entries: the sidebar category, then `h1` through `h6`.
11
+ */
12
+ export const HIERARCHY_DEPTH = 7;
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/search/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ * @file The docs search modal and its wire types.
6
+ */
7
+ export { hitHref, SearchModal } from "./search/SearchModal.tsx";
8
+ export type { SearchModalProps } from "./search/SearchModal.tsx";
9
+ export { HIERARCHY_DEPTH } from "./search/types.ts";
10
+ export type { SearchHit, SearchRecord, SearchResponse } from "./search/types.ts";
11
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../lib/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC/D,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
package/out/search.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license AGPL-3.0
4
+ * @author Teffen Ellis, et al.
5
+ * @file The docs search modal and its wire types.
6
+ */
7
+ export { hitHref, SearchModal } from "./search/SearchModal.js";
8
+ export { HIERARCHY_DEPTH } from "./search/types.js";
9
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../lib/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAA0B,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}