forked from x/volcanos
action add text chrome.spide
This commit is contained in:
parent
6c510422df
commit
9d3c1a6bd0
@ -21,6 +21,22 @@ var can = Volcanos("chrome", {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete(msg._can)
|
||||||
|
delete(msg._event)
|
||||||
|
if (cmd[1] == "") {
|
||||||
|
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
|
||||||
|
cmd[1] = tabs[0].id
|
||||||
|
chrome.tabs.sendMessage(parseInt(cmd[1]), msg, function (res) {
|
||||||
|
msg.Copy(res), typeof cb == "function" && cb(msg)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
chrome.tabs.sendMessage(parseInt(cmd[1]), msg, function (res) {
|
||||||
|
msg.Copy(res), typeof cb == "function" && cb(msg)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
// 新建标签
|
// 新建标签
|
||||||
chrome.tabs.create({windowId: parseInt(cmd[0]), url: cmd[1], selected: false}, function() {
|
chrome.tabs.create({windowId: parseInt(cmd[0]), url: cmd[1], selected: false}, function() {
|
||||||
can.chrome(msg, [cmd[0]], cb)
|
can.chrome(msg, [cmd[0]], cb)
|
||||||
@ -44,7 +60,8 @@ var can = Volcanos("chrome", {
|
|||||||
can.misc.WSS(can, "ws://localhost:9020/space/", {name: "chrome", type: "chrome"}, function(event, msg) {
|
can.misc.WSS(can, "ws://localhost:9020/space/", {name: "chrome", type: "chrome"}, function(event, msg) {
|
||||||
if (msg.Option("_handle")) { return can.user.toast(msg.result.join("")) }
|
if (msg.Option("_handle")) { return can.user.toast(msg.result.join("")) }
|
||||||
|
|
||||||
can.user.toast(msg.detail.join(" "))
|
// can.user.toast(msg.detail.join(" "))
|
||||||
|
try {
|
||||||
switch (msg.detail[0]) {
|
switch (msg.detail[0]) {
|
||||||
case "space": can._share = msg.detail[2]; break
|
case "space": can._share = msg.detail[2]; break
|
||||||
case "pwd": msg.Echo("hello world"); break
|
case "pwd": msg.Echo("hello world"); break
|
||||||
@ -52,6 +69,9 @@ var can = Volcanos("chrome", {
|
|||||||
msg.Reply(msg)
|
msg.Reply(msg)
|
||||||
}); return
|
}); return
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
can.user.toast(e)
|
||||||
|
}
|
||||||
msg.Reply(msg)
|
msg.Reply(msg)
|
||||||
}, function() {can.user.toast("wss connect", "iceberg")})
|
}, function() {can.user.toast("wss connect", "iceberg")})
|
||||||
|
|
||||||
|
@ -1,5 +1,23 @@
|
|||||||
var can = Volcanos("chrome", {
|
var can = Volcanos("chrome", {
|
||||||
video: function(can) {
|
spide: function(can, msg) {
|
||||||
|
can.page.Select(can, document.body, "video", function(item) {
|
||||||
|
var p = can.page.Select(can, document.body, "p.title")[0]
|
||||||
|
|
||||||
|
var ls = item.src.split("?")
|
||||||
|
var ls = ls[0].split(".")
|
||||||
|
msg.Push("time", can.base.Time())
|
||||||
|
msg.Push("type", "video")
|
||||||
|
msg.Push("name", (p && p.innerText || "video")+"."+ls[ls.length-1])
|
||||||
|
msg.Push("text", item.src)
|
||||||
|
msg.Push("link", item.src)
|
||||||
|
})
|
||||||
|
can.page.Select(can, document.body, "img", function(item) {
|
||||||
|
msg.Push("time", can.base.Time())
|
||||||
|
msg.Push("type", "img")
|
||||||
|
msg.Push("name", "img")
|
||||||
|
msg.Push("text", item.src)
|
||||||
|
msg.Push("link", item.src)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
}, [], function(can) {
|
}, [], function(can) {
|
||||||
can.user = user
|
can.user = user
|
||||||
@ -8,6 +26,14 @@ var can = Volcanos("chrome", {
|
|||||||
can.core = core
|
can.core = core
|
||||||
can.base = base
|
can.base = base
|
||||||
|
|
||||||
|
chrome.extension.onMessage.addListener( function (msg, sender, cb) { var action = can[msg.detail[3]||"spide"]
|
||||||
|
msg = can.request({}, msg)
|
||||||
|
delete(msg._event)
|
||||||
|
delete(msg._can)
|
||||||
|
typeof action == "function" && action(can, msg) || typeof cb == "function" && cb(msg)
|
||||||
|
})
|
||||||
|
return
|
||||||
|
|
||||||
chrome.extension.onMessage.addListener( function (request, sender, sendResponse) {
|
chrome.extension.onMessage.addListener( function (request, sender, sendResponse) {
|
||||||
var title = can.page.Select(can, document.body, "p.title", function(item) {
|
var title = can.page.Select(can, document.body, "p.title", function(item) {
|
||||||
return item.innerText
|
return item.innerText
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<link rel="stylesheet" type="text/css" href="/index.css">
|
<link rel="stylesheet" type="text/css" href="/index.css">
|
||||||
</head>
|
</head>
|
||||||
<body style="min-width:800px; min-height:600px">
|
<body style="min-width:800px; min-height:600px; overflow:auto">
|
||||||
<script src="/proto.js"></script>
|
<script src="/proto.js"></script>
|
||||||
<script src="/chrome/popup.js"></script>
|
<script src="/chrome/popup.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
28
chrome/spided.js
Normal file
28
chrome/spided.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._output.innerHTML = "";
|
||||||
|
can.ui = can.page.Append(can, can._target, [
|
||||||
|
{view: ["content", "div"]}, {view: ["display", "pre"]},
|
||||||
|
])
|
||||||
|
can.onappend.table(can, can.ui.content, "table", msg)
|
||||||
|
can.onappend.board(can, can.ui.display, "board", msg)
|
||||||
|
var refresh = msg.Option("_refresh") || can.Conf("feature")["_refresh"]
|
||||||
|
refresh && can.Timer(refresh, function() {
|
||||||
|
can.run({})
|
||||||
|
})
|
||||||
|
return typeof cb == "function" && cb(msg)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Volcanos("onaction", {help: "控件交互", list: [],
|
||||||
|
onclick: function(event, can) {
|
||||||
|
can.run(event, [], function() {})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
Volcanos("ondetail", {help: "控件交互", list: ["编辑", "删除"],
|
||||||
|
"编辑": function(event, can, key) {
|
||||||
|
console.log(key)
|
||||||
|
},
|
||||||
|
"删除": function(event, can, key) {
|
||||||
|
console.log(key)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
12
frame.js
12
frame.js
@ -177,6 +177,14 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
|||||||
{name: "tmux", help: "粘贴", index: "web.code.tmux.text"},
|
{name: "tmux", help: "粘贴", index: "web.code.tmux.text"},
|
||||||
{name: "study", help: "学习", index: "web.wiki.word", args: ["usr/learning/study.shy"]},
|
{name: "study", help: "学习", index: "web.wiki.word", args: ["usr/learning/study.shy"]},
|
||||||
]},
|
]},
|
||||||
|
"chrome": {name: "chrome", action: [
|
||||||
|
{name: "feel", help: "网页爬虫", index: "web.wiki.feel", args: ["spide/"], feature: {
|
||||||
|
display: "/plugin/local/wiki/feel.js",
|
||||||
|
height: 200, limit: 3,
|
||||||
|
}},
|
||||||
|
{name: "cached", help: "爬虫缓存", index: "web.code.chrome.cached", args: []},
|
||||||
|
{name: "spided", help: "网页爬虫", index: "web.code.chrome.spided", args: location && location.protocol && location.protocol=="chrome-extension:"? ["1", "", "spide"]: ["1"]},
|
||||||
|
]},
|
||||||
}},
|
}},
|
||||||
"project": {name: "研发群", storm: {
|
"project": {name: "研发群", storm: {
|
||||||
"studio": {name: "studio", action: [
|
"studio": {name: "studio", action: [
|
||||||
@ -187,9 +195,9 @@ Volcanos("onengine", {help: "解析引擎", list: [], _init: function(can, meta,
|
|||||||
{name: "total", help: "代码统计", index: "web.code.git.total"},
|
{name: "total", help: "代码统计", index: "web.code.git.total"},
|
||||||
]},
|
]},
|
||||||
"cli": {name: "cli", action: [
|
"cli": {name: "cli", action: [
|
||||||
{name: "tmux", help: "命令行", index: "web.wiki.word", args: ["usr/icebergs/misc/tmux/tmux.shy"]},
|
|
||||||
{name: "git", help: "代码库", index: "web.wiki.word", args: ["usr/icebergs/misc/git/git.shy"]},
|
|
||||||
{name: "vim", help: "编辑器", index: "web.wiki.word", args: ["usr/icebergs/misc/vim/vim.shy"]},
|
{name: "vim", help: "编辑器", index: "web.wiki.word", args: ["usr/icebergs/misc/vim/vim.shy"]},
|
||||||
|
{name: "git", help: "代码库", index: "web.wiki.word", args: ["usr/icebergs/misc/git/git.shy"]},
|
||||||
|
{name: "tmux", help: "命令行", index: "web.wiki.word", args: ["usr/icebergs/misc/tmux/tmux.shy"]},
|
||||||
{name: "zsh", help: "命令行", index: "web.wiki.word", args: ["usr/icebergs/misc/zsh/zsh.shy"]},
|
{name: "zsh", help: "命令行", index: "web.wiki.word", args: ["usr/icebergs/misc/zsh/zsh.shy"]},
|
||||||
]},
|
]},
|
||||||
"web": {name: "web", action: [
|
"web": {name: "web", action: [
|
||||||
|
@ -66,6 +66,7 @@ Volcanos("onexport", {help: "导出数据", list: [], _init: function(can, msg,
|
|||||||
if (value.inputs.length == 0) {
|
if (value.inputs.length == 0) {
|
||||||
can.run({}, [river, storm, "action", "command", value.index], function(msg) {
|
can.run({}, [river, storm, "action", "command", value.index], function(msg) {
|
||||||
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
value.inputs = can.base.Obj(msg.list&&msg.list[0]||"[]", [])
|
||||||
|
// value.feature = value.feature||can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
||||||
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
value.feature = can.base.Obj(msg.meta&&msg.meta[0]||"{}", {})
|
||||||
can.onaction.add_plugin(can, river, storm, value), next()
|
can.onaction.add_plugin(can, river, storm, value), next()
|
||||||
})
|
})
|
||||||
|
@ -2,7 +2,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
can.sublist = {}
|
can.sublist = {}
|
||||||
},
|
},
|
||||||
river: function(can) { var key = "river"
|
river: function(can) { var key = "river"
|
||||||
var main = can.user.Search(can, key) || "研发群"
|
can._main_river = can.user.Search(can, "river") || location.protocol == "chrome-extension:"? "product": "project"
|
||||||
|
can._main_storm = can.user.Search(can, "storm") || location.protocol == "chrome-extension:"? "chrome": "studio"
|
||||||
|
|
||||||
can.run({}, [], function(sup) { can._output.innerHTML = ""; var select; sup.Table(function(value, index, array) {
|
can.run({}, [], function(sup) { can._output.innerHTML = ""; var select; sup.Table(function(value, index, array) {
|
||||||
var view = can.onappend.item(can, can._output, "item", value, function(event, item) { var msg = can.request(event, {_msg: sup})
|
var view = can.onappend.item(can, can._output, "item", value, function(event, item) { var msg = can.request(event, {_msg: sup})
|
||||||
can.onimport.storm(event, can, value.key)
|
can.onimport.storm(event, can, value.key)
|
||||||
@ -14,7 +16,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
can.onappend.menu(can, sup, value)
|
can.onappend.menu(can, sup, value)
|
||||||
})
|
})
|
||||||
|
|
||||||
if (index == 0 || [value.key, value.name].indexOf(main) > -1) { select = view }
|
if (index == 0 || [value.key, value.name].indexOf(can._main_river) > -1) { select = view }
|
||||||
}); select && select.click(), typeof cb == "function" && cb(sup) })
|
}); select && select.click(), typeof cb == "function" && cb(sup) })
|
||||||
},
|
},
|
||||||
storm: function(event, can, river) {
|
storm: function(event, can, river) {
|
||||||
@ -24,7 +26,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, meta,
|
|||||||
|
|
||||||
can.run({}, [river, "storm"], function(msg) { var which = 0
|
can.run({}, [river, "storm"], function(msg) { var which = 0
|
||||||
list = can.page.Append(can, can._output, [{view: "sublist", list: msg.Table(function(value, index) {
|
list = can.page.Append(can, can._output, [{view: "sublist", list: msg.Table(function(value, index) {
|
||||||
river == can.user.Search(can, "river") && value.key == can.user.Search(can, "storm") && (which = index)
|
river == can._main_river && value.key == can._main_storm && (which = index)
|
||||||
return {text: [value.name, "div", "subitem"], onclick: function(event) {
|
return {text: [value.name, "div", "subitem"], onclick: function(event) {
|
||||||
var msg = can.request(event)
|
var msg = can.request(event)
|
||||||
msg.Option("river", can.Conf("river", river))
|
msg.Option("river", can.Conf("river", river))
|
||||||
|
@ -23,7 +23,7 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var sub = can.sup && can.sup._outputs && can.sup._outputs[0]
|
var sub = can.sup && can.sup._outputs && can.sup._outputs[can.sup._outputs.length-1]
|
||||||
var cb = sub && sub.onaction && sub.onaction[can.Conf("name")]
|
var cb = sub && sub.onaction && sub.onaction[can.Conf("name")]
|
||||||
if (typeof cb == "function") { return cb(event, sub, can.Conf("name")) }
|
if (typeof cb == "function") { return cb(event, sub, can.Conf("name")) }
|
||||||
|
|
||||||
|
@ -1,17 +1,29 @@
|
|||||||
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) {
|
Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, list, cb, target) { can._target.innerHTML = ""
|
||||||
|
can.ui = can.page.Append(can, can._target, [
|
||||||
|
{view: "project"},
|
||||||
|
{view: "profile", style: {clear: "both"}},
|
||||||
|
])
|
||||||
|
|
||||||
|
can._msg = msg
|
||||||
|
can.path = can.request({}), can.list = []
|
||||||
|
msg.Table(function(value) { value.path.endsWith("/")? can.path.Push(value): can.list.push(value) })
|
||||||
|
can.onappend.table(can, can.ui.project, "table", can.path)
|
||||||
|
|
||||||
can.page.Modify(can, can._action, {style: {display: "none"}})
|
can.page.Modify(can, can._action, {style: {display: "none"}})
|
||||||
typeof cb == "function" && cb()
|
typeof cb == "function" && cb()
|
||||||
|
|
||||||
|
var feature = can.Conf("feature") || {}
|
||||||
|
|
||||||
can.begin = 0
|
can.begin = 0
|
||||||
can.Action("倍速", can.rate = 1)
|
can.Action("倍速", can.rate = 1)
|
||||||
can.Action("数量", can.limit = parseInt(msg.Option("limit"))||6)
|
can.Action("数量", can.limit = parseInt(feature["limit"]||msg.Option("limit"))||6)
|
||||||
can.Action("高度", can.height = parseInt(msg.Option("height"))||100)
|
can.Action("高度", can.height = parseInt(feature["height"]||msg.Option("height"))||100)
|
||||||
can.Option("path") != "最近/" && can.onimport.page(can, can._msg.Table(), can.begin, can.limit)
|
can.Option("path") != "最近/" && can.onimport.page(can, can.list, can.begin, can.limit)
|
||||||
},
|
},
|
||||||
page: function(can, list, begin, limit) { can._target.innerHTML = ""
|
page: function(can, list, begin, limit) { can.ui.profile.innerHTML = ""
|
||||||
if (!list || list.length == 0) { return }
|
if (!list || list.length == 0) { return }
|
||||||
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path) }
|
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path) }
|
||||||
can.Status("begin", begin), can.Status("limit", limit), can.Status("total", can._msg.Table().length)
|
can.Status("begin", begin), can.Status("limit", limit), can.Status("total", can.list.length)
|
||||||
},
|
},
|
||||||
file: function(can, path) { can.Status("文件", path)
|
file: function(can, path) { can.Status("文件", path)
|
||||||
var p = location.href.startsWith("http")? "": "http://localhost:9020"
|
var p = location.href.startsWith("http")? "": "http://localhost:9020"
|
||||||
@ -20,7 +32,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
var ls = path.split("/")
|
var ls = path.split("/")
|
||||||
var ls = ls[ls.length-1].split(".")
|
var ls = ls[ls.length-1].split(".")
|
||||||
var ext = ls[ls.length-1].toLowerCase()
|
var ext = ls[ls.length-1].toLowerCase()
|
||||||
ext && can.page.Append(can, can._target, [can.onfigure[ext](can, path)])
|
ext && can.page.Append(can, can.ui.profile, [can.onfigure[ext](can, path)])
|
||||||
},
|
},
|
||||||
}, ["/plugin/local/wiki/feel.css"])
|
}, ["/plugin/local/wiki/feel.css"])
|
||||||
Volcanos("onfigure", {help: "组件菜单", list: [],
|
Volcanos("onfigure", {help: "组件菜单", list: [],
|
||||||
@ -40,10 +52,13 @@ Volcanos("onfigure", {help: "组件菜单", list: [],
|
|||||||
return {className: "preview", type: "video", style: {height: can.height},
|
return {className: "preview", type: "video", style: {height: can.height},
|
||||||
data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: can.rate},
|
data: {src: path, controls: "controls", autoplay: auto, loop: loop, playbackRate: can.rate},
|
||||||
oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb,
|
oncontextmenu: cb, onplay: cb, onpause: cb, onended: cb,
|
||||||
|
onmouseover: function(event) {
|
||||||
|
can.Status("文件", path)
|
||||||
|
},
|
||||||
onloadedmetadata: function(event) { total = event.timeStamp
|
onloadedmetadata: function(event) { total = event.timeStamp
|
||||||
event.target.currentTime = can._msg.currentTime || 0
|
event.target.currentTime = can._msg.currentTime || 0
|
||||||
}, onloadeddata: cb, ontimeupdate: function(event) {
|
}, onloadeddata: cb, ontimeupdate: function(event) {
|
||||||
can.Status("position", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration))
|
can.Status("文件") == path && can.Status("position", can.onexport.position(can, (can._msg.currentTime=event.target.currentTime)-1, event.target.duration))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -75,19 +90,19 @@ Volcanos("onaction", {help: "组件菜单", list: [
|
|||||||
can.page.Modify(can, can._action, {style: {display: can._action.style.display=="none"? "block": "none"}})
|
can.page.Modify(can, can._action, {style: {display: can._action.style.display=="none"? "block": "none"}})
|
||||||
},
|
},
|
||||||
"上一页": function(event, can, key, value) {
|
"上一页": function(event, can, key, value) {
|
||||||
can.begin > 0 && (can.begin -= can.limit, can.onimport.page(can, can._msg.Table(), can.begin, can.limit))
|
can.begin > 0 && (can.begin -= can.limit, can.onimport.page(can, can.list, can.begin, can.limit))
|
||||||
},
|
},
|
||||||
"下一页": function(event, can, key, value) {
|
"下一页": function(event, can, key, value) {
|
||||||
can.begin + can.limit < can._msg.Table().length && (can.begin += can.limit, can.onimport.page(can, can._msg.Table(), can.begin, can.limit))
|
can.begin + can.limit < can.list.length && (can.begin += can.limit, can.onimport.page(can, can.list, can.begin, can.limit))
|
||||||
},
|
},
|
||||||
"数量": function(event, can, key, value) {
|
"数量": function(event, can, key, value) {
|
||||||
can.limit = parseInt(value), can.onimport.page(can, can._msg.Table(), can.begin, can.limit)
|
can.limit = parseInt(value), can.onimport.page(can, can.list, can.begin, can.limit)
|
||||||
},
|
},
|
||||||
"高度": function(event, can, key, value) {
|
"高度": function(event, can, key, value) {
|
||||||
can.height = parseInt(value), can.onimport.page(can, can._msg.Table(), can.begin, can.limit)
|
can.height = parseInt(value), can.onimport.page(can, can.list, can.begin, can.limit)
|
||||||
},
|
},
|
||||||
"倍速": function(event, can, key, value) {
|
"倍速": function(event, can, key, value) {
|
||||||
can.rate = parseInt(value), can.onimport.page(can, can._msg.Table(), can.begin, can.limit)
|
can.rate = parseInt(value), can.onimport.page(can, can.list, can.begin, can.limit)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
Volcanos("onexport", {help: "导出数据", list: ["total", "begin", "limit", "position", "文件"],
|
Volcanos("onexport", {help: "导出数据", list: ["total", "begin", "limit", "position", "文件"],
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
fieldset ul.story[data-type=premenu] {
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
fieldset ul.story[data-type=premenu] li:hover {
|
||||||
|
background:cyan;
|
||||||
|
}
|
||||||
fieldset li.H2 {
|
fieldset li.H2 {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
font-size:20px;
|
font-size:20px;
|
||||||
|
@ -24,7 +24,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
|||||||
},
|
},
|
||||||
premenu: function(can, list, target) { var meta = can.base.Obj(list.meta)
|
premenu: function(can, list, target) { var meta = can.base.Obj(list.meta)
|
||||||
can.page.Select(can, can._output, "h2.story, h3.story", function(item) {
|
can.page.Select(can, can._output, "h2.story, h3.story", function(item) {
|
||||||
can.page.Append(can, target, [{text: [item.innerHTML, "li", item.tagName]}])
|
var ui = can.page.Append(can, target, [{text: [item.innerHTML, "li", item.tagName], onclick: function() {
|
||||||
|
item.scrollIntoView()
|
||||||
|
}}])
|
||||||
|
item.onclick = function(event) {
|
||||||
|
ui.first.scrollIntoView()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
field: function(can, item, target) { var meta = can.base.Obj(item.meta)
|
field: function(can, item, target) { var meta = can.base.Obj(item.meta)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user