iobroker.admin 6.2.18 → 6.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/admin/jsonConfig.json5 +0 -4
- package/io-package.json +13 -13
- package/main.js +8 -2
- package/package.json +1 -1
- package/www/asset-manifest.json +15 -15
- package/www/index.html +1 -1
- package/www/static/js/1553.c291692c.chunk.js +709 -0
- package/www/static/js/1553.c291692c.chunk.js.map +1 -0
- package/www/static/js/{5710.72e95b8e.chunk.js → 5710.05cde997.chunk.js} +4 -4
- package/www/static/js/5710.05cde997.chunk.js.map +1 -0
- package/www/static/js/7228.cd98fee1.chunk.js +67 -0
- package/www/static/js/7228.cd98fee1.chunk.js.map +1 -0
- package/www/static/js/{7412.6bf54cc4.chunk.js → 7412.e4b0556a.chunk.js} +5 -5
- package/www/static/js/7412.e4b0556a.chunk.js.map +1 -0
- package/www/static/js/{7858.d768cb91.chunk.js → 7858.b16a767f.chunk.js} +10 -10
- package/www/static/js/7858.b16a767f.chunk.js.map +1 -0
- package/www/static/js/8596.62e5938c.chunk.js +3 -0
- package/www/static/js/8596.62e5938c.chunk.js.map +1 -0
- package/www/static/js/{main.1fb226a1.js → main.b9cd96c6.js} +5 -5
- package/www/static/js/{main.1fb226a1.js.map → main.b9cd96c6.js.map} +1 -1
- package/www/static/js/1553.1c221cad.chunk.js +0 -709
- package/www/static/js/1553.1c221cad.chunk.js.map +0 -1
- package/www/static/js/5710.72e95b8e.chunk.js.map +0 -1
- package/www/static/js/7228.7cff9ec6.chunk.js +0 -67
- package/www/static/js/7228.7cff9ec6.chunk.js.map +0 -1
- package/www/static/js/7412.6bf54cc4.chunk.js.map +0 -1
- package/www/static/js/7858.d768cb91.chunk.js.map +0 -1
- package/www/static/js/8596.803204cf.chunk.js +0 -3
- package/www/static/js/8596.803204cf.chunk.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";(self.webpackChunksrc_rx=self.webpackChunksrc_rx||[]).push([[8596],{32761:function(it,M,p){p.d(M,{Z:function(){return b}});var $=p(4819),h=p.n($),G=p(15854),n=p.n(G),F=p(58503),J=p(66966),A=p(55289),Y=p(13820),T=p(49630),K=p(65890),W=p(33577);const w=u=>({tabs:{height:"100%",width:"100%"},panel:{height:"calc(100% - 48px)",width:"100%",display:"block"}});class I extends K.Z{constructor(i){super(i);let e=(window._localStorage||window.localStorage).getItem((this.props.dialogName||"App")+"."+this.props.adapterName)||Object.keys(this.props.schema.items)[0];Object.keys(this.props.schema.items).includes(e)||(e=Object.keys(this.props.schema.items)[0]),this.state={tab:e}}render(){const i=this.props.schema.items;return h().createElement("div",{className:this.props.classes.tabs},h().createElement(Y.Z,{value:this.state.tab,onChange:(e,a)=>{(window._localStorage||window.localStorage).setItem((this.props.dialogName||"App")+"."+this.props.adapterName,a),this.setState({tab:a})}},Object.keys(i).map(e=>{let a;if(this.props.custom){if(this.executeCustom(i[e].hidden,this.props.data,this.props.customObj,this.props.instanceObj))return null;a=this.executeCustom(i[e].disabled,this.props.data,this.props.customObj,this.props.instanceObj)}else{if(this.execute(i[e].hidden,!1))return null;a=this.execute(i[e].disabled,!1)}return h().createElement(T.Z,{wrapped:!0,disabled:a,key:e,value:e,label:this.getText(i[e].label)})})),h().createElement(W.Z,{isParentTab:!0,key:this.state.tab,index:1001,arrayIndex:this.props.arrayIndex,globalData:this.props.globalData,onCommandRunning:this.props.onCommandRunning,commandRunning:this.props.commandRunning,className:this.props.classes.panel,socket:this.props.socket,adapterName:this.props.adapterName,instance:this.props.instance,common:this.props.common,customs:this.props.customs,alive:this.props.alive,themeType:this.props.themeType,themeName:this.props.themeName,data:this.props.data,originalData:this.props.originalData,systemConfig:this.props.systemConfig,onError:this.props.onError,onChange:this.props.onChange,multiEdit:this.props.multiEdit,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,imagePrefix:this.props.imagePrefix,changeLanguage:this.props.changeLanguage,forceUpdate:this.props.forceUpdate,registerOnForceUpdate:this.props.registerOnForceUpdate,customObj:this.props.customObj,instanceObj:this.props.instanceObj,custom:this.props.custom,schema:i[this.state.tab]}))}}I.propTypes={socket:n().object.isRequired,themeType:n().string,themeName:n().string,style:n().object,className:n().string,data:n().object.isRequired,originalData:n().object,schema:n().object,onError:n().func,onChange:n().func,customs:n().object,adapterName:n().string,instance:n().number,commandRunning:n().bool,onCommandRunning:n().func,dateFormat:n().string,isFloatComma:n().bool,multiEdit:n().bool,imagePrefix:n().string,customObj:n().object,instanceObj:n().object,custom:n().bool,registerOnForceUpdate:n().func.isRequired,forceUpdate:n().func.isRequired,changeLanguage:n().func,systemConfig:n().object,alive:n().bool,common:n().object};var Q=(0,F.withStyles)(w)(I),X=Object.defineProperty,q=Object.defineProperties,_=Object.getOwnPropertyDescriptors,x=Object.getOwnPropertySymbols,tt=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable,Z=(u,i,e)=>i in u?X(u,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):u[i]=e,D=(u,i)=>{for(var e in i||(i={}))tt.call(i,e)&&Z(u,e,i[e]);if(x)for(var e of x(i))R.call(i,e)&&Z(u,e,i[e]);return u},P=(u,i)=>q(u,_(i)),E=(u,i,e)=>(Z(u,typeof i!="symbol"?i+"":i,e),e);const et=u=>({root:{width:"100%",height:"100%"}});class L extends $.Component{constructor(i){super(i),E(this,"onCommandRunning",e=>this.setState({commandRunning:e})),E(this,"onAlive",(e,a)=>{((a==null?void 0:a.val)||!1)!==this.state.alive&&this.setState({alive:(a==null?void 0:a.val)||!1})}),E(this,"onChange",(e,a,m,y)=>{if(this.props.onValueChange)this.props.onValueChange(e,a,y),m&&m();else if(e){const f={data:e},v={};Object.keys(e).forEach(j=>!j.startsWith("_")&&(v[j]=e[j])),f.changed=JSON.stringify(v)!==this.state.originalData,this.setState(f,()=>{this.props.onChange(v,f.changed,y),m&&m()})}else y&&this.props.onChange(null,null,y)}),E(this,"onError",(e,a)=>{this.errorChached=this.errorChached||JSON.parse(JSON.stringify(this.state.errors));const m=this.errorChached;a?m[e]=a:delete m[e],JSON.stringify(m)!==JSON.stringify(this.state.errors)?(this.errorTimeout&&clearTimeout(this.errorTimeout),this.errorTimeout=setTimeout(()=>this.setState({errors:this.errorChached},()=>{this.errorTimeout=null,this.errorChached=null,this.props.onError(!!Object.keys(this.state.errors).length)}),50)):this.errorChached=null}),E(this,"changeLanguage",()=>{this.forceUpdate()}),E(this,"forceAttrUpdate",(e,a)=>{Array.isArray(e)?e.forEach(m=>this.forceUpdateHandlers[m]&&this.forceUpdateHandlers[m](a)):this.forceUpdateHandlers[e]&&this.forceUpdateHandlers[e](a)}),E(this,"registerOnForceUpdate",(e,a)=>{a?this.forceUpdateHandlers[e]=a:this.forceUpdateHandlers[e]&&delete this.forceUpdateHandlers[e]}),this.state={originalData:JSON.stringify(this.props.data),changed:!1,errors:{},updateData:this.props.updateData,systemConfig:null,alive:!1,commandRunning:!1,schema:JSON.parse(JSON.stringify(this.props.schema))},this.forceUpdateHandlers={},this.buildDependencies(this.state.schema),this.readData()}static getDerivedStateFromProps(i,e){return i.updateData!==e.updateData?{updateData:i.updateData,originalData:JSON.stringify(i.data),schema:JSON.parse(JSON.stringify(i.schema))}:null}static loadI18n(i,e,a){if(e===!0||e&&typeof e=="string"){const m=A.default.getLanguage(),y=typeof e=="string"?e:"i18n";return i.fileExists(a+".admin",`${y}/${m}.json`).then(f=>f?`${y}/${m}.json`:i.fileExists(a+".admin",`${y}/${m}/translations.json`).then(v=>v?`${y}/${m}/translations.json`:"")).then(f=>f?i.readFile(a+".admin",f).then(v=>{v.file!==void 0&&(v=v.file);try{v=JSON.parse(v),A.default.extendTranslations(v,m)}catch(j){console.error(`Cannot parse language file "${a}.admin/${f}: ${j}`)}}):(console.warn(`Cannot find i18n for ${a} / ${f}`),Promise.resolve()))}else return e&&typeof e=="object"&&A.default.extendTranslations(e),Promise.resolve()}readSettings(){return(this.props.custom||this.props.common)&&this.props.data?Promise.resolve():this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`).then(i=>this.setState({common:i.common,data:this.props.data||i.native}))}readData(){this.readSettings().then(()=>this.props.socket.getCompactSystemConfig()).then(i=>this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`).then(e=>{this.props.custom?this.setState({systemConfig:i.common,alive:!!(e&&e.val)}):this.setState({systemConfig:i.common,alive:!!(e&&e.val)},()=>this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`,this.onAlive))}))}flatten(i,e){return e=e||{},i.items&&Object.keys(i.items).forEach(a=>{e[a]=i.items[a],this.flatten(i.items[a],e)}),e}buildDependencies(i){const e=this.flatten(i);Object.keys(e).forEach(a=>{var m,y,f,v,j,k,B,z,U,H;(m=e[a].confirm)!=null&&m.alsoDependsOn&&((y=e[a].confirm)==null||y.alsoDependsOn.forEach(l=>{if(!e[l])console.error(`[JsonConfigComponent] Attribute ${l} does not exist!`),l.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${l.replace(/^data\./,"")}" instead of "${l}"`);else{e[l].confirmDependsOn=e[l].confirmDependsOn||[];const C=P(D({},e[a]),{attr:a});C.confirm&&(C.confirm.cancel="Undo"),e[l].confirmDependsOn.push(C)}})),(f=e[a].onChange)!=null&&f.alsoDependsOn&&((v=e[a].onChange)==null||v.alsoDependsOn.forEach(l=>{if(!e[l])console.error(`[JsonConfigComponent] Attribute ${l} does not exist!`),l.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${l.replace(/^data\./,"")}" instead of "${l}"`);else{e[l].onChangeDependsOn=e[l].onChangeDependsOn||[];const C=P(D({},e[a]),{attr:a});e[l].onChangeDependsOn.push(C)}})),(j=e[a].hidden)!=null&&j.alsoDependsOn&&((k=e[a].hidden)==null||k.alsoDependsOn.forEach(l=>{if(!e[l])console.error(`[JsonConfigComponent] Attribute ${l} does not exist!`),l.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${l.replace(/^data\./,"")}" instead of "${l}"`);else{e[l].hiddenDependsOn=e[l].hiddenDependsOn||[];const C=P(D({},e[a]),{attr:a});e[l].hiddenDependsOn.push(C)}})),(B=e[a].label)!=null&&B.alsoDependsOn&&((z=e[a].label)==null||z.alsoDependsOn.forEach(l=>{if(!e[l])console.error(`[JsonConfigComponent] Attribute ${l} does not exist!`),l.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${l.replace(/^data\./,"")}" instead of "${l}"`);else{e[l].labelDependsOn=e[l].labelDependsOn||[];const C=P(D({},e[a]),{attr:a});e[l].labelDependsOn.push(C)}})),(U=e[a].help)!=null&&U.alsoDependsOn&&((H=e[a].help)==null||H.alsoDependsOn.forEach(l=>{if(!e[l])console.error(`[JsonConfigComponent] Attribute ${l} does not exist!`),l.startsWith("data.")&&console.warn(`[JsonConfigComponent] please use "${l.replace(/^data\./,"")}" instead of "${l}"`);else{e[l].helpDependsOn=e[l].helpDependsOn||[];const C=P(D({},e[a]),{attr:a});e[l].helpDependsOn.push(C)}}))})}renderItem(i){if(i.type==="tabs")return h().createElement(Q,{onCommandRunning:this.onCommandRunning,commandRunning:this.state.commandRunning,socket:this.props.socket,adapterName:this.props.adapterName,instance:this.props.instance,common:this.props.common,alive:this.state.alive,themeType:this.props.themeType,themeName:this.props.themeName,data:this.props.data,originalData:JSON.parse(this.state.originalData),schema:i,systemConfig:this.state.systemConfig,customs:this.props.customs,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,multiEdit:this.props.multiEdit,imagePrefix:this.props.imagePrefix,custom:this.props.custom,customObj:this.props.customObj,instanceObj:this.props.instanceObj,changeLanguage:this.changeLanguage,forceUpdate:this.forceAttrUpdate,registerOnForceUpdate:this.registerOnForceUpdate,onChange:this.onChange,onError:(e,a)=>this.onError(e,a)});if(i.type==="panel"||!i.type)return h().createElement(W.Z,{index:1e3,isParentTab:!0,onCommandRunning:this.onCommandRunning,commandRunning:this.state.commandRunning,socket:this.props.socket,adapterName:this.props.adapterName,instance:this.props.instance,common:this.props.common,alive:this.state.alive,themeType:this.props.themeType,themeName:this.props.themeName,data:this.props.data,originalData:JSON.parse(this.state.originalData),schema:i,systemConfig:this.state.systemConfig,customs:this.props.customs,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,multiEdit:this.props.multiEdit,imagePrefix:this.props.imagePrefix,custom:this.props.custom,customObj:this.props.customObj,instanceObj:this.props.instanceObj,changeLanguage:this.changeLanguage,forceUpdate:this.forceAttrUpdate,registerOnForceUpdate:this.registerOnForceUpdate,onChange:this.onChange,onError:(e,a)=>this.onError(e,a)})}render(){return this.state.systemConfig?h().createElement("div",{className:this.props.classes.root},this.renderItem(this.state.schema)):h().createElement(J.Z,null)}}L.propTypes={socket:n().object.isRequired,adapterName:n().string,instance:n().number,common:n().object,customs:n().object,custom:n().bool,customObj:n().object,multiEdit:n().bool,instanceObj:n().object,dateFormat:n().string,isFloatComma:n().bool,imagePrefix:n().string,themeType:n().string,themeName:n().string,style:n().object,className:n().string,data:n().object.isRequired,updateData:n().number,schema:n().object,onError:n().func,onChange:n().func,onValueChange:n().func};var b=(0,F.withStyles)(et)(L)},28596:function(it,M,p){p.d(M,{Z:function(){return ht}});var $=p(4819),h=p.n($),G=p(15854),n=p.n(G),F=p(58503),J=p(23060),A=p(36609),Y=p(30464),T=p(67552),K=p(56892),W=p(99296),w=p(88261),I=p(94427),Q=p(11548),X=p(79458),q=p(37538),_=p(22675),x=p(43924),tt=p(94475),R=p(41728),Z=p(87951),D=p.n(Z),P=p(66966),E=p(43820),et=p(84302),L=p(82890),b=p(55289),u=p(32761),i=p(92636),e=p(61984),a=Object.defineProperty,m=(c,t,s)=>t in c?a(c,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):c[t]=s,y=(c,t,s)=>(m(c,typeof t!="symbol"?t+"":t,s),s),f=(c,t,s)=>new Promise((o,r)=>{var d=g=>{try{O(s.next(g))}catch(N){r(N)}},S=g=>{try{O(s.throw(g))}catch(N){r(N)}},O=g=>g.done?o(g.value):Promise.resolve(g.value).then(d,S);O((s=s.apply(c,t)).next())});const v={root:{width:"100%",height:"100%",overflow:"hidden",position:"relative"},scroll:{height:"calc(100% - 48px - 48px)",overflowY:"auto"},exportImportButtons:{position:"absolute",top:5,right:0,zIndex:3},button:{marginRight:5}};function j(c,t){let s="";for(let o=0;o<t.length;o++)s+=String.fromCharCode(c[o%c.length].charCodeAt(0)^t.charCodeAt(o));return s}function k(c,t){let s="";for(let o=0;o<t.length;o++)s+=String.fromCharCode(c[o%c.length].charCodeAt(0)^t.charCodeAt(o));return s}function B(c,t){if(typeof t!="string")return t;if(!t.startsWith("$/aes-192-cbc:")||!/^[0-9a-f]{48}$/.test(c))return j(c,t);const s=t.split(":",3),o=window.CryptoJS.enc.Hex.parse(c),r=window.CryptoJS.enc.Hex.parse(s[1]),d=window.CryptoJS.lib.CipherParams.create({ciphertext:window.CryptoJS.enc.Hex.parse(s[2])}),S=window.CryptoJS.AES.decrypt(d,o,{iv:r});return window.CryptoJS.enc.Utf8.stringify(S)}function z(c,t,s){if(typeof t!="string")return t;if(!/^[0-9a-f]{48}$/.test(c))return k(c,t);let o;s?o=window.CryptoJS.enc.Hex.parse(s):o=window.CryptoJS.lib.WordArray.random(128/8);const r=window.CryptoJS.enc.Hex.parse(c),d=window.CryptoJS.AES.encrypt(t,r,{iv:o}).ciphertext;return`$/aes-192-cbc:${window.CryptoJS.enc.Hex.stringify(o)}:${d}`}function U(c,t){return!t||!document.getElementById(t)?new Promise(s=>{const o=document.createElement("script");o.setAttribute("id",t),o.onload=s,o.src=c,document.getElementsByTagName("head")[0].appendChild(o)}):document.getElementById(t).onload}class H extends x.Z{constructor(t){super(t),y(this,"handleFileSelect",s=>{let o=s.target.files[0];if(o){let r=new FileReader;r.onload=d=>f(this,null,function*(){let S=d.target.result;try{let O=JSON.parse(S);this.setState({data:O})}catch(O){window.alert(b.default.t("[JsonConfig] Failed to parse JSON file"))}}),r.readAsText(o)}else window.alert(b.default.t("[JsonConfig] Failed to open JSON File"))}),y(this,"componentDidUpdate",(s,o)=>{o.changed!==this.state.changed&&this.props.configStored(!this.state.changed)}),this.state={schema:null,data:null,updateData:0,common:null,changed:!1,confirmDialog:!1,theme:(0,L.Z)(t.themeName),saveConfigDialog:!1},this.getInstanceObject().then(s=>this.getConfigFile().then(o=>u.Z.loadI18n(this.props.socket,o==null?void 0:o.i18n,this.props.adapterName).then(()=>{s?this.setState({schema:o,data:s.native,common:s.common}):window.alert(`Instance system.adapter.${this.props.adapterName}.${this.props.instance} not found!`)})))}getExportImportButtons(){return h().createElement("div",{className:this.props.classes.exportImportButtons},h().createElement(w.Z,{title:this.props.t("Import settings from JSON file")},h().createElement(T.Z,{size:"small",classes:{root:this.props.classes.button},onClick:()=>{const t=document.createElement("input");t.setAttribute("type","file"),t.setAttribute("id","files"),t.setAttribute("opacity",0),t.addEventListener("change",s=>this.handleFileSelect(s),!1),t.click()}},h().createElement(E.default,null))),h().createElement(w.Z,{title:this.props.t("Export setting to JSON file")},h().createElement(T.Z,{size:"small",classes:{root:this.props.classes.button},onClick:()=>{e.Z.generateFile(this.props.adapterName+"."+this.props.instance+".json",this.state.data)}},h().createElement(E.default,{style:{transform:"rotate(180deg)"}}))))}getConfigFile(){return this.props.socket.fileExists(this.props.adapterName+".admin","jsonConfig.json5").then(t=>t?this.props.socket.readFile(this.props.adapterName+".admin","jsonConfig.json5"):this.props.socket.readFile(this.props.adapterName+".admin","jsonConfig.json")).then(t=>{t.file!==void 0&&(t=t.file);try{return D().parse(t)}catch(s){window.alert("[JsonConfig] Cannot parse json5 config!")}}).catch(t=>window.alert("[JsonConfig] Cannot read file: "+t))}getInstanceObject(){return this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`).then(t=>Array.isArray(t.encryptedNative)?this.props.socket.getSystemConfig().then(s=>f(this,null,function*(){return yield U("../../lib/js/crypto-js/crypto-js.js","crypto-js"),this.secret=s.native.secret,t.encryptedNative.forEach(o=>{t.native[o]&&(t.native[o]=B(this.secret,t.native[o]))}),t})):t).catch(t=>window.alert("[JsonConfig] Cannot read instance object: "+t))}renderConfirmDialog(){return this.state.confirmDialog?h().createElement(R.default,{title:b.default.t("ra_Please confirm"),text:b.default.t("ra_Some data are not stored. Discard?"),ok:b.default.t("ra_Discard"),cancel:b.default.t("ra_Cancel"),onClose:t=>this.setState({confirmDialog:!1},()=>t&&x.Z.doNavigate(null))}):null}renderSaveConfigDialog(){return this.state.saveConfigDialog?h().createElement(R.default,{title:b.default.t("ra_Please confirm"),text:typeof this.state.saveConfigDialog=="string"?this.state.saveConfigDialog:b.default.t("Save configuration?"),ok:b.default.t("ra_Save"),cancel:b.default.t("ra_Cancel"),onClose:t=>this.setState({saveConfigDialog:!1},()=>t&&this.onSave(!0))}):null}findAttr(t,s){if(s=s||this.state.schema,s.items){if(s.items[t])return s.items[t];{const o=Object.keys(s.items);for(let r=0;r<o.length;r++){const d=this.findAttr(t,s.items[o[r]]);if(d)return d}}}}onSave(t,s){return f(this,null,function*(){if(t){const o=yield this.getInstanceObject();if(!o){console.error("Something went wrong: may be no connection?"),window.alert("Something went wrong: may be no connection?");return}Object.keys(this.state.data).forEach(r=>{const d=this.findAttr(r);!d||!d.doNotSave?i.default.setValue(o.native,r,this.state.data[r]):i.default.setValue(o.native,r,null)});try{const r=JSON.parse(JSON.stringify(o));Array.isArray(r.encryptedNative)&&(yield U("../../lib/js/crypto-js/crypto-js.js","crypto-js"),r.encryptedNative.forEach(d=>{r.native[d]&&(r.native[d]=z(this.secret,r.native[d]))})),yield this.props.socket.setObject(r._id,r)}catch(r){window.alert(`[JsonConfig] Cannot set object: ${r}`)}this.setState({changed:!1,data:o.native,updateData:this.state.updateData+1,originalData:JSON.parse(JSON.stringify(o.native))},()=>s&&x.Z.doNavigate(null))}else{if(this.state.changed)return this.setState({confirmDialog:!0});x.Z.doNavigate(null)}})}render(){const{classes:t}=this.props;return!this.state.data||!this.state.schema?h().createElement(P.Z,null):h().createElement("div",{className:this.props.classes.root},this.renderConfirmDialog(),this.getExportImportButtons(),this.renderSaveConfigDialog(),h().createElement(u.Z,{className:t.scroll,socket:this.props.socket,theme:this.props.theme,themeName:this.props.themeName,themeType:this.props.themeType,adapterName:this.props.adapterName,instance:this.props.instance,isFloatComma:this.props.isFloatComma,dateFormat:this.props.dateFormat,schema:this.state.schema,common:this.state.common,data:this.state.data,updateData:this.state.updateData,onError:s=>this.setState({error:s}),onChange:(s,o,r)=>{r&&this.state.error&&(window.alert(b.default.t("Cannot save configuration because of error in configuration")),r=!1),r&&!this.state.changed&&!o&&(r=!1),s?this.setState({data:s,changed:o,saveConfigDialog:r}):r!==void 0&&this.setState({saveConfigDialog:r})}}),h().createElement(et.Z,{isIFrame:!1,dense:!0,paddingLeft:0,newReact:!0,theme:this.state.theme,noTextOnButtons:this.props.width==="xs"||this.props.width==="sm"||this.props.width==="md",changed:this.state.error||this.state.changed,error:this.state.error,onSave:s=>f(this,null,function*(){return yield this.onSave(!0,s)}),onClose:()=>f(this,null,function*(){return yield this.onSave(!1)})}))}}H.propTypes={menuPadding:n().number,adapterName:n().string,instance:n().number,isFloatComma:n().bool,dateFormat:n().string,secret:n().string,socket:n().object,theme:n().object,themeName:n().string,themeType:n().string};var l=(0,F.withStyles)(v)(H),C=p(13569),nt=p(94466),at=Object.defineProperty,rt=(c,t,s)=>t in c?at(c,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):c[t]=s,st=(c,t,s)=>(rt(c,typeof t!="symbol"?t+"":t,s),s),pt=(c,t,s)=>new Promise((o,r)=>{var d=g=>{try{O(s.next(g))}catch(N){r(N)}},S=g=>{try{O(s.throw(g))}catch(N){r(N)}},O=g=>g.done?o(g.value):Promise.resolve(g.value).then(d,S);O((s=s.apply(c,t)).next())});const lt=c=>({root:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},scroll:{height:"100%",overflowY:"auto"},instanceIcon:{width:42,height:42,marginRight:c.spacing(2),verticalAlign:"middle"},button:{marginRight:5,width:36,height:36},version:{fontSize:12,opacity:.8,marginLeft:20,marginRight:10},versionAliveConnected:{color:c.palette.mode==="dark"?"#23a623":"#60ff60"},versionAliveNotConnected:{color:"#a67223"},buttonControl:{padding:5,transition:"opacity 0.2s",height:34},enabled:{color:C.Z[400],"&:hover":{backgroundColor:C.Z[200]}},disabled:{color:nt.Z[400],"&:hover":{backgroundColor:nt.Z[200]}},hide:{visibility:"hidden"}});class ot extends $.Component{constructor(t){super(t),st(this,"onObjectChange",(s,o)=>{var r,d,S;s==="system.adapter."+this.props.adapter+"."+this.props.instance&&this.setState({running:((r=o==null?void 0:o.common)==null?void 0:r.onlyWWW)||((d=o==null?void 0:o.common)==null?void 0:d.enabled),canStart:!((S=o==null?void 0:o.common)!=null&&S.onlyWWW)})}),st(this,"onStateChange",(s,o)=>{s==="system.adapter."+this.props.adapter+"."+this.props.instance+".alive"?this.setState({alive:o?o.val:!1}):s==="system.adapter."+this.props.adapter+"."+this.props.instance+".connected"?this.setState({connectedToHost:o?o.val:!1}):s===this.props.adapter+"."+this.props.instance+".info.connection"&&this.setState({connected:o?o.val:null})}),st(this,"extendObject",(s,o)=>{this.props.socket.extendObject(s,o).catch(r=>window.alert(r))}),this.state={checkedExist:!1,showStopAdminDialog:!1,running:!1,canStart:!1,alive:!1,connected:!1,connectedToHost:!1},this.refIframe=h().createRef(),this.registered=!1}componentDidUpdate(t,s,o){!this.registered&&this.refIframe.contentWindow&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe))}componentDidMount(){const t=window.addEventListener?"addEventListener":"attachEvent",s=window[t],o=t==="attachEvent"?"onmessage":"message";this.props.tab?this.props.socket.fileExists(this.props.adapter+".admin","tab.html").then(r=>{if(r)this.setState({checkedExist:"tab.html"});else return this.props.socket.fileExists(this.props.adapter+".admin","tab_m.html").then(d=>d?this.setState({checkedExist:"tab_m.html"}):window.alert("Cannot find tab(_m).html"))}):(this.props.socket.subscribeObject("system.adapter."+this.props.adapter+"."+this.props.instance,this.onObjectChange),this.props.socket.getObject("system.adapter."+this.props.adapter+"."+this.props.instance).then(r=>pt(this,null,function*(){var d,S,O;const g=yield this.props.socket.getState("system.adapter."+this.props.adapter+"."+this.props.instance+".alive");yield this.props.socket.subscribeState("system.adapter."+this.props.adapter+"."+this.props.instance+".alive",this.onStateChange);const N=yield this.props.socket.getState("system.adapter."+this.props.adapter+"."+this.props.instance+".connected");yield this.props.socket.subscribeState("system.adapter."+this.props.adapter+"."+this.props.instance+".connected",this.onStateChange);let V;try{V=yield this.props.socket.getState(this.props.adapter+"."+this.props.instance+".info.connection"),this.props.socket.subscribeState("system.adapter."+this.props.adapter+"."+this.props.instance+".info.connection",this.onStateChange)}catch(ct){V=null}this.setState({checkedExist:!0,running:((d=r==null?void 0:r.common)==null?void 0:d.onlyWWW)||((S=r==null?void 0:r.common)==null?void 0:S.enabled),canStart:!((O=r==null?void 0:r.common)!=null&&O.onlyWWW),alive:(g==null?void 0:g.val)||!1,connectedToHost:(N==null?void 0:N.val)||!1,connected:V?V.val:null})})).catch(r=>{console.error(r),this.setState({checkedExist:!0,running:!1})})),!this.registered&&this.refIframe.contentWindow&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe)),s(o,r=>this.closeConfig(r),!1)}componentWillUnmount(){const t=window.removeEventListener?"removeEventListener":"detachEvent",s=window[t],o=t==="detachEvent"?"onmessage":"message";this.props.socket.unsubscribeObject("system.adapter."+this.props.adapter+"."+this.props.instance,this.onObjectChange),s(o,r=>this.closeConfig(r),!1),this.registered&&this.props.onUnregisterIframeRef(this.refIframe),this.refIframe=null}closeConfig(t){t.data==="close"||t.message==="close"?this.props.easyMode?x.Z.doNavigate("easy"):x.Z.doNavigate("tab-instances"):t.data==="change"||t.message==="change"?this.props.configStored(!1):(t.data==="nochange"||t.message==="nochange")&&this.props.configStored(!0)}renderHelpButton(){return this.props.jsonConfig?h().createElement("div",{style:{display:"inline-block",position:"absolute",right:0,top:5}},h().createElement(w.Z,{size:"small",title:this.props.t("Show help for this adapter")},h().createElement(T.Z,{classes:{root:this.props.classes.button},onClick:()=>{let t=this.props.lang;t!=="en"&&t!=="de"&&t!=="ru"&&t!=="zh-cn"&&(t="en"),window.open(`https://www.iobroker.net/#${t}/adapters/adapterref/iobroker.${this.props.adapter}/README.md`,"help")}},h().createElement(Q.default,null)))):null}getConfigurator(){if(this.props.jsonConfig)return h().createElement(l,{menuPadding:this.props.menuPadding,theme:this.props.theme,width:this.props.width,adapterName:this.props.adapter,instance:this.props.instance,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,configStored:this.props.configStored,t:this.props.t});{const t=`adapter/${this.props.adapter}/${this.props.tab?this.state.checkedExist:this.props.materialize?"index_m.html":"index.html"}?${this.props.instance||0}&newReact=true&${this.props.instance||0}&react=${this.props.themeName}`;return this.state.checkedExist?h().createElement("iframe",{ref:s=>this&&(this.refIframe=s),title:"config",className:this.props.className,src:t}):null}}returnStopAdminDialog(){return this.state.showStopAdminDialog?h().createElement(R.default,{title:this.props.t("Please confirm"),text:this.props.t("stop_admin",this.props.instance),ok:this.props.t("Stop admin"),onClose:t=>{t&&this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{common:{enabled:!1}}),this.setState({showStopAdminDialog:!1})}}):null}render(){const{classes:t}=this.props;return h().createElement(Y.Z,{className:t.root},h().createElement(A.Z,{color:"default",position:"static"},h().createElement(K.Z,{variant:"dense"},h().createElement(W.Z,{variant:"h6",color:"inherit"},this.props.jsonConfig?h().createElement(tt.default,{src:this.props.icon,className:this.props.classes.instanceIcon}):null,`${this.props.t("Instance settings")}: ${this.props.adapter}.${this.props.instance}`,this.props.version?h().createElement("span",{className:(0,J.default)(this.props.classes.version,this.state.alive&&this.state.connectedToHost&&this.props.classes.versionAliveConnected,this.state.alive&&!this.state.connectedToHost&&this.props.classes.versionAliveNotConnected)},"v",this.props.version):null,h().createElement(w.Z,{title:this.props.t("Start/stop")},h().createElement("span",null,h().createElement(I.IconButton,{size:"small",onClick:s=>{s.stopPropagation(),s.preventDefault(),this.state.running&&this.props.adapter+"."+this.props.instance===this.props.adminInstance?this.setState({showStopAdminDialog:!0}):this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{common:{enabled:!this.state.running}})},onFocus:s=>s.stopPropagation(),className:(0,J.default)(t.buttonControl,this.state.canStart?this.state.running?t.enabled:t.disabled:t.hide)},this.state.running?h().createElement(X.Z,null):h().createElement(q.default,null)))),h().createElement(w.Z,{title:this.props.t("Restart")},h().createElement("span",null,h().createElement(I.IconButton,{size:"small",onClick:s=>{s.stopPropagation(),this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{})},onFocus:s=>s.stopPropagation(),className:(0,J.default)(t.buttonControl,!this.state.canStart&&t.hide),disabled:!this.state.running},h().createElement(_.default,null))))),this.renderHelpButton())),this.getConfigurator(),this.returnStopAdminDialog())}}ot.propTypes={menuPadding:n().number,adapter:n().string,instance:n().number,materialize:n().bool,tab:n().bool,jsonConfig:n().bool,socket:n().object,themeName:n().string,themeType:n().string,t:n().func,isFloatComma:n().bool,dateFormat:n().string,className:n().string,icon:n().string,readme:n().string,lang:n().string,easyMode:n().bool,adminInstance:n().string};var ht=(0,F.withStyles)(lt)(ot)}}]);
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=8596.62e5938c.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["components/JsonConfigComponent/ConfigTabs.jsx","components/JsonConfigComponent/index.jsx","components/JsonConfig.jsx","tabs/Config.jsx"],"names":["styles","theme","ConfigTabs","ConfigGeneric","props","tab","items","Tabs","name","disabled","Tab","ConfigPanel","JsonConfigComponent","commandRunning","id","state","data","value","cb","saveConfig","newState","_data","attr","error","errors","a","socket","i18n","adapterName","lang","path","exists","fileName","json","e","obj","systemConfig","schema","_list","attrs","dep","depObj","item","LinearProgress","decryptLegacy","key","result","i","encryptLegacy","decrypt","textParts","_key","iv","cipherParams","decryptedBinary","encrypt","_iv","encrypted","loadScript","src","resolve","script","JsonConfig","Router","evt","f","contents","err","prevProps","prevState","Tooltip","Fab","input","Publish","Utils","exist","Confirm","isYes","keys","k","doSave","close","encryptedObj","classes","changed","saveConfigDialog","SaveCloseButtons","green","red","Config","snapshot","eventFunc","emit","eventName","alive","connectedToHost","connected","event","Help","el","Paper","AppBar","Toolbar","Typography","Icon","Pause","PlayArrow","Refresh"],"mappings":"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","file":"static/js/8596.62e5938c.chunk.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\n\nimport ConfigGeneric from './ConfigGeneric';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles = theme => ({\n tabs: {\n height: '100%',\n width: '100%',\n },\n panel: {\n height: 'calc(100% - 48px)',\n width: '100%',\n display: 'block'\n }\n});\n\nclass ConfigTabs extends ConfigGeneric {\n constructor(props) {\n super(props);\n\n let tab = (window._localStorage || window.localStorage).getItem((this.props.dialogName || 'App') + '.' + this.props.adapterName) || Object.keys(this.props.schema.items)[0];\n if (!Object.keys(this.props.schema.items).includes(tab)) {\n tab = Object.keys(this.props.schema.items)[0];\n }\n this.state = {\n tab,\n };\n }\n\n render() {\n const items = this.props.schema.items;\n\n return <div className={this.props.classes.tabs}>\n <Tabs\n value={this.state.tab}\n onChange={(e, tab) => {\n (window._localStorage || window.localStorage).setItem((this.props.dialogName || 'App') + '.' + this.props.adapterName, tab);\n this.setState({tab});\n }}>\n {Object.keys(items).map(name => {\n let disabled;\n if (this.props.custom) {\n const hidden = this.executeCustom(items[name].hidden, this.props.data, this.props.customObj, this.props.instanceObj);\n if (hidden) {\n return null;\n }\n disabled = this.executeCustom(items[name].disabled, this.props.data, this.props.customObj, this.props.instanceObj);\n } else {\n const hidden = this.execute(items[name].hidden, false);\n if (hidden) {\n return null;\n }\n disabled = this.execute(items[name].disabled, false);\n }\n return <Tab wrapped disabled={disabled} key={name} value={name} label={this.getText(items[name].label)} />\n })}\n </Tabs>\n {<ConfigPanel\n isParentTab={true}\n key={this.state.tab}\n index={1001}\n arrayIndex={this.props.arrayIndex}\n globalData={this.props.globalData}\n onCommandRunning={this.props.onCommandRunning}\n commandRunning={this.props.commandRunning}\n className={this.props.classes.panel}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n customs={this.props.customs}\n alive={this.props.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={this.props.originalData}\n systemConfig={this.props.systemConfig}\n onError={this.props.onError}\n onChange={this.props.onChange}\n multiEdit={this.props.multiEdit}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n // disabled={disabled}\n imagePrefix={this.props.imagePrefix}\n\n changeLanguage={this.props.changeLanguage}\n forceUpdate={this.props.forceUpdate}\n registerOnForceUpdate={this.props.registerOnForceUpdate}\n\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n custom={this.props.custom}\n\n schema={items[this.state.tab]}\n />}\n </div>;\n }\n}\n\nConfigTabs.propTypes = {\n socket: PropTypes.object.isRequired,\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n originalData: PropTypes.object,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n customs: PropTypes.object,\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n commandRunning: PropTypes.bool,\n onCommandRunning: PropTypes.func,\n dateFormat: PropTypes.string,\n isFloatComma: PropTypes.bool,\n multiEdit: PropTypes.bool,\n imagePrefix: PropTypes.string,\n\n customObj: PropTypes.object,\n instanceObj: PropTypes.object,\n custom: PropTypes.bool,\n\n registerOnForceUpdate: PropTypes.func.isRequired,\n forceUpdate: PropTypes.func.isRequired,\n changeLanguage: PropTypes.func,\n systemConfig: PropTypes.object,\n alive: PropTypes.bool,\n common: PropTypes.object,\n};\n\nexport default withStyles(styles)(ConfigTabs);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\n\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport I18n from '@iobroker/adapter-react-v5/i18n';\n\nimport ConfigTabs from './ConfigTabs';\nimport ConfigPanel from './ConfigPanel';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n height: '100%'\n }\n});\n\nclass JsonConfigComponent extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n originalData: JSON.stringify(this.props.data),\n changed: false,\n errors: {\n\n },\n updateData: this.props.updateData,\n systemConfig: null,\n alive: false,\n commandRunning: false,\n schema: JSON.parse(JSON.stringify(this.props.schema))\n };\n\n this.forceUpdateHandlers = {};\n\n this.buildDependencies(this.state.schema);\n\n this.readData();\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.updateData !== state.updateData) {\n return {\n updateData: props.updateData,\n originalData: JSON.stringify(props.data),\n schema: JSON.parse(JSON.stringify(props.schema)),\n };\n } else {\n return null;\n }\n }\n\n static loadI18n(socket, i18n, adapterName) {\n if (i18n === true || (i18n && typeof i18n === 'string')) {\n const lang = I18n.getLanguage();\n const path = typeof i18n === 'string' ? i18n : 'i18n';\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}.json`)\n .then(exists => {\n if (exists) {\n return `${path}/${lang}.json`;\n } else {\n return socket.fileExists(adapterName + '.admin', `${path}/${lang}/translations.json`)\n .then(exists =>\n exists ? `${path}/${lang}/translations.json` : '')\n }\n })\n .then(fileName => {\n if (fileName) {\n return socket.readFile(adapterName + '.admin', fileName)\n .then(json => {\n if (json.file !== undefined) {\n json = json.file;\n }\n try {\n json = JSON.parse(json);\n // apply file to I18n\n I18n.extendTranslations(json, lang);\n } catch (e) {\n console.error(`Cannot parse language file \"${adapterName}.admin/${fileName}: ${e}`);\n }\n })\n } else {\n console.warn(`Cannot find i18n for ${adapterName} / ${fileName}`);\n return Promise.resolve();\n }\n });\n } else if (i18n && typeof i18n === 'object') {\n I18n.extendTranslations(i18n);\n return Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n\n onCommandRunning = commandRunning => this.setState( {commandRunning});\n\n readSettings() {\n if ((this.props.custom || this.props.common) && this.props.data) {\n return Promise.resolve();\n } else {\n return this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`)\n .then(obj => this.setState({common: obj.common, data: this.props.data || obj.native}));\n }\n }\n\n readData() {\n this.readSettings()\n .then(() => this.props.socket.getCompactSystemConfig())\n .then(systemConfig =>\n this.props.socket.getState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`)\n .then(state => {\n if (this.props.custom) {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)});\n } else {\n this.setState({systemConfig: systemConfig.common, alive: !!(state && state.val)}, () =>\n this.props.socket.subscribeState(`system.adapter.${this.props.adapterName}.${this.props.instance}.alive`, this.onAlive));\n }\n }));\n }\n\n onAlive = (id, state) => {\n if ((state?.val || false) !== this.state.alive) {\n this.setState({alive: state?.val || false});\n }\n }\n\n onChange = (data, value, cb, saveConfig) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(data, value, saveConfig);\n cb && cb();\n } else {\n if (data) {\n const newState = { data };\n\n const _data = {};\n // remove all attributes starting with \"_\"\n Object.keys(data).forEach(attr => !attr.startsWith('_') && (_data[attr] = data[attr]));\n\n newState.changed = JSON.stringify(_data) !== this.state.originalData;\n\n this.setState(newState, () => {\n this.props.onChange(_data, newState.changed, saveConfig);\n cb && cb();\n });\n } else if (saveConfig) {\n this.props.onChange(null, null, saveConfig);\n }\n }\n }\n\n onError = (attr, error) => {\n this.errorChached = this.errorChached || JSON.parse(JSON.stringify(this.state.errors));\n const errors = this.errorChached;\n if (error) {\n errors[attr] = error;\n } else {\n delete errors[attr];\n }\n\n if (JSON.stringify(errors) !== JSON.stringify(this.state.errors)) {\n this.errorTimeout && clearTimeout(this.errorTimeout);\n this.errorTimeout = setTimeout(() => this.setState({ errors: this.errorChached }, () => {\n this.errorTimeout = null;\n this.errorChached = null;\n this.props.onError(!!Object.keys(this.state.errors).length);\n }), 50);\n } else {\n this.errorChached = null;\n }\n }\n\n flatten(schema, _list) {\n _list = _list || {};\n if (schema.items) {\n Object.keys(schema.items).forEach(attr => {\n _list[attr] = schema.items[attr];\n this.flatten(schema.items[attr], _list);\n });\n }\n\n return _list;\n }\n\n buildDependencies(schema) {\n const attrs = this.flatten(schema);\n Object.keys(attrs).forEach(attr => {\n if (attrs[attr].confirm?.alsoDependsOn) {\n attrs[attr].confirm?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].confirmDependsOn = attrs[dep].confirmDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n if (depObj.confirm) {\n depObj.confirm.cancel = 'Undo';\n }\n\n attrs[dep].confirmDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].onChange?.alsoDependsOn) {\n attrs[attr].onChange?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].onChangeDependsOn = attrs[dep].onChangeDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].onChangeDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].hidden?.alsoDependsOn) {\n attrs[attr].hidden?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].hiddenDependsOn = attrs[dep].hiddenDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].hiddenDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].label?.alsoDependsOn) {\n attrs[attr].label?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].labelDependsOn = attrs[dep].labelDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].labelDependsOn.push(depObj);\n }\n });\n }\n\n if (attrs[attr].help?.alsoDependsOn) {\n attrs[attr].help?.alsoDependsOn.forEach(dep => {\n if (!attrs[dep]) {\n console.error(`[JsonConfigComponent] Attribute ${dep} does not exist!`);\n if (dep.startsWith('data.')) {\n console.warn(`[JsonConfigComponent] please use \"${dep.replace(/^data\\./, '')}\" instead of \"${dep}\"`);\n }\n } else {\n attrs[dep].helpDependsOn = attrs[dep].helpDependsOn || [];\n\n const depObj = {...attrs[attr], attr};\n\n attrs[dep].helpDependsOn.push(depObj);\n }\n });\n }\n });\n }\n\n renderItem(item) {\n if (item.type === 'tabs') {\n return <ConfigTabs\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n } else if (item.type === 'panel' || !item.type) {\n return <ConfigPanel\n index={1000}\n isParentTab={true}\n onCommandRunning={this.onCommandRunning}\n commandRunning={this.state.commandRunning}\n socket={this.props.socket}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n common={this.props.common}\n alive={this.state.alive}\n themeType={this.props.themeType}\n themeName={this.props.themeName}\n data={this.props.data}\n originalData={JSON.parse(this.state.originalData)}\n schema={item}\n systemConfig={this.state.systemConfig}\n customs={this.props.customs}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n multiEdit={this.props.multiEdit}\n imagePrefix={this.props.imagePrefix}\n\n custom={this.props.custom}\n customObj={this.props.customObj}\n instanceObj={this.props.instanceObj}\n\n changeLanguage={this.changeLanguage}\n forceUpdate={this.forceAttrUpdate}\n registerOnForceUpdate={this.registerOnForceUpdate}\n\n onChange={this.onChange}\n onError={(attr, error) => this.onError(attr, error)}\n />;\n }\n }\n\n changeLanguage = () => {\n this.forceUpdate();\n }\n\n forceAttrUpdate = (attr, data) => {\n if (Array.isArray(attr)) {\n attr.forEach(a =>\n this.forceUpdateHandlers[a] && this.forceUpdateHandlers[a](data));\n } else {\n if (this.forceUpdateHandlers[attr]) {\n this.forceUpdateHandlers[attr](data);\n }\n }\n }\n\n registerOnForceUpdate = (attr, cb) => {\n if (cb) {\n this.forceUpdateHandlers[attr] = cb;\n } else if (this.forceUpdateHandlers[attr]) {\n delete this.forceUpdateHandlers[attr];\n }\n }\n\n render() {\n if (!this.state.systemConfig) {\n return <LinearProgress />;\n }\n\n return <div className={this.props.classes.root}>\n {this.renderItem(this.state.schema)}\n </div>;\n }\n}\n\nJsonConfigComponent.propTypes = {\n socket: PropTypes.object.isRequired,\n\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n common: PropTypes.object,\n customs: PropTypes.object, // custom components\n\n custom: PropTypes.bool, // is the customs settings must be shown\n customObj: PropTypes.object,\n multiEdit: PropTypes.bool, // set if user edits more than one object simultaneously\n instanceObj: PropTypes.object,\n dateFormat: PropTypes.string,\n isFloatComma: PropTypes.bool,\n imagePrefix: PropTypes.string,\n\n themeType: PropTypes.string,\n themeName: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n data: PropTypes.object.isRequired,\n updateData: PropTypes.number,\n schema: PropTypes.object,\n onError: PropTypes.func,\n onChange: PropTypes.func,\n onValueChange: PropTypes.func,\n};\n\nexport default withStyles(styles)(JsonConfigComponent);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport JSON5 from 'json5';\n\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Tooltip from '@mui/material/Tooltip';\nimport Fab from '@mui/material/Fab';\nimport PublishIcon from '@mui/icons-material/Publish';\n\nimport SaveCloseButtons from '@iobroker/adapter-react-v5/Components/SaveCloseButtons';\nimport Router from '@iobroker/adapter-react-v5/Components/Router';\nimport theme from '@iobroker/adapter-react-v5/Theme';\nimport ConfirmDialog from '@iobroker/adapter-react-v5/Dialogs/Confirm';\nimport I18n from '@iobroker/adapter-react-v5/i18n';\n\nimport JsonConfigComponent from './JsonConfigComponent';\nimport ConfigGeneric from '@iobroker/adapter-react-v5/Components/JsonConfigComponent/ConfigGeneric';\nimport Utils from './Utils';\n\nconst styles = {\n root: {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n },\n scroll: {\n height: 'calc(100% - 48px - 48px)',\n overflowY: 'auto'\n },\n exportImportButtons: {\n position: 'absolute',\n top: 5,\n right: 0,\n zIndex: 3,\n },\n button: {\n marginRight: 5\n }\n};\n\n/**\n * Decrypt the password/value with given key\n * @param key - Secret key\n * @param value - value to decrypt\n */\nfunction decryptLegacy(key, value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n}\n\n/**\n * Encrypt the password/value with given key\n * @param key - Secret key\n * @param value - value to encrypt\n */\nfunction encryptLegacy(key, value) {\n let result = '';\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(key[i % key.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n return result;\n}\n\n/**\n * Decrypt the password/value with given key\n * Usage:\n * ```\n * function load(settings, onChange) {\n * if (settings.password) {\n * settings.password = decrypt(systemSecret, settings.password);\n * // same as\n * settings.password = decrypt(settings.password);\n * }\n * // ...\n * }\n * ```\n * @param {string} key - Secret key\n * @param {string} value - value to decrypt\n * @returns {string}\n */\nfunction decrypt(key, value) {\n if (typeof value !== 'string') {\n return value;\n }\n\n // if not encrypted as aes-192 or key not a valid 48 digit hex -> fallback\n if (!value.startsWith(`$/aes-192-cbc:`) || !/^[0-9a-f]{48}$/.test(key)) {\n return decryptLegacy(key, value);\n }\n\n // algorithm:iv:encryptedValue\n const textParts = value.split(':', 3);\n\n const _key = window.CryptoJS.enc.Hex.parse(key);\n const iv = window.CryptoJS.enc.Hex.parse(textParts[1]);\n\n const cipherParams = window.CryptoJS.lib.CipherParams.create({ ciphertext: window.CryptoJS.enc.Hex.parse(textParts[2]) });\n\n const decryptedBinary = window.CryptoJS.AES.decrypt(cipherParams, _key, { iv });\n\n return window.CryptoJS.enc.Utf8.stringify(decryptedBinary);\n}\n\n/**\n * Encrypt the password/value with given key\n * Usage:\n * ```\n * function save(callback) {\n * ...\n * if (obj.password) {\n * obj.password = encrypt(systemSecret, obj.password);\n * // same as\n * obj.password = decrypt(obj.password);\n * }\n * ...\n * }\n * ```\n * @param {string} key - Secret key\n * @param {string} value - value to encrypt\n * @param {string} _iv - optional initial vector for tests\n * @returns {string}\n */\nfunction encrypt(key, value, _iv) {\n if (typeof value !== 'string') {\n return value;\n }\n\n if (!/^[0-9a-f]{48}$/.test(key)) {\n // key length is not matching for AES-192-CBC or key is no valid hex - fallback to old encryption\n return encryptLegacy(key, value);\n }\n\n let iv;\n if (_iv) {\n iv = window.CryptoJS.enc.Hex.parse(_iv);\n } else {\n iv = window.CryptoJS.lib.WordArray.random(128 / 8);\n }\n\n const _key = window.CryptoJS.enc.Hex.parse(key);\n const encrypted = window.CryptoJS.AES.encrypt(value, _key, { iv }).ciphertext;\n\n return `$/aes-192-cbc:${window.CryptoJS.enc.Hex.stringify(iv)}:${encrypted}`;\n}\n\nfunction loadScript(src, id) {\n if (!id || !document.getElementById(id)) {\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('id', id);\n script.onload = resolve;\n script.src = src;\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n } else {\n return document.getElementById(id).onload;\n }\n}\n\nclass JsonConfig extends Router {\n constructor(props) {\n super(props);\n\n this.state = {\n schema: null,\n data: null,\n updateData: 0,\n common: null,\n changed: false,\n confirmDialog: false,\n theme: theme(props.themeName), // buttons require special theme\n saveConfigDialog: false,\n };\n\n this.getInstanceObject()\n .then(obj => this.getConfigFile()\n .then(schema =>\n // load language\n JsonConfigComponent.loadI18n(this.props.socket, schema?.i18n, this.props.adapterName)\n .then(() => {\n if (obj) {\n this.setState({schema, data: obj.native, common: obj.common});\n } else {\n window.alert(`Instance system.adapter.${this.props.adapterName}.${this.props.instance} not found!`);\n }\n })));\n }\n\n /**\n * @private\n * @param {object} evt\n */\n handleFileSelect = evt => {\n let f = evt.target.files[0];\n if (f) {\n let r = new FileReader();\n r.onload = async e => {\n let contents = e.target.result;\n try {\n let json = JSON.parse(contents);\n this.setState({data: json});\n } catch (err) {\n window.alert(I18n.t('[JsonConfig] Failed to parse JSON file'));\n }\n };\n r.readAsText(f);\n } else {\n window.alert(I18n.t('[JsonConfig] Failed to open JSON File'));\n }\n }\n\n getExportImportButtons() {\n return <div className={this.props.classes.exportImportButtons}>\n <Tooltip title={this.props.t('Import settings from JSON file')}>\n <Fab size=\"small\" classes={{root: this.props.classes.button}} onClick={() => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', 0);\n input.addEventListener('change', e => this.handleFileSelect(e), false);\n input.click();\n }}>\n <PublishIcon />\n </Fab>\n </Tooltip>\n <Tooltip title={this.props.t('Export setting to JSON file')}>\n <Fab size=\"small\" classes={{root: this.props.classes.button}} onClick={() => {\n Utils.generateFile(this.props.adapterName + '.' + this.props.instance + '.json', this.state.data);\n }}>\n <PublishIcon style={{ transform: 'rotate(180deg)' }} />\n </Fab>\n </Tooltip>\n </div>;\n }\n\n getConfigFile() {\n return this.props.socket.fileExists(this.props.adapterName + '.admin', 'jsonConfig.json5')\n .then(exist => {\n if (exist) {\n return this.props.socket.readFile(this.props.adapterName + '.admin', 'jsonConfig.json5')\n } else {\n return this.props.socket.readFile(this.props.adapterName + '.admin', 'jsonConfig.json')\n }\n })\n .then(data => {\n if (data.file !== undefined) {\n data = data.file;\n }\n try {\n return JSON5.parse(data);\n } catch (e) {\n window.alert('[JsonConfig] Cannot parse json5 config!');\n }\n })\n .catch(e => window.alert('[JsonConfig] Cannot read file: ' + e));\n }\n\n getInstanceObject() {\n return this.props.socket.getObject(`system.adapter.${this.props.adapterName}.${this.props.instance}`)\n .then(obj => {\n // decode all native attributes listed in obj.encryptedNative\n if (Array.isArray(obj.encryptedNative)) {\n return this.props.socket.getSystemConfig()\n .then(async systemConfig => {\n await loadScript('../../lib/js/crypto-js/crypto-js.js', 'crypto-js');\n this.secret = systemConfig.native.secret;\n\n obj.encryptedNative.forEach(attr => {\n if (obj.native[attr]) {\n obj.native[attr] = decrypt(this.secret, obj.native[attr]);\n }\n });\n return obj;\n });\n } else {\n return obj;\n }\n })\n .catch(e => window.alert('[JsonConfig] Cannot read instance object: ' + e));\n }\n\n renderConfirmDialog() {\n if (!this.state.confirmDialog) {\n return null;\n }\n return <ConfirmDialog\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isYes =>\n this.setState({ confirmDialog: false }, () => isYes && Router.doNavigate(null))}\n />;\n }\n\n renderSaveConfigDialog() {\n if (!this.state.saveConfigDialog) {\n return null;\n } else {\n return <ConfirmDialog\n title={I18n.t('ra_Please confirm')}\n text={typeof this.state.saveConfigDialog === 'string' ? this.state.saveConfigDialog : I18n.t('Save configuration?')}\n ok={I18n.t('ra_Save')}\n cancel={I18n.t('ra_Cancel')}\n onClose={isYes =>\n this.setState({ saveConfigDialog: false }, () => isYes && this.onSave(true))}\n />;\n }\n }\n\n findAttr(attr, schema) {\n schema = schema || this.state.schema;\n if (schema.items) {\n if (schema.items[attr]) {\n return schema.items[attr];\n } else {\n const keys = Object.keys(schema.items);\n for (let k = 0; k < keys.length; k++) {\n const item = this.findAttr(attr, schema.items[keys[k]]);\n if (item) {\n return item;\n }\n }\n }\n }\n }\n\n async onSave(doSave, close) {\n if (doSave) {\n const obj = await this.getInstanceObject();\n\n if (!obj) {\n console.error('Something went wrong: may be no connection?');\n window.alert('Something went wrong: may be no connection?');\n return;\n }\n\n Object.keys(this.state.data).forEach(attr => {\n const item = this.findAttr(attr);\n if (!item || !item.doNotSave) {\n ConfigGeneric.setValue(obj.native, attr, this.state.data[attr]);\n } else {\n ConfigGeneric.setValue(obj.native, attr, null);\n }\n });\n\n try {\n const encryptedObj = JSON.parse(JSON.stringify(obj));\n // encode all native attributes listed in obj.encryptedNative\n if (Array.isArray(encryptedObj.encryptedNative)) {\n await loadScript('../../lib/js/crypto-js/crypto-js.js', 'crypto-js');\n\n encryptedObj.encryptedNative.forEach(attr => {\n if (encryptedObj.native[attr]) {\n encryptedObj.native[attr] = encrypt(this.secret, encryptedObj.native[attr]);\n }\n });\n }\n\n await this.props.socket.setObject(encryptedObj._id, encryptedObj);\n } catch (e) {\n window.alert(`[JsonConfig] Cannot set object: ${e}`);\n }\n\n this.setState({\n changed: false,\n data: obj.native,\n updateData: this.state.updateData + 1,\n originalData: JSON.parse(JSON.stringify(obj.native))\n }, () =>\n close && Router.doNavigate(null));\n } else {\n if (this.state.changed) {\n return this.setState({confirmDialog: true});\n } else {\n Router.doNavigate(null);\n }\n }\n }\n\n componentDidUpdate = (prevProps, prevState) => {\n if (prevState.changed !== this.state.changed){\n this.props.configStored(!this.state.changed);\n }\n }\n\n render() {\n const { classes } = this.props;\n if (!this.state.data || !this.state.schema) {\n return <LinearProgress />;\n }\n\n return <div className={this.props.classes.root}>\n {this.renderConfirmDialog()}\n {this.getExportImportButtons()}\n {this.renderSaveConfigDialog()}\n <JsonConfigComponent\n className={ classes.scroll }\n socket={this.props.socket}\n theme={this.props.theme}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n adapterName={this.props.adapterName}\n instance={this.props.instance}\n isFloatComma={this.props.isFloatComma}\n dateFormat={this.props.dateFormat}\n\n schema={this.state.schema}\n common={this.state.common}\n data={this.state.data}\n updateData={this.state.updateData}\n onError={error => this.setState({ error })}\n onChange={(data, changed, saveConfigDialog) => {\n if (saveConfigDialog && this.state.error) {\n window.alert(I18n.t('Cannot save configuration because of error in configuration'));\n saveConfigDialog = false;\n }\n if (saveConfigDialog && !this.state.changed && !changed) {\n saveConfigDialog = false;\n }\n if (data) {\n this.setState({ data, changed, saveConfigDialog });\n } else if (saveConfigDialog !== undefined) {\n this.setState({ saveConfigDialog });\n }\n }}\n />\n <SaveCloseButtons\n isIFrame={false}\n dense={true}\n paddingLeft={0}\n newReact\n theme={this.state.theme}\n noTextOnButtons={this.props.width === 'xs' || this.props.width === 'sm' || this.props.width === 'md'}\n changed={this.state.error || this.state.changed}\n error={this.state.error}\n onSave={async close => await this.onSave(true, close)}\n onClose={async () => await this.onSave(false)}\n />\n </div>;\n }\n}\n\nJsonConfig.propTypes = {\n menuPadding: PropTypes.number,\n adapterName: PropTypes.string,\n instance: PropTypes.number,\n isFloatComma: PropTypes.bool,\n dateFormat: PropTypes.string,\n secret: PropTypes.string,\n\n socket: PropTypes.object,\n\n theme: PropTypes.object,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n};\n\nexport default withStyles(styles)(JsonConfig);","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@mui/styles';\nimport clsx from 'clsx';\n\nimport AppBar from '@mui/material/AppBar';\nimport Paper from '@mui/material/Paper';\nimport Fab from '@mui/material/Fab';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport {IconButton} from '@mui/material';\n\nimport HelpIcon from '@mui/icons-material/Help';\nimport PauseIcon from '@mui/icons-material/Pause';\nimport PlayArrowIcon from '@mui/icons-material/PlayArrow';\nimport RefreshIcon from '@mui/icons-material/Refresh';\n\nimport Router from '@iobroker/adapter-react-v5/Components/Router';\nimport Icon from '@iobroker/adapter-react-v5/Components/Icon';\nimport ConfirmDialog from '@iobroker/adapter-react-v5/Dialogs/Confirm';\n\nimport JsonConfig from '../components/JsonConfig';\nimport { green, red } from '@mui/material/colors';\n\nconst styles = theme => ({\n root: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n scroll: {\n height: '100%',\n overflowY: 'auto'\n },\n instanceIcon: {\n width: 42,\n height: 42,\n marginRight: theme.spacing(2),\n verticalAlign: 'middle'\n },\n button: {\n marginRight: 5,\n width: 36,\n height: 36,\n },\n version: {\n fontSize: 12,\n opacity: 0.8,\n marginLeft: 20,\n marginRight: 10,\n },\n versionAliveConnected: {\n color: theme.palette.mode === 'dark' ? '#23a623' : '#60ff60',\n },\n versionAliveNotConnected: {\n color: '#a67223'\n },\n buttonControl: {\n padding: 5,\n transition: 'opacity 0.2s',\n height: 34\n },\n enabled: {\n color: green[400],\n '&:hover': {\n backgroundColor: green[200]\n }\n },\n disabled: {\n color: red[400],\n '&:hover': {\n backgroundColor: red[200]\n }\n },\n hide: {\n visibility: 'hidden'\n },\n});\n\nclass Config extends Component {\n constructor(props) {\n super(props);\n\n this.state ={\n checkedExist: false,\n showStopAdminDialog: false,\n running: false,\n canStart: false,\n alive: false,\n connected: false,\n connectedToHost: false,\n };\n\n this.refIframe = React.createRef();\n this.registered = false;\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (!this.registered && this.refIframe.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n }\n\n componentDidMount() {\n // receive messages from IFRAME\n const eventFunc = window.addEventListener ? 'addEventListener' : 'attachEvent';\n const emit = window[eventFunc];\n const eventName = eventFunc === 'attachEvent' ? 'onmessage' : 'message';\n\n if (this.props.tab) {\n this.props.socket.fileExists(this.props.adapter + '.admin', 'tab.html')\n .then(exist => {\n if (exist) {\n this.setState({checkedExist: 'tab.html'});\n } else {\n return this.props.socket.fileExists(this.props.adapter + '.admin', 'tab_m.html')\n .then(exist =>\n exist ? this.setState({checkedExist: 'tab_m.html'}) : window.alert('Cannot find tab(_m).html'));\n }\n });\n } else {\n // this.props.socket.getState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.')\n this.props.socket.subscribeObject('system.adapter.' + this.props.adapter + '.' + this.props.instance, this.onObjectChange);\n this.props.socket.getObject('system.adapter.' + this.props.adapter + '.' + this.props.instance)\n .then(async obj => {\n const alive = await this.props.socket.getState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.alive');\n await this.props.socket.subscribeState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.alive', this.onStateChange);\n\n const connectedToHost = await this.props.socket.getState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.connected');\n await this.props.socket.subscribeState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.connected', this.onStateChange);\n\n let connected;\n try {\n connected = await this.props.socket.getState(this.props.adapter + '.' + this.props.instance + '.info.connection');\n this.props.socket.subscribeState('system.adapter.' + this.props.adapter + '.' + this.props.instance + '.info.connection', this.onStateChange);\n } catch (error) {\n // ignore\n connected = null;\n }\n\n this.setState({\n checkedExist: true,\n running: obj?.common?.onlyWWW || obj?.common?.enabled, canStart: !obj?.common?.onlyWWW,\n alive: alive?.val || false,\n connectedToHost: connectedToHost?.val || false,\n connected: connected ? connected.val : null,\n });\n })\n .catch(error => {\n console.error(error);\n this.setState({ checkedExist: true, running: false });\n });\n }\n\n if (!this.registered && this.refIframe.contentWindow) {\n this.registered = true;\n this.props.onRegisterIframeRef(this.refIframe);\n }\n\n emit(eventName, event => this.closeConfig(event), false);\n }\n\n onObjectChange = (id, obj) => {\n if (id === 'system.adapter.' + this.props.adapter + '.' + this.props.instance) {\n this.setState({ running: obj?.common?.onlyWWW || obj?.common?.enabled, canStart: !obj?.common?.onlyWWW });\n }\n };\n\n onStateChange = (id, state) => {\n if (id === 'system.adapter.' + this.props.adapter + '.' + this.props.instance + '.alive') {\n this.setState({ alive: state ? state.val : false });\n } else if (id === 'system.adapter.' + this.props.adapter + '.' + this.props.instance + '.connected') {\n this.setState({ connectedToHost: state ? state.val : false });\n } else if (id === this.props.adapter + '.' + this.props.instance + '.info.connection') {\n this.setState({ connected: state ? state.val : null });\n }\n };\n\n componentWillUnmount() {\n const eventFunc = window.removeEventListener ? 'removeEventListener' : 'detachEvent';\n const emit = window[eventFunc];\n const eventName = eventFunc === 'detachEvent' ? 'onmessage' : 'message';\n this.props.socket.unsubscribeObject('system.adapter.' + this.props.adapter + '.' + this.props.instance, this.onObjectChange);\n\n emit(eventName, event => this.closeConfig(event), false);\n\n this.registered && this.props.onUnregisterIframeRef(this.refIframe);\n this.refIframe = null;\n }\n\n closeConfig(event) {\n if (event.data === 'close' || event.message === 'close') {\n if (this.props.easyMode){\n Router.doNavigate('easy');\n } else {\n Router.doNavigate('tab-instances');\n }\n } else if (event.data === 'change' || event.message === 'change') {\n this.props.configStored(false);\n } else if (event.data === 'nochange' || event.message === 'nochange') {\n this.props.configStored(true);\n }\n }\n\n renderHelpButton() {\n if (this.props.jsonConfig) {\n return <div style={{ display: 'inline-block', position: 'absolute', right: 0, top: 5 }}>\n <Tooltip size=\"small\" title={this.props.t('Show help for this adapter')}>\n <Fab classes={{ root: this.props.classes.button }} onClick={() => {\n let lang = this.props.lang;\n if (lang !== 'en' && lang !== 'de' && lang !== 'ru' && lang !== 'zh-cn') {\n lang = 'en';\n }\n window.open(`https://www.iobroker.net/#${lang}/adapters/adapterref/iobroker.${this.props.adapter}/README.md`, 'help');\n }}>\n <HelpIcon />\n </Fab>\n </Tooltip>\n </div>;\n } else {\n return null;\n }\n }\n\n getConfigurator() {\n if (this.props.jsonConfig) {\n return <JsonConfig\n menuPadding={this.props.menuPadding}\n theme={this.props.theme}\n width={this.props.width}\n adapterName={this.props.adapter}\n instance={this.props.instance}\n socket={this.props.socket}\n themeName={this.props.themeName}\n themeType={this.props.themeType}\n dateFormat={this.props.dateFormat}\n isFloatComma={this.props.isFloatComma}\n configStored={this.props.configStored}\n t={this.props.t}\n />;\n } else {\n const src = `adapter/${this.props.adapter}/` +\n `${this.props.tab ? this.state.checkedExist : (this.props.materialize ? 'index_m.html' : 'index.html')}?` +\n `${this.props.instance || 0}&newReact=true&${this.props.instance || 0}&react=${this.props.themeName}`;\n\n if (this.state.checkedExist) {\n return <iframe\n ref={el => this && (this.refIframe = el)}\n title=\"config\"\n className={this.props.className}\n src={src}>\n </iframe>;\n } else {\n return null;\n }\n }\n }\n\n extendObject = (id, data) => {\n this.props.socket.extendObject(id, data)\n .catch(error => window.alert(error));\n }\n\n returnStopAdminDialog() {\n return this.state.showStopAdminDialog ? <ConfirmDialog\n title={this.props.t('Please confirm')}\n text={this.props.t('stop_admin', this.props.instance)}\n ok={this.props.t('Stop admin')}\n onClose={result => {\n result && this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, { common: { enabled: false } });\n this.setState({ showStopAdminDialog: false });\n }}\n /> : null;\n }\n\n render() {\n const { classes } = this.props;\n\n return <Paper className={classes.root}>\n <AppBar color=\"default\" position=\"static\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\">\n {this.props.jsonConfig ? <Icon src={this.props.icon} className={this.props.classes.instanceIcon} />\n : null}\n {`${this.props.t('Instance settings')}: ${this.props.adapter}.${this.props.instance}`}\n {this.props.version ? <span className={clsx(\n this.props.classes.version,\n this.state.alive && this.state.connectedToHost && this.props.classes.versionAliveConnected,\n this.state.alive && !this.state.connectedToHost && this.props.classes.versionAliveNotConnected,\n )}>v{this.props.version}</span> : null}\n <Tooltip title={this.props.t('Start/stop')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n event.preventDefault();\n if (this.state.running && this.props.adapter + '.' + this.props.instance === this.props.adminInstance) {\n this.setState({ showStopAdminDialog: true });\n } else {\n this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, { common: { enabled: !this.state.running } });\n }\n }}\n onFocus={event => event.stopPropagation()}\n className={clsx(classes.buttonControl, this.state.canStart ?\n (this.state.running ? classes.enabled : classes.disabled) : classes.hide)}\n >\n {this.state.running ? <PauseIcon /> : <PlayArrowIcon />}\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title={this.props.t('Restart')}>\n <span>\n <IconButton\n size=\"small\"\n onClick={event => {\n event.stopPropagation();\n this.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`, {});\n }}\n onFocus={event => event.stopPropagation()}\n className={clsx(classes.buttonControl, !this.state.canStart && classes.hide)}\n disabled={!this.state.running}\n >\n <RefreshIcon />\n </IconButton>\n </span>\n </Tooltip>\n {/*<IsVisible config={item} name=\"allowInstanceLink\">\n <Tooltip title={this.props.t('Instance link %s', this.props.instanceItem?.id)}>\n <span>\n <IconButton\n size=\"small\"\n className={clsx(classes.buttonControl, (!this.props.instanceItem?.links || !this.props.instanceItem?.links[0]) && classes.hide)}\n disabled={!this.state.running}\n onClick={event => {\n event.stopPropagation();\n if (this.props.instanceItem?.links.length === 1) {\n // replace IPv6 Address with [ipv6]:port\n let url = this.props.instanceItem?.links[0].link;\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n window.open(url, this.props.instanceItem?.id);\n } else {\n setShowLinks(true);\n }\n }}\n onFocus={event => event.stopPropagation()}\n >\n <InputIcon />\n </IconButton>\n </div>\n </Tooltip>\n </IsVisible>*/}\n </Typography>\n {this.renderHelpButton()}\n </Toolbar>\n </AppBar>\n {this.getConfigurator()}\n {this.returnStopAdminDialog()}\n </Paper>;\n }\n}\n\nConfig.propTypes = {\n menuPadding: PropTypes.number,\n adapter: PropTypes.string,\n instance: PropTypes.number,\n materialize: PropTypes.bool,\n tab: PropTypes.bool,\n jsonConfig: PropTypes.bool,\n socket: PropTypes.object,\n themeName: PropTypes.string,\n themeType: PropTypes.string,\n t: PropTypes.func,\n isFloatComma: PropTypes.bool,\n dateFormat: PropTypes.string,\n className: PropTypes.string,\n icon: PropTypes.string,\n readme: PropTypes.string,\n lang: PropTypes.string,\n easyMode: PropTypes.bool,\n adminInstance: PropTypes.string,\n};\n\nexport default withStyles(styles)(Config);"],"sourceRoot":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(){var $={72063:function(f,b,i){Promise.all([i.e(9920),i.e(3535),i.e(7230),i.e(1553),i.e(6129),i.e(4819),i.e(5854),i.e(7440),i.e(6412),i.e(5710)]).then(i.bind(i,52898))}},F={};function n(f){var b=F[f];if(b!==void 0)return b.exports;var i=F[f]={id:f,loaded:!1,exports:{}};return $[f].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=$,n.c=F,function(){n.amdD=function(){throw new Error("define cannot be used indirect")}}(),function(){n.n=function(f){var b=f&&f.__esModule?function(){return f.default}:function(){return f};return n.d(b,{a:b}),b}}(),function(){var f=Object.getPrototypeOf?function(i){return Object.getPrototypeOf(i)}:function(i){return i.__proto__},b;n.t=function(i,s){if(s&1&&(i=this(i)),s&8||typeof i=="object"&&i&&(s&4&&i.__esModule||s&16&&typeof i.then=="function"))return i;var l=Object.create(null);n.r(l);var v={};b=b||[null,f({}),f([]),f(f)];for(var d=s&2&&i;typeof d=="object"&&!~b.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach(function(p){v[p]=function(){return i[p]}});return v.default=function(){return i},n.d(l,v),l}}(),function(){n.d=function(f,b){for(var i in b)n.o(b,i)&&!n.o(f,i)&&Object.defineProperty(f,i,{enumerable:!0,get:b[i]})}}(),function(){n.f={},n.e=function(f){return Promise.all(Object.keys(n.f).reduce(function(b,i){return n.f[i](f,b),b},[]))}}(),function(){n.u=function(f){return"static/js/"+f+"."+{82:"49b15550",137:"7d0016fc",154:"d88f9877",157:"d9eb4df4",217:"cf6e20e6",267:"9f9fa59c",333:"561630e6",412:"3ffef7fb",486:"7d15b268",625:"582ac42c",633:"96f600a5",686:"ca471284",706:"dfe41604",882:"be7a4d5a",942:"207e42d0",1087:"ef4f84fe",1208:"31db5c6c",1222:"cd2063a8",1320:"f736245b",1366:"043d3607",1391:"2de19a97",1525:"b31c05ad",1538:"dfc7cc6f",1553:"1c221cad",1616:"61fe323f",1707:"f7df40a6",1826:"5be93bbc",1933:"41793e90",1977:"c9e4f50e",2137:"777f48b9",2155:"7a6c75f8",2261:"d77ad434",2262:"65bc5400",2468:"140b5b84",2477:"6b15d98c",2483:"1095f0b0",2584:"43527b4c",2601:"d909ebe3",2652:"9a062c3e",2744:"ef38d907",2747:"4a41e801",2804:"dbcd0064",2916:"cd836971",2925:"d004b8f5",3015:"be1eddee",3051:"e77311d6",3144:"36eeb4b7",3225:"179c0883",3362:"418c5cc8",3364:"558e865f",3433:"e552cd29",3444:"19fc19bb",3480:"49dbb899",3484:"b29fdc07",3535:"1e03d09b",3639:"1003bbf2",3659:"c4690adc",3700:"20f3fd68",3708:"25c08262",3750:"50d2282f",3779:"c746626c",3960:"89bbf355",3961:"a98ff7ab",4075:"9569c164",4080:"08bbf44a",4102:"c0329b75",4191:"645c91f4",4315:"1104cb2a",4342:"413d700a",4447:"73a8c44e",4456:"bc3c9316",4484:"110342a9",4552:"9e2ce14e",4602:"dd1c58a8",4617:"8d0361bd",4636:"385ff854",4815:"d1a7e288",4819:"faf4f7a9",4854:"f22f53cf",4883:"9285421a",4899:"a6c4272a",5028:"c715f042",5210:"892b55cb",5356:"2a01a5af",5413:"992de72c",5457:"178e51b1",5470:"4fc1a604",5498:"d2212d33",5537:"521b5c66",5685:"fc45361b",5710:"72e95b8e",5756:"97723189",5769:"b0d4a50e",5836:"a2dcbd47",5839:"46e155be",5841:"797bcac7",5854:"cb35337b",5875:"d4ccf8eb",5971:"0e12f083",6090:"33cd9234",6105:"83a24c55",6129:"e7024d99",6228:"8a168a0f",6232:"e044c776",6280:"c7a765f2",6322:"11298a2c",6343:"6471a5a9",6402:"f7ac8c4c",6412:"74e5d689",6452:"fea579f0",6454:"0cd3bd8e",6480:"7ae84254",6562:"41b1dc30",6821:"c216c1bf",6870:"f144f6cc",6879:"79f5be0e",6972:"dbbd79e9",7015:"3761173d",7081:"f167a70a",7183:"4b2058d3",7209:"9eeaef81",7228:"7cff9ec6",7230:"4f77153b",7271:"3edae9d7",7303:"3eac6445",7397:"1b13afbc",7412:"6bf54cc4",7440:"9ac4214e",7574:"a5efcf50",7578:"f483c48f",7664:"3fa78219",7738:"001030f6",7755:"83c235c2",7808:"bc888e96",7858:"d768cb91",7951:"abd5510b",7973:"6b50e6b3",7989:"a8efeb06",8112:"589ac3a7",8174:"caa35dc4",8229:"8cd5cf4a",8240:"f7408944",8310:"5f862fb7",8402:"d27a0ebb",8420:"90e09fe0",8430:"2b31fb61",8433:"a0c455e3",8449:"64232e12",8467:"190e056f",8487:"e9b32f83",8551:"065d713b",8574:"7bcc88d2",8576:"9071b899",8596:"803204cf",8645:"3de30e5e",8672:"55636cc9",8711:"fce5fb9f",8792:"df96d9a6",8806:"032ed98a",8842:"fb0ec9e0",8843:"5a9728f2",8930:"cbd7e106",8969:"363902cb",8976:"5eb72361",9027:"b14c5a3c",9039:"14d9c220",9342:"b3c3a375",9373:"7a7a25e5",9428:"c9ff3bbd",9466:"dcce6914",9526:"113dc042",9533:"71c9f0ad",9626:"dbfade82",9641:"91a04c00",9642:"76235e87",9810:"357c0bcf",9851:"aa20ee52",9910:"85dd0d83",9920:"a4363f48",9943:"da321d11"}[f]+".chunk.js"}}(),function(){n.miniCssF=function(f){return"static/css/"+f+".41ed5ace.chunk.css"}}(),function(){n.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(f){if(typeof window=="object")return window}}()}(),function(){n.hmd=function(f){return f=Object.create(f),f.children||(f.children=[]),Object.defineProperty(f,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+f.id)}}),f}}(),function(){n.o=function(f,b){return Object.prototype.hasOwnProperty.call(f,b)}}(),function(){var f={},b="src-rx:";n.l=function(i,s,l,v){if(f[i]){f[i].push(s);return}var d,p;if(l!==void 0)for(var c=document.getElementsByTagName("script"),y=0;y<c.length;y++){var h=c[y];if(h.getAttribute("src")==i||h.getAttribute("data-webpack")==b+l){d=h;break}}d||(p=!0,d=document.createElement("script"),d.charset="utf-8",d.timeout=120,n.nc&&d.setAttribute("nonce",n.nc),d.setAttribute("data-webpack",b+l),d.src=i),f[i]=[s];var S=function(x,P){d.onerror=d.onload=null,clearTimeout(w);var C=f[i];if(delete f[i],d.parentNode&&d.parentNode.removeChild(d),C&&C.forEach(function(m){return m(P)}),x)return x(P)},w=setTimeout(S.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=S.bind(null,d.onerror),d.onload=S.bind(null,d.onload),p&&document.head.appendChild(d)}}(),function(){n.r=function(f){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(f,"__esModule",{value:!0})}}(),function(){n.nmd=function(f){return f.paths=[],f.children||(f.children=[]),f}}(),function(){n.S={};var f={},b={};n.I=function(i,s){s||(s=[]);var l=b[i];if(l||(l=b[i]={}),!(s.indexOf(l)>=0)){if(s.push(l),f[i])return f[i];n.o(n.S,i)||(n.S[i]={});var v=n.S[i],d=function(S){return typeof console!="undefined"&&console.warn&&console.warn(S)},p="src-rx",c=function(S,w,x,P){var C=v[S]=v[S]||{},m=C[w];(!m||!m.loaded&&(!P!=!m.eager?P:p>m.from))&&(C[w]={get:x,from:p,eager:!!P})},y=function(S){var w=function(m){d("Initialization of sharing external failed: "+m)};try{var x=n(S);if(!x)return;var P=function(m){return m&&m.init&&m.init(n.S[i],s)};if(x.then)return h.push(x.then(P,w));var C=P(x);if(C&&C.then)return h.push(C.catch(w))}catch(m){w(m)}},h=[];switch(i){case"default":c("@iobroker/adapter-react-v5","3.1.33",function(){return Promise.all([n.e(5457),n.e(9943),n.e(9920),n.e(7230),n.e(1553),n.e(7228),n.e(4819),n.e(5854),n.e(7440),n.e(6412),n.e(6090)]).then(function(){return function(){return n(37228)}})}),c("@mui/material","5.10.2",function(){return Promise.all([n.e(9920),n.e(3535),n.e(2155),n.e(7808),n.e(8240),n.e(4819),n.e(5854),n.e(7440)]).then(function(){return function(){return n(84561)}})}),c("@mui/styles","5.10.2",function(){return Promise.all([n.e(7230),n.e(4819),n.e(5854),n.e(9039)]).then(function(){return function(){return n(78449)}})}),c("prop-types","15.8.1",function(){return n.e(2652).then(function(){return function(){return n(2652)}})}),c("react-ace","10.1.0",function(){return Promise.all([n.e(2262),n.e(4819),n.e(5854)]).then(function(){return function(){return n(92262)}})}),c("react-dom","18.2.0",function(){return Promise.all([n.e(3961),n.e(4819)]).then(function(){return function(){return n(73961)}})}),c("react","18.2.0",function(){return n.e(9526).then(function(){return function(){return n(89526)}})});break}return h.length?f[i]=Promise.all(h).then(function(){return f[i]=1}):f[i]=1}}}(),function(){var f;n.g.importScripts&&(f=n.g.location+"");var b=n.g.document;if(!f&&b&&(b.currentScript&&(f=b.currentScript.src),!f)){var i=b.getElementsByTagName("script");i.length&&(f=i[i.length-1].src)}if(!f)throw new Error("Automatic publicPath is not supported in this browser");f=f.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=f+"../../"}(),function(){var f=function(e){var r=function(u){return u.split(".").map(function(a){return+a==a?+a:a})},t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];return t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r(t[3]))),o},b=function(e,r){e=f(e),r=f(r);for(var t=0;;){if(t>=e.length)return t<r.length&&(typeof r[t])[0]!="u";var o=e[t],u=(typeof o)[0];if(t>=r.length)return u=="u";var a=r[t],g=(typeof a)[0];if(u!=g)return u=="o"&&g=="n"||g=="s"||u=="u";if(u!="o"&&u!="u"&&o!=a)return o<a;t++}},i=function(e){var r=e[0],t="";if(e.length===1)return"*";if(r+.5){t+=r==0?">=":r==-1?"<":r==1?"^":r==2?"~":r>0?"=":"!=";for(var o=1,u=1;u<e.length;u++)o--,t+=(typeof(g=e[u]))[0]=="u"?"-":(o>0?".":"")+(o=2,g);return t}var a=[];for(u=1;u<e.length;u++){var g=e[u];a.push(g===0?"not("+E()+")":g===1?"("+E()+" || "+E()+")":g===2?a.pop()+" "+a.pop():i(g))}return E();function E(){return a.pop().replace(/^\((.+)\)$/,"$1")}},s=function(e,r){if(0 in e){r=f(r);var t=e[0],o=t<0;o&&(t=-t-1);for(var u=0,a=1,g=!0;;a++,u++){var E,M,j=a<e.length?(typeof e[a])[0]:"";if(u>=r.length||(M=(typeof(E=r[u]))[0])=="o")return!g||(j=="u"?a>t&&!o:j==""!=o);if(M=="u"){if(!g||j!="u")return!1}else if(g)if(j==M)if(a<=t){if(E!=e[a])return!1}else{if(o?E>e[a]:E<e[a])return!1;E!=e[a]&&(g=!1)}else if(j!="s"&&j!="n"){if(o||a<=t)return!1;g=!1,a--}else{if(a<=t||M<j!=o)return!1;g=!1}else j!="s"&&j!="n"&&(g=!1,a--)}}var L=[],V=L.pop.bind(L);for(u=1;u<e.length;u++){var A=e[u];L.push(A==1?V()|V():A==2?V()&V():A?s(A,r):!V())}return!!V()},l=function(e,r){var t=n.S[e];if(!t||!n.o(t,r))throw new Error("Shared module "+r+" doesn't exist in shared scope "+e);return t},v=function(e,o){var t=e[o],o=Object.keys(t).reduce(function(u,a){return!u||b(u,a)?a:u},0);return o&&t[o]},d=function(e,r){var t=e[r];return Object.keys(t).reduce(function(o,u){return!o||!t[o].loaded&&b(o,u)?u:o},0)},p=function(e,r,t,o){return"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(o)+")"},c=function(e,r,t,o){var u=d(e,t);return C(e[t][u])},y=function(e,r,t,o){var u=d(e,t);return s(o,u)||typeof console!="undefined"&&console.warn&&console.warn(p(e,t,u,o)),C(e[t][u])},h=function(e,r,t,o){var u=d(e,t);if(!s(o,u))throw new Error(p(e,t,u,o));return C(e[t][u])},S=function(e,u,t){var o=e[u],u=Object.keys(o).reduce(function(a,g){return s(t,g)&&(!a||b(a,g))?g:a},0);return u&&o[u]},w=function(e,r,t,o){var u=e[t];return"No satisfying version ("+i(o)+") of shared module "+t+" found in shared scope "+r+`.
|
|
2
|
-
Available versions: `+Object.keys(u).map(function(a){return a+" from "+u[a].from}).join(", ")},x=function(e,r,t,o){var u=S(e,t,o);if(u)return C(u);throw new Error(w(e,r,t,o))},P=function(e,r,t,o){typeof console!="undefined"&&console.warn&&console.warn(w(e,r,t,o))},C=function(e){return e.loaded=1,e.get()},m=function(e){return function(r,t,o,u){var a=n.I(r);return a&&a.then?a.then(e.bind(e,r,n.S[r],t,o,u)):e(r,n.S[r],t,o,u)}},U=m(function(e,r,t){return
|
|
3
|
-
(`+w+")");x.code="CSS_CHUNK_LOAD_FAILED",x.type=S,x.request=w,c.parentNode.removeChild(c),p(x)}};return c.onerror=c.onload=y,c.href=v,document.head.appendChild(c),c},b=function(
|
|
4
|
-
(`+S+": "+w+")",c.name="ChunkLoadError",c.type=S,c.request=w,v[1](c)}};n.l(p,y,"chunk-"+s,s)}};var b=function(s,
|
|
1
|
+
(function(){var $={72063:function(f,b,i){Promise.all([i.e(9920),i.e(3535),i.e(7230),i.e(1553),i.e(6129),i.e(4819),i.e(5854),i.e(7440),i.e(6412),i.e(5710)]).then(i.bind(i,52898))}},F={};function n(f){var b=F[f];if(b!==void 0)return b.exports;var i=F[f]={id:f,loaded:!1,exports:{}};return $[f].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=$,n.c=F,function(){n.amdD=function(){throw new Error("define cannot be used indirect")}}(),function(){n.n=function(f){var b=f&&f.__esModule?function(){return f.default}:function(){return f};return n.d(b,{a:b}),b}}(),function(){var f=Object.getPrototypeOf?function(i){return Object.getPrototypeOf(i)}:function(i){return i.__proto__},b;n.t=function(i,s){if(s&1&&(i=this(i)),s&8||typeof i=="object"&&i&&(s&4&&i.__esModule||s&16&&typeof i.then=="function"))return i;var d=Object.create(null);n.r(d);var v={};b=b||[null,f({}),f([]),f(f)];for(var l=s&2&&i;typeof l=="object"&&!~b.indexOf(l);l=f(l))Object.getOwnPropertyNames(l).forEach(function(p){v[p]=function(){return i[p]}});return v.default=function(){return i},n.d(d,v),d}}(),function(){n.d=function(f,b){for(var i in b)n.o(b,i)&&!n.o(f,i)&&Object.defineProperty(f,i,{enumerable:!0,get:b[i]})}}(),function(){n.f={},n.e=function(f){return Promise.all(Object.keys(n.f).reduce(function(b,i){return n.f[i](f,b),b},[]))}}(),function(){n.u=function(f){return"static/js/"+f+"."+{82:"49b15550",137:"7d0016fc",154:"d88f9877",157:"d9eb4df4",217:"cf6e20e6",267:"9f9fa59c",333:"561630e6",412:"3ffef7fb",486:"7d15b268",625:"582ac42c",633:"96f600a5",686:"ca471284",706:"dfe41604",882:"be7a4d5a",942:"207e42d0",1087:"ef4f84fe",1208:"31db5c6c",1222:"cd2063a8",1320:"f736245b",1366:"043d3607",1391:"2de19a97",1525:"b31c05ad",1538:"dfc7cc6f",1553:"c291692c",1616:"61fe323f",1707:"f7df40a6",1826:"5be93bbc",1933:"41793e90",1977:"c9e4f50e",2137:"777f48b9",2155:"7a6c75f8",2261:"d77ad434",2262:"65bc5400",2468:"140b5b84",2477:"6b15d98c",2483:"1095f0b0",2584:"43527b4c",2601:"d909ebe3",2652:"9a062c3e",2744:"ef38d907",2747:"4a41e801",2804:"dbcd0064",2916:"cd836971",2925:"d004b8f5",3015:"be1eddee",3051:"e77311d6",3144:"36eeb4b7",3225:"179c0883",3362:"418c5cc8",3364:"558e865f",3433:"e552cd29",3444:"19fc19bb",3480:"49dbb899",3484:"b29fdc07",3535:"1e03d09b",3639:"1003bbf2",3659:"c4690adc",3700:"20f3fd68",3708:"25c08262",3750:"50d2282f",3779:"c746626c",3960:"89bbf355",3961:"a98ff7ab",4075:"9569c164",4080:"08bbf44a",4102:"c0329b75",4191:"645c91f4",4315:"1104cb2a",4342:"413d700a",4447:"73a8c44e",4456:"bc3c9316",4484:"110342a9",4552:"9e2ce14e",4602:"dd1c58a8",4617:"8d0361bd",4636:"385ff854",4815:"d1a7e288",4819:"faf4f7a9",4854:"f22f53cf",4883:"9285421a",4899:"a6c4272a",5028:"c715f042",5210:"892b55cb",5356:"2a01a5af",5413:"992de72c",5457:"178e51b1",5470:"4fc1a604",5498:"d2212d33",5537:"521b5c66",5685:"fc45361b",5710:"05cde997",5756:"97723189",5769:"b0d4a50e",5836:"a2dcbd47",5839:"46e155be",5841:"797bcac7",5854:"cb35337b",5875:"d4ccf8eb",5971:"0e12f083",6090:"33cd9234",6105:"83a24c55",6129:"e7024d99",6228:"8a168a0f",6232:"e044c776",6280:"c7a765f2",6322:"11298a2c",6343:"6471a5a9",6402:"f7ac8c4c",6412:"74e5d689",6452:"fea579f0",6454:"0cd3bd8e",6480:"7ae84254",6562:"41b1dc30",6821:"c216c1bf",6870:"f144f6cc",6879:"79f5be0e",6972:"dbbd79e9",7015:"3761173d",7081:"f167a70a",7183:"4b2058d3",7209:"9eeaef81",7228:"cd98fee1",7230:"4f77153b",7271:"3edae9d7",7303:"3eac6445",7397:"1b13afbc",7412:"e4b0556a",7440:"9ac4214e",7574:"a5efcf50",7578:"f483c48f",7664:"3fa78219",7738:"001030f6",7755:"83c235c2",7808:"bc888e96",7858:"b16a767f",7951:"abd5510b",7973:"6b50e6b3",7989:"a8efeb06",8112:"589ac3a7",8174:"caa35dc4",8229:"8cd5cf4a",8240:"f7408944",8310:"5f862fb7",8402:"d27a0ebb",8420:"90e09fe0",8430:"2b31fb61",8433:"a0c455e3",8449:"64232e12",8467:"190e056f",8487:"e9b32f83",8551:"065d713b",8574:"7bcc88d2",8576:"9071b899",8596:"62e5938c",8645:"3de30e5e",8672:"55636cc9",8711:"fce5fb9f",8792:"df96d9a6",8806:"032ed98a",8842:"fb0ec9e0",8843:"5a9728f2",8930:"cbd7e106",8969:"363902cb",8976:"5eb72361",9027:"b14c5a3c",9039:"14d9c220",9342:"b3c3a375",9373:"7a7a25e5",9428:"c9ff3bbd",9466:"dcce6914",9526:"113dc042",9533:"71c9f0ad",9626:"dbfade82",9641:"91a04c00",9642:"76235e87",9810:"357c0bcf",9851:"aa20ee52",9910:"85dd0d83",9920:"a4363f48",9943:"da321d11"}[f]+".chunk.js"}}(),function(){n.miniCssF=function(f){return"static/css/"+f+".41ed5ace.chunk.css"}}(),function(){n.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(f){if(typeof window=="object")return window}}()}(),function(){n.hmd=function(f){return f=Object.create(f),f.children||(f.children=[]),Object.defineProperty(f,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+f.id)}}),f}}(),function(){n.o=function(f,b){return Object.prototype.hasOwnProperty.call(f,b)}}(),function(){var f={},b="src-rx:";n.l=function(i,s,d,v){if(f[i]){f[i].push(s);return}var l,p;if(d!==void 0)for(var c=document.getElementsByTagName("script"),y=0;y<c.length;y++){var h=c[y];if(h.getAttribute("src")==i||h.getAttribute("data-webpack")==b+d){l=h;break}}l||(p=!0,l=document.createElement("script"),l.charset="utf-8",l.timeout=120,n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",b+d),l.src=i),f[i]=[s];var S=function(x,P){l.onerror=l.onload=null,clearTimeout(w);var C=f[i];if(delete f[i],l.parentNode&&l.parentNode.removeChild(l),C&&C.forEach(function(m){return m(P)}),x)return x(P)},w=setTimeout(S.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=S.bind(null,l.onerror),l.onload=S.bind(null,l.onload),p&&document.head.appendChild(l)}}(),function(){n.r=function(f){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(f,"__esModule",{value:!0})}}(),function(){n.nmd=function(f){return f.paths=[],f.children||(f.children=[]),f}}(),function(){n.S={};var f={},b={};n.I=function(i,s){s||(s=[]);var d=b[i];if(d||(d=b[i]={}),!(s.indexOf(d)>=0)){if(s.push(d),f[i])return f[i];n.o(n.S,i)||(n.S[i]={});var v=n.S[i],l=function(S){return typeof console!="undefined"&&console.warn&&console.warn(S)},p="src-rx",c=function(S,w,x,P){var C=v[S]=v[S]||{},m=C[w];(!m||!m.loaded&&(!P!=!m.eager?P:p>m.from))&&(C[w]={get:x,from:p,eager:!!P})},y=function(S){var w=function(m){l("Initialization of sharing external failed: "+m)};try{var x=n(S);if(!x)return;var P=function(m){return m&&m.init&&m.init(n.S[i],s)};if(x.then)return h.push(x.then(P,w));var C=P(x);if(C&&C.then)return h.push(C.catch(w))}catch(m){w(m)}},h=[];switch(i){case"default":c("@iobroker/adapter-react-v5","3.1.34",function(){return Promise.all([n.e(5457),n.e(9943),n.e(9920),n.e(7230),n.e(1553),n.e(7228),n.e(4819),n.e(5854),n.e(7440),n.e(6412),n.e(6090)]).then(function(){return function(){return n(37228)}})}),c("@mui/material","5.10.2",function(){return Promise.all([n.e(9920),n.e(3535),n.e(2155),n.e(7808),n.e(8240),n.e(4819),n.e(5854),n.e(7440)]).then(function(){return function(){return n(84561)}})}),c("@mui/styles","5.10.2",function(){return Promise.all([n.e(7230),n.e(4819),n.e(5854),n.e(9039)]).then(function(){return function(){return n(78449)}})}),c("prop-types","15.8.1",function(){return n.e(2652).then(function(){return function(){return n(2652)}})}),c("react-ace","10.1.0",function(){return Promise.all([n.e(2262),n.e(4819),n.e(5854)]).then(function(){return function(){return n(92262)}})}),c("react-dom","18.2.0",function(){return Promise.all([n.e(3961),n.e(4819)]).then(function(){return function(){return n(73961)}})}),c("react","18.2.0",function(){return n.e(9526).then(function(){return function(){return n(89526)}})});break}return h.length?f[i]=Promise.all(h).then(function(){return f[i]=1}):f[i]=1}}}(),function(){var f;n.g.importScripts&&(f=n.g.location+"");var b=n.g.document;if(!f&&b&&(b.currentScript&&(f=b.currentScript.src),!f)){var i=b.getElementsByTagName("script");i.length&&(f=i[i.length-1].src)}if(!f)throw new Error("Automatic publicPath is not supported in this browser");f=f.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=f+"../../"}(),function(){var f=function(e){var r=function(u){return u.split(".").map(function(a){return+a==a?+a:a})},t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];return t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r(t[3]))),o},b=function(e,r){e=f(e),r=f(r);for(var t=0;;){if(t>=e.length)return t<r.length&&(typeof r[t])[0]!="u";var o=e[t],u=(typeof o)[0];if(t>=r.length)return u=="u";var a=r[t],g=(typeof a)[0];if(u!=g)return u=="o"&&g=="n"||g=="s"||u=="u";if(u!="o"&&u!="u"&&o!=a)return o<a;t++}},i=function(e){var r=e[0],t="";if(e.length===1)return"*";if(r+.5){t+=r==0?">=":r==-1?"<":r==1?"^":r==2?"~":r>0?"=":"!=";for(var o=1,u=1;u<e.length;u++)o--,t+=(typeof(g=e[u]))[0]=="u"?"-":(o>0?".":"")+(o=2,g);return t}var a=[];for(u=1;u<e.length;u++){var g=e[u];a.push(g===0?"not("+E()+")":g===1?"("+E()+" || "+E()+")":g===2?a.pop()+" "+a.pop():i(g))}return E();function E(){return a.pop().replace(/^\((.+)\)$/,"$1")}},s=function(e,r){if(0 in e){r=f(r);var t=e[0],o=t<0;o&&(t=-t-1);for(var u=0,a=1,g=!0;;a++,u++){var E,M,j=a<e.length?(typeof e[a])[0]:"";if(u>=r.length||(M=(typeof(E=r[u]))[0])=="o")return!g||(j=="u"?a>t&&!o:j==""!=o);if(M=="u"){if(!g||j!="u")return!1}else if(g)if(j==M)if(a<=t){if(E!=e[a])return!1}else{if(o?E>e[a]:E<e[a])return!1;E!=e[a]&&(g=!1)}else if(j!="s"&&j!="n"){if(o||a<=t)return!1;g=!1,a--}else{if(a<=t||M<j!=o)return!1;g=!1}else j!="s"&&j!="n"&&(g=!1,a--)}}var L=[],V=L.pop.bind(L);for(u=1;u<e.length;u++){var A=e[u];L.push(A==1?V()|V():A==2?V()&V():A?s(A,r):!V())}return!!V()},d=function(e,r){var t=n.S[e];if(!t||!n.o(t,r))throw new Error("Shared module "+r+" doesn't exist in shared scope "+e);return t},v=function(e,o){var t=e[o],o=Object.keys(t).reduce(function(u,a){return!u||b(u,a)?a:u},0);return o&&t[o]},l=function(e,r){var t=e[r];return Object.keys(t).reduce(function(o,u){return!o||!t[o].loaded&&b(o,u)?u:o},0)},p=function(e,r,t,o){return"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(o)+")"},c=function(e,r,t,o){var u=l(e,t);return C(e[t][u])},y=function(e,r,t,o){var u=l(e,t);return s(o,u)||typeof console!="undefined"&&console.warn&&console.warn(p(e,t,u,o)),C(e[t][u])},h=function(e,r,t,o){var u=l(e,t);if(!s(o,u))throw new Error(p(e,t,u,o));return C(e[t][u])},S=function(e,u,t){var o=e[u],u=Object.keys(o).reduce(function(a,g){return s(t,g)&&(!a||b(a,g))?g:a},0);return u&&o[u]},w=function(e,r,t,o){var u=e[t];return"No satisfying version ("+i(o)+") of shared module "+t+" found in shared scope "+r+`.
|
|
2
|
+
Available versions: `+Object.keys(u).map(function(a){return a+" from "+u[a].from}).join(", ")},x=function(e,r,t,o){var u=S(e,t,o);if(u)return C(u);throw new Error(w(e,r,t,o))},P=function(e,r,t,o){typeof console!="undefined"&&console.warn&&console.warn(w(e,r,t,o))},C=function(e){return e.loaded=1,e.get()},m=function(e){return function(r,t,o,u){var a=n.I(r);return a&&a.then?a.then(e.bind(e,r,n.S[r],t,o,u)):e(r,n.S[r],t,o,u)}},U=m(function(e,r,t){return d(e,t),C(v(r,t))}),K=m(function(e,r,t,o){return r&&n.o(r,t)?C(v(r,t)):o()}),z=m(function(e,r,t,o){return d(e,t),C(S(r,t,o)||P(r,e,t,o)||v(r,t))}),G=m(function(e,r,t){return d(e,t),c(r,e,t)}),H=m(function(e,r,t,o){return d(e,t),y(r,e,t,o)}),J=m(function(e,r,t,o){return d(e,t),x(r,e,t,o)}),W=m(function(e,r,t,o){return d(e,t),h(r,e,t,o)}),Q=m(function(e,r,t,o,u){return!r||!n.o(r,t)?u():C(S(r,t,o)||P(r,e,t,o)||v(r,t))}),X=m(function(e,r,t,o){return!r||!n.o(r,t)?o():c(r,e,t)}),O=m(function(e,r,t,o,u){return!r||!n.o(r,t)?u():y(r,e,t,o)}),Y=m(function(e,r,t,o,u){var a=r&&n.o(r,t)&&S(r,t,o);return a?C(a):u()}),Z=m(function(e,r,t,o,u){return!r||!n.o(r,t)?u():h(r,e,t,o)}),T={},B={4819:function(){return O("default","react",[0],function(){return n.e(9526).then(function(){return function(){return n(89526)}})})},15854:function(){return O("default","prop-types",[0],function(){return n.e(2652).then(function(){return function(){return n(2652)}})})},77440:function(){return O("default","react-dom",[0],function(){return n.e(3961).then(function(){return function(){return n(73961)}})})},58503:function(){return O("default","@mui/styles",[0],function(){return n.e(8449).then(function(){return function(){return n(78449)}})})},94427:function(){return O("default","@mui/material",[0],function(){return Promise.all([n.e(3535),n.e(2155),n.e(7808),n.e(8240)]).then(function(){return function(){return n(84561)}})})},75606:function(){return O("default","@iobroker/adapter-react-v5",[0],function(){return Promise.all([n.e(5457),n.e(9943),n.e(7228),n.e(4815)]).then(function(){return function(){return n(37228)}})})},83732:function(){return O("default","react-ace",[0],function(){return n.e(2262).then(function(){return function(){return n(92262)}})})}},N={4819:[4819],5710:[75606,83732],5854:[15854],6412:[58503,94427],7440:[77440]};n.f.consumes=function(e,r){n.o(N,e)&&N[e].forEach(function(t){if(n.o(T,t))return r.push(T[t]);var o=function(g){T[t]=0,n.m[t]=function(E){delete n.c[t],E.exports=g()}},u=function(g){delete T[t],n.m[t]=function(E){throw delete n.c[t],g}};try{var a=B[t]();a.then?r.push(T[t]=a.then(o).catch(u)):o(a)}catch(g){u(g)}})}}(),function(){var f=function(d,v,l,p){var c=document.createElement("link");c.rel="stylesheet",c.type="text/css";var y=function(h){if(c.onerror=c.onload=null,h.type==="load")l();else{var S=h&&(h.type==="load"?"missing":h.type),w=h&&h.target&&h.target.href||v,x=new Error("Loading CSS chunk "+d+` failed.
|
|
3
|
+
(`+w+")");x.code="CSS_CHUNK_LOAD_FAILED",x.type=S,x.request=w,c.parentNode.removeChild(c),p(x)}};return c.onerror=c.onload=y,c.href=v,document.head.appendChild(c),c},b=function(d,v){for(var l=document.getElementsByTagName("link"),p=0;p<l.length;p++){var c=l[p],y=c.getAttribute("data-href")||c.getAttribute("href");if(c.rel==="stylesheet"&&(y===d||y===v))return c}for(var h=document.getElementsByTagName("style"),p=0;p<h.length;p++){var c=h[p],y=c.getAttribute("data-href");if(y===d||y===v)return c}},i=function(d){return new Promise(function(v,l){var p=n.miniCssF(d),c=n.p+p;if(b(p,c))return v();f(d,c,v,l)})},s={179:0};n.f.miniCss=function(d,v){var l={5710:1};s[d]?v.push(s[d]):s[d]!==0&&l[d]&&v.push(s[d]=i(d).then(function(){s[d]=0},function(p){throw delete s[d],p}))}}(),function(){var f={179:0};n.f.j=function(s,d){var v=n.o(f,s)?f[s]:void 0;if(v!==0)if(v)d.push(v[2]);else if(/^(4819|5854|6412|7440)$/.test(s))f[s]=0;else{var l=new Promise(function(h,S){v=f[s]=[h,S]});d.push(v[2]=l);var p=n.p+n.u(s),c=new Error,y=function(h){if(n.o(f,s)&&(v=f[s],v!==0&&(f[s]=void 0),v)){var S=h&&(h.type==="load"?"missing":h.type),w=h&&h.target&&h.target.src;c.message="Loading chunk "+s+` failed.
|
|
4
|
+
(`+S+": "+w+")",c.name="ChunkLoadError",c.type=S,c.request=w,v[1](c)}};n.l(p,y,"chunk-"+s,s)}};var b=function(s,d){var v=d[0],l=d[1],p=d[2],c,y,h=0;if(v.some(function(w){return f[w]!==0})){for(c in l)n.o(l,c)&&(n.m[c]=l[c]);if(p)var S=p(n)}for(s&&s(d);h<v.length;h++)y=v[h],n.o(f,y)&&f[y]&&f[y][0](),f[y]=0},i=self.webpackChunksrc_rx=self.webpackChunksrc_rx||[];i.forEach(b.bind(null,0)),i.push=b.bind(null,i.push.bind(i))}(),function(){n.nc=void 0}();var D=n(72063)})();
|
|
5
5
|
|
|
6
|
-
//# sourceMappingURL=main.
|
|
6
|
+
//# sourceMappingURL=main.b9cd96c6.js.map
|