homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
5 lines (3 loc) • 5.01 kB
JavaScript
import{a as P}from"./chunk-HKSUEG7C.js";import{a as D}from"./chunk-M4XHMFKM.js";import{c as x}from"./chunk-ODMFCOQJ.js";import{C as I,c as $,e as k,l as T}from"./chunk-ORSKS7BY.js";import{b as y}from"./chunk-4NRNA47I.js";import{C as M,F as V,I as E}from"./chunk-QCMOCU6Q.js";import{Ab as _,Fb as u,Gb as p,Hb as a,Ib as w,Sb as v,Xb as h,Ya as m,Zb as s,aa as r,ga as l,ha as c,kc as S,mb as b,sa as d,zb as g}from"./chunk-ZMC752RO.js";import{h as C}from"./chunk-B4AJQJMI.js";function H(e,f){e&1&&w(0,"i",6)}function N(e,f){e&1&&w(0,"i",7)}function O(e,f){if(e&1){let t=v();p(0,"ngx-monaco-editor",10),h("onInit",function(o){l(t);let n=s();return c(n.onEditorInit(o))})("keydown.control.s",function(o){l(t);let n=s();return o.preventDefault(),c(n.onSave())})("keydown.meta.s",function(o){l(t);let n=s();return o.preventDefault(),c(n.onSave())}),a()}if(e&2){let t=s();u("options",t.editorOptions)("model",t.monacoEditorModel)}}function z(e,f){if(e&1){let t=v();p(0,"textarea",11),h("ngModelChange",function(o){l(t);let n=s();return c(n.startupScript.set(o))}),S(1," "),a()}if(e&2){let t=s();u("ngModel",t.startupScript())}}var X=(()=>{class e{$api=r(E);$md=r(P);$route=r(x);$settings=r(y);$toastr=r(V);$translate=r(M);lastHeight;visualViewPortEventCallback;options={printMargin:!1};monacoEditor;editorOptions;monacoEditorModel;startupScript=d("");saveInProgress=d(!1);isMobile=d(!1);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,!0),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 C(this,null,function*(){if(this.saveInProgress())return;this.saveInProgress.set(!0),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(!1);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(i.message,this.$translate.instant("toast.title_error"))}this.saveInProgress.set(!1)})}ngOnDestroy(){window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),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=b({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&&(p(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),S(4,"startup.sh"),a()(),p(5,"div",4)(6,"button",5),h("click",function(){return o.onSave()}),g(7,H,1,0,"i",6)(8,N,1,0,"i",7),a()()(),g(9,O,1,2,"ngx-monaco-editor",8)(10,z,2,1,"textarea",9),a()),i&2&&(m(6),u("disabled",o.saveInProgress()),m(),_(o.saveInProgress()?7:8),m(2),_(o.isMobile()?10:9))},dependencies:[D,I,$,k,T],encapsulation:2,changeDetection:0})}return e})();export{X as StartupScriptComponent};