From 6d07bd045f677d9e8e506f4cd84ef993aee7841d Mon Sep 17 00:00:00 2001 From: shy Date: Sat, 13 Jan 2024 22:39:23 +0800 Subject: [PATCH] opt island --- index.css | 12 +++++++++--- lib/user.js | 4 ++-- panel/header.js | 8 +++++--- plugin/input/key.js | 9 ++++++--- plugin/state.js | 2 +- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/index.css b/index.css index 48836e18..42dbd502 100644 --- a/index.css +++ b/index.css @@ -1,3 +1,10 @@ +@media (prefers-color-scheme: light) { + body { --plugin-bg-color:white; --plugin-fg-color:black; } +} +@media (prefers-color-scheme: dark) { + body { --plugin-bg-color:black; --plugin-fg-color:silver; } + body { background-color:var(--plugin-bg-color); color:var(--plugin-fg-color); } +} body { --notice-bg-color:blue; --notice-fg-color:white; --danger-bg-color:red; --danger-fg-color:var(--notice-fg-color); @@ -6,10 +13,10 @@ body { --hover-bg-color:#5066b945; --hover-fg-color:var(--notice-fg-color); --progress-bg-color:red; --disable-fg-color:gray; --body-bg-color:var(--plugin-bg-color); --body-fg-color:var(--plugin-fg-color); - --plugin-bg-color:black; --plugin-fg-color:silver; --plugin-border-color:var(--box-border); + --plugin-border-color:var(--box-border); --legend-bg-color:var(--plugin-bg-color); - --input-bg-color:var(--plugin-fg-color); --input-fg-color: var(--plugin-fg-color); --input-border:var(--box-border); + --input-bg-color:var(--plugin-bg-color); --input-fg-color: var(--plugin-fg-color); --input-border:var(--box-border); --output-bg-color:var(--input-bg-color); --output-fg-color:var(--input-fg-color); --status-border:var(--box-border); --th-bg-color:var(--plugin-bg-color); --th-fg-color:var(--plugin-fg-color); --tr-hover-bg-color:var(--hover-bg-color); --td-hover-bg-color:var(--hover-bg-color); @@ -49,7 +56,6 @@ body { } input { font-family:var(--input-font-family); } body { font-family:var(--body-font-family); } -body { background-color:var(--body-bg-color); color:var(--body-fg-color); } body.windows { --code-font-family:"Courier New"; } body.mobile { --qrcode-height:284px; } body.cmd { background-color:var(--plugin-bg-color); } diff --git a/lib/user.js b/lib/user.js index b00d48aa..1d0be358 100644 --- a/lib/user.js +++ b/lib/user.js @@ -88,7 +88,7 @@ Volcanos("user", { content = {"success": "✅ success", "failure": "❌ failure", "process": "🕑 process"}[content]||content var meta = can.base.isObject(content)? content: {content: content, duration: duration, progress: progress, caller: caller} meta.title = meta.title||can.core.Keys(can.Conf(web.SPACE), can.Conf(ctx.INDEX))||can._name.split(nfs.PS).slice(-2).join(nfs.PS) - var width = meta.width||400; if (width < 0) { width = window.innerWidth + width } meta.action = meta.action||[""] + var width = meta.width||380; if (width < 0) { width = window.innerWidth + width } meta.action = meta.action||[""] var ui = can.page.Append(can, document.body, [{view: [[chat.TOAST, chat.FLOAT]], style: {left: (window.innerWidth-width)/2, width: width, top: can.page.height()/2}, list: [ {text: [meta.title||"", html.DIV, html.TITLE], title: "点击复制", onclick: function(event) { can.user.copy(event, can, meta.title) }}, {view: ["delete", "", can.page.unicode.delete], title: "点击关闭", onclick: function() { action.close() }}, @@ -264,7 +264,7 @@ Volcanos("user", { return can.base.isFunc(_cb) && _cb(), _cb = null, true } can.core.Timer(1000, function() { check() }), can.onimport.theme(can) } - if (cmd == cli.PWD) { if (check()) { return } can.page.ClassList.add(can, document.body, aaa.LOGIN), can._wss_name = can.ondaemon._list[0] = arg[0] + if (cmd == cli.PWD) { if (check()) { return } can.page.ClassList.add(can, document.body, aaa.LOGIN), can._wss_name = can.ondaemon._list[0] = arg[0] var _list = [], list = {}; _msg.Table(function(value) { if (value.order == "") {} else if (value.type == mdb.PLUGIN) { _list.push(value.name), list[value.name] = function(target) { can.onappend.plugin(can, {space: value.space, index: value.index, args: can.core.Split(value.args), style: html.OUTPUT}, function(sub) { var run = sub.run; sub.run = function(event, cmds, cb) { var msg = can.request(event, {space: arg[0]}); can.page.exportValue(can, msg), run(event, cmds, cb) } diff --git a/panel/header.js b/panel/header.js index 799374e1..544eda48 100644 --- a/panel/header.js +++ b/panel/header.js @@ -82,8 +82,9 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, lang(msg, function() { can.onmotion.clear(can), can.onimport._init(can, can.request(), can._output), can.onengine.signal(can, chat.ONLOGIN) }) } can.run(can.request({}, {_method: http.GET}), [], function(msg) { lang(msg), can.page.requireModules(can, [msg.Option("icon.lib")]) - can.ui.diy = can.base.Obj(msg.Option("diy"))||{}, can.__theme = can.onimport._theme(can, can.onexport.theme(can)), can.onimport.theme(can) - can.page.theme(function(theme) { can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: can.__theme = can.ui.diy&&can.ui.diy[theme]||theme})) }) + can.ui.diy = can.base.Obj(msg.Option("diy"))||{}, can.__theme = can.onimport._theme(can, can.page.theme(function(theme) { + can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: can.__theme = can.onimport._theme(can, theme)})) + })), can.onimport.theme(can) can.onaction._menus[3] = [aaa.LANGUAGE, ice.AUTO].concat(can.core.List(msg["language.list"], function(item) { return can.base.trimSuffix(item, nfs._JS) })) can.onaction._menus[2] = [chat.THEME, ice.AUTO].concat(can.core.List(msg["theme.list"], function(item) { return can.base.trimSuffix(item, nfs._CSS) })) can.require(can.core.List(msg["theme.list"], function(item) { return nfs.SRC_TEMPLATE+web.CHAT_HEADER+"/theme/"+item }), function() { @@ -124,7 +125,8 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, }) }, qrcode: function(event, can) { can.runAction(event, cli.QRCODE, [], function(msg) { - can.user.toast(can, {title: msg.Append(web.LINK), duration: -1, content: msg.Result(), action: [cli.CLOSE, cli.OPEN], resize: html.IMG}) + var ui = can.user.toast(can, {title: msg.Append(web.LINK), duration: -1, content: msg.Result(), action: [cli.CLOSE, cli.OPEN], resize: html.IMG}) + can.page.style(can, ui._target, html.TOP, (can.page.height() - 360)/2) }) }, language: function(event, can) { can.onimport.language(can, can.user.info.language.indexOf("zh") == 0? "en-us": "zh-cn") }, diff --git a/plugin/input/key.js b/plugin/input/key.js index 3cd4c63f..e5aac7db 100644 --- a/plugin/input/key.js +++ b/plugin/input/key.js @@ -25,9 +25,12 @@ Volcanos(chat.ONFIGURE, {key: { onclick: function(event, can, meta, target, cbs) { cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return } meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value) }) }, - onfocus: function(event, can, meta, target, cbs) { cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return } - meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value) - }) }, + onfocus: function(event, can, meta, target, cbs) { + return + cbs(function(sub, cb) { if (sub.Status(mdb.TOTAL) > 0) { return } + meta.msg && meta.msg.Length() > 0? sub._show(sub, meta.msg, cb, target, meta.name): sub._load(event, sub, cb, target, meta.name, target.value) + }) + }, onblur: function(event, can, sub, cb) { sub && can.onmotion.delay(can, sub.close, 300) }, onkeydown: function(event, can, meta, cb, target, sub, last) { if (event.key == code.TAB) { return } if (event.key == code.ENTER) { return meta._enter && (!can.page.tagis(event.target, html.TEXTAREA) || event.ctrlKey) && meta._enter(event, target.value)? sub.close(): last(event) } diff --git a/plugin/state.js b/plugin/state.js index e6bca6cf..834fa16b 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -72,7 +72,7 @@ Volcanos(chat.ONIMPORT, { can.page.Append(can, div, [{text: arg}]), can._output.scrollTop = div.offsetTop, div.scrollBy(0, 10000), true })) { can.onappend.board(can, arg) } }, - _open: function(can, msg, arg) { can.user.opens(arg); if (can.ConfIndex() == "web.dream") { can.Update() } }, + _open: function(can, msg, arg) { can.user.open(arg); if (can.ConfIndex() == "web.dream") { can.Update() } }, _close: function(can, msg) { can.user.close() || history.back() }, change: function(event, can, name, value, cb, data) { return can.page.SelectArgs(can, can._option, "", function(input) { if (input.name != name || value == input.value) { return } can.page.Select(can, input.parentNode, "span.value", function(target) { target.innerText = value })