monaco-editor-block 为 monaco-editor 的块状元素扩充插件
- 导入 monaco-editor-block.js
- 创建 monaco 实列
- 初始化 monaco-editor-block
- 如需要创建块状元素调用 monaco-editor-block 的 addCode 方法
let monacoEditor = new MonacoBlock(editor, options)
- editor[monaco 实例]
- options[Object]
- options.blockClassName[String] 块状元素的类名
- options.cancelJsDiagnostics[Boolean] 取消 t/js 代码诊断
- options.cancelJsCompletionItems[Boolean] 取消 t/js 代码提示
- options.hideZeroCode[Boolean] 隐藏零宽字符特殊样式
- options.deleteBlockCode[Function] 删除块状提供的回调
- 参数为添加块状元素内容。 ps: 若添加参数为对象此参数就为对象, 否则为字符串
- options.customBlockStyle[Function] 自定义块状样式回调
- 同上
monacoEditor.addcode(content, type)
- content[String|Object]
- 为字符串时,该值就为添加的块状元素内容
- 为对象时
1. content.code[String] 该值就为添加的块状元素内容
2. content.isNormal[Boolean] 添加方式 ps: 为了方便一次性添加多个块状代码, 在content.isNormal 为 true 时, 字符串中有{@ @}包裹的内容也会被解析成块状元素
- true:内容为块状元素
- false:内容为普通文本
- type[String] 添加位置
- focus 焦点处添加代码
- end 末尾添加代码
const {value, blockValue} = monacoEditor.getCode()
- value[String] 不带块状信息的字符串
- blockValue[String] 带块状信息的字符串
monacoEditor.clear()
monacoEditor.destroy()
monacoEditor.getAllBlockMessage()
import { MonacoBlock } from "./dist/monacoBlock";
import * as monaco from "monaco-editor";
let monacoEditor = monaco.editor.create(document.querySelector(".root"), {
value: "test",
automaticLayout: true,
theme: "vs",
unicodeHighlight: {
invisibleCharacters: false, // 隐藏零宽字符特殊显示
},
});
const monacoBlock = new MonacoBlock(monacoEditor, {
cancelJsDiagnostics: true, // 取消 t/js 代码诊断})
}
const handleAddVar = () => {
const code = "我是块状变量";
// 添加块状元素
monacoBlock.addCode(code);
};
const addBtn = () => {
let btn = document.createElement("button");
btn.innerText = "添加块状变量";
btn.onclick = handleAddVar;
document.body.append(btn);
};
addBtn();
- npm i
- npm run serve
- click btn