homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
5 lines (3 loc) • 5.05 kB
JavaScript
import{a as D}from"./chunk-SGXHM7IT.js";import{a as H}from"./chunk-D4MZIYO2.js";import{a as y}from"./chunk-VYTJCKZA.js";import{C as P,c as k,e as T,l as I}from"./chunk-BQZ376DP.js";import{b as $}from"./chunk-RFCSHRPV.js";import{d as x}from"./chunk-3APJQTJL.js";import{$c as V,Ea as m,Mb as S,Ra as b,Yc as M,aa as r,cb as g,db as _,dd as E,fa as l,ga as c,ib as u,jb as p,kb as a,lb as w,qa as d,vb as v,xb as h,zb as s}from"./chunk-LTGI3NYM.js";import{h as C}from"./chunk-B4AJQJMI.js";function N(e,f){e&1&&w(0,"i",6)}function O(e,f){e&1&&w(0,"i",7)}function z(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 A(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 Z=(()=>{class e{$api=r(E);$errors=r(y);$md=r(D);$route=r(x);$settings=r($);$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(this.$errors.toToastMessage(i),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,N,1,0,"i",6)(8,O,1,0,"i",7),a()()(),g(9,z,1,2,"ngx-monaco-editor",8)(10,A,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:[H,P,k,T,I],encapsulation:2,changeDetection:0})}return e})();export{Z as StartupScriptComponent};