math-dropdown.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { ListGroupItem } from 'react-bootstrap'
  2. import { ToolbarButtonMenu } from './button-menu'
  3. import { emitToolbarEvent } from '../../extensions/toolbar/utils/analytics'
  4. import MaterialIcon from '../../../../shared/components/material-icon'
  5. import { useTranslation } from 'react-i18next'
  6. import { useCodeMirrorViewContext } from '../codemirror-editor'
  7. import {
  8. wrapInDisplayMath,
  9. wrapInInlineMath,
  10. } from '../../extensions/toolbar/commands'
  11. export function MathDropdown() {
  12. const { t } = useTranslation()
  13. const view = useCodeMirrorViewContext()
  14. return (
  15. <ToolbarButtonMenu
  16. id="toolbar-math"
  17. label={t('toolbar_insert_math')}
  18. icon="calculate"
  19. materialIcon
  20. >
  21. <ListGroupItem
  22. aria-label={t('toolbar_insert_inline_math')}
  23. onClick={event => {
  24. emitToolbarEvent(view, 'toolbar-inline-math')
  25. event.preventDefault()
  26. wrapInInlineMath(view)
  27. view.focus()
  28. }}
  29. >
  30. <MaterialIcon type="123" />
  31. <span>{t('toolbar_insert_inline_math')}</span>
  32. </ListGroupItem>
  33. <ListGroupItem
  34. aria-label={t('toolbar_insert_display_math')}
  35. onClick={event => {
  36. emitToolbarEvent(view, 'toolbar-display-math')
  37. event.preventDefault()
  38. wrapInDisplayMath(view)
  39. view.focus()
  40. }}
  41. >
  42. <MaterialIcon type="view_day" />
  43. <span>{t('toolbar_insert_display_math')}</span>
  44. </ListGroupItem>
  45. </ToolbarButtonMenu>
  46. )
  47. }