diff --git a/frame.js b/frame.js index d2961618..f41dd89b 100644 --- a/frame.js +++ b/frame.js @@ -20,6 +20,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, can.base.Copy(can.onengine.river, can.Conf("river")) can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeypop._init(can, target) can.onengine.signal(can, "onmain", can.request()) + can.base.isFunc(cb) && cb() }) }, _search: function(event, can, msg, panel, cmds, cb) { @@ -402,8 +403,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta, }) }, _plugin: function(can, value, meta, cb, target) { - meta.feature = can.base.Obj(value.meta||"{}", {}) - meta.inputs = can.base.Obj(value.list||"[]", []) + meta.feature = can.base.Obj(value.meta||"{}", meta.feature)||{} + meta.inputs =can.base.Obj(value.list||"[]", meta.inputs)||[] meta.name = meta.name||value.name||"story" meta.help = meta.help||value.help||"story" diff --git a/lib/misc.js b/lib/misc.js index b55b72ab..3db23d89 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -109,7 +109,7 @@ Volcanos("misc", {help: "通信协议", Message: function(event, can) { var msg }) can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), - "_", (msg._can.sup||msg._can)._name, "_daemon", dataset.daemon, + "_", (msg._can.sup||msg._can)._name, "_daemon", dataset.daemon||"", ), form, cb) }, WSS: function(can, args, cb, onopen, onclose, onerror) { diff --git a/lib/user.js b/lib/user.js index 967b6c5a..2d584099 100644 --- a/lib/user.js +++ b/lib/user.js @@ -162,6 +162,9 @@ Volcanos("user", {help: "用户操作", agent: { var carte = {_target: ui._target, _parent: parent} null && can.onmotion.float.add(can, "carte", carte) + ui._target.onmouseover = function(event) { + event.stopPropagation(), event.preventDefault() + } return event.stopPropagation(), event.preventDefault(), carte }, input: function(event, can, form, cb, button) { // form [ string, array, object, {_input: "select", values: []} diff --git a/proto.js b/proto.js index 06eadd8d..ec03909b 100644 --- a/proto.js +++ b/proto.js @@ -15,6 +15,8 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: var meta = arguments.callee.meta, list = arguments.callee.list if (typeof name == "object") { var Config = name; _can_name = "" meta.libs = Config.libs, meta.volcano = Config.volcano + Config.panels = Config.panels||[] + Config.main = Config.main||{} // 预加载 var Preload = []; for (var i = 0; i < Config.panels.length; i++) { var panel = Config.panels[i] @@ -24,7 +26,9 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: // 根模块 name = Config.name, can = {_follow: Config.name, _target: document.body} libs = Preload.concat(Config.main.list, Config.libs, Config.volcano), cb = function(can) { - can.onengine._init(can, can.Conf(Config), Config.panels, function(msg) {}, can._target) + can.onengine._init(can, can.Conf(Config), Config.panels, function(msg) { + can.base.isFunc(Config._init) && Config._init(can) + }, can._target) } } @@ -47,6 +51,7 @@ var Volcanos = shy("火山架", {volcano: "/frame.js", args: {}, pack: {}, libs: typeof cb == "function" && setTimeout(function() { cb(can) }, 10) return // 加载完成 } + if (!libs[0]) { return can.require(libs.slice(1), cb, each) } libs[0] = libs[0].toLowerCase() // 请求模块 diff --git a/publish/chrome/contexts.js b/publish/chrome/contexts.js index fcbea63b..b7a776a1 100644 --- a/publish/chrome/contexts.js +++ b/publish/chrome/contexts.js @@ -34,7 +34,33 @@ Volcanos("chrome", { msg.Push("link", item.src) }) }, -}, [], function(can) { can._load("/frame.js") + field: function(can, msg, arg) { can.require(["https://shylinux.com/page/index.css"]) + can.onappend.plugin(can, {index: arg[0], arg: arg.slice(1)}, function(sub, meta) { + var top = msg.Option("top")||400 + can.onmotion.float.auto(can, document.body, "carte") + can.onmotion.float.auto(can, sub._output, "carte") + can.page.Modify(can, sub._target, {style: { + background: "radial-gradient(black, #00000073)", + position: "absolute", "top": top, + }}) + can.page.Modify(can, sub._output, {style: { + "max-height": window.innerHeight-top-80, + "max-width": window.innerWidth, + }}) + + sub._legend.onclick = function(event) { + can.onmotion.toggle(can, sub._option) + can.onmotion.toggle(can, sub._action) + can.onmotion.toggle(can, sub._output) + can.onmotion.toggle(can, sub._status) + }, sub._legend.onclick() + + sub.run = function(event, cmds, cb) { + can.run(event, ["action", "command", "run", meta.index].concat(cmds), cb) + } + }, document.body) + }, +}, ["/frame.js"], function(can) { chrome.extension.onMessage.addListener(function(req, sender, cb) { var msg = can.request(); can.core.List(req.option, function(key) { msg.Option(key, req[key][0]) }) can.core.CallFunc([can, req.detail[3]||"spide"], {can: can, msg: msg, arg: req.detail.slice(4), cb: function() { @@ -43,20 +69,10 @@ Volcanos("chrome", { }) can.run = function(event, cmds, cb) { var msg = can.request(event); msg.detail = ["page"].concat(cmds) - chrome.runtime.sendMessage(msg, function(res) { - can.base.isFunc(cb) && cb(msg.Copy(res)) - }) + chrome.runtime.sendMessage(msg, function(res) { can.base.isFunc(cb) && cb(msg.Copy(res)) }) } - - can.require(["https://shylinux.com/page/index.css"]) - can.onappend.plugin(can, {index: "web.spide"}, function(sub, meta) { - can.page.Modify(can, sub._target, {style: { - position: "absolute", "z-index": "100", "top": "400px", - background: "radial-gradient(black, transparent)", - }}) - sub.run = function(event, cmds, cb) { - can.run(event, ["action", "command", "run", meta.index].concat(cmds), cb) - } - }, document.body) + can.run({}, ["action", "command", "get"], function(msg) { + msg.result && msg.result[0] && can.field(can, msg, msg.result) + }) })