UNPKG

homebridge-config-ui-x

Version:

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

4 lines (3 loc) 4.96 kB
import {N}from'./chunk-DBaXd1B9.js';import {g,X as I3,Z as m,cp as W,z as zt,a1 as M0,a2 as bf,W as W$1,E,J as Ja,bY as k,K as Kn,Y as Ye,e as Hn,be as ln,m as La,s as At,R as Rd,q as rc,u as Re,y as ie,D as ly,O as Oe,o as dy,a8 as nc,a9 as Go,U as ye,aa as Wo,Q as KC,T as JC}from'./main-ONDCASUV.js';function z(e,f){e&1&&dy(0,"i",6);}function A(e,f){e&1&&dy(0,"i",7);}function L(e,f){if(e&1){let t=nc();La(0,"ngx-monaco-editor",10),rc("onInit",function(o){Go(t);let n=ye();return Wo(n.onEditorInit(o))})("keydown.control.s",function(o){Go(t);let n=ye();return o.preventDefault(),Wo(n.onSave())})("keydown.meta.s",function(o){Go(t);let n=ye();return o.preventDefault(),Wo(n.onSave())}),Rd();}if(e&2){let t=ye();ly("options",t.editorOptions)("model",t.monacoEditorModel);}}function F(e,f){if(e&1){let t=nc();La(0,"textarea",11),rc("ngModelChange",function(o){Go(t);let n=ye();return Wo(n.startupScript.set(o))}),At(1," "),Rd(),KC();}if(e&2){let t=ye();ly("ngModel",t.startupScript()),JC();}}var et=(()=>{class e{$api=g(I3);$errors=g(m);$md=g(N);$route=g(W);$settings=g(zt);$toastr=g(M0);$translate=g(bf);lastHeight;visualViewPortEventCallback;options={printMargin:false};monacoEditor;editorOptions;monacoEditorModel;startupScript=W$1("");saveInProgress=W$1(false);isMobile=W$1(false);constructor(){this.isMobile.set(!!this.$md.detect.mobile());}ngOnInit(){this.editorOptions={language:"shell",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light"},this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,true),this.$md.disableTouchMove()),this.$route.data.subscribe(t=>{this.startupScript.set(t.startupScript.script);}),this.monacoEditorModel={value:"",language:"shell"};}onEditorInit(t){this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.startupScript());}onSave(){return E(this,null,function*(){if(this.saveInProgress())return;this.saveInProgress.set(true),this.isMobile()||(yield this.monacoEditor.getAction("editor.action.formatDocument").run(),this.startupScript.set(this.monacoEditor.getModel().getValue()));let t=this.startupScript();if(!["#!/bin/sh","#!/bin/bash"].includes(t.split(` `)[0].trim())){this.$toastr.error(this.$translate.instant("platform.docker.must_use_hashbang"),this.$translate.instant("toast.title_error"));let i=`#!/bin/sh ${t}`;this.startupScript.set(i),this.isMobile()||this.monacoEditor.getModel().setValue(i),this.saveInProgress.set(false);return}try{yield this.$api.put("/platform-tools/docker/startup-script",{script:t}),this.$toastr.success(this.$translate.instant("platform.docker.restart_required"),this.$translate.instant("platform.docker.script_saved"));}catch(i){console.error(i),this.$toastr.error(this.$errors.toToastMessage(i),this.$translate.instant("toast.title_error"));}this.saveInProgress.set(false);})}ngOnDestroy(){window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,true),this.$md.enableTouchMove()),this.monacoEditor&&this.monacoEditor.dispose();}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height);}static \u0275fac=function(i){return new(i||e)};static \u0275cmp=Ja({type:e,selectors:[["app-startup-script"]],decls:11,vars:3,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0","font-monospace"],[1,"col-6","text-end"],["type","button",1,"btn","btn-primary","waves-effect","m-0",3,"click","disabled"],[1,"fas","fa-circle-notch","fa-spin"],[1,"fas","fa-floppy-disk"],[1,"flex-grow-1","h-100","w-100","my-2",3,"options","model"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-2",3,"ngModel"],[1,"flex-grow-1","h-100","w-100","my-2",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-2",3,"ngModelChange","ngModel"]],template:function(i,o){i&1&&(La(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),At(4,"startup.sh"),Rd()(),La(5,"div",4)(6,"button",5),rc("click",function(){return o.onSave()}),Re(7,z,1,0,"i",6)(8,A,1,0,"i",7),Rd()()(),Re(9,L,1,2,"ngx-monaco-editor",8)(10,F,2,1,"textarea",9),Rd()),i&2&&(ie(6),ly("disabled",o.saveInProgress()),ie(),Oe(o.saveInProgress()?7:8),ie(2),Oe(o.isMobile()?10:9));},dependencies:[k,Kn,Ye,Hn,ln],encapsulation:2})}return e})();export{et as StartupScriptComponent};