|
681 | 681 |
|
682 | 682 | }); |
683 | 683 |
|
| 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 | + |
684 | 708 | var fitAddon = new FitAddon(); |
685 | 709 | term.loadAddon(fitAddon); |
686 | 710 | term.open(terminal); |
|
691 | 715 | mod.stack.complete; |
692 | 716 |
|
693 | 717 |
|
| 718 | + |
| 719 | + |
694 | 720 | webcontainer.on('server-ready',(port,url)=>{ |
695 | 721 | console.log('server-ready',url,port); |
696 | 722 | term.writeln('server-ready :'+url+' --- '+port); |
|
703 | 729 | }); |
704 | 730 |
|
705 | 731 |
|
706 | | - await webcontainer.mount(files); |
| 732 | + //await webcontainer.mount(files); |
707 | 733 | term.write('spawn jsh ...\r\n') |
708 | 734 | shell = await webcontainer.spawn('jsh'); |
709 | 735 |
|
710 | 736 |
|
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 | + }); |
712 | 772 | shell.output.pipeTo(output); |
713 | 773 |
|
714 | 774 | var input = shell.input.getWriter(); |
|
0 commit comments