]> BookStack Code Mirror - bookstack/blobdiff - resources/js/wysiwyg/helpers.ts
Lexical: Added a range of format buttons
[bookstack] / resources / js / wysiwyg / helpers.ts
index 720f3c6d5dab9b820eee5974c2f405c6cc3c5142..737666ffa91037b533530ecd6ac4f11f2d2b1272 100644 (file)
@@ -1,7 +1,15 @@
-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) {
@@ -23,6 +31,20 @@ export function selectionContainsNodeType(selection: BaseSelection|null, matcher
     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();