1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-05-18 21:02:24 +08:00
parent a8c2a9ea3b
commit 78ae374e42
9 changed files with 167 additions and 198 deletions

View File

@ -115,8 +115,7 @@ Volcanos(chat.ONDAEMON, {_init: function(can, name, type, cbs) { if (can.user.is
can.core.CallFunc(can.core.Value(can, arg[0]), kit.Dict({can: can}, arg.slice(1))) can.core.CallFunc(can.core.Value(can, arg[0]), kit.Dict({can: can}, arg.slice(1)))
}, },
input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { target.value += arg[0] }) }, input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { target.value += arg[0] }) },
online: function(can, sub) { debugger }, _online: function(can, delay) { false && can.onmotion.delay(can, function() { can = can._fields? can.sup: can
_online: function(can, delay) { can.onmotion.delay(can, function() { can = can._fields? can.sup: can
if (can.ui._online) { return } can.ui._online = true if (can.ui._online) { return } can.ui._online = true
if (!can.ui.online) { if (!can.ui.online) {
if (can.isCmdMode()) { if (can.isCmdMode()) {
@ -160,7 +159,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
value && (value = can.user.trans(sub, value, null, html.INPUT)) value && (value = can.user.trans(sub, value, null, html.INPUT))
return can.page.SelectArgs(can, action, key, value)[0] return can.page.SelectArgs(can, action, key, value)[0]
}, },
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] }, Option: function(key, value) {
// value && (value = can.user.trans(sub, value, null, html.INPUT));
return can.page.SelectArgs(can, option, key, value)[0] },
Update: function(event, cmds, cb, silent) { event = event||{}, sub.request(event)._caller(), event.metaKey && sub.request(event, {metaKey: ice.TRUE}) Update: function(event, cmds, cb, silent) { event = event||{}, sub.request(event)._caller(), event.metaKey && sub.request(event, {metaKey: ice.TRUE})
var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox"); can.core.Item(list, function(key, value) { msg.Option(key, value) }) var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox"); can.core.Item(list, function(key, value) { msg.Option(key, value) })
sub.request(event, sub.Option()) sub.request(event, sub.Option())
@ -985,15 +986,17 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
}, },
}, },
scrollHold: function(can, cb, target) { target = target || can._output; var left = target.scrollLeft; cb(), target.scrollLeft = left }, scrollHold: function(can, cb, target) { target = target || can._output; var left = target.scrollLeft; cb(), target.scrollLeft = left },
scrollIntoView: function(can, target, margin) { if (!target || !target.parentNode || can._scroll) { return } can._scroll = true, margin = margin||0 scrollIntoView: function(can, target, margin, parent) {
var offset = (target.offsetTop-margin) - target.parentNode.scrollTop, step = offset < 0? -20: 20 parent = parent||target.parentNode
if (parent._scroll) { return } parent._scroll = true, margin = margin||0
var offset = (target.offsetTop-margin) - parent.scrollTop, step = offset < 0? -20: 20
if (Math.abs(offset) > 3000) { if (Math.abs(offset) > 3000) {
return target.parentNode.scrollTop = (target.offsetTop-margin), delete(can._scroll) return parent.scrollTop = (target.offsetTop-margin), delete(can._scroll)
} }
can.core.Timer({interval: 10, length: offset/step}, function() { can.core.Timer({interval: 10, length: offset/step}, function() {
target.parentNode.scrollTop += step parent.scrollTop += step
}, function() { }, function() {
target.parentNode.scrollTop = (target.offsetTop-margin), delete(can._scroll) parent.scrollTop = (target.offsetTop-margin), delete(can._scroll)
}) })
}, },
clearFloat: function(can) { clearFloat: function(can) {

View File

@ -83,7 +83,7 @@ body {
--input-font-family:var(--code-font-family); --table-font-family:var(--code-font-family); --input-font-family:var(--code-font-family); --table-font-family:var(--code-font-family);
--svg-font-family:var(--code-font-family); --svg-font-family:var(--code-font-family);
--body-font-size:14px; --legend-font-size:18px; --status-font-size:12px; --body-font-size:14px; --legend-font-size:18px; --status-font-size:12px;
--code-font-size:14px; --code-line-height:20px; --code-tabs-height:38px; --code-font-size:14px; --code-line-height:20px; --code-tabs-height:43px;
--icon-font-size:var(--legend-font-size); --svg-font-size:24px; --svg-stroke-width:1; --icon-font-size:var(--legend-font-size); --svg-font-size:24px; --svg-stroke-width:1;
} }
body.web.code.vimer.cmd { --code-line-height:24px; } body.web.code.vimer.cmd { --code-line-height:24px; }
@ -239,8 +239,11 @@ div.project div.zone>div.item span:hover { background-color:var(--hover-bg-color
div.project>div.zone>div.item span:first-child { font-style:italic; font-weight:bold; line-height:var(--action-height); } div.project>div.zone>div.item span:first-child { font-style:italic; font-weight:bold; line-height:var(--action-height); }
div.project div.zone>div.item span:first-child { flex-grow:1; } div.project div.zone>div.item span:first-child { flex-grow:1; }
div.project div.zone>div.item span.icon { letter-spacing:0; font-size:22px !important; padding:0 var(--input-padding); display:none; } div.project div.zone>div.item span.icon { letter-spacing:0; font-size:22px !important; padding:0 var(--input-padding); display:none; }
div.project div.zone>div.item span.icon.refresh { margin-top:-2px; } div.project div.zone>div.item i { position:unset }
div.project div.zone:hover>div.item span.icon { display:block; } div.project div.zone:hover>div.item span.icon { display:block; height:24px; line-height:24px; }
div.project div.zone:hover>div.item span.icon.refresh { line-height:22px; }
div.project div.zone:hover>div.item span.icon.menu { line-height:22px; }
div.project div.zone>div.item { display:flex; }
div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:var(--button-padding); transition:all .5s; } div.project div.zone>div.list>div.zone>div.item { text-align:left; padding-left:var(--button-padding); transition:all .5s; }
div.project div.zone>div.list>div.zone>div.item:hover { margin-left:var(--button-margin); transition:all .3s; } div.project div.zone>div.list>div.zone>div.item:hover { margin-left:var(--button-margin); transition:all .3s; }
div.item>i.bi-chevron-down { float:right; transition:all .5s; } div.item>i.bi-chevron-down { float:right; transition:all .5s; }
@ -372,12 +375,11 @@ body>div.input input[name=cancel] { border:var(--box-danger); }
body>div.input input[name=submit] { border:var(--box-notice); } body>div.input input[name=submit] { border:var(--box-notice); }
body>div.input input[name=submit]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } body>div.input input[name=submit]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
body>div.input input[name=cancel]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } body>div.input input[name=cancel]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
body>div.input div.action { padding:var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; } body>div.input div.action { padding:var(--table-padding); width:100%; position:sticky; bottom:0; flex-direction:row-reverse; cursor:move; }
body>div.input.login div.action { padding:0; }
body>div.input div.action>div.item { margin-left:var(--button-margin); float:right; } body>div.input div.action>div.item { margin-left:var(--button-margin); float:right; }
body>div.input div.action>div.item>input[type=button] { width:112px; } body>div.input div.action>div.item>input[type=button] { width:112px; }
body>div.input.login { flex-direction:column; } body>div.input.login { flex-direction:column; }
body>div.input.login>div.action { border-bottom:var(--box-border); flex-direction:row; } body>div.input.login>div.action { border-bottom:var(--box-border); padding:0; flex-direction:row; }
body>div.input.login>div.action>div.tabs { padding:var(--button-padding); } body>div.input.login>div.action>div.tabs { padding:var(--button-padding); }
body>div.input.login>div.action>div.tabs.select { color:unset; } body>div.input.login>div.action>div.tabs.select { color:unset; }
body>div.input.login>div.output { text-align:center; min-height:var(--qrcode-height); min-width:var(--iframe-height); overflow:hidden; clear:both; } body>div.input.login>div.output { text-align:center; min-height:var(--qrcode-height); min-width:var(--iframe-height); overflow:hidden; clear:both; }
@ -857,7 +859,6 @@ 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; }
@ -931,9 +932,10 @@ fieldset.studio>div.output>fieldset.story { margin:var(--plugin-margin); }
fieldset.studio>div.output>fieldset.story:not(.select) { display:none; } fieldset.studio>div.output>fieldset.story:not(.select) { display:none; }
fieldset.studio>div.output>fieldset.story>form.option div.icon.delete { display:none; } fieldset.studio>div.output>fieldset.story>form.option div.icon.delete { display:none; }
fieldset.plug>div.output table.content { width:100%; } fieldset.plug>div.output table.content { width:100%; }
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:var(--input-padding); margin:var(--input-margin); } fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:var(--input-padding); }
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:var(--input-margin); } fieldset.plug.dream.zone>div.output>div.item>img { margin-right:var(--input-margin); }
fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); } fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); }
fieldset.plug.dream.zone>div.output>div.item.origin.select { border-right:var(--box-danger3); }
fieldset.cmd>div.item.state { line-height:22px; padding:var(--input-padding) var(--button-padding); float:right; } fieldset.cmd>div.item.state { line-height:22px; padding:var(--input-padding) var(--button-padding); float:right; }
fieldset.cmd>div.item.avatar { padding:0; height:var(--action-height); } fieldset.cmd>div.item.avatar { padding:0; height:var(--action-height); }
fieldset.cmd>div.item.avatar>img { height:var(--action-height); } fieldset.cmd>div.item.avatar>img { height:var(--action-height); }

View File

@ -304,6 +304,7 @@ Volcanos("page", {
}, },
tagClass: function(target) { return target.tagName.toLowerCase()+(target.className? nfs.PT+target.className.replaceAll(lex.SP, nfs.PT): "") }, tagClass: function(target) { return target.tagName.toLowerCase()+(target.className? nfs.PT+target.className.replaceAll(lex.SP, nfs.PT): "") },
isDisplay: function(target) { return target && target.style.display != html.NONE && target.className.indexOf(html.HIDE) == -1 }, isDisplay: function(target) { return target && target.style.display != html.NONE && target.className.indexOf(html.HIDE) == -1 },
isSelect: function(target) { return target && target.className.indexOf(html.SELECT) > -1 },
isIconInput: function(can, name) { isIconInput: function(can, name) {
return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.PRUNES, mdb.PRUNE, ice.HELP, cli.START, cli.CLOSE, web.REFRESH) || icon[name] || can.Conf("feature._icons."+name) || can.core.Value(can.onaction, ["_trans.icons", name]) return can.base.isIn(name, mdb.CREATE, mdb.INSERT, mdb.PRUNES, mdb.PRUNE, ice.HELP, cli.START, cli.CLOSE, web.REFRESH) || icon[name] || can.Conf("feature._icons."+name) || can.core.Value(can.onaction, ["_trans.icons", name])
}, },

View File

@ -147,7 +147,10 @@ Volcanos("user", {
}, },
carte: function(event, can, meta, list, cb, parent, trans) { var msg = can.request(event); event = msg._event carte: function(event, can, meta, list, cb, parent, trans) { var msg = can.request(event); event = msg._event
function remove_sub(carte) { carte._sub && can.page.Remove(can, carte._sub._target), delete(carte._sub) } parent? remove_sub(parent): can.onmotion.clearCarte(can) function remove_sub(carte) { carte._sub && can.page.Remove(can, carte._sub._target), delete(carte._sub) } parent? remove_sub(parent): can.onmotion.clearCarte(can)
meta = meta||can.ondetail||can.onaction||{}, list = can.base.getValid(list, meta.list, can.core.Item(meta)), trans = trans||meta._trans; if (!list || list.length == 0) { return } meta = meta||can.ondetail||can.onaction||{}, list = can.base.getValid(list, meta.list, can.core.Item(meta, function(key) {
if (can.base.beginWith(key, "_")) { return }
return key
})), trans = trans||meta._trans; if (!list || list.length == 0) { return }
var _events = event._events||event var _events = event._events||event
function click(event, button, index) { can.misc.Event(event, can, function() { can.request(event, {action: button}), can.onkeymap.prevent(event), event._events = _events; function click(event, button, index) { can.misc.Event(event, can, function() { can.request(event, {action: button}), can.onkeymap.prevent(event), event._events = _events;
can.onengine.signal(can, "onevent", can.request(event, {_type: html.ACTION})); can.onengine.signal(can, "onevent", can.request(event, {_type: html.ACTION}));

View File

@ -1,42 +1,26 @@
fieldset.inner>div.output { justify-content:flex-start; }
fieldset.inner>div.output div.content td.text { height:var(--code-line-height); } fieldset.inner>div.output div.content td.text { height:var(--code-line-height); }
fieldset.inner>div.output div.content td.text span.comment { color:var(--code-comment); }
fieldset.inner>div.output div.content td.text span.keyword { color:var(--code-keyword); box-shadow:var(--keyword-box-shadow); } fieldset.inner>div.output div.content td.text span.keyword { color:var(--code-keyword); box-shadow:var(--keyword-box-shadow); }
fieldset.inner>div.output div.content td.text span.comment { color:var(--code-comment); }
fieldset.inner>div.output div.content td.text span.function { color:var(--code-function); } fieldset.inner>div.output div.content td.text span.function { color:var(--code-function); }
fieldset.inner>div.output div.content td.text span.constant { color:var(--code-constant); } fieldset.inner>div.output div.content td.text span.constant { color:var(--code-constant); }
fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); box-shadow:var(--keyword-box-shadow); } fieldset.inner>div.output div.content td.text span.string { color:var(--code-string); box-shadow:var(--keyword-box-shadow); }
fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); }
fieldset.inner>div.output div.content td.text span.datatype { color:var(--code-datatype); }
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.content td.text span.datatype { color:var(--code-datatype); }
fieldset.inner>div.output div.content td.text span.object { color:var(--code-object); }
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:not(:hover) { 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>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>input { padding-left:25px; width:100%; }
fieldset.inner>div.output>div.project div.zone.space>div.list div.output>div.item:hover { background-color:var(--hover-bg-color); }
fieldset.inner>div.output>div.layout>div.tabs { font-size:var(--code-font-size); display:none; }
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.select { background-color:var(--output-bg-color); color:unset; border-top:var(--box-notice3); box-shadow:var(--legend-box-shadow);}
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.select { box-shadow:var(--legend-box-shadow); background-color:var(--output-bg-color); border-top:var(--box-notice3); }
fieldset.inner>div.output>div.layout>div.tabs>div.tabs>div.tabs:hover { box-shadow:var(--legend-box-shadow); background-color:var(--output-bg-color); }
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; }
fieldset.inner.cmd>div.output>div.layout>div.path:not(.hide) { display:flex; }
fieldset.inner>div.output>div.layout>div.path:not(.hide) { box-shadow:var(--legend-box-shadow); font-style:italic; cursor:pointer; justify-content:flex-start; align-items:center; } fieldset.inner>div.output>div.layout>div.path:not(.hide) { box-shadow:var(--legend-box-shadow); font-style:italic; cursor:pointer; justify-content:flex-start; align-items:center; }
fieldset.inner>div.output>div.layout>div.path>a { padding:var(--input-padding) var(--button-padding); } fieldset.inner>div.output>div.layout>div.path>a { padding:var(--input-padding); }
fieldset.inner>div.output>div.layout>div.path>a:hover { background-color:var(--hover-bg-color); } fieldset.inner>div.output>div.layout>div.path>a:hover { background-color:var(--hover-bg-color); }
fieldset.inner>div.output>div.layout>div.path>span { padding:var(--input-padding); white-space:pre; } fieldset.inner>div.output>div.layout>div.path>span { padding:var(--input-padding); white-space:pre; }
fieldset.inner>div.output>div.layout>div.path>span:hover { background-color:var(--hover-bg-color); } fieldset.inner>div.output>div.layout>div.path>span:hover { background-color:var(--hover-bg-color); }
fieldset.inner>div.output>div.layout>div.path span.func { padding:var(--input-padding); } fieldset.inner>div.output>div.layout>div.path>span._space:hover { background-color:unset; }
fieldset.inner>div.output>div.layout>div.path span.mode { padding:var(--input-padding); } fieldset.inner>div.output>div.layout>div.path>span.view { font-style:normal; font-size:22px; padding:0 var(--input-padding); }
fieldset.inner>div.output>div.layout>div.path span._space { flex-grow:1; }
fieldset.inner>div.output>div.layout>div.path span._space:hover { background-color:unset; cursor:normal; }
fieldset.inner>div.output>div.layout>div.path span.view { font-size:22px; font-style:normal; padding:0 var(--input-padding); margin-top:-5px; float:right; }
fieldset.inner>div.output>div.layout>div.display h1 { border-bottom:var(--box-border); margin:var(--title-margin) 0; } fieldset.inner>div.output>div.layout>div.display h1 { border-bottom:var(--box-border); margin:var(--title-margin) 0; }
fieldset.inner>div.output>div.layout>div.display h2 { border-bottom:var(--box-border); margin:var(--title-margin) 0; } fieldset.inner>div.output>div.layout>div.display h2 { border-bottom:var(--box-border); margin:var(--title-margin) 0; }
fieldset.inner>div.output>div.layout>div.display pre>code { padding-left:var(--table-padding); border-left:var(--box-notice3); display:block; } fieldset.inner>div.output>div.layout>div.display pre>code { padding-left:var(--table-padding); border-left:var(--box-notice3); display:block; }
@ -49,59 +33,59 @@ fieldset.inner>div.output>div.layout>div.layout>div.profile h2 { border-bottom:v
fieldset.inner>div.output>div.layout>div.layout>div.profile pre>code { padding-left:var(--table-padding); border-left:var(--box-notice3); display:block; } fieldset.inner>div.output>div.layout>div.layout>div.profile pre>code { padding-left:var(--table-padding); border-left:var(--box-notice3); display:block; }
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 { box-shadow:unset; } 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; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs { justify-content:flex-start; flex-grow:1; flex-wrap:wrap; overflow:auto; display:flex; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs { justify-content:flex-start; flex-grow:1; flex-wrap:wrap; overflow:auto; display:flex; }
fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs:hover { background-color:unset; } fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs:hover { background-color:unset; }
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); 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 { display:flex; flex-direction:row-reverse; }
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 { padding:0 var(--input-padding); 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.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.path:not(.hide) { display:flex; }
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; }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend { font-style:italic; font-size:var(--legend-font-size); padding:0 var(--input-padding); padding-right:0; margin-right:0; float:right; } fieldset.inner.cmd>div.output>div.layout>div.plug>legend { padding:0 var(--input-padding); padding-right:0; margin-right:0; float:right; }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend:hover { box-shadow:var(--notice-box-shadow); color:unset; } fieldset.inner.cmd>div.output>div.layout>div.plug>legend:hover { box-shadow:var(--notice-box-shadow); }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend>span.remove { padding:0 var(--input-padding); height:30px; } fieldset.inner.cmd>div.output>div.layout>div.plug>legend>span.remove { padding:0 var(--input-padding); }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend>span.remove:hover { background-color:var(--hover-bg-color); } fieldset.inner.cmd>div.output>div.layout>div.plug>legend>span.remove:hover { background-color:var(--hover-bg-color); }
fieldset.inner.cmd>div.output>div.layout>div.plug>legend:not(:hover)>span.remove { visibility:hidden; } fieldset.inner.cmd>div.output>div.layout>div.plug>legend:not(:hover)>span.remove { visibility:hidden; }
fieldset.inner fieldset.plug.can._plugin.search>form.option>div.item.value input { width:var(--project-width); } fieldset.inner fieldset.plug.can._plugin.search>form.option>div.item.value input { width:var(--project-width); }
fieldset.inner fieldset.plug.can._plugin.search>form.option>div.item.filter input { width:var(--project-width); } fieldset.inner fieldset.plug.can._plugin.search>form.option>div.item.filter input { width:var(--project-width); }
fieldset.inner:not(.monaco)>div.output div.content>tr.line * { font-family:var(--code-font-family); font-size:var(--code-font-size); } fieldset.inner fieldset.plug.can._plugin.search>div.output>table.content tr td { cursor:pointer; }
fieldset.inner>div.output>div.layout>fieldset.plug.can._plugin.search>div.output>table.content tr td { cursor:pointer; }
fieldset.inner.plugin>div.output>div.layout>div.layout div.content tr.line.select>td.line { background-color:var(--notice-bg-color); color:white; }
fieldset.vimer.plugin>div.output>div.layout>div.layout div.content tr.line.select>td.line { background-color:unset; color:unset; }
fieldset.inner.float>div.output>div.layout>div.path { font-size:var(--code-font-size); display:flex; } fieldset.inner.float>div.output>div.layout>div.path { font-size:var(--code-font-size); display:flex; }
fieldset.Action.tabview fieldset.plugin.inner>div.output>div.layout>div.path:not(.hide) { font-size:var(--code-font-size); display:flex; } fieldset.Action.tabview fieldset.plugin.inner>div.output>div.layout>div.path:not(.hide) { font-size:var(--code-font-size); display:flex; }
div.input.vimer.find div.action div.item { margin:var(--input-margin); } fieldset.inner:not(.monaco)>div.output div.content>tr.line * { font-family:var(--code-font-family); font-size:var(--code-font-size); }
div.input.vimer.find div.action div.item.text input { width:var(--project-width) } fieldset.inner.plugin>div.output>div.layout>div.layout div.content tr.line.select>td.line { background-color:var(--notice-bg-color); color:white; }
div.input.vimer.find div.action div.item.close span { display:none; } fieldset.vimer.plugin>div.output>div.layout>div.layout div.content tr.line.select>td.line { background-color:unset; color:unset; }
div.path span.item { padding:var(--input-padding); } div.carte.inner.mode.float div.item { padding:var(--input-padding); }
div.carte.cmd.float { font-size:var(--code-font-size); } div.carte.cmd.float div.item { padding:var(--input-padding); } div.carte.inner.path.float div.item { padding:var(--input-padding); }
div.carte.path.float { font-size:var(--code-font-size); } div.carte.inner.path.float div.item.private { color:var(--disable-fg-color); }
div.carte.path.float div.item { padding:var(--input-padding); } div.input.inner.find.float div.action div.item { margin:var(--input-margin); }
div.carte.path.float div.item.private { color:var(--disable-fg-color); } div.input.inner.find.float div.action div.item.text input { width:var(--project-width); }
div.vimer.open.float td:first-child { display:none; } div.input.inner.find.float div.action div.item.close span { display:none; }
div.vimer.open.float td:nth-child(2) { display:none; } div.input.inner.find.float div.action div.item.replace input { border:var(--box-danger); }
div.vimer.plug.float div.item.text input { width:var(--river-width); } div.input.inner.open.float td:first-child { display:none; }
div.layout.flex>input.current { clear:both; } div.input.inner.open.float div.item.text input { width:100% !important; }
tr.line>td.line { -webkit-user-select:none; border-right:var(--box-border); cursor:pointer; } div.input.inner.open.float td:nth-child(2) { display:none; }
tr.line>td.line { border-right:var(--box-border); cursor:pointer; -webkit-user-select:none; }
tr.line>td.line { text-align:right; line-height:var(--code-line-height); padding:0 var(--button-padding); position:sticky; left:0; } tr.line>td.line { text-align:right; line-height:var(--code-line-height); padding:0 var(--button-padding); position:sticky; left:0; }
tr.line>td.text { white-space:pre; line-height:var(--code-line-height); padding-left:var(--input-padding); width:100%; } tr.line>td.text { white-space:pre; line-height:var(--code-line-height); padding-left:var(--input-padding); width:100%; }
tr.line:hover { background-color:var(--hover-bg-color); } tr.line:hover { background-color:var(--hover-bg-color); }
tr.line.insert { background-color:#283e2d; } tr.line.delete { background-color:#3c2626; } tr.line.delete { background-color:#3c2626; }
tr.line.insert { background-color:#283e2d; }
body.light tr.line.delete { background-color:#ffeef0; } body.light tr.line.delete { background-color:#ffeef0; }
body.light tr.line.insert { background-color:#e6ffed; } body.light tr.line.insert { background-color:#e6ffed; }
body.white tr.line.insert { background-color:#ffeef0; }
body.white tr.line.delete { background-color:#e6ffed; } body.white tr.line.delete { background-color:#e6ffed; }
body.white tr.line.insert { background-color:#ffeef0; }
body.width2 fieldset.inner>div.output>div.layout>div.path span.mode { display:none; } body.width2 fieldset.inner>div.output>div.layout>div.path span.mode { display:none; }
body.mobile fieldset.inner>div.output>div.layout>div.path span.func { display:none; } body.mobile fieldset.inner>div.output>div.layout>div.path span.func { display:none; }
body.mobile fieldset.inner>div.output>div.layout>div.path span.mode { display:none; } body.mobile fieldset.inner>div.output>div.layout>div.path span.mode { display:none; }
body.light fieldset.inner.cmd>div.output>div.layout>div.tabs>div.tabs>div.tabs { margin-right:var(--button-margin); }
body:not(.mobile) fieldset.inner>div.output>div.layout>fieldset.plug { bottom:var(--action-height); } body:not(.mobile) fieldset.inner>div.output>div.layout>fieldset.plug { bottom:var(--action-height); }
body:not(.windows) fieldset.inner>div.output>div.project * { font-family:var(--code-font-family); font-size:var(--code-font-size); } body:not(.windows) fieldset.inner>div.output>div.project * { font-family:var(--code-font-family); font-size:var(--code-font-size); }
body:not(.windows) fieldset.inner>div.output>div.layout>div.tabs { font-family:var(--code-font-family); font-size:var(--code-font-size); } body:not(.windows) fieldset.inner>div.output>div.layout>div.tabs { font-family:var(--code-font-family); font-size:var(--code-font-size); }

View File

@ -46,6 +46,7 @@ Volcanos(chat.ONIMPORT, {
can.page.Append(can, can.ui.path, [{text: [mode, "", [ice.MODE, can.db.mode||""]], onclick: function(event) { can.page.Append(can, can.ui.path, [{text: [mode, "", [ice.MODE, can.db.mode||""]], onclick: function(event) {
var list = {}; can.core.Item(can.onkeymap._mode[can.db.mode], function(k, cb) { list[k+" "+cb.help] = function(event, can, button) { can.core.CallFunc(cb, {event: event, can: can}) } }) var list = {}; can.core.Item(can.onkeymap._mode[can.db.mode], function(k, cb) { list[k+" "+cb.help] = function(event, can, button) { can.core.CallFunc(cb, {event: event, can: can}) } })
can.core.Item(can.onkeymap._mode[can.db.mode+"_ctrl"], function(k, cb) { list["C-"+k+" "+cb.help] = function(event, can, button) { can.core.CallFunc(cb, {event: event, can: can}) } }) can.core.Item(can.onkeymap._mode[can.db.mode+"_ctrl"], function(k, cb) { list["C-"+k+" "+cb.help] = function(event, can, button) { can.core.CallFunc(cb, {event: event, can: can}) } })
list._style = "inner mode"
can.user.carte(event, can, list, []) can.user.carte(event, can, list, [])
}}]) }}])
}, },
@ -56,7 +57,7 @@ Volcanos(chat.ONIMPORT, {
var carte, list = [web.FILTER]; can.core.Item(last, function(key) { list.push(key) }), list = list.concat(func.list) var carte, list = [web.FILTER]; can.core.Item(last, function(key) { list.push(key) }), list = list.concat(func.list)
} }
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: "inner "+nfs.PATH}, list, function(ev, button) { last[button] = true, carte.close()
var line = 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.onimport.tabview(can, "", can.Option(nfs.FILE), line, function() { can.onaction.selectLine(can, line, true) })
}) })
@ -83,7 +84,7 @@ Volcanos(chat.ONIMPORT, {
}) })
}, },
tabPath: function(event, can, ps, key, pre, cb, parent) { can.runAction(event, mdb.INPUTS, [key, pre, lex.SPLIT], function(msg) { var _trans = {} tabPath: function(event, can, ps, key, pre, cb, parent) { can.runAction(event, mdb.INPUTS, [key, pre, lex.SPLIT], function(msg) { var _trans = {}
var carte = can.user[parent? "carteRight": "carte"](event, can, {_style: key}, (msg.Length() > 10? [web.FILTER]: []).concat(msg.Table(function(value) { var carte = can.user[parent? "carteRight": "carte"](event, can, {_style: "inner "+key}, (msg.Length() > 10? [web.FILTER]: []).concat(msg.Table(function(value) {
var p = can.core.Split(value[key], ps).pop()+(can.base.endWith(value[key], ps)? ps: ""); return _trans[p] = value[key], p var p = can.core.Split(value[key], ps).pop()+(can.base.endWith(value[key], ps)? ps: ""); return _trans[p] = value[key], p
})), function(event, button) { })), function(event, button) {
if (can.base.endWith(button, ps)) { can.onimport.tabPath(event, can, ps, key, pre+button, cb, carte); return true } else { cb(_trans[button], pre) } if (can.base.endWith(button, ps)) { can.onimport.tabPath(event, can, ps, key, pre+button, cb, carte); return true } else { cb(_trans[button], pre) }
@ -91,7 +92,7 @@ Volcanos(chat.ONIMPORT, {
can.page.Select(can, carte, html.DIV_ITEM, function(target) { can.page.Select(can, carte, html.DIV_ITEM, function(target) {
target.innerHTML.trim() != event.target.innerHTML.trim() && can.base.beginWith(target.innerHTML, file+nfs.PT) && carte.insertBefore(target, carte.firstChild) target.innerHTML.trim() != event.target.innerHTML.trim() && can.base.beginWith(target.innerHTML, file+nfs.PT) && carte.insertBefore(target, carte.firstChild)
target.innerHTML.trim() == event.target.innerHTML.trim() && can.onappend.style(can, html.SELECT, target) target.innerHTML.trim() == event.target.innerHTML.trim() && can.onappend.style(can, html.SELECT, target)
}) }), can.onmotion.delay(can, function() { carte.scrollTop = 0 })
}) }, }) },
openzone: function(can, path, file, line) { openzone: function(can, path, file, line) {
if (line == web.SPACE) { if (line == web.SPACE) {
@ -100,7 +101,7 @@ Volcanos(chat.ONIMPORT, {
if (can.base.beginWith(file, "can.")) { if (can.base.beginWith(file, "can.")) {
can.page.isDisplay(can.ui.zone.plugin._target) || can.ui.zone.plugin._legend.click() can.page.isDisplay(can.ui.zone.plugin._target) || can.ui.zone.plugin._legend.click()
} else { } else {
can.page.isDisplay(can.ui.zone.module._target) || can.ui.zone.module._legend.click() can.page.isDisplay(can.ui.zone.command._target) || can.ui.zone.command._legend.click()
} }
} else { } else {
if (can.ui.zone && can.ui.zone.source) { if (can.ui.zone && can.ui.zone.source) {
@ -109,32 +110,28 @@ Volcanos(chat.ONIMPORT, {
return true return true
} }
}, },
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), line && can.Option(nfs.LINE, line); var key = can.onexport.keys(can, path, file)
line && can.Option(nfs.LINE, line)
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() { 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: 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.onmotion.toggle(can, can.ui.path, true)
if (isSpace()) { can.base.contains(file, "/") || can.onmotion.hidden(can, can.ui.path) if (isSpace()) { 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)) 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) } else { can.onimport.__tabPath(can) }
} can.onimport.openzone(can, path, file, line)
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, can.onimport.openzone(can, path, file, line)), can.onimport.layout(can)
can.page.ClassList.set(can, can._output, nfs.SOURCE, !isIndex() && !isSpace()) can.onaction.selectLine(can, can.Option(nfs.LINE)), can.base.isFunc(cb) && cb(msg), cb = null
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
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)))
}) })
} }
function load(msg) { var skip = false; can.db.tabview[key] = msg; var name = file function load(msg) { can.db.tabview[key] = msg; var name = file
if (can.base.beginWith(file, web.HTTP)) { name = decodeURI(file.split(web.QS)[0]) if (can.base.beginWith(file, web.HTTP)) { name = decodeURI(file.split(web.QS)[0])
var link = can.misc.ParseURL(can, name); if (link.pod) { name = link.pod } var link = can.misc.ParseURL(can, name); if (link.pod) { name = link.pod }
name = can.base.trimPrefix(name, location.origin) name = can.base.trimPrefix(name, location.origin)
@ -142,18 +139,16 @@ Volcanos(chat.ONIMPORT, {
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()
} }
line && msg.Option(nfs.LINE, line) 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) { var tabs = can.onimport.tabs(can, [{name: name, text: (isIndex() || isSpace()? "": path)+file, _menu: shy(can.base.Obj(msg.Option(ice.MSG_ACTION), []), function(event, button, meta) {
can.request(event, msg), can.onaction[button](event, can, button) can.request(event, msg), can.onaction[button]? can.onaction[button](event, can, button): can.onaction._runs(event, can, button)
})}], function(event, tabs) { can._tab = msg._tab = tabs._target, show(skip), skip = true })}], function(event, tabs) {
can.onmotion.delay(can, function() { var item = can.ui.zone && can.ui.zone.source && can.ui.zone.source[path+file]; if (!item) { return } can._tab = msg._tab = tabs._target, show(), msg._item && (can.page.isSelect(msg._item) || msg._item.click(), can.onmotion.scrollIntoView(can, msg._item))
item._tabs = tabs._target, can.page.ClassList.has(can, item, html.SELECT) || item.click()
})
}, function(tabs) { can.onengine.signal(can, VIEW_REMOVE, msg), delete(can.db.tabview[key]) }, function(tabs) { can.onengine.signal(can, VIEW_REMOVE, msg), delete(can.db.tabview[key])
msg._content != can.ui._content && can.page.Remove(can, msg._content), msg._profile != can.ui._profile && can.page.Remove(can, msg._profile) msg._content != can.ui._content && can.page.Remove(can, msg._content), msg._profile != can.ui._profile && can.page.Remove(can, msg._profile)
can.onmotion.cacheClear(can, key, can.ui._content, can.ui._profile, can.ui._display) can.onmotion.cacheClear(can, key, can.ui._content, can.ui._profile, can.ui._display)
}, can.ui._tabs) }, can.ui._tabs)
} }
if (can.db.tabview[key]) { return !can._msg._tab && !can.isSimpleMode()? load(can.db.tabview[key]): show() } if (can.db.tabview[key]) { return can.isSimpleMode()? show(): can._msg._tab? (can._msg._tab.click(), show()): load(can.db.tabview[key]) }
isIndex()||isSpace()? load(can.request({}, {index: file, line: line})): can.run({}, [path, file], load, true) isIndex()||isSpace()? load(can.request({}, {index: file, line: line})): can.run({}, [path, file], load, true)
}, },
history: function(can, record) { can.base.Eq(record, can.db.history[can.db.history.length-1], mdb.TEXT) || can.db.history.push(record) history: function(can, record) { can.base.Eq(record, can.db.history[can.db.history.length-1], mdb.TEXT) || can.db.history.push(record)
@ -162,7 +157,10 @@ 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, can.db.hash) }} }, _init: function(target, zone) { var onclick = zone._legend.onclick
zone._legend.onclick = function(event) { if (can.page.isDisplay(zone._target)) { return } onclick(event) }
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
@ -282,23 +280,28 @@ Volcanos(chat.ONFIGURE, {
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
}), function(event, item) { can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path) }, function() {}, target), zone._total(msg.Length()) }), function(event, item, target) { can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path, "", function(msg) {
msg._item = target
}) }, function() {}, target), zone._total(msg.Length())
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, hash) { command: function(can, target, zone, hash) {
zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) { zone._delay_init = function() { can.runAction({}, mdb.INPUTS, [ctx.INDEX], function(msg) {
can.onimport.tree(can, msg.Table(function(value) { can.onimport.tree(can, msg.Table(function(value) {
value.expand = hash[2] == ctx.INDEX && hash[1] == value.index value.expand = hash[2] == ctx.INDEX && hash[1] == value.index
return value return value
}), function(event, item) { can.onimport.tabview(can, "", item.index, ctx.INDEX) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(msg.Length()) }), function(event, item, target) { can.onimport.tabview(can, "", item.index, ctx.INDEX, function(msg) {
msg._item = target
}) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(msg.Length())
}) }, zone.toggle(false) }) }, zone.toggle(false)
}, },
plugin: function(can, target, zone, hash) { zone._delay_init = function() { var total = 0 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] != "_") { 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} return total++, {index: key, expand: hash[2] == ctx.INDEX && hash[1] == "can."+key}
} }), } }), function(event, item, target) { can.onimport.tabview(can, "", can.core.Keys(ice.CAN, item.index), ctx.INDEX, function(msg) {
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) msg._item = target
}) }, function() {}, target, null, ctx.INDEX, nfs.PT), zone._total(total)
}, zone.toggle(false) }, }, zone.toggle(false) },
}) })
Volcanos(chat.ONSYNTAX, { Volcanos(chat.ONSYNTAX, {
@ -488,11 +491,11 @@ Volcanos(chat.ONACTION, {
case ssh.SHELL: return can.onimport.tabview(can, "", [web.CODE_XTERM, list[0].slice(6)].join(mdb.FS), ctx.INDEX) case ssh.SHELL: return can.onimport.tabview(can, "", [web.CODE_XTERM, list[0].slice(6)].join(mdb.FS), ctx.INDEX)
case cli.OPENS: return can.runAction(event, ls[0], ls[1], null, true) case cli.OPENS: return can.runAction(event, ls[0], ls[1], null, true)
default: var ls = can.onexport.split(can, list[0]); can.onimport.tabview(can, ls[0], ls[1]) default: var ls = can.onexport.split(can, list[0]); can.onimport.tabview(can, ls[0], ls[1])
} }); can.page.Modify(can, input._target, {className: "input vimer open float"}) } }); can.page.Modify(can, input._target, {className: "input inner open float"})
can.page.style(can, input._target, html.LEFT, left, html.TOP, can._output.offsetHeight/4, html.RIGHT, "") can.page.style(can, input._target, html.LEFT, left, html.TOP, can._output.offsetHeight/4, html.RIGHT, "")
}, },
find: function(event, can) { var last = can.onexport.line(can, can.current.line) find: function(event, can) { var last = can.onexport.line(can, can.current.line)
var ui = can.page.Append(can, can._output, [{view: "input vimer find float", list: [html.ACTION, html.OUTPUT], var ui = can.page.Append(can, can._output, [{view: "input inner find float", list: [html.ACTION, html.OUTPUT],
style: {left: can.ui.project.offsetWidth+can._output.offsetWidth/4-34, top: can._output.offsetHeight/2-60}}]); can.onmotion.move(can, ui._target) style: {left: can.ui.project.offsetWidth+can._output.offsetWidth/4-34, top: can._output.offsetHeight/2-60}}]); can.onmotion.move(can, ui._target)
function find(begin, text) { for (begin; begin <= can.ui.content._max; begin++) { if (can.onexport.text(can, can.onaction._getLine(can, begin)).indexOf(text) > -1) { function find(begin, text) { for (begin; begin <= can.ui.content._max; begin++) { if (can.onexport.text(can, can.onaction._getLine(can, begin)).indexOf(text) > -1) {
return last = begin, can.onaction.selectLine(can, begin, true) return last = begin, can.onaction.selectLine(can, begin, true)

View File

@ -1,29 +1,23 @@
fieldset.vimer>div.output>div.layout>div.layout>div.layout div.content { border-left:var(--box-border); border-top:var(--box-border); }
fieldset.vimer>div.output>div.layout>div.layout input.current { background-color:transparent; color:transparent; padding-left:var(--input-padding); height:var(--code-line-height); position:absolute; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete { background-color:unset; padding-top:0; display:none; position:absolute; height:1px; overflow:visible; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content thead { display:none; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content td:first-child { padding-left:0; }
fieldset.vimer>div.output>div.layout>div.layout div.content div.complete table.content { padding-left:var(--input-padding); width:unset; max-width:600px; display:block; box-shadow:var(--plugin-box-shadow); }
fieldset.vimer>div.output>div.layout>div.layout div.content.insert div.complete:not(.hide) { display:block; top:unset; }
fieldset.vimer.plugin>div.output>div.layout>div.layout div.content.normal input.current { caret-color:var(--notice-bg-color); border:var(--box-notice); }
fieldset.vimer.plugin>div.output>div.layout>div.layout div.content.insert input.current { caret-color:var(--danger-bg-color); border:var(--box-danger); }
fieldset.vimer.plugin>div.output>div.layout>div.layout div.content.normal tr.line.select>td.line { background-color:var(--notice-bg-color); color:white; }
fieldset.vimer.plugin>div.output>div.layout>div.layout div.content.insert tr.line.select>td.line { background-color:var(--danger-bg-color); color:white; }
fieldset.vimer>div.output.normal>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-notice3); }
fieldset.vimer>div.output.insert>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-danger3); }
fieldset.vimer>div.output.normal>div.layout>div.path span.mode.normal { color:var(--notice-bg-color); }
fieldset.vimer>div.output.insert>div.layout>div.path span.mode.insert { color:var(--danger-bg-color); }
fieldset.vimer>div.output.normal>div.project div.item.current { background-color:var(--hover-bg-color); border-right:var(--box-notice3); }
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.insert>div.project div.expand.open { color:var(--danger-bg-color); }
fieldset.vimer>div.output>div.project div.expand.open { color:unset; }
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>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>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-border3); }
fieldset.vimer>div.output.source.normal>div.project div.expand.open { color:var(--notice-bg-color); }
fieldset.vimer>div.output.source.normal>div.project div.item.select { border-right:var(--box-notice3); }
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.normal>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-notice3); }
fieldset.vimer>div.output.source.normal>div.layout>div.path span.mode.normal { color:var(--notice-bg-color); }
fieldset.vimer>div.output.source.normal>div.layout>div.layout>div.content tr.line.select>td.line { background-color:var(--notice-bg-color); color:white; }
fieldset.vimer>div.output.source.normal>div.layout>div.layout>div.content input.current { border:var(--box-notice); caret-color:var(--notice-bg-color); }
fieldset.vimer>div.output.source.insert>div.project div.expand.open { color:var(--danger-bg-color); }
fieldset.vimer>div.output.source.insert>div.project div.item.select { border-right:var(--box-danger3); }
fieldset.vimer>div.output.source.insert>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-danger3); } fieldset.vimer>div.output.source.insert>div.layout>div.tabs>div.tabs>div.tabs.select { border-top:var(--box-danger3); }
fieldset.vimer>div.output.source.insert>div.layout>div.path span.mode.insert { color:var(--danger-bg-color); }
fieldset.vimer>div.output.source.insert>div.layout>div.layout>div.content tr.line.select>td.line { background-color:var(--danger-bg-color); color:white; }
fieldset.vimer>div.output.source.insert>div.layout>div.layout>div.content input.current { border:var(--box-danger); caret-color:var(--danger-bg-color); }
fieldset.vimer>div.output.source.insert>div.layout>div.layout>div.content div.complete:not(.hide) { display:block; top:unset; }
fieldset.vimer>div.output.source>div.layout>div.layout input.current { background-color:transparent; color:transparent; padding-left:var(--input-padding); height:var(--code-line-height); position:absolute; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete { background-color:unset; padding-top:0; height:1px; overflow:visible; display:none; position:absolute; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete div.prefix { color:transparent; white-space:pre; float:left; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content { box-shadow:var(--plugin-box-shadow); padding-left:var(--input-padding); width:unset; max-width:600px; display:block; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content thead { display:none; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content td:first-child { padding-left:0; }
fieldset.vimer>div.output>div.layout>div.tabs>div.tabs>div.tabs.origin.select { border-top:var(--box-danger3); }
div.input.vimer.open.float input[type=text] { width:100% !important; }

View File

@ -11,7 +11,6 @@ Volcanos(chat.ONIMPORT, {
if (can.db.mode == mdb.NORMAL) { can.onkeymap.prevent(event) } if (can.db.mode == mdb.NORMAL) { can.onkeymap.prevent(event) }
}, onkeyup: function(event) { if (event.metaKey) { return } }, onkeyup: function(event) { if (event.metaKey) { return }
can.onimport._value(can); can.onkeymap._complete(event, can) can.onimport._value(can); can.onkeymap._complete(event, can)
}, 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)
}}, {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) },
@ -24,43 +23,32 @@ Volcanos(chat.ONFIGURE, {
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 }
if (can.base.isIn(p, nfs.USR_LEARNING, nfs.USR_INTSHELL)) { return }
if (p && paths.indexOf(p) == -1 && p[0] != nfs.PS) { paths.push(p) } if (p && paths.indexOf(p) == -1 && p[0] != nfs.PS) { paths.push(p) }
}) })
function show(target, zone, path) { can.run(can.request({}, {_method: http.GET, dir_root: path, dir_deep: true}, can.Option()), [nfs.PWD], function(msg) { function show(target, zone, path) { can.run(can.request({}, {_method: http.GET, dir_root: path, dir_deep: true}, can.Option()), [nfs.PWD], function(msg) {
zone._icon(kit.Dict(
web.REFRESH, function(event) { show(target, zone, path) },
mdb.CREATE, function(event, button) { can.onaction.module(event, can, nfs.MODULE) },
)), 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 == nfs.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 == nfs.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 }
return item return item
}); can.onmotion.clear(can, target) }); can.onmotion.clear(can, target), zone._total(msg.Length())
cache = can.onimport.tree(can, list, function(event, item) { cache = can.onimport.tree(can, list, function(event, item, target) {
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(msg) { msg._item = target })
}, 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.onmotion.delay(can, function() { can.onmotion.delay(can, function() { hash.length > 1 && can.onimport.openzone(can, hash[0], hash[1], hash[2]) && can.onimport.tabview(can, hash[0], hash[1], hash[2]), hash = [] })
hash.length > 1 && can.onimport.openzone(can, hash[0], hash[1], hash[2]) && can.onimport.tabview(can, hash[0], hash[1], hash[2]), hash = [] can.onimport._zone_icon(can, msg, zone, function(event, button) { can.onaction._runs(event, can, button) })
})
}, true) } if (paths.length == 1) { return show(target, zone, paths[0]) } can.page.Remove(can, zone._action) }, 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) }) 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, hash) { can.onimport._zone(can, zone, web.DREAM, function(sub, msg) { space: function(can, target, zone, hash) { can.onimport._zone(can, zone, web.DREAM, mdb.NAME, hash), zone.toggle(false) },
sub.onimport._open = function(_, msg, arg) { can.onimport.tabview(can, "", arg, 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) },
}) })
Volcanos(chat.ONACTION, { Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
_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) {
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()
@ -107,19 +95,6 @@ Volcanos(chat.ONACTION, {
}) }, }) },
"扩展": function(event, can) { can.user.input(can.request(event, {action: "extension"}), can, ["url"], function(list) { var sub = can.db.toolkit[list[0]]; sub? sub.select(): can.onimport.exts(can, list[0]) }) }, "扩展": function(event, can) { can.user.input(can.request(event, {action: "extension"}), can, ["url"], function(list) { var sub = can.db.toolkit[list[0]]; sub? sub.select(): can.onimport.exts(can, list[0]) }) },
"创建": function(event, can) { can.onaction.module(event, can, nfs.MODULE) },
"编译": function(event, can) { can.onaction.compile(event, can, code.COMPILE) },
"审批": function(event, can) { can.onimport.tabview(can, "", aaa.APPLY, ctx.INDEX) },
"矩阵": function(event, can) { can.onimport.tabview(can, "", web.MATRIX, ctx.INDEX) },
"聊天": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MESSAGE, ctx.INDEX) },
"源码": function(event, can) { can.onimport.tabview(can, "", web.CODE_GIT_STATUS, ctx.INDEX) },
"计划": function(event, can) { can.onimport.tabview(can, "", web.TEAM_PLAN, ctx.INDEX) },
"流程": function(event, can) { can.onimport.tabview(can, "", web.CHAT_FLOWS, ctx.INDEX) },
"文档": function(event, can) { can.onimport.tabview(can, "", web.WIKI_WORD, ctx.INDEX) },
"后台": function(event, can) { var pod = can.misc.Search(can, ice.POD); can.onimport.tabview(can, "", location.origin+"/c/admin"+(pod? "?pod="+pod: ""), web.SPACE) },
"桌面": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MACOS_DESKTOP, ctx.INDEX) },
"官网": function(event, can) { can.onimport.tabview(can, "", can.misc.MergePodCmd(can, {cmd: web.PORTAL}), web.SPACE) },
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) { var target = can.ui.current; if (!target) { return } _selectLine: function(can) { can.current && can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; if (!target) { return }
@ -134,23 +109,18 @@ Volcanos(chat.ONEXPORT, {
hash: function(can) { return can.misc.SearchHash(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)) }, 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) { scrollHold: function(can, count, begin) { var top = can.ui.content.scrollTop, left = can.ui.content.scrollLeft
var top = can.ui.content.scrollTop, left = can.ui.content.scrollLeft
can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin) 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 can.ui.content.scrollTop = top, can.ui.content.scrollLeft = left
}, },
cursorDown: function(can, target) { cursorDown: function(can, target) { if (!can.current.next()) { return }
if (!can.current.next()) { return }
var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p) var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p)
}, },
cursorUp: function(can, target) { cursorUp: function(can, target) { if (!can.current.prev()) { return }
if (!can.current.prev()) { return } var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.prev()), can.onkeymap.cursorMove(target, 0, p)
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.onmotion.toggle(can, can.ui.complete, false)
can.onmotion.toggle(can, can.ui.complete, false) can.core.List([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.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.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can._fields, item) }), can.page.ClassList.add(can, can._fields, value)
}, },
_plugin: function(can) { can.onkeymap._model(can, mdb.PLUGIN), can.ui.current.blur() }, _plugin: function(can) { can.onkeymap._model(can, mdb.PLUGIN), can.ui.current.blur() },
_normal: function(can) { can.onkeymap._model(can, mdb.NORMAL), can.onkeymap.scrollHold(can) }, _normal: function(can) { can.onkeymap._model(can, mdb.NORMAL), can.onkeymap.scrollHold(can) },

View File

@ -28,34 +28,44 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
cb && cb(target, value) cb && cb(target, value)
}, onclick: function(event) { can.sup.onexport.record(can.sup, value.name, mdb.NAME, value) }}])._target }, onclick: function(event) { can.sup.onexport.record(can.sup, value.name, mdb.NAME, value) }}])._target
}) }, }) },
_icon: function(can, name, button, target) { can.page.Append(can, target, [{text: [can.page.unicode[name]||name, html.SPAN, [html.ICON, name]], onclick: function(event) { _icon: function(can, name, button, target) {
can.base.isFunc(button)? button(event, button): can.onaction[button](event, can, button), can.onkeymap.prevent(event) var _icon = can.page.icons(can, name) || (can.page.unicode[name] && {text: [can.page.unicode[name]||name, html.SPAN, [html.ICON, name]]})
}}]) }, if (!_icon) { return }
_vimer_zone: function(can, msg, target) { msg.Table(function(value) { var action = can.page.parseAction(can, value) _icon.onclick = function(event) { can.base.isFunc(button)? button(event, button): can.onaction[button](event, can, button), can.onkeymap.prevent(event) }
can.onimport.item(can, {type: value.type, status: value.status, can.page.Append(can, target, [_icon])
icon: can.misc.Resource(can, value.icon||value.icons||value.avatar_url), },
name: can.page.Color(value[can.Conf(mdb.FIELD)||mdb.VIEW]||value[mdb.NAME]||value[mdb.TEXT]||value[mdb.TYPE]), _vimer_zone: function(can, msg, target) { msg.Table(function(value) { value._select = value.name == can.Conf("_select")
title: value[mdb.TEXT]||value.description, can.onimport.item(can, value, function(event) { can.sup.onexport.record(can, value.name, mdb.NAME, value, event, event.currentTarget||event.target) })
}, function(event) {
can.sup.onexport.record(can, value.name, mdb.NAME, value, event)
}, function() { return shy(action, function(event, button, meta, carte) { can.misc.Event(event, can, function(msg) { carte.close()
can.sup.onexport.action(can, button, value) || can.run(event, [ctx.ACTION, button], function(msg) { can.sup.onimport._process(can.sup, msg) || can.Update() })
}, value) }) })
}) }, }) },
_zone: function(can, zone, index, cb, field) { zone._delay_init = function() { can.onimport.plug(can, can.base.isObject(index)? index: {index: index, style: html.OUTPUT, mode: mdb.ZONE, field: field}, function(sub) { _zone_icon: function(can, msg, zone, cb) {
sub.run = function(event, cmds, cb) { can.runActionCommand(can.request(event, {mode: mdb.ZONE}), index.index||index, cmds, cb) } var action = can.core.List(can.Conf(ctx.INPUTS), function(item) { if (item.type == html.BUTTON && [ice.LIST, ice.BACK].indexOf(item.name) == -1) { return item.name } })
zone._icon(kit.Dict( var _menu = shy({}, action.concat(can.base.Obj(msg.Option(ice.MSG_ACTION), [])), function(event, button, meta, carte) {
web.REFRESH, function(event) { sub.Update(event) }, cb? cb(event, button): can.Update(event, [ctx.ACTION, button]), carte.close() })
mdb.CREATE, function(event) { sub.Update(event, [ctx.ACTION, mdb.CREATE]) }, if (_menu.list.length == 0) {
"=", function() { can.onimport.tabview(can, "", [sub.ConfIndex()].concat(sub.Conf(ctx.ARGS)).join(","), ctx.INDEX) }, zone._icon(kit.Dict(web.REFRESH, function(event) { zone.refresh() }))
)) return
var action = can.core.List(sub.Conf(ctx.INPUTS), function(item) { if (item.type == html.BUTTON && [ice.LIST, ice.BACK].indexOf(item.name) == -1) { return item.name } }) }
sub.onexport.output = function(_sub, msg) { zone._icon(kit.Dict(web.REFRESH, function(event) { zone.refresh() }, "menu", function() { can.user.carte(event, can, _menu.meta, _menu.list, _menu) }))
zone._menu = shy({_trans: sub._trans}, action.concat(can.base.Obj(msg.Option(ice.MSG_ACTION), [])), function(event, button, meta, carte) { },
sub.Update(event, [ctx.ACTION, button]), carte.close() _zone: function(can, zone, index, field, hash) { zone._delay_init = function() { can.onimport.plug(can, can.base.isObject(index)? index: {
}), zone._total(msg.Length()), cb(sub, msg) index: index, style: html.OUTPUT, mode: mdb.ZONE, field: field, _select: hash[2] == zone.name? hash[1]: "",
can.page.style(can, sub._output, html.MAX_HEIGHT, "", html.HEIGHT, ""), can.user.toastSuccess(can) }, function(sub) { sub.run = function(event, cmds, cb) { can.runActionCommand(can.request(event, {mode: mdb.ZONE}), index.index||index, cmds, cb) }
sub.onexport.output = function(_sub, msg) { can.onimport._zone_icon(sub, msg, zone), zone._total(msg.Length())
sub.onimport.size(sub, zone._target.offsetHeight, zone._target.offsetWidth, false), can.page.style(can, sub._output, html.MAX_HEIGHT, "", html.HEIGHT, "")
can.user.toastSuccess(can)
}, can.ui.zone[zone.name].refresh = function() { sub.Update() } }, can.ui.zone[zone.name].refresh = function() { sub.Update() }
sub.onimport._field = function(msg) {
msg.Table(function(value) { var pod = msg.Option(ice.MSG_USERPOD), cmd = value._command||value.index, args = can.base.Obj(value.args, [])
can.onimport.tabview(can, "", cmd == chat.IFRAME && args.length > 0? args[0]: "/s/"+pod+"/c/"+cmd, web.SPACE, function(msg) {
can.page.SelectOne(can, msg._tab, html.SPAN, function(target) { can.page.Modify(can, target, value.title||can.core.Keys(pod, cmd)) })
})
})
}
sub.onimport._open = function(msg, arg) { can.onimport.tabview(can, "", arg, web.SPACE, function(msg) {}) }
sub.onexport.record = function(sub, value, key, item, event, target) { can.onimport.tabview(can, "", value, zone.name, function(msg) {
can.onappend.style(can, [item.type, item.status], msg._tab)
msg._item = target
}) }
}, zone._target) } }, }, zone._target) } },
zone: function(can, list, target) { target = target||can.ui.project zone: function(can, list, target) { target = target||can.ui.project
return can.page.Append(can, target, can.core.List(list, function(zone) { can.base.isString(zone) && (zone = {name: zone}); if (!zone) { return } return can.page.Append(can, target, can.core.List(list, function(zone) { can.base.isString(zone) && (zone = {name: zone}); if (!zone) { return }
@ -171,8 +181,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
} }
return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [ return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [
can.onimport._icons(can, tabs), can.onimport._nick(can, tabs), {icon: mdb.DELETE, onclick: function(event) { tabs._target._close(), can.onkeymap.prevent(event) }}, can.onimport._icons(can, tabs), can.onimport._nick(can, tabs), {icon: mdb.DELETE, onclick: function(event) { tabs._target._close(), can.onkeymap.prevent(event) }},
], onclick: function(event) { ], onclick: function(event) { can.onmotion.scrollIntoView(can, tabs._target)
can.isCmdMode() && event.currentTarget.scrollIntoView()
if (can.page.ClassList.has(can, tabs._target, html.SELECT)) { return } if (can.page.ClassList.has(can, tabs._target, html.SELECT)) { return }
can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs) can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs)
}, oncontextmenu: function(event) { var target = tabs._target, _action = can.page.parseAction(can, tabs) }, oncontextmenu: function(event) { var target = tabs._target, _action = can.page.parseAction(can, tabs)
@ -182,7 +191,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
"Close Other", function(event) { target.click(), can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || target._close() }) }, "Close Other", function(event) { target.click(), can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || target._close() }) },
"Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) { "Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) {
can.page.SelectOne(can, target, html.SPAN, function(target) { can.page.Modify(can, target, list[0]||tabs.name) }) can.page.SelectOne(can, target, html.SPAN, function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
can.onexport.tabs && can.onexport.tabs(can) // can.onexport.tabs && can.onexport.tabs(can)
}) }, menu.meta, }) }, menu.meta,
), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta)), _action), function(event, button, meta) { ), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta)), _action), function(event, button, meta) {
(meta[button]||menu)(can.request(event, tabs), button, meta) (meta[button]||menu)(can.request(event, tabs), button, meta)