homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
2 lines (1 loc) • 5.57 kB
JavaScript
import{a as k}from"./chunk-5K67D3UD.js";import{a as H}from"./chunk-JJ5JEAFW.js";import"./chunk-NHCHC3LD.js";import"./chunk-ZIPKQJZO.js";import"./chunk-GXCQWWJO.js";import"./chunk-CG4JSQF7.js";import"./chunk-YATM6BZO.js";import"./chunk-2GN26TCR.js";import{b as E}from"./chunk-4NRNA47I.js";import{C as _,D as L}from"./chunk-QCMOCU6Q.js";import{Dc as $,Ec as C,Jb as l,Kb as m,Lb as f,Qc as S,Xa as a,Xb as y,Ya as g,aa as r,d as h,ec as p,fc as T,kc as b,lc as w,mb as v}from"./chunk-ZMC752RO.js";import{h as u}from"./chunk-B4AJQJMI.js";var q=["terminaloutput"],F=(()=>{class s{$terminal=r(H);$settings=r(E);$navigationGuard=r(k);$translate=r(_);resizeEvent=new h;termTarget=S("terminaloutput");visibilityChangeHandler=null;onWindowResize(){this.resizeEvent.next(void 0)}onBeforeUnload(t){return this.$navigationGuard.handleBeforeUnload(t)}onWindowFocus(){this.$terminal.activateTerminal()}onClick(){this.$terminal.activateTerminal()}onTouchStart(t){this.$terminal.onTouchStart(t)}onTouchEnd(t){this.$terminal.onTouchEnd(t)}patchXtermLiveRegion(){let t=this.termTarget()?.nativeElement;if(!t)return;let e=t.querySelector("[aria-live]");e&&(e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"))}ngOnInit(){let t=this.$translate.instant("menu.linux.label_terminal");this.$settings.setPageTitle(t);let e=this.$settings.getEffectiveTerminalLightingMode();if(e==="dark"?window.document.querySelector("body").classList.add("bg-black"):window.document.querySelector("body").classList.add("bg-white"),this.$settings.actualLightingMode==="light"&&e==="dark"){window.document.querySelector("body").classList.add("theme-transition");let n=this.termTarget()?.nativeElement;n&&n.classList.add("theme-transition")}this.$terminal.isTerminalReady()&&this.$terminal.destroyTerminal(),this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()?this.$terminal.reconnectTerminal(this.termTarget(),this.$settings.getTerminalOptions({screenReaderMode:!0}),this.resizeEvent):(!this.$settings.env.terminal?.persistence&&this.$terminal.hasActiveSession()&&this.$terminal.destroyPersistentSession(),this.$terminal.startTerminal(this.termTarget(),this.$settings.getTerminalOptions({screenReaderMode:!0}),this.resizeEvent)),requestAnimationFrame(()=>{this.patchXtermLiveRegion(),this.$terminal.activateTerminal()})}ngAfterViewInit(){this.visibilityChangeHandler=this.onVisibilityChange.bind(this),document.addEventListener("visibilitychange",this.visibilityChangeHandler),setTimeout(()=>this.patchXtermLiveRegion(),0)}onVisibilityChange(){!document.hidden&&this.$terminal.isTerminalReady()&&requestAnimationFrame(()=>{this.patchXtermLiveRegion(),this.$terminal.activateTerminal()})}canDeactivate(t){return u(this,null,function*(){let e=yield this.$navigationGuard.canDeactivate();if(e===!1)return e;let i=this.$settings.getEffectiveTerminalLightingMode();if(!(this.$settings.actualLightingMode==="light"&&i==="dark"))return window.document.querySelector("body").classList.remove("bg-black"),window.document.querySelector("body").classList.remove("bg-white"),Promise.resolve(!0);window.document.querySelector("body").classList.remove("theme-transition");let o=t&&(t.includes("/platform-tools/terminal")||t.includes("/logs"));return new Promise(d=>{let c=this.termTarget()?.nativeElement;c&&c.classList.add("fade-out"),o?setTimeout(()=>{d(!0)},250):(setTimeout(()=>{window.document.querySelector("body").classList.remove("bg-black"),window.document.querySelector("body").classList.remove("bg-white")},250),setTimeout(()=>{d(!0)},500))})})}ngOnDestroy(){this.visibilityChangeHandler&&(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null),window.document.querySelector("body").classList.remove("theme-transition"),window.document.querySelector("body").classList.remove("light-mode"),window.document.querySelector("body").classList.remove("bg-black"),window.document.querySelector("body").classList.remove("bg-white"),this.$settings.env.terminal?.persistence?this.$terminal.detachTerminal():this.$terminal.destroyPersistentSession()}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=v({type:s,selectors:[["app-terminal"]],viewQuery:function(e,i){e&1&&p(i.termTarget,q,5),e&2&&T()},hostBindings:function(e,i){e&1&&y("resize",function(){return i.onWindowResize()},a)("beforeunload",function(o){return i.onBeforeUnload(o)},a)("focus",function(){return i.onWindowFocus()},a)("click",function(){return i.onClick()})("touchstart",function(o){return i.onTouchStart(o)})("touchend",function(o){return i.onTouchEnd(o)})},decls:8,vars:3,consts:[["terminaloutput",""],[1,"row","mb-3"],[1,"col-12"],[1,"primary-text","m-0"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","docker-terminal",1,"align-self-end","w-100","h-100","mb-1"]],template:function(e,i){e&1&&(l(0,"div",1)(1,"div",2)(2,"h3",3),b(3),$(4,"translate"),m()()(),l(5,"div",4),f(6,"div",5,0),m()),e&2&&(g(3),w(C(4,1,"menu.linux.label_terminal")))},dependencies:[L],styles:["#docker-terminal.theme-transition[_ngcontent-%COMP%]{opacity:0;animation:_ngcontent-%COMP%_fadeIn .25s ease-in-out .25s forwards}#docker-terminal.theme-transition.fade-out[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_fadeOut .25s ease-in-out forwards!important;opacity:1}@keyframes _ngcontent-%COMP%_fadeIn{to{opacity:1}}@keyframes _ngcontent-%COMP%_fadeOut{to{opacity:0}}.adjust-for-mobile[_ngcontent-%COMP%]{height:calc(100% - 60px)}"],changeDetection:0})}return s})();export{F as TerminalComponent};