1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-05-19 17:02:46 +08:00
parent 1dd54cbd5d
commit 94b4faee59
18 changed files with 198 additions and 401 deletions

134
index.css
View File

@ -207,26 +207,22 @@ div.project div.action div.item input { border-right:var(--box-border); }
div.project div.action div.item input:hover { border-right:var(--box-notice); } div.project div.action div.item input:hover { border-right:var(--box-notice); }
div.project div.action div.item.icons input { display:none; } div.project div.action div.item.icons input { display:none; }
div.project div.action div.item.icons { background-color:var(--plugin-bg-color); padding:0; } div.project div.action div.item.icons { background-color:var(--plugin-bg-color); padding:0; }
div.project div.expand { margin-right:var(--input-margin); width:5px; float:left; transform: translate(1px, -1px) rotate(0deg); transition:all .5s; }
div.project div.expand.open { transform: translate(4px, -1px) rotate(90deg); transition:all .3s; }
div.project div.list { margin-left:var(--button-margin); clear:both; } div.project div.list { margin-left:var(--button-margin); clear:both; }
div.project div.list { border-left:var(--disable-fg-color) dashed 1px; } div.project div.list { border-left:var(--disable-fg-color) dashed 1px; }
div.project div.list fieldset { position:static; } div.project div.list fieldset { position:static; }
div.project div.item { position:relative; }
div.project div.item.select { border-right:var(--box-notice3); } div.project div.item.select { border-right:var(--box-notice3); }
body.width6 fieldset.plugin>div.output>div.project div.list { margin-left:var(--legend-margin); } div.project div.item:not(.hide) { white-space:pre; line-height:24px; cursor:pointer; padding:0 var(--input-padding); display:flex; align-items:center; }
div.project div.item:not(.hide)>i:first-child { margin-right:var(--input-margin); } div.project div.item:not(.hide)>i:first-child { margin-right:var(--input-margin); }
div.project div.item:not(.hide) { div.project div.item:not(:hover) input:not([type=button]) { border-left:0; border-right:0; }
white-space:pre; line-height:24px; cursor:pointer;
padding:0 var(--input-padding); display:flex; align-items:center;
}
div.project div.item img { height:var(--action-height); width:var(--action-height); }
div.project div.item img { margin:0; }
div.project div.item:not(:hover) input:not([type=button]) { border-right:0; }
div.project div.item.filter { background-color:var(--plugin-bg-color); padding:0; width:100%; position:sticky; top:0; z-index:1; } div.project div.item.filter { background-color:var(--plugin-bg-color); padding:0; width:100%; position:sticky; top:0; z-index:1; }
div.project div.item.filter>input { padding:0 25px; width:100% !important; } div.project div.item.filter>input { padding:0 25px; width:100% !important; }
div.project div.item.search { padding:0; width:100%; } div.project div.item.search { padding:0; width:100%; }
div.project div.item.search>input { padding:0 25px; width:100%; } div.project div.item.search>input { padding:0 25px; width:100%; }
div.project div.expand { margin-right:var(--input-margin); width:5px; float:left; transform: translate(1px, -1px) rotate(0deg); transition:all .5s; } div.project div.item img { height:var(--action-height); width:var(--action-height); }
div.project div.expand.open { transform: translate(4px, -1px) rotate(90deg); transition:all .3s; } div.project div.item img { margin:0; }
div.project div.item { position:relative; }
div.project div.item>div.name { padding:0 var(--input-padding); } div.project div.item>div.name { padding:0 var(--input-padding); }
div.project div.item>div.icon { position:absolute; right:var(--input-padding); } div.project div.item>div.icon { position:absolute; right:var(--input-padding); }
div.project div.item>div.icon:hover { background-color:var(--hover-bg-color); } div.project div.item>div.icon:hover { background-color:var(--hover-bg-color); }
@ -255,8 +251,8 @@ div.toggle.project { top:20%; left:0; border-top-right-radius:var(--plugin-radiu
div.content>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } div.content>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); } div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
div.project:not(.toggle) { width:var(--project-width); flex:0 0 var(--project-width); } div.project:not(.toggle) { width:var(--project-width); flex:0 0 var(--project-width); }
fieldset.story div.project:not(.toggle) { width:230px; flex:0 0 230px; }
div.layout>div.profile:not(.toggle) { width:50%; flex:0 0 50%; } div.layout>div.profile:not(.toggle) { width:50%; flex:0 0 50%; }
fieldset.story div.project:not(.toggle) { width:230px; flex:0 0 230px; }
/* fieldset */ /* fieldset */
body.mobile div.item.online.state { display:none; } body.mobile div.item.online.state { display:none; }
div.item.online.state { margin-left:var(--button-margin) !important; display:block; align-items:center; } div.item.online.state { margin-left:var(--button-margin) !important; display:block; align-items:center; }
@ -267,7 +263,7 @@ div.item.online.state img:hover { background-color:var(--hover-bg-color); }
div.item.online.state:not(:hover) img:not(:first-child) { margin-right:-20px; } div.item.online.state:not(:hover) img:not(:first-child) { margin-right:-20px; }
fieldset.output>div.header { display:none; } fieldset.output>div.header { display:none; }
fieldset>div.header { display:contents; } fieldset>div.header { display:contents; }
fieldset>div.header>div { line-height:22px; padding:var(--input-padding); margin:0 var(--input-margin); height:var(--action-height); float:right; } fieldset>div.header>div { line-height:22px; padding:var(--input-padding); height:var(--action-height); float:right; }
fieldset>div.header>div.avatar { padding:0; } fieldset>div.header>div.avatar { padding:0; }
fieldset>div.header div.online { padding:0; } fieldset>div.header div.online { padding:0; }
fieldset>div.header img { height:var(--action-height); float:right; } fieldset>div.header img { height:var(--action-height); float:right; }
@ -395,6 +391,7 @@ body>div.input.login>div.display div.sso div.item>img { height:var(--action-heig
body>div.input.login>div.display div.sso div.item>span { line-height:var(--action-height); padding:var(--input-padding); } body>div.input.login>div.display div.sso div.item>span { line-height:var(--action-height); padding:var(--input-padding); }
body>div.input.simple td:first-child { display:none; } body>div.input.simple td:first-child { display:none; }
body>div.upload div.action input[type=file] { width:var(--form-width); } body>div.upload div.action input[type=file] { width:var(--form-width); }
body>div.upload div.action div.item.close input { display:none; }
body>div.upload div.output { border:var(--box-notice); } body>div.upload div.output { border:var(--box-notice); }
body>div.upload div.output div.progress { background-color:var(--progress-bg-color); height:10px; width:0; } body>div.upload div.output div.progress { background-color:var(--progress-bg-color); height:10px; width:0; }
body>div.upload div.status div.cost { float:left; } body>div.upload div.status div.cost { float:left; }
@ -552,7 +549,8 @@ fieldset.studio fieldset.story>legend { border-top-left-radius:0; }
fieldset.float { box-shadow:var(--plugin-box-shadow); border:var(--plugin-border); border-radius:var(--plugin-radius); } fieldset.float { box-shadow:var(--plugin-box-shadow); border:var(--plugin-border); border-radius:var(--plugin-radius); }
fieldset:not(.panel):hover { box-shadow:var(--notice-box-shadow); } fieldset:not(.panel):hover { box-shadow:var(--notice-box-shadow); }
body:not(.cmd) fieldset.plugin>legend { box-shadow:var(--legend-box-shadow); margin-right:var(--legend-margin); } body:not(.cmd) fieldset.plugin>legend { box-shadow:var(--legend-box-shadow); margin-right:var(--legend-margin); }
body:not(.cmd) fieldset.story>legend { box-shadow:var(--legend-box-shadow); margin-right:var(--legend-margin); } body:not(.cmd) fieldset.story>legend { box-shadow:var(--legend-box-shadow); }
// body:not(.cmd) fieldset.story:not(.float)>legend { margin-right:var(--legend-margin); }
fieldset.story>legend { border-top-left-radius:var(--plugin-radius); } fieldset.story>legend { border-top-left-radius:var(--plugin-radius); }
fieldset.float>form.option input { border-top:0; } fieldset.float>form.option input { border-top:0; }
fieldset.float>div.action input { border-top:0; } fieldset.float>div.action input { border-top:0; }
@ -582,8 +580,8 @@ div.layout>div.profile:not(.toggle) { border-left:var(--box-border); }
div.layout>div.display:not(.toggle) { border-top:var(--box-border); } div.layout>div.display:not(.toggle) { border-top:var(--box-border); }
body.mobile fieldset>legend { box-shadow:none; } body.mobile fieldset>legend { box-shadow:none; }
body.mobile fieldset.plugin>legend>span { display:block; float:right; } body.mobile fieldset.plugin>legend>span { display:block; float:right; }
body:not(.mobile) fieldset.plugin>div.action div.item:first-child { margin-left:var(--button-margin); } body:not(.mobile) fieldset.plugin>div.action div.item:first-child:not(.icons) { margin-left:var(--button-margin); }
body:not(.mobile) fieldset.story>div.action div.item:first-child { margin-left:var(--button-margin); } body:not(.mobile) fieldset.story>div.action div.item:first-child:not(.icons) { margin-left:var(--button-margin); }
/* font */ /* font */
body.windows { --code-font-family:"Courier New"; } body.windows { --code-font-family:"Courier New"; }
body { font-family:var(--body-font-family); } body { font-family:var(--body-font-family); }
@ -777,7 +775,6 @@ body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd)>div.action>div.butt
body.mobile fieldset.Header { padding:0; width:100%; position:fixed; top:0; } body.mobile fieldset.Header { padding:0; width:100%; position:fixed; top:0; }
body.mobile fieldset.Header>div.output { font-size:1.4rem; line-height:var(--header-height); } body.mobile fieldset.Header>div.output { font-size:1.4rem; line-height:var(--header-height); }
body.mobile fieldset.Header>div.output div.item { padding:0px var(--plugin-padding); } body.mobile fieldset.Header>div.output div.item { padding:0px var(--plugin-padding); }
// body.mobile fieldset.Header>div.output div.item.title>span { display:none; }
body.mobile fieldset.Header>div.output div.item.text.title.search { display:none; } body.mobile fieldset.Header>div.output div.item.text.title.search { display:none; }
body.mobile fieldset.Search>div.action>div.item.filter>input { width:100%; } body.mobile fieldset.Search>div.action>div.item.filter>input { width:100%; }
body.mobile fieldset.Search>div.action>div.item.filter>span { position:absolute; } body.mobile fieldset.Search>div.action>div.item.filter>span { position:absolute; }
@ -822,56 +819,58 @@ body.print div.float { background-color:snow; }
body.print fieldset.draw div.output { background-color:lightgray; } body.print fieldset.draw div.output { background-color:lightgray; }
body.print fieldset.draw div.output div.content svg { background-color:lightgray; } body.print fieldset.draw div.output div.content svg { background-color:lightgray; }
/* misc */ /* misc */
fieldset.iframe>form.option>div.item.hash input { width:var(--form-width); }
fieldset.iframe.float>form.option>div.item.hash input { width:var(--form-width); }
fieldset.desktop { border:0; } fieldset.desktop { border:0; }
fieldset.Action>div.output>fieldset.ssh.cloud.profile { box-shadow:none; background-color:transparent; } fieldset.qrcode>div.output div.code { padding:0; }
fieldset.Action>div.output>fieldset.ssh.cloud.profile:hover { box-shadow:none; } fieldset.xterm>div.output>div.project { font-family:var(--code-font-family); }
fieldset.Action>div.output>fieldset.ssh.cloud.profile>div.output { background-color:transparent; } fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
div.upload.float div.action>div.item.close input { display:none; } fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:var(--disable-fg-color); }
body.mobile fieldset.float form.option div.item.text { display:none; } fieldset.vimer>div.output>div.project>div.zone.space fieldset>div.output>div.item { height:42px; }
body:not(.cmd) fieldset.Action>div.output>fieldset.plugin>legend { border-top:var(--box-notice3); border-top-left-radius:0; } fieldset.inner.float>div.status { display:none; }
body:not(.cmd) fieldset.Action>div.output>fieldset.plugin>legend:not(:hover) { background-color:var(--output-bg-color); } fieldset.dream>div.output>div.item div.content>span { padding:0 var(--input-padding); }
fieldset.Action:not(.horizon):not(.grid)>fieldset.plugin>form.option>div.item.text.path>input { width:var(--project-width); } fieldset.dream>div.output>div.item div.content>span.files { background-color:purple; color:var(--notice-fg-color);}
fieldset.dream>div.output>div.item div.content>span.add { background-color:var(--notice-bg-color); color:var(--notice-fg-color);}
fieldset.dream>div.output>div.item div.content>span.del { background-color:var(--danger-bg-color); color:var(--danger-fg-color);}
fieldset.dream>div.output>div.item.begin>div.title { color:var(--disable-fg-color); font-style:italic; text-decoration:line-through; }
fieldset.dream>div.output>div.item.login { border:var(--box-danger); }
fieldset.dream>div.output>div.item.server { border:var(--box-notice); }
fieldset.dream>div.output>div.item.origin { border:var(--box-danger); }
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:var(--input-padding); }
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:var(--input-margin); }
fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); }
fieldset.plug.dream.zone>div.output>div.item.origin.select { border-right:var(--box-danger3); }
fieldset.web.stats>div.output { align-items: normal; }
fieldset.web.code.git>div.output>fieldset.web.code.inner>div.output { overflow:auto; }
fieldset.web.code.git.total.draw div.output { text-align:center; }
fieldset.web.code.git.trend>div.output rect { cursor:pointer; }
fieldset.web.code.git.status>div.output table.content { width:100%; }
fieldset.web.code.docker.studio>div.output>fieldset>legend { display:none; } fieldset.web.code.docker.studio>div.output>fieldset>legend { display:none; }
fieldset.web.code.docker.studio>div.output>fieldset>form.option>div:first-child { margin-left:var(--button-margin); } fieldset.web.code.docker.studio>div.output>fieldset>form.option>div:first-child { margin-left:var(--button-margin); }
fieldset.web.code.system.unicode>div.output>table.content th { text-align:center; cursor:default;} fieldset.web.code.system.unicode>div.output>table.content th { text-align:center; cursor:default;}
fieldset.web.code.system.unicode>div.output>table.content td { text-align:center; cursor:default; } fieldset.web.code.system.unicode>div.output>table.content td { text-align:center; cursor:default; }
fieldset.web.wiki.word>div.output>fieldset.story:not(.full) { margin:var(--title-margin) 0; }
fieldset.web.wiki.word>div.output fieldset.story:not(.float):not(.full)>form.option>div.icon.delete { display:none; }
fieldset.web.chat.wx.scan>div.output>table.content tr.expired { color:var(--disable-fg-color); } fieldset.web.chat.wx.scan>div.output>table.content tr.expired { color:var(--disable-fg-color); }
fieldset.web.chat.wx.ide>div.output>table.content tr.current { background-color:var(--hover-bg-color); } fieldset.web.chat.wx.ide>div.output>table.content tr.current { background-color:var(--hover-bg-color); }
fieldset.web.chat.script>div.output>fieldset.story { margin-top:20px; }
fieldset.web.chat.script>div.output>table.content tr.done { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
fieldset.web.chat.location>div.output>div.layout>div.layout { position:relative; }
fieldset.web.chat.location>div.output .amap-toolbar { z-index:unset; }
fieldset.web.chat.location>div.output .amap-controls { z-index:unset; }
fieldset.web.chat.location>div.output .amap-maptypecontrol { z-index:unset; }
fieldset.web.chat.location>div.output>div.layout>div.layout>div.profile { background-color:var(--plugin-bg-color); position:absolute; right:0; width:360px; z-index:2; border-left:none; }
fieldset.web.chat.color table.content { border-collapse:collapse; }
fieldset.web.mall.region>div.output>table.content td:nth-child(3) { text-align:right; } fieldset.web.mall.region>div.output>table.content td:nth-child(3) { text-align:right; }
fieldset.web.mall.region>div.output>table.content td:nth-child(4) { text-align:right; } fieldset.web.mall.region>div.output>table.content td:nth-child(4) { text-align:right; }
fieldset.web.mall.region>div.output>table.content td:nth-child(5) { text-align:right; } fieldset.web.mall.region>div.output>table.content td:nth-child(5) { text-align:right; }
fieldset.web.mall.region>div.output>fieldset.web.mall.region.float>div.action { display:none; } fieldset.web.mall.region>div.output>fieldset.web.mall.region.float>div.action { display:none; }
fieldset.web.dream>div.output>div.item div.content>span { padding:0 var(--input-padding); }
fieldset.web.dream>div.output>div.item div.content>span.files { background-color:purple; color:var(--notice-fg-color);}
fieldset.web.dream>div.output>div.item div.content>span.add { background-color:var(--notice-bg-color); color:var(--notice-fg-color);}
fieldset.web.dream>div.output>div.item div.content>span.del { background-color:var(--danger-bg-color); color:var(--danger-fg-color);}
fieldset.feel.play.float>div.output { justify-content:center; } fieldset.feel.play.float>div.output { justify-content:center; }
fieldset.xterm>form.option>div.item.text.hash input { width:var(--url-input-width); }
fieldset.xterm.float>form.option>div.item.hash input { width:var(--form-width); }
fieldset.iframe.float>form.option>div.item.hash input { width:var(--form-width); }
fieldset.iframe>form.option>div.item.hash input { width:var(--form-width); }
fieldset.inner.float>div.status { display:none; }
fieldset.web.chat.color table.content { border-collapse:collapse; }
fieldset.user>form.option>div.item.username input { width:var(--project-width); } fieldset.user>form.option>div.item.username input { width:var(--project-width); }
fieldset.offer>div.output>table.content tr.invite { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } fieldset.offer>div.output>table.content tr.invite { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
fieldset.apply>div.output>table.content.detail.apply tr.action td.action { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } fieldset.apply>div.output>table.content.detail.apply tr.action td.action { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
fieldset.inner>div.output>div.project div.item.modify { background-color:#00800036; }
fieldset.vimer>div.output>div.project div.item.modify { background-color:#00800036; }
fieldset.vimer>div.output>div.project>div.zone.space div.item.stop { color:var(--disable-fg-color); }
fieldset.vimer>div.output>div.project>div.zone.space fieldset>div.output>div.item { height:42px; }
fieldset.xterm>div.action>div.tabs:only-child { display:none; }
fieldset.xterm>div.layout { clear:both; }
fieldset.xterm>form.option>div.item.args1 { display:none; }
fieldset.xterm>form.option>div.item.args0 { display:none; }
fieldset.xterm div.layout div.output { border-left:var(--box-border); border-top:var(--box-border); }
fieldset.xterm div.layout div.output.select { border:var(--box-border)}
fieldset.dream>div.output.card>div.item.begin>div.title { color:var(--disable-fg-color); font-style:italic; text-decoration:line-through; }
fieldset.dream>div.output.card>div.item.login { border:var(--box-danger); }
fieldset.dream>div.output.card>div.item.server { border:var(--box-notice); }
fieldset.dream>div.output.card>div.item.origin { border:var(--box-danger); }
fieldset.trans>div.output>fieldset { margin:var(--button-margin); } fieldset.trans>div.output>fieldset { margin:var(--button-margin); }
fieldset.config form.option input[name=key] { width:var(--project-width); } fieldset.config form.option input[name=key] { width:var(--project-width); }
fieldset.qrcode>div.output div.code { padding:0; }
fieldset.rich>div.output>table.content { font-family:var(--code-font-family); } fieldset.rich>div.output>table.content { font-family:var(--code-font-family); }
fieldset.plan div.output div.content>table.content { height:100%; width:100%; } fieldset.plan div.output div.content>table.content { height:100%; width:100%; }
fieldset.plan>div.output>div.layout>div.layout>div.profile:not(.toggle) { width:unset; flex:unset; } fieldset.plan>div.output>div.layout>div.layout>div.profile:not(.toggle) { width:unset; flex:unset; }
@ -884,24 +883,9 @@ fieldset.draw>div.output>div.layout>div.layout>div.profile { width:var(--project
fieldset.draw div.output svg { margin-bottom:-5px; } fieldset.draw div.output svg { margin-bottom:-5px; }
fieldset.draw div.output svg { min-height:100%; } fieldset.draw div.output svg { min-height:100%; }
fieldset.draw div.output { display:flex; flex-direction:row; } fieldset.draw div.output { display:flex; flex-direction:row; }
fieldset.draw.trends div.output { overflow:hidden; }
body:not(.dark) fieldset.draw.trends div.output svg { background-color:#1b5b738c; }
fieldset.draw.spides div.output svg text { cursor:pointer; } fieldset.draw.spides div.output svg text { cursor:pointer; }
fieldset.draw.spides div.output svg path { stroke-width:1; } fieldset.draw.spides div.output svg path { stroke-width:1; }
fieldset.web.stats>div.output { align-items: normal; } fieldset.draw.trends div.output { overflow:hidden; }
fieldset.web.code.git>div.output>fieldset.web.code.inner>div.output { overflow:auto; }
fieldset.web.code.git.total.draw div.output { text-align:center; }
fieldset.web.code.git.trend>div.output rect { cursor:pointer; }
fieldset.web.code.git.status>div.output table.content { width:100%; }
fieldset.web.wiki.word>div.output>fieldset.story:not(.full) { margin:var(--title-margin) 0; }
fieldset.web.wiki.word>div.output fieldset.story:not(.float):not(.full)>form.option>div.icon.delete { display:none; }
fieldset.web.chat.script>div.output>fieldset.story { margin-top:20px; }
fieldset.web.chat.script>div.output>table.content tr.done { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
fieldset.web.chat.location>div.output>div.layout>div.layout { position:relative; }
fieldset.web.chat.location>div.output .amap-toolbar { z-index:unset; }
fieldset.web.chat.location>div.output .amap-controls { z-index:unset; }
fieldset.web.chat.location>div.output .amap-maptypecontrol { z-index:unset; }
fieldset.web.chat.location>div.output>div.layout>div.layout>div.profile { background-color:var(--plugin-bg-color); position:absolute; right:0; width:360px; z-index:2; border-left:none; }
fieldset.can.data>div.output { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; } fieldset.can.data>div.output { font-family:var(--code-font-family); font-size:var(--code-font-size); white-space:pre; }
fieldset.can.data>div.output div.item:not(.hide) { display:flex; gap:5px; } fieldset.can.data>div.output div.item:not(.hide) { display:flex; gap:5px; }
fieldset.can.data>div.output div.view div.item:not(.hide) { display:block; } fieldset.can.data>div.output div.view div.item:not(.hide) { display:block; }
@ -931,11 +915,6 @@ fieldset.studio>div.action>div.item:not(.icons) { font-style:italic; }
fieldset.studio>div.output>fieldset.story { margin:var(--plugin-margin); } fieldset.studio>div.output>fieldset.story { margin:var(--plugin-margin); }
fieldset.studio>div.output>fieldset.story:not(.select) { display:none; } fieldset.studio>div.output>fieldset.story:not(.select) { display:none; }
fieldset.studio>div.output>fieldset.story>form.option div.icon.delete { display:none; } fieldset.studio>div.output>fieldset.story>form.option div.icon.delete { display:none; }
fieldset.plug>div.output table.content { width:100%; }
fieldset.plug.dream.zone>div.output>div.item { display:flex; padding:var(--input-padding); }
fieldset.plug.dream.zone>div.output>div.item>img { margin-right:var(--input-margin); }
fieldset.plug.dream.zone>div.output>div.item>span { line-height:var(--action-height); }
fieldset.plug.dream.zone>div.output>div.item.origin.select { border-right:var(--box-danger3); }
fieldset.cmd>div.item.state { line-height:22px; padding:var(--input-padding) var(--button-padding); float:right; } fieldset.cmd>div.item.state { line-height:22px; padding:var(--input-padding) var(--button-padding); float:right; }
fieldset.cmd>div.item.avatar { padding:0; height:var(--action-height); } fieldset.cmd>div.item.avatar { padding:0; height:var(--action-height); }
fieldset.cmd>div.item.avatar>img { height:var(--action-height); } fieldset.cmd>div.item.avatar>img { height:var(--action-height); }
@ -946,13 +925,23 @@ fieldset.Action.tabs table.content { width:100%; }
fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd) { padding:var(--plugin-padding); margin:var(--plugin-margin); } fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd) { padding:var(--plugin-padding); margin:var(--plugin-margin); }
fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; } fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { float:none; }
fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend:not(:hover) { background-color:var(--plugin-bg-color); } fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend:not(:hover) { background-color:var(--plugin-bg-color); }
body.mobile fieldset.float:not(.full):not(.cmd)>legend { float:none; } fieldset.Action>div.output>fieldset.ssh.cloud.profile { box-shadow:none; background-color:transparent; }
fieldset.Action>div.output>fieldset.ssh.cloud.profile:hover { box-shadow:none; }
fieldset.Action>div.output>fieldset.ssh.cloud.profile>div.output { background-color:transparent; }
fieldset.Action:not(.horizon):not(.grid)>fieldset.plugin>form.option>div.item.text.path>input { width:var(--project-width); }
body:not(.debug) fieldset.plugin.can._notfound { display:none; }
body:not(.cmd) fieldset.Action>div.output>fieldset.plugin>legend { border-top:var(--box-notice3); border-top-left-radius:0; }
body:not(.cmd) fieldset.Action>div.output>fieldset.plugin>legend:not(:hover) { background-color:var(--output-bg-color); }
body:not(.dark) fieldset.draw.trends div.output svg { background-color:#1b5b738c; }
body.width6 fieldset.plugin.word>form.option>div.item.text>input { width:var(--project-width); } body.width6 fieldset.plugin.word>form.option>div.item.text>input { width:var(--project-width); }
body.width6 fieldset.plugin>div.output>div.project div.list { margin-left:var(--legend-margin); }
body.width6 fieldset.plugin.iframe>form.option input[name=hash] { width:var(--form-width); } body.width6 fieldset.plugin.iframe>form.option input[name=hash] { width:var(--form-width); }
body.width6 fieldset.plugin.trans>form.option>div.item.text>input { width:var(--project-width); } body.width6 fieldset.plugin.trans>form.option>div.item.text>input { width:var(--project-width); }
body.width6 fieldset.story.xterm>form.option>div.item.hash input { width:var(--form-width); } body.width6 fieldset.story.xterm>form.option>div.item.hash input { width:var(--form-width); }
body.width6 fieldset.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:var(--river-width); } body.width6 fieldset.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:var(--river-width); }
body.width2 fieldset.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:0; } body.width2 fieldset.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:0; }
body.mobile fieldset.float form.option div.item.text { display:none; }
body.mobile fieldset.float:not(.full):not(.cmd)>legend { float:none; }
body.mobile fieldset.word:not(.cmd)>form.option>div.item>input[name=path] { width:180px; } body.mobile fieldset.word:not(.cmd)>form.option>div.item>input[name=path] { width:180px; }
body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; } body.mobile fieldset.word fieldset.inner>form.option input[type=text] { display:none; }
body.mobile fieldset.vimer>form.option div.item.path input { width:var(--input-width); } body.mobile fieldset.vimer>form.option div.item.path input { width:var(--input-width); }
@ -963,7 +952,6 @@ body.windows fieldset.inner>div.output { overflow:hidden; }
body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; } body.windows fieldset.inner>div.output>div.layout>div.layout>div.profile { overflow:hidden; }
body.white fieldset.inner.cmd>div.output>div.layout>div.tabs div:not(.select):not(:hover) { background-color:transparent; } body.white fieldset.inner.cmd>div.output>div.layout>div.tabs div:not(.select):not(:hover) { background-color:transparent; }
body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); box-shadow:var(--legend-box-shadow); } body.zh fieldset.inner>div.output>div.project>div.zone>div.item { letter-spacing:10px; border-top:var(--box-border); box-shadow:var(--legend-box-shadow); }
body:not(.debug) fieldset.plugin.can._notfound { display:none; }
fieldset.story.web.chat.wx.agent { position:fixed; left:0; bottom:0; } fieldset.story.web.chat.wx.agent { position:fixed; left:0; bottom:0; }
div.output>fieldset.xterm.story>form.option>div.item.hash input { width:var(--form-width); } div.output>fieldset.xterm.story>form.option>div.item.hash input { width:var(--form-width); }
div.output>fieldset.iframe.story>form.option>div.item.hash input { width:var(--url-input-width); } div.output>fieldset.iframe.story>form.option>div.item.hash input { width:var(--url-input-width); }

View File

@ -70,7 +70,7 @@ div.input.inner.find.float div.action div.item.text input { width:var(--project-
div.input.inner.find.float div.action div.item.close span { display:none; } div.input.inner.find.float div.action div.item.close span { display:none; }
div.input.inner.find.float div.action div.item.replace input { border:var(--box-danger); } div.input.inner.find.float div.action div.item.replace input { border:var(--box-danger); }
div.input.inner.open.float td:first-child { display:none; } div.input.inner.open.float td:first-child { display:none; }
div.input.inner.open.float div.item.text input { width:100% !important; } div.input.inner.open.float div.item.text input[type=text] { width:100% !important; }
div.input.inner.open.float td:nth-child(2) { display:none; } div.input.inner.open.float td:nth-child(2) { display:none; }
tr.line>td.line { border-right:var(--box-border); cursor:pointer; -webkit-user-select:none; } tr.line>td.line { border-right:var(--box-border); cursor:pointer; -webkit-user-select:none; }
tr.line>td.line { text-align:right; line-height:var(--code-line-height); padding:0 var(--button-padding); position:sticky; left:0; } tr.line>td.line { text-align:right; line-height:var(--code-line-height); padding:0 var(--button-padding); position:sticky; left:0; }

View File

@ -61,7 +61,7 @@ Volcanos(chat.ONIMPORT, {
var line = can.core.Split(button, nfs.DF, nfs.DF).pop() var line = can.core.Split(button, nfs.DF, nfs.DF).pop()
can.onimport.tabview(can, "", can.Option(nfs.FILE), line, function() { can.onaction.selectLine(can, line, true) }) can.onimport.tabview(can, "", can.Option(nfs.FILE), line, function() { can.onaction.selectLine(can, line, true) })
}) })
can.onmotion.delay(can, function() { can.page.Select(can, carte._target, html.DIV_ITEM, function(target) { carte && can.onmotion.delay(can, function() { can.page.Select(can, carte._target, html.DIV_ITEM, function(target) {
can.onappend.style(can, can.base.beginWith(target.innerText, "- ")? aaa.PRIVATE: aaa.PUBLIC, target) can.onappend.style(can, can.base.beginWith(target.innerText, "- ")? aaa.PRIVATE: aaa.PUBLIC, target)
}) }) }) })
}}]) }}])
@ -205,7 +205,7 @@ Volcanos(chat.ONIMPORT, {
process: function(can, msg, target, height, width, cb) { can.onmotion.clear(can, target) process: function(can, msg, target, height, width, cb) { can.onmotion.clear(can, target)
if (msg.Option(ice.MSG_PROCESS) == ice.PROCESS_FIELD) { if (msg.Option(ice.MSG_PROCESS) == ice.PROCESS_FIELD) {
msg.Table(function(item) { item.type = chat.STORY, item.height = height, item.width = width, item.display = msg.Option(ice.MSG_DISPLAY) msg.Table(function(item) { item.type = chat.STORY, item.height = height, item.width = width, item.display = msg.Option(ice.MSG_DISPLAY)
if (can.base.isIn(item.index, web.CODE_XTERM, web.WIKI_WORD)) { item.style = html.OUTPUT } if (can.base.isIn(item.index, web.WIKI_WORD)) { item.style = html.OUTPUT }
can.onimport.plug(can, item, function(sub) { can.onimport.plug(can, item, function(sub) {
sub.onaction.close = function() { can.onmotion.hidden(can, target), can.onimport.layout(can) } sub.onaction.close = function() { can.onmotion.hidden(can, target), can.onimport.layout(can) }
sub.onexport.output = function(_sub, _msg) { can.base.isFunc(cb) && cb(_sub.sup, _msg) } sub.onexport.output = function(_sub, _msg) { can.base.isFunc(cb) && cb(_sub.sup, _msg) }
@ -547,7 +547,6 @@ Volcanos(chat.ONEXPORT, {
text: function(can, line) { return can.core.Value(can.page.SelectOne(can, line, "td.text"), "innerText") }, text: function(can, line) { return can.core.Value(can.page.SelectOne(can, line, "td.text"), "innerText") },
size: function(can, size, full) { if (size > 1) { return size } if (size > 0) { return size*full } }, size: function(can, size, full) { if (size > 1) { return size } if (size > 0) { return size*full } },
keys: function(can, path, file) { return [path||can.Option(nfs.PATH), file||can.Option(nfs.FILE)].join(nfs.DF) }, keys: function(can, path, file) { return [path||can.Option(nfs.PATH), file||can.Option(nfs.FILE)].join(nfs.DF) },
hash: function(can) { return can.misc.SearchHash(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)) },
content: function(can) { return can.page.Select(can, can.current&&can.current.content||can.ui.content, "td.text", function(item) { return item.innerText.trimEnd() }).join(lex.NL) }, content: function(can) { return can.page.Select(can, can.current&&can.current.content||can.ui.content, "td.text", function(item) { return item.innerText.trimEnd() }).join(lex.NL) },
position: function(can, index, total) { total = total||can.ui.content._max; return (parseInt(index))+nfs.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%" }, position: function(can, index, total) { total = total||can.ui.content._max; return (parseInt(index))+nfs.PS+parseInt(total)+" = "+parseInt((index)*100/total)+"%" },
selection: function(can, str) { var s = document.getSelection().toString(), begin = str.indexOf(s), end = begin+s.length selection: function(can, str) { var s = document.getSelection().toString(), begin = str.indexOf(s), end = begin+s.length

View File

@ -1,15 +0,0 @@
Volcanos(chat.ONIMPORT, {_init: function(can, msg) {
can.core.List(can.misc._list, function(item) {
msg.Push(mdb.TIME, item[0])
msg.Push(nfs.FILE, item[1].split(nfs.DF)[0].split("?")[0])
msg.Push(nfs.LINE, item[1].split(nfs.DF)[1])
msg.Push(mdb.TYPE, item[2])
msg.Push(mdb.NAME, item[3])
msg.Push(mdb.TEXT, item.slice(4).join(lex.SP)||"")
}), msg.StatusTimeCount(), can.onmotion.clear(can), can.onappend.table(can, msg)
can.page.Select(can, can._option, "input[name=name]", function(target) {
target.onkeyup = function(event) { can.misc.Event(event, can, function(msg) {
can.onmotion.highlight(can, target.value)
}) }
})
}})

View File

@ -1,30 +0,0 @@
Volcanos(chat.ONIMPORT, {_init: function(can, cb) {
can.onimport.toolkit(can, {index: "web.code.favor"}, function(sub) {
sub.run = function(event, cmds, cb) { var msg = can.request(event)
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
code.INNER, function(cmds) {
can.onimport.tabview(can, msg.Option(nfs.PATH), msg.Option(nfs.FILE), msg.Option(nfs.LINE))
},
))) { return }
can.runAction(event, code.FAVOR, cmds, function(msg) {
sub.onmotion.clear(sub), sub.onappend.table(sub, msg, function(value, key, index, line) {
if (msg.append.length == 2 && msg.append[0] == mdb.KEY && msg.append[1] == mdb.VALUE) {
if (key == mdb.VALUE) { key = line.key }
}
if (key != ctx.ACTION) { value = sub.page.replace(sub, value, nfs.PWD, "") }
return {text: ["", html.TD], list: [{text: [value, html.DIV]}], onclick: function(event) { var target = event.target
if ([mdb.ZONE, mdb.ID].indexOf(key) > -1) { return sub.onimport.change(event, sub, key, value) }
if (target.tagName == "INPUT" && target.type == html.BUTTON) { var msg = sub.request(event, line, sub.Option())
return sub.runAction(event, target.name, [], function(msg) { sub.run() })
}
line.line && can.onimport.tabview(can, line.path, line.file.replace(nfs.PWD, ""), parseInt(line.line))
}}
}, sub._output), sub.onappend._status(sub, msg.Option(ice.MSG_STATUS))
})
}, can.base.isFunc(cb) && cb(sub)
})
}})

View File

@ -1,6 +0,0 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg, cb) { cb && cb(msg)
can._output.innerHTML = can.misc.sessionStorage(can, [can.ConfIndex(), "output"])||""
can.page.style(can, can._output, html.MIN_HEIGHT, 200, html.WIDTH, can.ConfWidth(), "white-space", "pre", "padding", "10px")
},
})

View File

@ -1,9 +1,6 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {list: [mdb.VALUE, "close:button"],
list: [mdb.VALUE, "close:button"],
_init: function(can, msg) { msg.Defer(function() { can.onappend.scroll(can, can._output) }) _init: function(can, msg) { msg.Defer(function() { can.onappend.scroll(can, can._output) })
can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.highlight(can, can.Option(mdb.VALUE, msg.Option(mdb.VALUE))) can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.highlight(can, can.Option(mdb.VALUE, msg.Option(mdb.VALUE)))
can.page.Select(can, can._option, "input[name=value]", function(target) { can.page.Select(can, can._option, "input[name=value]", function(target) { can.onmotion.hidden(can, target) })
can.onmotion.hidden(can, target)
})
}, },
}) })

View File

@ -1,21 +0,0 @@
Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) { var SESS = "web.code.sess"
can.onimport.toolkit(can, {index: SESS}, function(sub) {
sub.run = function(event, cmds, cb) { var msg = can.request(event)
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
nfs.SAVE, function(cmds) {
can.runActionCommand(event, SESS, [ctx.ACTION, mdb.CREATE,
"tool", JSON.stringify(can.onexport.tool(can)),
"tabs", JSON.stringify(can.onexport.tabs(can)),
], cb)
},
nfs.LOAD, function(cmds) {
can.onimport.sess(can, {
tool: JSON.parse(msg.Option("tool")),
tabs: JSON.parse(msg.Option("tabs")),
})
},
))) { return }
can.runActionCommand(event, SESS, cmds, cb)
}, can.base.isFunc(cb) && cb(sub)
})
}})

View File

@ -1,21 +0,0 @@
Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) {
can.onimport.toolkit(can, {index: "web.code.template"}, function(sub) {
sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option())
if (can.misc.runAction(can, msg, cmds, cb, kit.Dict(
nfs.DEFS, function(cmds) {
can.user.input(event, can, can.base.Obj(msg.Option("args")||"[]"), function(data) {
var msg = can.request(event); can.core.Item(data, function(key, value) { msg.Option(key, value) })
can.runActionCommand(event, "web.code.template", [nfs.DEFS].concat(cmds), function(msg) {
can.base.isFunc(cb) && cb(msg)
can.onimport.project(can, can.Option(nfs.PATH))
can.onimport.tabview(can, can.Option(nfs.PATH), msg.Option("main"), "", function() {
can.onimport.tabview(can, can.Option(nfs.PATH), cmds[1], 1, function() {})
}, true)
})
})
}
))) { return }
can.runActionCommand(event, "web.code.template", cmds, cb)
}, can.base.isFunc(cb) && cb(sub)
})
}})

View File

@ -20,4 +20,3 @@ fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content thead { display:none; } fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content thead { display:none; }
fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content td:first-child { padding-left:0; } fieldset.vimer>div.output.source>div.layout>div.layout>div.content div.complete table.content td:first-child { padding-left:0; }
fieldset.vimer>div.output>div.layout>div.tabs>div.tabs>div.tabs.origin.select { border-top:var(--box-danger3); } fieldset.vimer>div.output>div.layout>div.tabs>div.tabs>div.tabs.origin.select { border-top:var(--box-danger3); }
div.input.vimer.open.float input[type=text] { width:100% !important; }

View File

@ -22,20 +22,23 @@ Volcanos(chat.ONFIGURE, {
source: function(can, target, zone, hash) { var args = [can.Option(nfs.PATH), can.Option(nfs.FILE)] source: function(can, target, zone, hash) { var args = [can.Option(nfs.PATH), can.Option(nfs.FILE)]
can.run({}, [ctx.ACTION, nfs.REPOS], function(msg) { var paths = can.db.paths can.run({}, [ctx.ACTION, nfs.REPOS], function(msg) { var paths = can.db.paths
can.core.List(paths.concat(msg.Table(function(value) { return value.path })), function(p) { can.core.List(paths.concat(msg.Table(function(value) { return value.path })), function(p) {
if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.isIn(p, nfs.USR_WEBSOCKET, nfs.USR_GO_QRCODE, nfs.USR_GO_GIT, nfs.USR_ICONS, nfs.USR_GEOAREA, nfs.USR_PROGRAM, nfs.USR_NODE_MODULES)) { return } if (can.base.beginWith(p, nfs.USR_LOCAL_WORK) || can.base.isIn(p,
if (can.base.isIn(p, nfs.USR_LEARNING, nfs.USR_INTSHELL)) { return } nfs.USR_LEARNING, nfs.USR_INTSHELL,
nfs.USR_ICONS, nfs.USR_GEOAREA, nfs.USR_PROGRAM, nfs.USR_NODE_MODULES,
nfs.USR_WEBSOCKET, nfs.USR_GO_QRCODE, nfs.USR_GO_GIT,
)) { return }
if (p && paths.indexOf(p) == -1 && p[0] != nfs.PS) { paths.push(p) } if (p && paths.indexOf(p) == -1 && p[0] != nfs.PS) { paths.push(p) }
}) })
function show(target, zone, path) { can.run(can.request({}, {_method: http.GET, dir_root: path, dir_deep: true}, can.Option()), [nfs.PWD], function(msg) { function show(target, zone, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) {
var cache, list = can.core.List(msg.Table(), function(item) { var cache, list = can.core.List(msg.Table(), function(value) {
if (path == nfs.SRC && can.base.isIn(item.path, "main.ico", "main.svg", "version.go", "binpack.go", "binpack_usr.go")) { return } if (path == nfs.SRC && can.base.isIn(value.path, "main.ico", "main.svg", "version.go", "binpack.go", "binpack_usr.go")) { return }
if (path == nfs.USR_RELEASE && can.base.isIn(item.path, "conf.go", "binpack.go")) { return } if (path == nfs.USR_RELEASE && can.base.isIn(value.path, "conf.go", "binpack.go")) { return }
if (path == args[0] && args[1].indexOf(item.path) == 0) { item.expand = true } if (path == args[0] && args[1].indexOf(value.path) == 0) { value.expand = true }
return item return value
}); can.onmotion.clear(can, target), zone._total(msg.Length()) }); can.onmotion.clear(can, target), zone._total(msg.Length())
cache = can.onimport.tree(can, list, function(event, item, target) { cache = can.onimport.tree(can, list, function(event, item, target) {
can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path, "", function(msg) { msg._item = target }) can.base.endWith(item.path, nfs.PS) || can.onimport.tabview(can, path, item.path, "", function(msg) { msg._item = target })
}, function(event, target, item) { }, function(event, item, target) {
var msg = can.request(event); msg.Option(nfs.PATH, path), msg.Option(nfs.FILE, item.path) var msg = can.request(event); msg.Option(nfs.PATH, path), msg.Option(nfs.FILE, item.path)
}, target, cache) }, target, cache)
can.onmotion.delay(can, function() { hash.length > 1 && can.onimport.openzone(can, hash[0], hash[1], hash[2]) && can.onimport.tabview(can, hash[0], hash[1], hash[2]), hash = [] }) can.onmotion.delay(can, function() { hash.length > 1 && can.onimport.openzone(can, hash[0], hash[1], hash[2]) && can.onimport.tabview(can, hash[0], hash[1], hash[2]), hash = [] })
@ -63,22 +66,19 @@ Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
}) })
}, },
reload: function(can, msg) { reload: function(can, msg) {
function imports(str) { var block = "", count = 0; can.core.List(str.split(lex.NL), function(item) { function imports(str) { var block = "", count = 0; can.core.List(str.split(lex.NL), function(text) {
if (can.base.beginWith(item, "import (")) { block = can.core.Split(item)[0]; return } if (can.base.beginWith(text, "import (")) { block = can.core.Split(text)[0]; return }
if (can.base.beginWith(item, ")")) { block = ""; return } if (can.base.beginWith(text, ")")) { block = ""; return }
if (can.base.beginWith(item, "import ")) { count++; return } if (can.base.beginWith(text, "import ")) { count++; return }
if (block == "import") { count++ } if (block == "import") { count++ }
}); return count } }); return count }
if (can.onexport.parse(can) == nfs.GO) { var line = can.onaction.selectLine(can); can.onmotion.clear(can, can.ui.content), can.ui.content._max = 0 if (can.onexport.parse(can) == nfs.GO) { var line = can.onaction.selectLine(can); can.onmotion.clear(can, can.ui.content), can.ui.content._max = 0
can.core.List(msg.Result().split(lex.NL), function(item) { can.onaction.appendLine(can, item) }) can.core.List(msg.Result().split(lex.NL), function(text) { can.onaction.appendLine(can, text) })
can.onaction.selectLine(can, line+imports(msg.Result())-imports(msg.Option(nfs.CONTENT))) can.onaction.selectLine(can, line+imports(msg.Result())-imports(msg.Option(nfs.CONTENT)))
} }
}, },
remove: function(can, p) {
var target = can.ui.zone.source[p]; if (target._tabs) { target._tabs._close() } can.page.Remove(can, target)
},
trash: function(event, can, button) { var msg = can.request(event), p = msg.Option(nfs.PATH)+msg.Option(nfs.FILE) trash: function(event, can, button) { var msg = can.request(event), p = msg.Option(nfs.PATH)+msg.Option(nfs.FILE)
can.onaction._run(event, can, button, [p], function(msg) { can.onaction.remove(can, p) }) can.onaction._run(event, can, button, [p], function(msg) { can.ui.zone.source.refresh() })
}, },
script: function(event, can, button) { can.onaction._runs(event, can, button) }, script: function(event, can, button) { can.onaction._runs(event, can, button) },
module: function(event, can, button) { can.onaction._runs(can.request(event, {title: can.user.trans(can, button, "创建模块")}), can, button) }, module: function(event, can, button) { can.onaction._runs(can.request(event, {title: can.user.trans(can, button, "创建模块")}), can, button) },
@ -89,14 +89,27 @@ Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
}) } var toast = can.user.toastProcess(can, cli.RESTART); can.onmotion.delay(can, function() { toast.close(), can.user.toastSuccess(can, cli.RESTART) }, 3000) }) } var toast = can.user.toastProcess(can, cli.RESTART); can.onmotion.delay(can, function() { toast.close(), can.user.toastSuccess(can, cli.RESTART) }, 3000)
}) })
}, },
"命令": function(event, can) { can.user.input(event, can, [{name: ctx.INDEX, need: "must"}, ctx.ARGS], function(list) { can.onimport.tabview(can, "", list[0]+(list[1]? mdb.FS+list[1]: ""), ctx.INDEX) }) }, "命令": function(event, can) { can.user.input(event, can, [{name: ctx.INDEX, need: "must"}, ctx.ARGS], function(data) {
"插件": function(event, can) { can.user.input(can.request(event, {type: "plug"}), can, [{name: ctx.INDEX, need: "must"}, ctx.ARGS], function(list, data) { var sub = can.db.toolkit[list.join(",")]; if (sub) { sub.select(); return } can.onimport.tabview(can, "", data.index+(data.args? mdb.FS+data.args: ""), ctx.INDEX)
can.onimport.toolkit(can, {index: data.index, args: can.core.Split(data.args||"")}, function(sub) { can.db.toolkit[list.join(",")] = sub.select() }) }) },
"插件": function(event, can) { can.user.input(can.request(event, {type: "plug"}), can, [{name: ctx.INDEX, need: "must"}, ctx.ARGS], function(list, data) {
var key = list.join(","), sub = can.db.toolkit[key]; if (sub) { return sub.select() }
can.onimport.toolkit(can, {index: data.index, args: can.core.Split(data.args||"")}, function(sub) { can.db.toolkit[key] = sub.select() })
}) },
"扩展": function(event, can) { can.user.input(can.request(event, {action: "extension"}), can, ["url"], function(list) {
var sub = can.db.toolkit[list[0]]; sub? sub.select(): can.onimport.exts(can, list[0])
}) }, }) },
"扩展": function(event, can) { can.user.input(can.request(event, {action: "extension"}), can, ["url"], function(list) { var sub = can.db.toolkit[list[0]]; sub? sub.select(): can.onimport.exts(can, list[0]) }) },
insertLine: function(can, value, before) { var line = can.onaction.appendLine(can, value); before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before)); return can.onaction.rerankLine(can), can.onexport.line(can, line) }, insertLine: function(can, text, before) {
deleteLine: function(can, line) { line = can.onaction._getLine(can, line); var next = line.nextSibling||line.previousSibling; return can.page.Remove(can, line), can.onaction.rerankLine(can), next }, var line = can.onaction.appendLine(can, text)
before && can.ui.content.insertBefore(line, can.onaction._getLine(can, before))
return can.onaction.rerankLine(can), can.onexport.line(can, line)
},
deleteLine: function(can, line) {
line = can.onaction._getLine(can, line)
var next = line.nextSibling||line.previousSibling;
return can.page.Remove(can, line), can.onaction.rerankLine(can), next
},
_selectLine: function(can) { can.current && can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; if (!target) { return } _selectLine: function(can) { can.current && can.page.Select(can, can.current.line, "td.text", function(td) { var target = can.ui.current; if (!target) { return }
can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.TOP, td.offsetTop, html.WIDTH, can.base.Min(td.offsetWidth, can.ui.content.offsetWidth-can.page.Select(can, can.current.line, "td.line")[0].offsetWidth)) can.current.line.appendChild(target), can.page.style(can, target, html.LEFT, td.offsetLeft-1, html.TOP, td.offsetTop, html.WIDTH, can.base.Min(td.offsetWidth, can.ui.content.offsetWidth-can.page.Select(can, can.current.line, "td.line")[0].offsetWidth))
target.value = td.innerText, can.db.mode == mdb.NORMAL && can.onkeymap._normal(can) target.value = td.innerText, can.db.mode == mdb.NORMAL && can.onkeymap._normal(can)
@ -105,9 +118,6 @@ Volcanos(chat.ONACTION, {_trans: {input: {main: "程序", top: "顶域"}},
}) }) }) })
}) }, }) },
}) })
Volcanos(chat.ONEXPORT, {
hash: function(can) { return can.misc.SearchHash(can, can.Option(nfs.PATH), can.Option(nfs.FILE), can.Option(nfs.LINE)) },
})
Volcanos(chat.ONKEYMAP, { Volcanos(chat.ONKEYMAP, {
scrollHold: function(can, count, begin) { var top = can.ui.content.scrollTop, left = can.ui.content.scrollLeft scrollHold: function(can, count, begin) { var top = can.ui.content.scrollTop, left = can.ui.content.scrollLeft
can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin) can.ui.current.focus(), count != undefined && can.onkeymap.cursorMove(can.ui.current, count, begin == undefined? count: begin)
@ -119,8 +129,8 @@ Volcanos(chat.ONKEYMAP, {
cursorUp: function(can, target) { if (!can.current.prev()) { return } cursorUp: function(can, target) { if (!can.current.prev()) { return }
var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.prev()), can.onkeymap.cursorMove(target, 0, p) var p = can.onkeymap.cursorMove(target); can.onaction.selectLine(can, can.current.prev()), can.onkeymap.cursorMove(target, 0, p)
}, },
_model: function(can, value) { can.db.mode = value, can.onimport.__tabPath(can, true), can.onmotion.toggle(can, can.ui.complete, false) _model: function(can, mode) { can.db.mode = mode, can.onimport.__tabPath(can, true), can.onmotion.toggle(can, can.ui.complete, false)
can.core.List([mdb.NORMAL, mdb.INSERT], function(item) { can.page.ClassList.del(can, can._output, item) }), can.page.ClassList.add(can, can._output, value) can.core.List([mdb.NORMAL, mdb.INSERT], function(mode) { can.page.ClassList.del(can, can._output, mode) }), can.page.ClassList.add(can, can._output, mode)
}, },
_plugin: function(can) { can.onkeymap._model(can, mdb.PLUGIN), can.ui.current.blur() }, _plugin: function(can) { can.onkeymap._model(can, mdb.PLUGIN), can.ui.current.blur() },
_normal: function(can) { can.onkeymap._model(can, mdb.NORMAL), can.onkeymap.scrollHold(can) }, _normal: function(can) { can.onkeymap._model(can, mdb.NORMAL), can.onkeymap.scrollHold(can) },
@ -188,7 +198,7 @@ Volcanos(chat.ONKEYMAP, {
v: shy("渲染界面", function(event, can) { can.onaction.show(event, can) }), v: shy("渲染界面", function(event, can) { can.onaction.show(event, can) }),
r: shy("执行命令", function(event, can) { can.onaction.exec(event, can) }), r: shy("执行命令", function(event, can) { can.onaction.exec(event, can) }),
Escape: shy("切换模式", function(event, can) { can.onkeymap._plugin(can) }), Escape: shy("切换模式", function(can) { can.onkeymap._plugin(can) }),
ArrowLeft: shy("光标左移", function(can, target) { can.onkeymap.cursorMove(target, -1) }), ArrowLeft: shy("光标左移", function(can, target) { can.onkeymap.cursorMove(target, -1) }),
ArrowRight: shy("光标右移", function(can, target) { can.onkeymap.cursorMove(target, 1) }), ArrowRight: shy("光标右移", function(can, target) { can.onkeymap.cursorMove(target, 1) }),
ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }), ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }),
@ -265,7 +275,7 @@ Volcanos(chat.ONKEYMAP, {
d: shy("删除字符", function(can, target) { can.user.isWindows && can.onkeymap.deleteText(target, target.selectionStart, 1) }), d: shy("删除字符", function(can, target) { can.user.isWindows && can.onkeymap.deleteText(target, target.selectionStart, 1) }),
}, },
insert: { insert: {
Escape: shy("退出编辑", function(event, can) { can.onkeymap._normal(can), can.ui.current._keylist = [] }), Escape: shy("退出编辑", function(can) { can.onkeymap._normal(can), can.ui.current._keylist = [] }),
ArrowUp: shy("光标上移", function(can, target) { can.onkeymap.cursorUp(can, target) }), ArrowUp: shy("光标上移", function(can, target) { can.onkeymap.cursorUp(can, target) }),
ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }), ArrowDown: shy("光标下移", function(can, target) { can.onkeymap.cursorDown(can, target) }),
Backspace: shy("删除字符", function(event, can, target) { if (target.selectionStart > 0 || !can.current.prev()) { return } can.onkeymap.prevent(event) Backspace: shy("删除字符", function(event, can, target) { if (target.selectionStart > 0 || !can.current.prev()) { return } can.onkeymap.prevent(event)

View File

@ -1,178 +1,73 @@
(function() { const RECOVER_STORE = "recover:" Volcanos(chat.ONIMPORT, {
Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireModules(can, ["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() { _init: function(can, msg, cb) { can.page.requireModules(can, ["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() {
var item = can.base.Obj(msg.TableDetail()); item.hash = item.hash||can.Option(mdb.HASH)||"only", can.onmotion.clear(can) if (can.Option(mdb.HASH) || can.Option("args0")) { var item = can.base.Obj(msg.TableDetail()); item.hash = item.hash||can.Option(mdb.HASH)||can.Option("args0")||"current"
if (item.type == html.LAYOUT) { can.onimport._layout(can, item) } else { can.onimport._connect(can, item, can._output) } can.onimport.layout(can) can.onimport._connect(can, item, can._output)
can.sup.onexport.link = function() { return can.misc.MergePodCmd(can, {pod: can.ConfSpace(), cmd: can.ConfIndex(), hash: item.hash}) } } else {
can.sup.onexport.title(can, item.name||item.type), can.base.isFunc(cb) && cb(msg), can.onappend._status(can), can.onkeymap._build(can) can.ui = can.onappend.layout(can), can.onimport._project(can, msg, can.db.hash)
} cb && cb(msg)
}) }, }) },
_layout: function(can, item) { _project: function(can, msg, hash) { msg.Table(function(value) {
function connect(item, output, tabs) { can.run(can.request({}, item), [item.hash], function(msg) { value.nick = `${value.hash}(${value.name||value.type||"ish"})`, value._select = value.hash == hash[0]
can.core.Item(msg.TableDetail(), function(key, value) { item[key] = value }) can.onimport.item(can, value, function(event, item, show, target) {
can.onappend._status(can), can.onimport._connect(can, item, output, tabs) can.onimport.tabsCache(can, can.request(), value.hash, value, target, function() {
}, true); return output } value._term = can.onimport._connect(can, value, can.ui.content)
function show(list, target, root, tabs) { root = root||target, can.core.List(list, function(item) { })
if (item.type.indexOf(html.LAYOUT) == 0) { })
show(item.list, can.page.Append(can, target, [item.type])._target, root, tabs)._root = root }) },
} else { _connect: function(can, item, target, text) {
connect(item, can.page.Append(can, target, [html.OUTPUT])._target, tabs)._root = root var term = new Terminal({fontSize: html.CODE_FONT_SIZE, tabStopWidth: 4, cursorBlink: true, theme: can.onimport._theme(can, item)}); term._item = item
} term.onTitleChange(function(title) { can.onexport.title(can, term, title) }), can.onexport.title(can, term, item.nick)
}); return target }
var main, output = can._output; can.core.List(can.base.Obj(item.text), function(item) {
if (item.type.indexOf(html.LAYOUT) == 0) { var tabs = can.onimport._tabs(can, item, {})
var target = show(item.list, can.page.insertBefore(can, [item.type], can._status), null, tabs); target._tabs = tabs, tabs._output = target
if (item.type.indexOf(html.HIDE) == -1) { main = target }
} else {
var target = connect(item, output||can.page.insertBefore(can, [html.OUTPUT], can._status)); output = null
main = main||target
}
}), main && can.onaction.select(can, main)
},
_tabs: function(can, item, output) { if (output != output._root && output._root) { return output._tabs = output._root._tabs }
var tabs = can.onimport.tabs(can, [{name: item.name||item.type||item.hash}], function() {
can.onmotion.delay(can, function() { var output = tabs._output; can.onaction.select(can, output._root||output) })
}, function() { can.onaction.delete(can, tabs._output) }); return tabs._output = output, output._tabs = tabs
},
_theme: function(can, item) { return can.base.Obj(item.theme)||(
can.getHeaderTheme() == html.LIGHT? {background: cli.WHITE, foreground: cli.BLACK, cursor: cli.BLUE}:
can.getHeaderTheme() == html.DARK? {foreground:"silver", cursor: "silver"}:
can.getHeaderTheme() == chat.BLACK? {background: "#061c3c9e", foreground:cli.WHITE, cursor: cli.WHITE}:
{background: "#d5cfcf3b", foreground: cli.BLACK, cursor: cli.BLUE}
) },
_connect: function(can, item, output, tabs, text) {
var term = new Terminal({fontSize: html.CODE_FONT_SIZE, tabStopWidth: 4, cursorBlink: true, theme: can.onimport._theme(can, item)})
term._item = item, term._output = output, output._term = term, output._tabs || (tabs? (output._tabs = tabs): can.onimport._tabs(can, item, output))
var fitAddon = new FitAddon.FitAddon(); term.loadAddon(fitAddon), term._fit = fitAddon, can.onmotion.delay(can, function() { fitAddon.fit() })
term.onTitleChange(function(title) { can.onexport.title(can, term, title) }), can.onexport.title(can, term, item.name)
term.onResize(function(size) { can.onimport._resize(can, term, size) }) term.onResize(function(size) { can.onimport._resize(can, term, size) })
term.onData(function(data) { can.onimport._input(can, term, data) }) term.onData(function(data) { can.onimport._input(can, term, data) })
term.onCursorMove(function() { can.onexport.term(can, term) }) term.onCursorMove(function() { can.onexport.term(can, term) })
var fitAddon = new FitAddon.FitAddon(); term.loadAddon(fitAddon), term._fit = fitAddon, can.onmotion.delay(can, function() { fitAddon.fit() })
term.loadAddon(new WebLinksAddon.WebLinksAddon()) term.loadAddon(new WebLinksAddon.WebLinksAddon())
can.onmotion.clear(can, output), term.open(output), term.focus() can.onmotion.clear(can, target), term.open(target), term.focus()
can.onengine.listen(can, chat.ONTHEMECHANGE, function() { term.selectAll(), can.onimport._connect(can, item, output, tabs, can.base.trimSuffix(term.getSelection(), lex.NL)) }) can.onengine.listen(can, chat.ONTHEMECHANGE, function() { term.selectAll(), can.onimport._connect(can, item, target, can.base.trimSuffix(term.getSelection(), lex.NL)) })
can.page.style(can, output, html.BACKGROUND_COLOR, term._publicOptions.theme.background||cli.BLACK) can.page.style(can, target, html.BACKGROUND_COLOR, term._publicOptions.theme.background||cli.BLACK)
can.current = term return can.db[item.hash] = term
output.onclick = function() { output._tabs._current = output, term.focus(), can.onexport.term(can, term) },
can.current = term _theme: function(can, item) { return can.base.Obj(item.theme)||(
can.page.Select(can, can._fields, html.DIV_OUTPUT, function(target) { can.page.ClassList.set(can, target, html.SELECT, target == output) }) can.getHeaderTheme() == html.LIGHT? {background: cli.WHITE, foreground: cli.BLACK, cursor: cli.BLUE}:
}; return can.db = can.db||{}, can.db[item.hash] = term can.getHeaderTheme() == html.DARK? {foreground: cli.SILVER, cursor: cli.SILVER}:
can.getHeaderTheme() == chat.BLACK? {background: "#061c3c9e", foreground:cli.WHITE, cursor: cli.WHITE}:
{background: "#d5cfcf3b", foreground: cli.BLACK, cursor: cli.BLUE}
) },
_resize: function(can, term, size) {
can.runAction(can.request({}, size, term._item), web.RESIZE, [], function(msg) {})
}, },
_resize: function(can, term, size) { can.runAction(can.request({}, size, term._item), web.RESIZE, [], function(msg) {
can.onexport.term(can, term); if (msg.IsErr()) { can.misc.Warn(msg.Result()) }
}) },
_input: function(can, term, data) { _input: function(can, term, data) {
can.runAction(can.request({}, {rows: term.rows, cols: term.cols}, term._item), html.INPUT, [btoa(data)], function(msg) { can.runAction(can.request({}, {rows: term.rows, cols: term.cols}, term._item), html.INPUT, [btoa(data)], function(msg) {})
if (msg.IsErr()) { can.misc.Warn(msg.Result()) }
}), can._output = term._output
}, },
input: function(can, msg, hash, text) { var arg = msg.detail.slice(1); arg = [hash||arg[0], text||arg[1]] input: function(can, msg, hash, text) { var arg = msg.detail.slice(1); arg = [hash||arg[0], text||arg[1]]
term = can.db[arg[0]]||can.current, can.onimport._input(can, term, arg[1]) term = can.db[arg[0]], can.onimport._input(can, term, arg[1])
}, },
grow: function(can, msg, hash, text) { var arg = msg.detail.slice(1); arg = [hash||arg[0], text||arg[1]] grow: function(can, msg, hash, text) { var arg = msg.detail.slice(1); arg = [hash||arg[0], text||arg[1]], term = can.db[arg[0]]
term = can.db[arg[0]]||can.current; arg[1] == "~~~end~~~"? can.onaction.delete(can, term._output): term.write(arg[1]); msg.Option(ice.LOG_DISABLE, ice.TRUE) if (arg[1] == "~~~end~~~") { arg[0] == "current"? can.sup.onmotion._close({}, can.sup): can.sup.onimport._back(can.sup) } else { term.write(arg[1]) }
}, },
layout: function(can) { function show(target, height, width) { var list = can.page.SelectChild(can, target, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT)) layout: function(can) { can.ui.layout(can.ConfHeight(), can.ConfWidth(), 0, function() {
var h = height/list.length, w = width; if (can.page.ClassList.has(can, target, html.FLEX)) { h = height, w = width/list.length } if (target == can._fields) { h = height, w = width } can.core.Item(can.db, function(hash, term) { term._fit && term._fit.fit() })
can.core.List(list, function(target) { can.page.style(can, target, html.HEIGHT, h, html.WIDTH, w), can.page.ClassList.has(can, target, html.LAYOUT)? show(target, h, w): target._term && target._term._fit.fit() }) can.db.value && can.db.value._term && can.onexport.term(can, can.db.value._term)
} show(can._fields, can.ConfHeight(), can.ConfWidth()) }, }) },
})
Volcanos(chat.ONKEYMAP, {
_mode: {
normal: {
u: function(event, can) { can.onaction.split(event, can, html.FLOW) },
v: function(event, can) { can.onaction.split(event, can, html.FLEX) },
j: function(event, can) { can.onaction.selectSibling(can, html.FLOW) },
k: function(event, can) { can.onaction.selectSibling(can, html.FLOW, true) },
h: function(event, can) { can.onaction.selectSibling(can, html.FLEX, true) },
l: function(event, can) { can.onaction.selectSibling(can, html.FLEX) },
c: function(event, can) { can.onaction.tabnew(event, can) },
e: function(event, can) { can.user.input({target: can._output._tabs}, can, [mdb.NAME], function(list) { can.onexport.title(can, can._output._term, list[0]) }) },
n: function(event, can) { can._output._tabs.nextSibling && can._output._tabs.nextSibling.click() },
p: function(event, can) { can._output._tabs.previousSibling && can._output._tabs.previousSibling.click() },
s: function(event, can) { can.onaction.sess(event, can) },
t: function(event, can) { can.user.input({target: can._output._tabs}, can, [ctx.INDEX, ctx.ARGS], function(list, data) { can.onimport.tool(can, [data], function(sub) {
sub.select(), sub.onexport.record = function(_, value) { can.onimport._input(can, can._output._term, value+lex.NL) }
}, can._fields) }) },
f: function(event, can) {
var input = can.user.input({target: can._output._tabs}, can, [{type: mdb.TEXT, name: nfs.FILE, select: function(item) {
var ls = item.split(nfs.DF); switch (ls[0]) {
case "tabs": can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { target.innerText == ls[1] && target.click() }); break
case web.LAYOUT: can.Option(mdb.HASH, ls[1]), can.Update(); break
case ctx.INDEX: can.onimport.tool(can, [ls[1]], function(sub) { sub.select() }); break
case ssh.SHELL: can.onaction.tabnew(can.request({}, {_handle: ice.TRUE, type: ls[1]}), can); break
default: can.onimport._input(can, can._output._term, item+lex.NL)
} input.cancel()
}, run: function(event, cmds, cb) { can.run(event, cmds, function(msg) { var _msg = can.request()
function push(type, name) { _msg.Push(nfs.FILE, can.core.List(arguments).join(nfs.DF)) }
can.page.Select(can, can._action, [html.DIV_TABS, html.SPAN_NAME], function(target) { push("tabs", target.innerText) })
_msg.Copy(msg), can.core.Item(can.onengine.plugin.meta, function(key, value) { push(ctx.INDEX, "can."+key) }), cb(_msg)
}) }}], function(list) {})
},
Escape: function(can) { can.onmotion.clearFloat(can), can._output.click() },
},
}, _engine: {},
}) })
Volcanos(chat.ONACTION, { Volcanos(chat.ONACTION, {
tabnew: function(event, can) { can.Update(event, [ctx.ACTION, mdb.CREATE], function(msg) { can.Update(event, [msg.Result()], function(msg) { create: function(event, can) { can.user.input(event, can, [mdb.TYPE, mdb.NAME, mdb.TEXT], function(data) {
can.onaction.select(can, can._output = can.page.insertBefore(can, [html.OUTPUT], can._status)), can.onimport._init(can, msg) can.runAction(can.request({}, data), mdb.CREATE, [], function(msg) { var hash = msg.Result()
}) }) }, can.run(event, [hash], function(msg) { var _msg = can.request(); _msg.Push(msg.TableDetail())
split: function(event, can, button) { can.Update(event, [ctx.ACTION, mdb.CREATE], function(msg) { can.Update(event, [msg.Result()], function(msg) { can.onimport._project(can, _msg, [hash])
if (can.page.ClassList.has(can, can._output.parentNode, button)) { var layout = can._output.parentNode } else { })
var layout = can.page.insertBefore(can, [{view: [[html.LAYOUT, button]]}], can._output); layout.appendChild(can._output)
} var root = can._output._root||layout, tabs = can._output._tabs; tabs._output = root, root._tabs = tabs
can._output._root = root, can._output = can.page.insertBefore(can, [html.OUTPUT], can._output.nextSibling, layout)
can._output._root = root, can._output._tabs = tabs, can.onimport._init(can, msg), can.onmotion.delay(can, function() { can._output.click() })
}) }) },
delete: function(can, output) {
if (can.page.Select(can, can._fields, html.DIV_OUTPUT).length == 1) { can.onmotion.delay(can, function() {
var args = can.Conf(ctx.ARGS)
if (args && args.length > 0) {
can.sup.onaction.close({}, can.sup)
} else {
can.sup.onimport._back(can.sup)
}
}) }
if (output == can.sup._output) { can.onmotion.clear(can, output) } else { while (output && output.parentNode.children.length == 1) { output = output.parentNode }
var next = output.parentNode; can.page.Remove(can, output), can.onmotion.delay(can, function() { can.page.Select(can, next, html.DIV_OUTPUT, function(target) { target.click() }) })
} can.onimport.layout(can)
},
select: function(can, output) { can.page.SelectChild(can, can._fields, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT), function(target) { can.onmotion.hidden(can, target, target == output || target == output._root)
can.onmotion.delay(can, function() {
output._tabs._current? output._tabs._current.click(): (target.click(), can.page.SelectOne(can, target, html.DIV_OUTPUT, function(target) { target.click() }))
can.page.Select(can, target, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT), function(target) { target._term && target._term._fit.fit() })
}) })
}) }, }) },
selectSibling: function(can, layout, prev) { var key = prev? "previousSibling": "nextSibling" remove: function(event, can) { var item = event._msg.Option("_item")
var output = can._output; while ((!output[key] || !can.page.ClassList.has(can, output.parentNode, layout)) && output != can._fields) { output = output.parentNode } can.runAction(event, mdb.REMOVE, [], function(msg) {
if (can.page.ClassList.has(can, output.parentNode, layout) && output[key]) { var value = item._item; value._tabs && value._tabs._close(), can.page.Remove(can, item)
can.page.SelectOne(can, output[key], html.DIV_OUTPUT, function(target) { target.click() })||output[key].click() })
}
}, },
sess: function(event, can) { can.user.input({target: can._legend}, can, [mdb.NAME], function(list) {
can.runAction({}, mdb.CREATE, [mdb.TYPE, html.LAYOUT, mdb.NAME, list[0], mdb.TEXT, can.base.Format(can.onexport.sess(can))], function(msg) {
can.user.toastSuccess(can, can.user.trans(can, nfs.SAVE)+lex.SP+msg.Result())
}, true)
}) },
hidden: function(can) { can.page.Select(can, can._fields, "div.output,div.layout", function(target) {
target == can.sup._output? can.page.insertBefore(can, target, can._status): can.page.Remove(can, target)
}) },
}) })
Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"], Volcanos(chat.ONEXPORT, {list: [mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"],
term: function(can, term) { item = term._item term: function(can, term) { item = term._item, can.onexport.title(can, term, item.nick||item.name||item.type)
can.core.List(can.onexport.list, function(key) { can.core.List(can.onexport.list, function(key) { if (key == mdb.TIME && !item[key]) { return } can.Status(key, can.base.getValid(item[key], term[key], term.buffer.active[key], "")+"") })
if (key == mdb.TIME && !item[key]) { return } can.core.List([mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME], function(key) { if (key == mdb.TIME && !item[key]) { return } can.Status(key, item[key]||"") })
can.Status(key, can.base.getValid(item[key], term[key], term.buffer.active[key], "")+"")
})
can.core.List([mdb.TIME, mdb.HASH, mdb.TYPE, mdb.NAME], function(key) {
if (key == mdb.TIME && !item[key]) { return }
can.Status(key, item[key]||"")
})
}, },
sess: function(can) { return can.page.Select(can, can._action, html.DIV_TABS, function(target) { function show(target) { title: function(can, term, title) { can.Status(mdb.NAME, title), can.sup.onexport.title(can.sup, title) },
var name = can.page.SelectOne(can, target._tabs, html.SPAN_NAME).innerText
if (can.page.ClassList.has(can, target, html.LAYOUT)) {
return {type: target.className, name: name, list: can.page.SelectChild(can, target, can.page.Keys(html.DIV_OUTPUT, html.DIV_LAYOUT), function(target) { return show(target) })}
} else { var item = target._term._item; return {type: item.type, name: name, text: item.text, hash: item.hash} }
} return show(target._output) }) },
title: function(can, term, title) { term && term._output && can.page.Modify(can, can.page.SelectOne(can, term._output._tabs, html.SPAN_NAME), title), can.Status(mdb.NAME, title), can.sup.onexport.title(can.sup, title) },
}) })
})()

View File

@ -26,7 +26,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
} }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) { } }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) {
var item = can.onimport.item(can, {nick: task.name+nfs.DF+task.text}, function() { can.onmotion.delay(can, function() { var item = can.onimport.item(can, {nick: task.name+nfs.DF+task.text}, function() { can.onmotion.delay(can, function() {
can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task), can.onimport._display(can, task), can.onimport.layout(can) can.onmotion.select(can, can.ui.content, html.TD, target.parentNode), can.onimport._profile(can, task), can.onimport._display(can, task), can.onimport.layout(can)
}) }, null, can.ui.project); task._target = target, target.onclick = function(event) { item.click() }, can.list[can.core.Keys(task.space, task.zone, task.id)] = target }) }); task._target = target, target.onclick = function(event) { item.click() }, can.list[can.core.Keys(task.space, task.zone, task.id)] = target
}} }}
}), }),
} }, } },

View File

@ -31,7 +31,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) {
var item = can.onimport.item(can, {name: groups}, function(event) { can.ui.group = target var item = can.onimport.item(can, {name: groups}, function(event) { can.ui.group = target
can.misc.SearchHash(can, groups, can.OptionPid()), can.Status(svg.GROUP, groups), can.onaction.show(event, can) can.misc.SearchHash(can, groups, can.OptionPid()), can.Status(svg.GROUP, groups), can.onaction.show(event, can)
can.core.List([svg.FONT_SIZE, svg.STROKE_WIDTH, svg.STROKE, svg.FILL], function(key) { can.Action(key, target.Value(key)||key) }) can.core.List([svg.FONT_SIZE, svg.STROKE_WIDTH, svg.STROKE, svg.FILL], function(key) { can.Action(key, target.Value(key)||key) })
}, function(event) { return {meta: can.onaction, list: can.onaction.menu_list} }, can.ui.project); target._item = item }, function(event) { return {meta: can.onaction, list: can.onaction.menu_list} }); target._item = item
groups == can.db.hash[0] && can.onmotion.delay(can, function() { item.click() }) groups == can.db.hash[0] && can.onmotion.delay(can, function() { item.click() })
}, },
_profile: function(can, target) { if (!can.ui.profile) { return } _profile: function(can, target) { if (!can.ui.profile) { return }

View File

@ -34,7 +34,7 @@ Volcanos(chat.ONIMPORT, {
if (index < can.db.begin || index >= can.db.begin+limit) { if (index < can.db.begin || index >= can.db.begin+limit) {
can.onimport.page(can, can.db.list, can.db.begin = index-index%limit) can.onimport.page(can, can.db.list, can.db.begin = index-index%limit)
} }
}, function() {}, can.ui.project); item._target = target, _target = can.base.isIn(item.path, can.db.hash[0]||can.Option(nfs.PATH)+can.Option(nfs.FILE))? target: _target||target }); item._target = target, _target = can.base.isIn(item.path, can.db.hash[0]||can.Option(nfs.PATH)+can.Option(nfs.FILE))? target: _target||target
if (can.isCmdMode() && item.path == can.misc.localStorage(can, [can.ConfIndex, "last"])) { if (can.isCmdMode() && item.path == can.misc.localStorage(can, [can.ConfIndex, "last"])) {
can.Action(html.HEIGHT, html.HIDE), can.onmotion.hidden(can, can.ui.display) can.Action(html.HEIGHT, html.HIDE), can.onmotion.hidden(can, can.ui.display)
_target = target, can.onmotion.delay(can, function() { can.onaction.full({}, can) }) _target = target, can.onmotion.delay(can, function() { can.onaction.full({}, can) })

View File

@ -255,9 +255,11 @@ Volcanos(chat.ONACTION, {list: ["刷新数据",
} else { } else {
can.onaction._close(event, can), can.onexport.close(can) can.onaction._close(event, can), can.onexport.close(can)
} }
}, _close: function(event, can) { },
_close: function(event, can) {
can.onengine.signal(can, "onremove", can.request(event, {query: can.page.getquery(can, can._target)})) can.onengine.signal(can, "onremove", can.request(event, {query: can.page.getquery(can, can._target)}))
can.page.Remove(can, can._target) }, can.page.Remove(can, can._target)
},
clear: function(event, can) { can.onmotion.clear(can, can._output) }, clear: function(event, can) { can.onmotion.clear(can, can._output) },
actions: function(event, can) { can.onmotion.toggle(can, can._action) }, actions: function(event, can) { can.onmotion.toggle(can, can._action) },
help: function(event, can) { help: function(event, can) {

View File

@ -5,8 +5,8 @@ Volcanos(chat.ONIMPORT, {
}, },
_tabs: function(can, msg) { can.onappend.style(can, web.STUDIO), can.onmotion.clear(can, can._action) _tabs: function(can, msg) { can.onappend.style(can, web.STUDIO), can.onmotion.clear(can, can._action)
var margin = html.PLUGIN_MARGIN*2 var margin = html.PLUGIN_MARGIN*2
msg.Table(function(value, index) { msg.Table(function(value, index) { value.nick = can.user.trans(can, value.index.split(nfs.PT).pop(), value.help)
value.nick = can.user.trans(can, value.index.split(nfs.PT).pop(), value.help) value._select == index == 0
var target = can.onimport.item(can, value, function() { var target = can.onimport.item(can, value, function() {
if (value._plugin) { return can.onmotion.select(can, can._output, html.FIELDSET, value._plugin._target) } if (value._plugin) { return can.onmotion.select(can, can._output, html.FIELDSET, value._plugin._target) }
can.onappend.plugin(can, value, function(sub) { value._plugin = sub can.onappend.plugin(can, value, function(sub) { value._plugin = sub
@ -14,7 +14,7 @@ Volcanos(chat.ONIMPORT, {
sub.onexport.output = function() { sub.onimport.size(sub, can.ConfHeight()-margin, can.ConfWidth()-margin, false) } sub.onexport.output = function() { sub.onimport.size(sub, can.ConfHeight()-margin, can.ConfWidth()-margin, false) }
target.oncontextmenu = function(event) { sub._legend.onclick(event) }, can.onmotion.hidden(can, sub._legend) target.oncontextmenu = function(event) { sub._legend.onclick(event) }, can.onmotion.hidden(can, sub._legend)
}, can._output) }, can._output)
}, null, can._action); index == 0 && target.click(), can.onappend.style(can, "cmds", target) }, null, can._action); can.onappend.style(can, "cmds", target)
}), can.onappend._action(can, null, null, null, true) }), can.onappend._action(can, null, null, null, true)
}, },
_full: function(can, msg) { _full: function(can, msg) {
@ -26,7 +26,7 @@ Volcanos(chat.ONIMPORT, {
can.onappend.plugin(can, value, function(sub) { can.onappend.plugin(can, value, function(sub) {
sub.onexport.output = function() { sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth()-can.ui.project.offsetWidth) } sub.onexport.output = function() { sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth()-can.ui.project.offsetWidth) }
}, can.ui.content) }, can.ui.content)
}, function() {}); index == 0 && target.click() }); index == 0 && target.click()
}) })
}, },
}) })

View File

@ -115,7 +115,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
return {text: [item.nick||item.name||item.zone||item.sess, "", html.NAME], className: html.NAME} return {text: [item.nick||item.name||item.zone||item.sess, "", html.NAME], className: html.NAME}
}, },
_menu: function(event, can, item, cbs, target) { target = target||event.currentTarget _menu: function(event, can, item, cbs, target) { target = target||event.currentTarget
if (can.base.isFunc(cbs)) { var menu = cbs(event, target, item); if (menu) { return can.user.carteRight(event, can, menu.meta, menu.list, menu) } } if (can.base.isFunc(cbs)) { var menu = cbs(event, item, target); if (menu) { return can.user.carteRight(event, can, menu.meta, menu.list, menu) } }
can.user.carteItem(event, can, item) can.user.carteItem(event, can, item)
}, },
_item: function(can, item, cb, cbs) { _item: function(can, item, cb, cbs) {
@ -124,7 +124,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
].concat(item._label||[], [ ].concat(item._label||[], [
item.action && {icon: "bi bi-three-dots", onclick: function(event) { can.onimport._menu(event, can, item, cbs) }}, item.action && {icon: "bi bi-three-dots", onclick: function(event) { can.onimport._menu(event, can, item, cbs) }},
]), _init: function(target) { ]), _init: function(target) {
can.ui[item.path] = target target._item = item, item._item = target, can.ui[item.path] = target
item._select && can.onmotion.delay(can, function() { target.click() }) item._select && can.onmotion.delay(can, function() { target.click() })
}, onclick: function(event) { }, onclick: function(event) {
cb(event) cb(event)
@ -136,7 +136,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
return can.page.Append(can, _target||can.ui.project||can._output, [can.onimport._item(can, item, function(event) { var target = event.currentTarget return can.page.Append(can, _target||can.ui.project||can._output, [can.onimport._item(can, item, function(event) { var target = event.currentTarget
can.onmotion.select(can, target.parentNode, html.DIV_ITEM, target) can.onmotion.select(can, target.parentNode, html.DIV_ITEM, target)
can.onengine.signal(can, "onproject", can.request(event, {type: "item", query: can.page.getquery(can, can._fields)+","+item.path})) can.onengine.signal(can, "onproject", can.request(event, {type: "item", query: can.page.getquery(can, can._fields)+","+item.path}))
var show = target._list && can.onmotion.toggle(can, target._list); cb(event, item, show, target) var show = target._list && can.onmotion.toggle(can, target._list);
if (show === false) { return } cb(event, item, show, target)
}, cbs)])._target }, cbs)])._target
}, },
_itemselect: function(can, target) { _itemselect: function(can, target) {
@ -182,9 +183,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [ return {view: [[html.TABS, tabs.type, tabs.role, tabs.status]], title: tabs.title||tabs.text, list: [
can.onimport._icons(can, tabs), can.onimport._nick(can, tabs), {icon: mdb.DELETE, onclick: function(event) { tabs._target._close(), can.onkeymap.prevent(event) }}, can.onimport._icons(can, tabs), can.onimport._nick(can, tabs), {icon: mdb.DELETE, onclick: function(event) { tabs._target._close(), can.onkeymap.prevent(event) }},
], onclick: function(event) { ], onclick: function(event) {
can.onmotion.delay(can, function() { can.onmotion.delay(can, function() { can.onmotion.scrollIntoView(can, tabs._target) })
can.onmotion.scrollIntoView(can, tabs._target)
})
if (can.page.ClassList.has(can, tabs._target, html.SELECT)) { return } if (can.page.ClassList.has(can, tabs._target, html.SELECT)) { return }
can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs) can.onmotion.select(can, action, html.DIV_TABS, tabs._target), can.base.isFunc(cb) && cb(event, tabs)
}, oncontextmenu: function(event) { var target = tabs._target, _action = can.page.parseAction(can, tabs) }, oncontextmenu: function(event) { var target = tabs._target, _action = can.page.parseAction(can, tabs)
@ -194,7 +193,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
"Close Other", function(event) { target.click(), can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || target._close() }) }, "Close Other", function(event) { target.click(), can.page.SelectChild(can, action, html.DIV_TABS, function(target) { target == tabs._target || target._close() }) },
"Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) { "Rename Tabs", function(event) { can.user.input(event, can, [mdb.NAME], function(list) {
can.page.SelectOne(can, target, html.SPAN, function(target) { can.page.Modify(can, target, list[0]||tabs.name) }) can.page.SelectOne(can, target, html.SPAN, function(target) { can.page.Modify(can, target, list[0]||tabs.name) })
// can.onexport.tabs && can.onexport.tabs(can)
}) }, menu.meta, }) }, menu.meta,
), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta)), _action), function(event, button, meta) { ), ["Close", "Close Other", "Rename Tabs", ""].concat(can.base.getValid(menu.list, can.core.Item(menu.meta)), _action), function(event, button, meta) {
(meta[button]||menu)(can.request(event, tabs), button, meta) (meta[button]||menu)(can.request(event, tabs), button, meta)
@ -210,7 +208,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target, cb) {
}))._target }, }))._target },
tabsCache: function(can, msg, key, value, target, cb) { if (value._tabs) { return value._tabs.click() } tabsCache: function(can, msg, key, value, target, cb) { if (value._tabs) { return value._tabs.click() }
value._tabs = can.onimport.tabs(can, [value], function() { can.onexport.hash(can, key), can.Status(value), can.db.value = value value._tabs = can.onimport.tabs(can, [value], function() { can.onexport.hash(can, key), can.Status(value), can.db.value = value
can.page.ClassList.has(can, target, html.SELECT) || can.onmotion.delay(can, function() { target.click() }) can.page.isSelect(target) || can.onmotion.delay(can, function() { target.click() })
if (can.onmotion.cache(can, function() { return key }, can.ui.content, can.ui.profile, can.ui.display)) { return can.onimport.layout(can) } if (can.onmotion.cache(can, function() { return key }, can.ui.content, can.ui.profile, can.ui.display)) { return can.onimport.layout(can) }
if (cb && cb()) { return } if (cb && cb()) { return }
if (msg.Append(ctx.INDEX)) { msg.Table(function(value, index) { if (msg.Append(ctx.INDEX)) { msg.Table(function(value, index) {
@ -272,7 +270,9 @@ Volcanos(chat.ONEXPORT, {
action_value: function(can, key, def) { var value = can.Action(key); return can.base.isIn(value, ice.AUTO, key, undefined)? def: value }, action_value: function(can, key, def) { var value = can.Action(key); return can.base.isIn(value, ice.AUTO, key, undefined)? def: value },
tabs: function(can) {}, tabs: function(can) {},
tool: function(can) { can.misc.sessionStorage(can, [can.ConfIndex(), "tool"], JSON.stringify(can.page.Select(can, can._status, html.LEGEND, function(target) { return target._meta }))) }, tool: function(can) { can.misc.sessionStorage(can, [can.ConfIndex(), "tool"], JSON.stringify(can.page.Select(can, can._status, html.LEGEND, function(target) { return target._meta }))) },
hash: function(can, hash) { hash = typeof hash == code.STRING? hash.split(":"): hash, can.misc.SearchHash(can, hash), can.misc.localStorage(can, [can.ConfSpace()||can.misc.Search(can, ice.POD), can.ConfIndex(), "hash"], hash) }, hash: function(can, hash) { hash = typeof hash == code.STRING? hash.split(":"): hash || can.core.Item(can.Option(), function(key, value) { return value||"" })
can.misc.SearchHash(can, hash), can.misc.localStorage(can, [can.ConfSpace()||can.misc.Search(can, ice.POD), can.ConfIndex(), "hash"], hash)
},
session: function(can, key, value) { return can.misc[can.user.isWebview? "localStorage": "sessionStorage"](can, [can.Conf(ctx.INDEX), key, location.pathname].join(":"), value == ""? "": JSON.stringify(value)) }, session: function(can, key, value) { return can.misc[can.user.isWebview? "localStorage": "sessionStorage"](can, [can.Conf(ctx.INDEX), key, location.pathname].join(":"), value == ""? "": JSON.stringify(value)) },
table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } var res = [msg.append && msg.append.join(mdb.FS)] table: function(can) { var msg = can._msg; if (msg.Length() == 0) { return } var res = [msg.append && msg.append.join(mdb.FS)]
msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) }) msg.Table(function(line, index, array) { res.push(can.core.Item(line, function(key, value) { return value }).join(ice.FS)) })