homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
13 lines (12 loc) • 2.65 kB
JavaScript
import{a as g,b,c as z}from"./chunk-SAZ2U4SX.js";import{a as u}from"./chunk-MLPBQDF7.js";import{P as l,g as h,ia as f,n as c,na as a}from"./chunk-P2BWKXLW.js";var d=h(g(),1),p=h(b(),1),w=h(z(),1);var x=(()=>{class r{$ws=a(u);io;fitAddon;webLinksAddon;resize;elementResize;pluginName;searchFilter=null;logBuffer=[];maxBufferSize=1e3;term;startTerminal(e,s={},n,F){this.pluginName=F,this.elementResize=n,this.io=this.$ws.connectToNamespace("log"),this.term=new w.Terminal(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new d.FitAddon,this.webLinksAddon=new p.WebLinksAddon,this.resize=new c,this.term.open(e.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.subscribe(()=>{this.term.reset(),this.logBuffer=[],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(l(500)).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(o=>{if(o){if(i)if(o.match(/36m\[.*?\]/))i=!1;else{this.term.write(`${o}
\r`);return}o.includes(`36m[${this.pluginName}]`)&&(this.term.write(`${o}
\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(l(100)).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(/\x1b\[[0-9;]*m/g,"").toLowerCase().includes(this.searchFilter):!0}redrawTerminalWithFilter(){this.term&&(this.term.clear(),this.logBuffer.forEach(e=>{this.searchFilter?e.split(`
\r`).forEach(n=>{n&&this.lineMatchesFilter(n)&&this.term.write(`${n}
\r`)}):this.term.write(e)}))}destroyTerminal(){this.io.end(),this.term.dispose(),this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.logBuffer=[],this.searchFilter=null}static \u0275fac=function(s){return new(s||r)};static \u0275prov=f({token:r,factory:r.\u0275fac,providedIn:"root"})}return r})();export{x as a};