import xhtml from '@hai2007/browser/xhtml'
const OpenWebEditor = require('open-web-editor')
import { Directive } from 'nefbl'
@Directive({
selector: "ui-code"
})
export default class {
$inserted(el, binding) {
let code = el.innerHTML.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&').trim()
let owe = new OpenWebEditor({
// 编辑器挂载点
el,
// 初始化文本
content: code,
// 是否只读
readonly: binding.type != 'editor',
// 着色语言
shader: [binding.exp || 'javascript', {
insign: "#000000",
"css": {
insign: "#000000"
},
"javascript": {
insign: "#000000"
}
}],
// 设置颜色
color: {
background: "rgb(239, 235, 234)", /*编辑器背景*/
text: "#000000", /*文本颜色*/
number: "#888484", /*行号颜色*/
edit: "#eaeaf1", /*编辑行背景色*/
cursor: "#ff0000", /*光标颜色*/
select: "gray", /*选择背景*/
},
// 是否隐藏行号
// 如果只有一行,就不显示行号(编辑界面一定显示)
noLineNumber: !/\n/.test(code)
})
// 添加复制按钮
let btnNode = xhtml.prepend(el, '复制')
xhtml.bind(btnNode, 'click', () => {
owe.copy(() => {
alert('复制成功')
}, error => {
console.log(error);
alert('复制失败')
})
})
xhtml.setStyles(btnNode, {
position: "absolute",
right: "10px",
top: "6px",
border: "none",
outline: 0,
transition: "0.2s",
"font-size": "12px",
cursor: "pointer",
"z-index": 1,
"line-height": '20px',
"background-color": "#f8f8f8",
"padding": "5px 10px"
})
el.__owe__ = owe
}
}