UNPKG

@terrible-lexical/react

Version:

This package provides Lexical components and hooks for React applications.

37 lines (31 loc) 1.02 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ import type {LexicalEditor} from 'terrible-lexical'; import {$isRootTextContentEmptyCurry} from '@terrible-lexical/text/src'; import {useState} from 'react'; import useLayoutEffect from '@terrible-lexical/shared/src/useLayoutEffect'; export function useLexicalIsTextContentEmpty( editor: LexicalEditor, trim?: boolean, ): boolean { const [isEmpty, setIsEmpty] = useState( editor .getEditorState() .read($isRootTextContentEmptyCurry(editor.isComposing(), trim)), ); useLayoutEffect(() => { return editor.registerUpdateListener(({editorState}) => { const isComposing = editor.isComposing(); const currentIsEmpty = editorState.read( $isRootTextContentEmptyCurry(isComposing, trim), ); setIsEmpty(currentIsEmpty); }); }, [editor, trim]); return isEmpty; }