iobroker.admin 7.6.2 → 7.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -10
- package/adminWww/assets/{AdapterUpdateDialog-CdDzwRjx.js → AdapterUpdateDialog-CRermRaB.js} +1 -1
- package/adminWww/assets/{Adapters-BtSoe3ny.js → Adapters-Bs8G-cxo.js} +1 -1
- package/adminWww/assets/{Config-DV-y10Fh.js → Config-Di_mkCPb.js} +1 -1
- package/adminWww/assets/{CustomModal-CYOPWjwy.js → CustomModal-BTTKhEC8.js} +1 -1
- package/adminWww/assets/{CustomTab-cprIlE4B.js → CustomTab-D6Mn63bB.js} +1 -1
- package/adminWww/assets/{EasyMode-Cd88-W7q.js → EasyMode-DKcbIjJ6.js} +1 -1
- package/adminWww/assets/{Enums-nUibAZSg.js → Enums-uOeKEKzl.js} +1 -1
- package/adminWww/assets/{Fields-vrlzBhCD.js → Fields-TuYhaeX9.js} +1 -1
- package/adminWww/assets/{Files-DClcJEP9.js → Files-BhPaQLPw.js} +1 -1
- package/adminWww/assets/{Hosts-DLnI_Hxs.js → Hosts-BNvz1qdC.js} +1 -1
- package/adminWww/assets/{Instances-BaExCFtw.js → Instances-L7eZoDyM.js} +2 -2
- package/adminWww/assets/{Intro-wT4JOxpS.js → Intro-Dih9urjd.js} +1 -1
- package/adminWww/assets/{Logs-CSsFxtVG.js → Logs-C8bVKj2s.js} +1 -1
- package/adminWww/assets/{Objects-Bbrov7BJ.js → Objects-CD7n6XMI.js} +1 -1
- package/adminWww/assets/{State-CmEur1zC.js → State-Bs4eLVUn.js} +1 -1
- package/adminWww/assets/{Tabs-CmlBtpRi.js → Tabs-C57_YqtR.js} +1 -1
- package/adminWww/assets/{Users-CPHL5ErP.js → Users-DMJv0VQ1.js} +1 -1
- package/adminWww/assets/{bootstrap-CoF0Rq1_.js → bootstrap-DF1rNJUh.js} +43 -43
- package/adminWww/assets/{index-BKyxHMBB.js → index-Cmq0Omjs.js} +1 -1
- package/adminWww/assets/{index-DO87nxhY.js → index-DGeySK-Q.js} +2 -2
- package/adminWww/assets/{index-yI_g3hCZ.js → index-lAM5Xnu_.js} +1 -1
- package/adminWww/assets/{sentry-Cc5WioqD.js → sentry-ClQ-PGjf.js} +1 -1
- package/adminWww/assets/{zh-cn-CzBq9Ifq.js → zh-cn-DrUOm-Ho.js} +1 -1
- package/adminWww/index.html +1 -1
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry.js +2 -2
- package/build-backend/lib/web.js +2 -1
- package/build-backend/lib/web.js.map +1 -1
- package/io-package.json +22 -14
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -87,6 +87,11 @@ The icons may not be reused in other projects without the proper flaticon licens
|
|
|
87
87
|
<!--
|
|
88
88
|
### **WORK IN PROGRESS**
|
|
89
89
|
-->
|
|
90
|
+
### 7.6.3 (2025-03-15)
|
|
91
|
+
- (@GermanBluefox) Corrected the layout of JSON tabs
|
|
92
|
+
- (@mcm1957) Schema at `ioBroker.admin` is now used to validate jsonConfig.json file
|
|
93
|
+
- (@GermanBluefox) Corrected the small GUI issues
|
|
94
|
+
|
|
90
95
|
### 7.6.2 (2025-03-09)
|
|
91
96
|
- (@GermanBluefox) Corrected loading of custom JSON components
|
|
92
97
|
|
|
@@ -104,16 +109,6 @@ The icons may not be reused in other projects without the proper flaticon licens
|
|
|
104
109
|
- (@GermanBluefox) Added the possibility to rename or copy of the objects
|
|
105
110
|
- (@GermanBluefox) Corrected the problem with the user rights
|
|
106
111
|
|
|
107
|
-
### 7.5.0 (2025-03-02)
|
|
108
|
-
- (@GermanBluefox) Changed Device Manager for control types
|
|
109
|
-
- (@GermanBluefox) Used socket classes with TypeScript
|
|
110
|
-
- (@GermanBluefox) Added support for `plugins.sentry.enabled` flag in adapter
|
|
111
|
-
- (@GermanBluefox) Updated packages
|
|
112
|
-
- (@GermanBluefox) Corrected stopping of running admin instances
|
|
113
|
-
- (@GermanBluefox) Added OAuth2 authentication
|
|
114
|
-
- (@GermanBluefox) Corrected the focus lost by editing of tables in JSON Config
|
|
115
|
-
- (@GermanBluefox) Added the renaming of objects via context menu in Object Browser
|
|
116
|
-
|
|
117
112
|
## License
|
|
118
113
|
|
|
119
114
|
The MIT License (MIT)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as t}from"./DefaultPropsProvider-Beyggw1o.js";import{i as k}from"./iobroker_admin__loadShare__react__loadShare__-T96CJO0k.js";import{s as f,ab as T,I as w,i as s,a as u,U as y}from"./bootstrap-
|
|
1
|
+
import{j as t}from"./DefaultPropsProvider-Beyggw1o.js";import{i as k}from"./iobroker_admin__loadShare__react__loadShare__-T96CJO0k.js";import{s as f,ab as T,I as w,i as s,a as u,U as y}from"./bootstrap-DF1rNJUh.js";import{h as _}from"./zh-cn-DrUOm-Ho.js";import{S as C}from"./State-Bs4eLVUn.js";const l={closeButton:c=>({position:"absolute",right:8,top:8,color:c.palette.grey[500]}),languageButton:{position:"absolute",right:60,top:8},languageButtonActive:c=>({color:c.palette.primary.main}),typography:{paddingRight:30},version:c=>({background:"#4dabf5",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:c.palette.mode==="dark"?"black":"white"}),wrapperButton:{"@media screen and (max-width: 465px)":{"& *":{fontSize:10}},"@media screen and (max-width: 380px)":{"& *":{fontSize:9}}},messageText:{},messageIcon:{width:32,height:32,marginRight:8},messageColor_warn:{color:"#cb7642"},messageColor_error:{color:"#f5614d"},messageColor_info:{color:"#5abd29"},messageTitle_warn:c=>({background:"#cb7642",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:c.palette.mode==="dark"?"black":"white"}),messageTitle_error:c=>({background:"#f5614d",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:c.palette.mode==="dark"?"black":"white"}),messageTitle_info:c=>({background:"#5abd29",borderRadius:"3px",pl:"10px",fontWeight:"bold",color:c.palette.mode==="dark"?"black":"white"}),messageDialogText:{fontSize:18},messageDialogTitle:{},versionTime:{fontSize:"smaller",opacity:.5,marginLeft:4},dialogPaper:{maxWidth:880},repoStableVersionText:c=>({color:c.palette.mode==="dark"?"#8dff7a":"#2b9800",fontWeight:"bold",marginLeft:"4px"}),repoLatestVersionText:c=>({color:c.palette.mode==="dark"?"#a3fcff":"#005498",fontWeight:"bold",marginLeft:"4px"})};function D(c,e,d,n){let p=null;return c&&c.forEach(o=>{let g=!o.condition||!o.condition.rules;if(o.condition&&o.condition.rules){const x=(Array.isArray(o.condition.rules)?o.condition.rules:[o.condition.rules]).map(i=>{let r,a,h;if(i.includes("oldVersion"))r=e,i=i.substring(10);else if(i.includes("newVersion"))r=d,i=i.substring(10);else{if(i==="installed")return!!e;if(i==="!"||i==="not-installed")return!e;if(n){const v=i.match(/([a-z][-a-z_0-9]+)([!=<>]+)([.\d]+)/);if(v){const m=Object.keys(n).find(b=>{var j;return((j=n[b])==null?void 0:j.name)===v[1]});if(m){r=n[m].version,a=v[2],h=v[3];try{return a==="=="?f.eq(r,h):a===">"?f.gt(r,h):a==="<"?f.lt(r,h):a===">="?f.gte(r,h):a==="<="?f.lte(r,h):a==="!="?f.neq(r,h):(console.warn(`Unknown rule ${r}${i}`),!1)}catch{return console.warn(`Cannot compare ${r}${i}`),!1}}}else if(i.match(/^[!=<>]+/)){if(i.startsWith("!")){const m=i.substring(1);if(!Object.keys(n).find(b=>{var j;return((j=n[b])==null?void 0:j.name)===m}))return!0}}else if(Object.keys(n).find(m=>{var b;return((b=n[m])==null?void 0:b.name)===i}))return!0;return!1}}i[1]>="0"&&i[1]<="9"?(a=i[0],h=i.substring(1)):(a=i.substring(0,2),h=i.substring(2));try{if(a==="==")return f.eq(r,h);if(a===">")return f.gt(r,h);if(a==="<")return f.lt(r,h);if(a===">=")return f.gte(r,h);if(a==="<=")return f.lte(r,h);if(a==="!=")return f.neq(r,h);console.warn(`Unknown rule ${r}${i}`)}catch{console.warn(`Cannot compare ${r}${i}`)}return!1});o.condition.operand==="or"?g=x.find(i=>i):g=x.findIndex(i=>!i)===-1}g&&(p=p||[],p.push({title:o.title,text:o.text,link:o.link,linkText:o.linkText,buttons:o.buttons,level:o.level}))}),p}class $ extends k.Component{t;mobile;messages;lang;constructor(e){var n,p;super(e),this.t=e.t,this.mobile=window.innerWidth<T,this.state={showMessageDialog:!1};const d=!1;this.messages=D(((n=this.props.adapterObject)==null?void 0:n.messages)||d,this.props.installedVersion,(p=this.props.adapterObject)==null?void 0:p.version,this.props.instances),this.lang=w.getLanguage(),_.locale(this.lang)}getDependencies(){return(this.props.dependencies||[]).map(e=>t.jsx(C,{state:e.rightVersion,children:`${e.name}${e.version?` (${e.version})`:""}: ${e.installed?e.installedVersion:"-"}`},e.name))}getNews(){var p;const e=[];let d,n;return this.props.isStable!==void 0&&(this.props.isStable?(d=this.props.adapterObject.version,n=this.props.adapterObject.latestVersion):(d=this.props.adapterObject.stable,n=this.props.adapterObject.version)),(p=this.props.news)==null||p.forEach(o=>{var x,i,r;const g=(o.news?o.news.split(`
|
|
2
2
|
`):[]).map(a=>a.trim().replace(/^\*\s*/,"").replace(/<!--[^>]*->/,"").replace(/<! -[^>]*->/,"").replace(/<!--|--!?>/g,"").trim()).filter(a=>!!a);(x=this.props.adapterObject)!=null&&x.version&&o.version&&f.gt(o.version,(i=this.props.adapterObject)==null?void 0:i.version)||e.push(t.jsxs(s.Grid2,{children:[t.jsxs(s.Typography,{sx:l.version,children:[o.version,n&&n===o.version?t.jsx(s.Box,{component:"span",sx:l.repoLatestVersionText,children:"(latest)"}):null,d&&d===o.version?t.jsx(s.Box,{component:"span",sx:l.repoStableVersionText,children:`(${w.t("stable")})`}):null,((r=this.props.adapterObject)==null?void 0:r.version)===o.version?t.jsxs("span",{style:l.versionTime,children:["(",_(this.props.adapterObject.versionDate).fromNow(),")"]}):null]}),g.map((a,h)=>t.jsx(s.Typography,{component:"div",variant:"body2",children:`• ${a}`},`${o.version}-${h}`))]},o.version))}),e}getText(e,d){return e&&typeof e=="object"?d?e.en:e[this.lang]||e.en:typeof e=="object"?"":e}renderOneMessage(e,d){return t.jsxs(s.Grid2,{children:[t.jsx(s.Typography,{sx:l[`messageTitle_${e.level||"warn"}`],children:this.getText(e.title,this.props.noTranslation)||""}),t.jsx(s.Typography,{component:"div",variant:"body2",style:l.messageText,children:this.getText(e.text,this.props.noTranslation)||""}),e.link?t.jsx(s.Button,{onClick:()=>{window.open(e.link,"_blank").focus()},startIcon:t.jsx(u.Public,{}),variant:"contained",color:"grey",children:this.getText(e.linkText,this.props.noTranslation)||this.props.t("More info")}):null]},d)}renderMessages(){return this.messages?t.jsx(s.Grid2,{container:!0,spacing:2,direction:"column",wrap:"nowrap",sx:{marginBottom:1},children:this.messages.map((e,d)=>this.renderOneMessage(e,d))}):null}renderMessageDialog(){var n;if(!this.state.showMessageDialog)return null;const e=this.messages.find(p=>p.buttons),d=(n=this.props.adapterObject)==null?void 0:n.version;return t.jsxs(s.Dialog,{onClose:()=>this.setState({showMessageDialog:!1}),open:!0,children:[t.jsx(s.DialogTitle,{style:l.messageDialogTitle,children:this.getText(e.title,this.props.noTranslation)||this.props.t("Please confirm")}),t.jsxs(s.DialogContent,{style:l.messageDialogText,children:[e.level==="warn"?t.jsx(u.Warning,{style:{...l.messageIcon,...l.messageColor_warn}}):null,e.level==="error"?t.jsx(u.Error,{style:{...l.messageIcon,...l.messageColor_error}}):null,e.level==="info"?t.jsx(u.Info,{style:{...l.messageIcon,...l.messageColor_info}}):null,this.getText(e.text,this.props.noTranslation)]}),t.jsxs(s.DialogActions,{children:[e.link?t.jsx(s.Button,{onClick:()=>{window.open(e.link,"_blank").focus()},startIcon:t.jsx(u.Public,{}),variant:"contained",color:"secondary",children:this.getText(e.linkText,this.props.noTranslation)||this.props.t("More info")}):null,e.link?t.jsx("div",{style:{flexGrow:1}}):null,e.buttons.map((p,o)=>p==="ok"?t.jsx(s.Button,{variant:"contained",onClick:()=>this.setState({showMessageDialog:!1},()=>this.props.onUpdate(d)),color:"primary",startIcon:t.jsx(u.Check,{}),children:this.t("Update")},o):p==="agree"?t.jsx(s.Button,{sx:l[`messageTitle_${e.level||"warn"}`],variant:"contained",onClick:()=>this.setState({showMessageDialog:!1},()=>this.props.onUpdate(d)),color:"primary",startIcon:t.jsx(u.Check,{}),children:this.t("Agree")},o):p==="cancel"?t.jsx(s.Button,{variant:"contained",onClick:()=>this.setState({showMessageDialog:!1}),startIcon:t.jsx(u.Close,{}),color:"grey",children:this.t("Cancel")},o):null)]})]})}render(){var p,o;const e=(p=this.props.adapterObject)==null?void 0:p.version,d=(o=this.props.news)==null?void 0:o.every(g=>g.downloaded),n=this.getNews();return t.jsxs(s.Dialog,{onClose:this.props.onClose,open:!0,sx:{"& .MuiDialog-paper":l.dialogPaper},children:[this.renderMessageDialog(),t.jsx(s.DialogTitle,{children:t.jsxs(s.Typography,{component:"h2",variant:"h6",sx:{"&.MuiTypography-root":l.typography},children:[t.jsx("div",{style:{width:"calc(100% - 60px)"},children:this.t('Update "%s" to v%s',this.props.adapter,e)}),t.jsx(s.IconButton,{size:"large",sx:l.closeButton,onClick:this.props.onClose,children:t.jsx(u.Close,{})}),this.lang!=="en"&&this.props.toggleTranslation&&!d?t.jsx(s.IconButton,{size:"large",style:y.getStyle(this.props.theme,l.languageButton,this.props.noTranslation&&l.languageButtonActive),onClick:this.props.toggleTranslation,title:w.t("Disable/Enable translation"),children:t.jsx(u.Language,{})}):null]})}),t.jsxs(s.DialogContent,{dividers:!0,children:[this.renderMessages(),t.jsxs(s.Grid2,{container:!0,direction:"column",spacing:2,wrap:"nowrap",children:[this.props.dependencies&&this.props.dependencies.length>0&&this.props.dependencies.find(g=>!g.rightVersion)&&t.jsxs(s.Grid2,{children:[t.jsx(s.Typography,{variant:"h6",gutterBottom:!0,children:this.t("Dependencies")}),this.getDependencies()]}),n.length?t.jsxs(s.Grid2,{children:[t.jsx(s.Typography,{variant:"h6",gutterBottom:!0,children:this.t("Change log")}),t.jsx(s.Grid2,{container:!0,spacing:2,direction:"column",wrap:"nowrap",children:n})]}):this.t("No change log available")]})]}),t.jsxs(s.DialogActions,{sx:l.wrapperButton,children:[!!this.props.rightDependencies&&this.props.onIgnore&&e&&t.jsx(s.Button,{id:"adapter-update-dialog-ignore",variant:"outlined",onClick:()=>this.props.onIgnore(e),color:"primary",children:this.t("Ignore version %s",e)}),t.jsx(s.Button,{variant:"contained",id:"adapter-update-dialog-ok",autoFocus:!0,disabled:!this.props.rightDependencies||!e||!this.props.adapterObject,onClick:()=>{var g;(g=this.messages)!=null&&g.find(x=>x.buttons)?this.setState({showMessageDialog:!0}):this.props.onUpdate(e)},color:"primary",startIcon:t.jsx(u.Check,{}),children:this.mobile?null:this.props.textUpdate?this.props.textUpdate:this.t("Update")}),this.props.textInstruction?t.jsx(s.Button,{id:"adapter-update-dialog-instructions",variant:"contained",autoFocus:!0,disabled:!this.props.rightDependencies||!e||!this.props.adapterObject,onClick:()=>{var g;(g=this.messages)!=null&&g.find(x=>x.buttons)?this.setState({showMessageDialog:!0}):this.props.onInstruction()},color:"primary",startIcon:t.jsx(u.Book,{}),children:this.mobile?null:this.props.textInstruction}):null,t.jsx(s.Button,{id:"adapter-update-dialog-cancel",variant:"contained",onClick:()=>this.props.onClose(),color:"grey",startIcon:t.jsx(u.Close,{}),children:this.mobile?null:this.t("Close")})]})]})}}export{$ as A,D as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as e,E as pt,B as mt,J as xt}from"./DefaultPropsProvider-Beyggw1o.js";import{i as L,R as Z}from"./iobroker_admin__loadShare__react__loadShare__-T96CJO0k.js";import{s as V,i as o,U as R,I as w,a as u,C as ft,G as yt,b as z,H as wt,L as bt,c as O,A as jt,d as At,e as Y,f as dt,T as Ct,S as st,g as vt,h as Tt}from"./bootstrap-
|
|
1
|
+
import{j as e,E as pt,B as mt,J as xt}from"./DefaultPropsProvider-Beyggw1o.js";import{i as L,R as Z}from"./iobroker_admin__loadShare__react__loadShare__-T96CJO0k.js";import{s as V,i as o,U as R,I as w,a as u,C as ft,G as yt,b as z,H as wt,L as bt,c as O,A as jt,d as At,e as Y,f as dt,T as Ct,S as st,g as vt,h as Tt}from"./bootstrap-DF1rNJUh.js";import{F as ct}from"./index-CFcKrkeG.js";import{M as St,s as It,C as it}from"./sentry-ClQ-PGjf.js";import{c as K,A as kt}from"./AdapterUpdateDialog-CRermRaB.js";import{C as Vt}from"./CustomModal-BTTKhEC8.js";import{a as ht}from"./blueGrey-BKTirx-Z.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-C8Lvs8Es.js";import"./_commonjsHelpers-BosuxZz1.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-VDoBF19b.js";import"./emotion-serialize.esm-BUa21YfQ.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-gw2iqPBS.js";import"./ace-BAuRYJjv.js";import"./FilledInput-Bfz0Aef-.js";import"./preload-helper-C1FmrZbK.js";import"./iobroker_admin__loadShare__leaflet__loadShare__-FMqZHPyC.js";import"./extends-CF3RwP-h.js";import"./iconBase-CxzgaDaB.js";import"./zh-cn-DrUOm-Ho.js";import"./State-Bs4eLVUn.js";import"./emotion-cache.browser.esm-B8BFze5o.js";const v={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 tt 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=Z.createRef(),this.current=t.current,this.props.onUpdateSelected([...this.updateAvailable],this.updateAvailable)}static isUpdateAvailable(t){const{oldVersion:s,newVersion:i,name:r}=t;try{return V.gt(i,s)}catch{return console.warn(`Cannot compare "${i}" and "${s}" of adapter ${r}`),!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&&tt.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`):t.push(s))}),t.sort(),t}getNews(t){const s=this.props.repository[t],i=this.props.installed[t],r=[];return i&&(s!=null&&s.news)&&Object.keys(s.news).forEach(n=>{try{V.gt(n,i.version)&&r.push({version:n,news:this.props.noTranslation?s.news[n].en:s.news[n][this.props.lang]||s.news[n].en})}catch{console.warn(`Cannot compare "${n}" and "${i.version}"`)}}),r}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":R.getStyle(this.props.theme,v.listItem,this.props.updated.includes(t)&&v.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 r=[...this.props.selected],n=r.indexOf(t);n!==-1?r.splice(n,1):(r.push(t),r.sort()),this.props.onUpdateSelected(r)}}):this.props.current===t&&!this.props.stopped&&!this.props.finished&&e.jsx(o.CircularProgress,{}),children:[e.jsx(o.ListItemIcon,{sx:v.minWidthCss,children:e.jsx(o.Avatar,{variant:"square",alt:t,src:i,style:v.smallAvatar})}),e.jsx(o.ListItemText,{primary:t,title:this.getNews(t).map(r=>`${r.version}: ${r.news}`).join(`
|
|
2
2
|
`),secondary:e.jsxs("span",{children:[e.jsxs("div",{style:v.versions,children:[this.initialVersions[t]," →",e.jsx(o.Box,{component:"span",sx:v.toVersion,children:this.props.repository[t].version})]}),e.jsx(o.IconButton,{title:w.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(u.Info,{})})]})})]},t)}getReactNews(t,s){var d,a,g,x;const i=this.props.repository[t],r=this.props.installed[t];s=s||r.version;const n=[];let l,c;const h=this.props.repository._repoInfo;return h!=null&&h.stable?(l=(d=this.props.repository[t])==null?void 0:d.version,c=(a=this.props.repository[t])==null?void 0:a.latestVersion):(l=(g=this.props.repository[t])==null?void 0:g.stable,c=(x=this.props.repository[t])==null?void 0:x.version),r&&(i!=null&&i.news)&&Object.keys(i.news).forEach(m=>{try{if(V.gt(m,s)&&i.news[m]){const j=(this.props.noTranslation?i.news[m].en||"":i.news[m][this.props.lang]||i.news[m].en||"").split(`
|
|
3
3
|
`).map(U=>U.trim().replace(/^\*\s?/,"").replace(/<!--[^>]*->/g,"").replace(/<! -[^>]*->/g,"").trim()).filter(U=>!!U);n.push(e.jsxs(o.Grid2,{children:[e.jsxs(o.Typography,{sx:v.versionHeader,children:[m,c===m?e.jsx(o.Box,{component:"span",sx:v.repoLatestVersionText,children:"(latest)"}):null,l===m?e.jsx(o.Box,{component:"span",sx:v.repoStableVersionText,children:`(${w.t("stable")})`}):null]}),j.map((U,S)=>e.jsx(o.Typography,{component:"div",variant:"body2",children:`• ${U}`},`${m}-${S}`))]},m))}}catch{console.warn(`Cannot compare "${m}" and "${s}"`)}}),n}renderShowNews(){if(this.state.showNews){const t=this.getReactNews(this.state.showNews.adapter,this.state.showNews.fromVersion),s=R.getStyle(this.props.theme,v.closeButton),i=R.getStyle(this.props.theme,v.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":v.typography},children:[e.jsx("div",{style:{width:"calc(100% - 60px)"},children:w.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(u.Close,{})}),w.getLanguage()!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:{...v.languageButton,...this.props.noTranslation?i:void 0},onClick:this.props.toggleTranslation,title:w.t("Disable/Enable translation"),children:e.jsx(u.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:w.t("Change log")}),e.jsx(o.Grid2,{container:!0,spacing:2,direction:"column",wrap:"nowrap",children:t})]}):w.t("No change log available")})}),e.jsx(o.DialogActions,{style:v.wrapperButton,children:e.jsx(o.Button,{variant:"contained",onClick:()=>this.setState({showNews:null}),color:"grey",startIcon:e.jsx(u.Close,{}),children:w.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:v.root,children:[this.updateAvailable.map(t=>this.renderOneAdapter(t)),this.renderShowNews()]})}}const F={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 Dt 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 r=[...this.state.updated];r.push(s),this.setState({updated:r},()=>setTimeout(()=>this.updateAdapters(t),200))})}}render(){const t=this.props.noTranslation?R.getStyle(this.props.theme,F.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":F.dialogRoot},scroll:"paper",children:[e.jsx(o.DialogTitle,{id:"update-dialog-title",children:e.jsxs("div",{style:F.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:F.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})}})}),w.getLanguage()!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:{...F.languageButton,...t},onClick:()=>this.props.toggleTranslation(),title:w.t("Disable/Enable translation"),children:e.jsx(u.Language,{})}):null]})}),e.jsxs(o.DialogContent,{sx:{"&.MuiDialogContent-root":F.content},style:{height:"100%"},children:[e.jsxs(o.Grid2,{container:!0,direction:"row",sx:F.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(tt,{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})})}),!!this.state.current&&e.jsx(o.Grid2,{style:{height:"100%",overflow:"hidden",width:"calc(100% - 260px)",minWidth:240},children:e.jsx(ft,{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:F.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(u.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(u.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(u.Close,{}),children:this.props.t("Close")})]})]})}}class ot extends yt{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 Rt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVGhD7dixCoJQGMVxDSOoodFACJSmaPQ5mpscfYUeo6WXCFx6gFanpsDRqMWhRYgGIbSWbxFBbdDThfNb9Iz/4XJF/aypbSBPZTEAjQFoDEBjAJryAS0+JXRdNwx578snz7WikFGrOWBk28soktGXm+elQSCjVosAx1nFsYy+XDeb9HCQUYuHGI0BaAxAUz6g23vgeToVWSajbGiaE9eVUdH+Hug24GJZ7ySRUTZdrxfHo4wKXmTqYAAaA9AYgMYANAagMQCNAWgMQGMAGgPQGIDGADTlA5r/jRqmOd/vZfzo7vt5msooG7vubLuVUfHY7V5hKKNWc8Cf4xlAYwAaA9AYgMYANAZgadoX+gw72Zvh2hIAAAAASUVORK5CYII=";function q(p){return{id:`github-install-dialog-tab-${p}`,"aria-controls":`github-install-dialog-panel-${p}`}}const A={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 Lt(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 rt=10;class Ut extends Z.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:A.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(u.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(z,{src:((i=this.state.autoCompleteValue)==null?void 0:i.icon)||"",style:A.listIcon})}),e.jsx(o.TextField,{variant:"standard",...t,label:w.t("Select adapter")})},renderOption:(t,s)=>e.jsxs(o.Box,{component:"li",sx:{"& > img":{mr:2,flexShrink:0}},...t,children:[e.jsx(z,{src:(s==null?void 0:s.icon)||"",style:A.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:A.warningText,children:this.props.t("npm_warning","NPM","NPM")}),e.jsx("div",{style:A.noteText,children:this.props.t("github_note")})]}):null}renderGitHub(){return this.state.currentTab==="GitHub"?e.jsxs(o.Paper,{style:A.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(u.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(z,{src:(s==null?void 0:s.icon)||"",style:A.listIconWithMargin}),(s==null?void 0:s.name)??"",(s==null?void 0:s.nogit)&&e.jsx("div",{style:A.errorTextNoGit,children:w.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(z,{src:((i=this.state.autoCompleteValue)==null?void 0:i.icon)||"",style:A.listIconWithMargin})}),e.jsx(o.TextField,{variant:"standard",...t,label:w.t("Select adapter")})}})]}),e.jsx("div",{style:{fontSize:24,fontWeight:"bold",marginTop:40},children:this.props.t("Warning!")}),e.jsx("div",{style:A.warningText,children:this.props.t("github_warning","GitHub","GitHub")}),e.jsx("div",{style:A.noteText,children:this.props.t("github_note")})]}):null}renderCustom(){return this.state.currentTab==="URL"?e.jsxs(o.Paper,{style:A.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 r=this.state.customHistory.filter(n=>n!==s);(window._localstorage||window.localStorage).setItem("App.npmHistory",JSON.stringify(r)),this.setState({customHistory:r})},children:e.jsx(u.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];i.unshift(this.state.url),i.length>rt&&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:A.warningText,children:this.props.t("github_warning","URL","URL")}),e.jsx("div",{style:A.noteText,children:this.props.t("github_note")})]}):null}getList(){const t=this.props.categories.map(i=>i.adapters),s=Lt(t);return s.sort(),s.map((i,r)=>{if(r&&s[r-1]===i)return null;const n=this.props.repository[i];if(!(n!=null&&n.controller)){const l=(n.extIcon||n.meta||n.readme||"").toString().split("/");let c=n==null?void 0:n.name;c||(c=n.titleLang,c&&typeof c=="object"?c=c[w.getLanguage()]||c.en:c=n.title||i);const h={value:`${i}/${l[3]}`,name:`${c} [${l[3]}]`,icon:n.extIcon||n.icon,nogit:!!n.nogit,title:i};return this.props.installed[c]&&c!=="admin"&&(h.icon=`/adapter/${i}/${n.icon.split("/admin/").pop()}`),h}return null}).filter(i=>i).sort((i,r)=>i.name<r.name?-1:i.name>r.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":A.paper},children:[e.jsx(o.DialogContent,{dividers:!0,children:e.jsxs(o.Box,{component:"div",sx:A.root,children:[e.jsx(o.AppBar,{position:"static",color:"default",children:e.jsxs(o.Tabs,{value:this.state.currentTab,onChange:(i,r)=>{(window._localstorage||window.localStorage).setItem("App.gitTab",r),this.setState({currentTab:r})},variant:"fullWidth",indicatorColor:"secondary",children:[e.jsx(o.Tab,{label:this.props.t("From npm"),wrapped:!0,sx:{"&.Mui-selected":A.tabSelected},icon:e.jsx("img",{src:Rt,alt:"npm",width:24,height:24}),...q("npm"),value:"npm"}),e.jsx(o.Tab,{label:this.props.t("From github"),wrapped:!0,sx:{"&.Mui-selected":A.tabSelected},icon:e.jsx(ct,{style:{width:24,height:24},width:24,height:24}),...q("github"),value:"GitHub"}),e.jsx(o.Tab,{label:this.props.t("Custom"),wrapped:!0,sx:{"&.Mui-selected":A.tabSelected},icon:e.jsx(u.Language,{width:24,height:24}),...q("custom"),value:"URL"})]})}),e.jsx(o.Box,{component:"div",sx:A.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,r;if(this.state.currentTab==="GitHub"){const n=(((i=this.state.autoCompleteValue)==null?void 0:i.value)||"").split("/"),l=`${n[1]}/ioBroker.${n[0]}`;this.props.installFromUrl(l,this.state.debug,!0)}else if(this.state.currentTab==="URL"){const n=[...this.state.customHistory];n.unshift(this.state.url),n.length>rt&&n.pop(),(window._localstorage||window.localStorage).setItem("App.npmHistory",JSON.stringify(n)),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 n=(((r=this.state.autoCompleteValue)==null?void 0:r.value)||"").split("/")[0],l=n.includes(".")?n.split(".")[1]:n;try{await this.props.installFromUrl(`iobroker.${l}@latest`,this.state.debug,!0),this.props.upload(l)}catch(c){console.error(`Installation from url failed: ${c.message}`)}}this.props.onClose(),t()},color:"primary",startIcon:e.jsx(u.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(u.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 Ot extends L.Component{t;messages=null;lang;constructor(t){super(t),this.state={instanceNumbers:[]},this.t=t.t,this.lang=w.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 r,n;return((n=(r=t[i])==null?void 0:r.common)==null?void 0:n.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(u.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(u.Close,{})}),this.messages&&this.lang!=="en"&&this.props.toggleTranslation?e.jsx(o.IconButton,{size:"large",style:R.getStyle(this.props.theme,B.languageButton,this.props.noTranslation&&B.languageButtonActive),onClick:this.props.toggleTranslation,title:w.t("Disable/Enable translation"),children:e.jsx(u.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(wt,{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(u.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(u.Close,{}),children:this.t("Close")})]})]})}}function Q(p){var s;if(!p)return"";let t=((s=p.licenseInformation)==null?void 0:s.link)||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 _ 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(bt,{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?_.upload(i.adapterName,t):this.addInstance({adapterName:i.adapterName,context:t}).catch(r=>window.alert(`Cannot add instance: ${r}`)))})}}):null}async addInstance(t){if(!t.customUrl){const i=t.context.repository[t.adapterName],r=K(i.messages,null,i.version,t.context.compactInstances);if(!t.instance&&(t.context.expertMode||r)){this.setState({addInstanceDialog:t.adapterName,showDialog:!0,addInstanceHostName:t.context.currentHost.replace(/^system\.host\./,""),addInstanceId:t.instance||"auto"});return}if(t.instance){const n=await t.context.instancesWorker.getObjects();if(n&&n[`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,r)=>{t.context.executeCommand(`${t.customUrl?"url":"add"} ${t.adapterName} ${t.instance?`${t.instance} `:""}--host ${s} ${t.debug||t.context.expertMode?"--debug":""}`,s,n=>n?r(new Error(`The process returned an exit code of ${n}`)):i())})}catch(i){window.alert(`${w.t("Cannot install")}: ${i}`)}}static getDependencies(t,s){var n,l;const i=s.repository[t],r=[];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((n=i.dependencies)!=null&&n.length)for(const d of i.dependencies){const a={name:"",version:null,installed:!1,installedVersion:null,rightVersion:!1},g=typeof d!="string",x=Object.keys(d);if(a.name=g?x?x[0]:null:d,a.version=g?d[a.name]:null,a.name){const m=s.installed[a.name];a.installed=!!m,a.installedVersion=m?m.version:null;try{a.rightVersion=m?g?V.satisfies(m.version,a.version,{includePrerelease:!0}):!0:!1}catch{a.rightVersion=!0}}r.push(a)}if((l=i.globalDependencies)!=null&&l.length)for(const d of i.globalDependencies){const a={name:"",version:null,installed:!1,installedVersion:null,rightVersion:!1},g=typeof d!="string",x=Object.keys(d);if(a.name=g?x?x[0]:null:d,a.version=g?d[a.name]:null,a.name){const m=s.installedGlobal[a.name];a.installed=!!m,a.installedVersion=m?m.version:null;try{a.rightVersion=m?g?V.satisfies(m.version,a.version,{includePrerelease:!0}):!0:!1}catch{a.rightVersion=!0}}r.push(a)}const h=i.ifInstalledDependencies;if(h&&typeof h=="object"&&!Array.isArray(h)){const d=Object.keys(h);for(const a of d){const g={name:a,version:h[a],installed:!1,installedVersion:null,rightVersion:!1};if(g.name){const x=s.installedGlobal[g.name];g.installed=!!x,g.installedVersion=x?x.version:null;try{g.rightVersion=x?V.satisfies(x.version,g.version,{includePrerelease:!0}):!0}catch{g.rightVersion=!0}}r.push(g)}}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}r.push(d)}}return r}renderAddInstanceDialog(t){return this.state.addInstanceDialog?e.jsx(Ot,{adapter:this.state.addInstanceDialog,socket:t.socket,hostsWorker:t.hostsWorker,instancesWorker:t.instancesWorker,dependencies:_.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:"",r=s?this.state.addInstanceId:"";this.setState({addInstanceDialog:"",addInstanceId:"auto",showDialog:!1},()=>{if(i)try{this.addInstance({adapterName:i,instance:r,context:t})}catch(n){window.alert(`Cannot add instance: ${n}`)}})},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 l;const i=s.repository[t],r=Q(i),n=((l=i.licenseInformation)==null?void 0:l.license)||i.license;n==="MIT"?this.addInstance({adapterName:t,context:s}).catch(c=>window.alert(`Cannot add instance: ${c}`)):this.setState({showLicenseDialog:{url:r,adapterName:t,licenseType:n},showDialog:!0})}renderDialogs(t){return this.state.showDialog?e.jsxs(e.Fragment,{children:[this.renderAddInstanceDialog(t),this.renderLicenseDialog(t)]}):null}}const H={name:{flexWrap:"nowrap",width:300,marginTop:0},nameDiv:{display:"flex",alignItems:"center"},categoryName:{fontWeight:"bold",cursor:"pointer"},green:{color:pt[500]},blue:{color:mt[700]},category:{backgroundColor:"background.default"},marginRight5:{marginRight:5}};function Nt(p){const{installedCount:t,name:s,categoryName:i}=p;return e.jsxs(o.TableRow,{hover:!1,sx:H.category,children:[e.jsx(o.TableCell,{children:e.jsx(o.Grid2,{container:!0,spacing:1,alignItems:"center",style:H.name,children:e.jsx(o.Grid2,{component:"div",children:e.jsx(o.IconButton,{size:"small",onClick:p.onToggle,children:p.expanded?e.jsx(u.ExpandMore,{}):e.jsx(u.ChevronRight,{})})})})}),e.jsx(o.TableCell,{onClick:p.onToggle,children:e.jsxs("div",{style:{...H.nameDiv,...H.categoryName},children:[e.jsx(St,{iconName:i,style:H.marginRight5}),s]})}),e.jsxs(o.TableCell,{colSpan:p.descHidden?5:6,children:[e.jsx(o.Typography,{component:"span",variant:"body2",style:H.green,children:t}),` ${p.t("of")} `,e.jsx(o.Typography,{component:"span",variant:"body2",style:H.blue,children:p.count}),` ${p.t("Adapters from this Group installed")}`]})]})}const T={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"}},nt=[{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 Bt 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((r,n)=>t.rating[r].ts>t.rating[n].ts?-1:t.rating[r].ts<t.rating[n].ts?1:0);const i={};if(t.comments&&(t.comments.sort((r,n)=>r.ts>n.ts?-1:r.ts<n.ts?1:0),t.comments.forEach(r=>{i[r.lang]=i[r.lang]||0,i[r.lang]++})),s.length){const r=t.rating[s[0]];this.setState({votings:t,ratingNumber:r?r.r:0,commentsByLanguage:i})}else this.setState({votings:t,commentsByLanguage:i})})}setAdapterRating(t,s,i,r,n){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:r,lang:n})}).then(l=>l.json()).then(l=>(window.alert(`${this.props.t("Vote:")} ${t}@${s}=${i}`),delete l.adapter,l)).catch(l=>(window.alert(`Cannot vote: ${l}`),null))}renderInfoText(){return e.jsxs("div",{style:T.infoTextContainer,children:[e.jsx(u.Info,{}),e.jsx(o.Typography,{style:T.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:T.listTitle,children:this.props.t("Comments")}),e.jsxs(o.FormControl,{variant:"standard",style:T.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:T.commentCount,children:this.state.votings.comments.length})]}),nt.map(i=>e.jsxs(o.MenuItem,{value:i.id,children:[i.title," ",this.state.commentsByLanguage[i.id]?e.jsx("span",{style:T.commentCount,children:this.state.commentsByLanguage[i.id]}):null]},i.id))]})]}),e.jsxs(o.List,{style:T.list,dense:!0,disablePadding:!0,children:[s&&this.state.votings.comments.map((i,r)=>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?T.listOwn:void 0},dense:!0,children:[e.jsx(o.ListItemAvatar,{style:T.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":T.listTime}})]},r):null),!s&&e.jsx("div",{style:T.noComments,children:this.props.t("No comments in selected language")})]})]})}return null}render(){var i,r,n;let t,s;if(this.state.votings){const l=this.state.votings.rating;s=Object.keys(l),s.sort((c,h)=>l[c].ts>l[h].ts?-1:l[c].ts<l[h].ts?1:0),s.length&&(t=l[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:T.rating,name:this.props.adapter,value:this.props.version?this.state.ratingNumber:(n=(r=this.props.currentRating)==null?void 0:r.rating)==null?void 0:n.r,size:"large",readOnly:!this.props.version,onChange:(l,c)=>this.setState({ratingNumber:c})}),this.props.version?e.jsxs("div",{style:{width:"100%",textAlign:"left"},children:[e.jsx(o.TextField,{variant:"standard",style:T.ratingTextControl,value:this.state.ratingComment,label:this.props.t("Comment to version"),helperText:this.props.t("Max length %s characters",200),onChange:l=>this.setState({ratingComment:l.target.value}),slotProps:{input:{endAdornment:this.state.ratingComment?e.jsx(o.InputAdornment,{position:"end",children:e.jsx(o.IconButton,{size:"small",onClick:()=>this.setState({ratingComment:""}),children:e.jsx(u.Close,{})})}):null},htmlInput:{maxLength:200}}}),e.jsxs(o.FormControl,{variant:"standard",style:T.ratingLanguageControl,children:[e.jsx(o.InputLabel,{children:this.props.t("Language")}),e.jsx(o.Select,{variant:"standard",value:this.state.ratingLang,onChange:l=>this.setState({ratingLang:l.target.value}),children:nt.map(l=>e.jsx(o.MenuItem,{value:l.id,children:l.title},l.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(l=>this.props.onClose(l)):this.props.onClose()},startIcon:e.jsx(u.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(u.Close,{}),children:this.props.t("Close")})]})]})}}const at={closeButton:p=>({position:"absolute",right:8,top:8,color:p.palette.grey[500]}),typography:{paddingRight:30}};class $t 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":at.typography},children:[this.t("Please confirm"),e.jsx(o.IconButton,{size:"large",sx:at.closeButton,onClick:this.props.onClose,children:e.jsx(u.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(u.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(u.Close,{}),children:this.t("Close")})]})]})}}const ut={none:e.jsx(u.HorizontalRule,{}),patch:e.jsx(u.KeyboardDoubleArrowUp,{style:{color:"green"}}),minor:e.jsx(u.North,{style:{color:"orange"}}),major:e.jsx(u.VerticalAlignTop,{style:{color:"red"}})};class Wt extends Z.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(([,r])=>r).map(([r])=>r);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:w.t("Auto upgrade policy for %s",this.props.adapter)}),e.jsxs(o.DialogContent,{style:{padding:"0 20px",overflow:"hidden"},children:[e.jsx(O,{value:!this.state.supported,children:e.jsx(o.Typography,{children:w.t("This feature is supported up from js-controller Kiera (Version 6)!")})}),e.jsxs(O,{value:this.state.supported,children:[e.jsx(o.Typography,{children:w.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:jt.map(t=>e.jsx(o.MenuItem,{value:t,children:e.jsxs("div",{style:{display:"flex",gap:8},children:[ut[t],At[t]]})},t))}),e.jsx(O,{value:this.state.repositories.includes("beta")&&this.state.policy!=="none",children:e.jsx(Y,{type:"warning",children:w.t("repo_update_hint")})}),e.jsx(O,{value:this.state.policy==="major",children:e.jsx(Y,{type:"warning",children:w.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(u.Save,{}),onClick:()=>this.save(),children:w.t("Save")}),e.jsx(o.Button,{variant:"contained",onClick:()=>this.props.onClose(),color:"grey",startIcon:e.jsx(u.Close,{}),children:w.t("Close")})]})]})}}const gt={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:xt[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:ht[500]},cardContentFlexBetween:{},cardContentFlex:{}};class G extends _{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,...r}=t,n=s.backgroundImage.substring(5,s.backgroundImage.length-2);return e.jsx("img",{...r,alt:i,src:n,onError:l=>{l.target&&(l.target.onerror=null,l.target.src="./img/no-image.png")}})}renderAddInstanceButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterInstall:!0;return e.jsx(O,{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(u.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(u.KeyboardArrowUp,{}):ut[s]})})}renderReadmeButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterReadme:!0;return e.jsx(O,{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(u.Help,{})})})})}renderRating(){var i,r,n;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:((n=(r=this.props.context.repository[this.props.adapterName].rating)==null?void 0:r.rating)==null?void 0:n.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(u.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(u.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,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(u.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(u.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(u.Remove,{style:this.styles.classAssumption})}):null}):null}renderLicenseInfo(){var i,r,n,l;const t=this.props.context.repository[this.props.adapterName],s=Q(t);return(i=t.licenseInformation)!=null&&i.type?e.jsx(o.Link,{href:s,target:"_blank",rel:"noopener",sx:c=>({color:c.palette.mode==="dark"?"white":"black","&:hover":{color:c.palette.mode==="dark"?"white":"black"}}),children:((r=t.licenseInformation)==null?void 0:r.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(u.MonetizationOn,{})}):((n=t.licenseInformation)==null?void 0:n.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(u.MonetizationOn,{opacity:.5})}):((l=t.licenseInformation)==null?void 0:l.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(u.MonetizationOn,{opacity:.5})}):null}):null}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:It})})}):null}renderVersion(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterUpdate:!0;return!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(u.Refresh,{})}),this.props.context.repository[this.props.adapterName].version]})}):e.jsx("span",{style:this.props.cached.rightDependencies?void 0:this.styles.wrongDependencies,children:this.props.context.repository[this.props.adapterName].version})}renderInstalledVersion(t){var n,l;const s=this.props.context.installed[this.props.adapterName],i=(l=(n=this.props.context.adapters[`system.adapter.${this.props.adapterName}`])==null?void 0:n.common)==null?void 0:l.installedFrom,{adapterName:r}=this.props;if(t){const c=s==null?void 0:s.enabled,h=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:this.installedVersion+(h?` (${h}${h!==c?"~":""})`:"")}):null,i&&!i.startsWith(`iobroker.${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(u.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:[i&&!i.startsWith(`iobroker.${r}@`)&&e.jsx(o.Tooltip,{title:`${this.props.context.t("Non-NPM-Version")}: ${i}`,slotProps:{popper:{sx:this.styles.tooltip}},children:e.jsx(u.GitHub,{fontSize:"small",style:this.styles.versionWarn})}),this.installedVersion]})]}):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(u.Publish,{})})}):null}renderDeleteButton(){const t=this.props.context.repository[this.props.adapterName]?this.props.context.repository[this.props.adapterName].allowAdapterDelete:!0;return e.jsx(O,{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(u.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(u.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(u.Build,{})})})}renderAutoUpdateDialog(){return this.state.autoUpgradeDialogOpen?e.jsx(Wt,{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(kt,{adapter:this.props.adapterName,adapterObject:this.props.context.repository[this.props.adapterName],t:this.props.context.t,dependencies:_.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(r=>window.alert(`Cannot write object: ${r}`))):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
4
|
`).map(i=>i.trim().replace(/^\*+/,"").replace(/^-/,"").replace(/\*+$/,"").replace(/\r/g,"").trim()).filter(i=>i).map((i,r)=>e.jsxs("div",{style:{},children:[e.jsx("span",{children:"- "}),i]},r))}renderAdapterInstallVersion(){var r,n,l,c;if(!this.state.showInstallVersion)return null;let t,s;const i=this.props.context.repository._repoInfo;return i!=null&&i.stable?(t=(r=this.props.context.repository[this.props.adapterName])==null?void 0:r.version,s=(n=this.props.context.repository[this.props.adapterName])==null?void 0:n.latestVersion):(t=(l=this.props.context.repository[this.props.adapterName])==null?void 0:l.stable,s=(c=this.props.context.repository[this.props.adapterName])==null?void 0:c.version),e.jsx(Vt,{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,{size:"small",onClick:()=>this.setState({adapterInstallSpecificVersion:""}),children:e.jsx(u.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(u.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:R.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:G.formatNews(d)})]})},h))})]})})}renderSetRatingDialog(){return this.state.showSetRating?e.jsx(Bt,{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($t,{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(dt.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],r=[];return i&&(s!=null&&s.news)&&Object.keys(s.news).forEach(n=>{try{if(V.gt(n,i.version)||t){let l;typeof s.news[n]=="object"?l=this.props.noTranslation?s.news[n].en:s.news[n][this.props.context.lang]||s.news[n].en:l=s.news[n],r.push({version:n,news:l})}}catch{console.warn(`[ADAPTERS] Cannot compare "${n}" and "${i.version}" (${this.props.adapterName})`)}}),r}onUpload(){var r;const t=this.props.context.repository[this.props.adapterName],s=Q(t),i=((r=t.licenseInformation)==null?void 0:r.license)||t.license;i!=="MIT"?this.setState({showLicenseDialog:{url:s,upload:!0,adapterName:this.props.adapterName,licenseType:i},showDialog:!0}):_.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 Ft="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)",Pt="0 8px 17px 0 rgba(0, 0, 0, .2),0 6px 20px 0 rgba(0, 0, 0, .19)",Mt={...gt,type:{color:"tile"},root:p=>({position:"relative",m:"10px",width:300,minHeight:200,background:p.palette.background.default,boxShadow:Ft,display:"flex",flexDirection:"column",transition:"box-shadow 0.5s","&:hover":{boxShadow:Pt}}),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.png") 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:ht[500],marginRight:5},rating:{marginTop:20}};class Ht extends G{styles=Mt;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:R.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=>G.renderImage(i),src:this.props.cached.image||"img/no-image.png",image:this.props.cached.image||"img/no-image.png"}),e.jsx(o.Box,{component:"div",sx:R.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(u.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(O,{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:R.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={...gt,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 Et extends G{styles=_t;render(){var i,r;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:{marginLeft:5,width:24,height:24}}),this.renderDataSource()||e.jsx("div",{style:{width:24,height:24}}),this.renderSentryInfo()||e.jsx("div",{style:{width:24,height:24}}),this.renderLicenseInfo()]})}),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:((r=t==null?void 0:t.licenseInformation)==null?void 0:r.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 X=34*7+8,$={emptyBlock:50,name:300,connectionType:120,installed:120,available:120,update:40,license:80,install:X},J=Object.keys($).reduce((p,t)=>p+$[t],0),I={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% - ${J+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 Gt 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(Et,{context:s,adapterName:t,cached:i,commandRunning:this.state.commandRunning,noTranslation:this.state.noTranslation},`adapter-${t}`):null}getRows(t){var r;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 n=0;n<this.props.listOfVisibleAdapter.length;n++){const l=this.props.listOfVisibleAdapter[n];i.length>50&&!((r=this.props.context.installed[l])!=null&&r.version)||i.push(this.getRow(l,t))}if(s=i.length,s&&this.props.listOfVisibleAdapter.length>i.length){const n=this.props.listOfVisibleAdapter.length-i.length,l=n===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",n);i.push(e.jsx(o.TableRow,{children:e.jsx(o.TableCell,{colSpan:8,style:{fontSize:20,padding:20,textAlign:"center"},children:l})},"more"))}}else i=this.props.categories.map(n=>{if(!n.adapters.find(d=>this.props.listOfVisibleAdapter.includes(d)))return null;const c=n.name,h=this.props.categoriesExpanded[c];return s++,e.jsxs(L.Fragment,{children:[e.jsx(Nt,{categoryName:c,count:n.count,expanded:h,installedCount:n.installed,name:n.translation,descHidden:t.descHidden,onToggle:()=>this.props.toggleCategory(c),t:this.props.context.t},`category-${c}1`),h&&n.adapters.map(d=>{const a=this.getRow(d,t);return a&&s++,a})]},`category-${c} ${n.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(u.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(u.Update,{}),children:this.props.context.t("Remove filter for updatable adapters")}):null]});const s=[];for(let r=0;r<this.props.listOfVisibleAdapter.length;r++){const n=this.props.listOfVisibleAdapter[r],l=this.props.cachedAdapters[n];s.length>50&&!((i=this.props.context.installed[n])!=null&&i.version)||s.push(e.jsx(Ht,{context:t,adapterName:n,cached:l,commandRunning:this.state.commandRunning,noTranslation:this.state.noTranslation},`adapter-${n}`))}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(Y,{type:"warning",children:this.props.context.t('Active repo is "%s"',s)})}),e.jsx("div",{style:I.viewModeDiv,children:this.getTiles(i)})]})}renderTableView(t,s,i){return e.jsxs(Ct,{children:[t?null:e.jsx(o.Box,{sx:{marginX:2,marginTop:1,width:"calc(100% - 32px)"},children:e.jsx(Y,{type:"warning",children:this.props.context.t('Active repo is "%s"',s)})}),e.jsx(o.TableContainer,{style:{...I.container,...t?I.containerFullHeight:I.containerNotFullHeight},children:e.jsxs(o.Table,{stickyHeader:!0,size:"small",sx:I.table,children:[e.jsx(o.TableHead,{children:e.jsxs(o.TableRow,{children:[e.jsx(o.TableCell,{style:I.emptyBlock}),e.jsx(o.TableCell,{style:I.name,children:e.jsx(o.Typography,{children:this.props.context.t("Name")})}),!i.descHidden&&e.jsx(o.TableCell,{style:{...I.description,width:this.props.descWidth},children:e.jsx(o.Typography,{children:this.props.context.t("Description")})}),e.jsx(o.TableCell,{style:I.connectionType}),e.jsx(o.TableCell,{style:I.installed,children:e.jsx(o.Typography,{children:this.props.context.t("Installed")})}),e.jsx(o.TableCell,{style:I.available,children:e.jsx(o.Typography,{children:this.props.context.t("Available")})}),e.jsx(o.TableCell,{style:I.license,children:e.jsx(o.Typography,{children:this.props.context.t("License")})}),e.jsx(o.TableCell,{style:{...I.install,width:this.state.expertMode?X:X-34*2},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 r=JSON.stringify(t.categoriesExpanded);r!==s.categoriesExpanded&&(console.log("Render because of categoriesExpanded"),i=!0);const n=t.cachedAdapters?Object.keys(t.cachedAdapters).length:0;n!==s.cachedAdapters&&(console.log(`Render because of cachedAdapters ${n} <> ${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 l=JSON.stringify(t.listOfVisibleAdapter);return l!==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:r,cachedAdapters:n,update:t.update,sortByName:t.sortByName,sortPopularFirst:t.sortPopularFirst,sortRecentlyUpdated:t.sortRecentlyUpdated,listOfVisibleAdapter:l,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 zt 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=Z.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:r}=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:r,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:[w.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(r=>r.trim())),i&&!i.running&&i.success&&i.stdout?(i.stdout.push(""),i.stdout.push("---------------------------------------------------"),i.stdout.push(w.t("%s was successfully updated to %s","admin",this.props.version))):i!=null&&i.stdout&&(i.stdout.unshift(""),i.stdout.unshift("---------------------------------------------------"),i.stdout.unshift(w.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,r,n;return e.jsxs(o.Dialog,{onClose:(l,c)=>{c!=="escapeKeyDown"&&c!=="backdropClick"&&this.props.onClose()},open:!0,maxWidth:"lg",fullWidth:!0,children:[e.jsx(o.DialogTitle,{children:w.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(`
|