-import {$createParagraphNode, $getSelection, BaseSelection, LexicalEditor} from "lexical";
+import {
+ $createParagraphNode,
+ $getSelection,
+ $isTextNode,
+ BaseSelection,
+ ElementFormatType,
+ LexicalEditor, TextFormatType
+} from "lexical";
import {LexicalElementNodeCreator, LexicalNodeMatcher} from "./nodes";
import {$getNearestBlockElementAncestorOrThrow} from "@lexical/utils";
import {$setBlocksType} from "@lexical/selection";
+import {TextNodeThemeClasses} from "lexical/LexicalEditor";
export function selectionContainsNodeType(selection: BaseSelection|null, matcher: LexicalNodeMatcher): boolean {
if (!selection) {
return false;
}
+export function selectionContainsTextFormat(selection: BaseSelection|null, format: TextFormatType): boolean {
+ if (!selection) {
+ return false;
+ }
+
+ for (const node of selection.getNodes()) {
+ if ($isTextNode(node) && node.hasFormat(format)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
export function toggleSelectionBlockNodeType(editor: LexicalEditor, matcher: LexicalNodeMatcher, creator: LexicalElementNodeCreator) {
editor.update(() => {
const selection = $getSelection();