Skip to content

Commit 3b65d51

Browse files
save file
1 parent f608123 commit 3b65d51

1 file changed

Lines changed: 57 additions & 8 deletions

File tree

utils/misc/nodejs-terminal/nodejs-terminal.html

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,10 @@
167167
{cursor:pointer;
168168
content:url(data:image/png;base64,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);
169169
}
170+
#snippet-console
171+
{cursor:pointer;
172+
content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAA0lBMVEVHcEwaHzgSFSsKDSQXHDQWGzIXHDIKDyMaHzcBAhEXHDMTFy0WHDMeJj8RFSoQFCcPEyYTGC0RFSkTGC0aHzcmLkcaIDgWGjIWHDIUGC8LDiInMEcXHDQWGzEZHjYZIDYbITkUGzMlLkYrMkoaIjkRFSscITgmMEcbITkpMEgjLEMUGzIlLUUoL0gVGC0VGy4mL0YbITktNUwlLEMXHjYeJDtnanjj4+QhKD9MUGOLjZi7vMJfY3Lt7e04PVBITGDS09ZOU2Xr6+tzdoQ9QlVKTmGtyqSqAAAAMXRSTlMA/FIPzrNWCfcF0ZzLnSJ8cpKMqP3Z8KPEuoGO2L7lNuIWzusfQWSM+/JxLMS3ahq7XSnkAwAAAVBJREFUKM+t0tdywjAQBVBjW7gJ907vooUIFxxKSP3/Xwo2dmZYQvKS+6JyRiPNahnmP8Jd0i9H7loFReYxxrzMF5EV4YolRC/JojwJkq6PewXGdFMkU8DdRq6b9w+n2ZxOHzMTsJaffdqmjXwxT3TADxUL8+Z0mUwA1+2SucH5bsICHosVL4fOTBwD7rolSwt1tHQXgNVOxf01N+iogNetLIs/t6mzchprp9WHNcev+91um0bDVX3U80HNGSE4vbwdjyka5e+ANWUYK3k+7PYHrztpOJl386MGjWMaRbNhXnLjhrXiT5IzRhHVbljVUY/QJMpID+nqDw0jqayBfZNVpbs9JQhgg/01TK2MbVezGvme1Ziyx1wLiSIVbZEQ0u6QcpdW3LawZXimZVqKYiqaDNj3gtDQlTDUQlPTdQxYRG0e8S0c+H4gy8gFfCd/8BdhCEKPCPsRBQAAAABJRU5ErkJggg==);
173+
}
170174

171175
#hldr
172176
{padding:10px;border:2px solid lightgray;box-sizing:border-box;flex:1;background:hsl(45,86%,98%)}
@@ -175,6 +179,8 @@
175179
{height:100%}
176180

177181

182+
#icons
183+
{display:flex;align-items:center;gap:5px}
178184

179185
.icon
180186
{width:32px;height:32px;border:1px solid gray;border-radius:3px;box-sizing:border-box;cursor:pointer}
@@ -193,7 +199,7 @@
193199

194200

195201
<misc-hdr component=grp>
196-
<img slot=title class=title src='images/nodejs-terminal.png' style='top:-15px;height:80px' alt='Node.js Terminal'>
202+
<img slot=title class=title src='images/nodejs-terminal.png' style='top:-25px;height:80px' alt='Node.js Terminal'>
197203
<time slot=date datetime=2026-04-22>
198204
22 Apr 2026
199205
</time>
@@ -214,8 +220,12 @@
214220
<div id=size></div>
215221
</div>
216222

217-
<img id=niframe title=iframe>
218-
<img id=snippet-editor title=editor>
223+
<div id=icons>
224+
<img id=niframe title=iframe class=icon>
225+
<img id=snippet-editor title=editor class=icon>
226+
<img id=snippet-console title=snippet-console class=icon>
227+
</div>
228+
219229
</div>
220230

221231
<div id=hldr>
@@ -264,6 +274,7 @@
264274

265275
$('#niframe').onclick = btn.niframe;
266276
$('#snippet-editor').onclick = btn['snippet-editor'];
277+
$('#snippet-console').onclick = btn['snippet-console'];
267278

268279
$('#hldr').style.background = theme.light.background;
269280

@@ -301,13 +312,13 @@
301312
btn['snippet-editor'] = async function(){
302313

303314
var viewport = await vm.new();
304-
viewport.pos({x:200,y:200});
315+
viewport.pos({x:225,y:200});
305316

306317
var node = document.createElement('snippet-editor');
307318
node.toggleAttribute('component',true);
308319
node.setAttribute('web-editor','height=100%');
309320
viewport.body.append(node);
310-
var mod2 = mod.create({mod,name:'snippet-editor'});
321+
var mod2 = mod.create({mod,name:'snippet-editor'});
311322
var result = await mod.build({root:node,mod:mod2});
312323
var snippet = mod2['snippet-editor'];
313324
await mod2.auto();
@@ -316,9 +327,9 @@
316327
var node = document.createElement('webcontainer-fs');
317328
node.setAttribute('component','page');
318329
viewport.body.append(node);
319-
var mod2 = mod.create({mod,name:'webcontainer-fs'});
330+
var mod2 = mod.create({mod,name:'webcontainer-fs'});
320331
var result = await mod.build({root:node,mod:mod2});
321-
var wcfs = mod2['webcontainer-fs'];
332+
var wcfs = mod2['webcontainer-fs'];
322333
wcfs.initmod({filemod:snippet.filemod,ext,$,menu,log,debug,
323334
webcontainer,
324335
source:snippet.source,complete:snippet.complete});
@@ -329,6 +340,33 @@
329340
}//snippet-editor
330341

331342

343+
btn['snippet-console'] = async function(){
344+
345+
var viewport = await vm.new();
346+
viewport.pos({x:250,y:200,w:850,h:1100});
347+
348+
var attrs = {component:true,'v2.0':true,'web-editor':'fullsize=false',exportparts:"root: inner-label"};
349+
var opts = {par:viewport.body};
350+
var snippet = await mod.component('snippet-console',attrs,opts);
351+
352+
snippet.css.insert_rule([':host {height:100%;}','#root {height:100%}']);
353+
snippet.editor.css.insert_rule([':host {flex:1}','#root {height:100%}']);
354+
355+
snippet.ctx = {snippet,webcontainer,viewport,vm};
356+
357+
358+
var attrs = {component:'page'};
359+
var opts = {par:viewport.body,auto:false};
360+
var wcfs = await mod.component('webcontainer-fs',attrs,opts);
361+
wcfs.initmod({filemod:snippet.filemod,ext,$,menu,log,debug,
362+
webcontainer,
363+
source:snippet.source,complete:snippet.complete});
364+
await wcfs.init();
365+
wcfs.initdom();
366+
367+
}//snippet-console
368+
369+
332370
btn.test = async function(){console.log('test');
333371

334372
var list = await webcontainer.fs.readdir('/',{withFileTypes:true});
@@ -562,7 +600,18 @@
562600

563601
mod.stack.complete;
564602

565-
webcontainer.on('server-ready',(port,url)=>term.write('server-ready :'+url+'-'+port));
603+
604+
webcontainer.on('server-ready',(port,url)=>{
605+
console.log('server-ready',url,port);
606+
term.write('server-ready :'+url+' --- '+port);
607+
608+
});
609+
webcontainer.on('port',(port,type,url)=>{
610+
console.log(port,type,url)
611+
term.write('port :'type+' --- '+url+' --- '+port);
612+
613+
});
614+
566615

567616
await webcontainer.mount(files);
568617
term.write('spawn jsh ...\r\n')

0 commit comments

Comments
 (0)