1
0
forked from x/volcanos

opt inner.js

This commit is contained in:
harveyshao 2022-01-16 16:41:01 +08:00
parent 3220d61d14
commit 2fb7172f21
11 changed files with 130 additions and 55 deletions

View File

@ -71,7 +71,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta,
signal: shy("触发事件", function(can, name, msg) { msg = msg||can.request()
name == chat.ONREMOTE? can.misc.Log("signal", name, msg.Option("_msg")): can.misc.Log("signal", name, msg)
can.core.List(can.onengine.listen.meta[name], function(cb) {
can.core.CallFunc(cb, {msg: msg})
can.core.CallFunc(cb, {msg: msg, event: msg._event})
})
}),
plugin: shy("添加插件", {}, [], function(can, name, command) { name = can.base.trimPrefix(name, "can.")
@ -414,16 +414,21 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
var input = meta.action||mdb.KEY; input != ice.AUTO && can.require(["/plugin/input/"+input+".js"], function(can) {
can.core.ItemCB(can.onfigure[input], function(key, on) { var last = target[key]; target[key] = function(event) { on(event, can, meta, function(cb) {
can.sub? can.base.isFunc(cb) && cb(can.sub, cbs): can.onappend._init(can, {type: html.INPUT, name: input, pos: chat.FLOAT}, ["/plugin/input/"+input+".js"], function(sub) { sub.Conf(meta)
can.onmotion.hidden(can, sub._target)
sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option()); (meta.run||can.run)(event, cmds, cb, true) }, can.sub = sub
sub.close = function() { sub.page.Remove(sub, sub._target), delete(can.sub) }
sub.onappend._action(sub, [cli.CLOSE, cli.CLEAR], sub._action, kit.Dict(
sub.onappend._action(sub, [cli.CLOSE, cli.CLEAR, cli.REFRESH], sub._action, kit.Dict(
cli.CLOSE, function(event) { sub.close() },
cli.CLEAR, function(event) { target.value = "" },
cli.REFRESH, function(event) { can.base.isFunc(cb) && cb(sub) },
)), sub.onappend._status(sub, [mdb.TOTAL, mdb.INDEX])
meta.style && sub.page.Modify(sub, sub._target, {style: meta.style})
can.base.isFunc(cb) && cb(sub, cbs)
can.base.isFunc(cb) && cb(sub, function() {
can.onmotion.hidden(can, sub._target, true)
can.base.isFunc(cbs) && cbs(sub)
})
}, document.body)
}, target, last) } })
})
@ -441,7 +446,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
if (event.target.tagName == "INPUT") { return }
if (event.key == lang.ESCAPE) { ui.close(); return }
if (event.key == ice.SP) { input.focus(), event.stopPropagation(), event.preventDefault() }
if (event.key == ice.SP) { input.focus(), can.onkeypop.prevent(event) }
}}))
}, onkeydown: function(event) { can.onkeypop.input(event, can)
if (event.key != lang.ENTER) { return }
@ -509,6 +514,9 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight-5; if (right) {
var left = event.clientX-event.offsetX+event.target.offsetWidth, top = event.clientY-event.offsetY
}
if (!left) { left = window.innerWidth/2-target.offsetWidth/2 }
if (!top) { top = 32 }
layout = {left: left, top: top}
if (layout.top < 0) { layout.top = 0 }
if (layout.left < 0) { layout.left = 0 }
@ -677,7 +685,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
}
}, _init: function(target) {
item && can.onappend.figure(can, item, target), target.value = text
target.focus(), target.setSelectionRange(0, -1)
can.onmotion.focus(can, target)
}}])
},
modifys: function(can, target, cb, item) { var back = target.innerHTML
@ -696,7 +704,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
}
}, _init: function(target) {
item && can.onappend.figure(can, item, target)
target.focus(), target.setSelectionRange(0, -1)
can.onmotion.focus(can, target)
}}])
},
@ -728,7 +736,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
can.page.Modify(can, target, {style: {left: layout.left, top: layout.top}})
}
can.base.isFunc(cb) && cb(target)
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
}
can.base.isFunc(cb) && cb(target)
},
@ -754,7 +762,7 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe
})
Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) {
document.body.onkeydown = function(event) { var msg = can.request(event)
msg.Option("model", "normal"); if (event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
msg.Option("model", "normal"); if (event.target.tagName == "SELECT" || event.target.tagName == "INPUT" || event.target.tagName == "TEXTAREA") {
msg.Option("model", event.ctrlKey? "insert_ctrl": "insert")
return
}
@ -780,7 +788,7 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
function repeat(cb, count) { list = []
for (var i = 1; i <= count; i++) { if (cb(event, can, target, count)) { break } }
event.stopPropagation(), event.preventDefault()
// can.onkeypop.prevent(event)
}
var map = can.onkeypop._mode[mode]
@ -810,8 +818,10 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
enter: function(event, can, target) {
var his = target._history || []
his.push(target.value)
if (event.target.tagName == "INPUT") {
can.onmotion.focus(can, target)
}
target.setSelectionRange(0, -1)
target._current = his.length
target._history = his
},
@ -869,11 +879,14 @@ Volcanos("onkeypop", {help: "键盘交互", list: [], _focus: [], _init: functio
input: function(event, can) { var target = event.target
target._keys = can.onkeypop._parse(event, can, event.ctrlKey? "insert_ctrl": mdb.INSERT, target._keys||[], target)
if (target._keys.length == 0) { event.stopPropagation(), event.preventDefault() }
if (target._keys.length == 0 && target.tagName == "INPUT") { can.onkeypop.prevent(event) }
},
DelText: function(target, start, count) {
target.value = target.value.substring(0, start)+target.value.substring(start+(count||target.value.length), target.value.length)
target.setSelectionRange(start, start)
},
prevent: function(event) {
event.stopPropagation(), event.preventDefault()
}
})
_can_name = ""

View File

@ -68,7 +68,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
return target
}),
Remove: shy("删除节点", function(can, target) {
target && target.parentNode && target.parentNode.removeChild(target)
return target && target.parentNode && target.parentNode.removeChild(target), target
}),
Create: shy("创建节点", function(can, key, value) {
return can.page.Modify(can, document.createElement(key), value)
@ -114,7 +114,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
type = html.BUTTON, name = name||list[0]
data.innerText = can.user.trans(can, list[0]), data.onclick = function(event) {
can.base.isFunction(list[1]) && list[1](event, name)
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
return true
}
@ -399,6 +399,7 @@ Volcanos("page", {help: "用户界面", ClassList: {
return res
},
offsetLeft: function(item) { var res = 0
// if (item.offsetLeft) { return item.offsetLeft }
while (item) { res += item.offsetLeft||0, item = item.parentNode }
return res
},

View File

@ -189,9 +189,9 @@ Volcanos("user", {help: "用户操作", agent: {
}
var input = can.page.Append(can, event.target.parentNode, [{type: html.TEXTAREA, value: text}]).first
input.setSelectionRange(0,-1), input.focus(), document.execCommand("Copy")
can.onmotion.focus(can, input), document.execCommand("Copy")
can.page.Remove(can, input), can.user.toastSuccess(can)
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
},
carte: function(event, can, meta, list, cb, parent) {
meta = meta||can.ondetail||can.onaction||{}, list = list&&list.length > 0? list: meta.list||[]; if (list.length == 0) { return }
@ -215,9 +215,9 @@ Volcanos("user", {help: "用户操作", agent: {
var carte = {_target: ui._target, _parent: parent}
null && can.onmotion.float.add(can, chat.CARTE, carte)
ui._target.onmouseover = function(event) {
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
}
return event.stopPropagation(), event.preventDefault(), carte
return can.onkeypop.prevent(event), carte
},
carteRight: function(event, can, meta, list, cb, parent) {
var carte = can.user.carte(event, can, meta, list, cb, parent)

View File

@ -52,7 +52,7 @@ Volcanos("onaction", {help: "交互操作", list: [cli.CLEAR, cli.CLOSE, cli.DON
{input: ["word", function(event) { can.onkeypop.input(event, can)
if (event.key == lang.ESCAPE) { can.onmotion.hide(can) }
if (event.key == lang.ENTER) { event.stopPropagation(), event.preventDefault()
if (event.key == lang.ENTER) { can.onkeypop.prevent(event)
if (event.shiftKey) { var first = can.page.Select(can, can.ui.content, html.TR)[1]
return can.onaction[can.type == "*"? chat.PLUGIN: html.SELECT](event, can, first.dataset.index)
}

View File

@ -23,15 +23,15 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
onkeydown: function(event, can) { can.onkeypop.input(event, can, event.target)
if (can.Conf(mdb.TYPE) == html.TEXTAREA) { if (!event.ctrlKey) { return } }
if (event.key == lang.ENTER) {
can.run(event), event.target.setSelectionRange(0, -1)
event.stopPropagation(), event.preventDefault()
can.run(event), can.onmotion.focus(can, event.target)
can.onkeypop.prevent(event)
} if (!event.ctrlKey) { return }
switch (event.key) {
case "b": can.CloneInput(); break
case "m": can.CloneField(); break
default: return
} event.stopPropagation(), event.preventDefault()
} can.onkeypop.prevent(event)
},
})

View File

@ -9,6 +9,15 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
}}
})
},
_show: function(can, meta, cbs, target) {
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
if (msg.Length() == 0) { return can.close() }
target._can && target._can.close(), target._can = can
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
target._msg = msg, can.base.isFunc(cbs) && cbs(can)
})
},
_select: function(event, can, target) {
function select(order) { if (order == 0) { target.value = target._value }
var index = 0; return can.page.Select(can, can._output, html.TR, function(tr) {
@ -31,27 +40,17 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
default: target._index = 0, target._value = ""
}
},
onfocus: function(event, can, meta, cb, target) { cb(function(can, cbs) {
onfocus: function(event, can, meta, cb, target) { if (target._figure) { return } target._figure = {}; cb(function(can, cbs) {
target._figure = can.onlayout.figure(event, can, can._target, false, {top: can.page.offsetTop(target)+target.offsetHeight, left: can.page.offsetLeft(target)})
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
if (msg.Length() == 0) { return can.close() }
target._msg = msg, can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
can.base.isFunc(cbs) && cbs(can)
})
can.onfigure.key._show(can, meta, cbs, target)
}) },
onblur: function(event, can, meta, cb, target) { cb(function(can, cbs) {
can.close()
}) },
onclick: function(event, can, meta, cb, target) { cb(function(can, cbs) {
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
if (msg.Length() == 0) { return can.close() }
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
target._msg = msg, target._figure = can.onlayout.figure(event, can)
can.base.isFunc(cbs) && cbs(can)
})
onblur: function(event, can, meta, cb, target) { delete(target._figure), target._can && target._can.close() },
onclick: function(event, can, meta, cb, target) { if (target._figure) { target._figure = can.onlayout.figure(event, can, can.core.Value(target, "_can._target")||{}); return } target._figure = {}; cb(function(can, cbs) {
target._figure = can.onlayout.figure(event, can)
can.onfigure.key._show(can, meta, cbs, target)
}) },
onkeydown: function(event, can, meta, cb, target, last) {
var msg = target._msg; msg && cb(function(can, cbs) {
if (target._figure) { can = target._can
if (event.ctrlKey) { can.onfigure.key._select(event, can, target) } else {
target._index = 0, target._value = ""
switch (event.key) { case lang.ENTER: can.close(); return }
@ -62,16 +61,20 @@ Volcanos("onfigure", {help: "控件详情", list: [], key: {
})
}
can.onlayout.figure(event, can, can._target, false, target._figure)
var total = can.page.Select(can, can._output, html.TR, function(tr) {
if (!can.page.ClassList.has(can, tr, html.HIDDEN)) { return tr}
}).length-1
if (total == 0) {
can.run(event, [ctx.ACTION, mdb.INPUTS, meta.name, target.value], function(msg) {
can.onfigure.key._init(can, msg, target), can.Status(mdb.TOTAL, msg.Length())
target._msg = msg
})
}
can.Status(kit.Dict(mdb.TOTAL, total, mdb.INDEX, target._index))
can.base.isFunc(cbs) && cbs(can)
})
}
if (event.ctrlKey && ["n", "p"].indexOf(event.key) > -1) {
return event.stopPropagation(), event.preventDefault()
return can.onkeypop.prevent(event)
}
switch (event.key) { case lang.ESCAPE: event.target.blur(); return }
can.base.isFunc(last) && last(event, can)

View File

@ -11,6 +11,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE))
can.onimport.project(can, can.Option(nfs.PATH), function() {
can.onimport._toolkit(can, can.ui.toolkit), can.core.Timer(100, function() {
can.onimport.sess(can)
can.core.Next(can.core.Split(msg.OptionOrSearch("tool")), function(item, next) {
can.onimport.toolkit(can, {index: item}, next)
}, function() {
@ -47,6 +48,13 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
))) { return }
run(event, cmds, cb, silent)
}
can.user.mod.isCmd && can.onengine.listen(can, chat.ONKEYDOWN, function(event) {
var cb = can.onaction[kit.Dict(
"r", "执行", "v", "展示", "s", "保存",
"t", "添加", "f", "打开", "p", "插件", lang.ESCAPE, "清屏",
)[event.key]]
can.base.isFunc(cb) && cb(event, can)
})
},
_project: function(can, target) {
target._toggle = function(event) { can.onmotion.toggle(can, target), can.onimport.layout(can) }
@ -113,14 +121,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
tabview: function(can, path, file, line, cb) { var key = path+":"+file
if (can.tabview[key]) {
can._msg && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.tabview[key]
can.Option({path: path, file: file, line: line||parseInt(can._msg.Option(nfs.LINE))||1})
can.Option({path: path, file: file, line: line||can._msg.Option(nfs.LINE)||1})
return can._msg.Option(can.Option()), can.onsyntax._init(can, can._msg, cb)
}
if (line == ctx.INDEX) { var msg = can.request({}, {index: file})
if (line == ctx.INDEX) { var msg = can.request({}, {index: file, line: line})
can.tabview[key] = msg
msg._tab = can.onappend.tabs(can, [{name: file.split(ice.PS).pop(), text: file}], function(event, meta) {
can.onimport.tabview(can, path, file, "", cb)
can.onimport.tabview(can, path, file, "", cb), cb = null
}, function(item) { delete(can.tabview[key]) })
return
}
@ -129,7 +137,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.Option({path: path, file: file, line: line||1})
can.run({}, [path, file], function(msg) { can.tabview[key] = msg
msg._tab = can.onappend.tabs(can, [{name: file.split(ice.PS).pop(), text: file}], function(event, meta) {
can.onimport.tabview(can, path, file, "", cb)
can.onimport.tabview(can, path, file, "", cb), cb = null
}, function(item) { delete(can.tabview[key]) })
}, true)
},
@ -161,11 +169,13 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.ui.toolkit.status.appendChild(sub._legend), sub._legend.onclick = function(event) {
if (can.page.Select(can, can.ui.toolkit.status, ice.PT+html.SELECT)[0] == event.target) {
can.page.ClassList.del(can, event.target, html.SELECT)
can.page.ClassList.del(can, sub._target, html.SELECT)
return
}
can.onmotion.select(can, can.ui.toolkit.status, html.DIV_LEGEND, event.target)
can.onmotion.select(can, can.ui.toolkit.output, html.FIELDSET, sub._target)
can.page.Select(can, sub._option, html.OPTION_ARGS)[0].focus()
}
can.base.isFunc(cb) && cb(sub)
}, can.ui.toolkit.output)
@ -181,6 +191,14 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, cb, target
can.page.style(can, can.ui.content, html.WIDTH, width-can.ui.project.offsetWidth-can.ui.profile.offsetWidth-25)
can.page.style(can, can.ui.profile_output, html.HEIGHT, can.ui.content.offsetHeight-html.ACTION_HEIGHT)
},
sess: function(can, sess) { sess = sess||can.base.Obj(localStorage.getItem("web.code.inner.sess"), {})
can.core.Next(sess.tabs, function(item, next) { var ls = item.split(":")
can.onimport.tabview(can, ls[0], ls[1], ls[2], next)
})
can.core.Next(sess.tool, function(item, next) {
can.onimport.toolkit(can, {index: item}, function(sub) { can.toolkit[item] = sub, next() })
})
},
}, [""])
Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"], _init: function(can, msg, cb) {
if (can.onmotion.cache(can, function(cache_data) {
@ -189,6 +207,11 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
var p = cache_data[can.file]; p && (can.current = p.current, can.max = p.max)
can.parse = can.base.Ext(can.file), can.Status("模式", "normal")
can.onmotion.select(can, can._action, chat.DIV_TABS, msg._tab)
if (msg.Option(ctx.INDEX)) {
can.core.Timer(100, function() {
var input = can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0]; input && input.focus()
})
}
return can.file
}, can.ui.content, can.ui.profile_output, can.ui.display_output)) {
return can.onaction.selectLine(can, msg.Option(nfs.LINE)), can.base.isFunc(cb) && cb()
@ -198,6 +221,10 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
sub.run = function(event, cmds, cb) {
can.run(event, [ctx.ACTION, ice.RUN, msg.Option(ctx.INDEX)].concat(cmds), cb, true)
}
can.core.Timer(100, function() {
var input = can.page.Select(can, can.ui.content, html.OPTION_ARGS)[0]; input && input.focus()
})
can.base.isFunc(cb) && cb()
}, can.ui.content)
return
}
@ -239,7 +266,8 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
return line
},
})
Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"],
Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加", "保存"],
"保存": function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) },
"打开": function(event, can) {
can.user.input(event, can, [nfs.FILE], function(event, button, data, list, args) {
can.onimport.tabview(can, can.Option(nfs.PATH), data.file)
@ -252,7 +280,8 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
},
"添加": function(event, can) {
can.user.input(event, can, [ctx.INDEX], function(event, button, data, list, args) {
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = data
var sub = can.toolkit[data.index]; if (sub) { sub._legend.click(); return }
can.onimport.toolkit(can, data, function(sub) { can.toolkit[data.index] = sub
sub._legend.click(), sub.page.Select(sub, sub._target, html.OPTION_ARGS)[0].focus()
})
})
@ -263,6 +292,18 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
can.onimport.profile(can, msg)
}, true)
},
"清屏": function(event, can) {
if (can.page.Select(can, document.body, ".input.float", function(item) {
return can.page.Remove(can, item)
}).length > 0) { return }
if (can.page.Select(can, can.ui.toolkit.status, "div.select", function(item) {
return item.click(), item
}).length > 0) { return }
can.onmotion.hidden(can, can.ui.profile)
can.onmotion.hidden(can, can.ui.display)
can.onimport.layout(can)
},
"执行": function(event, can) { can.onimport.display(can)
can.run(event, [ctx.ACTION, mdb.ENGINE, can.parse, can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
can.onimport.display(can, msg)
@ -347,6 +388,22 @@ Volcanos("onaction", {help: "控件交互", list: ["打开", "插件", "添加"]
},
})
Volcanos("onexport", {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数", "标签数"],
sess: function(can) {
localStorage.setItem("web.code.inner.sess", JSON.stringify(
{
"tabs": can.onexport.tabs(can),
"tool": can.onexport.tool(can),
}
))
},
tabs: function(can) {
return can.core.Item(can.tabview, function(key, msg) {
return key+":"+msg.Option(nfs.LINE)
})
},
tool: function(can) {
return can.core.Item(can.toolkit)
},
position: function(can, index, total) { total = total||can.max
return (parseInt(index))+ice.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%"
},

View File

@ -101,7 +101,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
parse: function(event, can, mode) {
can.keylist.push(event.key); if (can.mode != mode) {
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
}; can.mode == "normal" && can.Status("按键", can.keylist.join(""))
for (var pre = 0; pre < can.keylist.length; pre++) {
@ -130,9 +130,8 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
Enter: function(event, can) { can.onmotion.hidden(can, can.ui.command)
can.page.Modify(can, can.ui.display, {style: {display: "block"}})
var line = can.ui.command.value || can.ui.cmd.value
can.ui.cmd.value = line, can.ui.cmd.focus()
can.ui.cmd.setSelectionRange(0, -1)
can.ui.command.value = ""
can.ui.command.value = "", can.ui.cmd.value = line
can.onmotion.focus(can, can.ui.cmd)
can.onmotion.clear(can, can.ui.output)
var ls = can.core.Split(line+" ", " ", ",")
@ -238,7 +237,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
insert: {
Escape: function(event, can) { can.onkeymap._normal(can)
can.onaction.modifyLine(can, can.current, can.ui.current.value)
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
},
Enter: function(event, can) {
var before = can.ui.current.value.slice(0, event.target.selectionEnd)
@ -249,7 +248,7 @@ Volcanos("onkeymap", {help: "键盘交互", list: ["command", "normal", "insert"
},
Backspace: function(event, can) {
if (can.ui.current.selectionStart > 0) { return }
event.stopPropagation(), event.preventDefault()
can.onkeypop.prevent(event)
if (!can.current.prev()) { return }
var rest = can.current.text()

View File

@ -11,4 +11,5 @@ fieldset.feel.float {
margin:0 10px; padding:0 10px;
background-color:#4eaad0c2;
position:absolute;
top:26px;
}

View File

@ -132,7 +132,7 @@ Volcanos("ondetail", {help: "用户交互", list: [],
{x: tree.x-can.margin/4, y: y-can.size/2},
{x: tree.x+tree.width+can.margin/8, y: y+can.size/2},
], style: {stroke: cli.RED, fill: html.NONE},
}), event.stopPropagation(), event.preventDefault()
}), can.onkeypop.prevent(event)
},
onclick: function(event, can, tree) {
if (tree.list.length > 0 || tree.tags || tree.name.endsWith(can._args.split)) {

View File

@ -140,6 +140,7 @@ var chat = {
ONMAIN: "onmain", ONLOGIN: "onlogin", ONSEARCH: "onsearch",
ONSIZE: "onsize", ONTOAST: "ontoast", ONREMOTE: "onremote",
ONKEYDOWN: "onkeydown",
HEAD: "head", LEFT: "left", MAIN: "main", AUTO: "auto", HIDE: "hide", FOOT: "foot",
SCROLL: "scroll", LEFT: "left", TOP: "top", RIGHT: "right", BOTTOM: "bottom",