UNPKG

@lobehub/editor

Version:

A powerful and extensible rich text editor built on Meta's Lexical framework, providing a modern editing experience with React integration.

38 lines 1.5 kB
import { mergeRegister } from '@lexical/utils'; import { $createTextNode, $getNodeByKey, $insertNodes, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'; import { $createLinkNode } from "../node/LinkNode"; export var INSERT_LINK_COMMAND = createCommand('INSERT_LINK_COMMAND'); export var UPDATE_LINK_TEXT_COMMAND = createCommand('UPDATE_LINK_TEXT_COMMAND'); export function registerLinkCommand(editor) { return mergeRegister(editor.registerCommand(INSERT_LINK_COMMAND, function (payload) { var url = payload.url, _payload$title = payload.title, title = _payload$title === void 0 ? url : _payload$title; editor.update(function () { var linkNode = $createLinkNode(url, { title: title }); var textNode = $createTextNode(title); linkNode.append(textNode); $insertNodes([linkNode]); }); return false; }, COMMAND_PRIORITY_EDITOR // Priority ), editor.registerCommand(UPDATE_LINK_TEXT_COMMAND, function (payload) { var key = payload.key, text = payload.text; editor.update(function () { var linkNode = $getNodeByKey(key); if (linkNode) { var newLinkNode = $createLinkNode(linkNode.getURL(), { title: text }); var textNode = $createTextNode(text); newLinkNode.append(textNode); linkNode === null || linkNode === void 0 || linkNode.replace(newLinkNode); newLinkNode.select(1); } }); return false; }, COMMAND_PRIORITY_EDITOR)); }