import React, { Dispatch, SetStateAction, useEffect, useRef, useState, } from 'react'; import { SearchIcon } from '@blocksuite/icons'; import { StyledInputContent, StyledLabel } from './style'; import { Command } from 'cmdk'; import { useAppState } from '@/providers/app-state-provider'; import { useTranslation } from '@affine/i18n'; export const Input = (props: { query: string; setQuery: Dispatch>; setLoading: Dispatch>; }) => { const [isComposition, setIsComposition] = useState(false); const [inputValue, setInputValue] = useState(''); const inputRef = useRef(null); const { currentWorkspace } = useAppState(); const { t } = useTranslation(); useEffect(() => { inputRef.current?.addEventListener( 'blur', () => { inputRef.current?.focus(); }, true ); return inputRef.current?.focus(); }, [inputRef]); useEffect(() => { return setInputValue(props.query); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( { setIsComposition(true); }} onCompositionEnd={e => { props.setQuery(e.data); setIsComposition(false); if (!props.query) { props.setLoading(true); } }} onValueChange={str => { setInputValue(str); if (!isComposition) { props.setQuery(str); if (!props.query) { props.setLoading(true); } } }} onKeyDown={(e: React.KeyboardEvent) => { if (e.key === 'a' && e.metaKey) { e.stopPropagation(); inputRef.current?.select(); return; } if (isComposition) { if ( e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' ) { e.stopPropagation(); } } }} placeholder={ currentWorkspace?.isPublish ? t('Quick search placeholder2', { workspace: currentWorkspace?.blocksuiteWorkspace?.meta.name, }) : t('Quick search placeholder') } /> ); };