UNPKG

homebridge-config-ui-x

Version:

A web based management, configuration and control platform for Homebridge.

9 lines (8 loc) 1.76 kB
import{a as k}from"./chunk-3XNLIEKF.js";import{a as z,b as A}from"./chunk-P5DRV4DP.js";import{a as l}from"./chunk-2QXNFD4L.js";import{M as n,g as r,ga as c,la as d,n as h}from"./chunk-QSPBB6EE.js";var f=r(z(),1),a=r(A(),1),p=r(k(),1);var $=(()=>{class t{$ws=d(l);term;io;fitAddon;webLinksAddon;resize;elementResize;pluginName;constructor(){}startTerminal(m,s={},u,w){this.pluginName=w,this.elementResize=u,this.io=this.$ws.connectToNamespace("log"),this.term=new f.Terminal(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new a.FitAddon,this.webLinksAddon=new p.WebLinksAddon,this.resize=new h,this.term.open(m.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.subscribe(()=>{this.term.reset(),this.io.socket.emit("tail-log",{cols:this.term.cols,rows:this.term.rows})}),this.io.socket.on("disconnect",()=>{this.term.write(` \r \rWebsocket failed to connect. Is the server running? \r \r`)}),this.resize.pipe(n(500)).subscribe(e=>{this.io.socket.emit("resize",e)}),this.io.socket.on("stdout",e=>{if(this.pluginName){let b=e.split(` \r`),o=!1;b.forEach(i=>{if(i){if(o)if(i.match(/36m\[.*?\]/))o=!1;else{this.term.write(`${i} \r`);return}i.includes(`36m[${this.pluginName}]`)&&(this.term.write(`${i} \r`),o=!0)}})}else this.term.write(e)}),this.term.onResize(e=>{this.resize.next(e)}),this.elementResize&&this.elementResize.pipe(n(100)).subscribe({next:()=>{this.fitAddon.fit()}})}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete()}static \u0275fac=function(s){return new(s||t)};static \u0275prov=c({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{$ as a};