import { memo } from 'react' import { MenuOption } from '@lexical/react/LexicalTypeaheadMenuPlugin' export class PromptOption extends MenuOption { title: string icon?: JSX.Element keywords: Array keyboardShortcut?: string onSelect: (queryString: string) => void disabled?: boolean constructor( title: string, options: { icon?: JSX.Element keywords?: Array keyboardShortcut?: string onSelect: (queryString: string) => void disabled?: boolean }, ) { super(title) this.title = title this.keywords = options.keywords || [] this.icon = options.icon this.keyboardShortcut = options.keyboardShortcut this.onSelect = options.onSelect.bind(this) this.disabled = options.disabled } } type PromptMenuItemMenuItemProps = { startIndex: number index: number isSelected: boolean onClick: (index: number, option: PromptOption) => void onMouseEnter: (index: number, option: PromptOption) => void option: PromptOption } export const PromptMenuItem = memo(({ startIndex, index, isSelected, onClick, onMouseEnter, option, }: PromptMenuItemMenuItemProps) => { return (
onMouseEnter(index + startIndex, option)} onClick={() => onClick(index + startIndex, option)}> {option.icon}
{option.title}
) }) PromptMenuItem.displayName = 'PromptMenuItem'