import { mergeCSSClasses } from "@blocknote/core"; import { JSX, useMemo } from "react"; import { useComponentsContext } from "../../editor/ComponentsContext.js"; import { useDictionary } from "../../i18n/dictionary.js"; import { DefaultReactSuggestionItem, SuggestionMenuProps } from "./types.js"; export function SuggestionMenu( props: SuggestionMenuProps, ) { const Components = useComponentsContext()!; const dict = useDictionary(); const { items, loadingState, selectedIndex, onItemClick } = props; const loader = loadingState === "loading-initial" || loadingState === "loading" ? ( ) : null; const renderedItems = useMemo(() => { let currentGroup: string | undefined = undefined; const renderedItems = []; for (let i = 0; i < items.length; i++) { const item = items[i]; if (item.group !== currentGroup) { currentGroup = item.group; renderedItems.push( {currentGroup} , ); } renderedItems.push( onItemClick?.(item)} />, ); } return renderedItems; }, [Components, items, onItemClick, selectedIndex]); return ( {renderedItems} {renderedItems.length === 0 && (props.loadingState === "loading" || props.loadingState === "loaded") && ( {dict.suggestion_menu.no_items_title} )} {loader} ); }