1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-04-12 10:35:11 +08:00
parent 11c33fca04
commit 9680710c57
11 changed files with 136 additions and 212 deletions

View File

@ -109,7 +109,7 @@ Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile)
close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() }, close: function(can, msg, sub) { can.user.close() }, exit: function(can, msg, sub) { can.user.close() },
}) })
Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop() meta.index && (meta.name = meta.index), meta.name = can.core.Split(meta.name||"", "\t .\n").pop()||can.Conf(mdb.NAME)
field = field||can.onappend.field(can, meta.type, meta, target)._target field = field||can.onappend.field(can, meta.type, meta, target)._target
var legend = can.page.SelectOne(can, field, html.LEGEND) var legend = can.page.SelectOne(can, field, html.LEGEND)
var option = can.page.SelectOne(can, field, html.FORM_OPTION) var option = can.page.SelectOne(can, field, html.FORM_OPTION)
@ -146,7 +146,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
msg.RunAction(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button) msg.RunAction(event, can.core.Value(sub, chat._OUTPUTS_CURRENT), [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button)
}) }) }) })
}), can.base.isFunc(cb) && cb(sub) }), can.base.isFunc(cb) && cb(sub)
sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields) sub.isCmdMode() && !can.base.isIn(meta.index, web.CODE_VIMER, web.CODE_INNER, web.WIKI_WORD) && can.page.insertBefore(can, can.user.header(can), sub._output, sub._fields)
}); return sub }); return sub
}, },
_option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {}) _option: function(can, meta, option, skip) { var index = -1, args = can.base.Obj(meta.args||meta.arg, []), opts = can.base.Obj(meta.opts, {})
@ -156,10 +156,15 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
list: {name: web.REFRESH, cb: function(event) { can.Update(event) }}, list: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
back: {name: "goback", cb: function(event) { can.onimport._back(can) }}, back: {name: "goback", cb: function(event) { can.onimport._back(can) }},
refresh: {name: web.REFRESH, cb: function(event) { can.Update(event) }}, refresh: {name: web.REFRESH, cb: function(event) { can.Update(event) }},
prev: {name: mdb.PREV, cb: function(event) { can.onaction.prev(event, can) }}, prev: {name: mdb.PREV, cb: function(event) {
next: {name: mdb.NEXT, cb: function(event) { can.onaction.next(event, can) }}, var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
sub.onaction && sub.onaction.prev? sub.onaction.prev(event, sub): can.onaction.prev(event, can)
}},
next: {name: mdb.NEXT, cb: function(event) {
var sub = can.core.Value(can, chat._OUTPUTS_CURRENT)
sub.onaction && sub.onaction.next? sub.onaction.next(event, sub): can.onaction.next(event, can)
}},
play: {name: web.PLAY}, play: {name: web.PLAY},
// create: {name: mdb.CREATE}, insert: {name: mdb.CREATE},
"": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }}, "": {name: mdb.DELETE, cb: function(event) { can.onaction.close(event, can) }},
}[item.name||""]; if (!icon) { return } item.style = "icons" }[item.name||""]; if (!icon) { return } item.style = "icons"
can.page.Append(can, option, [{view: [[html.ITEM, html.ICON, icon.name, item.name], html.DIV, can.page.unicode[icon.name]], title: item.name, onclick: icon.cb||function(event) { can.page.Append(can, option, [{view: [[html.ITEM, html.ICON, icon.name, item.name], html.DIV, can.page.unicode[icon.name]], title: item.name, onclick: icon.cb||function(event) {
@ -168,7 +173,6 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}}]) }}])
}) })
can.core.List(args.slice(can.core.List(meta.inputs, function(item) { if (item.type == mdb.TEXT) { return item } }).length), function(item, index) { meta.inputs.push({type: mdb.TEXT, name: "args"+index, value: item}) }) can.core.List(args.slice(can.core.List(meta.inputs, function(item) { if (item.type == mdb.TEXT) { return item } }).length), function(item, index) { meta.inputs.push({type: mdb.TEXT, name: "args"+index, value: item}) })
function add(item, next) { item = can.base.isString(item)? {type: html.TEXT, name: item}: item, item.type != html.BUTTON && index++ function add(item, next) { item = can.base.isString(item)? {type: html.TEXT, name: item}: item, item.type != html.BUTTON && index++
return Volcanos(item.name, {_root: can._root, _follow: can.core.Keys(can._follow, item.name), return Volcanos(item.name, {_root: can._root, _follow: can.core.Keys(can._follow, item.name),
_target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option), _option: option||can._option, _action: can._action, _output: can._output, _status: can._status, _target: can.onappend.input(can, item, args[index]||opts[item.name], option||can._option), _option: option||can._option, _action: can._action, _output: can._output, _status: can._status,
@ -236,8 +240,6 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) { if (sub.onimport && can.base.isArray(sub.onimport.list) && sub.onimport.list.length > 0) {
can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) }) can.onmotion.clear(can, can._option), can.onappend._option(can, {inputs: can.page.inputs(can, sub.onimport.list, html.TEXT) })
} }
can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) { can.core.CallFunc([sub, chat.ONIMPORT, chat._INIT], {can: sub, msg: msg, cb: function(msg) {
action === false || can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action) action === false || can.onmotion.clear(can, can._action), sub.onappend._action(sub, can.Conf(ice.MSG_ACTION)||msg.Option(ice.MSG_ACTION), action||can._action)
action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), can.user.isMobile || sub.onappend.tools(sub, msg) action === false || sub.onappend._status(sub, sub.onexport&&sub.onexport.list||msg.Option(ice.MSG_STATUS)), can.user.isMobile || sub.onappend.tools(sub, msg)
@ -385,7 +387,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code
if (text.indexOf("<fieldset") > 0) { if (text.indexOf("<fieldset") > 0) {
can.page.Select(can, target, html.FIELDSET, function(target) { var data = target.dataset can.page.Select(can, target, html.FIELDSET, function(target) { var data = target.dataset
can.onappend.plugin(can, {index: data.index}, function(sub) { data.index && can.onappend.plugin(can, {index: data.index}, function(sub) {
can.page.Modify(can, sub._legend, data.index.split(ice.PT).pop()) can.page.Modify(can, sub._legend, data.index.split(ice.PT).pop())
}, can._output, target) }, can._output, target)
}) })
@ -620,7 +622,7 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
index > 0 && can.page.ClassList.set(can, tr, html.HIDDEN, can.page.Select(can, tr, html.TD, function(td) { if (td.innerText.toLowerCase().indexOf(value.toLowerCase()) > -1) { return td } }) == 0) index > 0 && can.page.ClassList.set(can, tr, html.HIDDEN, can.page.Select(can, tr, html.TD, function(td) { if (td.innerText.toLowerCase().indexOf(value.toLowerCase()) > -1) { return td } }) == 0)
}) }, }) },
delayResize: function(can, target, key) { can.onmotion.delay(can, function() { can.page.Select(can, target, key, function(_target) { delayResize: function(can, target, key) { can.onmotion.delay(can, function() { can.page.Select(can, target, key, function(_target) {
can.page.style(can, target, html.WIDTH, _target.offsetWidth+10, html.LEFT, (window.innerWidth-_target.offsetWidth)/2) can.page.style(can, target, html.WIDTH, _target.offsetWidth+10, html.LEFT, (window.innerWidth-_target.offsetWidth)/2, html.TOP, (window.innerHeight-_target.offsetHeight)/2)
}) }) }, }) }) },
delayLong: function(can, cb, interval, key) { can.onmotion.delay(can, cb, interval||300, key) }, delayLong: function(can, cb, interval, key) { can.onmotion.delay(can, cb, interval||300, key) },
delayOnce: function(can, cb, interval, list) { delayOnce: function(can, cb, interval, list) {

View File

@ -137,7 +137,7 @@ div.output, fieldset>div.status, div.item.textarea, div.project div.item, div.co
fieldset>div.status>legend { margin-left:2px; margin-right:0; height:30px; float:right; clear:none; } fieldset>div.status>legend { margin-left:2px; margin-right:0; height:30px; float:right; clear:none; }
fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:10px; margin:10px; } fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:10px; margin:10px; }
fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; } fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; }
fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; z-index:10; } fieldset.auto, fieldset.full, fieldset.float, div.float { position:fixed; top:0; z-index:10; }
fieldset.plug { position:absolute; bottom:0; right:0; } fieldset.cmd fieldset.plug { position:fixed; bottom:32px; right:0; } fieldset.plug { position:absolute; bottom:0; right:0; } fieldset.cmd fieldset.plug { position:fixed; bottom:32px; right:0; }
fieldset.plug div.output table.content { width:100%; } fieldset.plug div.output table.content { width:100%; }
// fieldset.plugin>div.output>fieldset.story { position:sticky; left:0; } // fieldset.plugin>div.output>fieldset.story { position:sticky; left:0; }
@ -170,12 +170,16 @@ fieldset.float div.item.text:hover>span.icon.delete { visibility:hidden; }
fieldset.float>form.option>div.text>input { display:none; } fieldset.float>form.option>div.text>input { display:none; }
fieldset.float>form.option>div.text>span.value { padding:7px; height:32px; display:block; } fieldset.float>form.option>div.text>span.value { padding:7px; height:32px; display:block; }
/* fieldset.float>form.option>div.item.button { display:none; } */ /* fieldset.float>form.option>div.item.button { display:none; } */
fieldset.story>form.option>div.icon { display:block; }
fieldset.float>form.option>div.icon { display:block; } fieldset.float>form.option>div.icon { display:block; }
fieldset.full>form.option>div.icon { display:block; }
fieldset.full>form.option>div.icon.delete { display:block; } fieldset.full>form.option>div.icon.delete { display:block; }
fieldset.cmd>form.option>div.icon { display:block; } fieldset.cmd>form.option>div.icon { display:block; }
fieldset.cmd>form.option>div.item.button.icons { display:none; }
fieldset.story>form.option>div.icon { display:block; }
fieldset.story>form.option>div.item.button.icons { display:none; } fieldset.story>form.option>div.item.button.icons { display:none; }
fieldset.float>form.option>div.item.button.icons { display:none; }
fieldset.full>form.option>div.item.button.icons { display:none; }
fieldset.cmd>form.option>div.item.button.icons { display:none; }
fieldset.plug>form.option>div.icon { margin-left:5px; } fieldset.plug>form.option>div.icon { margin-left:5px; }
div.carte.select.float { border-radius:0; } div.carte.select.float { border-radius:0; }
div.carte.select.float>div.item { text-align:center; } div.carte.select.float>div.item { text-align:center; }

View File

@ -70,6 +70,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { var themeMedia = window.matchMed
onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) }, onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) },
onmain: function(can) { onmain: function(can) {
can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) { can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) {
debugger
return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN)) return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN))
} can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.avatar = msg.Option(aaa.AVATAR), can.user.info.background = msg.Option(aaa.BACKGROUND) } can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.avatar = msg.Option(aaa.AVATAR), can.user.info.background = msg.Option(aaa.BACKGROUND)
can.user.info.language = msg.SearchOrOption(aaa.LANGUAGE)||navigator.language.split("-")[0], msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) }) can.user.info.language = msg.SearchOrOption(aaa.LANGUAGE)||navigator.language.split("-")[0], msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) })

View File

@ -114,27 +114,29 @@ Volcanos(chat.ONSYNTAX, {
"/dev/null": code.CONSTANT, "/dev/stdout": code.CONSTANT, "/dev/stderr": code.CONSTANT, "/dev/null": code.CONSTANT, "/dev/stdout": code.CONSTANT, "/dev/stderr": code.CONSTANT,
}, },
}, configure: {link: "sh"}, }, configure: {link: "sh"},
shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: { shy: {prefix: {"#": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {"source": code.KEYWORD,
"title": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD, "title": code.KEYWORD, "navmenu": code.KEYWORD, "premenu": code.KEYWORD, "chapter": code.KEYWORD, "section": code.KEYWORD, "endmenu": code.KEYWORD,
"refer": code.KEYWORD, "image": code.KEYWORD, "refer": code.KEYWORD, "brief": code.KEYWORD, "spark": code.KEYWORD, "shell": code.KEYWORD, "parse": code.KEYWORD,
"spark": code.KEYWORD, "shell": code.KEYWORD, "field": code.KEYWORD, "order": code.KEYWORD, "table": code.KEYWORD, "chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD,
"chart": code.KEYWORD, "label": code.KEYWORD, "chain": code.KEYWORD, "sequence": code.KEYWORD, "field": code.KEYWORD, "image": code.KEYWORD, "video": code.KEYWORD, "audio": code.KEYWORD,
"package": code.KEYWORD, "import": code.KEYWORD, "const": code.KEYWORD, "type": code.KEYWORD, "var": code.KEYWORD, "package": code.KEYWORD, "import": code.KEYWORD, "const": code.KEYWORD, "type": code.KEYWORD, "var": code.KEYWORD,
"if": code.KEYWORD, "else": code.KEYWORD, "if": code.KEYWORD, "else": code.KEYWORD,
"for": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD, "for": code.KEYWORD, "range": code.KEYWORD, "break": code.KEYWORD, "continue": code.KEYWORD,
"switch": code.KEYWORD, "case": code.KEYWORD, "default": code.KEYWORD, "switch": code.KEYWORD, "case": code.KEYWORD, "default": code.KEYWORD,
"func": code.KEYWORD, "defer": code.KEYWORD, "return": code.KEYWORD, "func": code.KEYWORD, "defer": code.KEYWORD, "return": code.KEYWORD,
"init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION, "info": code.FUNCTION,
"map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE, "string": code.DATATYPE, "int": code.DATATYPE,
"true": code.CONSTANT, "false": code.CONSTANT, "true": code.CONSTANT, "false": code.CONSTANT,
"init": code.FUNCTION, "main": code.FUNCTION, "list": code.FUNCTION,
"info": code.FUNCTION, "pwd": code.FUNCTION,
"map": code.DATATYPE, "struct": code.DATATYPE, "interface": code.DATATYPE,
"string": code.DATATYPE, "int": code.DATATYPE,
"source": code.FUNCTION,
"kit": code.PACKAGE, "ice": code.PACKAGE, "m": code.OBJECT, "arg": code.OBJECT, "kit": code.PACKAGE, "ice": code.PACKAGE, "m": code.OBJECT, "arg": code.OBJECT,
"event": code.OBJECT, "can": code.OBJECT, "msg": code.OBJECT, "target": code.OBJECT, "event": code.OBJECT, "can": code.OBJECT, "msg": code.OBJECT, "target": code.OBJECT,
}, },
func: function(can, push, text, indent, opts) { var ls = can.core.Split(text, "\t ")
opts.chapter = opts.chapter||0
if (ls[0] == "chapter") { opts.chapter++, opts.section = 0, push(opts.chapter+ice.SP+ls[1]) }
if (ls[0] == "section") { opts.section++, push(opts.chapter+ice.PT+opts.section+ice.SP+ls[1]) }
},
}, },
py: {prefix: {"#!": code.COMMENT, "# ": code.COMMENT}, keyword: {"import": code.KEYWORD, "from": code.KEYWORD, "return": code.KEYWORD, "print": code.FUNCTION}}, py: {prefix: {"#!": code.COMMENT, "# ": code.COMMENT}, keyword: {"import": code.KEYWORD, "from": code.KEYWORD, "return": code.KEYWORD, "print": code.FUNCTION}},
go: {prefix: {"// ": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: { go: {prefix: {"// ": code.COMMENT}, regexp: {"[A-Z_0-9]+": code.CONSTANT}, keyword: {
@ -230,6 +232,7 @@ Volcanos(chat.ONSYNTAX, {
"table": code.KEYWORD, "thead": code.KEYWORD, "tbody": code.KEYWORD, "tr": code.KEYWORD, "th": code.KEYWORD, "td": code.KEYWORD, "table": code.KEYWORD, "thead": code.KEYWORD, "tbody": code.KEYWORD, "tr": code.KEYWORD, "th": code.KEYWORD, "td": code.KEYWORD,
"h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD, "a": code.KEYWORD, "h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD, "a": code.KEYWORD,
"label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD, "label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD,
"video": code.KEYWORD,
"hover": code.DATATYPE, "focus": code.DATATYPE, "not": code.DATATYPE, "type": code.FUNCTION, "name": code.FUNCTION, "hover": code.DATATYPE, "focus": code.DATATYPE, "not": code.DATATYPE, "type": code.FUNCTION, "name": code.FUNCTION,
"padding": code.FUNCTION, "padding-left": code.FUNCTION, "padding-top": code.FUNCTION, "padding": code.FUNCTION, "padding-left": code.FUNCTION, "padding-top": code.FUNCTION,
@ -293,12 +296,14 @@ Volcanos(chat.ONSYNTAX, {
"contexts": code.CONSTANT, "contexts": code.CONSTANT,
}, },
}, },
html: { html: {split: {operator: "<=/>"},
keyword: { keyword: {
"DOCTYPE": code.KEYWORD, "html": code.KEYWORD, "head": code.KEYWORD, "body": code.KEYWORD, "DOCTYPE": code.KEYWORD, "html": code.KEYWORD, "head": code.KEYWORD, "body": code.KEYWORD,
"meta": code.KEYWORD, "title": code.KEYWORD, "link": code.KEYWORD, "script": code.KEYWORD, "meta": code.KEYWORD, "title": code.KEYWORD, "link": code.KEYWORD, "script": code.KEYWORD,
"src": code.FUNCTION, "href": code.FUNCTION, "rel": code.FUNCTION, "style": code.FUNCTION, "width": code.FUNCTION, "height": code.FUNCTION, "src": code.FUNCTION, "href": code.FUNCTION, "rel": code.FUNCTION, "style": code.FUNCTION, "width": code.FUNCTION, "height": code.FUNCTION,
"class": code.FUNCTION,
"fieldset": code.KEYWORD, "legend": code.KEYWORD, "form": code.KEYWORD,
"h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD, "h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD,
"p": code.KEYWORD, "a": code.KEYWORD, "br": code.KEYWORD, "hr": code.KEYWORD, "p": code.KEYWORD, "a": code.KEYWORD, "br": code.KEYWORD, "hr": code.KEYWORD,
"label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD, "label": code.KEYWORD, "span": code.KEYWORD, "img": code.KEYWORD, "svg": code.KEYWORD, "div": code.KEYWORD,

View File

@ -4,7 +4,7 @@ fieldset.vimer>div.output input.current { background-color:transparent; color:tr
fieldset.vimer>div.output input.current.insert { caret-color:black; } fieldset.vimer>div.output input.current.insert { caret-color:black; }
fieldset.vimer>div.output input.current.normal { caret-color:lightgray; } fieldset.vimer>div.output input.current.normal { caret-color:lightgray; }
fieldset.vimer>div.output div.complete { background-color:unset; padding-top:0; display:none; overflow:auto; position:absolute; } fieldset.vimer>div.output div.complete { background-color:unset; padding-top:0; display:none; overflow:auto; position:absolute; }
fieldset.vimer>div.output div.complete.insert:not(.hide) { display:block; } fieldset.vimer>div.output div.complete.insert:not(.hide) { display:block; top:unset; }
fieldset.vimer>div.output div.complete div.prefix { color:transparent; white-space:pre; float:left; } fieldset.vimer>div.output div.complete div.prefix { color:transparent; white-space:pre; float:left; }
fieldset.vimer>div.output div.complete table.content thead { display:none; } fieldset.vimer>div.output div.complete table.content thead { display:none; }
fieldset.vimer>div.output div.complete table.content { width:unset; max-width:600px; display:block; } fieldset.vimer>div.output div.complete table.content { width:unset; max-width:600px; display:block; }

View File

@ -1,5 +1,5 @@
fieldset.feel div.output img { display:block; float:left; } fieldset.feel div.output img { display:block; float:left; }
fieldset.feel div.output video { display:block; float:left; } fieldset.feel div.output video { display:block; float:left; }
fieldset.feel.float div.output img { display:block; float:none; margin:auto; } fieldset.feel.play.float div.output img { display:block; float:none; margin:auto; }
fieldset.feel.float div.output video { display:block; float:none; margin:auto; } fieldset.feel.play.float div.output video { display:block; float:none; margin:auto; }
fieldset.feel.float div.status { display:block; } fieldset.feel.play.float div.status { display:block; }

View File

@ -1,10 +1,10 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can) Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can), can.dir_root = msg.Option(nfs.DIR_ROOT)
can._path = can.request(), can.list = [], msg.Table(function(value) { can.base.endWith(value.path, ice.PS)? can._path.Push(value): can.list.push(value) }) can._path = can.request(), can.list = [], msg.Table(function(value) { can.base.endWith(value.path, ice.PS)? can._path.Push(value): can.list.push(value) })
can.ui = can.onlayout.profile(can, target), can._path.Table(function(item) { item.name = item.path can.ui = can.onappend.layout(can, can._output, "", [html.PROJECT, html.DISPLAY])
can._path.Table(function(item) { item.name = item.path
can.onimport.item(can, item, function() { can.Option(nfs.PATH, item.path), can.Update() }, function() {}, can.ui.project) can.onimport.item(can, item, function() { can.Option(nfs.PATH, item.path), can.Update() }, function() {}, can.ui.project)
}), can.isCmdMode() || can.onmotion.hidden(can, can._action), can.onmotion.hidden(can, can.ui.project) }), cb(msg), can.onimport.page(can, can.list, can.begin = parseInt(msg.Option(cli.BEGIN)||"0"))
can.base.isFunc(cb) && cb(msg), can.Action(html.HEIGHT, ice.AUTO), can.Action(mdb.LIMIT, 6) can.isCmdMode() || can.onmotion.hidden(can, can._action), can.onmotion.delay(can, function() { can.onimport.layout(can) })
can.dir_root = msg.Option(nfs.DIR_ROOT), can.onimport.page(can, can.list, can.begin = parseInt(msg.Option(cli.BEGIN)||"0"))
}, },
_file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020" _file: function(can, path, index) { var p = location.href.indexOf(ice.HTTP) == 0? "": "http://localhost:9020"
return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path(web.SHARE_LOCAL, can.dir_root||"", path) return path.indexOf(ice.HTTP) == 0? path: p+can.base.Path(web.SHARE_LOCAL, can.dir_root||"", path)
@ -18,6 +18,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.cl
for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, i) } for (var i = begin; i < begin+limit; i++) { list && list[i] && can.onimport.file(can, list[i].path, i) }
can.Status({begin: begin, limit: limit, total: list.length}) can.Status({begin: begin, limit: limit, total: list.length})
}, },
layout: function(can) {
can.page.style(can, can.ui.display, html.WIDTH, can.ConfWidth()-can.ui.project.offsetWidth-1)
can.page.style(can, can.ui.project, html.HEIGHT, can.ui.display.offsetHeight)
},
}, [""]) }, [""])
Volcanos(chat.ONFIGURE, { Volcanos(chat.ONFIGURE, {
png: function(can, path, index) { return can.onfigure.image(can, path, index) }, png: function(can, path, index) { return can.onfigure.image(can, path, index) },
@ -45,17 +49,15 @@ Volcanos(chat.ONFIGURE, {
webm: function(can, path) { return can.onfigure.video(can, path) }, webm: function(can, path) { return can.onfigure.video(can, path) },
}) })
Volcanos(chat.ONACTION, {list: [ Volcanos(chat.ONACTION, {list: [
[html.HEIGHT, 100, 200, 400, 600, 800, ice.AUTO], [html.HEIGHT, ice.AUTO, 100, 200, 400, 600, 800, ice.AUTO],
[mdb.LIMIT, 1, 3, 6, 9, 12, 15, 20, 30, 50], [mdb.LIMIT, 6, 1, 3, 6, 9, 12, 15, 20, 30, 50],
[html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10], [html.SPEED, 0.1, 0.2, 0.5, 1, 2, 3, 5, 10],
], ],
height: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, height: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
limit: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, limit: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) }, speed: function(event, can, key, value) { can.Action(key, value), can.onimport.page(can, can.list) },
prev: function(event, can) { if (can.begin > 0) { can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是第一页了") } }, prev: function(event, can) { if (can.begin > 0) { can.begin -= parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是第一页了") } },
next: function(event, can) { if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) { can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是最后一页了") } }, next: function(event, can) { if (can.begin + parseInt(can.Action(mdb.LIMIT)) < can.list.length) { can.begin += parseInt(can.Action(mdb.LIMIT)), can.onimport.page(can, can.list) } else { can.user.toast(can, "已经是最后一页了") } },
record0: function(event, can, name, cb) { can.user.input(event, can, [{name: nfs.FILE, value: name}], function(list) { var height = window.innerHeight record0: function(event, can, name, cb) { can.user.input(event, can, [{name: nfs.FILE, value: name}], function(list) { var height = window.innerHeight
navigator.mediaDevices.getDisplayMedia({video: {height: height}}).then(function(stream) { navigator.mediaDevices.getDisplayMedia({video: {height: height}}).then(function(stream) {
can.core.Next([3, 2, 1], function(item, next) { can.user.toast(can, item + "s 后开始截图"), can.onmotion.delay(can, next, 1000) }, function() { can.user.toast(can, "现在开始截图") can.core.Next([3, 2, 1], function(item, next) { can.user.toast(can, item + "s 后开始截图"), can.onmotion.delay(can, next, 1000) }, function() { can.user.toast(can, "现在开始截图")
@ -78,7 +80,7 @@ Volcanos(chat.ONACTION, {list: [
}) }, }) },
}) })
Volcanos(chat.ONDETAIL, {list: ["关闭", "上一个", "下一个", "设置头像", "设置背景", "复制链接", "下载", "删除"], _init: function(can, index) { Volcanos(chat.ONDETAIL, {list: ["关闭", "上一个", "下一个", "设置头像", "设置背景", "复制链接", "下载", "删除"], _init: function(can, index) {
can.onappend._init(can, {type: "story feel float"}, [], function(sub) { can.sub = sub can.onappend._init(can, {type: "story feel play float"}, [], function(sub) { can.sub = sub, sub._legend.onclick = can._legend.onclick
can.getActionSize(function(msg, left, top, width, height) { sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail), sub.onappend._status(sub, ["begin", nfs.FILE]) can.getActionSize(function(msg, left, top, width, height) { sub.onappend._action(can, can.ondetail.list, sub._action, can.ondetail), sub.onappend._status(sub, ["begin", nfs.FILE])
sub.page.style(sub, sub._target, {left: left||0, top: top||0}), sub.page.style(sub, sub._output, html.HEIGHT, height-2*html.ACTION_HEIGHT, html.WIDTH, width) sub.page.style(sub, sub._target, {left: left||0, top: top||0}), sub.page.style(sub, sub._output, html.HEIGHT, height-2*html.ACTION_HEIGHT, html.WIDTH, width)
can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path); var cb = can.onfigure[can.base.Ext(path)]||can.onfigure[wiki.IMAGE] can.order = index, can.show = function(order) { path = can.onimport._file(can, can.list[order].path); var cb = can.onfigure[can.base.Ext(path)]||can.onfigure[wiki.IMAGE]

View File

@ -1,31 +1,16 @@
fieldset.word form.option input[name=path] { width:127px; }
fieldset.word>form.option>div.item>input[name=path] { width:320px; } fieldset.word>form.option>div.item>input[name=path] { width:320px; }
body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; } body.mobile fieldset.word>form.option>div.item>input[name=path] { width:180px; }
body.webview fieldset.word>form.option>div.item>input[name=path] { width:160px; } body.webview fieldset.word>form.option>div.item>input[name=path] { width:160px; }
fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; } fieldset.word>div.navmenu { background-color:inherit; overflow:auto; min-width:120px; clear:both; float:left; }
fieldset.word>div.navmenu div.list { margin-left:20px; } fieldset.word>div.navmenu div.list { margin-left:20px; }
fieldset.word>div.navmenu div.item { font-size:1.4em; font-weight:bold; font-family:cursive; padding:4px 20px; } fieldset.word>div.navmenu div.item { font-size:1.4em; font-weight:bold; font-family:cursive; padding:4px 20px; }
fieldset.word>div.navmenu>div.item { font-size:1.6em; } fieldset.word>div.navmenu>div.item { font-size:1.6em; }
fieldset.word a { word-break:break-all; }
fieldset.word br.story { clear:both; }
fieldset.word ul.story { text-align:left; }
fieldset.word ul.story li.H2 { font-size:1.4em; font-weight:bold; }
fieldset.word ul.story li.H3 { font-size:1.2em; }
fieldset.word ul.story[data-type=premenu] { cursor:pointer; }
fieldset.word ul.story[data-type=premenu] li:hover { background-color:cyan; color:blue; }
fieldset.word ul.story[data-type=endmenu] { clear:both; }
fieldset.word p.story[data-name=inner] { background-color:#4b6c8a7a; padding:4px 10px; border-left:solid 4px blue; margin:10px 0px; }
fieldset.word p.story[data-name=inner]:hover { background-color:#c10c8a; cursor:copy; }
fieldset.word table.content { display:block; max-height:400px; }
// fieldset.word>div.output>fieldset.story:not(.float):not(.full) { margin:10px; }
// fieldset.word>div.output>div.story { margin:10px; }
fieldset.word>div.output>p.story { margin:10px; }
fieldset.word>div.output { padding:10px; } fieldset.word>div.output { padding:10px; }
// fieldset.word>div.output>fieldset.story { margin:10px; background-color:#58a4d37d; } fieldset.word>div.output>p.story { margin:10px; }
fieldset.word fieldset.story.full { margin:0; } fieldset.word>div.output>fieldset.story:not(:hover)>form.option { display:none; }
fieldset.word fieldset.story.float { margin:0; } fieldset.word>div.output>fieldset.story:not(:hover)>div.action { display:none; }
fieldset.word a { word-break:break-all; }
fieldset.word img { word-break:break-all; }
fieldset.word svg.story.auto defs marker { stroke:red; fill:red; } fieldset.word svg.story.auto defs marker { stroke:red; fill:red; }
fieldset.word svg.story.auto rect { stroke:yellow; fill:black; } fieldset.word svg.story.auto rect { stroke:yellow; fill:black; }
@ -38,29 +23,21 @@ body.white fieldset.word svg.story.auto text { stroke:blue; fill:blue; }
body.white fieldset.word svg.story.auto line { stroke:red; stroke-width:1; } body.white fieldset.word svg.story.auto line { stroke:red; stroke-width:1; }
body.white fieldset.word svg.story.auto path { stroke:red; stroke-width:1; } body.white fieldset.word svg.story.auto path { stroke:red; stroke-width:1; }
fieldset.word.float { padding:0; margin:0; position:fixed; left:0; top:0; z-index:10; } fieldset.word.play.float>div.action { display:contents; }
/* fieldset.word.float { padding:0; margin:0; width:-webkit-fill-available; position:fixed; left:0; top:0; z-index:10; } */ fieldset.word.play.float>div.status { clear:none; }
fieldset.word.float>div.action { display:contents; } fieldset.word.play.float>div.output>div.project { background-color:#4682b46b; padding:10px; position:fixed; right:0; top:32px; z-index:10; }
fieldset.word.float>div.status { clear:none; display:block; } fieldset.word.play.float div.content div.page { text-align:center; display:none; }
fieldset.word.float>div.output { background-color:#f0f8ff80; text-align:center; overflow:auto; } fieldset.word.play.float div.content div.page.show { display:block; }
fieldset.word.float>div.output>div.project { background-color:#4682b46b; padding:10px; position:fixed; right:0; top:32px; z-index:10; } fieldset.word.play.float div.content.grid div.page { background-color:#a4cbecb5; margin:10px; height:200px; width:200px; overflow:auto; display:block; float:left; }
fieldset.word.float div.content div.page { text-align:center; margin-top:32px; display:none; } fieldset.word.play.float h1 { text-align:center; }
fieldset.word.float div.content div.page.show { display:block; } fieldset.word.play.float h2 { text-align:center; }
fieldset.word.float div.content.grid div.page { background-color:#a4cbecb5; margin:10px; height:200px; width:200px; overflow:auto; display:block; float:left; } fieldset.word.play.float h3 { text-align:center; }
fieldset.word.float h1 { text-align:center; }
fieldset.word.float h2 { text-align:center; }
fieldset.word.float h3 { text-align:center; }
fieldset.word.cmd>legend { display:none; } fieldset.word.cmd>legend { display:none; }
fieldset.word.cmd>form.option { display:none; } fieldset.word.cmd>form.option { display:none; }
fieldset.word.cmd>div.action { display:none; } fieldset.word.cmd>div.action { display:none; }
fieldset.word.cmd>div.status { display:none; } fieldset.word.cmd>div.status { display:none; }
div.story[data-type=spark][data-name=field]>div.menu { float:left; overflow:auto; } div.story[data-type=spark] label {
div.story[data-type=spark][data-name=field]>div.list { float:left; overflow:auto; }
div.story[data-type=spark][data-name=field]>div.menu div.list div.item { padding:0 20px; }
div.story[data-type=spark][data-name=shell] label {
-webkit-user-select:none; /*webkit浏览器*/ -webkit-user-select:none; /*webkit浏览器*/
-khtml-user-select:none; /*早期浏览器*/ -khtml-user-select:none; /*早期浏览器*/
-moz-user-select:none; /*火狐*/ -moz-user-select:none; /*火狐*/

View File

@ -1,85 +1,35 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can) Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can)
can.page.Modify(can, target, msg.Result()) can.page.Modify(can, target, msg.Result())
can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{} can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}
can.core.CallFunc([can.onimport, meta.type||target.tagName.toLowerCase()], [can, meta, target]) can.core.CallFunc([can.onimport, can.onimport[meta.name]? meta.name: meta.type||target.tagName.toLowerCase()], [can, meta, target])
meta.style && can.page.style(can, target, can.base.Obj(meta.style)) meta.style && can.page.style(can, target, can.base.Obj(meta.style))
}) }), can.onmotion.delay(can, function() { can.onimport.layout(can) })
}, },
navmenu: function(can, meta, target) { var nav = can.sup._navmenu navmenu: function(can, meta, target) { var nav = can.sup._navmenu
nav = can.onmotion.clear(can, nav||can.page.insertBefore(can, [wiki.NAVMENU], can._output)), can.sup._navmenu = nav nav = can.onmotion.clear(can, nav||can.page.insertBefore(can, [wiki.NAVMENU], can._output)), can.sup._navmenu = nav
can.onimport.list(can, can.base.Obj(meta.data), function(event, item) { can.onimport.list(can, can.base.Obj(meta.data), function(event, item) {
var link = item.meta.link, list = can.core.Split(item.meta.link) var link = item.meta.link; if (!link || link == can.Option(nfs.PATH)) { return false }
if (can.core.Value(can, list[0])) { return can.core.CallFunc([can, list[0]], list.slice(1)) } if (can.base.beginWith(link, web.HTTP)) { return can.user.open(link) }
if (!link || link == can.Option(nfs.PATH)) { return false }
if (can.onmotion.cache(can, function() { can.isCmdMode() && can.user.title(item.meta.name); return can.Option(nfs.PATH, link) })) { return } if (can.onmotion.cache(can, function() { can.isCmdMode() && can.user.title(item.meta.name); return can.Option(nfs.PATH, link) })) { return }
return can.sup.Update(event, [link]) return can.sup.Update(event, [link])
}, nav) }, nav)
can.getActionSize(function(msg) {
can.page.style(can, nav, html.HEIGHT, can.ConfHeight()+(can.isCmdMode()? msg.Option(html.MARGIN_Y): 0))
can.page.style(can, can._output, html.PADDING, 10, html.FLOAT, html.LEFT, html.CLEAR, html.NONE,
html.HEIGHT, can.sup._navmenu.offsetHeight, html.MAX_WIDTH, can.ConfWidth(can.ConfWidth()-nav.offsetWidth),
)
})
},
premenu: function(can, meta, target) {
can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
can.page.Append(can, target, [{text: [_target.innerHTML, html.LI, _target.tagName], onclick: function() {
_target.scrollIntoView()
}}]), _target.onclick = function(event) { can.misc.Event(event, can, function(msg) {
target.scrollIntoView()
}) }
})
}, },
premenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
can.page.Append(can, target, [{text: [_target.innerHTML, html.DIV, html.ITEM], onclick: function() {
_target.scrollIntoView()
}}]), _target.onclick = function(event) { target.scrollIntoView() }
}) },
endmenu: function(can, meta, target) { can.page.Select(can, can._output, can.page.Keys(wiki.H2, wiki.H3), function(_target) {
can.page.Append(can, target, [{text: [_target.innerHTML, html.DIV, html.ITEM], onclick: function() {
_target.scrollIntoView()
}}])
}) },
title: function(can, meta, target) { can.isCmdMode() && target.tagName == "H1" && can.user.title(meta.text) }, title: function(can, meta, target) { can.isCmdMode() && target.tagName == "H1" && can.user.title(meta.text) },
spark: function(can, meta, target) { spark: function(can, meta, target) {
if (meta[mdb.NAME] == chat.FIELD) {
function deep(text) { var d = 0
for (var i = 0; i < text.length; i++) {
switch (text[i]) {
case ice.TB: d += 4; break
case ice.SP: d++; break
default: return d
}
}
return d
}
var list = []; can.core.List(target.innerText.split(ice.NL), function(line) { var _deep = deep(line)
while (list.length > 0) { if (_deep <= list[list.length-1]._deep) { list.pop() } else { break } }
var ls = can.core.Split(line), item = {_deep: _deep, meta: {index: ls[0], name: ls[1], args: ls.slice(2)}, list: []}
if (list.length > 0) { list[list.length-1].list.push(item) } list.push(item)
})
var first; function show(item, index, target, output) {
var ui = can.page.Append(can, target, [{view: [html.ITEM, html.DIV, item.meta.name||item.meta.index], onclick: function(event) {
can.onmotion.select(can, view.menu, html.DIV_ITEM, event.target)
if (ui.list.innerText) { return can.onmotion.toggle(can, ui.list) }
if (can.onmotion.cache(can, function() { return index }, output)) { return }
can.core.List(item.list, function(item) {
can.onappend.plugin(can, item.meta, function(sub) {
sub.run = function(event, cmds, cb) { can.runActionCommand(event, item.meta.index, cmds, cb) }
sub.ConfHeight(item.meta.height = can.ConfHeight()/2), sub.ConfWidth(item.meta.width = can.ConfWidth()-(can.user.isWindows? 181: 165))
can.page.style(can, sub._output, html.MAX_WIDTH, sub.ConfWidth())
}, output)
})
}}, html.LIST])
can.core.List(item.list, function(item) { item.list.length > 0 && show(item, can.core.Keys(index, item.meta.index), ui.list, output) })
ui.list.innerText == "" && (first = first||ui.item)
}
var view = can.page.Appends(can, target, [
{view: html.MENU, style: {height: can.ConfHeight()/2, width: 120}},
{view: html.LIST, style: {height: can.ConfHeight()/2, width: can.ConfWidth()-(can.user.isWindows? 181: 185)}},
])
return show(list[0], list[0]._index, view.menu, view.list), first.click()
}
if (meta[mdb.NAME] == html.INNER) { return can.onmotion.copy(can, target) } if (meta[mdb.NAME] == html.INNER) { return can.onmotion.copy(can, target) }
can.page.Select(can, target, html.SPAN, function(item) { can.onmotion.copy(can, item) }) can.page.Select(can, target, html.SPAN, function(item) { can.onmotion.copy(can, item) })
}, },
field: function(can, meta, target, width) { var item = can.base.Obj(meta.meta) field: function(can, meta, target, width) { var item = can.base.Obj(meta.meta); item.inputs = item.list, item.feature = item.meta
can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) { can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) {
sub.run = function(event, cmds, cb, silent) { var msg = sub.request(event) sub.run = function(event, cmds, cb, silent) { var msg = sub.request(event)
if (msg.Option(nfs.PATH) == can.Option(nfs.PATH)) { msg.Option(nfs.PATH, "") } if (msg.Option(nfs.PATH) == can.Option(nfs.PATH)) { msg.Option(nfs.PATH, "") }
@ -94,7 +44,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
}) })
}, can._output, target) }, can._output, target)
}, },
table: function(can, meta, target) { table: function(can, meta, target) {
can.page.OrderTable(can, target), can.page.ClassList.add(can, target, chat.CONTENT) can.page.OrderTable(can, target), can.page.ClassList.add(can, target, chat.CONTENT)
can.page.Select(can, target, html.TD, function(item) { can.onmotion.copy(can, item) }) can.page.Select(can, target, html.TD, function(item) { can.onmotion.copy(can, item) })
@ -111,63 +60,46 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
})); can.page.style(can, ui._target, {left: event.clientX, top: event.clientY}) })); can.page.style(can, ui._target, {left: event.clientX, top: event.clientY})
}) } }) }
}, },
image: function(can, meta, target) { can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight(), window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()) }, image: function(can, meta, target) {
video: function(can, meta, target) { can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight(), window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()) }, can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight()-20, window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()-20)
},
video: function(can, meta, target) {
can.page.style(can, target, html.MAX_HEIGHT, can.base.Min(can.ConfHeight()-20, window.innerHeight/2), html.MAX_WIDTH, can.ConfWidth()-20)
},
audio: function(can, meta, target) {}, audio: function(can, meta, target) {},
layout: function(can) { layout: function(can) { var height = can.ConfHeight(), width = can.ConfWidth()
can.isCmdMode() && can.ConfHeight(can.page.height()) && can.page.styleHeight(can, can._output, "") can.isCmdMode() && can.ConfHeight(can.page.height())
if (can.sup._navmenu) { can.page.style(can, can.sup._navmenu, html.HEIGHT, can.ConfHeight())
can.page.style(can, can._output, html.HEIGHT, height, html.WIDTH, width = can.ConfWidth()-can.sup._navmenu.offsetWidth, "clear", "none", "float", "left")
} else {
can.isCmdMode() && can.ConfHeight(can.page.height()) && can.page.styleHeight(can, can._output, "")
}
can.core.List(can._plugins, function(sub) { can.core.List(can._plugins, function(sub) {
sub.ConfHeight(can.base.Min(300, can.ConfHeight()-300)), sub.ConfWidth(can.ConfWidth()-(can.user.isWindows? 40: 20)) sub.ConfHeight(can.base.Min(300, height-300)), sub.ConfWidth(width-(can.user.isWindows? 40: 20))
sub.onimport.size(sub, sub.ConfHeight(), sub.ConfWidth(), true) sub.onimport.size(sub, can.base.Min(300, height-300), width-(can.user.isWindows? 40: 20), true)
}) })
can.page.Select(can, can._output, can.page.Keys(html.IMG, html.VIDEO), function(target) { can.page.style(can, target, html.MAX_HEIGHT, height-20, html.MAX_WIDTH, width-20) })
}, },
}, [""]) }, [""])
Volcanos(chat.ONKEYMAP, { Volcanos(chat.ONACTION, {_trans: {view: "视图"},
_mode: { onkeydown: function(event, can) { can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist) },
normal: {
"n": function(event, can) { can.ondetail.next(can.sub) },
"j": function(event, can) { can.ondetail.next(can.sub) },
"ArrowRight": function(event, can) { can.ondetail.next(can.sub) },
"ArrowLeft": function(event, can) { can.ondetail.prev(can.sub) },
"k": function(event, can) { can.ondetail.prev(can.sub) },
"p": function(event, can) { can.ondetail.prev(can.sub) },
"q": function(event, can) { can.ondetail["结束"](event, can.sub) },
"h": function(event, can) { can.ondetail["隐藏"](event, can.sub) },
},
}, _engine: {},
})
Volcanos(chat.ONACTION, {
_trans: {view: "视图"},
play: function(event, can) { var list = [], current = [] play: function(event, can) { var list = [], current = []
can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) { can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) { can.page.tagis(item, "h1", "h2", "h3") && list.push(current = []), current.push(item) })
can.page.tagis(item, "h1", "h2", "h3") && list.push(current = []), current.push(item) can.onappend._init(can, {type: "story word play float"}, [], function(sub) { sub._legend.onclick = can._legend.onclick
})
can.onappend._init(can, {type: "story word float"}, [], function(sub) {
sub.run = can.run, sub.sup = can, can.sub = sub, can.onappend._action(sub, can.user.isMobile && can.page.height() > can.page.width()? [ sub.run = can.run, sub.sup = can, can.sub = sub, can.onappend._action(sub, can.user.isMobile && can.page.height() > can.page.width()? [
"大纲", "上一页", "下一页", "结束", "大纲", "上一页", "下一页", "结束",
]: [ ]: [
["布局", "开讲", "网格", "快闪"], "大纲", "首页", "上一页", ["布局", "开讲", "网格", "快闪"], "大纲", "首页", "上一页",
["菜单"].concat(can.core.List(list, function(page) { return page[0].innerHTML })), ["菜单"].concat(can.core.List(list, function(page) { return page[0].innerHTML })),
"下一页", "隐藏", "结束", "下一页", "隐藏", "结束",
], sub._action, can.ondetail) ], sub._action, can.ondetail), can.onkeymap._build(can)
can.onengine.signal(can, "keymap.focus", can.request(event, {cb: function(event) {
can.keylist = can.onkeymap._parse(event, can, "normal", can.keylist)
}})), can.onkeymap._build(can)
sub.page.style(sub, sub._target, "background", can._root._target.style.background) sub.page.style(sub, sub._target, "background", can._root._target.style.background)
sub.page.style(sub, sub._output, html.HEIGHT, can.page.height()-2*html.ACTION_HEIGHT) sub.page.style(sub, sub._output, html.HEIGHT, can.page.height()-2*html.ACTION_HEIGHT)
sub.page.style(sub, sub._output, html.WIDTH, can.page.width()) sub.page.style(sub, sub._output, html.WIDTH, can.page.width())
sub.ui = sub.page.Append(sub, sub._output, [chat.PROJECT, chat.CONTENT])
sub.ui = sub.page.Append(sub, sub._output, [{view: chat.PROJECT}, {view: chat.CONTENT}])
can.core.List(sub.list = list, function(page, index) { can.core.List(sub.list = list, function(page, index) {
can.onimport.item(can, {name: page[0].innerHTML}, function(event) { can.onimport.item(can, {name: page[0].innerHTML}, function(event) { can.ondetail.show(sub, index) }, function(event) {}, sub.ui.project)
can.ondetail.show(sub, index)
}, function(event) {}, sub.ui.project)
sub.page.Append(sub, sub.ui.content, [{view: "page"+(index==0? " first": ""), list: can.core.List(page, function(item) { var data = item.dataset||{} sub.page.Append(sub, sub.ui.content, [{view: "page"+(index==0? " first": ""), list: can.core.List(page, function(item) { var data = item.dataset||{}
switch (data.type) { switch (data.type) {
case wiki.PREMENU: item = item.cloneNode(false); break case wiki.PREMENU: item = item.cloneNode(false); break
@ -177,20 +109,10 @@ Volcanos(chat.ONACTION, {
return can.core.CallFunc([can.onimport, data.type], [sub, data, item, can.page.width()]), item return can.core.CallFunc([can.onimport, data.type], [sub, data, item, can.page.width()]), item
}), }]) }), }])
}), can.onmotion.hidden(can, sub.ui.project), can.ondetail.show(sub, 0) }), can.onmotion.hidden(can, sub.ui.project), can.ondetail.show(sub, 0)
sub.onappend._status(sub, [mdb.PAGE, cli.FROM, cli.COST]), sub.Status(cli.FROM, can.base.Time()) sub.onappend._status(sub, [mdb.PAGE, cli.FROM, cli.COST]), sub.Status(cli.FROM, can.base.Time())
var from = new Date(); can.core.Timer({interval: 100}, function() { var now = new Date() var from = new Date(); can.core.Timer({interval: 100}, function() { var now = new Date(); sub.Status(cli.COST, can.base.Duration(now-from)) })
sub.Status(cli.COST, can.base.Duration(now-from))
})
}, can._root._target) }, can._root._target)
}, },
view: function(event, can) {
if (can._height) {
can.page.styleHeight(can, can._target, can._height), can.page.styleHeight(can, can.sup._navmenu, can._height), delete(can._height)
} else { can._height = can.page.styleHeight(can, can._target)
can.page.styleHeight(can, can._target, ""), can.page.styleHeight(can, can.sup._navmenu, "")
}
},
}) })
Volcanos(chat.ONDETAIL, {list: ["删除"], Volcanos(chat.ONDETAIL, {list: ["删除"],
show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT) show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT)
@ -205,21 +127,15 @@ Volcanos(chat.ONDETAIL, {list: ["删除"],
} }
}) })
}, },
next: function(sub) { next: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) { page.nextSibling? sub.sup.ondetail.show(sub, page.nextSibling): sub.user.toast(sub.sup, cli.END)
page.nextSibling? sub.sup.ondetail.show(sub, page.nextSibling): sub.user.toast(sub, cli.END) }) },
}) prev: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) {
}, page.previousSibling? sub.sup.ondetail.show(sub, page.previousSibling): sub.user.toast(sub.sup, cli.END)
prev: function(sub) { }) },
sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) { flash: function(sub) { sub.core.Next(sub.page.Select(sub, sub.ui.content, html.DIV_PAGE), function(page, next) {
page.previousSibling? sub.sup.ondetail.show(sub, page.previousSibling): sub.user.toast(sub, cli.END) sub.sup.ondetail.show(sub, page), sub.onmotion.delay(sub, next, 500)
}) }) },
},
flash: function(sub) {
sub.core.Next(sub.page.Select(sub, sub.ui.content, html.DIV_PAGE), function(page, next) {
sub.sup.ondetail.show(sub, page), sub.onmotion.delay(sub, function() { next() })
})
},
grid: function(sub) { sub.page.styleClass(sub, sub.ui.content, "content grid") }, grid: function(sub) { sub.page.styleClass(sub, sub.ui.content, "content grid") },
"开讲": function(event, can) { can.sup.ondetail.show(can, 0) }, "开讲": function(event, can) { can.sup.ondetail.show(can, 0) },
@ -235,3 +151,18 @@ Volcanos(chat.ONDETAIL, {list: ["删除"],
"结束": function(event, can) { can.page.Remove(can, can._target) }, "结束": function(event, can) { can.page.Remove(can, can._target) },
"删除": function(event, sub) { sub.page.Remove(sub, sub._target) }, "删除": function(event, sub) { sub.page.Remove(sub, sub._target) },
}) })
Volcanos(chat.ONKEYMAP, {
_mode: {
normal: {
"n": function(event, can) { can.ondetail.next(can.sub) },
"j": function(event, can) { can.ondetail.next(can.sub) },
"ArrowRight": function(event, can) { can.ondetail.next(can.sub) },
"ArrowLeft": function(event, can) { can.ondetail.prev(can.sub) },
"k": function(event, can) { can.ondetail.prev(can.sub) },
"p": function(event, can) { can.ondetail.prev(can.sub) },
"q": function(event, can) { can.ondetail["结束"](event, can.sub) },
"h": function(event, can) { can.ondetail["隐藏"](event, can.sub) },
},
}, _engine: {},
})

View File

@ -77,6 +77,7 @@ Volcanos(chat.ONACTION, {list: [
can.page.style(can, can._output, back.output), can.page.style(can, can._target, back.style), can.base.isFunc(load) && load(back) can.page.style(can, can._output, back.output), can.page.style(can, can._target, back.style), can.base.isFunc(load) && load(back)
if (!sub) { return } if (!sub) { return }
sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.Mode(can.Mode()), sub.onlayout._init(sub) sub.ConfHeight(can.ConfHeight()), sub.ConfWidth(can.ConfWidth()), sub.Mode(can.Mode()), sub.onlayout._init(sub)
can._target.click()
} }
}, },
"刷新界面": function(event, can) { var sub = can._outputs[0]; sub.onlayout._init(sub), can.user.toastSuccess(can) }, "刷新界面": function(event, can) { var sub = can._outputs[0]; sub.onlayout._init(sub), can.user.toastSuccess(can) },

View File

@ -79,6 +79,7 @@ var web = {CHAT: "chat",
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage",
SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/", SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/",
HTTP: "http",
GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE",
Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded", Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded",
IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm", IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm",
@ -307,7 +308,7 @@ var Volcanos = shy({iceberg: "/chat/", volcano: "/frame.js", cache: {}, pack: {}
can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) { can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) {
key.indexOf("_") == 0 || key.indexOf("user.") == 0 || set(key, item.Option(key)) key.indexOf("_") == 0 || key.indexOf("user.") == 0 || set(key, item.Option(key))
}): can.core.Item(can.base.isFunc(item)? item(): item, set) }): can.core.Item(can.base.isFunc(item)? item(): item, set)
}); set(ice.MSG_HEIGHT, can.ConfHeight()), set(ice.MSG_WIDTH, can.ConfWidth()), set(ice.MSG_MODE, can.Mode()) }); set(ice.MSG_HEIGHT, can.ConfHeight()+""), set(ice.MSG_WIDTH, can.ConfWidth()+""), set(ice.MSG_MODE, can.Mode())
return msg return msg
}, },
runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf() runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf()