UNPKG

homebridge-config-ui-x

Version:

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

13 lines (12 loc) 3.01 kB
import{a as g,b,c as A}from"./chunk-NHCHC3LD.js";import{a as p}from"./chunk-GXCQWWJO.js";import{b as w,d as F}from"./chunk-NAG4LCT2.js";import{F as c,R as l,X as d,aa as u,d as h}from"./chunk-ZMC752RO.js";import{a as f,b as a}from"./chunk-B4AJQJMI.js";var x=(()=>{class s{$ws=u(p);io;fitAddon;webLinksAddon;resize;elementResize;pluginName;searchFilter=null;logBuffer=[];maxBufferSize=1e3;destroy$=new h;term;startTerminal(e,r={},o,k){this.pluginName=k,this.elementResize=o,this.io=this.$ws.connectToNamespace("log"),this.fitAddon=new g,this.webLinksAddon=new b,this.term=new A(a(f({},r),{disableStdin:!0})),this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon),this.resize=new h,this.term.open(e.nativeElement),setTimeout(()=>{this.fitAddon.fit()}),this.io.connected.pipe(l(this.destroy$)).subscribe(()=>{this.term.reset(),this.logBuffer=[],this.io.socket.emit("tail-log",{cols:this.term.cols,rows:this.term.rows})}),this.io.socket.connected&&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(c(500),l(this.destroy$)).subscribe(t=>{this.io.socket.emit("resize",t)}),this.io.socket.on("stdout",t=>{if(this.pluginName){let m=t.split(` \r`),i=!1;m.forEach(n=>{if(n){if(i)if(F.test(n))i=!1;else{this.term.write(`${n} \r`);return}n.includes(`36m[${this.pluginName}]`)&&(this.term.write(`${n} \r`),i=!0)}})}else this.logBuffer.push(t),this.logBuffer.length>this.maxBufferSize&&this.logBuffer.shift(),this.searchFilter?t.split(` \r`).forEach(i=>{i&&this.lineMatchesFilter(i)&&this.term.write(`${i} \r`)}):this.term.write(t)}),this.term.onResize(t=>{this.resize.next(t)}),this.elementResize&&this.elementResize.pipe(c(100),l(this.destroy$)).subscribe({next:()=>{this.fitAddon.fit()}})}setSearchFilter(e){this.searchFilter=e.toLowerCase(),this.redrawTerminalWithFilter()}clearSearchFilter(){this.searchFilter=null,this.redrawTerminalWithFilter()}getSearchFilter(){return this.searchFilter}scrollToBottom(){this.term&&setTimeout(()=>this.term.scrollToLine(this.term.buffer.active.length),10)}lineMatchesFilter(e){return this.searchFilter?e.replace(w,"").toLowerCase().includes(this.searchFilter):!0}redrawTerminalWithFilter(){this.term&&(this.term.clear(),this.logBuffer.forEach(e=>{this.searchFilter?e.split(` \r`).forEach(o=>{o&&this.lineMatchesFilter(o)&&this.term.write(`${o} \r`)}):this.term.write(e)}))}destroyTerminal(){this.destroy$.next(),this.destroy$.complete(),this.io&&this.io.socket&&(this.io.socket.removeAllListeners("stdout"),this.io.socket.removeAllListeners("disconnect")),this.io&&this.io.end(),this.term&&this.term.dispose(),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.destroy$=new h,this.logBuffer=[],this.searchFilter=null}static \u0275fac=function(r){return new(r||s)};static \u0275prov=d({token:s,factory:s.\u0275fac,providedIn:"root"})}return s})();export{x as a};