@mailwoman/react 10.0.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -16
- package/fonts.css +97 -22
- package/lib/common/About.tsx +10 -10
- package/lib/common/ClientOnly.tsx +2 -14
- package/lib/common/CopyButton.tsx +9 -3
- package/lib/common/LoadingIndicator.tsx +13 -5
- package/lib/common/PresetChips.tsx +11 -8
- package/lib/common/confidence-tiers.ts +8 -7
- package/lib/common/cx.ts +3 -1
- package/lib/common/text-tokens.ts +10 -13
- package/lib/common/useBuildInfo.ts +54 -0
- package/lib/common/useClipboard.ts +2 -11
- package/lib/common.ts +22 -0
- package/lib/index.ts +27 -18
- package/lib/map/AppIdentity.tsx +89 -0
- package/lib/map/CompareToggle.tsx +8 -31
- package/lib/map/DebugInfo.tsx +75 -0
- package/lib/map/Geocoder.tsx +65 -50
- package/lib/map/GeocoderControls.tsx +425 -141
- package/lib/map/GraticuleLayer.tsx +56 -0
- package/lib/map/MapCanvas.tsx +26 -13
- package/lib/map/MapChipRow.tsx +4 -8
- package/lib/map/MapCompass.tsx +18 -25
- package/lib/map/MapControlStack.tsx +11 -10
- package/lib/map/MapFooter.tsx +5 -17
- package/lib/map/MapProgressBar.tsx +10 -13
- package/lib/map/MapSearchBar.tsx +31 -17
- package/lib/map/MapSheet.tsx +24 -15
- package/lib/map/OverlayLayers.tsx +14 -3
- package/lib/map/PlaceAutocomplete.tsx +12 -21
- package/lib/map/PlaceMarker.tsx +10 -4
- package/lib/map/ResolvedPlaceLayers.tsx +14 -15
- package/lib/map/ResultCamera.tsx +10 -31
- package/lib/map/ResultOverlay.tsx +14 -16
- package/lib/map/ResultPanel.tsx +1 -20
- package/lib/map/VersionPicker.tsx +10 -19
- package/lib/map/fake-runtime.ts +46 -19
- package/lib/map/geometry.ts +14 -47
- package/lib/map/graticule.ts +80 -0
- package/lib/map/map-debug.ts +4 -2
- package/lib/map/place-render.ts +30 -62
- package/lib/map/types.ts +57 -116
- package/lib/map/useCompareState.ts +5 -4
- package/lib/map/useGeocode.ts +7 -5
- package/lib/map/useMapBearing.ts +13 -13
- package/lib/map/useMapLabelPick.ts +21 -30
- package/lib/map/useMapPlaceRender.ts +3 -7
- package/lib/map/usePlaceAutocomplete.ts +44 -50
- package/lib/map.ts +92 -0
- package/lib/pipeline/CandidatePicker.tsx +13 -5
- package/lib/pipeline/ConfidenceCell.tsx +2 -2
- package/lib/pipeline/FailureDiagnostic.tsx +8 -2
- package/lib/pipeline/PipelineExplorer.tsx +6 -3
- package/lib/pipeline/QueryForm.tsx +5 -2
- package/lib/pipeline/ResolvedPlace.tsx +2 -2
- package/lib/pipeline/SpanHighlight.tsx +7 -5
- package/lib/pipeline/TimingPanel.tsx +1 -1
- package/lib/pipeline/TreeView.tsx +2 -2
- package/lib/pipeline/copy.ts +22 -25
- package/lib/pipeline/presets.ts +15 -13
- package/lib/pipeline/types.ts +20 -17
- package/lib/pipeline/useParsePipeline.ts +16 -13
- package/lib/pipeline.ts +36 -0
- package/lib/poi/AbstainPanel.tsx +1 -1
- package/lib/poi/LiveResultsBlock.tsx +2 -1
- package/lib/poi/POIExplorer.tsx +29 -17
- package/lib/poi/QueryInput.tsx +1 -1
- package/lib/poi/SubjectPanel.tsx +4 -3
- package/lib/poi/runtime.ts +14 -16
- package/lib/poi/types.ts +58 -47
- package/lib/poi/usePOISearch.ts +91 -82
- package/lib/poi.ts +40 -0
- package/lib/runtime/useReleaseRuntime.ts +122 -90
- package/lib/search/SearchModal.tsx +478 -0
- package/lib/search/search.css +282 -0
- package/lib/search/types.ts +68 -0
- package/lib/search.ts +11 -0
- package/out/common/About.d.ts +6 -6
- package/out/common/About.d.ts.map +1 -1
- package/out/common/About.js +1 -1
- package/out/common/About.js.map +1 -1
- package/out/common/ClientOnly.d.ts +2 -11
- package/out/common/ClientOnly.d.ts.map +1 -1
- package/out/common/ClientOnly.js +1 -13
- package/out/common/ClientOnly.js.map +1 -1
- package/out/common/CopyButton.d.ts +9 -3
- package/out/common/CopyButton.d.ts.map +1 -1
- package/out/common/CopyButton.js.map +1 -1
- package/out/common/LoadingIndicator.d.ts +13 -5
- package/out/common/LoadingIndicator.d.ts.map +1 -1
- package/out/common/LoadingIndicator.js.map +1 -1
- package/out/common/PresetChips.d.ts +11 -8
- package/out/common/PresetChips.d.ts.map +1 -1
- package/out/common/PresetChips.js.map +1 -1
- package/out/common/confidence-tiers.d.ts +8 -7
- package/out/common/confidence-tiers.d.ts.map +1 -1
- package/out/common/confidence-tiers.js +7 -6
- package/out/common/confidence-tiers.js.map +1 -1
- package/out/common/cx.d.ts +3 -1
- package/out/common/cx.d.ts.map +1 -1
- package/out/common/cx.js +3 -1
- package/out/common/cx.js.map +1 -1
- package/out/common/text-tokens.d.ts +6 -11
- package/out/common/text-tokens.d.ts.map +1 -1
- package/out/common/text-tokens.js +6 -3
- package/out/common/text-tokens.js.map +1 -1
- package/out/common/useBuildInfo.d.ts +27 -0
- package/out/common/useBuildInfo.d.ts.map +1 -0
- package/out/common/useBuildInfo.js +32 -0
- package/out/common/useBuildInfo.js.map +1 -0
- package/out/common/useClipboard.d.ts +1 -3
- package/out/common/useClipboard.d.ts.map +1 -1
- package/out/common/useClipboard.js +2 -11
- package/out/common/useClipboard.js.map +1 -1
- package/out/common.d.ts +22 -0
- package/out/common.d.ts.map +1 -0
- package/out/common.js +15 -0
- package/out/common.js.map +1 -0
- package/out/index.d.ts +26 -16
- package/out/index.d.ts.map +1 -1
- package/out/index.js +21 -15
- package/out/index.js.map +1 -1
- package/out/map/AppIdentity.d.ts +46 -0
- package/out/map/AppIdentity.d.ts.map +1 -0
- package/out/map/AppIdentity.js +16 -0
- package/out/map/AppIdentity.js.map +1 -0
- package/out/map/CompareToggle.d.ts +8 -31
- package/out/map/CompareToggle.d.ts.map +1 -1
- package/out/map/CompareToggle.js +4 -1
- package/out/map/CompareToggle.js.map +1 -1
- package/out/map/DebugInfo.d.ts +27 -0
- package/out/map/DebugInfo.d.ts.map +1 -0
- package/out/map/DebugInfo.js +36 -0
- package/out/map/DebugInfo.js.map +1 -0
- package/out/map/Geocoder.d.ts +41 -30
- package/out/map/Geocoder.d.ts.map +1 -1
- package/out/map/Geocoder.js +23 -37
- package/out/map/Geocoder.js.map +1 -1
- package/out/map/GeocoderControls.d.ts +15 -44
- package/out/map/GeocoderControls.d.ts.map +1 -1
- package/out/map/GeocoderControls.js +250 -39
- package/out/map/GeocoderControls.js.map +1 -1
- package/out/map/GraticuleLayer.d.ts +30 -0
- package/out/map/GraticuleLayer.d.ts.map +1 -0
- package/out/map/GraticuleLayer.js +25 -0
- package/out/map/GraticuleLayer.js.map +1 -0
- package/out/map/MapCanvas.d.ts +26 -13
- package/out/map/MapCanvas.d.ts.map +1 -1
- package/out/map/MapCanvas.js +5 -2
- package/out/map/MapCanvas.js.map +1 -1
- package/out/map/MapChipRow.d.ts +4 -8
- package/out/map/MapChipRow.d.ts.map +1 -1
- package/out/map/MapChipRow.js.map +1 -1
- package/out/map/MapCompass.d.ts +14 -21
- package/out/map/MapCompass.d.ts.map +1 -1
- package/out/map/MapCompass.js +5 -1
- package/out/map/MapCompass.js.map +1 -1
- package/out/map/MapControlStack.d.ts +11 -10
- package/out/map/MapControlStack.d.ts.map +1 -1
- package/out/map/MapControlStack.js +4 -1
- package/out/map/MapControlStack.js.map +1 -1
- package/out/map/MapFooter.d.ts +5 -16
- package/out/map/MapFooter.d.ts.map +1 -1
- package/out/map/MapFooter.js +0 -14
- package/out/map/MapFooter.js.map +1 -1
- package/out/map/MapProgressBar.d.ts +10 -13
- package/out/map/MapProgressBar.d.ts.map +1 -1
- package/out/map/MapProgressBar.js.map +1 -1
- package/out/map/MapSearchBar.d.ts +16 -17
- package/out/map/MapSearchBar.d.ts.map +1 -1
- package/out/map/MapSearchBar.js +6 -0
- package/out/map/MapSearchBar.js.map +1 -1
- package/out/map/MapSheet.d.ts +15 -12
- package/out/map/MapSheet.d.ts.map +1 -1
- package/out/map/MapSheet.js +8 -12
- package/out/map/MapSheet.js.map +1 -1
- package/out/map/OverlayLayers.d.ts +8 -2
- package/out/map/OverlayLayers.d.ts.map +1 -1
- package/out/map/OverlayLayers.js +3 -3
- package/out/map/OverlayLayers.js.map +1 -1
- package/out/map/PlaceAutocomplete.d.ts +12 -21
- package/out/map/PlaceAutocomplete.d.ts.map +1 -1
- package/out/map/PlaceAutocomplete.js +2 -1
- package/out/map/PlaceAutocomplete.js.map +1 -1
- package/out/map/PlaceMarker.d.ts +10 -4
- package/out/map/PlaceMarker.d.ts.map +1 -1
- package/out/map/PlaceMarker.js +3 -1
- package/out/map/PlaceMarker.js.map +1 -1
- package/out/map/ResolvedPlaceLayers.d.ts +14 -15
- package/out/map/ResolvedPlaceLayers.d.ts.map +1 -1
- package/out/map/ResolvedPlaceLayers.js +1 -1
- package/out/map/ResolvedPlaceLayers.js.map +1 -1
- package/out/map/ResultCamera.d.ts +10 -31
- package/out/map/ResultCamera.d.ts.map +1 -1
- package/out/map/ResultCamera.js +3 -28
- package/out/map/ResultCamera.js.map +1 -1
- package/out/map/ResultOverlay.d.ts +14 -16
- package/out/map/ResultOverlay.d.ts.map +1 -1
- package/out/map/ResultOverlay.js +1 -2
- package/out/map/ResultOverlay.js.map +1 -1
- package/out/map/ResultPanel.d.ts +1 -20
- package/out/map/ResultPanel.d.ts.map +1 -1
- package/out/map/ResultPanel.js.map +1 -1
- package/out/map/VersionPicker.d.ts +7 -19
- package/out/map/VersionPicker.d.ts.map +1 -1
- package/out/map/VersionPicker.js +5 -2
- package/out/map/VersionPicker.js.map +1 -1
- package/out/map/fake-runtime.d.ts +9 -11
- package/out/map/fake-runtime.d.ts.map +1 -1
- package/out/map/fake-runtime.js +45 -19
- package/out/map/fake-runtime.js.map +1 -1
- package/out/map/geometry.d.ts +13 -34
- package/out/map/geometry.d.ts.map +1 -1
- package/out/map/geometry.js +9 -34
- package/out/map/geometry.js.map +1 -1
- package/out/map/graticule.d.ts +17 -0
- package/out/map/graticule.d.ts.map +1 -0
- package/out/map/graticule.js +67 -0
- package/out/map/graticule.js.map +1 -0
- package/out/map/map-debug.d.ts +4 -2
- package/out/map/map-debug.d.ts.map +1 -1
- package/out/map/map-debug.js +1 -1
- package/out/map/map-debug.js.map +1 -1
- package/out/map/place-render.d.ts +25 -45
- package/out/map/place-render.d.ts.map +1 -1
- package/out/map/place-render.js +4 -39
- package/out/map/place-render.js.map +1 -1
- package/out/map/types.d.ts +57 -113
- package/out/map/types.d.ts.map +1 -1
- package/out/map/types.js +1 -10
- package/out/map/types.js.map +1 -1
- package/out/map/useCompareState.d.ts +5 -4
- package/out/map/useCompareState.d.ts.map +1 -1
- package/out/map/useCompareState.js +3 -3
- package/out/map/useCompareState.js.map +1 -1
- package/out/map/useGeocode.d.ts +5 -3
- package/out/map/useGeocode.d.ts.map +1 -1
- package/out/map/useGeocode.js +4 -4
- package/out/map/useGeocode.js.map +1 -1
- package/out/map/useMapBearing.d.ts +11 -11
- package/out/map/useMapBearing.d.ts.map +1 -1
- package/out/map/useMapBearing.js +6 -11
- package/out/map/useMapBearing.js.map +1 -1
- package/out/map/useMapLabelPick.d.ts +4 -14
- package/out/map/useMapLabelPick.d.ts.map +1 -1
- package/out/map/useMapLabelPick.js +21 -30
- package/out/map/useMapLabelPick.js.map +1 -1
- package/out/map/useMapPlaceRender.d.ts +3 -7
- package/out/map/useMapPlaceRender.d.ts.map +1 -1
- package/out/map/useMapPlaceRender.js +2 -6
- package/out/map/useMapPlaceRender.js.map +1 -1
- package/out/map/usePlaceAutocomplete.d.ts +30 -28
- package/out/map/usePlaceAutocomplete.d.ts.map +1 -1
- package/out/map/usePlaceAutocomplete.js +6 -33
- package/out/map/usePlaceAutocomplete.js.map +1 -1
- package/out/map.d.ts +67 -0
- package/out/map.d.ts.map +1 -0
- package/out/map.js +45 -0
- package/out/map.js.map +1 -0
- package/out/pipeline/CandidatePicker.d.ts +12 -2
- package/out/pipeline/CandidatePicker.d.ts.map +1 -1
- package/out/pipeline/CandidatePicker.js +1 -1
- package/out/pipeline/CandidatePicker.js.map +1 -1
- package/out/pipeline/ConfidenceCell.d.ts +2 -2
- package/out/pipeline/ConfidenceCell.d.ts.map +1 -1
- package/out/pipeline/ConfidenceCell.js +1 -1
- package/out/pipeline/FailureDiagnostic.d.ts +8 -2
- package/out/pipeline/FailureDiagnostic.d.ts.map +1 -1
- package/out/pipeline/FailureDiagnostic.js +3 -0
- package/out/pipeline/FailureDiagnostic.js.map +1 -1
- package/out/pipeline/PipelineExplorer.d.ts +6 -2
- package/out/pipeline/PipelineExplorer.d.ts.map +1 -1
- package/out/pipeline/PipelineExplorer.js +1 -1
- package/out/pipeline/PipelineExplorer.js.map +1 -1
- package/out/pipeline/QueryForm.d.ts +5 -2
- package/out/pipeline/QueryForm.d.ts.map +1 -1
- package/out/pipeline/QueryForm.js.map +1 -1
- package/out/pipeline/ResolvedPlace.d.ts +1 -1
- package/out/pipeline/ResolvedPlace.d.ts.map +1 -1
- package/out/pipeline/SpanHighlight.d.ts +4 -3
- package/out/pipeline/SpanHighlight.d.ts.map +1 -1
- package/out/pipeline/SpanHighlight.js +3 -2
- package/out/pipeline/SpanHighlight.js.map +1 -1
- package/out/pipeline/TimingPanel.d.ts +1 -1
- package/out/pipeline/TreeView.d.ts +1 -1
- package/out/pipeline/TreeView.js.map +1 -1
- package/out/pipeline/copy.d.ts +1 -1
- package/out/pipeline/copy.d.ts.map +1 -1
- package/out/pipeline/copy.js +4 -3
- package/out/pipeline/copy.js.map +1 -1
- package/out/pipeline/presets.d.ts +5 -4
- package/out/pipeline/presets.d.ts.map +1 -1
- package/out/pipeline/presets.js +15 -13
- package/out/pipeline/presets.js.map +1 -1
- package/out/pipeline/types.d.ts +20 -17
- package/out/pipeline/types.d.ts.map +1 -1
- package/out/pipeline/types.js +2 -4
- package/out/pipeline/types.js.map +1 -1
- package/out/pipeline/useParsePipeline.d.ts +14 -9
- package/out/pipeline/useParsePipeline.d.ts.map +1 -1
- package/out/pipeline/useParsePipeline.js +7 -8
- package/out/pipeline/useParsePipeline.js.map +1 -1
- package/out/pipeline.d.ts +33 -0
- package/out/pipeline.d.ts.map +1 -0
- package/out/pipeline.js +21 -0
- package/out/pipeline.js.map +1 -0
- package/out/poi/AbstainPanel.d.ts +1 -1
- package/out/poi/LiveResultsBlock.d.ts +2 -1
- package/out/poi/LiveResultsBlock.d.ts.map +1 -1
- package/out/poi/LiveResultsBlock.js.map +1 -1
- package/out/poi/POIExplorer.d.ts +22 -12
- package/out/poi/POIExplorer.d.ts.map +1 -1
- package/out/poi/POIExplorer.js +11 -10
- package/out/poi/POIExplorer.js.map +1 -1
- package/out/poi/QueryInput.d.ts +1 -1
- package/out/poi/SubjectPanel.d.ts +2 -2
- package/out/poi/SubjectPanel.d.ts.map +1 -1
- package/out/poi/SubjectPanel.js +2 -1
- package/out/poi/SubjectPanel.js.map +1 -1
- package/out/poi/runtime.d.ts +5 -14
- package/out/poi/runtime.d.ts.map +1 -1
- package/out/poi/runtime.js +14 -16
- package/out/poi/runtime.js.map +1 -1
- package/out/poi/types.d.ts +53 -45
- package/out/poi/types.d.ts.map +1 -1
- package/out/poi/types.js +2 -4
- package/out/poi/types.js.map +1 -1
- package/out/poi/usePOISearch.d.ts +30 -17
- package/out/poi/usePOISearch.d.ts.map +1 -1
- package/out/poi/usePOISearch.js +48 -64
- package/out/poi/usePOISearch.js.map +1 -1
- package/out/poi.d.ts +23 -0
- package/out/poi.d.ts.map +1 -0
- package/out/poi.js +15 -0
- package/out/poi.js.map +1 -0
- package/out/runtime/useReleaseRuntime.d.ts +63 -74
- package/out/runtime/useReleaseRuntime.d.ts.map +1 -1
- package/out/runtime/useReleaseRuntime.js +31 -32
- package/out/runtime/useReleaseRuntime.js.map +1 -1
- package/out/{runtime/index.d.ts → runtime.d.ts} +1 -1
- package/out/runtime.d.ts.map +1 -0
- package/out/{runtime/index.js → runtime.js} +1 -1
- package/out/runtime.js.map +1 -0
- package/out/search/SearchModal.d.ts +40 -0
- package/out/search/SearchModal.d.ts.map +1 -0
- package/out/search/SearchModal.js +255 -0
- package/out/search/SearchModal.js.map +1 -0
- package/out/search/types.d.ts +65 -0
- package/out/search/types.d.ts.map +1 -0
- package/out/search/types.js +13 -0
- package/out/search/types.js.map +1 -0
- package/out/search.d.ts +11 -0
- package/out/search.d.ts.map +1 -0
- package/out/search.js +9 -0
- package/out/search.js.map +1 -0
- package/package.json +73 -165
- package/styles.css +482 -266
- package/tokens/index.css +24 -6
- package/tokens/tokens.json +114 -6
- package/lib/common/index.ts +0 -22
- package/lib/map/BackendControl.tsx +0 -51
- package/lib/map/index.ts +0 -95
- package/lib/pipeline/index.ts +0 -36
- package/lib/poi/index.ts +0 -39
- package/out/common/index.d.ts +0 -22
- package/out/common/index.d.ts.map +0 -1
- package/out/common/index.js +0 -15
- package/out/common/index.js.map +0 -1
- package/out/map/BackendControl.d.ts +0 -32
- package/out/map/BackendControl.d.ts.map +0 -1
- package/out/map/BackendControl.js +0 -8
- package/out/map/BackendControl.js.map +0 -1
- package/out/map/index.d.ts +0 -69
- package/out/map/index.d.ts.map +0 -1
- package/out/map/index.js +0 -46
- package/out/map/index.js.map +0 -1
- package/out/pipeline/index.d.ts +0 -33
- package/out/pipeline/index.d.ts.map +0 -1
- package/out/pipeline/index.js +0 -21
- package/out/pipeline/index.js.map +0 -1
- package/out/poi/index.d.ts +0 -23
- package/out/poi/index.d.ts.map +0 -1
- package/out/poi/index.js +0 -15
- package/out/poi/index.js.map +0 -1
- package/out/runtime/index.d.ts.map +0 -1
- package/out/runtime/index.js.map +0 -1
- package/styleframe.config.ts +0 -329
- package/vitest.node.config.ts +0 -20
- /package/lib/{runtime/index.ts → runtime.ts} +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
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
|
|
10
|
+
* `aria-activedescendant` identifies the selected hit. The component owns no data access: `search` is
|
|
11
|
+
* passed in. Recent queries are a per-viewer convenience in `localStorage`; the modal renders the same
|
|
12
|
+
* without them.
|
|
13
|
+
*/
|
|
14
|
+
import { stringifyJSON, tryParsingJSON } from "@mailwoman/core/json";
|
|
15
|
+
import { useEffect, useId, useMemo, useRef, useState } from "react";
|
|
16
|
+
import { useDebouncedValue } from "#common/useDebouncedValue";
|
|
17
|
+
const DEBOUNCE_MS = 150;
|
|
18
|
+
/**
|
|
19
|
+
* How long a request runs before the live region announces that the index is loading.
|
|
20
|
+
*/
|
|
21
|
+
const LOADING_ANNOUNCE_MS = 300;
|
|
22
|
+
const MAX_QUERY_LENGTH = 200;
|
|
23
|
+
const DEFAULT_CATEGORY = "Documentation";
|
|
24
|
+
const RECENT_LIMIT = 5;
|
|
25
|
+
/**
|
|
26
|
+
* The site-relative link for a hit.
|
|
27
|
+
*/
|
|
28
|
+
export function hitHref(hit) {
|
|
29
|
+
return hit.anchor === "" ? hit.url : `${hit.url}#${hit.anchor}`;
|
|
30
|
+
}
|
|
31
|
+
function statusText(status) {
|
|
32
|
+
if (status.kind === "failed")
|
|
33
|
+
return "Search is unavailable. Try again in a moment.";
|
|
34
|
+
if (status.kind === "loading")
|
|
35
|
+
return "Loading the search index…";
|
|
36
|
+
if (status.kind === "idle")
|
|
37
|
+
return "";
|
|
38
|
+
const { response } = status;
|
|
39
|
+
if (!response.hits.length)
|
|
40
|
+
return `No results for “${response.query}”.`;
|
|
41
|
+
return response.hits.length === 1 ? "1 result." : `${response.hits.length} results.`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The ranges of `text` that match a query token, case-insensitively, for emphasis in a title.
|
|
45
|
+
*/
|
|
46
|
+
function tokenRanges(text, query) {
|
|
47
|
+
const lower = text.toLowerCase();
|
|
48
|
+
const ranges = [];
|
|
49
|
+
for (const token of new Set(query
|
|
50
|
+
.toLowerCase()
|
|
51
|
+
.split(/\s+/)
|
|
52
|
+
.filter((part) => part.length >= 2))) {
|
|
53
|
+
for (let index = lower.indexOf(token); index >= 0; index = lower.indexOf(token, index + token.length)) {
|
|
54
|
+
ranges.push([index, index + token.length]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return ranges.toSorted((a, b) => a[0] - b[0]);
|
|
58
|
+
}
|
|
59
|
+
function emphasized(text, ranges) {
|
|
60
|
+
const parts = [];
|
|
61
|
+
let cursor = 0;
|
|
62
|
+
for (const [start, end] of ranges) {
|
|
63
|
+
if (start < cursor)
|
|
64
|
+
continue;
|
|
65
|
+
parts.push(text.slice(cursor, start), _jsx("mark", { children: text.slice(start, end) }, start));
|
|
66
|
+
cursor = end;
|
|
67
|
+
}
|
|
68
|
+
parts.push(text.slice(cursor));
|
|
69
|
+
return parts;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The deepest heading of a hit is its title.
|
|
73
|
+
* The headings between the category and it are its path.
|
|
74
|
+
*/
|
|
75
|
+
function headings(hit) {
|
|
76
|
+
const named = hit.hierarchy.slice(1).filter((entry) => entry !== null);
|
|
77
|
+
const title = named.at(-1) ?? hit.url;
|
|
78
|
+
return { title, path: named.slice(0, -1) };
|
|
79
|
+
}
|
|
80
|
+
function readRecent(key) {
|
|
81
|
+
if (!key)
|
|
82
|
+
return [];
|
|
83
|
+
try {
|
|
84
|
+
const stored = tryParsingJSON(globalThis.localStorage.getItem(key));
|
|
85
|
+
return Array.isArray(stored) ? stored.filter((entry) => typeof entry === "string") : [];
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function writeRecent(key, entries) {
|
|
92
|
+
if (!key)
|
|
93
|
+
return;
|
|
94
|
+
try {
|
|
95
|
+
globalThis.localStorage.setItem(key, stringifyJSON(entries));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Storage can be absent or blocked.
|
|
99
|
+
// The modal works without it.
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const SearchIcon = () => (_jsxs("svg", { className: "mw-search__icon", viewBox: "0 0 20 20", "aria-hidden": "true", focusable: "false", children: [_jsx("circle", { cx: "8.5", cy: "8.5", r: "5.5", fill: "none", stroke: "currentColor", strokeWidth: "2" }), _jsx("path", { d: "M13 13l4.5 4.5", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" })] }));
|
|
103
|
+
const Spinner = () => (_jsx("svg", { className: "mw-search__icon mw-search__icon--spinning", viewBox: "0 0 20 20", "aria-hidden": "true", focusable: "false", children: _jsx("circle", { cx: "10", cy: "10", r: "7", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeDasharray: "22 22", strokeLinecap: "round" }) }));
|
|
104
|
+
export function SearchModal({ open, onClose, onNavigate, search, recentKey }) {
|
|
105
|
+
const dialogRef = useRef(null);
|
|
106
|
+
const inputRef = useRef(null);
|
|
107
|
+
const baseID = useId();
|
|
108
|
+
const listboxID = `${baseID}-listbox`;
|
|
109
|
+
const [query, setQuery] = useState("");
|
|
110
|
+
const [settled, setSettled] = useState({ kind: "idle" });
|
|
111
|
+
const [selected, setSelected] = useState(0);
|
|
112
|
+
const [loading, setLoading] = useState(false);
|
|
113
|
+
const [recent, setRecent] = useState([]);
|
|
114
|
+
const trimmed = query.trim().slice(0, MAX_QUERY_LENGTH);
|
|
115
|
+
const debounced = useDebouncedValue(trimmed, DEBOUNCE_MS);
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
const dialog = dialogRef.current;
|
|
118
|
+
if (!dialog)
|
|
119
|
+
return;
|
|
120
|
+
if (open && !dialog.open) {
|
|
121
|
+
dialog.showModal();
|
|
122
|
+
inputRef.current?.focus();
|
|
123
|
+
setRecent(readRecent(recentKey));
|
|
124
|
+
}
|
|
125
|
+
else if (!open && dialog.open) {
|
|
126
|
+
dialog.close();
|
|
127
|
+
}
|
|
128
|
+
}, [open, recentKey]);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (debounced === "")
|
|
131
|
+
return;
|
|
132
|
+
// The abort of the earlier request keeps a late response from replacing newer results.
|
|
133
|
+
const controller = new AbortController();
|
|
134
|
+
const loadingTimer = setTimeout(() => setLoading(true), LOADING_ANNOUNCE_MS);
|
|
135
|
+
search(debounced, controller.signal).then((response) => {
|
|
136
|
+
if (controller.signal.aborted)
|
|
137
|
+
return;
|
|
138
|
+
clearTimeout(loadingTimer);
|
|
139
|
+
setLoading(false);
|
|
140
|
+
setSettled({ kind: "results", response });
|
|
141
|
+
setSelected(0);
|
|
142
|
+
}, () => {
|
|
143
|
+
if (controller.signal.aborted)
|
|
144
|
+
return;
|
|
145
|
+
clearTimeout(loadingTimer);
|
|
146
|
+
setLoading(false);
|
|
147
|
+
setSettled({ kind: "failed" });
|
|
148
|
+
});
|
|
149
|
+
return () => {
|
|
150
|
+
clearTimeout(loadingTimer);
|
|
151
|
+
setLoading(false);
|
|
152
|
+
controller.abort();
|
|
153
|
+
};
|
|
154
|
+
}, [debounced, search]);
|
|
155
|
+
// An empty query shows no results, whatever the last settled response was.
|
|
156
|
+
const status = debounced === "" ? { kind: "idle" } : settled;
|
|
157
|
+
const response = status.kind === "results" ? status.response : undefined;
|
|
158
|
+
// The announcement reports a slow request while the last results stay on screen.
|
|
159
|
+
const announced = loading && debounced !== "" ? { kind: "loading" } : status;
|
|
160
|
+
const groups = useMemo(() => {
|
|
161
|
+
const hits = response?.hits ?? [];
|
|
162
|
+
const byCategory = new Map();
|
|
163
|
+
for (const hit of hits) {
|
|
164
|
+
const category = hit.hierarchy[0] ?? DEFAULT_CATEGORY;
|
|
165
|
+
byCategory.set(category, [...(byCategory.get(category) ?? []), hit]);
|
|
166
|
+
}
|
|
167
|
+
// Options are numbered in display order so the arrow keys follow what the reader sees.
|
|
168
|
+
let order = 0;
|
|
169
|
+
return [...byCategory].map(([category, entries]) => ({
|
|
170
|
+
category,
|
|
171
|
+
entries: entries.map((hit) => ({ hit, order: order++ })),
|
|
172
|
+
}));
|
|
173
|
+
}, [response]);
|
|
174
|
+
const ordered = groups.flatMap((group) => group.entries);
|
|
175
|
+
const optionID = (order) => `${baseID}-option-${order}`;
|
|
176
|
+
const emphasis = response?.corrected ?? debounced;
|
|
177
|
+
function remember(text) {
|
|
178
|
+
const entries = [text, ...recent.filter((entry) => entry !== text)].slice(0, RECENT_LIMIT);
|
|
179
|
+
setRecent(entries);
|
|
180
|
+
writeRecent(recentKey, entries);
|
|
181
|
+
}
|
|
182
|
+
function forget(text) {
|
|
183
|
+
const entries = recent.filter((entry) => entry !== text);
|
|
184
|
+
setRecent(entries);
|
|
185
|
+
writeRecent(recentKey, entries);
|
|
186
|
+
}
|
|
187
|
+
function go(hit) {
|
|
188
|
+
const href = hitHref(hit);
|
|
189
|
+
if (trimmed !== "") {
|
|
190
|
+
remember(trimmed);
|
|
191
|
+
}
|
|
192
|
+
onClose();
|
|
193
|
+
if (onNavigate) {
|
|
194
|
+
onNavigate(href);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
globalThis.location.assign(href);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function onKeyDown(event) {
|
|
201
|
+
// A key that commits or edits an IME composition is not a command.
|
|
202
|
+
if (event.nativeEvent.isComposing)
|
|
203
|
+
return;
|
|
204
|
+
if (!ordered.length)
|
|
205
|
+
return;
|
|
206
|
+
const last = ordered.length - 1;
|
|
207
|
+
const next = event.key === "ArrowDown"
|
|
208
|
+
? selected === last
|
|
209
|
+
? 0
|
|
210
|
+
: selected + 1
|
|
211
|
+
: event.key === "ArrowUp"
|
|
212
|
+
? selected === 0
|
|
213
|
+
? last
|
|
214
|
+
: selected - 1
|
|
215
|
+
: event.key === "Home"
|
|
216
|
+
? 0
|
|
217
|
+
: event.key === "End"
|
|
218
|
+
? last
|
|
219
|
+
: undefined;
|
|
220
|
+
if (next !== undefined) {
|
|
221
|
+
event.preventDefault();
|
|
222
|
+
setSelected(next);
|
|
223
|
+
document.getElementById(optionID(next))?.scrollIntoView({ block: "nearest" });
|
|
224
|
+
}
|
|
225
|
+
else if (event.key === "Enter") {
|
|
226
|
+
event.preventDefault();
|
|
227
|
+
// The hits on screen answer an earlier query until the debounce settles.
|
|
228
|
+
if (trimmed !== debounced)
|
|
229
|
+
return;
|
|
230
|
+
const entry = ordered[selected];
|
|
231
|
+
if (entry) {
|
|
232
|
+
go(entry.hit);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
function onDialogClick(event) {
|
|
237
|
+
// A click whose target is the dialog element itself landed on the backdrop.
|
|
238
|
+
if (event.target === event.currentTarget) {
|
|
239
|
+
event.currentTarget.close();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
function onLinkClick(event, hit) {
|
|
243
|
+
if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0)
|
|
244
|
+
return;
|
|
245
|
+
event.preventDefault();
|
|
246
|
+
go(hit);
|
|
247
|
+
}
|
|
248
|
+
const showRecent = trimmed === "" && recent.length > 0;
|
|
249
|
+
const noResults = response !== undefined && response.hits.length === 0;
|
|
250
|
+
return (_jsxs("dialog", { ref: dialogRef, className: "mw-search", "aria-label": "Search the documentation", onClose: onClose, onClick: onDialogClick, children: [_jsxs("form", { role: "search", className: "mw-search__form", onSubmit: (event) => event.preventDefault(), children: [_jsxs("label", { className: "mw-search__field", children: [loading ? _jsx(Spinner, {}) : _jsx(SearchIcon, {}), _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 })] }), _jsx("button", { type: "button", className: "mw-search__cancel", onClick: () => dialogRef.current?.close(), children: "Cancel" })] }), response?.corrected != null && (_jsxs("p", { className: "mw-search__corrected", children: ["Showing results for \u201C", response.corrected, "\u201D"] })), _jsxs("div", { className: "mw-search__body", children: [showRecent && (_jsxs("section", { className: "mw-search__recent", "aria-label": "Recent searches", children: [_jsx("div", { className: "mw-search__category", children: "Recent" }), _jsx("ul", { className: "mw-search__recent-list", children: recent.map((entry) => (_jsxs("li", { className: "mw-search__recent-item", children: [_jsx("button", { type: "button", className: "mw-search__recent-query", onClick: () => setQuery(entry), children: entry }), _jsx("button", { type: "button", className: "mw-search__recent-remove", "aria-label": `Remove “${entry}” from recent searches`, onClick: () => forget(entry), children: "\u00D7" })] }, entry))) })] })), noResults && (_jsxs("p", { className: "mw-search__empty", children: ["No results for \u201C", response.query, "\u201D. Try a different spelling or a shorter query."] })), _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 }) => {
|
|
251
|
+
const { title, path } = headings(hit);
|
|
252
|
+
return (_jsxs("a", { id: optionID(order), role: "option", "aria-selected": order === selected, href: hitHref(hit), tabIndex: -1, className: `mw-search__option ${hit.anchor === "" ? "mw-search__option--page" : "mw-search__option--section"}`, onPointerMove: () => setSelected(order), onClick: (event) => onLinkClick(event, hit), children: [path.length > 0 && _jsx("span", { className: "mw-search__path", children: path.join(" › ") }), _jsx("span", { className: "mw-search__title", children: emphasized(title, tokenRanges(title, emphasis)) }), hit.snippet !== "" && (_jsx("span", { className: "mw-search__snippet", children: emphasized(hit.snippet, hit.highlights) }))] }, order));
|
|
253
|
+
})] }, group.category))) })] }), _jsxs("footer", { className: "mw-search__footer", children: [_jsx("p", { "aria-live": "polite", className: "mw-search__status", children: statusText(announced) }), _jsxs("ul", { className: "mw-search__hints", "aria-label": "Keyboard shortcuts", children: [_jsxs("li", { children: [_jsx("kbd", { children: "\u21B5" }), " open"] }), _jsxs("li", { children: [_jsx("kbd", { children: "\u2191" }), _jsx("kbd", { children: "\u2193" }), " move"] }), _jsxs("li", { children: [_jsx("kbd", { children: "esc" }), " close"] })] })] })] }));
|
|
254
|
+
}
|
|
255
|
+
//# 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,65 @@
|
|
|
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
|
+
* It is `null` when no token was.
|
|
61
|
+
*/
|
|
62
|
+
corrected: string | null;
|
|
63
|
+
hits: SearchHit[];
|
|
64
|
+
}
|
|
65
|
+
//# 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;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,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"}
|
package/out/search.d.ts
ADDED
|
@@ -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"}
|