From 4b0a55288791f2a4bbed7ff7c114af70d4d7cfc2 Mon Sep 17 00:00:00 2001 From: shylinux Date: Fri, 17 Feb 2023 22:14:16 +0800 Subject: [PATCH] opt some --- lib/misc.js | 7 ++++--- panel/river.js | 1 - plugin/local/code/inner.js | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/misc.js b/lib/misc.js index d19c5ae5..f642f52f 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -112,9 +112,10 @@ Volcanos("misc", { MergeCache: function(can, hash) { return can.misc.MergeURL(can, {_path: can.base.Path(web.SHARE_CACHE, hash)}, true) }, MergePodCmd: function(can, obj) { obj.pod = can.core.Keys(can.misc.Search(can, ice.POD), obj.pod); return can.misc.MergeURL(can, obj, true) }, MergeURL: function(can, obj, clear) { var path = location.pathname; obj._path && (path = obj._path), delete(obj._path) + var hash = obj._hash||""; delete(obj._hash) var args = [web.CHAT]; can.core.List([ice.POD, ice.CMD, web.WEBSITE], function(key) { obj[key] && args.push(key, obj[key]), delete(obj[key]) }) var _location = location; if (can.user.isExtension) { var _location = new URL(Volcanos.meta.iceberg) } - return can.base.MergeURL(_location.origin+(args.length == 1? path: ice.PS+args.join(ice.PS))+(clear? "": _location.search), obj) + return can.base.MergeURL(_location.origin+(args.length == 1? path: ice.PS+args.join(ice.PS))+(clear? "": _location.search), obj)+(hash? "#"+hash: "") }, ParseURL: function(can, url) { var args = can.base.ParseURL(url), _location = new URL(url) delete(args.link), delete(args.origin), delete(args._origin) @@ -124,10 +125,10 @@ Volcanos("misc", { }, Search: function(can, key, value) { var args = this.ParseURL(can, location.href) if (can.base.isUndefined(key)) { return args } else if (can.base.isObject(key)) { - can.core.Item(key, function(k, v) { args[k] === ""? delete(args[k]): (args[k] = v) }) + can.core.Item(key, function(k, v) { v === ""? delete(args[k]): (args[k] = v) }) } else if (can.base.isUndefined(value)) { return args[key] } else { value === ""? delete(args[key]): (args[key] = value) - } var search = can.base.Args(args); return location.search = search + } var search = can.base.Args(args); return search? (location.search = search): (location.href = location.href.split(ice.QS)[0]) }, SearchHash: function(can) { if (!can.isCmdMode() && can._name != "Action") { return [] } if (arguments.length > 1) { location.hash = can.core.List(arguments, function(item) { return encodeURIComponent(item) }).slice(1).join(ice.DF) } diff --git a/panel/river.js b/panel/river.js index 078f704d..b9bca282 100644 --- a/panel/river.js +++ b/panel/river.js @@ -45,7 +45,6 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func can.onaction.storm({target: can.ui.river_list[river]}, can, river), can.onmotion.toggle(can, can.ui.sublist[river], true) can.onmotion.select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], can.ui.storm_list[can.core.Keys(river, storm)]) can.onengine.signal(can, chat.ONSTORM_SELECT, can.request(event, {river: can.Conf(chat.RIVER, river), storm: can.Conf(chat.STORM, storm)})) - can.misc.localStorage(can, CAN_RIVER, river), can.misc.localStorage(can, CAN_STORM, storm) }, carte: function(event, can, list, river, storm) { can.onkeymap.prevent(event); if (can.core.Value(can._root, can.core.Keys(chat.RIVER, river))) { return } can.request(event, {river: river, storm: storm}) diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index f64e5470..630eff12 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -481,7 +481,9 @@ Volcanos(chat.ONEXPORT, {list: [mdb.COUNT, mdb.TYPE, nfs.FILE, nfs.LINE, ice.BAC selection: function(can, str) { var s = document.getSelection().toString(), begin = str.indexOf(s), end = begin+s.length for (var i = begin; i >= 0; i--) { if (str[i].match(/[a-zA-Z0-9_.]/)) { s = str.slice(i, end) } else { break } } return s }, - hash: function(can) { if (!can.isCmdMode()) { return } location.hash = [can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)].join(ice.DF) }, + hash: function(can) { var hash = [can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)].join(ice.DF) + if (can.isCmdMode()) { return location.hash = hash } return hash + }, func: function(can) { var list = [] function indent(text) { var indent = 0; for (var i = 0; i < text.length; i++) { switch (text[i]) { case ice.TB: indent+=4; break