on-blur-block.tsx 733 B

123456789101112131415161718192021222324252627282930313233343536
  1. import type { FC } from 'react'
  2. import { useEffect } from 'react'
  3. import {
  4. BLUR_COMMAND,
  5. COMMAND_PRIORITY_EDITOR,
  6. } from 'lexical'
  7. import { mergeRegister } from '@lexical/utils'
  8. import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'
  9. type OnBlurBlockProps = {
  10. onBlur?: () => void
  11. }
  12. const OnBlurBlock: FC<OnBlurBlockProps> = ({
  13. onBlur,
  14. }) => {
  15. const [editor] = useLexicalComposerContext()
  16. useEffect(() => {
  17. return mergeRegister(
  18. editor.registerCommand(
  19. BLUR_COMMAND,
  20. () => {
  21. if (onBlur)
  22. onBlur()
  23. return true
  24. },
  25. COMMAND_PRIORITY_EDITOR,
  26. ),
  27. )
  28. }, [editor, onBlur])
  29. return null
  30. }
  31. export default OnBlurBlock