homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
1 lines • 5.55 kB
JavaScript
import{a as E}from"./chunk-D39XL-zh.js";import{Fr as se,Kr as v3,Sn as a$,Tn as ac,Un as g,Y as Je,bn as _w,dt as Nf,gt as Pe,hr as nc,jt as S_,kn as br,mt as P,n as $T,pt as Ot,st as My,ut as N_,vt as Py}from"./chunk-D96TCRAL.js";import"./chunk-DZYp0NQB.js";import{n as zt}from"./chunk-CdJ3i4Aq.js";import"./main-E3N63CH7.js";import"./chunk-CiY-LsUw.js";import"./chunk-CLsCjV2Q.js";import{t as L}from"./chunk-CyE5Vxdx.js";import"./chunk-nWnpef0a.js";import"./chunk-C-2fYS21.js";import{t as b}from"./chunk-DEWW9SZ8.js";var q=[`terminaloutput`];var F=(()=>{class s{$terminal=g(L);$settings=g(zt);$navigationGuard=g(b);$translate=g(Nf);resizeEvent=new P;termTarget=a$(`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 E(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 ɵfac=function(e){return new(e||s)};static ɵcmp=nc({type:s,selectors:[[`app-terminal`]],viewQuery:function(e,i){e&1&&My(i.termTarget,q,5),e&2&&$T()},hostBindings:function(e,i){e&1&&ac(`resize`,function(){return i.onWindowResize()},_w)(`beforeunload`,function(o){return i.onBeforeUnload(o)},_w)(`focus`,function(){return i.onWindowFocus()},_w)(`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&&(Pe(0,`div`,1)(1,`div`,2)(2,`h3`,3),Ot(3),S_(4,`translate`),Je()()(),Pe(5,`div`,4),br(6,`div`,5,0),Je()),e&2&&(se(3),Py(N_(4,1,`menu.linux.label_terminal`)))},dependencies:[v3],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)}`]})}return s})();export{F as TerminalComponent};