File size: 871 Bytes
a8b3f00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { MenuOption } from '@lexical/react/LexicalTypeaheadMenuPlugin'
import { Fragment } from 'react'

/**
 * Corresponds to the `MenuRenderFn` type from `@lexical/react/LexicalTypeaheadMenuPlugin`.
 */
type MenuOptionRenderProps = {
  isSelected: boolean
  onSelect: () => void
  onSetHighlight: () => void
  queryString: string | null
}

export class PickerBlockMenuOption extends MenuOption {
  public group?: string

  constructor(
    private data: {
      key: string
      group?: string
      onSelect?: () => void
      render: (menuRenderProps: MenuOptionRenderProps) => JSX.Element
    },
  ) {
    super(data.key)
    this.group = data.group
  }

  public onSelectMenuOption = () => this.data.onSelect?.()
  public renderMenuOption = (menuRenderProps: MenuOptionRenderProps) => <Fragment key={this.data.key}>{this.data.render(menuRenderProps)}</Fragment>
}