mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 08:48:06 +08:00
add some
This commit is contained in:
parent
bfb6e331a9
commit
0701ed916c
37
frame.js
37
frame.js
@ -1180,32 +1180,30 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
|
|||||||
}, function() { can.page.style(can, target, html.HEIGHT, "") })
|
}, function() { can.page.style(can, target, html.HEIGHT, "") })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||document.body
|
Volcanos(chat.ONKEYMAP, {
|
||||||
can.onkeymap._build(can), target.onkeydown = function(event) { can.misc.Event(event, can, function(msg) {
|
_init: function(can, target) { target = target||document.body, can.onkeymap._build(can)
|
||||||
|
target.onkeydown = function(event) {
|
||||||
if (can.user.isWindows && event.ctrlKey) { can.onkeymap.prevent(event) }
|
if (can.user.isWindows && event.ctrlKey) { can.onkeymap.prevent(event) }
|
||||||
if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return }
|
if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return }
|
||||||
can.onengine.signal(can, chat.ONKEYDOWN, can.request(event, {"model": can.user.isWebview && event.metaKey? "webview": mdb.NORMAL}))
|
can.onengine.signal(can, chat.ONKEYDOWN, can.request(event))
|
||||||
}) }, target.onkeyup = function(event) { can.misc.Event(event, can, function(msg) {
|
}, target.onkeyup = function(event) { target.onkeydown(event) }
|
||||||
if (can.user.isWindows && event.ctrlKey) { can.onkeymap.prevent(event) }
|
|
||||||
if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return }
|
|
||||||
can.onengine.signal(can, chat.ONKEYUP, can.request(event, {"model": mdb.NORMAL}))
|
|
||||||
}) }
|
|
||||||
},
|
},
|
||||||
_build: function(can) { can.core.Item(can.onkeymap._mode, function(item, value) { var engine = {list: {}}
|
_build: function(can) { can.core.Item(can.onkeymap._mode, function(mode, value) { var engine = {list: {}}
|
||||||
can.core.Item(value, function(key, cb) { var map = engine; for (var i = 0; i < key.length; i++) {
|
can.core.Item(value, function(key, cb) { var map = engine; for (var i = 0; i < key.length; i++) {
|
||||||
if (!map.list[key[i]]) { map.list[key[i]] = {list: {}} } map = map.list[key[i]]; if (i == key.length-1) { map.cb = cb }
|
if (!map.list[key[i]]) { map.list[key[i]] = {list: {}} } map = map.list[key[i]]; if (i == key.length-1) { map.cb = cb }
|
||||||
} }), can.onkeymap._engine[item] = engine
|
} }), can.onkeymap._engine[mode] = engine
|
||||||
}) },
|
}) },
|
||||||
_parse: function(event, can, mode, list, target) { list = list||[]
|
_parse: function(event, can, mode, target, list) { mode = mode||mdb.PLUGIN, target = target||can._output; if (!list) { list = target._key_list||[], target._key_list = list }
|
||||||
if (event.metaKey && !can.user.isWebview) { return } if ([code.META, code.ALT, code.CONTROL, code.SHIFT].indexOf(event.key) > -1) { return list }
|
if (event.metaKey && !can.user.isWebview) { return list } if ([code.SHIFT, code.CONTROL, code.META, code.ALT].indexOf(event.key) > -1) { return list }
|
||||||
list.push(event.key); for (var pre = 0; pre < list.length; pre++) { if ("0" <= list[pre] && list[pre] <= "9") { continue } break }
|
list.push(event.key); for (var pre = 0; pre < list.length; pre++) { if ("0" <= list[pre] && list[pre] <= "9") { continue } break }
|
||||||
var count = parseInt(list.slice(0, pre).join(""))||1, map = can.onkeymap._mode[mode]
|
var count = parseInt(list.slice(0, pre).join(""))||1, map = can.onkeymap._mode[mode]
|
||||||
|
function clear() { return target._key_list = [] }
|
||||||
function repeat(cb, count) { list = []; for (var i = 1; i <= count; i++) { if (can.core.CallFunc(cb, {event: event, can: can, target: target, count: count})) { break } } }
|
function repeat(cb, count) { list = []; for (var i = 1; i <= count; i++) { if (can.core.CallFunc(cb, {event: event, can: can, target: target, count: count})) { break } } }
|
||||||
var cb = map && map[event.key]; if (can.base.isFunc(cb) && event.key.length > 1) { repeat(cb, count); return list }
|
var cb = map && map[event.key.toLowerCase()]; if (can.base.isFunc(cb) && event.key.length > 1) { repeat(cb, count); return clear() }
|
||||||
var cb = map && map[event.key.toLowerCase()]; if (can.base.isFunc(cb) && event.key.length > 1) { repeat(cb, count); return list }
|
var cb = map && map[event.key]; if (can.base.isFunc(cb) && event.key.length > 1) { repeat(cb, count); return clear() }
|
||||||
var map = can.onkeymap._engine[mode]; if (!map) { return [] }
|
var map = can.onkeymap._engine[mode]; if (!map) { return clear() }
|
||||||
for (var i = pre; i < list.length; i++ ) { var map = map.list[list[i]]; if (!map) { return [] }
|
for (var i = pre; i < list.length; i++ ) { var map = map.list[list[i]]; if (!map) { return clear() }
|
||||||
if (i == list.length-1 && can.base.isFunc(map.cb)) { repeat(map.cb, count); return [] }
|
if (i == list.length-1 && can.base.isFunc(map.cb)) { repeat(map.cb, count); return clear() }
|
||||||
} return list
|
} return list
|
||||||
},
|
},
|
||||||
_mode: {
|
_mode: {
|
||||||
@ -1235,10 +1233,8 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
|
input: function(event, can) { can.onkeymap._parse(event, can, mdb.INSERT+(event.ctrlKey? "_ctrl": ""), event.target) },
|
||||||
prevent: function(event) { event && (event.stopPropagation(), event.preventDefault()); return true },
|
prevent: function(event) { event && (event.stopPropagation(), event.preventDefault()); return true },
|
||||||
input: function(event, can) { if (event.metaKey) { return } var target = event.target
|
|
||||||
target._keys = can.onkeymap._parse(event, can, mdb.INSERT+(event.ctrlKey? "_ctrl": ""), target._keys, target)
|
|
||||||
},
|
|
||||||
cursorMove: function(target, count, begin) {
|
cursorMove: function(target, count, begin) {
|
||||||
if (begin != undefined) { if (begin < 0) { begin += target.value.length+1 } target.setSelectionRange(begin, begin) }
|
if (begin != undefined) { if (begin < 0) { begin += target.value.length+1 } target.setSelectionRange(begin, begin) }
|
||||||
return count == undefined || target.setSelectionRange(target.selectionStart+count, target.selectionStart+count), target.selectionStart
|
return count == undefined || target.setSelectionRange(target.selectionStart+count, target.selectionStart+count), target.selectionStart
|
||||||
@ -1291,7 +1287,6 @@ Volcanos(chat.ONKEYMAP, {_init: function(can, target) { target = target||documen
|
|||||||
can.onmotion.hidden(can, tr, tr.innerText.indexOf(target.value) > -1)
|
can.onmotion.hidden(can, tr, tr.innerText.indexOf(target.value) > -1)
|
||||||
return tr
|
return tr
|
||||||
}).length > 0) { return }
|
}).length > 0) { return }
|
||||||
// , target._index = -1, target._value = target.value
|
|
||||||
can.page.Select(can, can._output, [html.TBODY, html.TR], function(tr, index) { var has = false
|
can.page.Select(can, can._output, [html.TBODY, html.TR], function(tr, index) { var has = false
|
||||||
can.page.Select(can, tr, html.TD, function(td) { has = has || td.innerText.indexOf(target.value)>-1 }), can.page.ClassList.set(can, tr, html.HIDDEN, !has)
|
can.page.Select(can, tr, html.TD, function(td) { has = has || td.innerText.indexOf(target.value)>-1 }), can.page.ClassList.set(can, tr, html.HIDDEN, !has)
|
||||||
}), target._index = -1, target._value = target.value
|
}), target._index = -1, target._value = target.value
|
||||||
|
@ -856,6 +856,7 @@ fieldset.inner>div.output>div.project div.item.modify { background-color:#008000
|
|||||||
fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
|
fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
|
||||||
fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:var(--disable-fg-color); }
|
fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:var(--disable-fg-color); }
|
||||||
fieldset.vimer>div.output>div.project>div.zone.space fieldset>div.output>div.item { height:42px; }
|
fieldset.vimer>div.output>div.project>div.zone.space fieldset>div.output>div.item { height:42px; }
|
||||||
|
fieldset.vimer>div.output>div.project>div.zone.space fieldset>div.output>div.item.select { border-left:var(--box-notice3); }
|
||||||
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
||||||
fieldset.xterm>div.layout { clear:both; }
|
fieldset.xterm>div.layout { clear:both; }
|
||||||
fieldset.xterm>form.option>div.item.args1 { display:none; }
|
fieldset.xterm>form.option>div.item.args1 { display:none; }
|
||||||
|
@ -271,7 +271,7 @@ Volcanos("misc", {
|
|||||||
},
|
},
|
||||||
PathJoin: function(dir, file, ext) { file = file||""
|
PathJoin: function(dir, file, ext) { file = file||""
|
||||||
if (file.indexOf(nfs.PS) == 0 || file.indexOf(web.HTTP) == 0) { return file }
|
if (file.indexOf(nfs.PS) == 0 || file.indexOf(web.HTTP) == 0) { return file }
|
||||||
if (dir.indexOf(nfs.SRC) == 0 || dir.indexOf(nfs.USR) == 0) { dir = "/require/"+dir }
|
if (dir.indexOf(nfs.SRC) == 0 || dir.indexOf(nfs.USR) == 0) { dir = nfs.P+dir }
|
||||||
return dir+file+(ext? nfs.PT+ext: "")
|
return dir+file+(ext? nfs.PT+ext: "")
|
||||||
},
|
},
|
||||||
isDebug: function(can) { return can.misc.Search(can, log.DEBUG) == ice.TRUE },
|
isDebug: function(can) { return can.misc.Search(can, log.DEBUG) == ice.TRUE },
|
||||||
|
@ -84,13 +84,12 @@ Volcanos(chat.ONACTION, {_init: function(can, target) { can.db.list = can.misc.S
|
|||||||
_onaction_cmd: function(can) { can.onengine.signal(can, chat.ONACTION_CMD), can.onlayout._init(can) },
|
_onaction_cmd: function(can) { can.onengine.signal(can, chat.ONACTION_CMD), can.onlayout._init(can) },
|
||||||
onaction_cmd: function(can, msg) { can.user.mod.isCmd = true, can.page.ClassList.add(can, can._target, can.Mode(chat.CMD)), can.Conf(html.MARGIN_Y, 128), can.Conf(html.MARGIN_X, 0) },
|
onaction_cmd: function(can, msg) { can.user.mod.isCmd = true, can.page.ClassList.add(can, can._target, can.Mode(chat.CMD)), can.Conf(html.MARGIN_Y, 128), can.Conf(html.MARGIN_X, 0) },
|
||||||
onsearch: function(can, msg, arg) { var fields = msg.Option(ice.MSG_FIELDS).split(mdb.FS); if (arg[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, arg, fields) } if (arg[0] == ctx.COMMAND) { can.onexport.command(can, msg, arg, fields) } },
|
onsearch: function(can, msg, arg) { var fields = msg.Option(ice.MSG_FIELDS).split(mdb.FS); if (arg[0] == mdb.PLUGIN) { can.onexport.plugin(can, msg, arg, fields) } if (arg[0] == ctx.COMMAND) { can.onexport.command(can, msg, arg, fields) } },
|
||||||
onkeydown: function(can, msg, model) {
|
|
||||||
if (can.isCmdMode() && !msg._event.metaKey) { var sub = can._plugins[0].sub; sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: msg._event, can: sub}); return }
|
|
||||||
if (can._current && !msg._event.metaKey) { var sub = can._current.sub; sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: msg._event, can: sub}); return }
|
|
||||||
if (can.onkeymap.selectCtrlN(msg._event, can, can._action, html.DIV_ITEM)) { return }
|
|
||||||
can._keylist = can.onkeymap._parse(msg._event, can, model, can._keylist||[], can._output)
|
|
||||||
},
|
|
||||||
onresize: function(can) { can.onaction.layout(can) },
|
onresize: function(can) { can.onaction.layout(can) },
|
||||||
|
onkeydown: function(event, can, mode) {
|
||||||
|
if (can.isCmdMode() && !event.metaKey) { var sub = can._plugins[0].sub; sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: event, can: sub}); return }
|
||||||
|
// if (can._current && !event.metaKey) { var sub = can._current.sub; sub && can.core.CallFunc([sub, "onaction.onkeydown"], {event: event, can: sub}); return }
|
||||||
|
can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS) || can.onkeymap._parse(event, can, mode)
|
||||||
|
},
|
||||||
|
|
||||||
ontouchstart: function(event, can) { can.touch = can.touch || {}, can.touch.isStart = true, can.touch.startX = event.touches[0].clientX },
|
ontouchstart: function(event, can) { can.touch = can.touch || {}, can.touch.isStart = true, can.touch.startX = event.touches[0].clientX },
|
||||||
ontouchmove: function(event, can) { can.touch.isMove = true, can.touch.distanceX = event.touches[0].clientX - can.touch.startX },
|
ontouchmove: function(event, can) { can.touch.isMove = true, can.touch.distanceX = event.touches[0].clientX - can.touch.startX },
|
||||||
@ -180,21 +179,8 @@ Volcanos(chat.ONENGINE, {_engine: function(event, sup, msg, can, cmds, cb) {
|
|||||||
}})
|
}})
|
||||||
Volcanos(chat.ONKEYMAP, {
|
Volcanos(chat.ONKEYMAP, {
|
||||||
_mode: {
|
_mode: {
|
||||||
webview: {
|
plugin: {
|
||||||
"[": function(event, can, target) { history.back() },
|
Enter: function(event, can) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: "*"})) },
|
||||||
"]": function(event, can, target) { history.forward() },
|
|
||||||
r: function(event, can, target) { can.user.reload(true) },
|
|
||||||
w: function(event, can, target) { can.user.close() },
|
|
||||||
q: function(event, can, target) { window.terminate() },
|
|
||||||
o: function(event, can, target) { window.openurl(location.href) },
|
|
||||||
p: function(event, can, target) { window.openapp("QuickTime Player") },
|
|
||||||
t: function(event, can, target) { window.opencmd("cd contexts; pwd") },
|
|
||||||
f: function(event, can, target) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request({}, {type: mdb.FOREACH})) },
|
|
||||||
},
|
|
||||||
normal: {
|
|
||||||
":": function(event, can) { can.onengine.signal(can, chat.ONCOMMAND_FOCUS), can.onkeymap.prevent(event) },
|
|
||||||
" ": function(event, can) { can.onengine.signal(can, chat.ONSEARCH_FOCUS), can.onkeymap.prevent(event) },
|
|
||||||
Enter: function(event, can) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event)) },
|
|
||||||
Escape: function(event, can) { can.onmotion.clearFloat(can) || can._root.Search && can.onmotion.hidden(can, can._root.Search._target) },
|
Escape: function(event, can) { can.onmotion.clearFloat(can) || can._root.Search && can.onmotion.hidden(can, can._root.Search._target) },
|
||||||
},
|
},
|
||||||
}, _engine: {},
|
}, _engine: {},
|
||||||
|
@ -10,7 +10,7 @@ fieldset.inner>div.output div.content td.text span.datatype { color:var(--code-d
|
|||||||
fieldset.inner>div.output div.content td.text span.package { color:var(--code-package); }
|
fieldset.inner>div.output div.content td.text span.package { color:var(--code-package); }
|
||||||
fieldset.inner>div.output>div.project { font-family:var(--code-font-family); }
|
fieldset.inner>div.output>div.project { font-family:var(--code-font-family); }
|
||||||
fieldset.inner>div.output>div.project div.list { border-left:none; }
|
fieldset.inner>div.output>div.project div.list { border-left:none; }
|
||||||
fieldset.inner>div.output>div.project div.item.select { background-color:unset; }
|
fieldset.inner>div.output>div.project div.item.select:not(:hover) { background-color:unset; }
|
||||||
fieldset.inner:not(.vimer)>div.output>div.project div.expand.open { color:var(--notice-bg-color); }
|
fieldset.inner:not(.vimer)>div.output>div.project div.expand.open { color:var(--notice-bg-color); }
|
||||||
fieldset.inner>div.output>div.project div.zone div.action:not(.hide) { width:100%; }
|
fieldset.inner>div.output>div.project div.zone div.action:not(.hide) { width:100%; }
|
||||||
fieldset.inner>div.output>div.project div.zone div.action>div.item { padding-right:0; width:100%; overflow:hidden; }
|
fieldset.inner>div.output>div.project div.zone div.action>div.item { padding-right:0; width:100%; overflow:hidden; }
|
||||||
@ -20,7 +20,9 @@ fieldset.inner>div.output>div.layout>div.tabs { font-size:var(--code-font-size);
|
|||||||
fieldset.inner>div.output>div.layout>div.tabs>div:hover { background-color:unset; color:unset; box-shadow:unset; }
|
fieldset.inner>div.output>div.layout>div.tabs>div:hover { background-color:unset; color:unset; box-shadow:unset; }
|
||||||
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs { padding-right:0; }
|
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs { padding-right:0; }
|
||||||
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs.select { background-color:var(--output-bg-color); color:unset; border-top:var(--box-notice3); box-shadow:var(--legend-box-shadow);}
|
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs.select { background-color:var(--output-bg-color); color:unset; border-top:var(--box-notice3); box-shadow:var(--legend-box-shadow);}
|
||||||
fieldset.vimer>div.output>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-border3); }
|
fieldset.vimer>div.output.source>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-border3); }
|
||||||
|
fieldset.vimer>div.output.source.normal>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-notice3); }
|
||||||
|
fieldset.vimer>div.output.source.insert>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-danger3); }
|
||||||
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs { border-top:var(--box-border3); border-top-color:transparent; }
|
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs { border-top:var(--box-border3); border-top-color:transparent; }
|
||||||
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs:hover { background-color:var(--output-bg-color); color:unset; box-shadow:var(--legend-box-shadow); }
|
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs:hover { background-color:var(--output-bg-color); color:unset; box-shadow:var(--legend-box-shadow); }
|
||||||
fieldset.inner>div.output>div.layout>div.path { font-size:var(--code-font-size); display:none; }
|
fieldset.inner>div.output>div.layout>div.path { font-size:var(--code-font-size); display:none; }
|
||||||
@ -48,7 +50,7 @@ fieldset.inner>div.output>div.layout>div.layout>div.profile pre>code { padding-l
|
|||||||
fieldset.inner>div.output>div.layout>div.layout>div.profile>div.code { white-space:unset; padding:var(--table-padding); }
|
fieldset.inner>div.output>div.layout>div.layout>div.profile>div.code { white-space:unset; padding:var(--table-padding); }
|
||||||
fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { padding:var(--input-padding); float:left; }
|
fieldset.inner>div.output>div.layout>div.layout>div.profile div.status>div { padding:var(--input-padding); float:left; }
|
||||||
fieldset.inner>div.output>div.layout>div.layout div.content div.tips { color:var(--disable-fg-color); font-style:italic; line-height:var(--code-line-height); position:absolute; top:0; right:10px; }
|
fieldset.inner>div.output>div.layout>div.layout div.content div.tips { color:var(--disable-fg-color); font-style:italic; line-height:var(--code-line-height); position:absolute; top:0; right:10px; }
|
||||||
fieldset.inner>div.output>div.layout>div.layout>fieldset.story { margin:var(--plugin-margin) 0; }
|
fieldset.inner>div.output>div.layout>div.layout>fieldset.story { box-shadow:unset; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs:not(.hide) { background-color:var(--plugin-bg-color); height:var(--code-tabs-height); display:flex; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs:not(.hide) { background-color:var(--plugin-bg-color); height:var(--code-tabs-height); display:flex; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div { height:var(--code-tabs-height); }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div { height:var(--code-tabs-height); }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.icon>div.icon { font-size:26px; line-height:32px; padding:2px 5px; position:sticky; top:0; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.icon>div.icon { font-size:26px; line-height:32px; padding:2px 5px; position:sticky; top:0; }
|
||||||
@ -57,9 +59,9 @@ fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs:hover { background-co
|
|||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>div.tabs { padding:var(--input-padding) var(--button-padding); margin-right:var(--button-margin); height:var(--code-tabs-height); display:flex; align-items:center; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>div.tabs { padding:var(--input-padding) var(--button-padding); margin-right:var(--button-margin); height:var(--code-tabs-height); display:flex; align-items:center; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head { flex-direction:row-reverse; display:flex; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head { flex-direction:row-reverse; display:flex; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div { white-space:pre; padding:0 var(--input-padding); height:var(--code-tabs-height); display:flex; align-items:center; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div { white-space:pre; padding:0 var(--input-padding); height:var(--code-tabs-height); display:flex; align-items:center; }
|
||||||
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.qrcode { padding-top:5px; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.online { margin-left:0 !important; margin-right:0 !important; flex-direction: row-reverse; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.online { margin-left:0 !important; margin-right:0 !important; flex-direction: row-reverse; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.online img { height:24px; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.online img { height:24px; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.qrocde { padding-top:5px; }
|
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar { padding:0; }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar { padding:0; }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar>img { height:32px; clip-path:circle(40%); }
|
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.head>div.avatar>img { height:32px; clip-path:circle(40%); }
|
||||||
fieldset.inner.cmd>div.output>div.layout>div.plug { box-shadow:var(--th-box-shadow); height:var(--action-height); overflow:auto; }
|
fieldset.inner.cmd>div.output>div.layout>div.plug { box-shadow:var(--th-box-shadow); height:var(--action-height); overflow:auto; }
|
||||||
|
@ -10,6 +10,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
var paths = can.core.Split(can.Option(nfs.PATH)); can.Option(nfs.PATH, paths[0])
|
var paths = can.core.Split(can.Option(nfs.PATH)); can.Option(nfs.PATH, paths[0])
|
||||||
can.core.List([nfs.PATH, nfs.FILE, nfs.LINE], function(key) { msg.Option(key) && can.Option(key, msg.Option(key)) })
|
can.core.List([nfs.PATH, nfs.FILE, nfs.LINE], function(key) { msg.Option(key) && can.Option(key, msg.Option(key)) })
|
||||||
can.db = {tabview: {}, history: [], _history: [], toolkit: {}}, can.db.tabview[can.onexport.keys(can)] = msg
|
can.db = {tabview: {}, history: [], _history: [], toolkit: {}}, can.db.tabview[can.onexport.keys(can)] = msg
|
||||||
|
can.db.hash = can.isCmdMode()? can.misc.SearchHash(can): []
|
||||||
can.ui = can.onappend.layout(can, [html.PROJECT, [html.TABS, nfs.PATH, [html.CONTENT, html.PROFILE], html.DISPLAY, html.PLUG]])
|
can.ui = can.onappend.layout(can, [html.PROJECT, [html.TABS, nfs.PATH, [html.CONTENT, html.PROFILE], html.DISPLAY, html.PLUG]])
|
||||||
can.ui._content = can.ui.content, can.ui._profile = can.ui.profile, can.ui._display = can.ui.display
|
can.ui._content = can.ui.content, can.ui._profile = can.ui.profile, can.ui._display = can.ui.display
|
||||||
can.onmotion.clear(can, can.ui.project), can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs), can.onmotion.hidden(can, can.ui.plug)
|
can.onmotion.clear(can, can.ui.project), can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs), can.onmotion.hidden(can, can.ui.plug)
|
||||||
@ -36,7 +37,8 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
"\u25E7": function(event) { var show = can.onmotion.toggle(can, can.ui.project); can.onimport.layout(can), can.isCmdMode() && can.onexport.session(can, PROJECT_HIDE, show? "": html.HIDE) },
|
"\u25E7": function(event) { var show = can.onmotion.toggle(can, can.ui.project); can.onimport.layout(can), can.isCmdMode() && can.onexport.session(can, PROJECT_HIDE, show? "": html.HIDE) },
|
||||||
"\u25E8": shy({transform: "rotate(90deg) translate"+(can.user.isWindows? "(-2px)": "(1px,-2px)")}, function(event) {
|
"\u25E8": shy({transform: "rotate(90deg) translate"+(can.user.isWindows? "(-2px)": "(1px,-2px)")}, function(event) {
|
||||||
if (can.page.isDisplay(can.ui.display)) { return can.onmotion.hidden(can, can.ui.display), can.onimport.layout(can) } can.onaction.exec(event, can) }),
|
if (can.page.isDisplay(can.ui.display)) { return can.onmotion.hidden(can, can.ui.display), can.onimport.layout(can) } can.onaction.exec(event, can) }),
|
||||||
"\u25E8 ": shy({width: 24}, function(event) { if (can.page.isDisplay(can.ui.profile)) { can._msg._profile_hidden = true
|
"\u25E8 ": shy({width: 24}, function(event) { if (can.page.isDisplay(can.ui.profile)) {
|
||||||
|
can._msg._profile_hidden = true
|
||||||
return can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) } can.onaction.show(event, can) }),
|
return can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) } can.onaction.show(event, can) }),
|
||||||
}, function(text, cb) { return cb && {text: [text, html.SPAN, html.VIEW], style: cb.meta, onclick: cb} }))
|
}, function(text, cb) { return cb && {text: [text, html.SPAN, html.VIEW], style: cb.meta, onclick: cb} }))
|
||||||
},
|
},
|
||||||
@ -55,7 +57,10 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
}
|
}
|
||||||
can.page.Append(can, target, [{view: [[html.ITEM, "func"], html.SPAN, (func.current||"func")+nfs.PS+can.ui.content._max+func.percent+lex.SP+can.base.Size(can._msg.result[0].length)], onclick: function(event) {
|
can.page.Append(can, target, [{view: [[html.ITEM, "func"], html.SPAN, (func.current||"func")+nfs.PS+can.ui.content._max+func.percent+lex.SP+can.base.Size(can._msg.result[0].length)], onclick: function(event) {
|
||||||
carte = can.user.carte(event, can, {_style: nfs.PATH}, list, function(ev, button) { last[button] = true, carte.close()
|
carte = can.user.carte(event, can, {_style: nfs.PATH}, list, function(ev, button) { last[button] = true, carte.close()
|
||||||
can.onimport.tabview(can, "", can.Option(nfs.FILE), can.core.Split(button, nfs.DF, nfs.DF).pop())
|
var line = can.core.Split(button, nfs.DF, nfs.DF).pop()
|
||||||
|
can.onimport.tabview(can, "", can.Option(nfs.FILE), line, function() {
|
||||||
|
can.onaction.selectLine(can, line, true)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
can.onmotion.delay(can, function() { can.page.Select(can, carte._target, html.DIV_ITEM, function(target) {
|
can.onmotion.delay(can, function() { can.page.Select(can, carte._target, html.DIV_ITEM, function(target) {
|
||||||
can.onappend.style(can, can.base.beginWith(target.innerText, "- ")? aaa.PRIVATE: aaa.PUBLIC, target)
|
can.onappend.style(can, can.base.beginWith(target.innerText, "- ")? aaa.PRIVATE: aaa.PUBLIC, target)
|
||||||
@ -93,18 +98,26 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
tabview: function(can, path, file, line, cb) { path = path||can.Option(nfs.PATH); var key = can.onexport.keys(can, path, file)
|
tabview: function(can, path, file, line, cb) { path = path||can.Option(nfs.PATH); var key = can.onexport.keys(can, path, file)
|
||||||
function isIndex() { return line == ctx.INDEX } function isSpace() { return line == web.SPACE }
|
function isIndex() { return line == ctx.INDEX } function isSpace() { return line == web.SPACE }
|
||||||
function show(skip) { can._msg && can._msg.Option && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.db.tabview[key]
|
function show(skip) { can._msg && can._msg.Option && can._msg.Option(nfs.LINE, can.Option(nfs.LINE)), can._msg = can.db.tabview[key]
|
||||||
can.Option(can.onimport.history(can, {path: path, file: file, line: line||can._msg.Option(nfs.LINE)||can.onexport.session(can, SELECT_LINE+nfs.DF+path+file)||1}))
|
can.Option(can.onimport.history(can, {path: path, file: file, line: can._msg.Option(nfs.LINE)||can.onexport.session(can, SELECT_LINE+nfs.DF+path+file)||1}))
|
||||||
can.onsyntax._init(can, can._msg, function(content) { var msg = can._msg; can.onexport.hash(can), can.isCmdMode() && can.onexport.title(can, (isIndex()||isSpace()? "": path)+file)
|
can.onsyntax._init(can, can._msg, function(content) { var msg = can._msg; can.onexport.hash(can), can.isCmdMode() && can.onexport.title(can, (isIndex()||isSpace()? "": path)+file)
|
||||||
can.onmotion.select(can, can.ui._tabs, html.DIV_TABS, msg._tab), can.isCmdMode() && msg._tab.scrollIntoView(), can.onmotion.toggle(can, can.ui.path, true)
|
can.onmotion.select(can, can.ui._tabs, html.DIV_TABS, msg._tab), can.isCmdMode() && msg._tab.scrollIntoView(), can.onmotion.toggle(can, can.ui.path, true)
|
||||||
if (isSpace()) { can.ui.path.innerHTML = can.page.Format(html.A, can.base.trimPrefix(can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)}), location.origin))
|
if (isSpace()) {
|
||||||
|
can.page.isDisplay(can.ui.zone.space._target) || can.ui.zone.space._legend.click()
|
||||||
|
can.base.contains(file, "/") || can.onmotion.hidden(can, can.ui.path)
|
||||||
|
can.ui.path.innerHTML = can.page.Format(html.A, can.base.trimPrefix(can.misc.MergePodCmd(can, {pod: file}), location.origin))
|
||||||
} else if (isIndex()) { can.onmotion.hidden(can, can.ui.path)
|
} else if (isIndex()) { can.onmotion.hidden(can, can.ui.path)
|
||||||
} else { can.onimport.__tabPath(can) }
|
can.page.isDisplay(can.ui.zone.module._target) || can.ui.zone.module._legend.click()
|
||||||
|
} else { can.onimport.__tabPath(can)
|
||||||
|
can.page.isDisplay(can.ui.zone.source._target) || can.ui.zone.source._legend.click()
|
||||||
|
}
|
||||||
can.page.SelectChild(can, can.ui._content.parentNode, can.page.Keys(html.DIV_CONTENT, html.DIV_LAYOUT, html.FIELDSET_STORY, [[[html.IFRAME, html.CONTENT]]]), function(target) {
|
can.page.SelectChild(can, can.ui._content.parentNode, can.page.Keys(html.DIV_CONTENT, html.DIV_LAYOUT, html.FIELDSET_STORY, [[[html.IFRAME, html.CONTENT]]]), function(target) {
|
||||||
can.onmotion.toggle(can, target, target == content)
|
can.onmotion.toggle(can, target, target == content)
|
||||||
}), can.ui.content._plugin = msg._plugin
|
}), can.ui.content._plugin = msg._plugin
|
||||||
can.page.SelectChild(can, can.ui._profile.parentNode, can.page.Keys(html.DIV_PROFILE, [[[html.IFRAME, html.PROFILE]]]), function(target) {
|
can.page.SelectChild(can, can.ui._profile.parentNode, can.page.Keys(html.DIV_PROFILE, [[[html.IFRAME, html.PROFILE]]]), function(target) {
|
||||||
if (target == msg._profile) { can.ui.profile = msg._profile, msg._profile_hidden || can.onmotion.toggle(can, target, true) }
|
if (target == msg._profile) { can.ui.profile = msg._profile, msg._profile_hidden || can.onmotion.toggle(can, target, true) }
|
||||||
}), can.ui.profile._plugin = msg._profile
|
}), can.ui.profile._plugin = msg._profile
|
||||||
|
if (isSpace()) { var item = can.ui.zone.space[file]; can.onmotion.select(can, item.parentNode, html.DIV_ITEM, item) }
|
||||||
|
can.page.ClassList.set(can, can._output, nfs.SOURCE, !isIndex() && !isSpace())
|
||||||
can.onimport.layout(can), can.ui.current && can.onmotion.toggle(can, can.ui.current, !isIndex() && !isSpace())
|
can.onimport.layout(can), can.ui.current && can.onmotion.toggle(can, can.ui.current, !isIndex() && !isSpace())
|
||||||
skip || can.onmotion.delay(can, function() { can.onaction.selectLine(can, can.Option(nfs.LINE), true) }), can.base.isFunc(cb) && cb(), cb = null
|
skip || can.onmotion.delay(can, function() { can.onaction.selectLine(can, can.Option(nfs.LINE), true) }), can.base.isFunc(cb) && cb(), cb = null
|
||||||
var ls = can.onexport.path(can).split(nfs.PS); if (ls.length > 4) { ls = [ls.slice(0, 2).join(nfs.PS)+"/.../"+ls.slice(-2).join(nfs.PS)] } can.Status(kit.Dict(nfs.FILE, ls.join(nfs.PS)))
|
var ls = can.onexport.path(can).split(nfs.PS); if (ls.length > 4) { ls = [ls.slice(0, 2).join(nfs.PS)+"/.../"+ls.slice(-2).join(nfs.PS)] } can.Status(kit.Dict(nfs.FILE, ls.join(nfs.PS)))
|
||||||
@ -117,7 +130,8 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
} else {
|
} else {
|
||||||
name = file.split(mdb.FS)[0].split(isIndex()? nfs.PT: nfs.PS).pop()
|
name = file.split(mdb.FS)[0].split(isIndex()? nfs.PT: nfs.PS).pop()
|
||||||
}
|
}
|
||||||
var tabs = can.onimport.tabs(can, [{name: name, text: file, _menu: shy([nfs.SAVE, nfs.TRASH, web.REFRESH], function(event, button, meta) {
|
line && msg.Option(nfs.LINE, line)
|
||||||
|
var tabs = can.onimport.tabs(can, [{name: name, text: (isIndex() || isSpace()? "": path)+file, _menu: shy([nfs.SAVE, nfs.TRASH, web.REFRESH], function(event, button, meta) {
|
||||||
can.request(event, msg), can.onaction[button](event, can, button)
|
can.request(event, msg), can.onaction[button](event, can, button)
|
||||||
})}], function(event, tabs) { can._tab = msg._tab = tabs._target, show(skip), skip = true
|
})}], function(event, tabs) { can._tab = msg._tab = tabs._target, show(skip), skip = true
|
||||||
can.onmotion.delay(can, function() { var item = can.ui.zone && can.ui.zone.source && can.ui.zone.source[path+file]; if (!item) { return }
|
can.onmotion.delay(can, function() { var item = can.ui.zone && can.ui.zone.source && can.ui.zone.source[path+file]; if (!item) { return }
|
||||||
@ -137,7 +151,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
project: function(can) { can.onimport.zone(can, can.core.Item(can.onfigure, function(name, cb) { if (can.base.isFunc(cb)) {
|
project: function(can) { can.onimport.zone(can, can.core.Item(can.onfigure, function(name, cb) { if (can.base.isFunc(cb)) {
|
||||||
return {name: name, _toggle: function(zone) { var target = can.page.isDisplay(zone._target)? zone._target: can.ui.zone.source._target
|
return {name: name, _toggle: function(zone) { var target = can.page.isDisplay(zone._target)? zone._target: can.ui.zone.source._target
|
||||||
can.core.Item(can.ui.zone, function(key, zone) { key.indexOf(nfs.PS) > 0 || zone.toggle(zone._target == target) }), can.onimport.layout(can)
|
can.core.Item(can.ui.zone, function(key, zone) { key.indexOf(nfs.PS) > 0 || zone.toggle(zone._target == target) }), can.onimport.layout(can)
|
||||||
}, _init: function(target, zone) { return cb(can, target, zone) }}
|
}, _init: function(target, zone) { return cb(can, target, zone, can.db.hash) }}
|
||||||
} }), can.ui.project) },
|
} }), can.ui.project) },
|
||||||
profile: function(can, msg) { var _msg = can.db.tabview[can.onexport.keys(can)]; _msg.Option(html.WIDTH, msg.Option(html.WIDTH)), border = 1
|
profile: function(can, msg) { var _msg = can.db.tabview[can.onexport.keys(can)]; _msg.Option(html.WIDTH, msg.Option(html.WIDTH)), border = 1
|
||||||
var height = can.ui.content.offsetHeight, width = can.onexport.size(can, _msg.Option(html.WIDTH)||0.5, can.ConfWidth()-can.ui.project.offsetWidth)+border
|
var height = can.ui.content.offsetHeight, width = can.onexport.size(can, _msg.Option(html.WIDTH)||0.5, can.ConfWidth()-can.ui.project.offsetWidth)+border
|
||||||
@ -153,7 +167,10 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
can.onimport.process(can, msg, can.ui.profile, height, width-border, function(sub) { can.ui.profile._plugin = sub, can.page.style(can, sub._output, html.MAX_WIDTH, "")
|
can.onimport.process(can, msg, can.ui.profile, height, width-border, function(sub) { can.ui.profile._plugin = sub, can.page.style(can, sub._output, html.MAX_WIDTH, "")
|
||||||
sub.onaction.close = function() { can.onexport.session(can, PROFILE_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE), ""), can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) }
|
sub.onaction.close = function() {
|
||||||
|
can._msg._profile_hidden = true
|
||||||
|
can.onexport.session(can, PROFILE_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE), ""),
|
||||||
|
can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) }
|
||||||
sub.Conf(ctx.ARGS) && can.onexport.session(can, PROFILE_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE), JSON.stringify(sub.Conf(ctx.ARGS)))
|
sub.Conf(ctx.ARGS) && can.onexport.session(can, PROFILE_ARGS+can.Option(nfs.PATH)+can.Option(nfs.FILE), JSON.stringify(sub.Conf(ctx.ARGS)))
|
||||||
can.page.style(can, can.ui.profile, html.WIDTH, width+border, html.MAX_WIDTH, width+border), can.onimport.layout(can)
|
can.page.style(can, can.ui.profile, html.WIDTH, width+border, html.MAX_WIDTH, width+border), can.onimport.layout(can)
|
||||||
})
|
})
|
||||||
@ -233,7 +250,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) {
|
can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) {
|
||||||
var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profile.offsetWidth-1, true)
|
var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profile.offsetWidth-1, true)
|
||||||
var sub = can.ui.content._plugin; if (!sub) { return } if (height == sub.ConfHeight()+sub.onexport.actionHeight(sub)+sub.onexport.statusHeight(sub) && width == sub.ConfWidth()) { return }
|
var sub = can.ui.content._plugin; if (!sub) { return } if (height == sub.ConfHeight()+sub.onexport.actionHeight(sub)+sub.onexport.statusHeight(sub) && width == sub.ConfWidth()) { return }
|
||||||
sub.onimport.size(sub, height-20, width, false), can.page.style(can, sub._target, html.HEIGHT, height-20)
|
sub.onimport.size(sub, height, width, false), can.page.style(can, sub._target, html.HEIGHT, height)
|
||||||
})
|
})
|
||||||
can.page.SelectChild(can, can.ui.project, html.DIV_ZONE, function(target, index, list) {
|
can.page.SelectChild(can, can.ui.project, html.DIV_ZONE, function(target, index, list) {
|
||||||
can.page.SelectChild(can, target, html.DIV_ITEM, function(target) { var height = can.ui.project.offsetHeight - list.length*target.offsetHeight
|
can.page.SelectChild(can, target, html.DIV_ITEM, function(target) { var height = can.ui.project.offsetHeight - list.length*target.offsetHeight
|
||||||
@ -244,7 +261,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
},
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos(chat.ONFIGURE, {
|
Volcanos(chat.ONFIGURE, {
|
||||||
source: function(can, target, zone) { var hash = can.misc.SearchHash(can)
|
source: function(can, target, zone, hash) {
|
||||||
function show(target, zone, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) {
|
function show(target, zone, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) {
|
||||||
can.onimport.tree(can, can.core.List(msg.Table(), function(item) { item._init = function(target) { can.ui.zone.source[path+item.path] = target }
|
can.onimport.tree(can, can.core.List(msg.Table(), function(item) { item._init = function(target) { can.ui.zone.source[path+item.path] = target }
|
||||||
if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } return item
|
if (can.Option(nfs.FILE).indexOf(item.path) == 0) { item.expand = true } return item
|
||||||
@ -252,11 +269,18 @@ Volcanos(chat.ONFIGURE, {
|
|||||||
can.isCmdMode() && hash.length > 1 && can.onimport.tabview(can, hash[0], hash[1], hash[2])
|
can.isCmdMode() && hash.length > 1 && can.onimport.tabview(can, hash[0], hash[1], hash[2])
|
||||||
}, true) } show(target, zone, can.Option(nfs.PATH))
|
}, true) } show(target, zone, can.Option(nfs.PATH))
|
||||||
},
|
},
|
||||||
module: function(can, target, zone) { zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) {
|
module: function(can, target, zone, hash) {
|
||||||
can.onimport.tree(can, msg.Table(), function(event, item) { can.onimport.tabview(can, "", item.index, ctx.INDEX) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(msg.Length())
|
zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) {
|
||||||
}) }, zone.toggle(false) },
|
can.onimport.tree(can, msg.Table(function(value) {
|
||||||
plugin: function(can, target, zone) { zone._delay_init = function() { var total = 0
|
value.expand = hash[2] == ctx.INDEX && hash[1] == value.index
|
||||||
can.onimport.tree(can, can.core.ItemKeys(can.onengine.plugin.meta, function(key) { if (key[0] != "_") { return total++, {index: key} } }),
|
return value
|
||||||
|
}), function(event, item) { can.onimport.tabview(can, "", item.index, ctx.INDEX) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(msg.Length())
|
||||||
|
}) }, zone.toggle(false)
|
||||||
|
},
|
||||||
|
plugin: function(can, target, zone, hash) { zone._delay_init = function() { var total = 0
|
||||||
|
can.onimport.tree(can, can.core.ItemKeys(can.onengine.plugin.meta, function(key) { if (key[0] != "_") {
|
||||||
|
return total++, {index: key, expand: hash[2] == ctx.INDEX && hash[1] == "can."+key}
|
||||||
|
} }),
|
||||||
function(event, item) { can.onimport.tabview(can, "", can.core.Keys(ice.CAN, item.index), ctx.INDEX) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(total)
|
function(event, item) { can.onimport.tabview(can, "", can.core.Keys(ice.CAN, item.index), ctx.INDEX) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(total)
|
||||||
}, zone.toggle(false) },
|
}, zone.toggle(false) },
|
||||||
})
|
})
|
||||||
@ -267,7 +291,8 @@ Volcanos(chat.ONSYNTAX, {
|
|||||||
if (msg.Option(ctx.INDEX)) { return can.onsyntax._index(can, msg, function(target) { cb(can.ui.content = msg._content = target) }, can.ui._content.parentNode) }
|
if (msg.Option(ctx.INDEX)) { return can.onsyntax._index(can, msg, function(target) { cb(can.ui.content = msg._content = target) }, can.ui._content.parentNode) }
|
||||||
can.onsyntax._split(can, msg, cb, key)
|
can.onsyntax._split(can, msg, cb, key)
|
||||||
},
|
},
|
||||||
_space: function(can, msg, cb, parent) { if (can.Option(nfs.LINE) == web.SPACE) { can.ui.zone.space && can.onmotion.delay(can, function() { can.ui.zone.space.refresh() }, 3000)
|
_space: function(can, msg, cb, parent) { if (can.Option(nfs.LINE) == web.SPACE) {
|
||||||
|
// can.ui.zone.space && can.onmotion.delay(can, function() { can.ui.zone.space.refresh() }, 3000)
|
||||||
var target = can.page.Append(can, parent, [{view: [html.CONTENT, html.IFRAME], src: can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)}), height: can.ui.content.offsetHeight, width: can.ui.content.offsetWidth}])._target
|
var target = can.page.Append(can, parent, [{view: [html.CONTENT, html.IFRAME], src: can.misc.MergePodCmd(can, {pod: can.Option(nfs.FILE)}), height: can.ui.content.offsetHeight, width: can.ui.content.offsetWidth}])._target
|
||||||
return can.base.isFunc(cb) && cb(target), true
|
return can.base.isFunc(cb) && cb(target), true
|
||||||
} },
|
} },
|
||||||
@ -284,7 +309,7 @@ Volcanos(chat.ONSYNTAX, {
|
|||||||
sub.onexport.output = function() { can.onimport.layout(can) }
|
sub.onexport.output = function() { can.onimport.layout(can) }
|
||||||
sub.onexport.record = function(_, value, key, item) { item.file && can.onimport.tabview(can, item.path, item.file, item.line); return true }
|
sub.onexport.record = function(_, value, key, item) { item.file && can.onimport.tabview(can, item.path, item.file, item.line); return true }
|
||||||
sub.onexport.title = function(_, title) { can.page.Modify(can, can.page.SelectOne(can, msg._tab, html.SPAN_NAME), title) }
|
sub.onexport.title = function(_, title) { can.page.Modify(can, can.page.SelectOne(can, msg._tab, html.SPAN_NAME), title) }
|
||||||
sub.onimport.size(sub, can.ui.content.offsetHeight-20, can.ui.content.offsetWidth, false)
|
sub.onimport.size(sub, can.ui.content.offsetHeight, can.ui.content.offsetWidth, false)
|
||||||
msg._plugin = sub, can.base.isFunc(cb) && cb(sub._target), sub.Focus()
|
msg._plugin = sub, can.base.isFunc(cb) && cb(sub._target), sub.Focus()
|
||||||
}, parent)
|
}, parent)
|
||||||
},
|
},
|
||||||
@ -386,16 +411,33 @@ Volcanos(chat.ONACTION, {
|
|||||||
line = target, can.Status(nfs.LINE, can.onexport.position(can, can.Option(nfs.LINE, n)))
|
line = target, can.Status(nfs.LINE, can.onexport.position(can, can.Option(nfs.LINE, n)))
|
||||||
}); if (!can.base.isObject(line)) { return 0 }
|
}); if (!can.base.isObject(line)) { return 0 }
|
||||||
can.page.Select(can, line, "td.text", function(target) {
|
can.page.Select(can, line, "td.text", function(target) {
|
||||||
can.current = {line: line, next: function() { return line.nextSibling }, prev: function() { return line.previousSibling },
|
can.current = {line: line,
|
||||||
|
next: function() {
|
||||||
|
return can.page.tagis(line.nextSibling, "tr.line")? line.nextSibling: undefined
|
||||||
|
},
|
||||||
|
prev: function() {
|
||||||
|
return can.page.tagis(line.previousSibling, "tr.line")? line.previousSibling: undefined
|
||||||
|
},
|
||||||
text: function(text) { return text != undefined && can.onaction.modifyLine(can, line, text), target.innerText },
|
text: function(text) { return text != undefined && can.onaction.modifyLine(can, line, text), target.innerText },
|
||||||
scroll: function(count) { if (count) { content.scrollTop += count*can.current.line.offsetHeight }
|
scroll: function(count) { if (count) { content.scrollTop += count*can.current.line.offsetHeight }
|
||||||
return parseFloat((can.current.line.offsetTop-content.scrollTop)/can.current.line.offsetHeight)
|
return parseFloat((can.current.line.offsetTop-content.scrollTop)/can.current.line.offsetHeight)
|
||||||
}, window: function() { return parseFloat(content.offsetHeight/can.current.line.offsetHeight) },
|
}, window: function() { return parseFloat(content.offsetHeight/can.current.line.offsetHeight) },
|
||||||
}, can.onimport.history(can, {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()})
|
}, can.onimport.history(can, {path: can.Option(nfs.PATH), file: can.Option(nfs.FILE), line: can.Option(nfs.LINE), text: can.current.text()})
|
||||||
|
var scroll = can.current.scroll(), window = can.current.window()
|
||||||
|
if (0 < scroll && scroll < 2) {
|
||||||
|
can.current.scroll(-1)
|
||||||
|
} else if (window-3 < scroll && scroll < window) {
|
||||||
|
can.current.scroll(1)
|
||||||
|
} else if (scroll < 2 || scroll > window-3) {
|
||||||
|
can.onaction.scrollIntoView(can)
|
||||||
|
}
|
||||||
|
can._msg.Option(nfs.LINE, can.Option(nfs.LINE))
|
||||||
|
can.onexport.hash(can)
|
||||||
|
can.onimport.__tabPath(can, false)
|
||||||
can.isCmdMode() && can.onexport.session(can, SELECT_LINE+nfs.DF+can.Option(nfs.PATH)+can.Option(nfs.FILE))
|
can.isCmdMode() && can.onexport.session(can, SELECT_LINE+nfs.DF+can.Option(nfs.PATH)+can.Option(nfs.FILE))
|
||||||
scroll && can.onaction.scrollIntoView(can), can.onengine.signal(can, LINE_SELECT, can._msg)
|
can.onengine.signal(can, LINE_SELECT, can._msg), can.onaction._selectLine(can)
|
||||||
}); return can.onexport.hash(can), can.onexport.line(can, line)
|
}); return can.onexport.hash(can), can.onexport.line(can, line)
|
||||||
},
|
}, _selectLine: function(can) {},
|
||||||
scrollIntoView: function(can, offset) { can.ui.content.scrollTo(0, (can.onexport.line(can, can.current.line)-can.current.window()/4)*can.current.line.offsetHeight) },
|
scrollIntoView: function(can, offset) { can.ui.content.scrollTo(0, (can.onexport.line(can, can.current.line)-can.current.window()/4)*can.current.line.offsetHeight) },
|
||||||
searchLine: function(event, can, value) { var offset = 0; can.page.Select(can, can.ui.content, "tr.line", function(tr) {
|
searchLine: function(event, can, value) { var offset = 0; can.page.Select(can, can.ui.content, "tr.line", function(tr) {
|
||||||
tr == can.current.line && can.page.Select(can, tr, "td.text>span", function(span) { offset += span.innerText.length;
|
tr == can.current.line && can.page.Select(can, tr, "td.text>span", function(span) { offset += span.innerText.length;
|
||||||
@ -478,10 +520,6 @@ Volcanos(chat.ONACTION, {
|
|||||||
if (can.page.isDisplay(can.ui.display)) { return can.onmotion.hidden(can, can.ui.display), can.onimport.layout(can) }
|
if (can.page.isDisplay(can.ui.display)) { return can.onmotion.hidden(can, can.ui.display), can.onimport.layout(can) }
|
||||||
if (can.page.isDisplay(can.ui.profile)) { return can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) }
|
if (can.page.isDisplay(can.ui.profile)) { return can.onmotion.hidden(can, can.ui.profile), can.onimport.layout(can) }
|
||||||
},
|
},
|
||||||
onkeydown: function(event, can) {
|
|
||||||
if (can.onkeymap.selectCtrlN(event, can, can.ui.tabs, html.DIV_TABS)) { return }
|
|
||||||
can.db._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can.db._key_list, can.ui.content)
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONEXPORT, {
|
Volcanos(chat.ONEXPORT, {
|
||||||
path: function(can) { return can.Option(nfs.PATH)+can.Option(nfs.FILE) },
|
path: function(can) { return can.Option(nfs.PATH)+can.Option(nfs.FILE) },
|
||||||
|
@ -18,8 +18,12 @@ fieldset.vimer>div.output.normal>div.project div.item.current { background-color
|
|||||||
fieldset.vimer>div.output.insert>div.project div.item.current { background-color:var(--hover-bg-color); border-right:var(--box-danger3); }
|
fieldset.vimer>div.output.insert>div.project div.item.current { background-color:var(--hover-bg-color); border-right:var(--box-danger3); }
|
||||||
fieldset.vimer>div.output.normal>div.project div.expand.open { color:var(--notice-bg-color); }
|
fieldset.vimer>div.output.normal>div.project div.expand.open { color:var(--notice-bg-color); }
|
||||||
fieldset.vimer>div.output.insert>div.project div.expand.open { color:var(--danger-bg-color); }
|
fieldset.vimer>div.output.insert>div.project div.expand.open { color:var(--danger-bg-color); }
|
||||||
fieldset.vimer>div.output.normal>div.project div.item.select { border-right:var(--box-notice3); }
|
|
||||||
fieldset.vimer>div.output.insert>div.project div.item.select { border-right:var(--box-danger3); }
|
|
||||||
fieldset.vimer>div.output>div.project div.item.select { border-right:var(--box-border3); }
|
|
||||||
fieldset.vimer>div.output>div.project div.expand.open { color:unset; }
|
fieldset.vimer>div.output>div.project div.expand.open { color:unset; }
|
||||||
div.input.vimer.open.float input[type=text] { width:100% !important; }
|
div.input.vimer.open.float input[type=text] { width:100% !important; }
|
||||||
|
|
||||||
|
fieldset.vimer>div.output.source>div.project div.item.select { border-right:var(--box-border3); }
|
||||||
|
fieldset.vimer>div.output.source.normal>div.project div.item.select { border-right:var(--box-notice3); }
|
||||||
|
fieldset.vimer>div.output.source.insert>div.project div.item.select { border-right:var(--box-danger3); }
|
||||||
|
fieldset.vimer>div.output.source>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-border3); }
|
||||||
|
fieldset.vimer>div.output.source.normal>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-notice3); }
|
||||||
|
fieldset.vimer>div.output.source.insert>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-danger3); }
|
||||||
|
@ -1,31 +1,25 @@
|
|||||||
Volcanos(chat.ONIMPORT, {
|
Volcanos(chat.ONIMPORT, {
|
||||||
_init: function(can, msg, cb) { if (can.user.mod.isPod) { delete(can.onfigure.space), delete(can.onfigure.repos) }
|
_init: function(can, msg, cb) { can.onappend.style(can, code.VIMER); if (can.user.mod.isPod) { delete(can.onfigure.space) }
|
||||||
can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(can) })
|
can.require(["/plugin/local/code/inner.js"], function(can) { can.onimport._last_init(can, msg, function() {
|
||||||
can.require(["/plugin/local/code/inner.js"], function(can) { can.onimport._last_init(can, msg, function() { can.onappend.style(can, code.VIMER)
|
|
||||||
can.db.undo = [], can.db.redo = [], can.onimport._input(can), cb && cb(msg)
|
can.db.undo = [], can.db.redo = [], can.onimport._input(can), cb && cb(msg)
|
||||||
}) })
|
}) })
|
||||||
},
|
},
|
||||||
_input: function(can) { var ui = can.page.Append(can, can.ui.content.parentNode, [
|
_input: function(can) { var ui = can.page.Append(can, can.ui.content.parentNode, [
|
||||||
{view: [code.CURRENT, html.INPUT], spellcheck: false, onkeydown: function(event) { can.onimport._value(can); if (event.metaKey) { return }
|
{view: [code.CURRENT, html.INPUT], spellcheck: false, onkeydown: function(event) {
|
||||||
can.db._keylist = can.onkeymap._parse(event, can, can.db.mode+(event.ctrlKey? "_ctrl": ""), can.db._keylist, can.ui.current)
|
can.onimport._value(can), can.onkeymap._parse(event, can, can.db.mode+(event.ctrlKey? "_ctrl": ""), can.ui.current)
|
||||||
if (can.db.mode == mdb.NORMAL) { can.onkeymap.prevent(event) } if (can.db.mode == mdb.INSERT) { can.db._keylist = [] }
|
if (can.db.mode == mdb.INSERT) { can.ui.current._keylist = [] }
|
||||||
}, onkeyup: function(event) { can.onimport._value(can); if (event.metaKey) { return } can.onkeymap._complete(event, can)
|
if (can.db.mode == mdb.NORMAL) { can.onkeymap.prevent(event) }
|
||||||
|
}, onkeyup: function(event) { can.onimport._value(can); can.onkeymap._complete(event, can)
|
||||||
}, onfocus: function(event) { can.current.line.appendChild(can.ui.complete)
|
}, onfocus: function(event) { can.current.line.appendChild(can.ui.complete)
|
||||||
}, onclick: function(event) { can.onkeymap._insert(event, can)
|
}, onclick: function(event) { can.onkeymap._insert(event, can)
|
||||||
if (event.metaKey) { var target = event.target, begin = target.selectionStart, end = begin, reg = /[a-zA-Z0-9]/
|
|
||||||
for (begin; begin > 0; begin--) { if (!reg.test(target.value.slice(begin, begin+1))) { begin++; break } }
|
|
||||||
for (end; end < target.value.length; end++) { if (!reg.test(target.value.slice(end, end+1))) { break } }
|
|
||||||
can.onaction.searchLine(event, can, target.value.slice(begin, end))
|
|
||||||
}
|
|
||||||
can.onmotion.delay(can, function() { can.page.SelectChild(can, can.ui.complete, html.DIV, function(target) {
|
|
||||||
target.innerText = can.ui.current.value.slice(0, can.ui.current.selectionStart)
|
|
||||||
}) })
|
|
||||||
}}, {view: [[code.COMPLETE]]},
|
}}, {view: [[code.COMPLETE]]},
|
||||||
]); can.ui.current = ui.current, can.ui.complete = ui.complete, can.onkeymap._plugin(can) },
|
]); can.ui.current = ui.current, can.ui.complete = ui.complete, can.onkeymap._plugin(can) },
|
||||||
_value: function(can) { can.onimport.__tabPath(can, true), can.db.mode == mdb.INSERT && can.onmotion.delay(can, function() { can.current.text(can.ui.current.value) }) },
|
_value: function(can) { can.onimport.__tabPath(can, true)
|
||||||
|
can.db.mode == mdb.INSERT && can.onmotion.delay(can, function() { can.current.text(can.ui.current.value) })
|
||||||
|
},
|
||||||
}, [""])
|
}, [""])
|
||||||
Volcanos(chat.ONFIGURE, {
|
Volcanos(chat.ONFIGURE, {
|
||||||
source: function(can, target, zone) { var hash = can.misc.SearchHash(can), args = [can.Option(nfs.PATH), can.Option(nfs.FILE)]
|
source: function(can, target, zone, hash) { var args = [can.Option(nfs.PATH), can.Option(nfs.FILE)]
|
||||||
can.run({}, [ctx.ACTION, nfs.REPOS], function(msg) { var paths = can.db.paths
|
can.run({}, [ctx.ACTION, nfs.REPOS], function(msg) { var paths = can.db.paths
|
||||||
can.core.List(paths.concat(msg.Table(function(value) { return value.path })), function(p) {
|
can.core.List(paths.concat(msg.Table(function(value) { return value.path })), function(p) {
|
||||||
if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.isIn(p, nfs.USR_WEBSOCKET, nfs.USR_GO_QRCODE, nfs.USR_GO_GIT, nfs.USR_ICONS, nfs.USR_GEOAREA, nfs.USR_PROGRAM, nfs.USR_NODE_MODULES)) { return }
|
if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.isIn(p, nfs.USR_WEBSOCKET, nfs.USR_GO_QRCODE, nfs.USR_GO_GIT, nfs.USR_ICONS, nfs.USR_GEOAREA, nfs.USR_PROGRAM, nfs.USR_NODE_MODULES)) { return }
|
||||||
@ -35,67 +29,85 @@ Volcanos(chat.ONFIGURE, {
|
|||||||
zone._icon(kit.Dict(
|
zone._icon(kit.Dict(
|
||||||
web.REFRESH, function(event) { show(target, zone, path) },
|
web.REFRESH, function(event) { show(target, zone, path) },
|
||||||
mdb.CREATE, function(event, button) { can.onaction.module(event, can, nfs.MODULE) },
|
mdb.CREATE, function(event, button) { can.onaction.module(event, can, nfs.MODULE) },
|
||||||
)), zone._total(msg.Length()), can.onmotion.clear(can, target)
|
)), zone._total(msg.Length())
|
||||||
var cache, list = can.core.List(msg.Table(), function(item) {
|
var cache, list = can.core.List(msg.Table(), function(item) {
|
||||||
if (path == "src/" && can.base.isIn(item.path, "main.ico", "main.svg", "version.go", "binpack.go", "binpack_usr.go")) { return }
|
if (path == nfs.SRC && can.base.isIn(item.path, "main.ico", "main.svg", "version.go", "binpack.go", "binpack_usr.go")) { return }
|
||||||
if (path == "usr/release/" && can.base.isIn(item.path, "conf.go", "binpack.go")) { return }
|
if (path == nfs.USR_RELEASE && can.base.isIn(item.path, "conf.go", "binpack.go")) { return }
|
||||||
if (path == args[0] && args[1].indexOf(item.path) == 0) { item.expand = true }
|
if (path == args[0] && args[1].indexOf(item.path) == 0) { item.expand = true }
|
||||||
item._init = function(target) { can.ui.zone.source[path+item.path] = target
|
item._init = function(target) { can.ui.zone.source[path+item.path] = target }
|
||||||
item._remove = function() { can.page.Remove(can, target.parentNode), delete(cache[item.path]) }
|
|
||||||
}
|
|
||||||
return item
|
return item
|
||||||
})
|
}); can.onmotion.clear(can, target)
|
||||||
cache = can.onimport.tree(can, list, function(event, item) {
|
cache = can.onimport.tree(can, list, function(event, item) {
|
||||||
can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path)
|
can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path)
|
||||||
}, function(event, target, item) {
|
}, function(event, target, item) {
|
||||||
var msg = can.request(event); msg.Option(nfs.PATH, path), msg.Option(nfs.FILE, item.path)
|
var msg = can.request(event); msg.Option(nfs.PATH, path), msg.Option(nfs.FILE, item.path)
|
||||||
}, target, cache)
|
}, target, cache)
|
||||||
can.isCmdMode() && hash.length > 1 && can.onimport.tabview(can, hash[0], hash[1], hash[2]), hash = []
|
can.onmotion.delay(can, function() {
|
||||||
}, true) }
|
if (hash[2] == ctx.INDEX) {
|
||||||
if (paths.length == 1) { return show(target, zone, paths[0]) } can.page.Remove(can, zone._action)
|
if (can.base.beginWith(hash[1], "can.")) {
|
||||||
|
can.ui.zone.plugin._legend.click()
|
||||||
|
} else {
|
||||||
|
can.ui.zone.module._legend.click()
|
||||||
|
}
|
||||||
|
} else if (hash[2] == web.SPACE) {
|
||||||
|
can.ui.zone.space._legend.click()
|
||||||
|
} else {
|
||||||
|
hash.length > 1 && can.onimport.tabview(can, hash[0], hash[1], hash[2])
|
||||||
|
} hash = []
|
||||||
|
})
|
||||||
|
}, true) } if (paths.length == 1) { return show(target, zone, paths[0]) } can.page.Remove(can, zone._action)
|
||||||
can.onimport.zone(can, can.core.List(paths, function(path) {
|
can.onimport.zone(can, can.core.List(paths, function(path) {
|
||||||
return kit.Dict(mdb.NAME, path, path == args[0]? chat._INIT: chat._DELAY_INIT, function(target, zone) { show(target, zone, path), zone._toggle = function() {} })
|
return kit.Dict(mdb.NAME, path, path == args[0]? chat._INIT: chat._DELAY_INIT, function(target, zone) { show(target, zone, path) })
|
||||||
}), target)
|
}), target)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
space: function(can, target, zone) { can.onimport._zone(can, zone, web.DREAM, function(sub, msg) {
|
space: function(can, target, zone, hash) { can.onimport._zone(can, zone, web.DREAM, function(sub, msg) {
|
||||||
sub.onimport._open = function(_, msg, arg) { var link = can.misc.ParseURL(can, arg)
|
sub.onimport._open = function(_, msg, arg) { can.onimport.tabview(can, "", arg, web.SPACE) }
|
||||||
if (link.pod) { can.onimport.tabview(can, "", link.pod, web.SPACE), sub.Update(); return }
|
sub.onexport.record = function(sub, value, key) {
|
||||||
can.onimport.tabview(can, "", arg, web.SPACE)
|
can.onimport.tabview(can, "", value, web.SPACE)
|
||||||
}
|
}
|
||||||
sub.onexport.record = function(sub, value, key) { can.onimport.tabview(can, "", value, web.SPACE) }
|
can.page.Select(can, can._output, "div.item>span.name", function(target) {
|
||||||
|
can.ui.zone.space[target.innerText] = target.parentNode
|
||||||
|
if (target.innerText == hash[1] && hash[2] == web.SPACE) {
|
||||||
|
target.parentNode.click()
|
||||||
|
}
|
||||||
|
})
|
||||||
}), zone.toggle(false) },
|
}), zone.toggle(false) },
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {list: ["创建", "编译", "源码", "文档", "计划", "聊天", "矩阵", "后台", "桌面", "官网"], _trans: {show: "预览", exec: "展示"},
|
Volcanos(chat.ONACTION, {
|
||||||
_run: function(event, can, button, args, cb) { can.runAction(event, button, args, cb||function(msg) {
|
_run: function(event, can, button, args, cb) { can.runAction(event, button, args, cb||function(msg) {
|
||||||
if (msg.IsErr()) { return can.user.toastFailure(can, msg.Result()) }
|
|
||||||
can.onmotion.delay(can, function() { can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE)) }, 300)
|
can.onmotion.delay(can, function() { can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE)) }, 300)
|
||||||
can.ui.zone.source.refresh()
|
can.ui.zone.source.refresh()
|
||||||
}) },
|
}) },
|
||||||
_runs: function(event, can, button, cb) { var meta = can.Conf(), msg = can.request(event); msg.Option(ctx.ACTION, button)
|
_runs: function(event, can, button, cb) { var meta = can.Conf(), msg = can.request(event); msg.Option(ctx.ACTION, button)
|
||||||
can.user.input(event, can, meta.feature[button], function(data, args) { var msg = can.request(event); msg.Option(data), can.onaction._run(event, can, button, args, cb) }) },
|
can.user.input(event, can, meta.feature[button], function(data, args) { msg.Option(data), can.onaction._run(event, can, button, args, cb) })
|
||||||
save: function(event, can, button) { can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can)})
|
},
|
||||||
|
save: function(event, can, button) { var p = can.Option(nfs.PATH)+can.Option(nfs.FILE); can.user.toastProcess(can, p, button)
|
||||||
|
can.request(event, {file: can.Option(nfs.FILE), content: can.onexport.content(can)})
|
||||||
|
can.onaction._run(event, can, button, [can.onexport.parse(can), can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
||||||
|
can.onaction.reload(can, msg), can.user.toastSuccess(can, p, button)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
reload: function(can, msg) {
|
||||||
function imports(str) { var block = "", count = 0; can.core.List(str.split(lex.NL), function(item) {
|
function imports(str) { var block = "", count = 0; can.core.List(str.split(lex.NL), function(item) {
|
||||||
if (can.base.beginWith(item, "import (")) { block = can.core.Split(item)[0]; return }
|
if (can.base.beginWith(item, "import (")) { block = can.core.Split(item)[0]; return }
|
||||||
if (can.base.beginWith(item, ")")) { block = ""; return }
|
if (can.base.beginWith(item, ")")) { block = ""; return }
|
||||||
if (can.base.beginWith(item, "import ")) { count++; return }
|
if (can.base.beginWith(item, "import ")) { count++; return }
|
||||||
if (block == "import") { count++ }
|
if (block == "import") { count++ }
|
||||||
}); return count }
|
}); return count }
|
||||||
var p = can.Option(nfs.PATH)+can.Option(nfs.FILE); can.user.toastProcess(can, p, button)
|
if (can.onexport.parse(can) == nfs.GO) { var line = can.onaction.selectLine(can); can.onmotion.clear(can, can.ui.content), can.ui.content._max = 0
|
||||||
can.onaction._run(event, can, button, [can.onexport.parse(can), can.Option(nfs.FILE), can.Option(nfs.PATH)], function(msg) {
|
can.core.List(msg.Result().split(lex.NL), function(item) { can.onaction.appendLine(can, item) })
|
||||||
if (can.onexport.parse(can) == nfs.GO) { var line = can.onaction.selectLine(can); can.onmotion.clear(can, can.ui.content)
|
|
||||||
can.ui.content._max = 0, can.core.List(msg.Result().split(lex.NL), function(item) { can.onaction.appendLine(can, item) })
|
|
||||||
can.onaction.selectLine(can, line+imports(msg.Result())-imports(msg.Option(nfs.CONTENT)))
|
can.onaction.selectLine(can, line+imports(msg.Result())-imports(msg.Option(nfs.CONTENT)))
|
||||||
} can.user.toastSuccess(can, p, button)
|
}
|
||||||
})
|
},
|
||||||
|
remove: function(can, p) {
|
||||||
|
var target = can.ui.zone.source[p]; if (target._tabs) { target._tabs._close() } can.page.Remove(can, target)
|
||||||
},
|
},
|
||||||
trash: function(event, can, button) { var msg = can.request(event), p = msg.Option(nfs.PATH)+msg.Option(nfs.FILE)
|
trash: function(event, can, button) { var msg = can.request(event), p = msg.Option(nfs.PATH)+msg.Option(nfs.FILE)
|
||||||
can.onaction._run(event, can, button, [p], function() {
|
can.onaction._run(event, can, button, [p], function(msg) { can.onaction.remove(can, p) })
|
||||||
var target = can.ui.zone.source[p]; if (target._tabs) { target._tabs._close() } can.page.Remove(can, target)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
script: function(event, can, button) { can.onaction._runs(event, can, button) },
|
script: function(event, can, button) { can.onaction._runs(event, can, button) },
|
||||||
module: function(event, can, button) { can.onaction._runs(can.request(event, {title: "创建模块"}), can, button) },
|
module: function(event, can, button) { can.onaction._runs(can.request(event, {title: can.user.trans(can, button, "创建模块")}), can, button) },
|
||||||
compile: function(event, can, button) { var msg = can.request(event); msg.Option(chat._TOAST, "")
|
compile: function(event, can, button) { var msg = can.request(event); msg.Option(chat._TOAST, "")
|
||||||
can.runAction(event, button, [], function(msg) { can.ui.search && can.ui.search.hidden()
|
can.runAction(event, button, [], function(msg) { can.ui.search && can.ui.search.hidden()
|
||||||
if (msg.Length() > 0 || msg.Result()) { return can.onimport.exts(can, "inner/search.js", function(sub) { can.ui.search = sub, sub.select()
|
if (msg.Length() > 0 || msg.Result()) { return can.onimport.exts(can, "inner/search.js", function(sub) { can.ui.search = sub, sub.select()
|
||||||
@ -124,26 +136,30 @@ Volcanos(chat.ONACTION, {list: ["创建", "编译", "源码", "文档", "计划"
|
|||||||
|
|
||||||
insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value); before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before)); return can.onaction.rerankLine(can), can.onexport.line(can, line) },
|
insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value); before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before)); return can.onaction.rerankLine(can), can.onexport.line(can, line) },
|
||||||
deleteLine: function(can, line) { line = can.onaction._getLine(can, line); var next = line.nextSibling||line.previousSibling; return can.page.Remove(can, line), can.onaction.rerankLine(can), next },
|
deleteLine: function(can, line) { line = can.onaction._getLine(can, line); var next = line.nextSibling||line.previousSibling; return can.page.Remove(can, line), can.onaction.rerankLine(can), next },
|
||||||
_selectLine: function(can) { can.current && can.page.Select(can, can.current.line, "td.text", function(td) {
|
_selectLine: function(can) { can.current && can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; if (!target) { return }
|
||||||
var target = can.ui.current;
|
|
||||||
if (!target) { return }
|
|
||||||
target.value = td.innerText
|
|
||||||
can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.TOP, td.offsetTop, html.WIDTH, can.base.Min(td.offsetWidth, can.ui.content.offsetWidth-can.page.Select(can, can.current.line, "td.line")[0].offsetWidth))
|
can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.TOP, td.offsetTop, html.WIDTH, can.base.Min(td.offsetWidth, can.ui.content.offsetWidth-can.page.Select(can, can.current.line, "td.line")[0].offsetWidth))
|
||||||
can.db.mode == mdb.NORMAL && can.onkeymap._normal(can)
|
target.value = td.innerText, can.db.mode == mdb.NORMAL && can.onkeymap._normal(can)
|
||||||
if (can.ui.content._root) { can.onmotion.select(can, can.ui.content.parentNode, "", can.ui.content) }
|
|
||||||
can.onmotion.delay(can, function() { can.page.SelectChild(can, can.ui.complete, html.DIV, function(target) {
|
can.onmotion.delay(can, function() { can.page.SelectChild(can, can.ui.complete, html.DIV, function(target) {
|
||||||
target.innerText = can.ui.current.value.slice(0, can.ui.current.selectionStart)
|
target.innerText = can.ui.current.value.slice(0, can.ui.current.selectionStart)
|
||||||
}) })
|
}) })
|
||||||
}) },
|
}) },
|
||||||
onkeydown: function(event, can) {
|
})
|
||||||
if (can.onkeymap.selectCtrlN(event, can, can.ui.tabs, html.DIV_TABS)) { return }
|
Volcanos(chat.ONEXPORT, {
|
||||||
can.db._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can.db._key_list, can.ui.content)
|
hash: function(can) { return can.misc.SearchHash(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)) },
|
||||||
},
|
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONKEYMAP, {
|
Volcanos(chat.ONKEYMAP, {
|
||||||
scrollHold: function(can, count, begin) { var scroll = can.ui.content.scrollLeft; can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin), can.ui.content.scrollLeft = scroll },
|
scrollHold: function(can, count, begin) {
|
||||||
cursorDown: function(can, target) { var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p) },
|
var top = can.ui.content.scrollTop, left = can.ui.content.scrollLeft
|
||||||
cursorUp: function(can, target) { var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.prev()), can.onkeymap.cursorMove(target, 0, p) },
|
can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin)
|
||||||
|
can.ui.content.scrollTop = top, can.ui.content.scrollLeft = left
|
||||||
|
},
|
||||||
|
cursorDown: function(can, target) {
|
||||||
|
if (!can.current.next()) { return }
|
||||||
|
var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p)
|
||||||
|
},
|
||||||
|
cursorUp: function(can, target) {
|
||||||
|
if (!can.current.prev()) { return }
|
||||||
|
var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.prev()), can.onkeymap.cursorMove(target, 0, p) },
|
||||||
_model: function(can, value) { can.db.mode = value, can.onimport.__tabPath(can, true),
|
_model: function(can, value) { can.db.mode = value, can.onimport.__tabPath(can, true),
|
||||||
can.core.List([mdb.PLUGIN, mdb.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can.ui.content, item) }), can.page.ClassList.add(can, can.ui.content, value)
|
can.core.List([mdb.PLUGIN, mdb.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can.ui.content, item) }), can.page.ClassList.add(can, can.ui.content, value)
|
||||||
can.core.List([mdb.PLUGIN, mdb.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can._output, item) }), can.page.ClassList.add(can, can._output, value)
|
can.core.List([mdb.PLUGIN, mdb.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can._output, item) }), can.page.ClassList.add(can, can._output, value)
|
||||||
@ -276,10 +292,10 @@ Volcanos(chat.ONKEYMAP, {
|
|||||||
F5: shy("刷新网页", function(can, target) { can.user.reload(true) }),
|
F5: shy("刷新网页", function(can, target) { can.user.reload(true) }),
|
||||||
},
|
},
|
||||||
normal_ctrl: {
|
normal_ctrl: {
|
||||||
e: shy("向下滚屏", function(can) { can.current.scroll(1) }),
|
e: shy("向上滚屏", function(can) { can.current.scroll(1); if (can.current.scroll()<2) { can.onaction.selectLine(can, can.current.next()) } }),
|
||||||
y: shy("向上滚屏", function(can) { can.current.scroll(-1) }),
|
y: shy("向下滚屏", function(can) { can.current.scroll(-1); if (can.current.scroll()>can.current.window()-3) { can.onaction.selectLine(can, can.current.prev()) } }),
|
||||||
f: shy("向下翻页", function(can, count) { var line = can.onaction.selectLine(can)+can.current.window()-3-can.current.scroll(); return can.current.scroll(line), can.onaction.selectLine(can, line), true }),
|
f: shy("向下翻页", function(can, count) { can.current.scroll(can.current.window()) }),
|
||||||
b: shy("向上翻页", function(can, count) { var line = can.onaction.selectLine(can)-can.current.window()+3; return can.current.scroll(line), can.onaction.selectLine(can, line), true }),
|
b: shy("向上翻页", function(can, count) { can.current.scroll(-can.current.window()) }),
|
||||||
r: shy("刷新页面", function(can) { can.user.reload(true) }),
|
r: shy("刷新页面", function(can) { can.user.reload(true) }),
|
||||||
},
|
},
|
||||||
insert_ctrl: {
|
insert_ctrl: {
|
||||||
@ -290,7 +306,7 @@ Volcanos(chat.ONKEYMAP, {
|
|||||||
d: shy("删除字符", function(can, target) { can.user.isWindows && can.onkeymap.deleteText(target, target.selectionStart, 1) }),
|
d: shy("删除字符", function(can, target) { can.user.isWindows && can.onkeymap.deleteText(target, target.selectionStart, 1) }),
|
||||||
},
|
},
|
||||||
insert: {
|
insert: {
|
||||||
Escape: shy("退出编辑", function(event, can) { can.onkeymap._normal(can) }),
|
Escape: shy("退出编辑", function(event, can) { can.onkeymap._normal(can), can.ui.current._keylist = [] }),
|
||||||
ArrowUp: shy("光标上移", function(can, target) { can.onkeymap.cursorUp(can, target) }),
|
ArrowUp: shy("光标上移", function(can, target) { can.onkeymap.cursorUp(can, target) }),
|
||||||
ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }),
|
ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }),
|
||||||
Backspace: shy("删除字符", function(event, can, target) { if (target.selectionStart > 0 || !can.current.prev()) { return } can.onkeymap.prevent(event)
|
Backspace: shy("删除字符", function(event, can, target) { if (target.selectionStart > 0 || !can.current.prev()) { return } can.onkeymap.prevent(event)
|
||||||
|
@ -152,10 +152,6 @@ Volcanos(chat.ONACTION, {
|
|||||||
can.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+lex.SP+msg.Result())
|
can.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+lex.SP+msg.Result())
|
||||||
}, true)
|
}, true)
|
||||||
}) },
|
}) },
|
||||||
onkeydown: function(event, can) {
|
|
||||||
if (can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS)) { return }
|
|
||||||
can._keylist = can.onkeymap._parse(event, can, mdb.NORMAL, can._keylist||[], can._output._term)
|
|
||||||
},
|
|
||||||
hidden: function(can) { can.page.Select(can, can._fields, "div.output,div.layout", function(target) {
|
hidden: function(can) { can.page.Select(can, can._fields, "div.output,div.layout", function(target) {
|
||||||
target == can.sup._output? can.page.insertBefore(can, target, can._status): can.page.Remove(can, target)
|
target == can.sup._output? can.page.insertBefore(can, target, can._status): can.page.Remove(can, target)
|
||||||
}) },
|
}) },
|
||||||
|
@ -270,8 +270,8 @@ Volcanos(chat.ONEXPORT, {
|
|||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {
|
Volcanos(chat.ONACTION, {
|
||||||
onkeydown: function(event, can) {
|
onkeydown: function(event, can) {
|
||||||
if (event.ctrlKey && "0" <= event.key && event.key <= "9") { return can.onkeymap.ctrln(event, can) }
|
if (can.onkeymap.selectCtrlN(event, can, can.ui.tabs||can._action, html.DIV_TABS)) { return }
|
||||||
can._keylist = can.onkeymap._parse(event, can, mdb.PLUGIN, can._keylist||[], can._output)
|
can.onkeymap._parse(event, can)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos(chat.ONKEYMAP, {
|
Volcanos(chat.ONKEYMAP, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user