forked from x/volcanos
add some
This commit is contained in:
parent
99900b8b2a
commit
89cb1a379a
2
frame.js
2
frame.js
@ -247,7 +247,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
||||
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) })
|
||||
}
|
||||
can.page.requireModules(can, can.Conf("modules"), function() {
|
||||
can.onmotion.clear(can)
|
||||
if (sub.Mode() != "result") { can.onmotion.clear(can) }
|
||||
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
|
||||
if (action !== false) { can.onkeymap._build(sub)
|
||||
can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
|
||||
|
77
index.css
77
index.css
@ -1,5 +1,4 @@
|
||||
body {
|
||||
background-color:black;
|
||||
--danger-bg-color:red; --danger-fg-color:white;
|
||||
--notice-bg-color:blue; --notice-fg-color:white;
|
||||
--create-bg-color:blue; --create-fg-color:white;
|
||||
@ -46,7 +45,7 @@ select { padding:0 10px; }
|
||||
input:not([type=file]) { padding:0 10px; }
|
||||
input:not([type=button]) { border-radius:0; outline:none; width:120px; }
|
||||
input[name=path] { width:160px; }
|
||||
input[name=line] { width:60px; }
|
||||
input[name=line] { width:60px !important; }
|
||||
input[name=limit] { width:60px; }
|
||||
input[name=offend] { width:80px; }
|
||||
input[name=id] { width:60px; }
|
||||
@ -58,10 +57,11 @@ table.content tr.offline { color:var(--disable-fg-color); }
|
||||
table.content tr.offline a { color:var(--disable-fg-color); }
|
||||
table.content th { padding:5px; box-shadow: var(--box-shadow); }
|
||||
table.content td { padding:5px; }
|
||||
table.content.action th:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
||||
table.content.action td:last-child { position:sticky; right:2px; box-shadow: var(--box-shadow); }
|
||||
table.content.action td:last-child input { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||
table.content.action th:last-child { position:sticky; right:2px; }
|
||||
table.content.action td:last-child { position:sticky; right:2px; text-align:center; }
|
||||
table.content.action td:last-child input:not(:last-child) { margin-right:10px; }
|
||||
table.content col.time { width:180px; }
|
||||
table.content col.action { width:200px; }
|
||||
table.content:hover col.option { background-color:var(--hover-bg-color); }
|
||||
fieldset.panel.Action.tabs table.content { width:100%; }
|
||||
h1 { text-align:center; margin:20px 0; } h2 { margin:20px 0; } h3 { margin:20px 0; }
|
||||
@ -73,7 +73,9 @@ kbd { padding:0 5px; font-family:var(--code-font-family); }
|
||||
img, iframe { margin-bottom:-3px; }
|
||||
iframe { height:420px; width:100%; }
|
||||
/* fieldset */
|
||||
fieldset>legend { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||
// fieldset>legend { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||
fieldset>legend { box-shadow:var(--box-shadow); }
|
||||
fieldset>legend>i { margin-right:5px; }
|
||||
fieldset>form.option>div.item:not(.icon) { margin-right:10px; box-shadow:var(--box-shadow); }
|
||||
fieldset>form.option>div.item.text.cmd { color:var(--code-fg-color); width:100%; }
|
||||
fieldset>form.option>div.item.textarea { width:100%; height:96px; }
|
||||
@ -165,13 +167,12 @@ body:not(.windows) div.tabs { font-family:monospace; }
|
||||
body:not(.windows) div.path { font-family:monospace; }
|
||||
body:not(.windows) div.carte { font-family:monospace; }
|
||||
/* icon */
|
||||
/* legend>i:first-child { margin-right:10px; } */
|
||||
div.item>i:first-child { margin-right:10px; }
|
||||
div.project div.item>i:first-child { color:var(--panel-output-fg-color); }
|
||||
div.project div.item.text:hover>i:first-child { color:var(--plugin-fg-color); }
|
||||
div.action div.icon, div.action span.icon { font-size:20px; line-height:32px; padding:0 5px; margin:0; height:32px; }
|
||||
form.option div.icon, form.option span.icon { font-size:20px; line-height:32px; padding:0 5px; margin:0; height:32px; }
|
||||
form.option div.icon:first-child { margin-left:-5px; }
|
||||
// form.option div.icon:first-child { margin-left:-5px; }
|
||||
form.option div.icon.refresh { font-size:28px; line-height:28px; translate:0 -1px; }
|
||||
form.option div.icon.goback { font-size:28px; line-height:28px; translate:0 -1px; }
|
||||
form.option div.icon.next { font-size:18px; }
|
||||
@ -255,7 +256,6 @@ div.output.card>div.item { background:var(--plugin-bg-color); padding:10px; bord
|
||||
div.output.card>div.item>div.title { font-size:1.2rem; font-weight:bold; padding:10px; border-bottom:var(--box-border); }
|
||||
div.output.card>div.item>div.content { padding:10px; height:70px; }
|
||||
div.output.card>div.item>div.action { text-align:right; width:100%; display:flex; }
|
||||
// div.output.card>div.item:not(:hover)>div.action { visibility:hidden; }
|
||||
div.output.card>div.item>div.action>input { margin-right:5px; box-shadow:var(--box-shadow); }
|
||||
input[type=button].danger:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
input[type=button].notice:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||
@ -300,12 +300,14 @@ input:not([type=button]):focus { border:var(--box-notice); }
|
||||
input[type=button]:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
textarea { background-color:var(--input-bg-color); color:var(--input-fg-color); border:var(--box-border); }
|
||||
textarea:focus { border:var(--box-notice); }
|
||||
table.content tr:hover { background-color:var(--tr-hover-bg-color); }
|
||||
table.content tr:hover { background-color:var(--tr-hover-bg-color) !important; }
|
||||
table.content tr.select { background-color:var(--tr-hover-bg-color); }
|
||||
table.content th { background-color:var(--th-bg-color); color:var(--th-fg-color); }
|
||||
table.content td:hover { background-color:var(--td-hover-bg-color); }
|
||||
table.content td.select { background-color:var(--td-hover-bg-color); }
|
||||
table.content.action td:last-child { background-color:var(--th-bg-color); }
|
||||
table.content.action td:last-child input { box-shadow:var(--box-shadow); }
|
||||
table.content.action tr:hover td:last-child { box-shadow: var(--box-shadow); }
|
||||
table.content.action tr:hover td:last-child { background-color:var(--th-bg-color); }
|
||||
h1:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
h2:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
h3:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); }
|
||||
@ -385,18 +387,37 @@ fieldset.cmd>div.item.time { line-height:22px; padding:5px 10px; float:right; }
|
||||
fieldset.cmd>div.item.avatar { padding:0; height:32px; float:right; }
|
||||
fieldset.cmd>div.item.avatar>img { height:32px; }
|
||||
fieldset.cmd>div.item.usernick { line-height:22px; padding:5px 10px; float:right; }
|
||||
fieldset.cmd>div.action>div.tabs.select { border-bottom:var(--notice-bg-color) solid 2px; height:32px; }
|
||||
fieldset.cmd>div.status>legend.select { border-top:var(--notice-bg-color) solid 2px; }
|
||||
fieldset.cmd>div.output>div.project div.item.select { border-right:var(--notice-bg-color) solid 4px; }
|
||||
fieldset.plug>div.output table.content { width:100%; }
|
||||
fieldset.location>div.action input[type=text] { width:40px; }
|
||||
fieldset.config form.option input[name=key] { width:240px; }
|
||||
fieldset.qrcode>div.output div.code { padding:0; }
|
||||
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:5px; }
|
||||
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:5px; }
|
||||
fieldset.plug.dream.zone>div.output>div.item>span { line-height:32px; }
|
||||
fieldset.dream>div.output.card>div.item>div.title>img { height:48px; width:48px; float:left; }
|
||||
fieldset.dream>div.output.card>div.item>div.title>span { line-height:48px; margin-left:10px; }
|
||||
fieldset.inner.float>div.status { display:none; }
|
||||
fieldset.inner>form.option input[name=path] { width:80px !important; }
|
||||
fieldset.inner>form.option input[name=file] { width:160px !important; }
|
||||
fieldset.inner>div.output>div.project div.item.modify { background-color:#00800036; }
|
||||
fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:gray; }
|
||||
fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
|
||||
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
||||
fieldset.xterm>div.layout { clear:both; }
|
||||
fieldset.xterm div.layout div.output { border-left:var(--box-border); border-top:var(--box-border); }
|
||||
fieldset.xterm div.layout div.output.select { border:var(--box-border)}
|
||||
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
|
||||
fieldset.location>div.action input[type=text] { width:40px; }
|
||||
fieldset.config form.option input[name=key] { width:240px; }
|
||||
fieldset.qrcode>div.output div.code { padding:0; }
|
||||
fieldset.macos.desktop.cmd>div.output>fieldset.macos.dock { z-index:11; }
|
||||
fieldset.web.code.git.status>div.output table.content { width:100%; }
|
||||
fieldset.can.view { font-size:14px; }
|
||||
fieldset.can.data { font-size:14px; }
|
||||
fieldset.word>form.option>div.item>input[name=path] { width:320px !important; }
|
||||
fieldset.plan div.output div.content>table.content { height:100%; width:100%; }
|
||||
fieldset.draw div.output svg { margin-bottom:-5px; }
|
||||
fieldset.draw>form.option>div.item.pid>input { width:60px; }
|
||||
fieldset.draw>form.option>div.item.pid>input { width:60px !important; }
|
||||
fieldset.draw.trend div.output svg { background-color:#1b5b738c; }
|
||||
fieldset.draw.trend div.output { overflow:hidden; }
|
||||
fieldset.draw.spide div.output { overflow-y:hidden; }
|
||||
@ -407,39 +428,21 @@ fieldset.web.code.docker.studio>div.output>fieldset { margin:0; }
|
||||
fieldset.web.code.docker.studio>div.output>fieldset>legend { display:none; }
|
||||
fieldset.web.code.docker.studio>div.output>fieldset>form.option>div:first-child { margin-left:10px; }
|
||||
fieldset.web.code.docker.studio>div.output { padding:10px; }
|
||||
fieldset.web.code.git.status>div.output table.content { width:100%; }
|
||||
fieldset.inner>div.output>div.project div.item.modify { background-color:#00800036; }
|
||||
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:5px; }
|
||||
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:5px; }
|
||||
fieldset.plug.dream.zone>div.output>div.item>span { line-height:32px; }
|
||||
fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
|
||||
body>div.input.vimer.plug td:first-child { display:none; }
|
||||
fieldset.cmd>div.action>div.tabs.select { border-bottom:var(--notice-bg-color) solid 2px; height:32px; }
|
||||
fieldset.cmd>div.status>legend.select { border-top:var(--notice-bg-color) solid 2px; }
|
||||
fieldset.cmd>div.output>div.project div.item.select { border-right:var(--notice-bg-color) solid 4px; }
|
||||
/* fieldset.cmd>div.output>div.project div.item { line-height:32px; } */
|
||||
fieldset.web.code.xterm>div.action>div.tabs:only-child { display:none; }
|
||||
fieldset.macos.desktop.cmd>div.output>fieldset.macos.dock { z-index:11; }
|
||||
fieldset.studio>div.output { padding:10px; }
|
||||
fieldset.studio>div.action>div.cmds { padding:5px 20px; }
|
||||
fieldset.studio>div.output>fieldset>form.option div.icon.delete { display:none; }
|
||||
fieldset.studio>div.output>fieldset>form.option div.icon:nth-child(2) { margin-left:5px; }
|
||||
fieldset.studio>div.output>fieldset>div.output>table.content { width:100%; }
|
||||
fieldset.studio>div.output>fieldset:not(.select) { display:none; }
|
||||
fieldset.can.view { font-size:14px; }
|
||||
fieldset.can.data { font-size:14px; }
|
||||
fieldset.dream>div.output.card>div.item>div.title>img { height:48px; float:left; }
|
||||
fieldset.dream>div.output.card>div.item>div.title>span { line-height:48px; margin-left:10px; }
|
||||
fieldset.inner>form.option input[name=path] { width:80px; }
|
||||
fieldset.inner>form.option input[name=file] { width:160px; }
|
||||
body>div.input.vimer.plug td:first-child { display:none; }
|
||||
body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); }
|
||||
body.white fieldset.inner.cmd>div.output>div.layout>div.tabs div:not(.select):not(:hover) { background-color:transparent; }
|
||||
body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
|
||||
body.webview fieldset.word>form.option>div.item>input[name=path] { width:160px; }
|
||||
body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; }
|
||||
body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; }
|
||||
body.mobile fieldset.inner>form.option input[name=file] { width:90px; }
|
||||
body.windows fieldset.inner>div.output { overflow:hidden; }
|
||||
body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; }
|
||||
fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:gray; }
|
||||
|
||||
/* scrollbar */
|
||||
div.scrollbar { background-color:#0000ff66; border-radius:10px; position:absolute; visibility:hidden; font-size:8px !important; }
|
||||
div.scrollbar.vertical { writing-mode:tb; width:10px; right:0; top:0; transition:width .3s 1s; }
|
||||
|
11
lib/user.js
11
lib/user.js
@ -123,11 +123,9 @@ Volcanos("user", {
|
||||
parent? remove_sub(parent): can.onmotion.clearCarte(can)
|
||||
var msg = can.request(event); trans = trans||meta._trans
|
||||
meta = meta||can.ondetail||can.onaction||{}, list = can.base.getValid(list, meta.list, can.core.Item(meta)); if (!list || list.length == 0) { return }
|
||||
function click(event, button) { can.misc.Event(event, can, function() { can.onkeymap.prevent(event), can.request(event, {action: button})
|
||||
meta[button]? can.core.CallFunc([meta, button], {event: event, can: can, msg: msg, button: button}): can.base.isFunc(cb)? cb(event, button, meta, carte):
|
||||
can.Update(event, [ctx.ACTION, button])
|
||||
// can.onaction && can.onaction[button] && can.core.CallFunc([can.onaction, button], [event, can, button])
|
||||
// meta._style == nfs.PATH || can.onmotion.clearCarte(can)
|
||||
function click(event, button) { can.misc.Event(event, can, function() { can.onkeymap.prevent(event), can.request(event, {action: button}),
|
||||
(meta[button]? can.core.CallFunc([meta, button], {event: event, can: can, msg: msg, button: button}):
|
||||
can.base.isFunc(cb)? cb(event, button, meta, carte): can.Update(event, [ctx.ACTION, button])) || can.onmotion.clearCarte(can)
|
||||
}) }
|
||||
var ui = can.page.Append(can, document.body, [{view: [[chat.CARTE, meta._style||can.base.replaceAll(can._index||"", nfs.PT, lex.SP)||"", chat.FLOAT]], list: can.core.List(list, function(item, index) {
|
||||
if (item == web.FILTER) {
|
||||
@ -138,7 +136,6 @@ Volcanos("user", {
|
||||
function subs(event) { var sub = can.user.carte(event, can, meta, item.slice(1), cb||function(event, button) {
|
||||
can.onimport && can.onimport[item[0]] && can.onimport[item[0]](can, button)
|
||||
}, carte, trans); can.onlayout.figure(event, can, sub._target, true), carte._sub = sub }
|
||||
|
||||
var _style = can.page.buttonStyle(can, item)
|
||||
return item === ""? /* 0.space */ {type: html.HR}: can.base.isString(item)||can.base.isNumber(item)? /* 1.string */ {view: [[html.ITEM, item, _style], html.DIV, meta._style == ice.CMD? item: can.user.trans(can, item, trans)], onclick: function(event) { click(event, item) }, onmouseenter: function(event) { remove_sub(carte) } }:
|
||||
can.base.isArray(item)? /* 2.array */ {view: html.ITEM, list: [{text: can.user.trans(can, item[0], trans)}, {text: [lex.SP+can.page.unicode.next, "", [html.ICON, "next"]]}], onmouseenter: subs, onclick: subs}: /* 3.object */ item
|
||||
@ -156,7 +153,7 @@ Volcanos("user", {
|
||||
},
|
||||
input: function(event, can, form, cb, button) { if (!form || form.length == 0) { return cb() }
|
||||
var msg = can.request(event); event = event._event||event; var need = {}
|
||||
var ui = can.page.Append(can, document.body, [{view: [[html.INPUT].concat(can.ConfIndex().split("."), msg.Option(mdb.TYPE), [chat.FLOAT])], list: [
|
||||
var ui = can.page.Append(can, document.body, [{view: [[html.INPUT].concat((can.ConfIndex()||"").split("."), msg.Option(mdb.TYPE), [chat.FLOAT])], list: [
|
||||
msg.Option(wiki.TITLE) && {view: [wiki.TITLE, html.LEGEND, msg.Option(wiki.TITLE)]},
|
||||
{view: html.OPTION, list: [{type: html.TABLE, list: can.core.List(form, function(item) {
|
||||
item = can.base.isString(item)? {type: html.TEXT, name: item}: item.length > 0? {type: html.SELECT, name: item[0], values: item.slice(1)}: item
|
||||
|
@ -1,9 +1,9 @@
|
||||
Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.db.current = msg.TableDetail()
|
||||
can.ui.target = can.page.Appends(can, can._output, [{type: html.IFRAME, src: can.db.current.link, height: can.ConfHeight()-1, width: can.ConfWidth()}])._target
|
||||
can.ui.target = can.page.Appends(can, can._output, [{type: html.IFRAME, src: can.db.current.link, height: can.ConfHeight(), width: can.ConfWidth()}])._target
|
||||
},
|
||||
layout: function(can) {
|
||||
var item = can.db.current; can.sup.onexport.title(can, item.name||item.link.split(mdb.QS)[0])
|
||||
can.page.style(can, can.ui.target, html.HEIGHT, can.ConfHeight()-1, html.WIDTH, can.ConfWidth())
|
||||
can.page.style(can, can.ui.target, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth())
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {open: function(event, can) { can.user.open(can.db.current.link) }})
|
||||
|
@ -44,32 +44,16 @@ Volcanos(chat.ONFIGURE, {
|
||||
}, true) } if (path.length == 1) { return show(target, zone, path[0]) } can.page.Remove(can, zone._action)
|
||||
can.onimport.zone(can, can.core.List(path, function(path) { return kit.Dict(mdb.NAME, path, path == args[0]? chat._INIT: chat._DELAY_INIT, function(target, zone) { show(target, zone, path) }) }), target)
|
||||
},
|
||||
// xterm: function(can, target, zone) { can.onimport._zone(can, zone, web.CODE_XTERM, function(sub, msg) {
|
||||
// sub.onexport.record = function(sub, value, key, item) { can.onimport.tabview(can, "", [web.CODE_XTERM, item.hash, item.name||item.type].join(mdb.FS), ctx.INDEX) }
|
||||
// }) },
|
||||
// favor: function(can, target, zone) { can.onimport._zone(can, zone, web.CHAT_FAVOR, function(sub, msg) {
|
||||
// sub.onexport.record = function(sub, value, key, item, event) { switch (item.type) {
|
||||
// case nfs.FILE: var ls = can.onexport.split(can, item.text); can.onimport.tabview(can, ls[0], ls[1]); break
|
||||
// case mdb.LINK: can.onimport.tabview(can, "", item.text, web.SPACE); break
|
||||
// case ctx.INDEX: can.onimport.tabview(can, "", item.text, ctx.INDEX); break
|
||||
// case ssh.SHELL: can.onimport.tabview(can, "", [web.CODE_XTERM, item.text].join(mdb.FS), ctx.INDEX); break
|
||||
// case cli.OPENS: can.runAction(event, cli.OPENS, [item.text]); break
|
||||
// } }
|
||||
// }) },
|
||||
space: function(can, target, zone) { can.onimport._zone(can, zone, web.DREAM, function(sub, msg) {
|
||||
sub.onimport._open = function(_, msg, arg) {
|
||||
var link = can.misc.ParseURL(can, arg); if (link.pod) { can.onimport.tabview(can, "", link.pod, web.SPACE), sub.Update(); return }
|
||||
sub.onimport._open = function(_, msg, arg) { var link = can.misc.ParseURL(can, arg)
|
||||
if (link.pod) { can.onimport.tabview(can, "", link.pod, web.SPACE), sub.Update(); return }
|
||||
can.onimport.tabview(can, "", arg, web.SPACE)
|
||||
}
|
||||
sub.onexport.record = function(sub, value, key) {
|
||||
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, sub._output, html.DIV_ITEM, function(target, index) { can.onappend.style(can, msg.status[index], target) })
|
||||
}) },
|
||||
repos: function(can, target, zone) { can.onimport._zone(can, zone, {index: web.CODE_GIT_SEARCH, args: ["repos"], style: html.OUTPUT, mode: mdb.ZONE}, function(sub, msg) {
|
||||
sub.onexport.record = function(sub, value, key, data) {
|
||||
can.user.opens(data.html_url)
|
||||
}
|
||||
sub.onexport.record = function(sub, value, key, data) { can.user.opens(data.html_url) }
|
||||
}) },
|
||||
})
|
||||
Volcanos(chat.ONACTION, {list: [
|
||||
@ -133,6 +117,10 @@ Volcanos(chat.ONACTION, {list: [
|
||||
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 }
|
||||
can.db._key_list = can.onkeymap._parse(event, can, mdb.PLUGIN, can.db._key_list, can.ui.content)
|
||||
},
|
||||
})
|
||||
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 },
|
||||
|
@ -1,7 +1,3 @@
|
||||
fieldset.word>form.option>div.item>input[name=path] { width:320px; }
|
||||
body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; }
|
||||
body.webview fieldset.word>form.option>div.item>input[name=path] { width:160px; }
|
||||
|
||||
fieldset.word>div.output { padding:10px; }
|
||||
fieldset.word>div.output>p { margin:20px auto; }
|
||||
fieldset.word>div.output div.story.flex { display:flex; justify-content:center; }
|
||||
|
@ -149,6 +149,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
||||
if (can.page.ClassList.has(can, target, html.SELECT)) {
|
||||
var next = target.nextSibling||target.previousSibling; if (!next) { return } next.click()
|
||||
} cbs && cbs(tabs), can.page.Remove(can, target)
|
||||
can.onexport.tabs(can)
|
||||
}
|
||||
return {view: html.TABS, title: tabs.title||tabs.text, list: [{text: [tabs.nick||tabs.name, html.SPAN, mdb.NAME]}, {icon: mdb.DELETE, onclick: function(event) {
|
||||
close(tabs._target), can.onkeymap.prevent(event)
|
||||
@ -158,13 +159,17 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
|
||||
target._item = tabs, tabs._target = target, target._close = function() { close(target) }
|
||||
var _action = can.page.parseAction(can, tabs)
|
||||
can.page.Modify(can, target, {draggable: true, _close: function() { close(target) },
|
||||
ondragstart: function(event) { action._drop = function(before) { before.parentNode == action && action.insertBefore(target, before) } },
|
||||
ondragstart: function(event) { action._drop = function(before) {
|
||||
before.parentNode == action && action.insertBefore(target, before)
|
||||
can.onexport.tabs(can)
|
||||
} },
|
||||
ondragover: function(event) { event.preventDefault(), action._drop(event.target) },
|
||||
oncontextmenu: function(event) { can.user.carte(event, can, kit.Dict(
|
||||
"Close", function(event) { close(target) },
|
||||
"Close Other", function(event) { can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || close(target) }) },
|
||||
"Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) {
|
||||
can.page.Select(can, target, "span.name", function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
|
||||
can.page.Select(can, target, html.SPAN_NAME, function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
|
||||
can.onexport.tabs(can)
|
||||
}) }, menu.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)
|
||||
@ -228,25 +233,33 @@ Volcanos(chat.ONEXPORT, {
|
||||
session: function(can, key, value) { return can.misc[can.user.isWebview? "localStorage": "sessionStorage"](can, [can.Conf(ctx.INDEX), key, location.pathname].join(":"), value == ""? "": JSON.stringify(value)) },
|
||||
action_value: function(can, key, def) { var value = can.Action(key); return can.base.isIn(value, ice.AUTO, key)? def: value },
|
||||
tool: function(can) { can.misc.sessionStorage(can, [can.ConfIndex(), "tool"], JSON.stringify(can.page.Select(can, can._status, html.LEGEND, function(target) { return target._meta }))) },
|
||||
tabs: function(can) {},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {
|
||||
onkeydown: function(event, can) {
|
||||
if (can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS)) { return }
|
||||
if (event.ctrlKey && "0" <= event.key && event.key <= "9") { return can.onaction.ctrln(event, can) }
|
||||
can._keylist = can.onkeymap._parse(event, can, mdb.PLUGIN, can._keylist||[], can._output)
|
||||
},
|
||||
escape: function(event, can) {},
|
||||
space: function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) },
|
||||
enter: function(event, can) {},
|
||||
ctrln: function(event, can) { can.onkeymap.selectCtrlN(event, can, can._action, html.DIV_TABS) },
|
||||
tabs: function(event, can) {},
|
||||
tabx: function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) { target._close() }) },
|
||||
})
|
||||
Volcanos(chat.ONKEYMAP, {
|
||||
_mode: {
|
||||
plugin: {
|
||||
Escape: shy("清理屏幕", function(event, can) { can.onaction.escape(event, can) }),
|
||||
Enter: shy("执行操作", function(event, can) { can.onaction.enter(event, can) }),
|
||||
" ": shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }),
|
||||
" ": shy("搜索项目", function(event, can) { can.onaction.space(event, can) }),
|
||||
f: shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }),
|
||||
a: shy("展示项目", function(event, can) { can.ui && can.ui.project && (can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can)) }),
|
||||
v: shy("展示预览", function(event, can) { can.ui && can.ui.profile && (can.onmotion.toggle(can, can.ui.profile), can.onimport.layout(can)) }),
|
||||
r: shy("展示输出", function(event, can) { can.ui && can.ui.display && (can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can)) }),
|
||||
a: shy("展示项目", function(event, can) { can.ui.project && (can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can)) }),
|
||||
v: shy("展示预览", function(event, can) { can.ui.profile && (can.onmotion.toggle(can, can.ui.profile), can.onimport.layout(can)) }),
|
||||
r: shy("展示输出", function(event, can) { can.ui.display && (can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can)) }),
|
||||
p: shy("添加插件", function(event, can) { can.sup.onaction["添加工具"](event, can.sup) }),
|
||||
x: shy("关闭标签", function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) { target._close() }) }),
|
||||
t: shy("添加标签", function(event, can) { can.onaction.tabs(event, can) }),
|
||||
x: shy("添加标签", function(event, can) { can.onaction.tabx(event, can) }),
|
||||
l: shy("打开右边标签", function(event, can) { can.page.Select(can, can._action, html.DIV_TABS_SELECT, function(target) {
|
||||
var next = target.nextSibling; next && can.page.ClassList.has(can, next, html.TABS) && next.click()
|
||||
}) }),
|
||||
|
Loading…
x
Reference in New Issue
Block a user