diff --git a/const.js b/const.js index 1a06c024..0e57592f 100644 --- a/const.js +++ b/const.js @@ -162,6 +162,7 @@ var cli = { MAKE: "make", EXEC: "exec", DONE: "done", COST: "cost", FROM: "from", CLEAR: "clear", LINUX: "linux", DARWIN: "darwin", WINDOWS: "windows", RUN: "run", + RUNTIME: "runtime", PWD: "pwd", } var log = { diff --git a/frame.js b/frame.js index 0f6723bb..93570f79 100644 --- a/frame.js +++ b/frame.js @@ -40,7 +40,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { if (can.base.isUndefined(msg[ice.MSG_DAEMON])) { can.base.isUndefined(sub._daemon) && can.ondaemon._list[0] && (sub._daemon = can.ondaemon._list.push(sub)-1) if (sub._daemon) { msg.Option(ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], sub._daemon)) } } if (!can.misc.CookieSessid(can) && can.user.info.sessid) { msg.Option(ice.MSG_SESSID, can.user.info.sessid) } - msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME)) + msg.OptionDefault(ice.MSG_LANGUAGE, can.user.info.language), msg.OptionDefault(ice.MSG_THEME, can.getHeader(chat.THEME)) can.base.isIn(sub.ConfIndex(), "qrcode", "cli.qrcode") && can.page.exportValue(sub, msg) can.onengine.signal(panel, chat.ONREMOTE, can.request({}, {_follow: panel._follow, _msg: msg, _cmds: cmds})) var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+"/chat/"+panel._name+"/") @@ -79,7 +79,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { }, }) Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return } - can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||""}, function(event, msg, cmd, arg, cb) { + return can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||""}, function(event, msg, cmd, arg, cb) { var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]||can; can.base.isFunc(sub.ondaemon[cmd])? can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}): can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb) @@ -306,7 +306,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { can.run(can.request(event, value), [ctx.ACTION, item.name]) }} })) - can.page.Append(can, target, [{type: html.INPUT, data: {type: html.BUTTON}, name: "more", value: can.user.trans(can, "more"), onclick: function(event) { + can.page.Append(can, target, [{type: html.INPUT, data: {type: html.BUTTON}, name: "more", value: can.user.trans(can, "more"), className: can.page.buttonStyle(can, "more"), onclick: function(event) { can.user.carte(event, can, {}, can.core.List(list.slice(limit-1), function(item) { return item.name }), function(event, button) { can.run(can.request(event, value), [ctx.ACTION, button]) }) diff --git a/index.css b/index.css index 4b2ed984..ed159cce 100644 --- a/index.css +++ b/index.css @@ -24,6 +24,7 @@ body { --plugin-bg-color:var(--legend-bg-color); --plugin-fg-color:var(--body-fg-color); --th-bg-color:var(--plugin-bg-color); + --th-fg-color:var(--plugin-fg-color); --td-hover-bg-color:var(--hover-bg-color); --tr-hover-bg-color:var(--hover-bg-color); --float-bg-color:var(--plugin-bg-color); @@ -50,7 +51,7 @@ input[name=limit] { width:60px; } input[name=offend] { width:80px; } input[name=id] { width:60px; } input[name=url] { width:320px; } -input[name=cmd] { background-color:var(--code-bg-color); color:var(--code-fg-color); width:100%; } +input[type=text][name=cmd] { background-color:var(--code-bg-color); color:var(--code-fg-color); width:100%; } table.content.full { width:100%; } table.content thead { position:sticky; top:2px; } table.content tr.offline { color:var(--disable-fg-color); } diff --git a/lib/page.js b/lib/page.js index a2e7bb65..15b01c75 100644 --- a/lib/page.js +++ b/lib/page.js @@ -353,8 +353,8 @@ Volcanos("page", { return action }, buttonStyle: function(can, name) { - return can.base.isIn(name, mdb.CREATE, mdb.INSERT, cli.RESTART, cli.START, cli.BUILD, cli.RUN, web.OPEN)? "notice": - can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, "drop", cli.STOP)? "danger": "" + return can.base.isIn(name, mdb.CREATE, mdb.INSERT, cli.RESTART, cli.START, cli.BUILD, cli.RUN, web.OPEN, "startall", "clone")? "notice": + can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, "drop", cli.STOP, "stopall")? "danger": "" }, exportValue: function(can, msg) { const styles = getComputedStyle(document.body); can.core.List(["--plugin-bg-color", "--plugin-fg-color"].concat(can.core.List(arguments).slice(2)), function(key) { msg.Option(key, styles.getPropertyValue(key)) }) diff --git a/lib/user.js b/lib/user.js index d51469b7..2d98d41e 100644 --- a/lib/user.js +++ b/lib/user.js @@ -242,13 +242,13 @@ Volcanos("user", { {type: html.TD, list: [{type: html.INPUT, name: name, data: {type: type||html.TEXT}}]}, ]} } var _sso = can.core.Item(sso, function(key, value) { - return {view: "sso", list: [{img: can.misc.Resource(can, value.icon)}, {text: key}], onclick: function() { can.user.jumps(value.url) }} + return value.url && {view: "sso", list: [{img: can.misc.Resource(can, value.icon)}, {text: key}], onclick: function() { can.user.jumps(value.url) }} }) can.misc.CookieSessid(can, "") var ui = can.onappend.tabview(can, { "扫码授权": function(target) { var socket = can.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) { if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [ - {text: "
或命令授权: "+_cmd, title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }}, + {text: "
或命令授权: "}, {text: [_cmd, "", html.ITEM], title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }}, ].concat(_sso)), can.onmotion.delay(can, function() { layout() }, 10) } if (cmd == ice.MSG_SESSID) { can.onmotion.delay(can, function() { socket.close() }) if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } diff --git a/panel/footer.js b/panel/footer.js index 5840575a..58ade8f1 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -1,6 +1,6 @@ (function() { var NTIP = "ntip", NLOG = "nlog", NCMD = "ncmd", NKEY = "nkey" Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can.core.Item(can.misc.localStorage(can)).length) - can.ondaemon._init(can); if (can.user.mod.isCmd) { return } can.Conf("version", can.base.trimPrefix(window._version, "?_v=")) + can._wss = can.ondaemon._init(can); if (can.user.mod.isCmd) { return } can.Conf("version", can.base.trimPrefix(window._version, "?_v=")) can.onimport._title(can, msg, target), can.onimport._command(can, msg, target) can.onimport._state(can, msg, target), can.onimport._toast(can, msg, target) }, @@ -35,6 +35,7 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, ontoast: function(can, msg) { can.core.CallFunc(can.onimport.ntip, {can: can, msg: msg}) }, onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) }, onlayout: function(can, layout) { can.onmotion.toggle(can, can._target, !layout || layout == html.TABS) }, + onunload: function(can) { can._wss.close() }, onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) }, oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) }, ondebugs: function(can, msg) { can.runAction(msg, msg.Option(ctx.ACTION), [msg.Option(ctx.INDEX)], function(_msg) { diff --git a/plugin/local/chat/caculator.css b/plugin/local/chat/caculator.css deleted file mode 100644 index 6dc20ce0..00000000 --- a/plugin/local/chat/caculator.css +++ /dev/null @@ -1,24 +0,0 @@ -fieldset.web.chat.caculator>div.output>div.display { - text-align:right; - height:80px; - width:100%; - font-size:50px; -} -fieldset.web.chat.caculator>div.output>table { - width:100%; -} -fieldset.web.chat.caculator>div.output>table td { - text-align:center; - height:80px; - width:80px; -} -fieldset.web.chat.caculator>div.output>table tr:first-child td { - background-color:#46504d; color:white; -} -fieldset.web.chat.caculator>div.output>table td:last-child { - background-color:#fb9f0d !important; color:white; -} -fieldset.web.chat.caculator>div.output>table td:hover { - background-color:var(--hover-bg-color) !important; - cursor:pointer; -} diff --git a/plugin/local/chat/caculator.js b/plugin/local/chat/caculator.js deleted file mode 100644 index f47d01df..00000000 --- a/plugin/local/chat/caculator.js +++ /dev/null @@ -1,57 +0,0 @@ -Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { - var list = [ - ["AC", "+/-", "%", "/"], - ["7", "8", "9", "*"], - ["4", "5", "6", "-"], - ["1", "2", "3", "+"], - ["0", "00", ".", "="], - ] - can.ui.display = can.page.Append(can, can._output, [{view: "display", inner: "0"}])._target - var table = can.page.Append(can, can._output, [{type: html.TABLE}])._target - can.page.Append(can, table, can.core.List(list, function(list) { - return {type: html.TR, list: can.core.List(list, function(item) { - return {type: html.TD, inner: item, onclick: function(event) { - var cb = can.ondetail[item]; cb? cb(event, can, item): ( - can.ui.display.innerHTML = can.base.trimPrefix(can.ui.display.innerHTML + item, "0") - ) - }} - }) } - })) - }, - _show: function(can) { - }, -}, [""]) -Volcanos(chat.ONACTION, { - onkeydown: function(event, can) { - switch (event.key) { - case "=": - can.ondetail[event.key](evnt, can, event.key) - case "Shift": - case "Backspace": - break - default: - can.ui.display.innerHTML += event.key - } - }, -}) -Volcanos(chat.ONDETAIL, { - "AC": function(event, can, button) { - can.ui.display.innerHTML = "0" - }, - "=": function(event, can, button) { - var list = [] - can.core.List(can.core.Split(can.ui.display.innerHTML, "", "+-*/%"), function(item) { - switch (item) { - case "+": - case "-": - case "*": - case "/": - case "%": - default: list.push(item) - } - }) - }, - "+/-": function(event, can, button) { - }, -}) diff --git a/plugin/local/chat/clock.css b/plugin/local/chat/clock.css deleted file mode 100644 index 7c57dc2f..00000000 --- a/plugin/local/chat/clock.css +++ /dev/null @@ -1,4 +0,0 @@ -fieldset.web.chat.clock>div.output>svg g.number text { font-family:sans-serif; font-size:48px; } -fieldset.web.chat.clock>div.output>svg g.hour line { stroke-width:8px; } -fieldset.web.chat.clock>div.output>svg g.minute line { stroke-width:4px; } -fieldset.web.chat.clock>div.output>svg g.second line { stroke-width:2px; stroke:red; } diff --git a/plugin/local/chat/clock.js b/plugin/local/chat/clock.js deleted file mode 100644 index 02e76cf3..00000000 --- a/plugin/local/chat/clock.js +++ /dev/null @@ -1,21 +0,0 @@ -Volcanos(chat.ONIMPORT, { - _init: function(can, msg, cb) { can.page.requireDraw(can, function() { - can.onmotion.hidden(can, can._status), can.base.isFunc(cb) && cb(msg) - can.onmotion.hidden(can, can._action), can.onimport._show(can) - }) }, - _show: function(can) { can.svg.Value("dominant-baseline", "middle") - can.onmotion.clear(can, can.svg), can.svg.Val(html.HEIGHT, can.ConfHeight()), can.svg.Val(html.WIDTH, can.ConfWidth()) - var x = can.ConfWidth()/2, y = can.ConfHeight()/2, r = can.base.Max(can.ConfHeight(), can.ConfWidth())/2-80, c = {x: x, y: y} - function pos(r, angle) { angle -= 90; return {x: x + r * Math.cos(angle * Math.PI / 180), y: y + r * Math.sin(angle * Math.PI / 180)} } - function line(g, c, p) { return can.onimport.draw(can, {shape: svg.LINE, points: [c, p]}, g) } - function group(name) { return can.onimport.group(can, name) } - var number = group("number"), second = group("second"), minute = group("minute"), hour = group("hour") - for (var i = 1; i <= 12; i++) { var p = pos(r, 360/12*i); can.onimport.draw(can, {shape: svg.TEXT, points: [p], style: {inner: i+""}}, number) } - can.core.Timer({internal: 100}, function(){ var t = new Date() - can.onmotion.clear(can, second), can.onmotion.clear(can, minute), can.onmotion.clear(can, hour) - line(hour, c, pos(r*0.6, t.getHours()%12*360/12+t.getMinutes()*30/60)) - line(minute, c, pos(r*0.8, t.getMinutes()*360/60)) - line(second, c, pos(r, t.getSeconds()*360/60)) - }) - }, -}, [""]) diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index abf6707d..7df4a562 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -7,7 +7,7 @@ const CURRENT_FILE = "web.code.inner:currentFile", SELECT_LINE = "selectLine" const VIEW_CREATE = "tabview.view.create", VIEW_REMOVE = "tabview.view.remove", LINE_SELECT = "tabview.line.select" Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Split(can.Option(nfs.PATH), mdb.FS); can.Option(nfs.PATH, paths[0]) can.Mode(msg.Option("mode")||can.Mode()), can.Option(nfs.FILE) == " " && can.Option(nfs.FILE, "") - if (can.Mode() == ice.MSG_RESULT) { msg.result = msg.result||[can._output.innerHTML], can.Mode(chat.SIMPLE) } + if (can.Mode() == ice.MSG_RESULT) { msg.result = msg.result||[can._output.innerHTML], can.Mode(chat.SIMPLE), can.sup.Mode(chat.SIMPLE) } can.core.List(paths.concat(can.core.Split(msg.Option(nfs.REPOS))), function(p) { if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.endWith(p, "-dict/")) { return } if (p && paths.indexOf(p) == -1 && p[0] != nfs.PS) { paths.push(p) } }), can.onmotion.clear(can), can.onappend.style(can, code.INNER), can.sup.onimport._process = function(_can, msg) { @@ -21,23 +21,21 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp can.ui._content = can.ui.content, can.ui._profile = can.ui.profile, can.ui._display = can.ui.display, can.onmotion.hidden(can, can.ui.plug) can.onmotion.hidden(can, can.ui.profile), can.onmotion.hidden(can, can.ui.display) if (can.Conf(ctx.STYLE) == html.OUTPUT) { can.onmotion.hidden(can, can.ui.project), can.page.style(can, can.ui.content, html.HEIGHT, "") } + var args = can.misc.SearchHash(can), tabs = can.onexport.session(can, RECOVER_TABS), tool = can.onexport.session(can, RECOVER_TOOL) switch (can.Mode()) { case chat.SIMPLE: // no break case chat.FLOAT: can.onmotion.hidden(can, can.ui.project); break - case chat.CMD: - can.onappend.style(can, html.OUTPUT) + case chat.CMD: can.onappend.style(can, html.OUTPUT) can.onexport.session(can, PROJECT_HIDE) == html.HIDE && can.onmotion.hidden(can, can.ui.project) if (can.onexport.session(can, TABVIEW_HIDE) == html.HIDE) { can.onmotion.hidden(can, can.ui.project), can.onmotion.hidden(can, can.ui.tabs) } can.onengine.listen(can, chat.ONUNLOAD, function() { can.onexport.recover(can) }) - msg.Option(ice.MSG_TOOLKIT, "[]") + tool = tool||can.base.Obj(msg.Option(ice.MSG_TOOLKIT)), msg.Option(ice.MSG_TOOLKIT, "[]") case chat.FULL: // no break default: can.user.isMobile && can.onmotion.hidden(can, can.ui.project), can.onimport.project(can, paths), can.onimport._tabs(can) - } var args = can.misc.SearchHash(can), tabs = can.onexport.session(can, RECOVER_TABS), tool = can.onexport.session(can, RECOVER_TOOL) + } can.onimport.tabview(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE), function() { if (!can.isCmdMode()) { return } if (tabs) { - can.core.Next(tabs, function(item, next) { can.onimport.tabview(can, item[0], item[1], item[2], function() { - can.onmotion.delay(can, next) - }) }, function() { + can.core.Next(tabs, function(item, next) { can.onimport.tabview(can, item[0], item[1], item[2], function() { can.onmotion.delay(can, next) }) }, function() { args.length > 0 && can.onimport.tabview(can, args[args.length-3], args[args.length-2]||can.Option(nfs.FILE), args[args.length-1]) }) } else { @@ -247,7 +245,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp return can.onmotion.toggle(can, target, false), can.onimport.layout(can), can.user.toastFailure(can, "nothing to display") } return can.onmotion.toggle(can, target, true), can.onmotion.delay(can, function() { can.onimport.layout(can), can.user.toastSuccess(can) }) }, - toolkit: function(can, meta, cb) { var key = [meta.index].concat(meta.args).join(","), sub = can.db.toolkit[key]; if (sub) { sub.select(); return } + toolkit: function(can, meta, cb) { can.base.isString(meta) && (meta = {index: meta}) + var key = [meta.index].concat(meta.args).join(","), sub = can.db.toolkit[key]; if (sub) { sub.select(); return } can.onimport.tool(can, [meta], function(sub) { can.db.toolkit[key] = sub sub.onaction._close = function() { delete(can.db.toolkit[key]), can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend) } sub.onexport.record = function(sub, value, key, data) { if (!data.file) { return } @@ -256,7 +255,9 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { var paths = can.core.Sp }, meta.index != ice.CAN_PLUGIN && (sub._legend._list = {index: meta.index, args: meta.args}), can.user.isWebview && can.onexport.recover(can), cb && cb(sub) }, can.ui.plug.parentNode, can.ui.plug), can.page.isDisplay(can.ui.plug) || can.onmotion.toggle(can, can.ui.plug, true) && can.onimport.layout(can) }, - layout: function(can) { if (can.isSimpleMode() || can.Conf(ctx.STYLE) == html.OUTPUT) { return can.page.style(can, can.ui.content, html.WIDTH, can.ConfWidth()) } if (can.isCmdMode()) { can.ConfHeight(can.page.height()) } + layout: function(can) { + if (can.isSimpleMode()) { can.page.style(can, can._output, html.MAX_HEIGHT, "") } + if (can.isSimpleMode() || can.Conf(ctx.STYLE) == html.OUTPUT) { return can.page.style(can, can.ui.content, html.WIDTH, can.ConfWidth()) } if (can.isCmdMode()) { can.ConfHeight(can.page.height()) } var content = can.ui.content; if (content._root) { can.ui.content = content._root } can.ui.size = {profile: can._msg.Option(html.WIDTH), display: can._msg.Option(html.HEIGHT)} can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function(height, width) { can.ui.content = content, can.onlayout.layout(can, height, width) var sub = can.ui.profile._plugin; sub && can.page.isDisplay(can.ui.profile) && sub.onimport && sub.onimport.size(sub, can.ui.profile.offsetHeight, can.ui.profile.offsetWidth-1, true) diff --git a/plugin/local/wiki/word.css b/plugin/local/wiki/word.css index 73d65076..363393d1 100644 --- a/plugin/local/wiki/word.css +++ b/plugin/local/wiki/word.css @@ -12,7 +12,7 @@ fieldset.word>div.output iframe { height:480px; width:100%; } fieldset.word>div.output svg.story[data-index] text { cursor:pointer; } fieldset.word>div.output input.story[type=button] { font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:64px; box-shadow:var(--box-shadow); } fieldset.word>div.output fieldset.web.code.inner.output div.output td.line { border-right:var(--box-border); } -fieldset.word>div.output fieldset.story:not(.full) { margin:20px 0; } +fieldset.word>div.output>fieldset.story:not(.full) { margin:20px 0; } fieldset.word>div.output ul { margin:20px 40px; } fieldset.word>div.output fieldset.story:not(.float):not(.full)>form.option>div.icon.delete { display:none; } diff --git a/plugin/table.js b/plugin/table.js index 6d27f65b..0ba6763e 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -180,27 +180,27 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear( }))._target }, tool: function(can, list, cb, target, status) { target = target||can._output, status = status||can._status can.core.List(list.reverse(), function(meta) { can.base.isString(meta) && (meta = {index: meta}), meta.mode = html.FLOAT - can.onimport.plug(can, meta, function(sub) { can.onmotion.hidden(can, sub._target), sub._legend._target = sub._target, sub._legend._meta = {index: meta.index} + can.onimport.plug(can, meta, function(sub) { + sub.onexport.output = function() { var width = can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0) + can.page.style(can, can._output, html.MAX_HEIGHT, "", html.HEIGHT, "", html.WIDTH, "", html.MAX_WIDTH, "") + sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min(sub._target.offsetWidth, width/2, width/(can.base.isIn(sub.ConfIndex(), code.COMPILE, cli.RUNTIME)? 1: 2)), true) + } + can.onmotion.hidden(can, sub._target), sub._legend._target = sub._target, sub._legend._meta = {index: meta.index} can.page.Append(can, sub._legend,[{text: [can.page.unicode.remove, "", mdb.REMOVE], onclick: function(event) { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can), can.onkeymap.prevent(event) }}]) status.appendChild(sub._legend), sub._legend.oncontextmenu = sub._legend.onclick, sub._legend.onclick = function(event) { can.misc.Event(event, can, function(msg) { if (can.page.SelectOne(can, status, nfs.PT+html.SELECT, function(target) { can.onmotion.hidden(can, target._target), can.page.ClassList.del(can, target, html.SELECT); return target }) == sub._legend) { return } - // sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min((can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0))/2, sub._target.offsetWidth)) can.onmotion.select(can, status, html.LEGEND, sub._legend), can.onmotion.toggle(can, sub._target, true) can.onmotion.select(can, target, "fieldset.plug", sub._target) if (sub._delay_init || meta.msg) { sub._delay_init = false, meta.msg = false, sub.Update() } - }) }, sub._delay_init = true, sub.onaction.close = function() { sub.select() }, sub.select = function(show) { + }) }, sub._delay_init = true, sub.select = function(show) { if (show && can.page.ClassList.has(can, sub._legend, html.SELECT)) { return sub } return sub._legend.click(), sub } - sub.onexport.output = function() { var width = can.ConfWidth()-(can.ui && can.ui.project? can.ui.project.offsetWidth: 0) - can.page.style(can, can._output, html.MAX_HEIGHT, "", html.HEIGHT, "", html.WIDTH, "", html.MAX_WIDTH, "") - sub.onimport.size(sub, can.ConfHeight()/2, can.base.Min(sub._target.offsetWidth, width/2, width), true) - } sub.hidden = function() { can.onmotion.hidden(can, sub._target), can.page.ClassList.del(can, sub._legend, html.SELECT) } sub.onaction._close = function() { can.page.Remove(can, sub._target), can.page.Remove(can, sub._legend), can.onexport.tool(can) } - can.base.isFunc(cb) && cb(sub), can.onexport.tool(can) + sub.onaction.close = function() { sub.select() }, can.base.isFunc(cb) && cb(sub), can.onexport.tool(can) }, target) }) },