/* jsxImportSource: react */ import { useState, useCallback, useRef } from 'react'; import { createPortal } from 'react-dom'; import * as docSearchReact from '@docsearch/react'; import * as CONFIG from '../../config'; import '@docsearch/css/dist/style.css'; import './Search.css'; const { DocSearchModal, useDocSearchKeyboardEvents } = docSearchReact.default; export default function Search() { const [isOpen, setIsOpen] = useState(false); const searchButtonRef = useRef(); const [initialQuery, setInitialQuery] = useState(null); const onOpen = useCallback(() => { setIsOpen(true); }, [setIsOpen]); const onClose = useCallback(() => { setIsOpen(false); }, [setIsOpen]); const onInput = useCallback( (e) => { setIsOpen(true); setInitialQuery(e.key); }, [setIsOpen, setInitialQuery] ); useDocSearchKeyboardEvents({ isOpen, onOpen, onClose, onInput, searchButtonRef, }); return ( <> {isOpen && createPortal( { return items.map((item) => { // We transform the absolute URL into a relative URL to // work better on localhost, preview URLS. const a = document.createElement('a'); a.href = item.url; const hash = a.hash === '#overview' ? '' : a.hash; return { ...item, url: `${a.pathname}${hash}`, }; }); }} />, document.body )} ); }