@terrible-lexical/react
Version:
This package provides Lexical components and hooks for React applications.
37 lines (31 loc) • 1.02 kB
text/typescript
/**
* 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;
}