homebridge-config-ui-x
Version:
A web based management, configuration and control platform for Homebridge.
4 lines (3 loc) • 5.03 kB
JavaScript
import{a as E}from"./chunk-D39XL-zh.js";import{$ as Le,Ct as Qo,E as Dy,Fr as se,Jr as ve,Ln as db,M as Fe,Pr as sc,Q as Ko,Tn as ac,Un as g,Vt as U3,Yr as vy,Yt as Va,br as pb,dt as Nf,hr as nc,pt as Ot,rr as jd,ui as z0,wr as q}from"./chunk-D96TCRAL.js";import{a as W}from"./chunk-DZYp0NQB.js";import{n as zt}from"./chunk-CdJ3i4Aq.js";import{B as Hn,U as Kn,Y as Ye,p as k,t as m,tt as ln}from"./main-E3N63CH7.js";import{t as N}from"./chunk-MQWddKEg2.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=sc();Va(0,`ngx-monaco-editor`,10),ac(`onInit`,function(o){Ko(t);return Qo(ve().onEditorInit(o))})(`keydown.control.s`,function(o){Ko(t);let n=ve();return o.preventDefault(),Qo(n.onSave())})(`keydown.meta.s`,function(o){Ko(t);let n=ve();return o.preventDefault(),Qo(n.onSave())}),jd()}if(e&2){let t=ve();vy(`options`,t.editorOptions)(`model`,t.monacoEditorModel)}}function F(e,f){if(e&1){let t=sc();Va(0,`textarea`,11),ac(`ngModelChange`,function(o){Ko(t);return Qo(ve().startupScript.set(o))}),Ot(1,` `),jd(),db()}if(e&2)vy(`ngModel`,ve().startupScript()),pb()}var et=(()=>{class e{$api=g(U3);$errors=g(m);$md=g(N);$route=g(W);$settings=g(zt);$toastr=g(z0);$translate=g(Nf);lastHeight;visualViewPortEventCallback;options={printMargin:!1};monacoEditor;editorOptions;monacoEditorModel;startupScript=q(``);saveInProgress=q(!1);isMobile=q(!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 E(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 ɵfac=function(i){return new(i||e)};static ɵcmp=nc({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&&(Va(0,`div`,0)(1,`div`,1)(2,`div`,2)(3,`h3`,3),Ot(4,`startup.sh`),jd()(),Va(5,`div`,4)(6,`button`,5),ac(`click`,function(){return o.onSave()}),Fe(7,z,1,0,`i`,6)(8,A,1,0,`i`,7),jd()()(),Fe(9,L,1,2,`ngx-monaco-editor`,8)(10,F,2,1,`textarea`,9),jd()),i&2&&(se(6),vy(`disabled`,o.saveInProgress()),se(),Le(o.saveInProgress()?7:8),se(2),Le(o.isMobile()?10:9))},dependencies:[k,Kn,Ye,Hn,ln],encapsulation:2})}return e})();export{et as StartupScriptComponent};