Clipboard 模块包
Lexical 提供了一个 @lexical/clipboard 模块包,其中有一些关于剪贴板的实用方法。
参考
- lexical-clipboard - Github
- @lexical/clipboard - documentation
注意
其中有一些方法的名称以 $ 符号开头,它们大部分是用于修改编辑器状态 EditorState 的,一般只能在 editor.update(callbackFn) 的回调函数 callbackFn 中实用
$generateJSONFromSelectedNodes(editor, selection)从选区selection中获取节点,并将它们序列化为 JSON(对象)格式,并构成一个数组
但最后返回的是一个对象(除了节点信息,还包含编辑器信息),它包含两个属性- 属性
namespace:一个字符串,表示编辑器的命名空间 - 属性
nodes:一个数组,包含一系列序列化为 JSON 格式的节点
- 属性
$generateNodesFromSerializedNodes(serializedNodes)基于给定的序列化为 JSON 格式的节点(数组)serializedNodes(反序列化)生成一系列节点对象$getHtmlContent(editor)基于编辑器当前的选区生成 HTML 字符串提示
主要调用不同类型的节点的
exportDOM方法来生成 HTML 内容$getLexicalContent(editor)基于编辑器当前的选区生成 JSON 字符串提示
主要调用不同类型的节点的
exportJSON方法来生成 JSON 字符串$insertDataTransferForPlainText(dataTransfer, selection)通过拖拽释放的方式将纯文本内容插入到选区/光标selection位置。参数dataTransfer是一个 DataTransfer 对象,它表示/容纳拖动并放下 drag and drop 过程中的数据(其 mime-types 格式是text/plain纯文本或text/uri-listURI 列表)$insertDataTransferForRichText(dataTransfer, selection, editor)通过拖拽释放的方式将富文本内容插入到选区/光标selection位置。参数dataTransfer是一个 DataTransfer 对象,它表示/容纳拖动并放下 drag and drop 过程中的数据(其 mime-types 格式是application/x-lexical-editor编辑器应用所生成的内容 JSON 格式、text/htmlHTML 内容、text/plain纯文本、text/uri-listURI 列表)$insertGeneratedNodes(editor, nodes, selection)将给定的一系列节点nodes(数组)插入到选区/光标selection位置。提示
使用以上方法插入节点时,会针对不同的节点类型采用不同的处理方式(特别是插入表格 ❓ )
也可以使用 Lexical 核心模块所导出的更通用的方法
$insertNodes(nodes, selectStart?)插入节点copyToClipboard(editor, event)将当前选区的内容复制到剪切板中。参数event是浏览器原生的 ClipboardEvent 剪切板事件,用于将选区内容添加到剪切板中(内容的格式可以是text/plain纯文本、text/htmlHTML 内容、application/x-lexical-editor编辑器应用所生成的内容 JSON 格式)
返回一个 Promise 所以需要异步编程来使用该方法