import {$setInsetForSelection} from "../utils/lists";
import {$isListItemNode} from "@lexical/list";
import {$isDetailsNode, DetailsNode} from "@lexical/rich-text/LexicalDetailsNode";
+import {$isDiagramNode} from "../utils/diagrams";
function isSingleSelectedNode(nodes: LexicalNode[]): boolean {
if (nodes.length === 1) {
const node = nodes[0];
- if ($isDecoratorNode(node) || $isImageNode(node) || $isMediaNode(node)) {
+ if ($isDecoratorNode(node) || $isImageNode(node) || $isMediaNode(node) || $isDiagramNode(node)) {
return true;
}
}
import {EditorDecorator} from "../framework/decorator";
import {EditorUiContext} from "../framework/core";
-import {BaseSelection} from "lexical";
+import {BaseSelection, CLICK_COMMAND, COMMAND_PRIORITY_NORMAL} from "lexical";
import {DiagramNode} from "@lexical/rich-text/LexicalDiagramNode";
import {$selectionContainsNode, $selectSingleNode} from "../../utils/selection";
import {$openDrawingEditorForNode} from "../../utils/diagrams";
setup(context: EditorUiContext, element: HTMLElement) {
const diagramNode = this.getNode();
element.classList.add('editor-diagram');
- element.addEventListener('click', event => {
+
+ context.editor.registerCommand(CLICK_COMMAND, (event: MouseEvent): boolean => {
+ if (!element.contains(event.target as HTMLElement)) {
+ return false;
+ }
+
context.editor.update(() => {
$selectSingleNode(this.getNode());
- })
- });
+ });
+ return true;
+ }, COMMAND_PRIORITY_NORMAL);
element.addEventListener('dblclick', event => {
context.editor.getEditorState().read(() => {