@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
JavaScript
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));
}