Skip to content

Commit c35d348

Browse files
save file
1 parent 2a29fa6 commit c35d348

1 file changed

Lines changed: 62 additions & 2 deletions

File tree

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

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,30 @@
681681

682682
});
683683

684+
685+
686+
term.parser.registerOscHandler(7, (data) => {
687+
console.log('osc-handler7 :',data);
688+
/*
689+
// data will look like: "file://localhost/home/project/src"
690+
try {
691+
const url = new URL(data);
692+
const newCwd = url.pathname;
693+
694+
console.log('CWD Changed to:', newCwd);
695+
696+
// You can now update your UI state or breadcrumbs here
697+
updateMyBreadcrumbs(newCwd);
698+
} catch (e) {
699+
return false; // Let xterm handle it if it's malformed
700+
}
701+
return true; // We handled it
702+
*/
703+
704+
});
705+
706+
707+
684708
var fitAddon = new FitAddon();
685709
term.loadAddon(fitAddon);
686710
term.open(terminal);
@@ -691,6 +715,8 @@
691715
mod.stack.complete;
692716

693717

718+
719+
694720
webcontainer.on('server-ready',(port,url)=>{
695721
console.log('server-ready',url,port);
696722
term.writeln('server-ready :'+url+' --- '+port);
@@ -703,12 +729,46 @@
703729
});
704730

705731

706-
await webcontainer.mount(files);
732+
//await webcontainer.mount(files);
707733
term.write('spawn jsh ...\r\n')
708734
shell = await webcontainer.spawn('jsh');
709735

710736

711-
var output = new WritableStream({write(data){term.write(data)}});
737+
var output = new WritableStream({
738+
write(data){
739+
console.log(data);
740+
var str = data;
741+
str = str.replaceAll('\r','');
742+
var lines = str.split('\n');
743+
lines.forEach(line=>{
744+
745+
//console.log('Hex:', [...line].map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(' '));
746+
747+
if(line.startsWith('\x1b[J') && line.indexOf('\x1b[39m')!=-1){
748+
var i1;
749+
var i;
750+
i = line.indexOf('/');
751+
if(i!=-1){
752+
i1 = i;
753+
}
754+
i = line.indexOf('~/');
755+
if(i!=-1){
756+
i1 = i;
757+
}
758+
if(i1!==undefined){
759+
var i2 = line.indexOf('\x1b[39m');
760+
if(i1<i2){
761+
cwd = line.slice(i1,i2);
762+
console.log('[ cwd ]',cwd);
763+
}
764+
}
765+
}
766+
});
767+
768+
term.write(data);
769+
770+
}
771+
});
712772
shell.output.pipeTo(output);
713773

714774
var input = shell.input.getWriter();

0 commit comments

Comments
 (0)