iobroker.admin 7.7.2 → 7.7.15
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/LICENSE +1 -1
- package/README.md +120 -13
- package/admin/README.md +3 -0
- package/admin/admin.png +0 -0
- package/admin/i18n/de.json +1 -1
- package/admin/i18n/es.json +1 -1
- package/admin/i18n/fr.json +1 -1
- package/admin/i18n/it.json +1 -1
- package/admin/i18n/nl.json +1 -1
- package/admin/i18n/pl.json +1 -1
- package/admin/i18n/pt.json +1 -1
- package/admin/i18n/ru.json +1 -1
- package/admin/i18n/uk.json +1 -1
- package/admin/i18n/zh-cn.json +1 -1
- package/admin/jsonConfig.json5 +1 -2
- package/adminWww/assets/AdapterUpdateDialog-CJRQB5ud.js +2 -0
- package/adminWww/assets/Adapters-B5LWXJ3G.js +9 -0
- package/adminWww/assets/Config-D3mtokJQ.js +1 -0
- package/adminWww/assets/CustomModal-DCjdghJB.js +1 -0
- package/adminWww/assets/CustomTab-CBVvppVS.js +1 -0
- package/adminWww/assets/DefaultPropsProvider-BZ42HOhu.js +15 -0
- package/adminWww/assets/DefaultPropsProvider-DoV5d6EJ.js +1 -0
- package/adminWww/assets/EasyMode-CR0Vw-OT.js +1 -0
- package/adminWww/assets/Enums-BImz5cPM.js +111 -0
- package/adminWww/assets/Fields-V2W2HJlv.js +1 -0
- package/adminWww/assets/Files-Ci2XDKh8.js +6 -0
- package/adminWww/assets/FilledInput-0vrRQpr_.js +2 -0
- package/adminWww/assets/Google-FmfjVx6X.js +27 -0
- package/adminWww/assets/Hosts-AXD2lYOf.js +121 -0
- package/adminWww/assets/Instances-j88MVgOp.js +2 -0
- package/adminWww/assets/Intro-DH7_8X9J.js +2 -0
- package/adminWww/assets/Logs-BJEYaBGh.js +1 -0
- package/adminWww/assets/Objects-CeqK8jeG.js +60 -0
- package/adminWww/assets/State-DhReNijC.js +1 -0
- package/adminWww/assets/TextField-fjsX40wR.js +138 -0
- package/adminWww/assets/Users-BJgk5zRR.js +1 -0
- package/adminWww/assets/___vite-browser-external_commonjs-proxy-DMh1aSo_.js +1 -0
- package/adminWww/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
- package/adminWww/assets/_commonjsHelpers-CE1G-McA.js +1 -0
- package/adminWww/assets/ace-DgO9yth5.js +985 -0
- package/adminWww/assets/assertThisInitialized-CKqanoMB.js +1 -0
- package/adminWww/assets/blueGrey-BFcAYvAO.js +29 -0
- package/adminWww/assets/{bootstrap-CrpeRPv0.css → bootstrap-DSlxhDzw.css} +1 -1
- package/adminWww/assets/bootstrap-xC60EdKn.js +303 -0
- package/adminWww/assets/createSvgIcon-CC7aIjya.js +1 -0
- package/adminWww/assets/createTheme-O_VGsRib.js +16 -0
- package/adminWww/assets/defaultTheme-CF56WVgQ.js +1 -0
- package/adminWww/assets/emotion-cache.browser.esm-BgJfNZJN.js +1 -0
- package/adminWww/assets/emotion-react.browser.esm-LdYA3M0T.js +8 -0
- package/adminWww/assets/emotion-serialize.esm-Q4o_CgeF.js +1 -0
- package/adminWww/assets/emotion-styled.browser.esm-D6u524ZG.js +1 -0
- package/adminWww/assets/emotion-use-insertion-effect-with-fallbacks.browser.esm-q3_hvwuL.js +1 -0
- package/adminWww/assets/en-US-B8gg5zk_.js +1 -0
- package/adminWww/assets/ext-language_tools-DJmHbGA8.js +389 -0
- package/adminWww/assets/geosearch.module-BN92cSpK.js +1 -0
- package/adminWww/assets/{hostInit-fzxL8JAx.js → hostInit-OBG53iVO.js} +2 -2
- package/adminWww/assets/iconBase-CB0tx1VT.js +1 -0
- package/adminWww/assets/{index-D--ojYan.js → index-28qkNZAi.js} +1 -1
- package/adminWww/assets/index-8V8iNIbi.js +5 -0
- package/adminWww/assets/{index-CJvbfjSs.js → index-B0C4gXUO.js} +1 -1
- package/adminWww/assets/index-B5NvG6mn.js +2 -0
- package/adminWww/assets/index-BVQ-ZSLt.js +10 -0
- package/adminWww/assets/index-B_eoqXoQ.js +890 -0
- package/adminWww/assets/index-Bc8bBbjM.js +15 -0
- package/adminWww/assets/{index-Co3YA5NW.js → index-BgpTxVrG.js} +1 -1
- package/adminWww/assets/{index-DTGUg51P.js → index-C73G-H4k.js} +2 -2
- package/adminWww/assets/{index-rKfs-rCa.js → index-CbQYNHIO.js} +1 -1
- package/adminWww/assets/index-ChtI58Wj.js +1 -0
- package/adminWww/assets/index-CkI9667U.js +1 -0
- package/adminWww/assets/index-DEgEIbz9.js +1 -0
- package/adminWww/assets/index-DYa0xJDK.js +1 -0
- package/adminWww/assets/index-Dy_ekAsY.js +1 -0
- package/adminWww/assets/index-d-Zo1uu9.js +55 -0
- package/adminWww/assets/{iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-BOKYvG_W.js → iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-CXogaIXO.js} +1 -1
- package/adminWww/assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js +1 -0
- package/adminWww/assets/iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-DQH_iIDO.js +1 -0
- package/adminWww/assets/iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js +1 -0
- package/adminWww/assets/{iobroker_admin__loadShare__leaflet__loadShare__-h9SMNPLU.js → iobroker_admin__loadShare__leaflet__loadShare__-BfU5U5_j.js} +1 -1
- package/adminWww/assets/iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js +1 -0
- package/adminWww/assets/{iobroker_admin__loadShare__react__loadShare__-Bis6NHgw.js → iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js} +1 -1
- package/adminWww/assets/iobroker_admin__loadShare__react_mf_2_dom__loadShare__-GTRt2eft.js +1 -0
- package/adminWww/assets/iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-BF_gp27r.js +1 -0
- package/adminWww/assets/iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js +5 -0
- package/adminWww/assets/leaflet-src-B98elavC.js +4 -0
- package/adminWww/assets/locale-ZVMVA5rz.js +1 -0
- package/adminWww/assets/pl-OOhGZ0tn.js +1 -0
- package/adminWww/assets/preload-helper-BDBacUwf.js +1 -0
- package/adminWww/assets/sdk-DTP6UH26.js +15 -0
- package/adminWww/assets/sentry-C8mPNiGL.js +1 -0
- package/adminWww/assets/useTheme-C-uGEZO5.js +1 -0
- package/adminWww/assets/useTheme-UOPilb5j.js +1 -0
- package/adminWww/assets/{zh-cn-vvAC9zpl.js → zh-cn-Dy5SHo8v.js} +13 -13
- package/adminWww/img/admin.png +0 -0
- package/adminWww/index.html +4 -4
- package/adminWww/lib/js/ace/ext-searchbox.js +1 -1
- package/adminWww/lib/js/socket.io.js +7 -1
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry.js +2 -2
- package/build/i18n/de.json +18 -0
- package/build/i18n/es.json +18 -0
- package/build/i18n/fr.json +18 -0
- package/build/i18n/it.json +18 -0
- package/build/i18n/nl.json +18 -0
- package/build/i18n/pl.json +18 -0
- package/build/i18n/pt.json +18 -0
- package/build/i18n/ru.json +18 -0
- package/build/i18n/uk.json +18 -0
- package/build/i18n/zh-cn.json +18 -0
- package/build/lib/checkLinuxPass.js.map +1 -0
- package/{build-backend → build}/lib/testPassword.js +1 -1
- package/build/lib/testPassword.js.map +1 -0
- package/{build-backend → build}/lib/translations.js +16 -1
- package/build/lib/translations.js.map +1 -0
- package/{build-backend → build}/lib/utils.js +20 -0
- package/build/lib/utils.js.map +1 -0
- package/{build-backend → build}/lib/web.js +6 -7
- package/build/lib/web.js.map +1 -0
- package/{build-backend → build}/main.js +68 -5
- package/build/main.js.map +1 -0
- package/io-package.json +27 -40
- package/package.json +117 -110
- package/adminWww/assets/AdapterUpdateDialog-DHGhgEEq.js +0 -2
- package/adminWww/assets/Adapters-CgSIajcF.js +0 -7
- package/adminWww/assets/Config-BQSl4bfA.js +0 -1
- package/adminWww/assets/CustomModal-DNMTLv4y.js +0 -1
- package/adminWww/assets/CustomTab-Bl8S8QZW.js +0 -1
- package/adminWww/assets/DefaultPropsProvider-u5xB1Fxz.js +0 -30
- package/adminWww/assets/EasyMode-xDbqrply.js +0 -1
- package/adminWww/assets/Enums-BSICIhWI.js +0 -111
- package/adminWww/assets/Fields-C3JkTmfP.js +0 -1
- package/adminWww/assets/Files-DK85-COY.js +0 -6
- package/adminWww/assets/FilledInput-CysG4ax_.js +0 -2
- package/adminWww/assets/Hosts-qIsB4Gub.js +0 -121
- package/adminWww/assets/Instances-BA_DCzs8.js +0 -2
- package/adminWww/assets/Intro-00oh6SLw.js +0 -2
- package/adminWww/assets/Logs-Cvpgh-zN.js +0 -1
- package/adminWww/assets/Objects-Dp71iotS.js +0 -60
- package/adminWww/assets/State-BqfD2ABf.js +0 -1
- package/adminWww/assets/Tabs-sxfWgN0b.js +0 -138
- package/adminWww/assets/Users-CDcWqTfZ.js +0 -1
- package/adminWww/assets/_commonjsHelpers-D6-XlEtG.js +0 -1
- package/adminWww/assets/ace-BG5WYul1.js +0 -985
- package/adminWww/assets/blueGrey-DYsiMDOn.js +0 -29
- package/adminWww/assets/bootstrap-BYQTdf9r.js +0 -2024
- package/adminWww/assets/createSvgIcon-Bh3KWtyp.js +0 -1
- package/adminWww/assets/emotion-cache.browser.esm-B8BFze5o.js +0 -1
- package/adminWww/assets/emotion-react.browser.esm-BCDt9NrH.js +0 -8
- package/adminWww/assets/emotion-serialize.esm-BUa21YfQ.js +0 -1
- package/adminWww/assets/emotion-styled.browser.esm-CyFqGgyG.js +0 -1
- package/adminWww/assets/emotion-utils.browser.esm-pglN4_eI.js +0 -1
- package/adminWww/assets/geosearch.module-DH4NhiPj.js +0 -1
- package/adminWww/assets/iconBase-C3vi24ZE.js +0 -1
- package/adminWww/assets/index-B1ITPhEY.js +0 -7
- package/adminWww/assets/index-C_-7Z7UV.js +0 -1
- package/adminWww/assets/index-D3IAEXXP.js +0 -10
- package/adminWww/assets/index-DPDg2YA0.js +0 -1
- package/adminWww/assets/index-Qa7Q_Dz5.js +0 -1
- package/adminWww/assets/index-qcIeekse.js +0 -55
- package/adminWww/assets/index-wN1ZlPSW.js +0 -2
- package/adminWww/assets/iobroker_admin__loadShare__prop_mf_2_types__loadShare__-BnsS7SOQ.js +0 -1
- package/adminWww/assets/iobroker_admin__mf_v__runtimeInit__mf_v__-CTkuGOOk.js +0 -5
- package/adminWww/assets/leaflet-src-A2ZHl6nF.js +0 -4
- package/adminWww/assets/locale-9HzB0nxi.js +0 -1
- package/adminWww/assets/preload-helper-Dp1pzeXC.js +0 -1
- package/adminWww/assets/sentry-H_UdJ2zx.js +0 -1
- package/adminWww/lib/js/crypto-js/aes.js +0 -234
- package/adminWww/lib/js/crypto-js/blowfish.js +0 -471
- package/adminWww/lib/js/crypto-js/bower.json +0 -39
- package/adminWww/lib/js/crypto-js/cipher-core.js +0 -895
- package/adminWww/lib/js/crypto-js/core.js +0 -807
- package/adminWww/lib/js/crypto-js/crypto-js.js +0 -6657
- package/adminWww/lib/js/crypto-js/docs/QuickStartGuide.wiki +0 -470
- package/adminWww/lib/js/crypto-js/enc-base64.js +0 -136
- package/adminWww/lib/js/crypto-js/enc-base64url.js +0 -148
- package/adminWww/lib/js/crypto-js/enc-hex.js +0 -18
- package/adminWww/lib/js/crypto-js/enc-latin1.js +0 -18
- package/adminWww/lib/js/crypto-js/enc-utf16.js +0 -149
- package/adminWww/lib/js/crypto-js/enc-utf8.js +0 -18
- package/adminWww/lib/js/crypto-js/evpkdf.js +0 -134
- package/adminWww/lib/js/crypto-js/format-hex.js +0 -66
- package/adminWww/lib/js/crypto-js/format-openssl.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-md5.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-ripemd160.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha1.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha224.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha256.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha3.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha384.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac-sha512.js +0 -18
- package/adminWww/lib/js/crypto-js/hmac.js +0 -143
- package/adminWww/lib/js/crypto-js/index.js +0 -18
- package/adminWww/lib/js/crypto-js/lib-typedarrays.js +0 -76
- package/adminWww/lib/js/crypto-js/md5.js +0 -268
- package/adminWww/lib/js/crypto-js/mode-cfb.js +0 -80
- package/adminWww/lib/js/crypto-js/mode-ctr-gladman.js +0 -116
- package/adminWww/lib/js/crypto-js/mode-ctr.js +0 -58
- package/adminWww/lib/js/crypto-js/mode-ecb.js +0 -40
- package/adminWww/lib/js/crypto-js/mode-ofb.js +0 -54
- package/adminWww/lib/js/crypto-js/package.json +0 -42
- package/adminWww/lib/js/crypto-js/pad-ansix923.js +0 -49
- package/adminWww/lib/js/crypto-js/pad-iso10126.js +0 -44
- package/adminWww/lib/js/crypto-js/pad-iso97971.js +0 -40
- package/adminWww/lib/js/crypto-js/pad-nopadding.js +0 -30
- package/adminWww/lib/js/crypto-js/pad-pkcs7.js +0 -18
- package/adminWww/lib/js/crypto-js/pad-zeropadding.js +0 -47
- package/adminWww/lib/js/crypto-js/pbkdf2.js +0 -145
- package/adminWww/lib/js/crypto-js/rabbit-legacy.js +0 -190
- package/adminWww/lib/js/crypto-js/rabbit.js +0 -192
- package/adminWww/lib/js/crypto-js/rc4.js +0 -139
- package/adminWww/lib/js/crypto-js/ripemd160.js +0 -267
- package/adminWww/lib/js/crypto-js/sha1.js +0 -150
- package/adminWww/lib/js/crypto-js/sha224.js +0 -80
- package/adminWww/lib/js/crypto-js/sha256.js +0 -199
- package/adminWww/lib/js/crypto-js/sha3.js +0 -326
- package/adminWww/lib/js/crypto-js/sha384.js +0 -83
- package/adminWww/lib/js/crypto-js/sha512.js +0 -326
- package/adminWww/lib/js/crypto-js/tripledes.js +0 -779
- package/adminWww/lib/js/crypto-js/x64-core.js +0 -304
- package/build-backend/i18n/de.json +0 -18
- package/build-backend/i18n/es.json +0 -18
- package/build-backend/i18n/fr.json +0 -18
- package/build-backend/i18n/it.json +0 -18
- package/build-backend/i18n/nl.json +0 -18
- package/build-backend/i18n/pl.json +0 -18
- package/build-backend/i18n/pt.json +0 -18
- package/build-backend/i18n/ru.json +0 -18
- package/build-backend/i18n/uk.json +0 -18
- package/build-backend/i18n/zh-cn.json +0 -18
- package/build-backend/lib/checkLinuxPass.js.map +0 -1
- package/build-backend/lib/testPassword.js.map +0 -1
- package/build-backend/lib/translations.js.map +0 -1
- package/build-backend/lib/utils.js.map +0 -1
- package/build-backend/lib/web.js.map +0 -1
- package/build-backend/main.js.map +0 -1
- /package/{build-backend → build}/i18n/en.json +0 -0
- /package/{build-backend → build}/lib/checkLinuxPass.js +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{j as e}from"./DefaultPropsProvider-BZ42HOhu.js";import{i as L,a as J}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import{s as V,C as ut,G as gt,H as mt,L as xt,I as N,A as ft,a as yt,b as z,c as at,S as tt}from"./bootstrap-xC60EdKn.js";import{i as o,a as g}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js";import{s as lt}from"./index-Dy_ekAsY.js";import{M as wt,s as bt,C as et}from"./sentry-C8mPNiGL.js";import{i as x}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js";import{c as K,A as jt}from"./AdapterUpdateDialog-CJRQB5ud.js";import{t as pt,b as Ct,w as vt}from"./createTheme-O_VGsRib.js";import{C as Tt}from"./CustomModal-DCjdghJB.js";import{a as dt}from"./blueGrey-BFcAYvAO.js";import"./_commonjsHelpers-CE1G-McA.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js";import"./emotion-serialize.esm-Q4o_CgeF.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-CXogaIXO.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js";import"./ace-DgO9yth5.js";import"./iobroker_admin__loadShare__react_mf_2_dom__loadShare__-GTRt2eft.js";import"./useTheme-UOPilb5j.js";import"./ext-language_tools-DJmHbGA8.js";import"./preload-helper-BDBacUwf.js";import"./sdk-DTP6UH26.js";import"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-DQH_iIDO.js";import"./iobroker_admin__loadShare__leaflet__loadShare__-BfU5U5_j.js";import"./extends-CF3RwP-h.js";import"./assertThisInitialized-CKqanoMB.js";import"./iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-BF_gp27r.js";import"./en-US-B8gg5zk_.js";import"./iconBase-CB0tx1VT.js";import"./zh-cn-Dy5SHo8v.js";import"./_commonjs-dynamic-modules-TDtrdbi3.js";import"./State-DhReNijC.js";import"./emotion-cache.browser.esm-BgJfNZJN.js";const A={smallAvatar:{width:24,height:24},listItem:p=>({mb:"2px",background:p.palette.background,"@media screen and (max-width: 400px)":{pl:"2px"}}),toVersion:p=>({color:p.palette.mode==="dark"?"#00dc00":"#008100",fontWeight:"bold",ml:"4px"}),updateDone:{background:"#5ef05e80",opacity:.7},minWidthCss:{"@media screen and (max-width: 400px)":{minWidth:32}},wrapperButton:{},typography:{paddingRight:30},versions:{minWidth:110,display:"inline-block"},closeButton:p=>({position:"absolute",right:8,top:8,color:p.palette.grey[500]}),languageButton:{position:"absolute",right:60,top:8},languageButtonActive:p=>({color:p.palette.primary.main}),versionHeader:p=>({background:"#4dabf5",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:p.palette.mode==="dark"?"black":"white"}),repoStableVersionText:p=>({color:p.palette.mode==="dark"?"#8dff7a":"#2b9800",fontWeight:"bold",marginLeft:"4px"}),repoLatestVersionText:p=>({color:p.palette.mode==="dark"?"#a3fcff":"#005498",fontWeight:"bold",marginLeft:"4px"})};class X extends L.Component{updateAvailable;initialVersions;currentRef;current;constructor(t){super(t),this.updateAvailable=this.detectUpdates(),this.initialVersions={},this.updateAvailable.forEach(s=>this.initialVersions[s]=this.props.installed[s].version),this.state={showNews:null},this.currentRef=J.createRef(),this.current=t.current,this.props.onUpdateSelected([...this.updateAvailable],this.updateAvailable)}static isUpdateAvailable(t){const{oldVersion:s,newVersion:i,name:n}=t;try{return V.gt(i,s)}catch{return console.warn(`Cannot compare "${i}" and "${s}" of adapter ${n}`),!1}}detectUpdates(){const t=[];return Object.keys(this.props.repository).forEach(s=>{const i=this.props.installed[s];s==="js-controller"||s==="admin"||i&&this.props.repository[s].version&&i.ignoreVersion!==this.props.repository[s].version&&X.isUpdateAvailable({oldVersion:i.version,newVersion:this.props.repository[s].version,name:s})&&(K(this.props.repository[s].messages,i.version,this.props.repository[s].version)?console.log(`Adapter ${s} is filtered out from update all functionality, because it has messages which need to be read before update`):this.props.rightDependenciesFunc(s)?t.push(s):console.log(`Adapter ${s} is filtered out from update all functionality, because its dependencies are not met`))}),t.sort(),t}getNews(t){const s=this.props.repository[t],i=this.props.installed[t],n=[];return i&&(s!=null&&s.news)&&Object.keys(s.news).forEach(r=>{try{V.gt(r,i.version)&&n.push({version:r,news:this.props.noTranslation?s.news[r].en:s.news[r][this.props.lang]||s.news[r].en})}catch{console.warn(`Cannot compare "${r}" and "${i.version}"`)}}),n}renderOneAdapter(t){const s=this.props.selected.includes(t);if((this.props.finished||this.props.inProcess)&&!s||!this.props.installed[t])return null;const i=`.${this.props.installed[t].localIcon}`;return e.jsxs(o.ListItem,{dense:!0,sx:{"&.MuiListItem-root":x.Utils.getStyle(this.props.theme,A.listItem,this.props.updated.includes(t)&&A.updateDone)},ref:this.props.current===t?this.currentRef:null,secondaryAction:!this.props.finished&&!this.props.inProcess?e.jsx(o.Checkbox,{edge:"end",checked:s,tabIndex:-1,disableRipple:!0,disabled:this.props.inProcess,onClick:()=>{const n=[...this.props.selected],r=n.indexOf(t);r!==-1?n.splice(r,1):(n.push(t),n.sort()),this.props.onUpdateSelected(n)}}):this.props.current===t&&!this.props.stopped&&!this.props.finished&&e.jsx(o.CircularProgress,{}),children:[e.jsx(o.ListItemIcon,{sx:A.minWidthCss,children:e.jsx(o.Avatar,{variant:"square",alt:t,src:i,style:A.smallAvatar})}),e.jsx(o.ListItemText,{primary:t,title:this.getNews(t).map(n=>`${n.version}: ${n.news}`).join(`
|
|
2
|
+
`),secondary:e.jsxs("span",{children:[e.jsxs("div",{style:A.versions,children:[this.initialVersions[t]," →",e.jsx(o.Box,{component:"span",sx:A.toVersion,children:this.props.repository[t].version})]}),e.jsx(o.IconButton,{title:x.I18n.t("Show change log"),onClick:()=>this.setState({showNews:{adapter:t,version:this.props.repository[t].version,fromVersion:this.initialVersions[t]}}),size:"small",children:e.jsx(g.Info,{})})]})})]},t)}getReactNews(t,s){var d,l,u,m;const i=this.props.repository[t],n=this.props.installed[t];s=s||n.version;const r=[];let a,c;const h=this.props.repository._repoInfo;return h!=null&&h.stable?(a=(d=this.props.repository[t])==null?void 0:d.version,c=(l=this.props.repository[t])==null?void 0:l.latestVersion):(a=(u=this.props.repository[t])==null?void 0:u.stable,c=(m=this.props.repository[t])==null?void 0:m.version),n&&(i!=null&&i.news)&&Object.keys(i.news).forEach(f=>{try{if(V.gt(f,s)&&i.news[f]){const b=(this.props.noTranslation?i.news[f].en||"":i.news[f][this.props.lang]||i.news[f].en||"").split(`
|
|
3
|
+
`).map(I=>I.trim().replace(/^\*\s?/,"").replace(/<!--[^>]*->/g,"").replace(/<! -[^>]*->/g,"").trim()).filter(I=>!!I);r.push(e.jsxs(o.Grid2,{children:[e.jsxs(o.Typography,{sx:A.versionHeader,children:[f,c===f?e.jsx(o.Box,{component:"span",sx:A.repoLatestVersionText,children:"(latest)"}):null,a===f?e.jsx(o.Box,{component:"span",sx:A.repoStableVersionText,children:`(${x.I18n.t("stable")})`}):null]}),b.map((I,T)=>e.jsx(o.Typography,{component:"div",variant:"body2",children:`• ${I}`},`${f}-${T}`))]},f))}}catch{console.warn(`Cannot compare "${f}" and "${s}"`)}}),r}renderShowNews(){if(this.state.showNews){const t=this.getReactNews(this.state.showNews.adapter,this.state.showNews.fromVersion),s=x.Utils.getStyle(this.props.theme,A.closeButton),i=x.Utils.getStyle(this.props.theme,A.languageButtonActive);return e.jsxs(o.Dialog,{onClose:()=>this.setState({showNews:null}),open:!0,children:[e.jsx(o.DialogTitle,{children:e.jsxs(o.Typography,{component:"h2",variant:"h6",sx:{"&.MuiTypography-root":A.typography},children:[e.jsx("div",{style:{width:"calc(100% - 60px)"},children:x.I18n.t('Update "%s" to v%s',this.state.showNews.adapter,this.state.showNews.version)}),e.jsx(o.IconButton,{size:"large",style:s,onClick:()=>this.setState({showNews:null}),children:e.jsx(g.Close,{})}),x.I18n.getLanguage()!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:{...A.languageButton,...this.props.noTranslation?i:void 0},onClick:this.props.toggleTranslation,title:x.I18n.t("Disable/Enable translation"),children:e.jsx(g.Language,{})}):null]})}),e.jsx(o.DialogContent,{dividers:!0,children:e.jsx(o.Grid2,{container:!0,direction:"column",spacing:2,wrap:"nowrap",children:t.length?e.jsxs(o.Grid2,{children:[e.jsx(o.Typography,{variant:"h6",gutterBottom:!0,children:x.I18n.t("Change log")}),e.jsx(o.Grid2,{container:!0,spacing:2,direction:"column",wrap:"nowrap",children:t})]}):x.I18n.t("No change log available")})}),e.jsx(o.DialogActions,{style:A.wrapperButton,children:e.jsx(o.Button,{variant:"contained",onClick:()=>this.setState({showNews:null}),color:"grey",startIcon:e.jsx(g.Close,{}),children:x.I18n.t("Close")})})]})}return null}render(){return this.current!==this.props.current&&(this.current=this.props.current,setTimeout(()=>{var t;return(t=this.currentRef.current)==null?void 0:t.scrollIntoView()},200)),e.jsxs(o.List,{style:A.root,children:[this.updateAvailable.map(t=>this.renderOneAdapter(t)),this.renderShowNews()]})}}const W={dialogRoot:{height:"calc(100% - 64px)"},wrapperHead:{justifyContent:"space-between",display:"flex"},checkbox:{marginRight:10},appBar:p=>({flexWrap:"wrap",position:"sticky",bottom:-10,pl:1,background:p.name==="blue"?"#5d6467":p.name==="dark"?"#5b5b5b":"#FFF"}),container:{overflow:"hidden",height:"calc(100% - 48px)","@media screen and (max-width: 602px)":{height:"auto"}},content:{"@media screen and (max-width: 500px)":{p:1}},languageButton:{position:"absolute",right:73,top:11},languageButtonActive:p=>({color:p.palette.primary.main})};class At extends L.Component{updateAvailable=[];onAdapterFinished;processList;constructor(t){super(t),this.state={selected:[],inProcess:!1,finished:!1,current:"",updated:[],stopped:!1,debug:(window._localStorage||window.localStorage).getItem("AdaptersUpdaterDialog.debug")==="true",stopOnError:(window._localStorage||window.localStorage).getItem("AdaptersUpdaterDialog.stopOnError")!=="false",closeOnFinished:(window._localStorage||window.localStorage).getItem("AdaptersUpdaterDialog.closeOnFinished")==="true",currentVersion:""},this.updateAvailable=[]}updateAdapter(t,s,i){this.onAdapterFinished=i,this.setState({current:t,currentVersion:s})}onStartUpdate(){this.setState({inProcess:!0},()=>{this.props.onSetCommandRunning(!0),this.processList=[...this.state.selected].map(t=>{var s;return{adapter:t,version:(s=this.props.repository[t])==null?void 0:s.version}}),this.updateAdapters(()=>{this.setState({inProcess:!1,finished:!0},()=>{this.props.onSetCommandRunning(!1),this.state.closeOnFinished&&this.props.onClose(!!this.state.updated.length)})})})}updateAdapters(t){if(!this.processList||!this.processList.length||this.state.stopped)t&&t();else{const{adapter:s,version:i}=this.processList.shift();this.updateAdapter(s,i,()=>{const n=[...this.state.updated];n.push(s),this.setState({updated:n},()=>setTimeout(()=>this.updateAdapters(t),200))})}}render(){const t=this.props.noTranslation?x.Utils.getStyle(this.props.theme,W.languageButtonActive):void 0;return e.jsxs(o.Dialog,{open:!0,maxWidth:"lg",fullWidth:!!this.state.current,onClose:()=>this.props.onClose(!!this.state.updated.length),"aria-labelledby":"update-dialog-title","aria-describedby":"update-dialog-description",sx:{"& .MuiPaper-root":W.dialogRoot},scroll:"paper",children:[e.jsx(o.DialogTitle,{id:"update-dialog-title",children:e.jsxs("div",{style:W.wrapperHead,children:[this.props.t("Update %s adapter(s)",this.state.selected.length),!this.state.finished&&!this.state.inProcess&&e.jsx(o.Tooltip,{title:this.props.t("Select/Unselect all"),slotProps:{popper:{sx:{pointerEvents:"none"}}},children:e.jsx(o.Checkbox,{checked:this.state.selected.length===this.updateAvailable.length,style:W.checkbox,tabIndex:-1,indeterminate:this.state.selected.length!==this.updateAvailable.length&&this.state.selected.length!==0,disableRipple:!0,onClick:()=>{let s=[];this.state.selected.length!==this.updateAvailable.length&&(s=[...this.updateAvailable]),this.setState({selected:s})}})}),x.I18n.getLanguage()!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:{...W.languageButton,...t},onClick:()=>this.props.toggleTranslation(),title:x.I18n.t("Disable/Enable translation"),children:e.jsx(g.Language,{})}):null]})}),e.jsxs(o.DialogContent,{sx:{"&.MuiDialogContent-root":W.content},style:{height:"100%"},children:[e.jsxs(o.Grid2,{container:!0,direction:"row",sx:W.container,children:[e.jsx(o.Grid2,{style:{height:"100%",overflow:"hidden",width:this.state.current?250:"100%"},children:e.jsx("div",{style:{height:"100%",overflow:"auto"},children:e.jsx(X,{finished:this.state.finished,inProcess:this.state.inProcess,selected:this.state.selected,current:this.state.current,stopped:this.state.stopped,updated:this.state.updated,lang:this.props.lang,installed:this.props.installed,repository:this.props.repository,noTranslation:this.props.noTranslation,toggleTranslation:this.props.toggleTranslation,onUpdateSelected:(s,i)=>{i&&(this.updateAvailable=i),this.setState({selected:s})},theme:this.props.theme,rightDependenciesFunc:this.props.rightDependenciesFunc})})}),!!this.state.current&&e.jsx(o.Grid2,{style:{height:"100%",overflow:"hidden",width:"calc(100% - 260px)",minWidth:240},children:e.jsx(ut,{noSpacing:!0,ready:!0,host:this.props.currentHost,socket:this.props.socket,t:this.props.t,cmd:`upgrade ${this.state.current}@${this.state.currentVersion}${this.state.debug?" --debug":""}`,onFinished:()=>this.onAdapterFinished(),errorFunc:()=>{this.state.stopOnError?(this.setState({stopped:!0,finished:!0}),this.onAdapterFinished=null,this.props.onSetCommandRunning(!1)):this.onAdapterFinished()}},this.state.current)})]}),e.jsxs(o.Toolbar,{variant:"dense",disableGutters:!0,sx:W.appBar,children:[e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{disabled:this.state.finished,checked:this.state.stopOnError,onChange:()=>{(window._localStorage||window.localStorage).setItem("AdaptersUpdaterDialog.stopOnError",this.state.stopOnError?"false":"true"),this.setState({stopOnError:!this.state.stopOnError})}}),label:this.props.t("Stop on error")}),e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{disabled:this.state.finished,checked:this.state.closeOnFinished,onChange:()=>{(window._localStorage||window.localStorage).setItem("AdaptersUpdaterDialog.closeOnFinished",this.state.closeOnFinished?"false":"true"),this.setState({closeOnFinished:!this.state.closeOnFinished})}}),label:this.props.t("Close on finished")}),e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{disabled:this.state.finished||this.state.inProcess,checked:this.state.debug,onChange:()=>{(window._localStorage||window.localStorage).setItem("AdaptersUpdaterDialog.debug",this.state.debug?"false":"true"),this.setState({debug:!this.state.debug})}}),label:this.props.t("Debug info")})]})]}),e.jsxs(o.DialogActions,{children:[e.jsx(o.Button,{id:"adapters-update-dialog-update",variant:"contained",disabled:this.state.stopped||this.state.inProcess||this.state.finished||!this.state.selected.length,onClick:()=>this.onStartUpdate(),color:"primary",autoFocus:!0,startIcon:e.jsx(g.Check,{}),children:this.props.t("Update")}),e.jsx(o.Button,{id:"adapters-update-dialog-cancel",variant:"contained",disabled:!this.state.inProcess,color:"grey",startIcon:e.jsx(g.Cancel,{}),onClick:()=>{this.setState({stopped:!0,finished:!0}),this.props.onSetCommandRunning(!1)},children:this.props.t("Cancel")}),e.jsx(o.Button,{id:"adapters-update-dialog-close",variant:"contained",onClick:()=>this.props.onClose(!!this.state.updated.length),disabled:this.state.inProcess&&!this.state.stopped,color:this.state.stopped?"error":"grey",startIcon:e.jsx(g.Close,{}),children:this.props.t("Close")})]})]})}}class st extends gt{host;prefix;constructor(t,s){super(t,`${s}.adapter`,"adapter"),this.prefix=`${s}.adapter.`,this.host=s}getObject(t){return this.objects&&this.objects[this.prefix+t]||null}getHost(){return this.host}}const St="data:image/svg+xml,%3csvg%20viewBox='0%200%202500%202500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0%200h2500v2500H0z'%20fill='%23c00'/%3e%3cpath%20d='M1241.5%20268.5h-973v1962.9h972.9V763.5h495v1467.9h495V268.5z'%20fill='%23fff'/%3e%3c/svg%3e";function Z(p){return{id:`github-install-dialog-tab-${p}`,"aria-controls":`github-install-dialog-panel-${p}`}}const C={root:p=>({backgroundColor:p.palette.background.paper,width:"100%",height:"100%"}),paper:{maxWidth:1e3},tabPaper:{padding:16},title:p=>({mt:"10px",p:1,ml:1,fontSize:18,color:p.palette.primary.main}),warningText:{color:"#f53939"},noteText:{marginTop:16},errorTextNoGit:{fontSize:13,color:"#ff1616"},listIcon:{width:24,height:24},listIconWithMargin:{width:24,height:24,marginRight:8},tabSelected:p=>({color:p.palette.mode==="dark"?p.palette.secondary.contrastText:"#222 !important"})};function It(p){const t=[];for(let s=0;s<p.length;s++)typeof p[s]=="object"?p[s].forEach(i=>t.push(i)):t.push(p[s]);return t}const it=10;class kt extends J.Component{constructor(t){super(t);let s=[];const i=(window._localstorage||window.localStorage).getItem("App.npmHistory");if(i)try{s=JSON.parse(i)}catch{}this.state={autoCompleteValue:(window._localstorage||window.localStorage).getItem("App.autocomplete")||null,debug:(window._localstorage||window.localStorage).getItem("App.gitDebug")==="true",url:(window._localstorage||window.localStorage).getItem("App.userUrl")||"",currentTab:(window._localstorage||window.localStorage).getItem("App.gitTab")||"npm",customHistory:s}}renderNpm(){return this.state.currentTab==="npm"?e.jsxs(o.Paper,{style:C.tabPaper,id:"github-install-dialog-panel-npm",children:[e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{checked:this.state.debug,onChange:t=>{(window._localstorage||window.localStorage).setItem("App.gitDebug",t.target.checked?"true":"false"),this.setState({debug:t.target.checked})}}),label:this.props.t("Debug outputs")})}),e.jsxs("div",{style:{display:"flex",alignItems:"flex-end"},children:[e.jsx(g.Sms,{style:{marginRight:10}}),e.jsx(o.Autocomplete,{fullWidth:!0,value:this.state.autoCompleteValue,onChange:(t,s)=>{(window._localstorage||window.localStorage).setItem("App.autocomplete",s),this.setState({autoCompleteValue:s})},options:this.getList(),getOptionLabel:t=>(t==null?void 0:t.name)??"",renderInput:t=>{var i;const s={...t};return s.InputProps=s.InputProps||{},s.InputProps.startAdornment=e.jsx(o.InputAdornment,{position:"start",children:e.jsx(x.Icon,{src:((i=this.state.autoCompleteValue)==null?void 0:i.icon)||"",style:C.listIcon})}),e.jsx(o.TextField,{variant:"standard",...t,label:x.I18n.t("Select adapter")})},renderOption:(t,s)=>e.jsxs(o.Box,{component:"li",sx:{"& > img":{mr:2,flexShrink:0}},...t,children:[e.jsx(x.Icon,{src:(s==null?void 0:s.icon)||"",style:C.listIconWithMargin}),(s==null?void 0:s.name)??""]})})]}),e.jsx("div",{style:{fontSize:24,fontWeight:"bold",marginTop:40},children:this.props.t("Warning!")}),e.jsx("div",{style:C.warningText,children:this.props.t("npm_warning","NPM","NPM")}),e.jsx("div",{style:C.noteText,children:this.props.t("github_note")})]}):null}renderGitHub(){return this.state.currentTab==="GitHub"?e.jsxs(o.Paper,{style:C.tabPaper,id:"github-install-dialog-panel-github",children:[e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{checked:this.state.debug,onChange:t=>{(window._localstorage||window.localStorage).setItem("App.gitDebug",t.target.checked?"true":"false"),this.setState({debug:t.target.checked})}}),label:this.props.t("Debug outputs")})}),e.jsxs("div",{style:{display:"flex",alignItems:"flex-end"},children:[e.jsx(g.Sms,{style:{marginRight:10}}),e.jsx(o.Autocomplete,{fullWidth:!0,value:this.state.autoCompleteValue,getOptionDisabled:t=>!!(t!=null&&t.nogit),renderOption:(t,s)=>e.jsxs(o.Box,{component:"li",sx:{"& > img":{mr:2,flexShrink:0}},...t,children:[e.jsx(x.Icon,{src:(s==null?void 0:s.icon)||"",style:C.listIconWithMargin}),(s==null?void 0:s.name)??"",(s==null?void 0:s.nogit)&&e.jsx("div",{style:C.errorTextNoGit,children:x.I18n.t("This adapter cannot be installed from git as must be built before installation.")})]}),onChange:(t,s)=>{(window._localstorage||window.localStorage).setItem("App.autocomplete",s),this.setState({autoCompleteValue:s})},options:this.getList(),getOptionLabel:t=>(t==null?void 0:t.name)??"",renderInput:t=>{var i;const s={...t};return s.InputProps=s.InputProps||{},s.InputProps.startAdornment=e.jsx(o.InputAdornment,{position:"start",children:e.jsx(x.Icon,{src:((i=this.state.autoCompleteValue)==null?void 0:i.icon)||"",style:C.listIconWithMargin})}),e.jsx(o.TextField,{variant:"standard",...t,label:x.I18n.t("Select adapter")})}})]}),e.jsx("div",{style:{fontSize:24,fontWeight:"bold",marginTop:40},children:this.props.t("Warning!")}),e.jsx("div",{style:C.warningText,children:this.props.t("github_warning","GitHub","GitHub")}),e.jsx("div",{style:C.noteText,children:this.props.t("github_note")})]}):null}renderCustom(){return this.state.currentTab==="URL"?e.jsxs(o.Paper,{style:C.tabPaper,id:"github-install-dialog-panel-custom",children:[e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{checked:this.state.debug,onChange:t=>{(window._localstorage||window.localStorage).setItem("App.gitDebug",t.target.checked?"true":"false"),this.setState({debug:t.target.checked})}}),label:this.props.t("Debug outputs")})}),e.jsx("div",{style:{display:"flex",alignItems:"center"},children:e.jsx(o.Autocomplete,{fullWidth:!0,value:this.state.url||"",onInputChange:(t,s)=>{(window._localstorage||window.localStorage).setItem("App.userUrl",s||""),this.setState({url:s})},onChange:(t,s)=>{(window._localstorage||window.localStorage).setItem("App.userUrl",s||""),this.setState({url:s})},renderOption:(t,s)=>e.jsxs(o.Box,{component:"li",...t,style:{display:"flex",alignItems:"left"},children:[s,e.jsx("div",{style:{flexGrow:1}}),e.jsx(o.IconButton,{size:"small",onClick:i=>{i.stopPropagation();const n=this.state.customHistory.filter(r=>r!==s);(window._localstorage||window.localStorage).setItem("App.npmHistory",JSON.stringify(n)),this.setState({customHistory:n})},children:e.jsx(g.Delete,{})})]}),freeSolo:!0,options:this.state.customHistory,renderInput:t=>e.jsx(o.TextField,{variant:"standard",...t,onKeyUp:s=>{if(s.key==="Enter"&&this.state.url){const i=this.state.customHistory.filter(n=>n!==this.state.url);i.unshift(this.state.url),i.length>it&&i.pop(),(window._localstorage||window.localStorage).setItem("App.npmHistory",JSON.stringify(i)),this.state.url.includes(".")?this.props.installFromUrl(this.state.url,this.state.debug,!0):this.props.installFromUrl(`iobroker.${this.state.url}`,this.state.debug,!0),this.setState({autoCompleteValue:null,url:""}),this.props.onClose()}},helperText:this.props.t("URL or file path"),label:this.props.t("URL")})})}),e.jsx("div",{style:{fontSize:24,fontWeight:"bold",marginTop:40},children:this.props.t("Warning!")}),e.jsx("div",{style:C.warningText,children:this.props.t("github_warning","URL","URL")}),e.jsx("div",{style:C.noteText,children:this.props.t("github_note")})]}):null}getList(){const t=this.props.categories.map(i=>i.adapters),s=It(t);return s.sort(),s.map((i,n)=>{if(n&&s[n-1]===i)return null;const r=this.props.repository[i];if(!(r!=null&&r.controller)){const a=(r.extIcon||r.meta||r.readme||"").toString().split("/");let c=r==null?void 0:r.name;c||(c=r.titleLang,c&&typeof c=="object"?c=c[x.I18n.getLanguage()]||c.en:c=r.title||i);const h={value:`${i}/${a[3]}`,name:`${c} [${a[3]}]`,icon:r.extIcon||r.icon,nogit:!!r.nogit,title:i};return this.props.installed[c]&&c!=="admin"&&(h.icon=`/adapter/${i}/${r.icon.split("/admin/").pop()}`),h}return null}).filter(i=>i).sort((i,n)=>i.name<n.name?-1:i.name>n.name?1:0)}render(){var s;const t=()=>this.setState({autoCompleteValue:null,url:""});return e.jsxs(o.Dialog,{onClose:()=>this.props.onClose(),open:!0,sx:{"& .MuiDialog-paper":C.paper},children:[e.jsx(o.DialogContent,{dividers:!0,children:e.jsxs(o.Box,{component:"div",sx:C.root,children:[e.jsx(o.AppBar,{position:"static",color:"default",children:e.jsxs(o.Tabs,{value:this.state.currentTab,onChange:(i,n)=>{(window._localstorage||window.localStorage).setItem("App.gitTab",n),this.setState({currentTab:n})},variant:"fullWidth",indicatorColor:"secondary",children:[e.jsx(o.Tab,{label:this.props.t("From npm"),wrapped:!0,sx:{"&.Mui-selected":C.tabSelected},icon:e.jsx("img",{src:St,alt:"npm",width:24,height:24}),...Z("npm"),value:"npm"}),e.jsx(o.Tab,{label:this.props.t("From github"),wrapped:!0,sx:{"&.Mui-selected":C.tabSelected},icon:e.jsx(lt,{style:{width:24,height:24},width:24,height:24}),...Z("github"),value:"GitHub"}),e.jsx(o.Tab,{label:this.props.t("Custom"),wrapped:!0,sx:{"&.Mui-selected":C.tabSelected},icon:e.jsx(g.Language,{width:24,height:24}),...Z("custom"),value:"URL"})]})}),e.jsx(o.Box,{component:"div",sx:C.title,children:this.props.t("Install or update the adapter from %s",this.state.currentTab||"npm")}),this.renderNpm(),this.renderGitHub(),this.renderCustom()]})}),e.jsxs(o.DialogActions,{children:[e.jsx(o.Button,{id:"github-install-dialog-ok",variant:"contained",disabled:(this.state.currentTab==="GitHub"||this.state.currentTab==="npm")&&!((s=this.state.autoCompleteValue)!=null&&s.value)||this.state.currentTab==="URL"&&!this.state.url,autoFocus:!0,onClick:async()=>{var i,n;if(this.state.currentTab==="GitHub"){const r=(((i=this.state.autoCompleteValue)==null?void 0:i.value)||"").split("/"),a=`${r[1]}/ioBroker.${r[0]}`;this.props.installFromUrl(a,this.state.debug,!0)}else if(this.state.currentTab==="URL"){const r=this.state.customHistory.filter(a=>a!==this.state.url);r.unshift(this.state.url),r.length>it&&r.pop(),(window._localstorage||window.localStorage).setItem("App.npmHistory",JSON.stringify(r)),this.state.url.includes(".")?this.props.installFromUrl(this.state.url,this.state.debug,!0):this.props.installFromUrl(`iobroker.${this.state.url}`,this.state.debug,!0)}else if(this.state.currentTab==="npm"){const r=(((n=this.state.autoCompleteValue)==null?void 0:n.value)||"").split("/")[0],a=r.includes(".")?r.split(".")[1]:r;try{await this.props.installFromUrl(`iobroker.${a}@latest`,this.state.debug,!0),this.props.upload(a)}catch(c){console.error(`Installation from url failed: ${c.message}`)}}this.props.onClose(),t()},color:"primary",startIcon:e.jsx(g.Check,{}),children:this.props.t("Install")}),e.jsx(o.Button,{id:"github-install-dialog-close",variant:"contained",onClick:()=>{this.props.onClose(),t()},color:"grey",startIcon:e.jsx(g.Close,{}),children:this.props.t("Close")})]})]})}}const B={formControl:{marginTop:24,width:100},closeButton:p=>({position:"absolute",right:8,top:8,color:p.palette.grey[500]}),languageButton:{position:"absolute",right:60,top:8},languageButtonActive:p=>({color:p.palette.primary.main}),paper:{},typography:{pr:"30px"},messageText:{},messageColor_warn:{color:"#cb7642"},messageColor_error:{color:"#f5614d"},messageColor_info:{color:"#5abd29"},messageTitle_warn:p=>({background:"#cb7642",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:p.palette.mode==="dark"?"black":"white"}),messageTitle_error:p=>({background:"#f5614d",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:p.palette.mode==="dark"?"black":"white"}),messageTitle_info:p=>({background:"#5abd29",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:p.palette.mode==="dark"?"black":"white"}),deps:p=>({m:"10px",fontSize:16,color:p.palette.mode==="dark"?"#e70000":"#840101"})};class Dt extends L.Component{t;messages=null;lang;constructor(t){super(t),this.state={instanceNumbers:[]},this.t=t.t,this.lang=x.I18n.getLanguage(),this.messages=K(t.adapterObject.messages,null,t.adapterObject.version,t.instances)}componentDidMount(){this.props.instancesWorker.getObjects().then(t=>{const s=Object.keys(t).filter(i=>{var n,r;return((r=(n=t[i])==null?void 0:n.common)==null?void 0:r.name)===this.props.adapter}).map(i=>i.substring(i.lastIndexOf(".")+1));this.setState({instanceNumbers:s})})}getAvailableInstances(){const t=[];t.push(e.jsx(o.MenuItem,{value:"auto",children:this.t("auto")},"auto"));for(let s=0;s<=100&&(this.state.instanceNumbers.includes(s.toString())||t.push(e.jsx(o.MenuItem,{value:s.toString(),children:s},s)),!(t.length>11));s++);return t}checkDependencies(t=this.props.dependencies){if(!t)return"";const s=[];for(const i of t)i.installedVersion?i.rightVersion||s.push(`${this.props.t("Invalid version of %s. Required %s. Current ",i.name,i.version)}${i.installedVersion}`):s.push(this.props.t("No version of %s",i.name,i.name));return s.length?s.map(i=>e.jsx("div",{children:i},i)):""}getText(t,s){return t&&typeof t=="object"?s?t.en:t[this.lang]||t.en:typeof t=="object"?"":t}renderOneMessage(t,s){return e.jsxs(o.Grid2,{children:[e.jsx(o.Typography,{sx:B[`messageTitle_${t.level||"warn"}`],children:this.getText(t.title,this.props.noTranslation)||""}),e.jsx(o.Typography,{component:"div",variant:"body2",style:B.messageText,children:this.getText(t.text,this.props.noTranslation)||""}),t.link?e.jsx(o.Button,{onClick:()=>{window.open(t.link,"_blank").focus()},startIcon:e.jsx(g.Public,{}),variant:"contained",color:"grey",children:this.getText(t.linkText,this.props.noTranslation)||this.props.t("More info")}):null]},s)}renderMessages(){return this.messages?e.jsx(o.Grid2,{container:!0,spacing:2,direction:"column",wrap:"nowrap",sx:{marginBottom:1},children:this.messages.map((t,s)=>this.renderOneMessage(t,s))}):null}render(){const t=this.checkDependencies();return e.jsxs(o.Dialog,{onClose:()=>{},open:!0,sx:{"& .MuiDialog-paper":B.paper},children:[e.jsx(o.DialogTitle,{children:e.jsxs(o.Typography,{component:"h2",variant:"h6",sx:{"&.MuiTypography-root":B.typography},children:[this.t("You are going to add new instance:")," ",this.props.adapter,e.jsx(o.IconButton,{size:"large",sx:B.closeButton,onClick:()=>this.props.onClose(!1),children:e.jsx(g.Close,{})}),this.messages&&this.lang!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:x.Utils.getStyle(this.props.theme,B.languageButton,this.props.noTranslation&&B.languageButtonActive),onClick:this.props.toggleTranslation,title:x.I18n.t("Disable/Enable translation"),children:e.jsx(g.Language,{})}):null]})}),e.jsxs(o.DialogContent,{dividers:!0,children:[this.renderMessages(),!t&&this.props.expertMode?e.jsxs(o.Grid2,{container:!0,direction:"column",children:[e.jsx(mt,{tooltip:this.t("Select host to add the instance"),expertMode:!0,socket:this.props.socket,hostsWorker:this.props.hostsWorker,currentHost:this.props.currentHost,setCurrentHost:(s,i)=>this.props.onHostChange(i.replace(/^system\.host\./,""))}),e.jsxs(o.FormControl,{variant:"standard",style:B.formControl,children:[e.jsx(o.InputLabel,{id:"instance-label",children:this.t("Instance")}),e.jsx(o.Select,{variant:"standard",labelId:"instance-label",value:this.props.currentInstance,onChange:this.props.onInstanceChange,children:this.getAvailableInstances()})]})]}):null,e.jsx(o.Box,{component:"div",sx:B.deps,children:t})]}),e.jsxs(o.DialogActions,{children:[e.jsx(o.Button,{id:"instance-add-dialog-ok",variant:"contained",autoFocus:!0,disabled:!!t,onClick:()=>this.props.onClose(!0),color:"primary",startIcon:e.jsx(g.Add,{}),children:this.t("Add")}),e.jsx(o.Button,{id:"instance-add-dialog-cancel",variant:"contained",onClick:()=>this.props.onClose(!1),color:"grey",startIcon:e.jsx(g.Close,{}),children:this.t("Close")})]})]})}}function q(p){var s;if(!p)return"";if((s=p.licenseInformation)!=null&&s.link)return p.licenseInformation.link;let t=p.licenseUrl;if(!t||!t.includes("/LICENSE")||!t.includes("raw.githubusercontent.com")){if(t=p.extIcon,!t){if(t=p.readme,!t)return console.error(`No extIcon for ${p.name||JSON.stringify(p)}`),"";t=t.replace("github.com","raw.githubusercontent.com").replace("/blob/","/"),t.includes("/main")?t=`${t.split("/main")[0]}/main/LICENSE`:t.includes("/master")&&(t=`${t.split("/master")[0]}/master/LICENSE`)}if(t.includes("/main"))t=`${t.split("/main")[0]}/main/LICENSE`;else if(t.includes("/master"))t=`${t.split("/master")[0]}/master/LICENSE`;else return""}return t}class P extends L.Component{constructor(t){super(t),this.state={showDialog:!1,showLicenseDialog:null,addInstanceHostName:"",addInstanceId:"auto",addInstanceDialog:""}}renderLicenseDialog(t){return this.state.showLicenseDialog?e.jsx(xt,{licenseType:this.state.showLicenseDialog.licenseType,url:this.state.showLicenseDialog.url,onClose:s=>{const i=s?this.state.showLicenseDialog:null;this.setState({showLicenseDialog:null,showDialog:!1},()=>{i&&(i.upload?P.upload(i.adapterName,t):this.addInstance({adapterName:i.adapterName,context:t}).catch(n=>window.alert(`Cannot add instance: ${n}`)))})}}):null}async addInstance(t){if(!t.customUrl){const i=t.context.repository[t.adapterName],n=K(i.messages,null,i.version,t.context.compactInstances);if(!t.instance&&(t.context.expertMode||n)){this.setState({addInstanceDialog:t.adapterName,showDialog:!0,addInstanceHostName:t.context.currentHost.replace(/^system\.host\./,""),addInstanceId:t.instance||"auto"});return}if(t.instance){const r=await t.context.instancesWorker.getObjects();if(r&&r[`system.adapter.${t.adapterName}.${t.instance}`]){window.alert(t.context.t("Instance %s already exists",`${t.adapterName}.${t.instance}`));return}}}const s=(this.state.addInstanceHostName||t.context.currentHost).replace(/^system\.host\./,"");try{await new Promise((i,n)=>{t.context.executeCommand(`${t.customUrl?"url":"add"} ${t.adapterName} ${t.instance?`${t.instance} `:""}--host ${s} ${t.debug||t.context.expertMode?"--debug":""}`,s,r=>r?n(new Error(`The process returned an exit code of ${r}`)):i())})}catch(i){window.alert(`${x.I18n.t("Cannot install")}: ${i}`)}}static getDependencies(t,s){var r,a;const i=s.repository[t],n=[];if(i){i.dependencies&&!Array.isArray(i.dependencies)&&(i.dependencies=[i.dependencies]),i.globalDependencies&&!Array.isArray(i.globalDependencies)&&(i.globalDependencies=[i.globalDependencies]);const c=i.node;if((r=i.dependencies)!=null&&r.length)for(const d of i.dependencies){const l={name:"",version:null,installed:!1,installedVersion:null,rightVersion:!1},u=typeof d!="string",m=Object.keys(d);if(l.name=u?m?m[0]:null:d,l.version=u?d[l.name]:null,l.name){const f=s.installed[l.name];l.installed=!!f,l.installedVersion=f?f.version:null;try{l.rightVersion=f?u?V.satisfies(f.version,l.version,{includePrerelease:!0}):!0:!1}catch{l.rightVersion=!0}}n.push(l)}if((a=i.globalDependencies)!=null&&a.length)for(const d of i.globalDependencies){const l={name:"",version:null,installed:!1,installedVersion:null,rightVersion:!1},u=typeof d!="string",m=Object.keys(d);if(l.name=u?m?m[0]:null:d,l.version=u?d[l.name]:null,l.name){const f=s.installedGlobal[l.name];l.installed=!!f,l.installedVersion=f?f.version:null;try{l.rightVersion=f?u?V.satisfies(f.version,l.version,{includePrerelease:!0}):!0:!1}catch{l.rightVersion=!0}}n.push(l)}const h=i.ifInstalledDependencies;if(h&&typeof h=="object"&&!Array.isArray(h)){const d=Object.keys(h);for(const l of d){const u={name:l,version:h[l],installed:!1,installedVersion:null,rightVersion:!1};if(u.name){const m=s.installedGlobal[u.name];u.installed=!!m,u.installedVersion=m?m.version:null;try{u.rightVersion=m?V.satisfies(m.version,u.version,{includePrerelease:!0}):!0}catch{u.rightVersion=!0}}n.push(u)}}if(c){const d={name:"node",version:c,installed:!0,installedVersion:s.nodeJsVersion,rightVersion:!1};try{d.rightVersion=V.satisfies(s.nodeJsVersion,c)}catch{d.rightVersion=!0}n.push(d)}}return n}renderAddInstanceDialog(t){return this.state.addInstanceDialog?e.jsx(Dt,{adapter:this.state.addInstanceDialog,socket:t.socket,hostsWorker:t.hostsWorker,instancesWorker:t.instancesWorker,dependencies:P.getDependencies(this.state.addInstanceDialog,t),currentHost:`system.host.${this.state.addInstanceHostName}`,currentInstance:this.state.addInstanceId,t:t.t,onClose:s=>{const i=s?this.state.addInstanceDialog:"",n=s?this.state.addInstanceId:"";this.setState({addInstanceDialog:"",addInstanceId:"auto",showDialog:!1},()=>{if(i)try{this.addInstance({adapterName:i,instance:n,context:t})}catch(r){window.alert(`Cannot add instance: ${r}`)}})},onHostChange:s=>this.setState({addInstanceHostName:s.replace(/^system\.host\./,"")}),onInstanceChange:s=>this.setState({addInstanceId:s.target.value.toString()}),adapterObject:t.repository[this.state.addInstanceDialog],instances:t.compactInstances,toggleTranslation:t.toggleTranslation,noTranslation:this.props.noTranslation,expertMode:t.expertMode,theme:t.theme}):null}static upload(t,s){s.executeCommand(`upload ${t}${s.expertMode?" --debug":""}`)}onAddInstance(t,s){var a;const i=s.repository[t],n=q(i),r=((a=i.licenseInformation)==null?void 0:a.license)||i.license;r==="MIT"?this.addInstance({adapterName:t,context:s}).catch(c=>window.alert(`Cannot add instance: ${c}`)):this.setState({showLicenseDialog:{url:n,adapterName:t,licenseType:r},showDialog:!0})}renderDialogs(t){return this.state.showDialog?e.jsxs(e.Fragment,{children:[this.renderAddInstanceDialog(t),this.renderLicenseDialog(t)]}):null}}const F={name:{flexWrap:"nowrap",width:300,marginTop:0},nameDiv:{display:"flex",alignItems:"center"},categoryName:{fontWeight:"bold",cursor:"pointer"},green:{color:pt[500]},blue:{color:Ct[700]},category:{backgroundColor:"background.default"},marginRight5:{marginRight:5}};function Vt(p){const{installedCount:t,name:s,categoryName:i}=p;return e.jsxs(o.TableRow,{hover:!1,sx:F.category,children:[e.jsx(o.TableCell,{children:e.jsx(o.Grid2,{container:!0,spacing:1,alignItems:"center",style:F.name,children:e.jsx(o.Grid2,{component:"div",children:e.jsx(o.IconButton,{size:"small",onClick:p.onToggle,children:p.expanded?e.jsx(g.ExpandMore,{}):e.jsx(g.ChevronRight,{})})})})}),e.jsx(o.TableCell,{onClick:p.onToggle,children:e.jsxs("div",{style:{...F.nameDiv,...F.categoryName},children:[e.jsx(wt,{iconName:i,style:F.marginRight5}),s]})}),e.jsxs(o.TableCell,{colSpan:p.descHidden?5:6,children:[e.jsx(o.Typography,{component:"span",variant:"body2",style:F.green,children:t}),` ${p.t("of")} `,e.jsx(o.Typography,{component:"span",variant:"body2",style:F.blue,children:p.count}),` ${p.t("Adapters from this Group installed")}`]})]})}const S={rating:{marginBottom:20},listRating:{marginRight:8},listTime:{opacity:.5,fontStyle:"italic"},list:{},listOwn:p=>({backgroundColor:p.name==="colored"||p.name==="light"?"#16516e2e":p.palette.secondary.dark}),listTitle:p=>({backgroundColor:p.palette.primary.dark,pt:"4px",pb:"4px",mb:"4px",color:"#ffffff",textAlign:"center"}),languageFilter:{width:300},ratingTextControl:{width:"calc(100% - 138px)",marginRight:8},ratingLanguageControl:{width:130},noComments:{width:"100%",textAlign:"center",marginTop:16},commentCount:{marginTop:2,marginLeft:8,opacity:.8,fontSize:10,float:"right"},infoText:{textAlign:"left",fontSize:"14px"},infoTextContainer:{display:"flex",paddingBottom:"10px",alignItems:"center",gap:"10px"}},ot=[{id:"en",title:"English"},{id:"de",title:"Deutsch"},{id:"ru",title:"русский"},{id:"pt",title:"Portugues"},{id:"nl",title:"Nederlands"},{id:"fr",title:"français"},{id:"it",title:"Italiano"},{id:"es",title:"Espanol"},{id:"pl",title:"Polski"},{id:"uk",title:"Українська"},{id:"zh-cn",title:"简体中文"}];class Rt extends L.Component{constructor(t){super(t),this.state={ratingNumber:0,ratingComment:"",votings:null,ratingLang:this.props.lang,filterLang:(window._localStorage||window.localStorage).getItem("app.commentLang")||this.props.lang,commentsByLanguage:{}}}componentDidMount(){fetch(`https://rating.iobroker.net/adapter/${this.props.adapter}?uuid=${this.props.uuid}`).then(t=>t.json()).then(t=>{t=t||{},t.rating=t.rating||{};const s=Object.keys(t.rating);s.sort((n,r)=>t.rating[n].ts>t.rating[r].ts?-1:t.rating[n].ts<t.rating[r].ts?1:0);const i={};if(t.comments&&(t.comments.sort((n,r)=>n.ts>r.ts?-1:n.ts<r.ts?1:0),t.comments.forEach(n=>{i[n.lang]=i[n.lang]||0,i[n.lang]++})),s.length){const n=t.rating[s[0]];this.setState({votings:t,ratingNumber:n?n.r:0,commentsByLanguage:i})}else this.setState({votings:t,commentsByLanguage:i})})}setAdapterRating(t,s,i,n,r){return fetch("https://rating.iobroker.net/vote",{method:"POST",headers:{"Content-Type":"application/json"},redirect:"follow",body:JSON.stringify({uuid:this.props.uuid,adapter:t,version:s,rating:i,comment:n,lang:r})}).then(a=>a.json()).then(a=>(window.alert(`${this.props.t("Vote:")} ${t}@${s}=${i}`),delete a.adapter,a)).catch(a=>(window.alert(`Cannot vote: ${a}`),null))}renderInfoText(){return e.jsxs("div",{style:S.infoTextContainer,children:[e.jsx(g.Info,{}),e.jsx(o.Typography,{style:S.infoText,children:this.props.t("use GitHub for issues")})]})}renderComments(){var t;if((t=this.state.votings)!=null&&t.comments&&this.state.votings.comments.length){const s=this.state.votings.comments.find(i=>!(this.state.filterLang&&this.state.filterLang!=="_"&&i.lang!==this.state.filterLang));return e.jsxs("div",{style:{width:"100%",textAlign:"left"},children:[e.jsx(o.Box,{component:"h3",sx:S.listTitle,children:this.props.t("Comments")}),e.jsxs(o.FormControl,{variant:"standard",style:S.languageFilter,children:[e.jsx(o.InputLabel,{children:this.props.t("Show comments in language")}),e.jsxs(o.Select,{variant:"standard",value:this.state.filterLang,onChange:i=>{(window._localStorage||window.localStorage).setItem("app.commentLang",i.target.value),this.setState({filterLang:i.target.value})},children:[e.jsxs(o.MenuItem,{value:"_",children:[this.props.t("All")," ",e.jsx("span",{style:S.commentCount,children:this.state.votings.comments.length})]}),ot.map(i=>e.jsxs(o.MenuItem,{value:i.id,children:[i.title," ",this.state.commentsByLanguage[i.id]?e.jsx("span",{style:S.commentCount,children:this.state.commentsByLanguage[i.id]}):null]},i.id))]})]}),e.jsxs(o.List,{style:S.list,dense:!0,disablePadding:!0,children:[s&&this.state.votings.comments.map((i,n)=>this.state.filterLang&&this.state.filterLang!=="_"&&i.lang!==this.state.filterLang?null:i?e.jsxs(o.ListItem,{title:i.uuid?this.props.t("Your comment"):"",sx:{"&.MuiListItem-root":i.uuid?S.listOwn:void 0},dense:!0,children:[e.jsx(o.ListItemAvatar,{style:S.listRating,children:e.jsx(o.Rating,{readOnly:!0,defaultValue:i.rating,size:"small"})}),e.jsx(o.ListItemText,{primary:i.comment,secondary:`${new Date(i.ts).toLocaleString()} / v${i.version}`,sx:{"& .MuiListItemText-secondary":S.listTime}})]},n):null),!s&&e.jsx("div",{style:S.noComments,children:this.props.t("No comments in selected language")})]})]})}return null}render(){var i,n,r;let t,s;if(this.state.votings){const a=this.state.votings.rating;s=Object.keys(a),s.sort((c,h)=>a[c].ts>a[h].ts?-1:a[c].ts<a[h].ts?1:0),s.length&&(t=a[s[0]])}return e.jsxs(o.Dialog,{open:!0,onClose:()=>this.props.onClose(),children:[e.jsx(o.DialogTitle,{children:`${this.props.t("Review")} ${this.props.adapter}${this.props.version?`@${this.props.version}`:""}`}),e.jsxs(o.DialogContent,{style:{textAlign:"center"},title:((i=this.props.currentRating)==null?void 0:i.title)||"",children:[this.renderInfoText(),e.jsx(o.Rating,{style:S.rating,name:this.props.adapter,value:this.props.version?this.state.ratingNumber:(r=(n=this.props.currentRating)==null?void 0:n.rating)==null?void 0:r.r,size:"large",readOnly:!this.props.version,onChange:(a,c)=>this.setState({ratingNumber:c})}),this.props.version?e.jsxs("div",{style:{width:"100%",textAlign:"left"},children:[e.jsx(o.TextField,{variant:"standard",style:S.ratingTextControl,value:this.state.ratingComment,label:this.props.t("Comment to version"),helperText:this.props.t("Max length %s characters",200),onChange:a=>this.setState({ratingComment:a.target.value}),slotProps:{input:{endAdornment:this.state.ratingComment?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{tabIndex:-1,size:"small",onClick:()=>this.setState({ratingComment:""}),children:e.jsx(g.Close,{})})}):null},htmlInput:{maxLength:200}}}),e.jsxs(o.FormControl,{variant:"standard",style:S.ratingLanguageControl,children:[e.jsx(o.InputLabel,{children:this.props.t("Language")}),e.jsx(o.Select,{variant:"standard",value:this.state.ratingLang,onChange:a=>this.setState({ratingLang:a.target.value}),children:ot.map(a=>e.jsx(o.MenuItem,{value:a.id,children:a.title},a.id))})]})]}):null,this.props.version?e.jsx("div",{style:{paddingTop:20,paddingBottom:16},children:this.props.t("Rate how good this version of the adapter works on your system. You can vote for every new version.")}):null,s&&t?e.jsx("div",{children:this.props.t("You voted for %s on %s",s[0],new Date(t.ts).toLocaleDateString())}):null,this.renderComments()]}),e.jsxs(o.DialogActions,{children:[this.props.version&&e.jsx(o.Button,{variant:"contained",autoFocus:!0,color:"primary",disabled:!this.state.ratingNumber||this.state.votings===null,onClick:()=>{this.state.ratingNumber!==(t==null?void 0:t.r)||this.state.ratingComment?this.setAdapterRating(this.props.adapter,this.props.version,this.state.ratingNumber,this.state.ratingComment,this.state.ratingLang).then(a=>this.props.onClose(a)):this.props.onClose()},startIcon:e.jsx(g.HowToVote,{}),children:this.props.t("Rate")}),e.jsx(o.Button,{autoFocus:!this.props.version,variant:"contained",onClick:()=>this.props.onClose(),color:"grey",startIcon:e.jsx(g.Close,{}),children:this.props.t("Close")})]})]})}}const nt={closeButton:p=>({position:"absolute",right:8,top:8,color:p.palette.grey[500]}),typography:{paddingRight:30}};class Lt extends L.Component{t;constructor(t){super(t),this.state={deleteCustom:!1,deleteCustomSupported:!1},this.t=t.t}componentDidMount(){this.props.socket.checkFeatureSupported("DEL_INSTANCE_CUSTOM").then(t=>{if(t)return this.props.socket.getObject(`system.adapter.${this.props.adapter}`).then(s=>{s!=null&&s.common?s.common.supportCustoms&&this.setState({deleteCustomSupported:s.common.supportCustoms}):this.setState({deleteCustomSupported:!0})})})}render(){return e.jsxs(o.Dialog,{onClose:this.props.onClose,open:!0,children:[e.jsx(o.DialogTitle,{children:e.jsxs(o.Typography,{component:"h2",variant:"h6",sx:{"&.MuiTypography-root":nt.typography},children:[this.t("Please confirm"),e.jsx(o.IconButton,{size:"large",sx:nt.closeButton,onClick:this.props.onClose,children:e.jsx(g.Close,{})})]})}),e.jsxs(o.DialogContent,{dividers:!0,children:[e.jsx(o.Typography,{gutterBottom:!0,children:this.t("Are you sure you want to delete adapter %s?",this.props.adapter)}),this.state.deleteCustomSupported&&e.jsx(o.FormControlLabel,{control:e.jsx(o.Checkbox,{checked:this.state.deleteCustom,onChange:t=>this.setState({deleteCustom:t.target.checked})}),label:this.t("Delete all custom object settings of this adapter too")})]}),e.jsxs(o.DialogActions,{children:[e.jsx(o.Button,{id:"adapter-delete-dialog-ok",variant:"contained",autoFocus:!0,onClick:()=>{this.props.onClick(this.state.deleteCustom),this.props.onClose()},color:"primary",startIcon:e.jsx(g.Check,{}),children:this.t("Ok")}),e.jsx(o.Button,{id:"adapter-delete-dialog-cancel",variant:"contained",autoFocus:!0,onClick:()=>this.props.onClose(),color:"grey",startIcon:e.jsx(g.Close,{}),children:this.t("Close")})]})]})}}const ct={none:e.jsx(g.HorizontalRule,{}),patch:e.jsx(g.KeyboardDoubleArrowUp,{style:{color:"green"}}),minor:e.jsx(g.North,{style:{color:"orange"}}),major:e.jsx(g.VerticalAlignTop,{style:{color:"red"}})};class Ut extends J.Component{constructor(t){super(t),this.state={currentSavedPolicy:"none",policy:"none",repositories:[],supported:!0}}async componentDidMount(){await this.getConfiguredRepositories(),await this.getCurrentAutoUpgradeSetting()}async getConfiguredRepositories(){var i;const t=await this.props.socket.getObject("system.config");if(!((i=t==null?void 0:t.common)!=null&&i.adapterAutoUpgrade))return;const s=Object.entries(t.common.adapterAutoUpgrade.repositories).filter(([,n])=>n).map(([n])=>n);this.setState({repositories:s})}getAdapterId(){return`${this.props.hostId}.adapter.${this.props.adapter}`}async getCurrentAutoUpgradeSetting(){const t=await this.props.socket.getObject(this.getAdapterId());if(!t){console.error("no adapter object existing"),this.setState({supported:!1});return}this.setState({policy:t.common.automaticUpgrade||"none",currentSavedPolicy:t.common.automaticUpgrade||"none"})}async save(){const t=await this.props.socket.getObject(this.getAdapterId());if(!t){console.error("no adapter object existing"),this.setState({supported:!1});return}t.common.automaticUpgrade=this.state.policy,await this.props.socket.setObject(this.getAdapterId(),t),this.setState({currentSavedPolicy:this.state.policy},()=>this.props.onClose())}render(){return e.jsxs(o.Dialog,{open:!0,maxWidth:"md",fullWidth:!0,children:[e.jsx(o.DialogTitle,{children:x.I18n.t("Auto upgrade policy for %s",this.props.adapter)}),e.jsxs(o.DialogContent,{style:{padding:"0 20px",overflow:"hidden"},children:[e.jsx(N,{value:!this.state.supported,children:e.jsx(o.Typography,{children:x.I18n.t("This feature is supported up from js-controller Kiera (Version 6)!")})}),e.jsxs(N,{value:this.state.supported,children:[e.jsx(o.Typography,{children:x.I18n.t("Allow only the following upgrades to be performed automatically:")}),e.jsx(o.Select,{variant:"standard",style:{marginTop:20,minWidth:150,marginBottom:8},value:this.state.policy,onChange:t=>this.setState({policy:t.target.value}),children:ft.map(t=>e.jsx(o.MenuItem,{value:t,children:e.jsxs("div",{style:{display:"flex",gap:8},children:[ct[t],yt[t]]})},t))}),e.jsx(N,{value:this.state.repositories.includes("beta")&&this.state.policy!=="none",children:e.jsx(z,{type:"warning",children:x.I18n.t("repo_update_hint")})}),e.jsx(N,{value:this.state.policy==="major",children:e.jsx(z,{type:"warning",children:x.I18n.t("The current selected configuration will allow to automatically pull in incompatible changes of this adapter!")})})]})]}),e.jsxs(o.DialogActions,{children:[e.jsx(o.Button,{disabled:this.state.currentSavedPolicy===this.state.policy,color:"primary",variant:"contained",startIcon:e.jsx(g.Save,{}),onClick:()=>this.save(),children:x.I18n.t("Save")}),e.jsx(o.Button,{variant:"contained",onClick:()=>this.props.onClose(),color:"grey",startIcon:e.jsx(g.Close,{}),children:x.I18n.t("Close")})]})]})}}const ht={hidden:{display:"none"},buttonUpdate:{border:"1px solid",padding:"0px 7px",borderRadius:5,display:"flex",alignItems:"center",cursor:"pointer",transition:"background 0.5s","&:hover":{background:"#00800026"}},buttonUpdateIcon:{height:20,width:20,marginRight:10},classPoll:{color:"orange"},classPush:{color:"green"},classAssumption:{color:"red",transform:"rotate(90deg)"},marginLeft5:{marginLeft:5},ratingSet:{cursor:"pointer"},sentry:{width:21,height:21,objectFit:"fill",marginTop:3,filter:"invert(0%) sepia(90%) saturate(1267%) hue-rotate(-260deg) brightness(99%) contrast(97%)"},tooltip:{pointerEvents:"none"},wrongDependencies:{color:vt[700]},updateAvailable:{color:pt[700]},currentVersion:p=>({cursor:"pointer",mb:"6px",mr:"8px",mt:"4px","&:hover":{background:p.palette.primary.dark}}),header:p=>({fontWeight:"bold",background:p.palette.secondary.main,p:"10px"}),modalDialog:{height:"calc(100% - 64px)",overflowY:"hidden"},currentVersionText:p=>({color:p.palette.mode==="dark"?"#a3ffa3":"#009800",fontWeight:"bold",marginLeft:"4px"}),repoStableVersionText:p=>({color:p.palette.mode==="dark"?"#8dff7a":"#2b9800",fontWeight:"bold",marginLeft:"4px"}),repoLatestVersionText:p=>({color:p.palette.mode==="dark"?"#a3fcff":"#005498",fontWeight:"bold",marginLeft:"4px"}),rating:{},containerVersion:{},containerSpecificVersion:{},versionWarn:{color:dt[500]},cardContentFlexBetween:{},cardContentFlex:{}};class H extends P{installedVersion="";constructor(t){super(t),Object.assign(this.state,{autoUpgradeDialogOpen:!1,showUpdateDialog:!1,adapterDeletionDialog:!1,adapterInstallSpecificVersion:"",showInstallVersion:!1,showSetRating:null})}static renderImage(t){const{style:s,alt:i,...n}=t,r=s.backgroundImage.substring(5,s.backgroundImage.length-2);return e.jsx("img",{...n,alt:i,src:r,onError:a=>{a.target&&(a.target.onerror=null,a.target.src="img/no-image.svg")}})}renderAddInstanceButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterInstall:!0;return e.jsx(N,{value:t,children:e.jsx(o.Tooltip,{title:this.props.context.t("Add instance"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",disabled:this.props.commandRunning,style:this.props.cached.rightOs?void 0:this.styles.hidden,onClick:this.props.cached.rightOs?()=>this.onAddInstance(this.props.adapterName,this.props.context):void 0,children:e.jsx(g.Add,{})})})})}renderAutoUpgradeButton(){var i;const t=this.props.context.hostAdapterWorker.getObject(this.props.adapterName);if(!t)return e.jsx("div",{style:{width:34,height:34,display:"inline-block"}});const s=(i=t.common)==null?void 0:i.automaticUpgrade;return e.jsx(o.Tooltip,{title:this.props.context.t("Automatic Upgrade Policy")+(s?`: ${s}`:""),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",onClick:()=>this.setState({autoUpgradeDialogOpen:!0,showDialog:!0}),children:!s||s==="none"?e.jsx(g.KeyboardArrowUp,{}):ct[s]})})}renderReadmeButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterReadme:!0;return e.jsx(N,{value:t,children:e.jsx(o.Tooltip,{title:this.props.context.t("Readme"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",onClick:()=>this.openInfoDialog(),children:e.jsx(g.Help,{})})})})}renderRating(){var i,n,r;const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterRating:!0;return this.props.context.isTileView&&(this.props.context.sortPopularFirst||this.props.context.sortRecentlyUpdated)||!this.props.context.repository[this.props.adapterName].stat||t===!1?null:e.jsx("div",{onClick:()=>this.setState({showSetRating:{version:this.installedVersion,rating:this.props.context.repository[this.props.adapterName].rating},showDialog:!0}),style:{...this.styles.rating,...this.styles.ratingSet},title:(i=this.props.context.repository[this.props.adapterName].rating)==null?void 0:i.title,children:e.jsx(o.Rating,{name:this.props.adapterName,precision:.5,size:"small",readOnly:!0,value:((r=(n=this.props.context.repository[this.props.adapterName].rating)==null?void 0:n.rating)==null?void 0:r.r)||0})})}renderConnectionType(){var s;const t=(s=this.props.context.repository[this.props.adapterName])==null?void 0:s.connectionType;return t==="cloud"?e.jsx(o.Tooltip,{title:this.props.context.t("Adapter requires the specific cloud access for these devices/service"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.Cloud,{})}):t==="local"?e.jsx(o.Tooltip,{title:this.props.context.t("Adapter does not use the cloud for these devices/service"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.CloudOff,{})}):null}renderDataSource(){var s;const t=(s=this.props.context.repository[this.props.adapterName])==null?void 0:s.dataSource;return t?e.jsx("div",{style:this.styles.marginLeft5,title:t,children:t==="poll"?e.jsx(o.Tooltip,{title:this.props.context.t("The device or service will be periodically asked"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.ArrowUpward,{style:this.styles.classPoll})}):t==="push"?e.jsx(o.Tooltip,{title:this.props.context.t("The device or service delivers the new state actively"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.ArrowDownward,{style:this.styles.classPush})}):t==="assumption"?e.jsx(o.Tooltip,{slotProps:{popper:{sx:this.styles.tooltip}},title:this.props.context.t("Adapter cannot request the exactly device status and the status will be guessed on the last sent command"),children:e.jsx(g.Remove,{style:this.styles.classAssumption})}):e.jsx("div",{style:{width:24,height:24}})}):null}renderLicenseInfo(t=!1){var r,a,c,h;const s=this.props.context.repository[this.props.adapterName],i=q(s),n=(r=s.licenseInformation)!=null&&r.type?e.jsx(o.Link,{href:i,target:"_blank",rel:"noopener",sx:(d=>({color:d.palette.mode==="dark"?"white":"black","&:hover":{color:d.palette.mode==="dark"?"white":"black"}})),children:((a=s.licenseInformation)==null?void 0:a.type)==="paid"?e.jsx(o.Tooltip,{title:this.props.context.t("The adapter requires a paid license."),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.MonetizationOn,{})}):((c=s.licenseInformation)==null?void 0:c.type)==="commercial"?e.jsx(o.Tooltip,{slotProps:{popper:{sx:this.styles.tooltip}},title:this.props.context.t("The adapter requires a paid license for commercial use."),children:e.jsx(g.MonetizationOn,{opacity:.5})}):((h=s.licenseInformation)==null?void 0:h.type)==="limited"?e.jsx(o.Tooltip,{slotProps:{popper:{sx:this.styles.tooltip}},title:this.props.context.t("The adapter has a limited functionality without a paid license."),children:e.jsx(g.MonetizationOn,{opacity:.5})}):null}):null;return!n&&t?e.jsx("div",{style:{width:24,height:24}}):n}renderSentryInfo(){var s,i;return((i=(s=this.props.context.repository[this.props.adapterName])==null?void 0:s.plugins)==null?void 0:i.sentry)?e.jsx("div",{style:this.styles.marginLeft5,children:e.jsx(o.Tooltip,{title:"sentry",slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.CardMedia,{style:this.styles.sentry,component:"img",image:bt})})}):null}getDependencies(){const t=P.getDependencies(this.props.adapterName,this.props.context);if(!t)return null;const s=[];for(const i of t)i.installedVersion?i.rightVersion||s.push(`${this.props.context.t("Invalid version of %s. Required %s. Current ",i.name,i.version)}${i.installedVersion}`):s.push(this.props.context.t("No version of %s",i.name,i.name));return s.length?(s.unshift(this.props.context.t("Wrong dependencies")),s.map((i,n)=>e.jsx("div",{style:n?void 0:{fontWeight:"bold",fontSize:"larger"},children:i},i))):null}renderVersion(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterUpdate:!0,s=this.props.context.repository[this.props.adapterName],i=s==null?void 0:s.version;return i?!this.props.commandRunning&&this.props.cached.updateAvailable&&t!==!1?e.jsx(o.Tooltip,{title:this.props.context.t("Update"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsxs("div",{onClick:()=>this.setState({showUpdateDialog:!0,showDialog:!0}),style:{...this.styles.buttonUpdate,...this.props.cached.rightDependencies?this.styles.updateAvailable:void 0},children:[e.jsx(o.IconButton,{style:this.styles.buttonUpdateIcon,size:"small",children:e.jsx(g.Refresh,{})}),i]})}):e.jsx(o.Tooltip,{title:this.getDependencies(),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx("span",{style:this.props.cached.rightDependencies?void 0:this.styles.wrongDependencies,children:i})}):e.jsx("span",{style:this.styles.wrongDependencies,children:this.props.context.t("not maintained")})}static extractGitHubCommitHash(t){if(!t)return null;const s=t.indexOf("#");if(s===-1)return null;const i=t.substring(s+1);return i.length>=7?i.substring(0,7):i}renderInstalledVersion(t){var h,d;const s=this.props.context.installed[this.props.adapterName],i=(d=(h=this.props.context.adapters[`system.adapter.${this.props.adapterName}`])==null?void 0:h.common)==null?void 0:d.installedFrom,{adapterName:n}=this.props,r=i&&!i.startsWith(`iobroker.${n}@`),a=r?H.extractGitHubCommitHash(i):null,c=r&&a?`${this.installedVersion}+${a}`:this.installedVersion;if(t){const l=s==null?void 0:s.enabled,u=s==null?void 0:s.count;return e.jsxs(o.Grid2,{container:!0,wrap:"nowrap",alignItems:"center",spacing:1,children:[this.installedVersion?e.jsx(o.Grid2,{children:c+(u?` (${u}${u!==l?"~":""})`:"")}):null,r&&e.jsx(o.Grid2,{container:!0,children:e.jsx(o.Tooltip,{title:`${this.props.context.t("Non-NPM-Version")}: ${i}`,slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.GitHub,{fontSize:"small",style:this.styles.versionWarn})})})]})}return this.installedVersion?e.jsxs(o.Typography,{component:"span",style:this.styles.cardContentFlexBetween,children:[e.jsxs("div",{children:[this.props.context.t("Installed version"),":"]}),e.jsxs("div",{style:this.styles.cardContentFlex,children:[r&&e.jsx(o.Tooltip,{title:`${this.props.context.t("Non-NPM-Version")}: ${i}`,slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(g.GitHub,{fontSize:"small",style:this.styles.versionWarn})}),c]})]}):null}renderUploadButton(){return this.props.context.expertMode&&this.installedVersion?e.jsx(o.Tooltip,{title:this.props.context.t("Upload"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",disabled:this.props.commandRunning,onClick:()=>this.onUpload(),children:e.jsx(g.Publish,{})})}):null}renderDeleteButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterDelete:!0;return e.jsx(N,{value:!!this.installedVersion&&t,children:e.jsx(o.Tooltip,{title:this.props.context.t("Delete adapter"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",disabled:this.props.commandRunning,onClick:()=>this.setState({adapterDeletionDialog:!0,showDialog:!0}),children:e.jsx(g.DeleteForever,{})})})})}renderInstallSpecificVersionButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterUpdate:!0;return this.props.context.expertMode&&t!==!1&&this.installedVersion&&e.jsx(o.Tooltip,{title:this.props.context.t("Install a specific version"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{disabled:this.props.commandRunning,size:"small",onClick:()=>this.setState({showInstallVersion:!0,showDialog:!0}),children:e.jsx(g.AddToPhotos,{})})})}renderRebuildButton(){return!this.props.context.expertMode||!this.installedVersion?null:e.jsx(o.Tooltip,{title:this.props.context.t("Rebuild"),children:e.jsx(o.IconButton,{size:"small",disabled:this.props.commandRunning,onClick:()=>this.rebuild(),children:e.jsx(g.Build,{})})})}renderAutoUpdateDialog(){return this.state.autoUpgradeDialogOpen?e.jsx(Ut,{onClose:()=>this.setState({autoUpgradeDialogOpen:!1,showDialog:!1}),adapter:this.props.adapterName,hostId:this.props.context.adminHost,socket:this.props.context.socket}):null}renderUpdateAdapterDialog(){var t;return this.state.showUpdateDialog?(this.installedVersion=(t=this.props.context.installed[this.props.adapterName])==null?void 0:t.version,e.jsx(jt,{adapter:this.props.adapterName,adapterObject:this.props.context.repository[this.props.adapterName],t:this.props.context.t,dependencies:P.getDependencies(this.props.adapterName,this.props.context),rightDependencies:this.props.context.rightDependenciesFunc(this.props.adapterName),news:this.getNews(),toggleTranslation:this.props.context.toggleTranslation,noTranslation:this.props.noTranslation,installedVersion:this.installedVersion,onUpdate:s=>this.setState({showUpdateDialog:!1,showDialog:!1},()=>this.update(s)),isStable:this.props.context.repository._repoInfo.stable,onIgnore:s=>this.setState({showUpdateDialog:!1,showDialog:!1},()=>this.props.context.socket.getObject(`system.adapter.${this.props.adapterName}`).then(i=>{i!=null&&i.common?(i.common.ignoreVersion=s,this.props.context.socket.setObject(i._id,i).catch(n=>window.alert(`Cannot write object: ${n}`))):window.alert(`Adapter "${this.props.adapterName}" does not exist!`)}).then(()=>this.props.context.removeUpdateAvailable(this.props.adapterName))),onClose:()=>this.setState({showUpdateDialog:!1,showDialog:!1}),instances:this.props.context.compactInstances,theme:this.props.context.theme})):null}static formatNews(t){return(t||"").toString().split(`
|
|
4
|
+
`).map(i=>i.trim().replace(/^\*+/,"").replace(/^-/,"").replace(/\*+$/,"").replace(/\r/g,"").trim()).filter(i=>i).map((i,n)=>e.jsxs("div",{style:{},children:[e.jsx("span",{children:"- "}),i]},n))}renderAdapterInstallVersion(){var n,r,a,c;if(!this.state.showInstallVersion)return null;let t,s;const i=this.props.context.repository._repoInfo;return i!=null&&i.stable?(t=(n=this.props.context.repository[this.props.adapterName])==null?void 0:n.version,s=(r=this.props.context.repository[this.props.adapterName])==null?void 0:r.latestVersion):(t=(a=this.props.context.repository[this.props.adapterName])==null?void 0:a.stable,s=(c=this.props.context.repository[this.props.adapterName])==null?void 0:c.version),e.jsx(Tt,{title:this.props.context.t("Please select specific version of %s",this.props.adapterName),applyButton:!1,onClose:()=>this.setState({showInstallVersion:!1,adapterInstallSpecificVersion:"",showDialog:!1}),theme:this.props.context.theme,toggleTranslation:this.props.context.toggleTranslation,noTranslation:this.props.noTranslation,children:e.jsxs("div",{style:{height:"100%",overflowY:"hidden"},children:[e.jsxs("div",{style:this.styles.containerSpecificVersion,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx(o.TextField,{variant:"standard",style:{flexGrow:1},label:this.props.context.t("Enter version manually"),value:this.state.adapterInstallSpecificVersion,onChange:h=>this.setState({adapterInstallSpecificVersion:h.target.value}),slotProps:{input:{endAdornment:this.state.adapterInstallSpecificVersion?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{tabIndex:-1,size:"small",onClick:()=>this.setState({adapterInstallSpecificVersion:""}),children:e.jsx(g.Close,{})})}):null}}}),e.jsx(o.Button,{color:"primary",variant:"contained",size:"small",disabled:!this.state.adapterInstallSpecificVersion,onClick:()=>{this.state.adapterInstallSpecificVersion&&(this.update(this.state.adapterInstallSpecificVersion),this.setState({showInstallVersion:!1,adapterInstallSpecificVersion:"",showDialog:!1}))},children:this.props.context.t("Install")})]}),e.jsx(o.Tooltip,{title:this.props.context.t("npmjs.com"),slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.IconButton,{size:"small",onClick:()=>{window.open(`https://www.npmjs.com/package/iobroker.${this.props.adapterName}?activeTab=versions`,this.props.adapterName).focus()},children:e.jsx(g.Link,{})})})]}),e.jsx(o.Box,{component:"div",sx:this.styles.header,children:this.props.context.t("Or select from the list")}),e.jsx("div",{style:{...this.styles.containerVersion,height:"calc(100% - 122px)",overflowY:"auto"},children:this.getNews(!0).map(({version:h,news:d})=>e.jsx(o.Card,{variant:"outlined",sx:this.styles.currentVersion,onClick:()=>{this.update(h),this.setState({showInstallVersion:!1,showDialog:!1})},children:e.jsxs(o.CardContent,{children:[e.jsxs(o.Typography,{sx:x.Utils.getStyle(this.props.context.theme,this.installedVersion===h&&this.styles.currentVersionText,{fontSize:16,fontWeight:"bold"}),color:"text.secondary",gutterBottom:!0,children:[h,this.installedVersion===h?e.jsx(o.Box,{component:"span",sx:this.styles.currentVersionText,children:`(${this.props.context.t("current")})`}):null,s===h?e.jsx(o.Box,{component:"span",sx:this.styles.repoLatestVersionText,children:"(latest)"}):null,t===h?e.jsx(o.Box,{component:"span",sx:this.styles.repoStableVersionText,children:`(${this.props.context.t("stable")})`}):null]}),e.jsx(o.Typography,{variant:"body2",style:{opacity:.7},children:H.formatNews(d)})]})},h))})]})})}renderSetRatingDialog(){return this.state.showSetRating?e.jsx(Rt,{t:this.props.context.t,lang:this.props.context.lang,version:this.state.showSetRating.version,adapter:this.props.adapterName,currentRating:this.state.showSetRating.rating,onClose:t=>{t&&this.props.context.updateRating(this.props.adapterName,t),this.setState({showSetRating:null,showDialog:!1})},uuid:this.props.context.uuid}):null}renderAdapterDeletionDialog(){return this.state.adapterDeletionDialog?e.jsx(Lt,{adapter:this.props.adapterName,socket:this.props.context.socket,t:this.props.context.t,onClick:t=>this.delete(t),onClose:()=>this.setState({adapterDeletionDialog:!1,showDialog:!1})}):null}openInfoDialog(){var i;const s=(i=this.props.context.repository[this.props.adapterName].docs)!=null&&i[this.props.context.lang]?this.props.context.lang:"en";window.open(at.getDocsLinkForAdapter({lang:s,adapterName:this.props.adapterName}),"help")}getNews(t=!1){const s=this.props.context.repository[this.props.adapterName],i=this.props.context.installed[this.props.adapterName],n=[];return i&&(s!=null&&s.news)&&Object.keys(s.news).forEach(r=>{try{if(V.gt(r,i.version)||t){let a;typeof s.news[r]=="object"?a=this.props.noTranslation?s.news[r].en:s.news[r][this.props.context.lang]||s.news[r].en:a=s.news[r],n.push({version:r,news:a})}}catch{console.warn(`[ADAPTERS] Cannot compare "${r}" and "${i.version}" (${this.props.adapterName})`)}}),n}onUpload(){var n;const t=this.props.context.repository[this.props.adapterName],s=q(t),i=((n=t.licenseInformation)==null?void 0:n.license)||t.license;i!=="MIT"?this.setState({showLicenseDialog:{url:s,upload:!0,adapterName:this.props.adapterName,licenseType:i},showDialog:!0}):P.upload(this.props.adapterName,this.props.context)}delete(t){this.props.context.executeCommand(`del ${this.props.adapterName}${t?" --custom":""}${this.props.context.expertMode?" --debug":""}`)}async update(t){if(this.props.adapterName==="admin"&&this.props.context.adminHost===this.props.context.currentHost&&await this.props.context.socket.checkFeatureSupported("ADAPTER_WEBSERVER_UPGRADE")){this.props.context.setAdminUpgradeTo(t);return}this.props.context.executeCommand(`upgrade ${this.props.adapterName}@${t}${this.props.context.expertMode?" --debug":""}`)}rebuild(){this.props.context.executeCommand(`rebuild ${this.props.adapterName}${this.props.context.expertMode?" --debug":""}`)}renderDialogs(){return this.state.showDialog?e.jsxs(e.Fragment,{children:[this.renderAddInstanceDialog(this.props.context),this.renderLicenseDialog(this.props.context),this.renderUpdateAdapterDialog(),this.renderAdapterInstallVersion(),this.renderSetRatingDialog(),this.renderAdapterDeletionDialog(),this.renderAutoUpdateDialog()]}):null}}const Nt="0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)",Ot="0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)",Bt={...ht,type:{color:"tile"},root:p=>({position:"relative",m:"10px",width:300,minHeight:200,background:p.palette.background.default,boxShadow:Nt,display:"flex",flexDirection:"column",transition:"box-shadow 0.5s","&:hover":{boxShadow:Ot}}),imageBlock:p=>({background:p.palette.mode==="dark"?"#848484":"#c0c0c0",minHeight:60,display:"flex",padding:"0 10px 0 10px",position:"relative",justifyContent:"space-between",color:"#000"}),img:{width:45,height:45,margin:"auto 0",position:"relative","&:after":{content:'""',position:"absolute",zIndex:2,top:0,left:0,width:"100%",height:"100%",background:'url("img/no-image.svg") 100% 100% no-repeat',backgroundSize:"cover",backgroundColor:"#fff"}},installed:{background:"#77c7ff8c"},update:{background:"#10ff006b"},fab:{position:"absolute",bottom:-20,width:40,height:40,right:20},greenText:p=>({color:p.palette.success.dark}),collapse:{height:"100%",backgroundColor:"silver",position:"absolute",width:"100%",zIndex:3,marginTop:"auto",bottom:0,justifyContent:"space-between",display:"flex",flexDirection:"column"},close:{width:20,height:20,opacity:.9,cursor:"pointer",position:"relative",marginLeft:"auto",mb:"10px",transition:"all 0.6s ease","&:hover":{transform:"rotate(90deg)"},"&:before":{position:"absolute",left:9,content:'""',height:20,width:3,backgroundColor:"rgba(0, 0, 0, 0.54)",transform:"rotate(45deg)"},"&:after":{position:"absolute",left:9,content:'""',height:20,width:3,backgroundColor:"rgba(0, 0, 0, 0.54)",transform:"rotate(-45deg)"}},footerBlock:p=>({background:p.palette.background.default,p:"10px",display:"flex",justifyContent:"space-between"}),versionDate:{alignSelf:"center"},adapter:p=>({width:"100%",fontWeight:"bold",fontSize:16,verticalAlign:"middle",pl:1,pt:2,color:(p.palette.mode==="dark","#333")}),adapterWithAgo:{width:"calc(100% - 145px)"},description:p=>({color:p.palette.mode==="dark"?"#222":"inherit"}),cardContent:{overflow:"auto"},cardContentDiv:{position:"sticky",right:0,top:0,background:"silver"},cardContentFlex:{display:"flex"},cardContentFlexBetween:{display:"flex",justifyContent:"space-between"},cardContent2:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},cardMargin10:{marginTop:10},availableVersion:{display:"flex",justifyContent:"space-between"},curdContentFlexCenter:{display:"flex",alignItems:"center"},versionWarn:{color:dt[500],marginRight:5},rating:{marginTop:20}};class $t extends H{styles=Bt;constructor(t){super(t),Object.assign(this.state,{openCollapse:!1})}renderInfoCard(){return e.jsxs("div",{style:this.styles.collapse,children:[e.jsxs(o.CardContent,{style:this.styles.cardContent,children:[e.jsx("div",{style:this.styles.cardContentDiv,children:e.jsx(o.Box,{component:"div",sx:this.styles.close,onClick:()=>this.setState({openCollapse:!this.state.openCollapse})})}),e.jsx(o.Typography,{gutterBottom:!0,component:"span",variant:"body2",sx:this.styles.description,children:this.props.cached.desc})]}),e.jsxs(o.Box,{component:"div",sx:this.styles.footerBlock,children:[this.renderAddInstanceButton(),e.jsxs("div",{style:this.styles.cardContentFlex,children:[this.renderAutoUpgradeButton(),this.renderReadmeButton(),this.renderUploadButton(),this.renderDeleteButton(),this.renderInstallSpecificVersionButton()]})]})]})}renderCardMedia(){const t=this.props.context.repository[this.props.adapterName],s=t==null?void 0:t.version;return e.jsxs(o.Box,{component:"div",sx:x.Utils.getStyle(this.props.context.theme,this.styles.imageBlock,this.installedVersion&&this.styles.installed,this.installedVersion&&s&&this.installedVersion!==s&&this.props.cached.updateAvailable&&this.styles.update),children:[e.jsx(o.CardMedia,{sx:this.styles.img,component:i=>H.renderImage(i),src:this.props.cached.image||"img/no-image.svg",image:this.props.cached.image||"img/no-image.svg"}),e.jsx(o.Box,{component:"div",sx:x.Utils.getStyle(this.props.context.theme,this.styles.adapter,(t.stat||this.props.context.sortRecentlyUpdated)&&this.styles.adapterWithAgo),children:this.props.adapterName}),this.props.context.sortPopularFirst?e.jsx("div",{style:this.styles.versionDate,children:t.stat}):null,this.props.context.sortRecentlyUpdated?e.jsx("div",{style:this.styles.versionDate,children:this.props.cached.daysAgoText}):null,!this.props.context.sortPopularFirst&&!this.props.context.sortRecentlyUpdated?this.renderRating():null,this.state.openCollapse?null:e.jsx(o.Tooltip,{title:this.props.context.t("Info"),slotProps:{popper:{sx:{pointerEvents:"none"}}},children:e.jsx(o.Fab,{onClick:()=>this.setState({openCollapse:!this.state.openCollapse}),style:this.styles.fab,color:"primary","aria-label":"add",children:e.jsx(g.MoreVert,{})})})]})}renderCardContent(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterUpdate:!0,s=this.props.context.installed[this.props.adapterName];return e.jsxs(o.CardContent,{style:this.styles.cardContent2,children:[e.jsx(o.Typography,{gutterBottom:!0,variant:"h5",component:"h5",children:this.props.cached.title}),e.jsxs("div",{style:this.styles.cardContentFlex,children:[this.renderConnectionType(),this.renderDataSource(),e.jsx("div",{children:this.renderLicenseInfo()}),this.renderSentryInfo()]}),e.jsxs("div",{style:this.styles.cardMargin10,children:[s!=null&&s.count?e.jsxs(o.Typography,{component:"span",style:this.styles.cardContentFlexBetween,children:[e.jsxs("div",{children:[this.props.context.t("Installed instances"),":"]}),e.jsx("div",{children:s.count})]}):null,e.jsx(N,{value:t,children:e.jsxs(o.Typography,{component:"span",style:this.styles.availableVersion,children:[e.jsx("div",{children:this.props.context.t("Available version:")}),e.jsx(o.Box,{component:"div",sx:x.Utils.getStyle(this.props.context.theme,this.props.cached.updateAvailable&&this.styles.greenText,this.styles.curdContentFlexCenter),children:this.renderVersion()})]})}),this.renderInstalledVersion()]})]})}render(){var t;return this.installedVersion=(t=this.props.context.installed[this.props.adapterName])==null?void 0:t.version,e.jsxs(o.Card,{sx:this.styles.root,children:[this.state.openCollapse?this.renderInfoCard():null,this.renderCardMedia(),this.renderCardContent(),this.renderDialogs()]})}}const _t={...ht,type:{color:"line"},smallAvatar:{width:32,height:32,marginLeft:4},paddingNone:{padding:"0 !important"},name:{flexWrap:"nowrap",width:300,marginTop:0},flex:{display:"flex"},nameCell:{paddingTop:"0 !important",paddingBottom:"0 !important"}};class Wt extends H{styles=_t;render(){var i,n;const t=this.props.context.repository[this.props.adapterName],s=t?t.allowAdapterRating:!0;return this.installedVersion=(i=this.props.context.installed[this.props.adapterName])==null?void 0:i.version,e.jsxs(o.TableRow,{hover:!0,children:[e.jsx(o.TableCell,{}),e.jsx(o.TableCell,{children:e.jsxs(o.Grid2,{container:!0,spacing:1,alignItems:"center",style:this.styles.name,children:[e.jsx(o.Tooltip,{title:this.props.adapterName,slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(o.Grid2,{style:this.styles.paddingNone,children:e.jsx(o.Avatar,{variant:"square",alt:this.props.cached.title,src:this.props.cached.image,style:this.styles.smallAvatar})})}),s!==!1?e.jsxs(o.Grid2,{style:this.styles.nameCell,children:[e.jsx("div",{children:this.props.cached.title}),this.renderRating()]}):e.jsx(o.Grid2,{children:this.props.cached.title})]})}),!this.props.context.descHidden&&e.jsx(o.TableCell,{title:this.props.cached.desc,style:{width:20,wordWrap:"break-word"},children:this.props.cached.desc}),e.jsx(o.TableCell,{children:e.jsxs("div",{style:this.styles.flex,children:[this.renderConnectionType()||e.jsx("div",{style:{width:24,height:24}}),this.renderDataSource()||e.jsx("div",{style:{marginLeft:5,width:24,height:24}}),this.renderSentryInfo()||e.jsx("div",{style:{marginLeft:5,width:24,height:24}}),this.renderLicenseInfo(!0)]})}),e.jsx(o.TableCell,{children:this.renderInstalledVersion(!0)}),e.jsx(o.TableCell,{children:e.jsx(o.Grid2,{container:!0,alignItems:"center",children:this.renderVersion()})}),e.jsx(o.TableCell,{style:{fontSize:"smaller"},children:((n=t==null?void 0:t.licenseInformation)==null?void 0:n.license)||(t==null?void 0:t.license)}),e.jsxs(o.TableCell,{children:[this.renderAddInstanceButton(),this.renderAutoUpgradeButton(),this.renderReadmeButton(),this.renderUploadButton(),this.renderDeleteButton(),this.renderInstallSpecificVersionButton(),this.renderRebuildButton()]}),this.renderDialogs()]})}}const Y=246,$={emptyBlock:50,name:300,connectionType:120,installed:120,available:120,update:40,license:80,install:Y},G=Object.keys($).reduce((p,t)=>p+$[t],0),k={container:{height:"100%",width:"100%"},containerNotFullHeight:{height:"calc(100% - 50px)"},containerFullHeight:{height:"100%"},table:{width:"100%",tableLayout:"fixed",minWidth:960,"& td":{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",pt:"2px",pb:"2px",pr:"4px",pl:"4px"},"& th":{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",pt:"2px",pb:"2px",pr:"4px",pl:"4px"}},name:{flexWrap:"nowrap",width:$.name},emptyBlock:{flexWrap:"nowrap",width:$.emptyBlock},description:{width:`calc(100% - ${G+2}px)`},connectionType:{width:$.connectionType},installed:{width:$.installed},available:{width:$.available,paddingRight:6},license:{width:$.license},install:{width:$.install},viewModeDiv:{display:"flex",flexFlow:"wrap",overflow:"auto",justifyContent:"center"}};class Pt extends L.Component{lastRenderCounter=-1;constructor(t){super(t),this.state={descWidth:t.descWidth,repoName:t.repoName,systemConfig:!!t.systemConfig,tableViewMode:t.tableViewMode,oneListView:t.oneListView,categoriesExpanded:JSON.stringify(t.categoriesExpanded),cachedAdapters:t.cachedAdapters?Object.keys(t.cachedAdapters).length:0,update:t.update,sortByName:t.sortByName,sortPopularFirst:t.sortPopularFirst,sortRecentlyUpdated:t.sortRecentlyUpdated,renderCounter:0,listOfVisibleAdapter:JSON.stringify(t.listOfVisibleAdapter),expertMode:t.context.expertMode,commandRunning:t.commandRunning,noTranslation:t.noTranslation}}getRow(t,s){const i=this.props.cachedAdapters[t];return i?e.jsx(Wt,{context:s,adapterName:t,cached:i,commandRunning:this.state.commandRunning,noTranslation:this.state.noTranslation},`adapter-${t}`):null}getRows(t){var n;if(!this.props.listOfVisibleAdapter)return e.jsx(o.TableRow,{children:e.jsx(o.TableCell,{colSpan:8,children:e.jsx(o.LinearProgress,{})})});let s=0,i=[];if(this.props.oneListView){for(let r=0;r<this.props.listOfVisibleAdapter.length;r++){const a=this.props.listOfVisibleAdapter[r];i.length>50&&!((n=this.props.context.installed[a])!=null&&n.version)||i.push(this.getRow(a,t))}if(s=i.length,s&&this.props.listOfVisibleAdapter.length>i.length){const r=this.props.listOfVisibleAdapter.length-i.length,a=r===1?this.props.context.t("Filter adapters to see others. There is %s more",1):this.props.context.t("Filter adapters to see others. There are %s more",r);i.push(e.jsx(o.TableRow,{children:e.jsx(o.TableCell,{colSpan:8,style:{fontSize:20,padding:20,textAlign:"center"},children:a})},"more"))}}else i=this.props.categories.map(r=>{if(!r.adapters.find(d=>this.props.listOfVisibleAdapter.includes(d)))return null;const c=r.name,h=this.props.categoriesExpanded[c];return s++,e.jsxs(L.Fragment,{children:[e.jsx(Vt,{categoryName:c,count:r.count,expanded:h,installedCount:r.installed,name:r.translation,descHidden:t.descHidden,onToggle:()=>this.props.toggleCategory(c),t:this.props.context.t},`category-${c}1`),h&&r.adapters.map(d=>{const l=this.getRow(d,t);return l&&s++,l})]},`category-${c} ${r.adapters.length}`)});return s?i:this.props.update?null:e.jsx("tr",{children:e.jsxs("td",{colSpan:8,style:{textAlign:"center"},children:[this.props.searchFilter||this.props.installedListFilter?e.jsx(o.Button,{variant:"outlined",title:this.props.context.t("Click to clear all filters"),onClick:()=>this.props.clearAllFilters(),children:this.props.context.t("all items are filtered out")}):null,this.props.updateListFilter&&(this.props.searchFilter||this.props.installedListFilter)?e.jsx("br",{}):null,this.props.updateListFilter?e.jsx(o.Button,{style:{marginTop:16},variant:"outlined",onClick:()=>this.props.clearAllFilters(!0),startIcon:e.jsx(g.Update,{}),children:this.props.context.t("Remove filter for updatable adapters")}):null]})})}getTiles(t){var i;if(!this.props.listOfVisibleAdapter)return e.jsx(o.LinearProgress,{});if(!this.props.listOfVisibleAdapter.length)return this.props.update?null:e.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:16},children:[this.props.searchFilter||this.props.installedListFilter?e.jsx(o.Tooltip,{title:this.props.context.t("Click to clear all filters"),slotProps:{popper:{sx:{pointerEvents:"none"}}},children:e.jsx(o.Button,{variant:"outlined",onClick:()=>this.props.clearAllFilters(),children:this.props.context.t("all items are filtered out")})}):null,this.props.updateListFilter?e.jsx(o.Button,{variant:"outlined",onClick:()=>this.props.clearAllFilters(!0),startIcon:e.jsx(g.Update,{}),children:this.props.context.t("Remove filter for updatable adapters")}):null]});const s=[];for(let n=0;n<this.props.listOfVisibleAdapter.length;n++){const r=this.props.listOfVisibleAdapter[n],a=this.props.cachedAdapters[r];s.length>50&&!((i=this.props.context.installed[r])!=null&&i.version)||s.push(e.jsx($t,{context:t,adapterName:r,cached:a,commandRunning:this.state.commandRunning,noTranslation:this.state.noTranslation},`adapter-${r}`))}return this.props.listOfVisibleAdapter.length>s.length&&(s.push(e.jsx("div",{style:{flexBasis:"100%",height:0}},"newLine")),s.push(e.jsx("div",{style:{fontSize:20,margin:20},children:this.props.context.t("Filter adapters to see others. There is %s more",this.props.listOfVisibleAdapter.length-s.length)},"more"))),s}renderTileView(t,s,i){return e.jsxs(e.Fragment,{children:[t?null:e.jsx(o.Box,{sx:{marginX:2,marginTop:1,width:"calc(100% - 32px)"},children:e.jsx(z,{type:"warning",children:this.props.context.t('Active repo is "%s"',s)})}),e.jsx("div",{style:k.viewModeDiv,children:this.getTiles(i)})]})}renderTableView(t,s,i){return e.jsxs(x.TabContent,{children:[t?null:e.jsx(o.Box,{sx:{marginX:2,marginTop:1,width:"calc(100% - 32px)"},children:e.jsx(z,{type:"warning",children:this.props.context.t('Active repo is "%s"',s)})}),e.jsx(o.TableContainer,{style:{...k.container,...t?k.containerFullHeight:k.containerNotFullHeight},children:e.jsxs(o.Table,{stickyHeader:!0,size:"small",sx:k.table,children:[e.jsx(o.TableHead,{children:e.jsxs(o.TableRow,{children:[e.jsx(o.TableCell,{style:k.emptyBlock}),e.jsx(o.TableCell,{style:k.name,children:e.jsx(o.Typography,{children:this.props.context.t("Name")})}),!i.descHidden&&e.jsx(o.TableCell,{style:{...k.description,width:this.props.descWidth},children:e.jsx(o.Typography,{children:this.props.context.t("Description")})}),e.jsx(o.TableCell,{style:k.connectionType}),e.jsx(o.TableCell,{style:k.installed,children:e.jsx(o.Typography,{children:this.props.context.t("Installed")})}),e.jsx(o.TableCell,{style:k.available,children:e.jsx(o.Typography,{children:this.props.context.t("Available")})}),e.jsx(o.TableCell,{style:k.license,children:e.jsx(o.Typography,{children:this.props.context.t("License")})}),e.jsx(o.TableCell,{style:{...k.install,width:this.state.expertMode?Y:Y-68},children:e.jsx(o.Typography,{children:this.props.context.t("Install")})})]})}),e.jsx(o.TableBody,{children:this.getRows(i)})]})})]})}static getDerivedStateFromProps(t,s){let i=!1;t.descWidth!==s.descWidth&&(console.log("Render because of descWidth"),i=!0),t.repoName!==s.repoName&&(console.log("Render because of repoName"),i=!0),!!t.systemConfig!==s.systemConfig&&(console.log("Render because of systemConfig"),i=!0),t.tableViewMode!==s.tableViewMode&&(console.log("Render because of tableViewMode"),i=!0),t.oneListView!==s.oneListView&&(console.log("Render because of oneListView"),i=!0);const n=JSON.stringify(t.categoriesExpanded);n!==s.categoriesExpanded&&(console.log("Render because of categoriesExpanded"),i=!0);const r=t.cachedAdapters?Object.keys(t.cachedAdapters).length:0;r!==s.cachedAdapters&&(console.log(`Render because of cachedAdapters ${r} <> ${s.cachedAdapters}`),i=!0),t.update!==s.update&&(console.log("Render because of update"),i=!0),t.sortByName!==s.sortByName&&(console.log("Render because of sortByName"),i=!0),t.sortPopularFirst!==s.sortPopularFirst&&(console.log("Render because of sortPopularFirst"),i=!0),t.sortRecentlyUpdated!==s.sortRecentlyUpdated&&(console.log("Render because of sortRecentlyUpdated"),i=!0),t.context.expertMode!==s.expertMode&&(console.log("Render because of expertMode"),i=!0);const a=JSON.stringify(t.listOfVisibleAdapter);return a!==s.listOfVisibleAdapter&&(console.log("Render because of listOfVisibleAdapter"),i=!0),t.commandRunning!==s.commandRunning&&(console.log("Render because of commandRunning"),i=!0),t.noTranslation!==s.noTranslation&&(console.log("Render because of commandRunning"),i=!0),i?{descWidth:t.descWidth,repoName:t.repoName,systemConfig:!!t.systemConfig,tableViewMode:t.tableViewMode,oneListView:t.oneListView,categoriesExpanded:n,cachedAdapters:r,update:t.update,sortByName:t.sortByName,sortPopularFirst:t.sortPopularFirst,sortRecentlyUpdated:t.sortRecentlyUpdated,listOfVisibleAdapter:a,renderCounter:s.renderCounter+1,expertMode:t.context.expertMode,commandRunning:t.commandRunning,noTranslation:t.noTranslation}:null}shouldComponentUpdate(t,s){return this.lastRenderCounter!==s.renderCounter?(this.lastRenderCounter=s.renderCounter,!0):!1}render(){var t,s;return(s=(t=this.props.systemConfig)==null?void 0:t.common)!=null&&s.activeRepo?this.props.tableViewMode?this.renderTableView(this.props.stableRepo,this.props.repoName,this.props.context):this.renderTileView(this.props.stableRepo,this.props.repoName,this.props.context):e.jsx(o.LinearProgress,{})}}class Mt extends L.Component{updating;interval;startTimeout;textareaRef;link;oldVersion;constructor(t){super(t),this.state={response:null,error:null,starting:!0,upAgain:!1},this.updating=!1,this.textareaRef=J.createRef(),this.link=`${window.location.protocol}//${window.location.host}/`}setUpdating(t){this.updating!==t&&(this.updating=t,this.props.onUpdating(t))}async getWebserverParams(){const t=await this.props.socket.getObject(`system.adapter.${this.props.adminInstance}`);return{useHttps:t.native.secure,port:t.native.port,certPrivateName:t.native.certPrivate,certPublicName:t.native.certPublic}}async componentDidMount(){const{certPrivateName:t,certPublicName:s,port:i,useHttps:n}=await this.getWebserverParams();this.oldVersion=this.props.currentAdminVersion,await this.props.socket.upgradeAdapterWithWebserver(this.props.host,{version:this.props.version,adapterName:"admin",port:i,useHttps:n,certPublicName:s,certPrivateName:t}),this.setUpdating(!0),this.interval=setInterval(()=>this.checkStatus(),1e3),this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.setState({starting:!1})},1e4)}componentWillUnmount(){this.interval&&(clearInterval(this.interval),this.interval=null),this.startTimeout&&(clearTimeout(this.startTimeout),this.startTimeout=null)}async checkVersion(){try{const s=await(await fetch("./version")).text();return s&&s.length<20&&s!==this.oldVersion?(this.interval&&(clearInterval(this.interval),this.interval=null),this.setState({response:{running:!1,success:!0,stderr:[],stdout:[x.I18n.t("Version updated to %s",s)]},upAgain:!0,error:null},()=>this.setUpdating(!1)),!0):s===this.oldVersion}catch{return!1}}async checkStatus(){console.log(`Request update status from: ${this.link}`);try{const s=await(await fetch(this.link)).text();if(console.log(`Received status: ${s}`),s.startsWith("{")&&s.endsWith("}"))try{const i=JSON.parse(s);i!=null&&i.stderr&&(i.stderr=i.stderr.filter(n=>n.trim())),i&&!i.running&&i.success&&i.stdout?(i.stdout.push(""),i.stdout.push("---------------------------------------------------"),i.stdout.push(x.I18n.t("%s was successfully updated to %s","admin",this.props.version))):i!=null&&i.stdout&&(i.stdout.unshift(""),i.stdout.unshift("---------------------------------------------------"),i.stdout.unshift(x.I18n.t("updating %s to %s...","admin",this.props.version))),this.setState({response:i,error:null},()=>{i&&!i.running?(this.interval&&(clearInterval(this.interval),this.interval=null),this.waitForAdapterStart()):i!=null&&i.running&&this.setUpdating(!0),this.textareaRef.current&&setTimeout(()=>this.textareaRef.current.scrollTop=this.textareaRef.current.scrollHeight,100)})}catch(i){console.error(`Cannot parse response: ${i}`),this.setState({error:s},()=>this.setUpdating(!1))}else await this.checkVersion()||console.error(`Response is not JSON: ${s}`)}catch(t){this.state.starting||this.setState({error:t.toString()},()=>this.setUpdating(!1))}}waitForAdapterStart(){this.interval=setInterval(async()=>{try{await fetch(this.link),clearInterval(this.interval),this.interval=null,this.setState({upAgain:!0})}catch{}},1e3)}render(){var t,s,i,n,r;return e.jsxs(o.Dialog,{onClose:(a,c)=>{c!=="escapeKeyDown"&&c!=="backdropClick"&&this.props.onClose()},open:!0,maxWidth:"lg",fullWidth:!0,children:[e.jsx(o.DialogTitle,{children:x.I18n.t("Updating %s...","admin")}),e.jsxs(o.DialogContent,{style:{height:400,padding:"0 20px",overflow:"hidden"},children:[(!this.state.response||this.state.response.running)&&!this.state.error?e.jsx(o.LinearProgress,{}):null,this.state.response||this.state.error?e.jsx("textarea",{ref:this.textareaRef,style:{width:"100%",height:"100%",resize:"none",background:this.props.themeType==="dark"?"#000":"#fff",color:this.props.themeType==="dark"?"#EEE":"#111",boxSizing:"border-box",fontFamily:"Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace",border:(t=this.state.response)!=null&&t.success?"2px solid green":this.state.error||this.state.response&&!this.state.response.running&&!this.state.response.success?"2px solid red":void 0},value:this.state.error?this.state.error:this.state.response.stderr&&this.state.response.stderr.length?this.state.response.stderr.join(`
|
|
5
|
+
`):this.state.response.stdout.join(`
|
|
6
|
+
`),readOnly:!0}):null]}),e.jsx(o.DialogActions,{children:e.jsx(o.Button,{variant:"contained",disabled:this.state.starting||!this.state.error&&!this.state.upAgain,onClick:()=>{var a;(a=this.state.response)!=null&&a.success&&window.location.reload(),this.props.onClose()},color:(s=this.state.response)!=null&&s.success?"primary":"grey",startIcon:(i=this.state.response)!=null&&i.success?e.jsx(g.Refresh,{}):e.jsx(g.Close,{}),children:(n=this.state.response)!=null&&n.success&&!this.state.upAgain?e.jsx(o.CircularProgress,{}):(r=this.state.response)!=null&&r.success?x.I18n.t("Reload"):x.I18n.t("Close")})})]})}}const j={grow:{flexGrow:1},updateAllButton:p=>({position:"relative","& .admin-update-second-icon":{position:"absolute",top:15,left:15,opacity:.4,color:p.palette.mode==="dark"?"#aad5ff":"#007fff"}}),counters:{mr:"10px",minWidth:120,display:"flex","& div":{ml:"3px"}},infoAdapters:p=>({fontSize:10,color:p.palette.mode==="dark"?"#9c9c9c":"#333",cursor:"pointer"}),greenText:{color:"#00a005d1"},tooltip:{pointerEvents:"none"}},rt=[{name:"Description A-Z"},{name:"Name A-Z"},{name:"Popular first",notByList:!0},{name:"Recently updated",notByList:!0}];class D extends P{inputRef;countRef;t;wordCache={};cache={listOfVisibleAdapter:null,adapters:null};listOfVisibleAdapterLength=0;allAdapters=0;installedAdapters=0;recentUpdatedAdapters=0;uuid="";buildCacheTimer=null;updateTimeout=null;typingTimer=null;hostsTimer=null;onHostAdapterTimer=null;tempAdapters=null;tempInstalled=null;tempInstances=null;hostAdapterWorker=null;constructor(t){super(t),Object.assign(this.state,{lastUpdate:0,repository:{},installed:{},installedGlobal:{},adapters:{},compactInstances:{},categories:[],hostData:null,compactRepositories:null,hostOs:"",nodeJsVersion:"",init:!1,update:!1,filterConnectionType:!1,search:(window._localStorage||window.localStorage).getItem("Adapter.search")||"",oneListView:!1,tableViewMode:!1,updateList:!1,installedList:0,categoriesTiles:"All",filterTiles:"Description A-Z",gitHubInstallDialog:!1,updateAvailable:[],filteredList:null,showUpdater:!1,descWidth:300,showStatistics:!1,readTimeoutMs:tt.getReadTimeoutMs(),showSlowConnectionWarning:!1,currentHost:t.currentHost,forceUpdateAdapters:t.forceUpdateAdapters,triggerUpdate:t.triggerUpdate,ratings:null,categoriesExpanded:{},adminUpgradeTo:""}),this.inputRef=L.createRef(),this.countRef=L.createRef(),this.t=this.translate}translate=(t,s,i)=>s!==void 0?this.props.t(t,s,i):(this.wordCache[t]||(this.wordCache[t]=this.props.t(t)),this.wordCache[t]);renderSlowConnectionWarning(){return this.state.showSlowConnectionWarning?e.jsx(tt,{readTimeoutMs:this.state.readTimeoutMs,t:this.t,onClose:t=>{t?this.setState({showSlowConnectionWarning:!1,readTimeoutMs:t},()=>this.updateAll()):this.setState({showSlowConnectionWarning:!1})}}):null}async componentDidMount(){this.props.ready&&(this.hostAdapterWorker=new st(this.props.socket,this.props.currentHost),this.hostAdapterWorker.registerHandler(this.onHostAdapterChanged),await this.hostAdapterWorker.getObjects(),await this.updateAll(),this.state.search&&this.filterAdapters(),this.props.adaptersWorker.registerHandler(this.onAdaptersChanged),this.props.instancesWorker.registerHandler(this.onAdaptersChanged))}async updateAll(t,s,i){await this.getAdapters(t,s,i),await this.getAdaptersInfo(t,i)}componentDidUpdate(){const t=this.getDescWidth();this.state.descWidth!==t&&this.setState({descWidth:t}),this.countRef.current&&(this.countRef.current.innerHTML=this.listOfVisibleAdapterLength.toString())}componentWillUnmount(){this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null),this.buildCacheTimer&&(clearTimeout(this.buildCacheTimer),this.buildCacheTimer=null),this.typingTimer&&(clearTimeout(this.typingTimer),this.typingTimer=null),this.hostsTimer&&(clearTimeout(this.hostsTimer),this.hostsTimer=null),this.onHostAdapterTimer&&(clearTimeout(this.onHostAdapterTimer),this.onHostAdapterTimer=null),this.props.adaptersWorker.unregisterHandler(this.onAdaptersChanged),this.props.instancesWorker.unregisterHandler(this.onAdaptersChanged),this.hostAdapterWorker.destroy(),this.hostAdapterWorker=null}onAdaptersChanged=t=>{this.tempAdapters=this.tempAdapters||JSON.parse(JSON.stringify(this.state.adapters||{})),this.tempInstalled=this.tempInstalled||JSON.parse(JSON.stringify(this.state.installed||{})),this.tempInstances=this.tempInstances||JSON.parse(JSON.stringify(this.state.compactInstances||{})),t.forEach(s=>{if(!!s.id.match(/\.\d+$/))s.type==="deleted"||!s.obj?delete this.tempInstances[s.id]:this.tempInstances[s.id]={enabled:s.obj.common.enabled,icon:s.obj.common.icon,name:s.obj.common.name,adminTab:s.obj.common.adminTab,version:s.obj.common.version};else if(s.type==="deleted"||!s.obj){const n=s.id.split(".");delete this.tempInstalled[n[2]],delete this.tempAdapters[s.id]}else{const n=s.obj.common.name;this.tempInstalled[n]?Object.keys(this.tempInstalled[n]).forEach(r=>{s.obj.common[r]!==void 0&&r!=="installedFrom"&&(this.tempInstalled[n][r]=s.obj.common[r])}):this.tempInstalled[s.id.split(".").pop()]=JSON.parse(JSON.stringify(s.obj.common)),this.tempAdapters[s.id]=s.obj}}),this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null;const s=this.tempAdapters;this.tempAdapters=null;const i=this.tempInstalled;this.tempInstalled=null;const n=this.tempInstances;this.tempInstances=null,this.analyseInstalled({adapters:s,installedLocal:i,cb:()=>this.calculateInfo(n)})},300)};analyseInstalled(t){let{adapters:s,repository:i}=t;const{cb:n,installedLocal:r}=t;let{installedGlobal:a}=t;s=s||this.state.adapters;const c=r||this.state.installed;a=a||this.state.installedGlobal,i=i||this.state.repository;const h=[];Object.keys(c).forEach(d=>{if(c[d]){const l=c[d].version,u=i[d];u&&u.version!==l&&at.updateAvailable(l,u.version)&&!h.includes(d)&&h.push(d)}}),this.cache.listOfVisibleAdapter=null,this.setState({adapters:s,updateAvailable:h,installed:c,repository:i,installedGlobal:a},()=>n&&n())}async getInstalled(t){let s,i={};const n=await this.props.socket.getHosts(t);for(const r of n)try{const a=await this.props.socket.getState(`${r._id}.alive`);if(a!=null&&a.val){const c=await this.props.socket.getInstalled(r._id,t,this.state.readTimeoutMs);r._id===this.state.currentHost&&(s=c),i={...i,...c}}}catch(a){window.alert(`Cannot getInstalled from "${r._id}" (timeout ${this.state.readTimeoutMs}ms): ${a}`),a.toString().includes("timeout")&&this.setState({showSlowConnectionWarning:!0})}return{installedLocal:s,installedGlobal:i}}async getAdapters(t,s,i){console.log("[ADAPTERS] getAdapters");const n=this.state.currentHost;t=t||this.props.adaptersWorker.isForceUpdate(),!this.state.update&&(t||i)&&this.setState({update:!0});let r;try{r=await this.props.adaptersWorker.getObjects(t)||{}}catch(d){window.alert(`Cannot getAdapters: ${d}`)}const{installedLocal:a,installedGlobal:c}=await this.getInstalled(t);let h;try{h=await this.props.socket.getRepository(n,{repo:this.props.systemConfig.common.activeRepo,update:s||i},t,this.state.readTimeoutMs)}catch(d){window.alert(`Cannot getRepository: ${d}`),d.toString().includes("timeout")&&this.setState({showSlowConnectionWarning:!0})}return this.analyseInstalled({adapters:r,installedLocal:a,repository:h,installedGlobal:c})}getWordVotes(t){if(t===1)return this.t("vote");if(t>=2&&t<=4)return this.t("votes2");if(t>=5&&t<=20)return this.t("votes");const s=t%10;return s===1?this.t("vote21"):s>=2&&s<=4?this.t("votes2"):this.t("votes")}static getAdapterTitle(t,s,i){if(!s[t])return t;const n=s[t].titleLang||s[t].title;let r;return typeof n=="object"?r=n[i]||n.en:r=n,r=((r||"").toString()||"").replace("ioBroker Visualisation - ",""),r.toLowerCase()}static sortAdapters(t,s,i,n,r,a,c,h){const d={};t.sort((l,u)=>{if(a)return n[u].stat===n[l].stat?(d[l]=d[l]||D.getAdapterTitle(l,n,s),d[u]=d[u]||D.getAdapterTitle(u,n,s),d[l]>d[u]?1:d[l]<d[u]?-1:0):n[u].stat-n[l].stat;if(c)return n[l]?n[u]?n[l].daysAgo===n[u].daysAgo?(d[l]=d[l]||D.getAdapterTitle(l,n,s),d[u]=d[u]||D.getAdapterTitle(u,n,s),d[l]>d[u]?1:d[l]<d[u]?-1:0):n[l].daysAgo-n[u].daysAgo:1:-1;if(h){if(h[l].exact&&!h[u].exact)return-1;if(!h[l].exact&&h[u].exact)return 1}return i[l]&&i[u]?r?l>u?1:l<u?-1:0:(d[l]=d[l]||D.getAdapterTitle(l,n,s),d[u]=d[u]||D.getAdapterTitle(u,n,s),d[l]>d[u]?1:d[l]<d[u]?-1:0):i[l]?-1:i[u]?1:r?l>u?1:l<u?-1:0:(d[l]=d[l]||D.getAdapterTitle(l,n,s),d[u]=d[u]||D.getAdapterTitle(u,n,s),d[l]>d[u]?1:d[l]<d[u]?-1:0)})}calculateInfo(t,s,i,n){i=i||this.state.hostData,s=s||this.state.ratings,t=t||this.state.compactInstances,n!=null&&n._id||(n=this.state.compactRepositories);const r=this.state.adapters,a=JSON.parse(JSON.stringify(this.state.installed)),c=JSON.parse(JSON.stringify(this.state.repository)),h=((i==null?void 0:i["Node.js"])||"").replace("v",""),d=(i==null?void 0:i.os)||"",l={},u=[];let m={};try{m=JSON.parse((window._localStorage||window.localStorage).getItem("Adapters.expandedCategories"))||{}}catch{}Object.keys(a).forEach(y=>{var O,E;const w=a[y];(E=(O=r[y])==null?void 0:O.common)!=null&&E.ignoreVersion&&(w.ignoreVersion=r[y].common.ignoreVersion),!w.controller&&y!=="hosts"&&(c[y]||(c[y]=JSON.parse(JSON.stringify(w)),c[y].version="")),w.count=0,w.enabled=0}),Object.keys(t).forEach(y=>{const w=t[y].name;a[w]&&a[w].count++});const f=Date.now();this.recentUpdatedAdapters=0,this.installedAdapters=0,Object.keys(c).forEach(y=>{var E;if(y==="hosts"||y.startsWith("_"))return;const w=c[y];w.keywords&&(w.keywords=w.keywords.map(R=>R.toLowerCase()));const O=a[y];if(w.rating=s==null?void 0:s[y],(E=w.rating)!=null&&E.rating?w.rating.title=[`${this.t("Total rating:")} ${w.rating.rating.r} (${w.rating.rating.c} ${this.getWordVotes(w.rating.rating.c)})`,O&&O.version&&w.rating[O.version]?`${this.t("Rating for")} v${O.version}: ${w.rating[O.version].r} (${w.rating[O.version].c} ${this.getWordVotes(w.rating.rating.c)})`:""].filter(R=>R).join(`
|
|
7
|
+
`):w.rating={title:this.t("No rating or too few data")},!w.controller){const R=w.type,Q=a[y];Math.round((f-new Date(w.versionDate).getTime())/864e5)<=31&&this.recentUpdatedAdapters++,a[y]&&this.installedAdapters++,l[R]?(l[R].count++,l[R].adapters.push(y),Q&&l[R].installed++):l[R]={name:R,translation:this.t(`${R}_group`),count:1,installed:Q?1:0,adapters:[y]}}}),Object.keys(l).sort((y,w)=>y==="general"&&w!=="general"?-1:y!=="general"&&w==="general"||l[y].translation>l[w].translation?1:l[y].translation<l[w].translation?-1:0).forEach(y=>u.push(l[y]));const v=this.state.filterTiles==="Name A-Z";Object.keys(l).forEach(y=>D.sortAdapters(l[y].adapters,this.props.lang,a,c,v));let b=0;try{b=JSON.parse((window._localStorage||window.localStorage).getItem("Adapters.installedList")),b===!1&&(b=0)}catch{}const I=(window._localStorage||window.localStorage).getItem("Adapters.list")==="true",T=(window._localStorage||window.localStorage).getItem("Adapters.viewMode")==="true",U=(window._localStorage||window.localStorage).getItem("Adapters.updateList")==="true",M=(window._localStorage||window.localStorage).getItem("Adapters.categoriesTiles")||"All";let _=(window._localStorage||window.localStorage).getItem("Adapters.filterTiles")||"Description A-Z";return _==="A-Z"&&(_="Description A-Z"),this.allAdapters=Object.keys(c).length-1,this.cache.listOfVisibleAdapter=null,new Promise(y=>{this.setState({repository:c,installed:a,ratings:s,filterTiles:_,categoriesTiles:M,compactRepositories:n,installedList:b,compactInstances:t,updateList:U,tableViewMode:T,oneListView:I,lastUpdate:Date.now(),hostData:i,hostOs:d,nodeJsVersion:h,categories:u,categoriesExpanded:m,init:!0,update:!1},()=>y())})}async getAdaptersInfo(t,s){var i;if(this.state.currentHost&&Date.now()-this.state.lastUpdate>1e3){console.log("[ADAPTERS] getAdaptersInfo");const n=this.state.currentHost;let r;try{(!this.state.update||s)&&await new Promise(l=>{this.setState({update:!0},()=>l())});const a=await this.props.socket.getHostInfo(n,t,this.state.readTimeoutMs).catch(l=>{window.alert(`Cannot getHostInfo for "${n}": ${l}`),l.toString().includes("timeout")&&this.setState({showSlowConnectionWarning:!0})});if(((i=this.props.adminGuiConfig.admin.adapters)==null?void 0:i.allowAdapterRating)!==!1){try{r=await this.props.socket.getRatings(t)}catch(l){window.alert(`Cannot read ratings: ${l}`)}this.uuid=(r==null?void 0:r.uuid)||null}else r=null;const c=await this.props.socket.getCompactInstances(t).catch(l=>(window.alert(`Cannot read countsOfInstances: ${l}`),{})),d=await this.props.socket.getCompactSystemRepositories(t).catch(l=>(window.alert(`Cannot read getCompactSystemRepositories: ${l}`),{}));await this.calculateInfo(c||{},r,a,d)}catch(a){window.alert(`Cannot get adapters info: ${a}`)}}}toggleCategory(t){this.setState(s=>{const i=s.categoriesExpanded;return i[t]=!i[t],(window._localStorage||window.localStorage).setItem("Adapters.expandedCategories",JSON.stringify(i)),{categoriesExpanded:i}})}rightDependencies=t=>{const s=this.state.repository[t];let i=!0;if(s){const n=s.dependencies,r=s.node;if(n)if(n instanceof Array)n.forEach(c=>{const h=typeof c!="string",d=Object.keys(c),l=h?d?d[0]:null:c;if(i&&l){const u=this.state.installed[l];try{i=u?h?V.satisfies(u.version,c[l],{includePrerelease:!0}):!0:!1}catch{i=!0}}});else if(typeof n=="object"){const c=n;Object.keys(c).forEach(h=>{if(h&&c[h]!==void 0&&i){const d=this.state.installed[h],l=typeof c[h]=="string";try{i=d?l?V.satisfies(d.version,c[h],{includePrerelease:!0}):!0:!1}catch{i=!0}}})}else console.error(`[ADAPTERS] Invalid dependencies for ${t}: ${JSON.stringify(n)}`);const a=s.ifInstalledDependencies;if(a&&typeof a=="object"&&!Array.isArray(a)&&Object.keys(a).forEach(h=>{if(i&&h){const d=this.state.installed[h];try{i=d?V.satisfies(d.version,a[h],{includePrerelease:!0}):!0}catch{i=!0}}}),i&&r)try{i=V.satisfies(this.state.nodeJsVersion,r)}catch{i=!0}}return i};rightOs(t){const s=this.state.repository[t];return s!=null&&s.os?Array.isArray(s.os)?!!s.os.find(i=>this.state.hostOs===i):this.state.hostOs===s.os:!0}handleFilterChange(t){this.typingTimer&&clearTimeout(this.typingTimer),this.typingTimer=setTimeout(s=>{(window._localStorage||window.localStorage).setItem("Adapter.search",s||""),this.typingTimer=null,this.filterAdapters(s)},300,t.target.value)}expandAll(){this.setState(t=>{const s=t.categories,i=t.categoriesExpanded;return s.forEach(n=>i[n.name]=!0),(window._localStorage||window.localStorage).setItem("Adapters.expandedCategories",JSON.stringify(i)),{categoriesExpanded:i}})}collapseAll(){const t={};(window._localStorage||window.localStorage).setItem("Adapters.expandedCategories",JSON.stringify(t)),this.setState({categoriesExpanded:t})}listTable(){const t=!this.state.oneListView;t&&this.expandAll(),(window._localStorage||window.localStorage).setItem("Adapters.list",t?"true":"false"),this.setState({oneListView:t})}changeViewMode(){this.cache.listOfVisibleAdapter=null;const t=!this.state.tableViewMode;let s=this.state.filterTiles;t&&s!=="Description A-Z"&&s!=="Name A-Z"&&(s="Description A-Z",(window._localStorage||window.localStorage).setItem("Adapters.filterTiles",s)),(window._localStorage||window.localStorage).setItem("Adapters.viewMode",t?"true":"false"),this.setState({tableViewMode:t,filterTiles:s})}changeUpdateList(){this.cache.listOfVisibleAdapter=null;const t=!this.state.updateList;(window._localStorage||window.localStorage).setItem("Adapters.updateList",t?"true":"false"),this.setState({updateList:t})}changeInstalledList(t){this.cache.listOfVisibleAdapter=null;let s=this.state.installedList?this.state.installedList<2?2:0:1;!s&&t&&(s=1),(window._localStorage||window.localStorage).setItem("Adapters.installedList",JSON.stringify(s)),this.setState({installedList:s})}changeFilterTiles(t){this.cache.listOfVisibleAdapter=null,(window._localStorage||window.localStorage).setItem("Adapters.filterTiles",t),this.setState({filterTiles:t})}changeCategoriesTiles(t){this.cache.listOfVisibleAdapter=null,(window._localStorage||window.localStorage).setItem("Adapters.categoriesTiles",t),this.setState({categoriesTiles:t})}filterAdapters(t){t=t===void 0?this.state.search:t,t=(t||"").toLowerCase().trim();let s={};t?this.state.categories.forEach(i=>i.adapters.forEach(n=>{var d;const r=this.state.repository[n];if(!r)return;let a,c;const h=r.titleLang||r.title;typeof h=="object"?a=h[this.props.lang]||h.en:a=h,a=((a||"").toString()||"").replace("ioBroker Visualisation - ",""),r.desc?typeof r.desc=="string"?c=r.desc:c=r.desc[this.props.lang]||r.desc.en||"":c="",n.includes(t)?s[n]={exact:n===t,type:"name",start:n.startsWith(t)}:a&&typeof a=="string"&&a.toLowerCase().includes(t)?s[n]={exact:!1,type:"title"}:c&&typeof c=="string"&&c.toLowerCase().includes(t)?s[n]={exact:!1,type:"desc"}:(d=r.keywords)!=null&&d.find(l=>l.includes(t))&&(s[n]={exact:!1,type:"keywords"})})):s=null,this.setState({filteredList:s,search:t},()=>{this.cache.listOfVisibleAdapter=null,this.forceUpdate()})}onHostAdapterChanged=t=>{this.onHostAdapterTimer&&clearTimeout(this.onHostAdapterTimer),this.onHostAdapterTimer=setTimeout(()=>{this.onHostAdapterTimer=null,this.cache.listOfVisibleAdapter=null,this.forceUpdate()},200)};clearAllFilters(t){t?((window._localStorage||window.localStorage).removeItem("Adapters.updateList"),this.setState({updateList:!1},()=>this.filterAdapters())):((window._localStorage||window.localStorage).removeItem("Adapter.search"),(window._localStorage||window.localStorage).removeItem("Adapters.installedList"),(window._localStorage||window.localStorage).removeItem("Adapters.updateList"),this.inputRef.current&&(this.inputRef.current.value=""),this.setState({filteredList:null,updateList:!1,filterConnectionType:!1,installedList:0,search:""},()=>this.filterAdapters()))}getContext(t){return{expertMode:this.props.expertMode,t:this.t,socket:this.props.socket,removeUpdateAvailable:s=>{const i=[...this.state.updateAvailable],n=i.indexOf(s);n!==-1&&(i.splice(n,1),this.setState({updateAvailable:i}))},toggleTranslation:this.props.toggleTranslation,rightDependenciesFunc:this.rightDependencies,lang:this.props.lang,uuid:this.uuid,themeType:this.props.themeType,theme:this.props.theme,onUpdating:this.props.onUpdating,repository:this.state.repository,installed:this.state.installed,installedGlobal:this.state.installedGlobal,compactInstances:this.state.compactInstances||{},adapters:this.state.adapters,nodeJsVersion:this.state.nodeJsVersion,currentHost:this.state.currentHost,adminHost:this.props.adminHost,adminInstance:this.props.adminInstance,instancesWorker:this.props.instancesWorker,hostsWorker:this.props.hostsWorker,executeCommand:this.props.executeCommand,categories:this.state.categories,descHidden:t,sortPopularFirst:!this.state.tableViewMode&&this.state.filterTiles==="Popular first",sortRecentlyUpdated:!this.state.tableViewMode&&this.state.filterTiles==="Recently updated",isTileView:!this.state.tableViewMode,updateRating:(s,i)=>{const n=JSON.parse(JSON.stringify(this.state.repository));Object.assign(n[s].rating,i),this.setState({repository:n})},setAdminUpgradeTo:this.setAdminUpgradeTo,hostAdapterWorker:this.hostAdapterWorker}}setAdminUpgradeTo=t=>this.setState({adminUpgradeTo:t});buildCache(t){this.cache.listOfVisibleAdapter=[],this.cache.adapters={};const s=Date.now(),i=this.t("0 %d days ago"),n=this.t("1 %d days ago"),r=this.t("2 %d days ago"),a=this.t("5 %d days ago");this.state.categories.filter(h=>this.state.tableViewMode||!this.state.categoriesTiles||this.state.categoriesTiles==="All"||h.name===this.state.categoriesTiles).forEach(h=>h.adapters.forEach(d=>{var u;const l=this.state.repository[d];if(l&&!l.controller){const m=l.connectionType?l.connectionType:"-",f=this.state.updateAvailable.includes(d),v=this.state.installed[d];let b=!this.state.filteredList||!!this.state.filteredList[d];if(b&&this.state.filterConnectionType&&(b=m==="local"),b&&this.state.updateList&&(b=f),b&&this.state.installedList&&(b=this.state.installedList<2?!!(v&&v.version):!!(v&&v.version&&!v.count)),b){this.cache.listOfVisibleAdapter.push(d);const I=Math.round((s-new Date(l.versionDate).getTime())/864e4),T=Math.round(I/10),U=l.titleLang||l.title;let M;U&&typeof U=="object"?M=U[this.props.lang]||U.en:M=U||d,M=((M||"").toString()||"").replace("ioBroker Visualisation - ","");let _;l.desc?typeof l.desc=="string"?_=l.desc:_=l.desc[this.props.lang]||l.desc.en||"":_="";const y=T%100<=10||T%100>=20?T%10:5;this.cache.adapters[d]={title:M,desc:_,image:v&&this.state.adapters[`system.adapter.${d}`]?`.${v.localIcon}`:l.extIcon,connectionType:l.connectionType?l.connectionType:"-",updateAvailable:this.state.updateAvailable.includes(d),rightDependencies:this.rightDependencies(d),rightOs:this.rightOs(d),sentry:!!((u=l.plugins)!=null&&u.sentry),daysAgo:I,stat:l.stat||0,daysAgoText:T||T===0?T===0?i:y===1?n.replace("%d",T.toString()):y===2||y===3||y===4?r.replace("%d",T.toString()):a.replace("%d",T.toString()):""}}}})),this.listOfVisibleAdapterLength=this.cache.listOfVisibleAdapter.length;const c=this.state.filterTiles==="Name A-Z";this.state.tableViewMode&&this.state.categories.forEach(h=>D.sortAdapters(h.adapters,this.props.lang,this.state.installed,this.cache.adapters,c)),D.sortAdapters(this.cache.listOfVisibleAdapter,this.props.lang,this.state.installed,this.cache.adapters,c,t.sortPopularFirst,t.sortRecentlyUpdated,this.state.filteredList),console.log(`[ADAPTERS] ${new Date().toISOString()} Update cache!`),this.forceUpdate()}getUpdater(){return this.state.showUpdater?e.jsx(At,{theme:this.props.theme,onSetCommandRunning:t=>this.props.onSetCommandRunning(t),t:this.props.t,currentHost:this.state.currentHost,lang:this.props.lang,installed:this.state.installed,repository:this.state.repository,toggleTranslation:this.props.toggleTranslation,noTranslation:this.props.noTranslation,onClose:t=>this.setState({showUpdater:!1},()=>t&&this.updateAll(!0,!1)),socket:this.props.socket,rightDependenciesFunc:this.rightDependencies}):null}getDescWidth(){return this.props.menuOpened?document.body.scrollWidth-G-180+13:this.props.menuClosed?document.body.scrollWidth-G:document.body.scrollWidth-G-50+13}getStatistics(){return this.state.showStatistics?e.jsxs(o.Dialog,{open:!0,onClose:()=>this.setState({showStatistics:!1}),children:[e.jsx(o.DialogTitle,{children:this.t("Statistics")}),e.jsxs(o.DialogContent,{style:{fontSize:16},children:[e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Total adapters"),":"," ",e.jsx("span",{style:{paddingLeft:6,fontWeight:"bold"},children:this.allAdapters})]}),e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Installed adapters"),":"," ",e.jsx("span",{style:{paddingLeft:6,fontWeight:"bold"},children:this.installedAdapters})]}),e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Last month updated adapters"),":"," ",e.jsx("span",{style:{paddingLeft:6,fontWeight:"bold"},children:this.recentUpdatedAdapters})]})]}),e.jsx(o.DialogActions,{children:e.jsx(o.Button,{variant:"contained",onClick:()=>this.setState({showStatistics:!1}),color:"primary",autoFocus:!0,startIcon:e.jsx(g.Close,{}),children:this.props.t("Close")})})]}):null}renderGitHubInstallDialog(t){return this.state.gitHubInstallDialog?e.jsx(kt,{t:this.t,categories:this.state.categories,installed:this.state.installedGlobal,upload:s=>this.props.executeCommand(`upload ${s}${this.props.expertMode?" --debug":""}`),installFromUrl:(s,i,n)=>this.addInstance({adapterName:s,debug:i,customUrl:n,context:t}),repository:this.state.repository,onClose:()=>{this.setState({gitHubInstallDialog:!1})}}):null}renderRepositoryTimestamp(){var h,d,l,u;const t=(d=(h=this.state.compactRepositories)==null?void 0:h.native)==null?void 0:d.repositories;if(!t)return null;let s=null,i=null;const n=[];if(typeof this.props.systemConfig.common.activeRepo=="string"){const m=(u=(l=t[this.props.systemConfig.common.activeRepo])==null?void 0:l.json)==null?void 0:u._repoInfo;if(m){s=m.repoTime||null,i=m.repoReadTime||null;const f=this.getRepositoryName(m);f&&n.push(f)}}else if(Array.isArray(this.props.systemConfig.common.activeRepo)){let m=null,f=null;this.props.systemConfig.common.activeRepo.forEach(v=>{var I,T;const b=(T=(I=t[v])==null?void 0:I.json)==null?void 0:T._repoInfo;if(b){const U=this.getRepositoryName(b);U&&n.push(U),b.repoTime&&(!m||new Date(b.repoTime)<new Date(m))&&(m=b.repoTime),b.repoReadTime&&(!f||new Date(b.repoReadTime)<new Date(f))&&(f=b.repoReadTime)}}),s=m,i=f}const r=i||s;if(!r)return null;const a=this.formatRepositoryTimestamp(r);let c="";return n.length>1?c=this.t("Repository timestamps (oldest from %s):",n.join(", ")):c=this.t("Repository timestamps:"),s&&(c+=`
|
|
8
|
+
${this.t("Generated: %s",this.formatRepositoryTimestamp(s))}`),i&&(c+=`
|
|
9
|
+
${this.t("Last read: %s",this.formatRepositoryTimestamp(i))}`),e.jsx(o.Tooltip,{title:c,slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.Box,{component:"div",sx:{display:"flex",alignItems:"center",marginLeft:1,fontSize:"0.75rem",color:"text.secondary",cursor:"help",whiteSpace:"nowrap"},children:a})})}getRepositoryName(t){return t!=null&&t.name?typeof t.name=="object"?t.name[this.props.lang]||t.name.en:t.name:null}formatRepositoryTimestamp(t){try{const s=new Date(t),n=new Date().getTime()-s.getTime(),r=Math.floor(n/6e4),a=Math.floor(r/60),c=Math.floor(a/24);return r<60?this.t("%s minutes ago",r.toString()):a<24?this.t("%s hours ago",a.toString()):c<30?this.t("%s days ago",c.toString()):s.toLocaleDateString(this.props.lang||"en")}catch{return t}}renderHeader(){var s;let t=!this.props.commandRunning&&!!this.props.ready&&!!this.state.updateList&&this.state.updateAvailable.length>1;return t&&this.state.updateAvailable.length===2&&this.state.updateAvailable.includes("admin")&&(t=!1),e.jsxs(x.TabHeader,{children:[e.jsx(o.Tooltip,{title:this.t("Change view mode"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.changeViewMode(),children:this.state.tableViewMode?e.jsx(g.ViewModule,{}):e.jsx(g.ViewList,{})})}),e.jsx(o.Tooltip,{title:this.t("Check adapter for updates"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.updateAll(!0,!0),children:e.jsx(g.Refresh,{})})}),this.renderRepositoryTimestamp(),this.state.tableViewMode&&!this.state.oneListView&&e.jsx(o.Tooltip,{title:this.t("expand all"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.expandAll(),children:e.jsx(g.FolderOpen,{})})}),this.state.tableViewMode&&!this.state.oneListView&&e.jsx(o.Tooltip,{title:this.t("collapse all"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.collapseAll(),children:e.jsx(g.Folder,{})})}),this.state.tableViewMode&&e.jsx(o.Tooltip,{title:this.t("list"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.listTable(),children:e.jsx(g.List,{color:this.state.oneListView?"primary":"inherit"})})}),this.state.updateList?e.jsx(o.IconButton,{size:"large",onClick:()=>this.changeInstalledList(!0),children:e.jsx(g.Star,{color:"primary",style:{opacity:.3,color:this.state.installedList===2?"red":void 0}})}):e.jsx(o.Tooltip,{slotProps:{popper:{sx:j.tooltip}},title:this.t(this.state.installedList?this.state.installedList===1?"Showed only installed adapters":"Showed only installed adapters without instance.":"Show only installed"),children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.changeInstalledList(),children:e.jsx(g.Star,{style:this.state.installedList===2?{color:"red"}:null,color:this.state.installedList===1?"primary":"inherit"})})}),e.jsx(N,{config:this.props.adminGuiConfig.admin,name:"admin.adapters.filterUpdates",children:e.jsx(o.Tooltip,{title:this.t("Filter adapter with updates"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.changeUpdateList(),children:e.jsx(g.Update,{color:this.state.updateList?"primary":"inherit"})})})}),t&&e.jsx(o.Tooltip,{title:this.t("Update all adapters"),slotProps:{popper:{sx:j.tooltip}},children:e.jsxs(o.IconButton,{size:"large",onClick:()=>this.setState({showUpdater:!0}),sx:j.updateAllButton,children:[e.jsx(g.Update,{}),e.jsx(g.Update,{className:"admin-update-second-icon"})]})}),this.props.expertMode&&((s=this.props.adminGuiConfig.admin)==null?void 0:s.adapters.gitHubInstall)!==!1&&e.jsx(o.Tooltip,{title:this.t("Install from custom URL"),slotProps:{popper:{sx:j.tooltip}},children:e.jsx(o.IconButton,{size:"large",onClick:()=>this.setState({gitHubInstallDialog:!0}),children:e.jsx(lt,{})})}),e.jsx("div",{style:j.grow}),e.jsx(o.TextField,{variant:"standard",inputRef:this.inputRef,label:this.t("Filter by name"),defaultValue:this.state.search,onChange:i=>this.handleFilterChange(i),slotProps:{input:{endAdornment:this.state.search?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{tabIndex:-1,size:"small",onClick:()=>{(window._localStorage||window.localStorage).removeItem("Adapter.search"),this.inputRef.current.value="",this.setState({search:""},()=>this.filterAdapters())},children:e.jsx(g.Close,{})})}):null}}}),!this.state.tableViewMode&&e.jsx(et,{t:this.t,icons:!0,contained:this.state.categoriesTiles!=="All",translateSuffix:"_group",arrayItem:[{name:"All"},...this.state.categories],onClick:i=>this.changeCategoriesTiles(i),value:this.state.categoriesTiles}),e.jsx(et,{t:this.t,arrayItem:this.state.tableViewMode?rt.filter(i=>!i.notByList):rt,onClick:i=>this.changeFilterTiles(i),value:this.state.filterTiles}),e.jsx("div",{style:j.grow}),e.jsx(N,{config:this.props.adminGuiConfig.admin,name:"admin.adapters.statistics",children:e.jsxs(o.Box,{component:"div",sx:x.Utils.getStyle(this.props.theme,j.infoAdapters,{display:{sm:"none",md:"inline-block"}}),onClick:()=>this.setState({showStatistics:!0}),children:[e.jsxs(o.Box,{component:"div",sx:{...j.counters,...j.greenText},children:[this.t("Selected adapters"),e.jsx("div",{ref:this.countRef})]}),e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Total adapters"),":",e.jsx("div",{children:this.allAdapters})]}),e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Installed adapters"),":",e.jsx("div",{children:this.installedAdapters})]}),e.jsxs(o.Box,{component:"div",sx:j.counters,children:[this.t("Last month updated adapters"),":",e.jsx("div",{children:this.recentUpdatedAdapters})]})]})})]})}renderWebserverUpgrade(){return this.state.adminUpgradeTo?e.jsx(Mt,{socket:this.props.socket,themeType:this.props.themeType,host:this.props.adminHost,onClose:()=>{console.log("Close dialog"),this.setState({adminUpgradeTo:"",showDialog:!1})},version:this.state.adminUpgradeTo,adminInstance:this.props.adminInstance,onUpdating:t=>{this.props.onUpdating(t)},currentAdminVersion:this.props.currentAdminVersion}):null}render(){var r,a,c,h,d,l,u;if(!this.state.init)return e.jsx(o.LinearProgress,{});this.state.triggerUpdate!==this.props.triggerUpdate&&setTimeout(()=>{this.setState({triggerUpdate:this.props.triggerUpdate},()=>this.updateAll(!0))},100),(this.props.currentHost!==this.state.currentHost||this.props.forceUpdateAdapters!==this.state.forceUpdateAdapters)&&(this.hostsTimer=this.hostsTimer||setTimeout(()=>{this.hostsTimer=null,this.setState({currentHost:this.props.currentHost,forceUpdateAdapters:this.props.forceUpdateAdapters},async()=>{this.hostAdapterWorker.getHost()!==this.props.currentHost&&(this.hostAdapterWorker.destroy(),this.hostAdapterWorker=new st(this.props.socket,this.props.currentHost),this.hostAdapterWorker.registerHandler(this.onHostAdapterChanged),await this.hostAdapterWorker.getObjects()),await this.updateAll(!1,!1,!0)})},200));let t=x.Utils.isStableRepository(this.props.systemConfig.common.activeRepo);const s=(a=(r=this.state.compactRepositories)==null?void 0:r.native)==null?void 0:a.repositories;s&&this.props.systemConfig.common.activeRepo&&(Array.isArray(this.props.systemConfig.common.activeRepo)?t=this.props.systemConfig.common.activeRepo.every(m=>{var f,v,b;return m.toLowerCase().startsWith("stable")||((b=(v=(f=s[m])==null?void 0:f.json)==null?void 0:v._repoInfo)==null?void 0:b.stable)}):typeof this.props.systemConfig.common.activeRepo=="string"&&(t=this.props.systemConfig.common.activeRepo.toLowerCase().startsWith("stable")||((d=(h=(c=s[this.props.systemConfig.common.activeRepo])==null?void 0:c.json)==null?void 0:h._repoInfo)==null?void 0:d.stable)));let i;if(!t)if(i=Array.isArray(this.props.systemConfig.common.activeRepo)?this.props.systemConfig.common.activeRepo.join(", "):this.props.systemConfig.common.activeRepo,typeof this.props.systemConfig.common.activeRepo=="string"){const m=s&&((u=(l=s[this.props.systemConfig.common.activeRepo])==null?void 0:l.json)==null?void 0:u._repoInfo);m!=null&&m.name&&(m.name&&typeof m.name=="object"?i=m.name[this.props.lang]||m.name.en:i=m.name)}else this.props.systemConfig.common.activeRepo&&typeof this.props.systemConfig.common.activeRepo!="string"&&(i=this.props.systemConfig.common.activeRepo.map(m=>{var v,b;const f=s&&((b=(v=s[m])==null?void 0:v.json)==null?void 0:b._repoInfo);return f!=null&&f.name?f.name&&typeof f.name=="object"?f.name[this.props.lang]||f.name.en:f.name:m}).join(", "));const n=this.getContext(this.state.descWidth<50);return this.cache.listOfVisibleAdapter||(this.buildCacheTimer=this.buildCacheTimer||setTimeout(()=>{this.buildCacheTimer=null,this.buildCache(n)},0)),e.jsxs(x.TabContainer,{children:[this.state.update&&e.jsx(o.Grid2,{children:e.jsx(o.LinearProgress,{})}),this.renderHeader(),e.jsx(Pt,{stableRepo:t,repoName:i,context:n,noTranslation:this.props.noTranslation,systemConfig:this.props.systemConfig,tableViewMode:this.state.tableViewMode,oneListView:this.state.oneListView,update:this.state.update,updateListFilter:this.state.updateList,searchFilter:this.state.search,installedListFilter:this.state.installedList,cachedAdapters:this.cache.adapters,categories:this.state.categories,categoriesExpanded:this.state.categoriesExpanded,listOfVisibleAdapter:this.cache.listOfVisibleAdapter,toggleCategory:m=>this.toggleCategory(m),clearAllFilters:m=>this.clearAllFilters(m),descWidth:this.state.descWidth,sortByName:this.state.filterTiles==="Name A-Z",sortPopularFirst:n.sortPopularFirst,sortRecentlyUpdated:n.sortRecentlyUpdated,commandRunning:this.props.commandRunning}),this.getUpdater(),this.getStatistics(),this.renderSlowConnectionWarning(),this.renderGitHubInstallDialog(n),this.renderWebserverUpgrade(),this.renderDialogs(n)]})}}export{D as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s}from"./DefaultPropsProvider-BZ42HOhu.js";import{i as k}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import{i,a as p}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js";import{i as y}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js";import{i as C}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-DQH_iIDO.js";import{g as $}from"./_commonjsHelpers-CE1G-McA.js";import{a as I,b as D}from"./iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js";import{c as b}from"./bootstrap-xC60EdKn.js";import{o as L,g as E,w as m,t as g}from"./createTheme-O_VGsRib.js";const{loadShare:T}=D,{initPromise:F}=I,M=F.then(c=>T("@iobroker/dm-gui-components",{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:"*"}}})),W=await M.then(c=>c());var O=W;const P=$(O),A=["silly","debug","info","warn","error"],n={root:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden"},scroll:{height:"100%",overflowY:"auto"},instanceIcon:{width:42,height:42,marginRight:16,verticalAlign:"middle"},button:{width:36,height:36},version:{fontSize:12,opacity:.8,marginLeft:20,marginRight:10},versionAliveConnected:c=>({color:c.palette.mode==="dark"?"#23a623":"#60ff60"}),versionAliveNotConnected:{color:"#a67223"},buttonControl:{padding:"5px",transition:"opacity 0.2s",height:34},enabled:{color:g[400],"&:hover":{backgroundColor:g[200]}},disabled:{color:m[400],"&:hover":{backgroundColor:m[200]}},hide:{visibility:"hidden"},formControl:{width:"100%",marginBottom:5},logLevel:{fontSize:12,marginLeft:10},green:{color:g[700]},red:{color:m[700]},grey:{color:E[700]},blue:{color:"#0055a9"},orange:{color:L[400]},orangeDevice:{color:L[300]},tooltip:{pointerEvents:"none"}};class G extends k.Component{refIframe;registered;constructor(e){super(e),this.state={checkedExist:!1,showStopAdminDialog:!1,running:!1,canStart:!1,alive:!1,connected:!1,connectedToHost:!1,logOnTheFlyValue:!1,logLevel:"info",logLevelValue:"info",tempLogLevel:"info",showLogLevelDialog:!1,showMore:null},this.refIframe=null,this.registered=!1}componentDidUpdate(){var e;!this.registered&&((e=this.refIframe)!=null&&e.contentWindow)&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe))}componentDidMount(){var e;if(this.props.tab)this.props.socket.fileExists(`${this.props.adapter}.admin`,"tab.html").then(t=>{if(t)this.setState({checkedExist:"tab.html"});else return this.props.socket.fileExists(`${this.props.adapter}.admin`,"tab_m.html").then(o=>o?this.setState({checkedExist:"tab_m.html"}):window.alert("Cannot find tab(_m).html"))});else{const t=`system.adapter.${this.props.adapter}.${this.props.instance}`;this.props.socket.subscribeObject(t,this.onObjectChange),this.props.socket.getObject(t).then(async o=>{var f,u,_,v,x,w,S;const a=await this.props.socket.getState(`${t}.logLevel`);await this.props.socket.subscribeState(`${t}.logLevel`,this.onStateChange);const r=await this.props.socket.getState(`${t}.alive`);await this.props.socket.subscribeState(`${t}.alive`,this.onStateChange);const l=await this.props.socket.getState(`${t}.connected`);await this.props.socket.subscribeState(`${t}.connected`,this.onStateChange);let d;try{d=await this.props.socket.getState(`${this.props.adapter}.${this.props.instance}.info.connection`),this.props.socket.subscribeState(`${this.props.adapter}.${this.props.instance}.info.connection`,this.onStateChange)}catch{d=null}let h;try{h=await this.props.socket.getState(`${this.props.adapter}.${this.props.instance}.info.extension`),this.props.socket.subscribeState(`${this.props.adapter}.${this.props.instance}.info.extension`,this.onStateChange)}catch{h=null}this.setState({checkedExist:!0,running:((f=o==null?void 0:o.common)==null?void 0:f.onlyWWW)||((u=o==null?void 0:o.common)==null?void 0:u.enabled),canStart:!((_=o==null?void 0:o.common)!=null&&_.onlyWWW),alive:!!(r!=null&&r.val),extension:h?!!(h!=null&&h.val):null,connectedToHost:!!(l!=null&&l.val),connected:d?!!d.val:null,logLevel:((v=o==null?void 0:o.common)==null?void 0:v.loglevel)||"info",logLevelValue:((x=o==null?void 0:o.common)==null?void 0:x.loglevel)||"info",tempLogLevel:(a==null?void 0:a.val)||((w=o==null?void 0:o.common)==null?void 0:w.loglevel)||"info",common:(o==null?void 0:o.common)||{},native:(o==null?void 0:o.native)||{},adapterDocLangs:(S=o==null?void 0:o.common)!=null&&S.docs?Object.keys(o.common.docs):["en"]})}).catch(o=>{console.error(o),this.setState({checkedExist:!0,running:!1})})}!this.registered&&((e=this.refIframe)!=null&&e.contentWindow)&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe)),(window.addEventListener||window.attachEvent)(window.addEventListener?"message":"onmessage",this.closeConfig,!1)}onObjectChange=(e,t)=>{var o,a,r,l;e===`system.adapter.${this.props.adapter}.${this.props.instance}`&&this.setState({running:((o=t==null?void 0:t.common)==null?void 0:o.onlyWWW)||((a=t==null?void 0:t.common)==null?void 0:a.enabled),canStart:!((r=t==null?void 0:t.common)!=null&&r.onlyWWW),logLevel:((l=t==null?void 0:t.common)==null?void 0:l.loglevel)||"info"})};getInstanceStatus(){var o,a,r,l;const e=((o=this.state.common)==null?void 0:o.mode)||"";let t=e==="daemon"?"green":"blue";if((a=this.state.common)!=null&&a.enabled&&(!this.state.common.webExtension||!((r=this.state.native)!=null&&r.webInstance)||e==="daemon")){if(this.state.common.webExtension&&((l=this.state.native)!=null&&l.webInstance)&&this.state.extension!==null)return this.state.extension?"green":"red";(!this.state.connectedToHost||!this.state.alive)&&(t=e==="daemon"?"red":"orangeDevice"),this.state.connected!==null&&!this.state.connected&&t!=="red"&&(t="orange")}else t=e==="daemon"?"grey":"blue";return t}onStateChange=(e,t)=>{const o=`system.adapter.${this.props.adapter}.${this.props.instance}`;e===`${o}.alive`?this.setState({alive:!!(t!=null&&t.val)}):e===`${o}.connected`?this.setState({connectedToHost:!!(t!=null&&t.val)}):e===`${this.props.adapter}.${this.props.instance}.info.connection`?this.setState({connected:t?!!t.val:null}):e===`${this.props.adapter}.${this.props.instance}.info.extension`?this.setState({extension:t?!!t.val:null}):e===`${o}.logLevel`&&this.setState({tempLogLevel:t?t.val:null})};componentWillUnmount(){this.props.socket.unsubscribeObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,this.onObjectChange),(window.removeEventListener||window.detachEvent)(window.removeEventListener?"message":"onmessage",this.closeConfig,!1),this.registered&&this.refIframe&&this.props.onUnregisterIframeRef(this.refIframe),this.refIframe=null}closeConfig=e=>{if(e.origin===window.location.origin){if(e.data==="close"||e.message==="close")this.props.easyMode?this.props.handleNavigation("easy"):this.props.handleNavigation("tab-instances");else if(e.data==="change"||e.message==="change")this.props.configStored(!1);else if(e.data==="nochange"||e.message==="nochange")this.props.configStored(!0);else if(typeof e.data=="string"&&e.data.startsWith("goto:")||typeof e.message=="string"&&e.message.startsWith("goto:")){const[,t]=(e.data||e.message).split(":"),[o,a,r]=t.split("/");this.props.handleNavigation(o,a,r)}}};renderHelpButton(){return this.props.jsonConfig?s.jsx(i.Tooltip,{title:this.props.t("Show help for this adapter"),slotProps:{popper:{sx:n.tooltip}},children:s.jsx(i.Fab,{sx:{"&.MuiFab-root":n.button},onClick:()=>{var t;const e=(t=this.state.adapterDocLangs)!=null&&t.includes(this.props.lang)?this.props.lang:"en";window.open(b.getDocsLinkForAdapter({lang:e,adapterName:this.props.adapter}),"help")},children:s.jsx(p.Help,{})})}):null}getConfigurator(){if(this.props.jsonConfig)return s.jsx(C.JsonConfig,{expertMode:this.props.expertMode,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,DeviceManager:P});const e=`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?s.jsx("iframe",{ref:t=>this&&(this.refIframe=t),title:"config",style:this.props.style,src:e}):null}returnStopAdminDialog(){return this.state.showStopAdminDialog?s.jsx(y.DialogConfirm,{title:this.props.t("Please confirm"),text:this.props.t("stop_admin",this.props.instance),ok:this.props.t("Stop admin"),onClose:e=>{e&&this.props.socket.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{common:{enabled:!1}}).catch(t=>window.alert(t)),this.setState({showStopAdminDialog:!1})}}):null}renderLogLevelDialog(){return this.state.showLogLevelDialog?s.jsxs(i.Dialog,{open:!0,onClose:()=>this.setState({showLogLevelDialog:!1}),children:[s.jsx(i.DialogTitle,{children:this.props.t("Edit log level rule for %s",`${this.props.adapter}.${this.props.instance}`)}),s.jsxs(i.DialogContent,{children:[s.jsxs(i.FormControl,{style:{...n.formControl,marginTop:10},variant:"outlined",children:[s.jsx(i.InputLabel,{children:this.props.t("log level")}),s.jsx(i.Select,{variant:"standard",value:this.state.logLevelValue,fullWidth:!0,onChange:e=>this.setState({logLevelValue:e.target.value}),children:A.map(e=>s.jsx(i.MenuItem,{value:e,children:this.props.t(e)},e))})]}),s.jsxs(i.FormControl,{style:n.formControl,variant:"outlined",children:[s.jsx(i.FormControlLabel,{control:s.jsx(i.Checkbox,{checked:this.state.logOnTheFlyValue,onChange:e=>this.setState({logOnTheFlyValue:e.target.checked})}),label:this.props.t("Without restart")}),s.jsx(i.FormHelperText,{children:this.state.logOnTheFlyValue?this.props.t("Will be reset to the saved log level after restart of adapter"):this.props.t("Log level will be saved permanently")})]})]}),s.jsxs(i.DialogActions,{children:[s.jsx(i.Button,{color:"primary",variant:"contained",onClick:()=>{this.state.logOnTheFlyValue?this.props.socket.setState(`system.adapter.${this.props.adapter}.${this.props.instance}.logLevel`,this.state.logLevelValue):this.props.socket.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{common:{loglevel:this.state.logLevelValue}}).catch(e=>window.alert(`Cannot set log level: ${e}`)),this.setState({showLogLevelDialog:!1})},children:this.props.t("Ok")}),s.jsx(i.Button,{color:"grey",variant:"contained",onClick:()=>this.setState({showLogLevelDialog:!1}),children:this.props.t("Cancel")})]})]}):null}render(){const e=[this.props.version?s.jsxs("span",{style:{...n.version,...n[this.getInstanceStatus()]},children:["v",this.props.version]},"version"):null,s.jsx(i.Tooltip,{title:this.props.t("Start/stop"),slotProps:{popper:{sx:n.tooltip}},children:s.jsx("span",{children:s.jsx(i.IconButton,{size:"small",onClick:t=>{t.stopPropagation(),t.preventDefault(),this.state.running&&`${this.props.adapter}.${this.props.instance}`===this.props.adminInstance?this.setState({showStopAdminDialog:!0,showMore:null}):(this.setState({showMore:null}),this.props.socket.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{common:{enabled:!this.state.running}}).catch(o=>window.alert(`Cannot set log level: ${o}`)))},onFocus:t=>t.stopPropagation(),sx:{...n.buttonControl,...this.state.canStart?this.state.running?n.enabled:n.disabled:n.hide},children:this.state.running?s.jsx(p.Pause,{}):s.jsx(p.PlayArrow,{})})})},"start"),s.jsx(i.Tooltip,{title:this.props.t("Restart"),slotProps:{popper:{sx:n.tooltip}},children:s.jsx("span",{children:s.jsx(i.IconButton,{size:"small",onClick:t=>{this.setState({showMore:null}),t.stopPropagation(),this.props.socket.extendObject(`system.adapter.${this.props.adapter}.${this.props.instance}`,{}).catch(o=>window.alert(`Cannot set log level: ${o}`))},onFocus:t=>t.stopPropagation(),style:{...n.buttonControl,...this.state.canStart?void 0:n.hide},disabled:!this.state.running,children:s.jsx(p.Refresh,{})})})},"restart"),this.state.tempLogLevel!==this.state.logLevel?s.jsx(i.Tooltip,{title:this.props.t("temporary log level"),slotProps:{popper:{sx:n.tooltip}},children:s.jsx("span",{style:n.logLevel,children:this.state.tempLogLevel})},"log"):null,s.jsx(i.Tooltip,{title:this.props.t("log level"),slotProps:{popper:{sx:n.tooltip}},children:s.jsx("span",{style:n.logLevel,children:this.state.tempLogLevel!==this.state.logLevel?`/ ${this.state.logLevel}`:this.state.logLevel})},"logLevel"),s.jsx(i.Tooltip,{title:this.props.t("Edit log level rule for %s",`${this.props.adapter}.${this.props.instance}`),children:s.jsx(i.IconButton,{size:"small",onClick:t=>{t.stopPropagation(),this.setState({showLogLevelDialog:!0,showMore:null})},onFocus:t=>t.stopPropagation(),style:{...n.buttonControl,...this.state.canStart?void 0:n.hide,width:34,height:34},children:s.jsx(p.Edit,{style:{width:20,height:20}})})},"editLog")];return s.jsxs(i.Paper,{style:n.root,children:[s.jsx(i.AppBar,{color:"default",position:"static",children:s.jsxs(i.Toolbar,{variant:"dense",style:{marginLeft:8,paddingRight:6},children:[s.jsxs(i.Typography,{variant:"h6",color:"inherit",style:{display:"flex",alignItems:"center"},children:[s.jsx(i.IconButton,{size:"small",onClick:()=>{this.props.easyMode?this.props.handleNavigation("easy"):this.props.handleNavigation("tab-instances")},onFocus:t=>t.stopPropagation(),style:{marginRight:10},children:s.jsx(p.ArrowBack,{})}),this.props.jsonConfig?s.jsx(y.Icon,{src:this.props.icon,style:n.instanceIcon}):null,s.jsx(i.Box,{component:"span",sx:t=>({[t.breakpoints.down("md")]:{display:"none"},marginRight:"8px"}),children:`${this.props.t("Instance settings")}:`}),`${this.props.adapter}.${this.props.instance}`,s.jsx(i.Box,{component:"div",sx:t=>({[t.breakpoints.down("sm")]:{display:"none"}}),children:e}),s.jsxs(i.Box,{component:"span",sx:t=>({[t.breakpoints.up("sm")]:{display:"none"}}),children:[s.jsx(i.IconButton,{style:{marginLeft:8},onClick:t=>this.setState({showMore:t.currentTarget}),children:s.jsx(p.MoreVert,{})}),this.state.showMore?s.jsx(i.Menu,{open:!0,anchorEl:this.state.showMore,onClose:()=>this.setState({showMore:null}),children:e}):null]})]}),s.jsx("div",{style:{flexGrow:1}}),this.renderHelpButton()]})}),this.getConfigurator(),this.returnStopAdminDialog(),this.renderLogLevelDialog()]})}}export{G as C};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./DefaultPropsProvider-BZ42HOhu.js";import{i as p}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import{i as o,a as r}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js";import{i as n}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js";const t={modalDialog:{minWidth:400,maxWidth:800},overflowHidden:{display:"flex",overflow:"hidden"},titleIcon:{marginRight:5},content:{fontSize:16},languageButton:{position:"absolute",right:8,top:8},languageButtonActive:a=>({color:a.palette.primary.main})},H=({toggleTranslation:a,noTranslation:v,title:m,fullWidth:S,help:c,maxWidth:b,progress:u,icon:s,disableApplyIfNotChanged:k,applyButton:h,onClose:g,children:C,titleButtonApply:I,titleButtonClose:y,onApply:f,textInput:x,defaultValue:i,overflowHidden:B,disableApply:D,theme:w})=>{const[l,_]=p.useState(i);p.useEffect(()=>{_(i)},[i]);const A=o.useTheme(),d=o.useMediaQuery(A.breakpoints.down("md"));let j=null;s&&(j=s);const W=n.Utils.getStyle(w,t.languageButtonActive);return e.jsxs(o.Dialog,{open:!0,maxWidth:d?!1:b||"md",fullWidth:!!S,fullScreen:d,disableEscapeKeyDown:!1,onClose:g,sx:{"& .MuiPaper-root":d?{}:t.modalDialog},children:[m&&e.jsxs(o.DialogTitle,{children:[s?e.jsx(j,{style:t.titleIcon}):null,m,n.I18n.getLanguage()!=="en"&&a?e.jsx(o.IconButton,{size:"large",style:{...t.languageButton,...v?W:void 0},onClick:()=>a(),title:n.I18n.t("Disable/Enable translation"),children:e.jsx(r.Language,{})}):null]}),e.jsxs(o.DialogContent,{style:{...B?t.overflowHidden:void 0,...t.content,paddingTop:8},children:[x&&e.jsx(o.TextField,{autoComplete:"off",fullWidth:!0,autoFocus:!0,variant:"standard",size:"medium",multiline:!0,value:l,onChange:z=>_(z.target.value),slotProps:{input:{endAdornment:l?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{tabIndex:-1,size:"small",onClick:()=>_(""),children:e.jsx(r.Close,{})})}):null}}}),C,c?e.jsx("div",{children:c}):null]}),e.jsxs(o.DialogActions,{children:[(h===void 0||h)&&e.jsx(o.Button,{startIcon:e.jsx(r.Check,{}),disabled:D||u||k&&i===l,onClick:()=>f&&f(x?l:""),variant:"contained",color:"primary",children:n.I18n.t(I||"Ok")}),e.jsx(o.Button,{color:"grey",onClick:g,disabled:u,variant:"contained",startIcon:e.jsx(r.Close,{}),children:n.I18n.t(y||"Cancel")})]})]})};export{H as C};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as i}from"./DefaultPropsProvider-BZ42HOhu.js";import{i as c}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import{i as l}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js";import{l as g}from"./index-8HslT92O.js";import{i as d}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js";import{i as f}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-DQH_iIDO.js";import{c as _}from"./bootstrap-xC60EdKn.js";import"./_commonjsHelpers-CE1G-McA.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js";import"./emotion-serialize.esm-Q4o_CgeF.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-CXogaIXO.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js";import"./ace-DgO9yth5.js";import"./iobroker_admin__loadShare__react_mf_2_dom__loadShare__-GTRt2eft.js";import"./useTheme-UOPilb5j.js";import"./createTheme-O_VGsRib.js";import"./ext-language_tools-DJmHbGA8.js";import"./preload-helper-BDBacUwf.js";import"./sdk-DTP6UH26.js";import"./blueGrey-BFcAYvAO.js";import"./emotion-cache.browser.esm-BgJfNZJN.js";import"./assertThisInitialized-CKqanoMB.js";import"./iobroker_admin__loadShare__leaflet__loadShare__-BfU5U5_j.js";import"./extends-CF3RwP-h.js";import"./iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-BF_gp27r.js";import"./en-US-B8gg5zk_.js";const u={root:{display:"block",position:"relative",left:0,top:0,width:"100%",height:"100%",color:"black",borderRadius:4,boxShadow:"0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)",border:"0px solid #888"}};class J extends c.Component{refIframe=null;registered=!1;loadingTimer=null;constructor(t){super(t),this.state={href:"",adapterName:"",instanceNumber:null,schema:null,jsonData:{},loadingKey:0,loading:!0}}async componentDidMount(){var h;!this.registered&&((h=this.refIframe)!=null&&h.contentWindow)&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe)),(window.addEventListener||window.attachEvent)(window.addEventListener?"message":"onmessage",this.onMessage,!1);const t={};for(const o of this.props.hosts)t[o._id]=o;const e=await _.getHref(this.props.instancesWorker,this.props.tab,this.props.hostname,t,this.props.adminInstance,this.props.theme.palette.mode);let s=null;const r=(e==null?void 0:e.href.split("?")[0])||"";let n={};if(r.endsWith(".json")||r.endsWith(".json5"))try{let o;const m=await this.props.socket.readFile(`${e.adapterName}.admin`,r,!0);m.file!==void 0&&(o=atob(m.file.toString()),o.startsWith("{")||(o=decodeURIComponent(o)));try{s=g.parse(o)}catch(a){console.error(`Cannot parse jsonConfig of ${e.adapterName}: ${a}`),window.alert(`Cannot parse jsonConfig of ${e.adapterName}: ${a}`)}if(s&&await f.JsonConfigComponent.loadI18n(this.props.socket,s.i18n,e.adapterName),s!=null&&s.command){const a=await this.props.socket.getState(`system.adapter.${e.adapterName}.${e.instanceNumber||0}.alive`);if(a!=null&&a.val){const p=await this.props.socket.sendTo(`${e.adapterName}.${e.instanceNumber||0}`,s==null?void 0:s.command,null);p!=null&&p.data&&(n=p.data)}}}catch(o){console.error(`Cannot load ${e.adapterName}.admin/${e.href}: ${o}`),window.alert(`Cannot load ${e.adapterName}.admin/${e.href}: ${o}`)}this.setState({href:e.href,adapterName:e.adapterName,instanceNumber:e.instanceNumber,schema:s,jsonData:n})}componentWillUnmount(){this.loadingTimer&&(clearInterval(this.loadingTimer),this.loadingTimer=null),this.registered&&(this.props.onUnregisterIframeRef(this.refIframe),this.registered=!1),(window.removeEventListener||window.detachEvent)(window.removeEventListener?"message":"onmessage",this.onMessage,!1)}componentDidUpdate(){var t;!this.registered&&((t=this.refIframe)!=null&&t.contentWindow)&&(this.registered=!0,this.props.onRegisterIframeRef(this.refIframe))}onMessage=t=>{if(this.props.supportsLoadingMessage&&t.data==="iobLoaded"||t.message==="iobLoaded"){this.setState({loading:!1}),this.loadingTimer&&(clearInterval(this.loadingTimer),this.loadingTimer=null);return}if(t.origin===window.location.origin){if(t.data==="close"||t.message==="close")d.Router.doNavigate("tab-instances");else if(t.data==="change"||t.message==="change")console.warn('Application sends "change" message, but it is not processed yet');else if(t.data==="nochange"||t.message==="nochange")console.warn('Application sends "nochange" message, but it is not processed yet');else if(typeof t.data=="string"&&t.data.startsWith("goto:")||typeof t.message=="string"&&t.message.startsWith("goto:")){const[,e]=(t.data||t.message).split(":"),[s,r,n]=e.split("/");d.Router.doNavigate(s,r,n)}}};render(){return this.state.href?this.state.href.includes(".json")?this.state.schema?i.jsx(f.JsonConfigComponent,{socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.theme.palette.mode,adapterName:this.state.adapterName,instance:this.state.instanceNumber||0,isFloatComma:this.props.isFloatComma,dateFormat:this.props.dateFormat,schema:this.state.schema,data:this.state.jsonData,onError:()=>{},theme:this.props.theme,withoutSaveButtons:!0,expertMode:this.props.expertMode}):i.jsx(l.LinearProgress,{}):this.state.href.startsWith("http://")&&window.location.protocol==="https:"&&window.location.hostname!=="localhost"?i.jsxs("div",{style:{padding:10,display:"flex",justifyContent:"center",alignItems:"center",height:"100%",flexDirection:"column",fontSize:18,gap:20},children:[i.jsx("div",{children:d.I18n.t("This content cannot be loaded because it uses insecure HTTP protocol.")}),i.jsx("div",{children:d.I18n.t("But you can open this link in new tab:")}),i.jsx("a",{href:this.state.href,target:"_blank",rel:"noopener noreferrer",children:this.state.href})]}):i.jsxs("div",{style:u.root,children:[this.state.loading?i.jsx(l.LinearProgress,{style:{position:"absolute",zIndex:2,width:"100%"}}):null,this.state.loading&&this.props.icon?i.jsx("div",{style:{position:"absolute",zIndex:2,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",fontSize:48},children:typeof this.props.icon=="string"?i.jsx("img",{src:this.props.icon,alt:"icon",style:{maxWidth:200,width:"100%",opacity:.7}}):this.props.icon}):null,i.jsx("iframe",{ref:t=>this.refIframe=t,title:this.props.tab,style:{display:"block",position:"relative",left:0,top:0,width:"100%",height:"100%",color:"black",zIndex:1,borderRadius:0,boxShadow:"none",border:"0px solid #888"},src:this.state.href,onLoad:()=>{this.props.supportsLoadingMessage||(this.setState({loading:!1}),this.loadingTimer&&(clearInterval(this.loadingTimer),this.loadingTimer=null))},onError:t=>{t.target.onerror=null,this.state.href.includes("tab_m.html")?this.setState(e=>({href:e.href.replace("tab_m.html","tab.html")})):this.loadingTimer||=setInterval(()=>this.setState({loadingKey:this.state.loadingKey+1}),3e3)}})]}):i.jsx(l.LinearProgress,{})}}export{J as default};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{g as d}from"./_commonjsHelpers-CE1G-McA.js";import{a as v,b as x}from"./iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js";import{s as h}from"./emotion-serialize.esm-Q4o_CgeF.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-CXogaIXO.js";import{i as c}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js";const{loadShare:P}=x,{initPromise:S}=v,O=S.then(e=>P("@emotion/styled",{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:"*"}}})),j=await O.then(e=>e());var b=j;const k=d(b);var p={exports:{}},_={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var w=c,E=Symbol.for("react.element"),R=Symbol.for("react.fragment"),C=Object.prototype.hasOwnProperty,D=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,g={key:!0,ref:!0,__self:!0,__source:!0};function u(e,o,r){var n,t={},s=null,i=null;r!==void 0&&(s=""+r),o.key!==void 0&&(s=""+o.key),o.ref!==void 0&&(i=o.ref);for(n in o)C.call(o,n)&&!g.hasOwnProperty(n)&&(t[n]=o[n]);if(e&&e.defaultProps)for(n in o=e.defaultProps,o)t[n]===void 0&&(t[n]=o[n]);return{$$typeof:E,type:e,key:s,ref:i,props:t,_owner:D.current}}_.Fragment=R;_.jsx=u;_.jsxs=u;p.exports=_;var F=p.exports;/**
|
|
10
|
+
* @mui/styled-engine v6.5.0
|
|
11
|
+
*
|
|
12
|
+
* @license MIT
|
|
13
|
+
* This source code is licensed under the MIT license found in the
|
|
14
|
+
* LICENSE file in the root directory of this source tree.
|
|
15
|
+
*/function U(e,o){return k(e,o)}function V(e,o){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=o(e.__emotion_styles))}const m=[];function $(e){return m[0]=e,h(m)}function l(e,o){const r={...o};for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const t=n;if(t==="components"||t==="slots")r[t]={...e[t],...r[t]};else if(t==="componentsProps"||t==="slotProps"){const s=e[t],i=o[t];if(!i)r[t]=s||{};else if(!s)r[t]=i;else{r[t]={...i};for(const f in s)if(Object.prototype.hasOwnProperty.call(s,f)){const a=f;r[t][a]=l(s[a],i[a])}}}else r[t]===void 0&&(r[t]=e[t])}return r}const y=c.createContext(void 0);function B({value:e,children:o}){return F.jsx(y.Provider,{value:e,children:o})}function I(e){const{theme:o,name:r,props:n}=e;if(!o||!o.components||!o.components[r])return n;const t=o.components[r];return t.defaultProps?l(t.defaultProps,n):!t.styleOverrides&&!t.variants?l(t,n):n}function J({props:e,name:o}){const r=c.useContext(y);return I({props:e,name:o,theme:{components:r}})}export{B as D,V as a,$ as i,F as j,l as r,U as s,J as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as K}from"./defaultTheme-CF56WVgQ.js";import{e as J,s as $,U as Q,T as X}from"./createTheme-O_VGsRib.js";import{i as w,a as Y,s as Z,u as z}from"./DefaultPropsProvider-BZ42HOhu.js";import"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js";const M=e=>e,N=()=>{let e=M;return{configure(r){e=r},generate(r){return e(r)},reset(){e=M}}},ee=N();function E(e){var r,n,t="";if(typeof e=="string"||typeof e=="number")t+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(r=0;r<s;r++)e[r]&&(n=E(e[r]))&&(t&&(t+=" "),t+=n)}else for(n in e)e[n]&&(t&&(t+=" "),t+=n);return t}function we(){for(var e,r,n=0,t="",s=arguments.length;n<s;n++)(e=arguments[n])&&(r=E(e))&&(t&&(t+=" "),t+=r);return t}const te={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function ne(e,r,n="Mui"){const t=te[r];return t?`${n}-${t}`:`${ee.generate(e)}-${r}`}function ge(e,r,n="Mui"){const t={};return r.forEach(s=>{t[s]=ne(e,s,n)}),t}function D(e){const{variants:r,...n}=e,t={variants:r,style:w(n),isProcessed:!0};return t.style===n||r&&r.forEach(s=>{typeof s.style!="function"&&(s.style=w(s.style))}),t}const re=J();function O(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}function p(e,r){return r&&e&&typeof e=="object"&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles=`@layer ${r}{${String(e.styles)}}`),e}function se(e){return e?(r,n)=>n[e]:null}function oe(e,r,n){e.theme=ue(e.theme)?n:e.theme[r]||e.theme}function P(e,r,n){const t=typeof r=="function"?r(e):r;if(Array.isArray(t))return t.flatMap(s=>P(e,s,n));if(Array.isArray(t==null?void 0:t.variants)){let s;if(t.isProcessed)s=n?p(t.style,n):t.style;else{const{variants:i,...l}=t;s=n?p(w(l),n):l}return G(e,t.variants,[s],n)}return t!=null&&t.isProcessed?n?p(w(t.style),n):t.style:n?p(w(t),n):t}function G(e,r,n=[],t=void 0){var i;let s;e:for(let l=0;l<r.length;l+=1){const o=r[l];if(typeof o.props=="function"){if(s??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(s))continue}else for(const d in o.props)if(e[d]!==o.props[d]&&((i=e.ownerState)==null?void 0:i[d])!==o.props[d])continue e;typeof o.style=="function"?(s??={...e,...e.ownerState,ownerState:e.ownerState},n.push(t?p(w(o.style(s)),t):o.style(s))):n.push(t?p(w(o.style),t):o.style)}return n}function ie(e={}){const{themeId:r,defaultTheme:n=re,rootShouldForwardProp:t=O,slotShouldForwardProp:s=O}=e;function i(o){oe(o,r,n)}return(o,d={})=>{Y(o,a=>a.filter(u=>u!==$));const{name:c,slot:y,skipVariantsResolver:F,skipSx:H,overridesResolver:k=se(ce(y)),...I}=d,x=c&&c.startsWith("Mui")||y?"components":"custom",U=F!==void 0?F:y&&y!=="Root"&&y!=="root"||!1,q=H||!1;let C=O;y==="Root"||y==="root"?C=t:y?C=s:le(o)&&(C=void 0);const A=Z(o,{shouldForwardProp:C,label:ae(),...I}),W=a=>{if(a.__emotion_real===a)return a;if(typeof a=="function")return function(S){return P(S,a,S.theme.modularCssLayers?x:void 0)};if(Q(a)){const u=D(a);return function(h){return u.variants?P(h,u,h.theme.modularCssLayers?x:void 0):h.theme.modularCssLayers?p(u.style,x):u.style}}return a},L=(...a)=>{const u=[],S=a.map(W),h=[];if(u.push(i),c&&k&&h.push(function(f){var b,V;const m=(V=(b=f.theme.components)==null?void 0:b[c])==null?void 0:V.styleOverrides;if(!m)return null;const g={};for(const _ in m)g[_]=P(f,m[_],f.theme.modularCssLayers?"theme":void 0);return k(f,g)}),c&&!U&&h.push(function(f){var g,b;const v=f.theme,m=(b=(g=v==null?void 0:v.components)==null?void 0:g[c])==null?void 0:b.variants;return m?G(f,m,[],f.theme.modularCssLayers?"theme":void 0):null}),q||h.push($),Array.isArray(S[0])){const T=S.shift(),f=new Array(u.length).fill(""),v=new Array(h.length).fill("");let m;m=[...f,...T,...v],m.raw=[...f,...T.raw,...v],u.unshift(m)}const B=[...u,...S,...h],R=A(...B);return o.muiName&&(R.muiName=o.muiName),R};return A.withConfig&&(L.withConfig=A.withConfig),L}}function ae(e,r){return void 0}function ue(e){for(const r in e)return!1;return!0}function le(e){return typeof e=="string"&&e.charCodeAt(0)>96}function ce(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}function be(e,r,n=void 0){const t={};for(const s in e){const i=e[s];let l="",o=!0;for(let d=0;d<i.length;d+=1){const c=i[d];c&&(l+=(o===!0?"":" ")+r(c),o=!1,n&&n[c]&&(l+=" "+n[c]))}t[s]=l}return t}const j={theme:void 0};function fe(e){let r,n;return function(s){let i=r;return(i===void 0||s.theme!==n)&&(j.theme=s.theme,i=D(e(j)),r=i,n=s.theme),i}}function de(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}const me=e=>de(e)&&e!=="classes",Ce=ie({themeId:X,defaultTheme:K,rootShouldForwardProp:me}),Te=fe;function Pe(e){return z(e)}export{ee as C,ie as a,be as b,we as c,ge as d,de as e,ne as g,Te as m,me as r,Ce as s,Pe as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as o}from"./DefaultPropsProvider-BZ42HOhu.js";import{i as C}from"./iobroker_admin__loadShare__react__loadShare__-CMWK8WhK.js";import{i as s,a as S}from"./iobroker_admin__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__-Dy1SQ0vs.js";import{i as M}from"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-D-aUnioX.js";import{C as B}from"./Config-D3mtokJQ.js";import"./_commonjsHelpers-CE1G-McA.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-CHE4rLsT.js";import"./emotion-serialize.esm-Q4o_CgeF.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-CXogaIXO.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-CpCTEixV.js";import"./iobroker_admin__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__-DQH_iIDO.js";import"./bootstrap-xC60EdKn.js";import"./ace-DgO9yth5.js";import"./iobroker_admin__loadShare__react_mf_2_dom__loadShare__-GTRt2eft.js";import"./useTheme-UOPilb5j.js";import"./createTheme-O_VGsRib.js";import"./ext-language_tools-DJmHbGA8.js";import"./preload-helper-BDBacUwf.js";import"./sdk-DTP6UH26.js";import"./blueGrey-BFcAYvAO.js";import"./emotion-cache.browser.esm-BgJfNZJN.js";import"./assertThisInitialized-CKqanoMB.js";import"./iobroker_admin__loadShare__leaflet__loadShare__-BfU5U5_j.js";import"./extends-CF3RwP-h.js";import"./iobroker_admin__loadShare__react_mf_2_dropzone__loadShare__-BF_gp27r.js";import"./en-US-B8gg5zk_.js";const T="0 2px 2px 0 rgba(0, 0, 0, .14),0 3px 1px -2px rgba(0, 0, 0, .12),0 1px 5px 0 rgba(0, 0, 0, .2)",R="0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)",n={root:e=>({position:"relative",m:"10px",width:300,minHeight:200,background:e.palette.background.default,boxShadow:T,display:"flex",transition:"box-shadow 0.5s",cursor:"pointer","&:hover":{boxShadow:R}}),imageBlock:{background:"silver",minHeight:60,display:"flex",padding:"0 10px 0 10px",position:"relative",justifyContent:"space-between",transition:"background 0.5s"},img:{width:60,height:60,marginTop:20,position:"relative","&:after":{content:'""',position:"absolute",zIndex:2,top:0,left:0,width:"100%",height:"100%",background:'url("img/no-image.svg") 100% 100% no-repeat',backgroundSize:"cover",backgroundColor:"#fff"}},adapter:{width:"100%",fontWeight:"bold",fontSize:15,verticalAlign:"middle",marginTop:"auto",borderTop:"1px solid silver",padding:"20px 4px",textAlign:"center",textTransform:"uppercase",textOverflow:"ellipsis",overflow:"hidden",color:"#ffab40"},instanceStateNotAlive1:{backgroundColor:"rgba(192, 192, 192, 0.4)"},wrapperDesc:{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"},desc:{padding:20,fontSize:15}};function z(e,r){return e&&typeof e=="object"?e[r]||e.en||"":e||""}const A=({icon:e,id:r,desc:d,lang:l,navigate:p})=>o.jsxs(s.Card,{onClick:p,sx:n.root,children:[o.jsx("div",{style:{...n.imageBlock,...n.instanceStateNotAlive1},children:o.jsx(s.CardMedia,{sx:n.img,component:"img",image:`adapter/${r.split(".")[0]}/${e}`})}),o.jsxs("div",{style:n.wrapperDesc,children:[o.jsx("div",{style:n.desc,children:z(d,l)}),o.jsx("div",{style:n.adapter,children:r})]})]}),t={appBar:e=>({transition:e.transitions.create(["margin","width"],{easing:e.transitions.easing.sharp,duration:e.transitions.duration.leavingScreen})}),wrapperEasyMode:{height:"100%",borderRadius:0},wrapperCard:{padding:"80px 20px 20px",height:"100%",overflowY:"auto"},controlHeight:{display:"flex",flexFlow:"wrap",justifyContent:"center"},img:{width:60,height:60,position:"relative",borderRadius:60},logoWhite:{background:"white"},wrapperHeader:{display:"flex",alignItems:"center"},headerName:{fontSize:24,marginLeft:10},toolBar:{justifyContent:"space-between",margin:"5px 0"},paper:{height:"100%",paddingTop:80},iframe:{height:"100%",width:"100%",background:"#FFF",color:"#000",borderRadius:5,border:"1px solid #888"},IconButtons:{display:"flex"},logoPointer:{cursor:"pointer"}};class ai extends C.Component{constructor(r){super(r),this.state={configs:this.props.configs,strictMode:!this.props.configs}}componentDidMount(){this.props.configs||this.props.socket.getEasyMode().then(r=>this.setState({configs:r.configs}))}render(){const{t:r,themeName:d,toggleTheme:l,navigate:p,location:f,socket:x,themeType:_,theme:b,width:u,isFloatComma:v,dateFormat:y,configStored:w,getLocation:g,adminInstance:j}=this.props,{configs:m,strictMode:h}=this.state;if(!m)return o.jsx(s.CircularProgress,{});const k=f.id,i=m.find(({id:a})=>a===k);return o.jsxs(s.Paper,{style:t.wrapperEasyMode,children:[o.jsx(s.AppBar,{color:"default",position:"fixed",sx:t.appBar,children:o.jsxs(s.Toolbar,{style:t.toolBar,children:[o.jsxs("div",{style:t.wrapperHeader,children:[o.jsx(s.CardMedia,{onClick:h&&!g().dialog||i!=null&&i.tab?()=>p(i!=null&&i.tab?"easy":"tab-intro"):null,style:{...t.img,...d==="colored"?t.logoWhite:void 0,...h&&!g().dialog||i!=null&&i.tab?t.logoPointer:void 0},component:"img",image:"img/no-image.svg"}),o.jsx("div",{style:t.headerName,children:r("Easy Admin")})]}),o.jsxs("div",{style:t.IconButtons,children:[(h&&!g().dialog||(i==null?void 0:i.tab))&&o.jsx(s.IconButton,{size:"large",onClick:()=>p(i!=null&&i.tab?"easy":"tab-intro"),children:o.jsx(S.ArrowBack,{})}),o.jsx(M.ToggleThemeMenu,{t:r,toggleTheme:l,themeName:d,size:"large"})]})]})}),i?o.jsx(s.Paper,{style:t.paper,children:o.jsx(B,{expertMode:!0,style:t.iframe,adapter:i.id.split(".")[0],instance:parseInt(i.id.split(".")[1],10),jsonConfig:i.jsonConfig,materialize:i.materialize,tab:i==null?void 0:i.tab,socket:x,easyMode:!0,themeName:d,themeType:_,theme:b,width:u,t:r,lang:this.props.lang,icon:i.icon,adminInstance:j,configStored:w,dateFormat:y,isFloatComma:v,onRegisterIframeRef:a=>this.props.onRegisterIframeRef(a),onUnregisterIframeRef:a=>this.props.onUnregisterIframeRef(a),handleNavigation:this.props.handleNavigation})}):o.jsx("div",{style:t.wrapperCard,children:o.jsx("div",{style:t.controlHeight,children:m.sort((a,c)=>a.id<c.id?-1:a.id>c.id?1:0).map(a=>o.jsx(A,{lang:this.props.lang,navigate:()=>p(null,"config",a.id),...a},a.id))})})]})}}export{ai as default};
|