iobroker.eos-admin 7.9.39 → 7.9.41
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 -0
- package/adminWww/assets/Adapters-B5_jQ7DE.js +2 -2
- package/adminWww/assets/Instances-YdaGnS5a.js +1 -1
- package/adminWww/assets/Objects-DPan0bzw.js +1 -1
- package/adminWww/assets/index-D2ymscJA.js +1 -1
- package/adminWww/css/eos-branding.css +2 -0
- package/adminWww/index.html +5 -5
- package/adminWww/js/eos-branding.js +23 -15
- package/adminWww/js/eos-objects-state-tools.js +10 -5
- package/adminWww/js/eos-security-ui.js +33 -23
- package/build/lib/web.js +9 -1
- package/build/main.js +13 -2
- package/docs/NEXOWATT_EOS_BRANDING_DE.md +29 -29
- package/docs/NEXOWATT_EOS_UI_LOGO_LOGIN_V6_DE.md +9 -9
- package/docs/NEXOWATT_EOS_UI_PERFORMANCE_V5_DE.md +25 -25
- package/docs/NEXOWATT_EOS_UI_V12_HEADER_LOGO_NAV_CLEANUP_DE.md +16 -16
- package/docs/NEXOWATT_EOS_UI_V12_HEADER_NAV_LOGO_FIX_DE.md +16 -16
- package/docs/NEXOWATT_EOS_UI_V15_DE.md +8 -8
- package/docs/NEXOWATT_EOS_UI_V16_DE.md +9 -9
- package/docs/NEXOWATT_EOS_UI_V17_DE.md +24 -24
- package/docs/NEXOWATT_EOS_UI_V6_FIXES_DE.md +13 -13
- package/docs/NEXOWATT_EOS_UI_V6_LOGIN_LOGO_404_FIX_DE.md +9 -9
- package/docs/NEXOWATT_EOS_UI_V6_LOGO_LOGIN_FIX_DE.md +10 -10
- package/docs/NEXOWATT_EOS_UI_V7_RESTORE_LOGO_SCOPE_FIX_DE.md +18 -18
- package/io-package.json +930 -911
- package/package.json +143 -143
- package/tools/nexowatt-generate-eos-admin-repo-entry.cjs +1 -0
- package/tools/nexowatt-patch-repo.cjs +2 -1
- package/tools/nexowatt-validate-package.cjs +3 -0
|
@@ -584,7 +584,7 @@ body {
|
|
|
584
584
|
`);for(let r=0;r<o.length;r++)if(o[r].startsWith("# "))return o[r].substring(2).trim();return""}return i.title.toString()}static extractHeader(e){const t={};if(e.substring(0,3)==="---"){const M=e.substring(3).indexOf(`
|
|
585
585
|
---`);M!==-1&&(e.substring(3,M+3).replace(/\r/g,"").split(`
|
|
586
586
|
`).forEach(r=>{if(!r.trim())return;const n=r.indexOf(":");if(n!==-1){const c=r.substring(0,n).trim();let N=r.substring(n+1).trim();N=N.replace(/^['"]|['"]$/g,""),N==="true"?t[c]=!0:N==="false"?t[c]=!1:parseFloat(N).toString()===N?t[c]=parseFloat(N):t[c]=N}else t[r.trim()]=!0}),e=e.substring(M+7))}return{header:t,body:e}}static removeDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach(M=>e=e.replace(M,"")),e}static onCopy(e,t){Qs(t),e&&e.stopPropagation(),e&&e.preventDefault()}}function hie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function oo(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function ut(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))}function ao(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("g",{fill:"currentColor"},a.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),a.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),a.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),a.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))}function Aie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:e=>s.onClick&&s.onClick(e),width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v298H48z"}))}function mie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v298H48z"}),a.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))}function Oie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 512 512",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))}function kt(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 320 320",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),a.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))}function Eie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:e=>s.onClick&&s.onClick(e),viewBox:"0 0 24 24",width:s.width||(s.fontSize==="small"?16:20),height:s.height||s.width||(s.fontSize==="small"?16:20),className:s.className,style:s.style},a.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))}const wM={root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}};function pie(s){var e;return a.createElement(u.Paper,{elevation:Number.isNaN(s.elevation)?1:s.elevation,style:{...wM.root,...((e=s.styles)==null?void 0:e.root)||void 0,...s.overflow!=="visible"?wM.overflowHidden:void 0},onKeyDown:s.onKeyDown,tabIndex:s.tabIndex},a.createElement(u.Grid2,{container:!0,direction:"column",wrap:"nowrap",sx:wM.container},s.children))}const Ms={root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}},xie=a.forwardRef(function(e,t){return a.createElement(u.Grid2,{sx:{...Ms.root,...(e==null?void 0:e.style)||void 0,...e.overflow==="auto"?Ms.overflowAuto:void 0},ref:t},e.children)});function Sie(s){return a.createElement(u.Grid2,{container:!0,alignItems:"center"},s.children)}const gt=24,De=32,ro=s=>s==="dark"?"#62ff25":"#37c400",no=s=>s==="dark"?"#ee56ff":"#a204b4",_ie=s=>s==="dark"?"#fff46e":"#b89101",co=s=>"#ff6d69",No=s=>"#5773ff",fie=["0_userdata.0.","alias.0."],Fe={headerCellInput:{width:"calc(100% - 5px)",height:De,pt:0,"& .itemIcon":{verticalAlign:"middle",width:gt,height:gt,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:gt,height:gt,mr:"5px",display:"inline-block"}},selectNone:{opacity:.5},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:5,backgroundColor:"background.default"},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellIdTooltip:{fontSize:14}};function kie(s){return a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 436 436",style:s==null?void 0:s.style,width:"24",height:"24",className:"admin-button"},a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"m195.23077,24.30769c-36,3 -67,12 -96,26c-49,24 -82,61 -93,104l-3,11l-1,50c0,46 0,49 2,59l5,20c21,58 84,103 165,116c16,3 53,4 70,2c60,-6 111,-28 147,-64c21,-21 36,-49 40,-74a866,866 0 0 0 1,-104c-3,-18 -6,-28 -13,-43c-26,-52 -87,-90 -162,-101c-16,-2 -48,-3 -63,-2l1,0zm60,23c36,5 70,18 95,35c31,20 51,47 59,77c2,7 2,11 2,25c1,15 0,18 -2,26c-19,69 -104,117 -200,114c-47,-2 -90,-15 -124,-38c-31,-20 -51,-47 -59,-77c-3,-11 -4,-32 -2,-43c8,-42 41,-78 91,-101a260,260 0 0 1 140,-19l0,1zm-221,222c21,26 57,49 95,62c81,27 174,14 239,-32c14,-10 31,-27 41,-41c2,-2 2,-2 2,7c-1,23 -16,50 -38,72c-78,74 -233,74 -311,-1a121,121 0 0 1 -39,-76l0,-6l3,4l8,11z"}),a.createElement("path",{d:"m201.23077,47.30769c-40,3 -79,19 -104,44c-55,55 -38,133 37,171c52,26 122,24 172,-5c30,-17 51,-42 58,-71c3,-11 3,-34 0,-45c-6,-23 -21,-44 -40,-60l-27,-16a184,184 0 0 0 -96,-18zm30,21c56,5 100,35 112,75c4,11 4,30 0,41c-8,25 -26,45 -54,59a166,166 0 0 1 -160,-8a98,98 0 0 1 -41,-53c-5,-18 -2,-39 8,-57c23,-39 79,-62 135,-57z"})))}function is(s){s=(s||"").toString();const e=s[0]==="*",t=s[s.length-1]==="*";return s=s.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"),(e?"":"^")+s+(t?"":"$")}function Yie(s,e){const t=[];for(let M=0;M<s.length;M++)e(t,s[M],M);return t}function Qie(s,e){const t={};for(const M in s)Object.prototype.hasOwnProperty.call(s,M)&&e(t,s[M],M);return t}function YM(s,e,t){return Array.isArray(s)?Yie(s,(M,i,o)=>{if(i==null)return;const r=typeof i=="object";if(t&&r&&typeof i.en=="string"&&typeof i.de=="string"){M[o]=i.en;return}M[o]=r?YM(i,e,t):i}):Qie(s,(M,i,o)=>{if(i==null||e.includes(o))return;const r=typeof i=="object";if(t&&r&&typeof i.en=="string"&&typeof i.de=="string"){M[o]=i.en;return}M[o]=r?YM(i,e,t):i})}function ss(s,e,t){const M=document.createElement("a"),i=[];t.excludeSystemRepositories&&i.push("system.repositories");const o=i.length>0||t.excludeTranslations?YM(e,i,t.excludeTranslations):e,r=t.beautify?JSON.stringify(o,null,2):JSON.stringify(o);M.setAttribute("href",`data:application/json;charset=utf-8,${encodeURIComponent(r)}`),M.setAttribute("download",s),M.style.display="none",document.body.appendChild(M),M.click(),document.body.removeChild(M)}class Uie extends Q.Component{hasIcons;timer=null;constructor(e){var t;super(e),this.state={value:e.initialValue||[]},this.hasIcons=!!((t=e.values)!=null&&t.find(M=>M.icon))}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){var e;return a.createElement("div",{style:{position:"relative"}},a.createElement(u.Select,{variant:"standard",key:this.props.name,sx:Fe.headerCellInput,className:"no-underline",multiple:!0,renderValue:t=>t!=null&&t.length?t.map(M=>{const i=this.props.values.find(c=>typeof c=="object"?c.value===M:c===M);let o,r,n;return typeof i=="object"?(o=i.value,r=i.name,n=i.icon):(o=i,r=i),a.createElement(u.Box,{component:"span",sx:Fe.headerCellSelectItem,key:o},n||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),r)}):this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:t=>{let M=t.target.value;if(this.state.value[0]==="_"&&M.includes("_")&&M.length>1){const i=M.indexOf("_");i!==-1&&M.splice(i,1)}else this.state.value[0]!=="_"&&M.includes("_")&&(M=["_"]);M.includes("")&&(M=[]),this.setState({value:M},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,M)},400)})},onClose:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},inputProps:{name:this.props.name,id:this.props.name},displayEmpty:!0},a.createElement(u.MenuItem,{key:"empty",value:""},a.createElement("span",{style:Fe.selectNone},this.props.name==="custom"?this.props.texts.showAll:this.props.texts[`filter_${this.props.name}`])),(e=this.props.values)==null?void 0:e.map(t=>{let M,i,o;return typeof t=="object"?(M=t.value,i=t.name,o=t.icon):(M=t,i=t),a.createElement(u.MenuItem,{sx:Fe.headerCellSelectItem,key:M,value:M},o||(this.hasIcons?a.createElement("div",{className:"itemIcon"}):null),i)})),this.state.value.length?a.createElement(u.Box,{component:"div",sx:Fe.selectClearButton},a.createElement(u.IconButton,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:[]},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(I.Close,null))):null)}}class vie extends Q.Component{timer=null;constructor(e){super(e),this.state={value:e.initialValue||""}}componentWillUnmount(){this.timer&&clearTimeout(this.timer)}render(){return a.createElement(u.FormControl,{sx:this.props.styles,key:this.props.name,title:this.props.t("ra_You can use * as wildcard"),margin:"dense"},a.createElement(u.Input,{classes:{underline:"no-underline"},id:this.props.name,placeholder:this.props.texts[`filter_${this.props.name}`],value:this.state.value,onChange:e=>{const t=e.target.value;this.setState({value:t},()=>{this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=null,this.props.onChange(this.props.name,t)},400)})},onBlur:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null,this.props.onChange(this.props.name,this.state.value))},autoComplete:"off"}),this.state.value?a.createElement("div",{style:{position:"absolute",right:0}},a.createElement(u.IconButton,{size:"small",onClick:()=>{this.timer&&(clearTimeout(this.timer),this.timer=null),this.setState({value:""},()=>this.props.onChange(this.props.name,void 0))}},a.createElement(I.Close,null))):null)}}function bt(s,e,t,M){if(t||=0,M===void 0&&(M=s.length-1,!M))return s[0]===e;const i=Math.floor((t+M)/2);return e===s[i]?!0:M-1===t?s[t]===e||s[M]===e:e>s[i]?bt(s,e,i,M):e<s[i]?bt(s,e,t,i):!1}function Ie(s,e){return typeof s=="object"?s?(s[e]||s.en||"").toString():"":s?s.toString():""}function cM(s,e,t,M){var n,c,N;M||=".";let i="";const o=`system.adapter.${e}`,r=e&&((c=(n=s[o])==null?void 0:n.common)==null?void 0:c.icon);if(r)if(r.startsWith("data:image/"))r.startsWith("data:image/svg")?i=a.createElement(kM,{className:"iconOwn",src:r,width:28,height:28}):i=r;else if(r.includes(".")){const l=s[o].common.name;typeof l=="object"?i=`${M}/adapter/${l[t]||l.en}/${r}`:i=`${M}/adapter/${l}/${r}`}else return r&&r.length<3?r:null;else{const l=(N=s[e])==null?void 0:N.common;if(l){const L=l.icon;if(L)if(L.startsWith("data:image/"))L.startsWith("data:image/svg")?i=a.createElement(kM,{className:"iconOwn",src:L,width:28,height:28}):i=L;else if(L.includes(".")){let D;s[e].type==="instance"||s[e].type==="adapter"?typeof l.name=="object"?i=`${M}/adapter/${l.name[t]||l.name.en}/${L}`:i=`${M}/adapter/${l.name}/${L}`:e&&e.startsWith("system.adapter.")?(D=e.split(".",3),L[0]==="/"?D[2]+=L:D[2]+=`/${L}`,i=`${M}/adapter/${D[2]}`):(D=e.split(".",2),L[0]==="/"?D[0]+=L:D[0]+=`/${L}`,i=`${M}/adapter/${D[0]}`)}else return r&&r.length<3?r:null}}return i||null}function QM(s,e,t,M,i,o,r,n,c){var L,D,y,C,A,h,S,k,w,O,m,d,E,_,f,W,$,Z;c||=0;let N=!1;if(!i){if(i={},e.id){const U=e.id.toLowerCase();U.includes("*")?i.idRx=new RegExp(is(e.id),"i"):i.id=U}if(e.name){const U=e.name.toLowerCase();U.includes("*")?i.nameRx=new RegExp(is(U),"i"):i.name=U}(L=e.type)!=null&&L.length&&(i.type=e.type.map(U=>U.toLowerCase())),(D=e.custom)!=null&&D.length&&(i.custom=e.custom.map(U=>U.toLowerCase())),(y=e.role)!=null&&y.length&&(i.role=e.role.map(U=>U.toLowerCase())),(C=e.room)!=null&&C.length&&(i.room=[],e.room.forEach(U=>{var P,R;i.room=i.room.concat(((R=(P=M[U])==null?void 0:P.common)==null?void 0:R.members)||[])})),(A=e.func)!=null&&A.length&&(i.func=[],e.func.forEach(U=>{var P,R;i.func=i.func.concat(((R=(P=M[U])==null?void 0:P.common)==null?void 0:R.members)||[])}))}const l=s.data;if(l!=null&&l.id){const U=(h=l.obj)==null?void 0:h.common;if(r){if(r.type&&(typeof r.type=="string"?(!l.obj||r.type!==l.obj.type)&&(N=!0):Array.isArray(r.type)&&(!l.obj||!r.type.includes(l.obj.type))&&(N=!0)),!N&&((S=r.common)!=null&&S.type)&&(U!=null&&U.type?typeof r.common.type=="string"?r.common.type!==U.type&&(N=!0):Array.isArray(r.common.type)&&(r.common.type.includes(U.type)||(N=!0)):N=!0),!N&&((k=r.common)!=null&&k.role)&&(U!=null&&U.role?typeof r.common.role=="string"?U.role.startsWith(r.common.role)&&(N=!0):Array.isArray(r.common.role)&&(r.common.role.find(P=>U.role.startsWith(P))||(N=!0)):N=!0),!N&&((w=r.common)==null?void 0:w.custom)==="_"&&(U!=null&&U.custom))N=!0;else if(!N&&((O=r.common)!=null&&O.custom)&&((m=r.common)==null?void 0:m.custom)!=="_"){const P=r.common.custom;if(!(U!=null&&U.custom))N=!0;else if(P==="_dataSources")Object.keys(U.custom).find(R=>R.startsWith("history.")||R.startsWith("sql.")||R.startsWith("influxdb."))||(N=!0);else if(Array.isArray(P)){const R=Object.keys(U.custom);P.find(ae=>R.find(Ce=>Ce.startsWith(ae)))&&(N=!0)}else P!==!0&&!Object.keys(U.custom).find(R=>R.startsWith(P))&&(N=!0)}}!N&&!e.expertMode&&(N=l.id==="system"||l.id==="enum"||l.id.startsWith("system.")||l.id.startsWith("enum.")||l.id.startsWith("_design/")||l.id.endsWith(".admin")||!!(U!=null&&U.expert)),!N&&i.id&&(l.fID===void 0&&(l.fID=l.id.toLowerCase()),N=!l.fID.includes(i.id)),!N&&i.idRx&&(N=!i.idRx.test(l.id)),!N&&i.name&&(U?(l.fName===void 0&&(l.fName=Ie(U.name,t)||"",l.fName=l.fName.toLowerCase()),N=!l.fName.includes(i.name)):N=!0),!N&&i.nameRx&&U&&(l.fName===void 0&&(l.fName=Ie(U.name,t)||"",l.fName=l.fName.toLowerCase()),N=!i.nameRx.test(l.fName)),!N&&((d=e.role)!=null&&d.length)&&U&&(N=!(typeof U.role=="string"&&i.role.find(P=>U.role.startsWith(P)))),!N&&((E=i.room)!=null&&E.length)&&(N=!i.room.find(P=>P===l.id||l.id.startsWith(`${P}.`))),!N&&((_=i.func)!=null&&_.length)&&(N=!i.func.find(P=>P===l.id||l.id.startsWith(`${P}.`))),!N&&((f=i.type)!=null&&f.length)&&(N=!((W=l.obj)!=null&&W.type&&i.type.includes(l.obj.type))),!N&&n&&(N=!(($=l.obj)!=null&&$.type&&n.includes(l.obj.type))),!N&&((Z=i.custom)!=null&&Z.length)&&(U?i.custom[0]==="_"?N=!!U.custom:U.custom?N=!i.custom.find(P=>U.custom[P]):N=!0:N=i.custom[0]!=="_")}return l.visible=!N,l.hasVisibleChildren=!1,s.children&&c<20&&s.children.forEach(U=>{QM(U,e,t,M,i,o,r,n,c+1)&&(l.hasVisibleChildren=!0)}),l.sumVisibility=l.visible||l.hasVisibleChildren,o&&l.sumVisibility&&o.count++,l.id&&l.sumVisibility&&s.children&&s.children.forEach(U=>U.data.hasVisibleParent=!0),l.visible||l.hasVisibleChildren}function uo(s,e,t,M){var o;M||=[];const i=s.data;return i.sumVisibility&&(i.id&&t[i.id]&&t[i.id].type===e&&M.push(i.id),(o=s.children)==null||o.forEach(r=>uo(r,e,t,M))),M}function os(s,e,t,M,i,o){let r;return e==="alias"||e==="alias.0"?r=a.createElement(I.Link,{className:"iconOwn",style:{color:no(M)}}):e==="0_userdata"||e==="0_userdata.0"?r=a.createElement(I.DataObject,{className:"iconOwn",style:{color:ro(M)}}):e.startsWith("_design/")||e==="system"?r=a.createElement(I.SettingsApplications,{className:"iconOwn",style:{color:co(M)}}):e==="system.adapter"?r=a.createElement(I.SettingsApplications,{className:"iconOwn",style:{color:No(M)}}):e==="system.group"?r=a.createElement(I.SupervisedUserCircle,{className:"iconOwn"}):e==="system.user"?r=a.createElement(I.PersonOutlined,{className:"iconOwn"}):e==="system.host"?r=a.createElement(I.Router,{className:"iconOwn"}):e.endsWith(".connection")||e.endsWith(".connected")?r=a.createElement(I.Wifi,{className:"iconOwn"}):e.endsWith(".info")?r=a.createElement(I.Info,{className:"iconOwn"}):s[e]&&s[e].type==="meta"?r=a.createElement(I.Description,{className:"iconOwn"}):t<2&&s[`system.adapter.${e}`]&&(r=cM(s,`system.adapter.${e}`,i,o)),r||null}function lo(s,e){var t,M;return(M=(t=s==null?void 0:s.obj)==null?void 0:t.common)!=null&&M.desc&&Ie(s.obj.common.desc,e)||null}function bie(s,e){const t=lo(s,e);return t!=null&&t.startsWith("http")?a.createElement(u.Box,{component:"a",sx:Fe.cellIdTooltipLink,href:t,target:"_blank",rel:"noreferrer"},t):a.createElement("span",{style:Fe.cellIdTooltip},t||s.id||"")}function as(s,e){var l,L,D,y,C,A,h,S,k,w;const t=e.imagePrefix||".";let M=Object.keys(s);M.sort((O,m)=>O===m?0:(O=O.replace(/\./g,"!!!"),m=m.replace(/\./g,"!!!"),O>m?1:-1)),e.root&&(M=M.filter(O=>O===e.root||O.startsWith(`${e.root}.`)));let i=[],o="",r=0;const n={data:{name:"",id:""},children:[]},c={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:s,customs:["_"],enums:[],hasSomeCustoms:!1,aliasesMap:{}};let N=n;for(let O=0;O<M.length;O++){const m=M[O];if(!m)continue;const d=s[m],E=m.split(".");if(d.type&&!c.types.includes(d.type)&&c.types.push(d.type),d){const f=d.common,W=f==null?void 0:f.role;if(W&&!c.roles.find($=>$.role===W)?typeof W!="string"?console.warn(`Invalid role type "${typeof W}" in "${d._id}"`):c.roles.push({role:W,type:f.type}):m.startsWith("enum.rooms.")?(c.roomEnums.push(m),c.enums.push(m)):m.startsWith("enum.functions.")?(c.funcEnums.push(m),c.enums.push(m)):d.type==="enum"?c.enums.push(m):d.type==="instance"&&f&&(f.supportCustoms||(l=f.adminUI)!=null&&l.custom)&&(c.hasSomeCustoms=!0,c.customs.push(m.substring(15))),m.startsWith("alias.")&&((L=d.common.alias)!=null&&L.id))if(typeof d.common.alias.id=="string"){const $=d.common.alias.id;c.aliasesMap[$]?c.aliasesMap[$].includes(m)||c.aliasesMap[$].push(m):c.aliasesMap[$]=[m]}else{const $=d.common.alias.id.read;$&&(c.aliasesMap[$]?c.aliasesMap[$].includes(m)||c.aliasesMap[$].push(m):c.aliasesMap[$]=[m]);const Z=d.common.alias.id.write;Z&&(c.aliasesMap[Z]?c.aliasesMap[Z].includes(m)||c.aliasesMap[Z].push(m):c.aliasesMap[Z]=[m])}}c.ids.push(m);let _;do if(_=!1,!o||m.startsWith(`${o}.`)){if(E.length-r>1){let W=o;for(let $=r;$<E.length-1;$++)if(W+=(W?".":"")+E[$],bt(c.ids,W))N.children&&(N=N.children.find(Z=>Z.data.name===E[$]));else{const Z={data:{name:E[$],parent:N,id:W,obj:s[W],level:$,icon:os(s,W,$,e.themeType,e.lang,t),generated:!0}};N.children||=[],N.children.push(Z),N=Z,c.ids.push(W)}}const f={data:{name:E[E.length-1],title:Ie((D=d==null?void 0:d.common)==null?void 0:D.name,e.lang),obj:d,parent:N,icon:cM(s,m,e.lang,t)||os(s,m,0,e.themeType,e.lang,t),id:m,hasCustoms:!!((y=d.common)!=null&&y.custom&&Object.keys(d.common.custom).length),level:E.length-1,generated:!1,button:d.type==="state"&&!!((C=d.common)!=null&&C.role)&&typeof d.common.role=="string"&&d.common.role.startsWith("button")&&((A=d.common)==null?void 0:A.write)!==!1,switch:d.type==="state"&&((h=d.common)==null?void 0:h.type)==="boolean"&&((S=d.common)==null?void 0:S.write)!==!1&&((k=d.common)==null?void 0:k.read)!==!1,url:!!((w=d.common)!=null&&w.role)&&typeof d.common.role=="string"&&d.common.role.startsWith("url")}};N.children||=[],N.children.push(f),N=f,r=E.length,i=E,o=m}else{let f=0;for(;i[f]===E[f];)f++;if(f>0){let W=i.length;for(i=i.splice(0,f),r=f,o=i.join(".");W>f;)N.data.parent?N=N.data.parent:console.error(`Parent is null for ${m} ${o} ${i.join(".")}`),W--}else N=n,i=[],o="",r=0;_=!0}while(_)}return c.roomEnums.sort((O,m)=>{var _,f,W,$;const d=Ie((f=(_=s[O])==null?void 0:_.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),E=Ie(($=(W=s[m])==null?void 0:W.common)==null?void 0:$.name,e.lang)||m.split(".").pop();return d>E?1:d<E?-1:0}),c.funcEnums.sort((O,m)=>{var _,f,W,$;const d=Ie((f=(_=s[O])==null?void 0:_.common)==null?void 0:f.name,e.lang)||O.split(".").pop(),E=Ie(($=(W=s[m])==null?void 0:W.common)==null?void 0:$.name,e.lang)||m.split(".").pop();return d>E?1:d<E?-1:0}),c.roles.sort((O,m)=>O.role.localeCompare(m.role)),c.types.sort(),{info:c,root:n}}function Lo(s,e,t,M,i){if(s.data.id===e)return s;if(t||(t=e.split("."),i=0,M=t[i]),!s.children&&s.data.id!==e)return null;let o;if(s.children)for(let r=0;r<s.children.length;r++){const n=s.children[r].data.id;if(n===M){o=s.children[r];break}else if(n>M)break}return o?(i||=0,Lo(o,e,t,`${M}.${t[i+1]}`,i+1)):null}function jo(s,e,t,M){var r,n;if(!e)return{rooms:[],per:!1};M||=[];for(const c of s.roomEnums){const N=(r=s.objects[c])==null?void 0:r.common;if(!N)continue;const l=Ie(N.name,t);(n=N.members)!=null&&n.includes(e)&&!M.includes(l)&&M.push(l)}let i;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(i=M.length,jo(s,e,t,M)),{rooms:M,per:!i}}function lt(s,e,t,M){var i,o;if(!e)return[];M||=[];for(let r=0;r<s[t].length;r++){const n=(i=s.objects[s[t][r]])==null?void 0:i.common;(o=n==null?void 0:n.members)!=null&&o.includes(e)&&!M.includes(s[t][r])&&M.push(s[t][r])}return M.sort(),M}function Do(s,e,t,M){var r,n;if(!e)return{funcs:[],pef:!1};M||=[];for(let c=0;c<s.funcEnums.length;c++){const N=(r=s.objects[s.funcEnums[c]])==null?void 0:r.common;if(!N)continue;const l=Ie(N.name,t);(n=N.members)!=null&&n.includes(e)&&!M.includes(l)&&M.push(l)}let i;const o=e.split(".");return o.pop(),e=o.join("."),s.objects[e]&&(i=M.length,Do(s,e,t,M)),{funcs:M,pef:!i}}function hM(s){var y;const{dateFormat:e,state:t,isFloatComma:M,texts:i,obj:o}=s,r=p.getStates(o),n=o.common;let c,N=(n==null?void 0:n.type)==="file"?"[file]":!t||t.val===null?"(null)":t.val===void 0?"[undef]":t.val;const l=typeof N;if(n!=null&&n.role&&typeof n.role=="string"&&n.role.match(/^value\.time|^date/))if(N&&typeof N=="string")if(p.isStringInteger(N))N=new Date(parseInt(N,10)).toString();else try{const C=new Date(N);p.isValidDate(C)&&(N=C.toString())}catch{}else N>946681200&&N<9466812e5&&(N*=1e3),N=N&&new Date(N).toString();else if(n!=null&&n.role&&typeof n.role=="string"&&n.role.match(/^value\.duration/)){if(typeof N=="number"&&N>=0){const C=Math.floor(N/3600),A=Math.floor(N%3600/60),h=Math.floor(N%60);N=`${C.toString().padStart(2,"0")}:${A.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}`}else if(typeof N=="string"&&p.isStringInteger(N)){const C=parseInt(N,10);if(C>=0){const A=Math.floor(C/3600),h=Math.floor(C%3600/60),S=Math.floor(C%60);N=`${A.toString().padStart(2,"0")}:${h.toString().padStart(2,"0")}:${S.toString().padStart(2,"0")}`}}}else l==="number"?Number.isInteger(N)||(N=Math.round(N*1e8)/1e8,M&&(N=N.toString().replace(".",","))):l==="object"?N=JSON.stringify(N):l!=="string"?N=N.toString():N.startsWith("data:image/")&&(c="image"),typeof N!="string"&&(N=N.toString());const L={v:N};r&&r[N]!==void 0&&N!==r[N]&&(L.s=N,N=r[N],L.v=N),((y=L.v)==null?void 0:y.length)>40&&(L.c=L.v,L.v=`${L.v.substring(0,40)}...`),n!=null&&n.unit&&(L.u=n.unit);let D;if(s.full&&(typeof N=="string"&&N.length>100?D=[{t:i.value,v:`${N.substring(0,100)}...`}]:D=[{t:i.value,v:N}],t)){if(t.ack!==void 0&&t.ack!==null&&D.push({t:i.ack,v:t.ack.toString()}),t.ts&&D.push({t:i.ts,v:t.ts?p.formatDate(new Date(t.ts),e):""}),t.lc&&D.push({t:i.lc,v:t.lc?p.formatDate(new Date(t.lc),e):""}),t.from){let C=t.from.toString();C.startsWith("system.adapter.")&&(C=C.substring(15)),D.push({t:i.from,v:C})}if(t.user){let C=t.user.toString();C.startsWith("system.user.")&&(C=C.substring(12)),D.push({t:i.user,v:C})}t.c&&D.push({t:i.c,v:t.c}),D.push({t:i.quality,v:p.quality2text(t.q||0).join(", "),nbr:!0})}return{valText:L,valFull:D,fileViewer:c}}function $ie(s){const{state:e}=s;return{color:e!=null&&e.ack?e.q?"#ffa500":"":s.nonAckColor||"#ff2222c9"}}function Pie(s,e){let t=e,M=1;const i=[];for(;M<s.length&&t<e+25*36e5;){for(;s[M-1].ts<t&&t<=s[M].ts&&M<s.length;)M++;if(M===1&&s[M-1].ts>=t)i.push(0);else if(M<s.length)if(typeof s[M].val=="boolean"||typeof s[M-1].val=="boolean")i.push(s[M].val?1:0);else{s[M-1].val||=0,s[M].val||=0;const o=s[M-1].val,r=s[M].val,n=o+(r-o)*(t-s[M-1].ts)/(s[M].ts-s[M-1].ts);i.push(n)}t+=36e5}return i}function rs(s,e){var t;if((t=s==null?void 0:s._id)!=null&&t.startsWith(`${e.adapter}.`)&&e.path.length>1){const M=e.path;let i;const o=s;if(o[M[0]]&&typeof o[M[0]]=="object")return M.length===2?i=o[M[0]][M[1]]:M.length===3?i=o[M[0]][M[1]]&&typeof o[M[0]][M[1]]=="object"?o[M[0]][M[1]][M[2]]:null:M.length===4?i=o[M[0]][M[1]]&&typeof o[M[0]][M[1]]=="object"&&o[M[0]][M[1]][M[2]]?o[M[0]][M[1]][M[2]][M[3]]:null:M.length===5?i=o[M[0]][M[1]]&&typeof o[M[0]][M[1]]=="object"&&o[M[0]][M[1]][M[2]]&&o[M[0]][M[1]][M[2]][M[3]]?o[M[0]][M[1]][M[2]][M[3]][M[4]]:null:M.length===6&&(i=o[M[0]][M[1]]&&typeof o[M[0]][M[1]]=="object"&&o[M[0]][M[1]][M[2]]&&o[M[0]][M[1]][M[2]][M[3]]&&o[M[0]][M[1]][M[2]][M[3]][M[4]]?o[M[0]][M[1]][M[2]][M[3]][M[4]][M[5]]:null),i??null}return null}function Jie(s,e,t){var M;if((M=s==null?void 0:s._id)!=null&&M.startsWith(`${e.adapter}.`)&&e.path.length>1){const i=e.path,o=s;if(o[i[0]]&&typeof o[i[0]]=="object"){if(i.length===2)return o[i[0]][i[1]]=t,!0;if(i.length===3){if(o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object")return o[i[0]][i[1]][i[2]]=t,!0}else if(i.length===4){if(o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&typeof o[i[0]][i[1]][i[2]]=="object")return o[i[0]][i[1]][i[2]][i[3]]=t,!0}else if(i.length===5){if(o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&typeof o[i[0]][i[1]][i[2]]=="object"&&o[i[0]][i[1]][i[2]][i[3]]&&typeof o[i[0]][i[1]][i[2]][i[3]]=="object")return o[i[0]][i[1]][i[2]][i[3]][i[4]]=t,!0}else if(i.length===6&&o[i[0]][i[1]]&&typeof o[i[0]][i[1]]=="object"&&o[i[0]][i[1]][i[2]]&&typeof o[i[0]][i[1]][i[2]]=="object"&&o[i[0]][i[1]][i[2]][i[3]]&&typeof o[i[0]][i[1]][i[2]][i[3]]=="object"&&o[i[0]][i[1]][i[2]][i[3]][i[4]]&&typeof o[i[0]][i[1]][i[2]][i[3]][i[4]]=="object")return o[i[0]][i[1]][i[2]][i[3]][i[4]][i[5]]=t,!0}}return!1}function ns(s){return!!fie.find(e=>s.startsWith(e))}const Wie=16,se=20,To="#ff413c",go="#86211f",UM="#57ff45",vM="#098c04",bM="#f3ad11",$M="#6c5008",z={toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:16},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:8},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},headerRow:{paddingLeft:8,height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - 8px)",height:"calc(100% - 38px)",overflow:"auto"},tableRow:s=>({pl:1,height:De,lineHeight:`${De}px`,verticalAlign:"top",userSelect:"none",position:"relative",width:"100%","&:hover":{background:`${s.palette.mode==="dark"?s.palette.primary.dark:s.palette.primary.light} !important`,color:p.invertColor(s.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"}),tableRowLines:s=>({borderBottom:`1px solid ${s.palette.mode==="dark","#8888882e"}`,"& > div":{borderRight:`1px solid ${s.palette.mode==="dark","#8888882e"}`}}),tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:De+10},tableRowAliasReadWrite:{height:De+22},tableRowFocused:s=>({"&:after":{content:'""',position:"absolute",top:1,left:1,right:1,bottom:1,border:s.palette.mode?"1px dotted #000":"1px dotted #FFF"}}),checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:De-4,height:De-4,mt:"2px",float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:s=>({marginRight:8,width:De-4,height:De-4,cursor:"pointer",color:s.palette.secondary.main||"#fbff7d",verticalAlign:"top"}),cellIdIconDocument:{verticalAlign:"middle",marginLeft:(De-se)/2,marginRight:8,width:se,height:se},cellIdIconOwn:{},cellCopyButton:{width:se,height:se,top:(De-se)/2,opacity:.8,position:"absolute",right:3},cellCopyButtonInDetails:{width:se,height:se,top:(De-se)/2,opacity:.8},cellEditButton:{width:se,height:se,color:"white",position:"absolute",top:(De-se)/2,right:se+3,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,ml:"5px",overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:s=>({fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:s.palette.mode==="dark"?"#009900":"#007700"}}),cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:gt,height:gt,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:De,fontSize:16,display:"flex",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipImage:{width:100,height:"auto"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:4,opacity:.8,display:"inline-block"},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.5,width:se+4,height:se+4,"&:hover":{opacity:1},p:0,mt:"-2px"},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:40},cellButtonsButtonAlone:{ml:`${se+6}px`,pt:0,mt:"-2px"},cellButtonsButtonWithCustoms:s=>({color:s.palette.mode==="dark"?s.palette.primary.main:s.palette.secondary.main}),cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:s=>({position:"absolute",top:se/2-2,opacity:.7,width:se-2,height:se-2,color:s.palette.action.active,"&:hover":{opacity:1}}),cellButtonsValueButtonCopy:{right:8,cursor:"pointer"},cellButtonsValueButtonEdit:{right:se/2+16},cellDetailsLine:{display:"flex",alignItems:"center",width:"100%",height:32,fontSize:16},cellDetailsName:{fontWeight:"bold",marginRight:8,minWidth:80},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{mt:0,mb:0},selectIcon:{width:24,height:24,marginRight:4},itemSelected:s=>({background:`${s.palette.primary.main} !important`,color:`${p.invertColor(s.palette.primary.main,!0)} !important`}),header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:8,width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13,marginTop:6},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},fontSizeTitle:{"@media screen and (max-width: 465px)":{"& *":{fontSize:12}}},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},iconDeviceConnected:s=>({color:s.palette.mode==="dark"?UM:vM,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceDisconnected:s=>({color:s.palette.mode==="dark"?bM:$M,opacity:.8,position:"absolute",top:4,right:32,width:20}),iconDeviceError:s=>({color:s.palette.mode==="dark"?To:go,opacity:.8,position:"absolute",top:4,right:50,width:20}),resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"}),invertedBackgroundFlex:s=>({backgroundColor:s.palette.mode==="dark"?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"}),contextMenuEdit:s=>({color:s.palette.mode==="dark"?"#ffee48":"#cbb801"}),contextMenuEditValue:s=>({color:s.palette.mode==="dark"?"#5dff45":"#1cd301"}),contextMenuView:s=>({color:s.palette.mode==="dark"?"#FFF":"#000"}),contextMenuCustom:s=>({color:s.palette.mode==="dark"?"#42eaff":"#01bbc2"}),contextMenuACL:s=>({color:s.palette.mode==="dark"?"#e079ff":"#500070"}),contextMenuRoom:s=>({color:s.palette.mode==="dark"?"#ff9a33":"#642a00"}),contextMenuRole:s=>({color:s.palette.mode==="dark"?"#ffdb43":"#562d00"}),contextMenuDelete:s=>({color:s.palette.mode==="dark"?"#ff4f4f":"#cf0000"}),contextMenuKeys:{marginLeft:8,opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"},...Fe},cs={state:a.createElement(kt,{className:"itemIcon",style:{verticalAlign:"middle"}}),channel:a.createElement(oo,{className:"itemIcon",style:{verticalAlign:"middle"}}),device:a.createElement(ao,{className:"itemIcon",style:{verticalAlign:"middle"}}),adapter:a.createElement(hie,{className:"itemIcon",style:{verticalAlign:"middle"}}),meta:a.createElement(I.Description,{className:"itemIcon",style:{verticalAlign:"middle"}}),instance:a.createElement(Oie,{className:"itemIcon",style:{color:"#7da7ff",verticalAlign:"middle"}}),enum:a.createElement(I.ListAlt,{className:"itemIcon",style:{verticalAlign:"middle"}}),chart:a.createElement(I.ShowChart,{className:"itemIcon",style:{verticalAlign:"middle"}}),config:a.createElement(I.Settings,{className:"itemIcon",style:{verticalAlign:"middle"}}),group:a.createElement(I.SupervisedUserCircle,{className:"itemIcon",style:{verticalAlign:"middle"}}),user:a.createElement(I.PersonOutlined,{className:"itemIcon",style:{verticalAlign:"middle"}}),host:a.createElement(I.Router,{className:"itemIcon",style:{verticalAlign:"middle"}}),schedule:a.createElement(I.CalendarToday,{className:"itemIcon",style:{verticalAlign:"middle"}}),script:a.createElement(I.Code,{className:"itemIcon",style:{verticalAlign:"middle"}}),folder:a.createElement(zt,{className:"itemIcon itemIconFolder",style:{verticalAlign:"middle"}})},ie={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let Ns=!1;const Lt={id:"",name:"",room:[],func:[],role:[],type:[],custom:[],expertMode:!1};class st extends Q.Component{info={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:{},customs:[],enums:[],hasSomeCustoms:!1,aliasesMap:{}};localStorage=window._localStorage||window.localStorage;tableRef;pausedSubscribes=!1;selectFirst;lastNav=null;applyingNav=!1;root=null;states={};subscribes=[];unsubscribeTimer=null;statesUpdateTimer=null;objectsUpdateTimer=null;visibleCols;texts;possibleCols;imagePrefix;adapterColumns=[];styleTheme="";edit={id:"",val:"",q:0,ack:!1};levelPadding;customWidth=!1;resizeTimeout=null;resizerNextName=null;resizerActiveName=null;resizerCurrentWidths={};resizeLeft=!1;resizerOldWidth=0;resizerMin=0;resizerNextMin=0;resizerOldWidthNext=0;resizerPosition=0;resizerActiveDiv=null;resizerNextDiv=null;storedWidths=null;systemConfig;objects;defaultHistory="";ctrlPressed=!1;columnsVisibility={};changedIds=null;contextMenu=null;recordStates=[];styles={};expertMode=!1;customColumnDialog=null;constructor(e){super(e);const t=this.localStorage.getItem(`${e.dialogName||"App"}.objectSelected`)||"";if(this.selectFirst="",this.expertMode=!!this.props.expertMode,t.startsWith("["))try{const h=JSON.parse(t);this.selectFirst=h[0]||""}catch{}else this.selectFirst=t;let M;const i=this.localStorage.getItem(`${e.dialogName||"App"}.objectExpanded`)||"[]";try{M=JSON.parse(i)}catch{M=[]}let o;const r=e.defaultFilters?"":this.localStorage.getItem(`${e.dialogName||"App"}.objectFilter`)||"";if(r)try{o=JSON.parse(r)}catch{o={...Lt}}else e.defaultFilters&&typeof e.defaultFilters=="object"?o={...e.defaultFilters}:o={...Lt};if(typeof o.room=="string"&&o.room&&(o.room=[o.room].filter(h=>h),o.room.length||delete o.room),typeof o.func=="string"&&o.func&&(o.func=[o.func].filter(h=>h),o.func.length||delete o.func),typeof o.role=="string"&&o.role&&(o.role=[o.role].filter(h=>h),o.role.length||delete o.role),typeof o.type=="string"&&(o.type=[o.type].filter(h=>h),o.type.length||delete o.type),typeof o.custom=="string"&&(o.custom=[o.custom].filter(h=>h),o.custom.length||delete o.custom),o.expertMode=e.expertMode!==void 0?e.expertMode:(window._sessionStorage||window.sessionStorage).getItem("App.expertMode")==="true",this.tableRef=Q.createRef(),this.visibleCols=e.columns||ie[e.width||"lg"].fields,e.types&&e.types.length===1){const h=this.visibleCols.indexOf("type");h!==-1&&this.visibleCols.splice(h,1)}this.possibleCols=ie.xl.fields;let n=null;if(e.router){const h=e.router.getLocation();h.id&&h.dialog==="customs"&&(n=[h.id],this.pauseSubscribe(!0))}let c;Array.isArray(e.selected)?c=e.selected:c=[e.selected||""],c=c.map(h=>h.replace(/["']/g,"")).filter(h=>h),this.selectFirst=c.length&&c[0]?c[0]:this.selectFirst;const N=this.localStorage.getItem(`${e.dialogName||"App"}.columns`);let l;try{l=N?JSON.parse(N):null}catch{l=null}let L=null;try{L=L?JSON.parse(L):{}}catch{L={}}this.imagePrefix=e.imagePrefix||".";let D;const y=this.localStorage.getItem(`${e.dialogName||"App"}.foldersFirst`);y==="false"?D=!1:y==="true"?D=!0:D=e.foldersFirst===void 0?!0:e.foldersFirst;let C=!1;try{C=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem(`${e.dialogName||"App"}.objectStatesView`)||"")||!1}catch{}this.state={aliasMenu:"",beautifyJsonExport:!0,columns:l,columnsAuto:this.localStorage.getItem(`${e.dialogName||"App"}.columnsAuto`)!=="false",columnsDialogTransparent:100,columnsEditCustomDialog:null,columnsForAdmin:null,columnsSelectorShow:!1,columnsWidths:L,customColumnDialogValueChanged:!1,customDialog:n,depth:0,editObjectAlias:!1,editObjectDialog:"",enumDialog:null,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1,expandAllVisible:!1,expanded:M,filter:o,filterKey:0,focused:this.localStorage.getItem(`${e.dialogName||"App"}.focused`)||"",foldersFirst:D,linesEnabled:this.localStorage.getItem(`${e.dialogName||"App"}.lines`)==="true",loaded:!1,noStatesByExportImport:!1,roleDialog:null,scrollBarWidth:16,selected:c,selectedNonObject:this.localStorage.getItem(`${e.dialogName||"App"}.selectedNonObject`)||"",showAliasEditor:"",showAllExportOptions:!1,showContextMenu:null,showDescription:this.localStorage.getItem(`${e.dialogName||"App"}.desc`)!=="false",showExportDialog:!1,showImportDialog:!1,showImportMenu:null,showRenameDialog:null,statesView:C,toast:"",tooltipInfo:null,viewFileDialog:""},this.texts={name:e.t("ra_Name"),categories:e.t("ra_Categories"),value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),ctrlForLink:e.t("ra_tooltip_ctrlForLink"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),showAll:e.t("ra_show_all"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||Wie;const A=this.localStorage.getItem(`${this.props.dialogName||"App"}.table`);if(A)try{const h=JSON.parse(A),S=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(ie[S])),Object.keys(h).forEach(k=>{k==="id"?ie[S].idWidth=h.id:k==="nameHeader"?ie[S].widths.name=h[k]:ie[S].widths[k]!==void 0&&(ie[S].widths[k]=h[k])}),this.customWidth=!0}catch{}this.calculateColumnsVisibility()}async loadAllObjects(e){var M;const t=this.props;try{await new Promise(N=>{this.setState({updating:!0},()=>N())});const i=(t.objectsWorker?await t.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&ks.isWeb())for(let N=0;N<t.types.length;N++){if(t.types[N]==="state"||t.types[N]==="channel"||t.types[N]==="device"||t.types[N]==="enum")continue;const l=await t.socket.getObjectViewSystem(t.types[N]);Object.assign(i||{},l)}if(this.systemConfig=this.systemConfig||(i==null?void 0:i["system.config"])||await t.socket.getObject("system.config"),this.systemConfig.common=this.systemConfig.common||{},this.systemConfig.common.defaultNewAcl=this.systemConfig.common.defaultNewAcl||{object:0,state:0,file:0,owner:"system.user.admin",ownerGroup:"system.group.administrator"},this.systemConfig.common.defaultNewAcl.owner=this.systemConfig.common.defaultNewAcl.owner||"system.user.admin",this.systemConfig.common.defaultNewAcl.ownerGroup=this.systemConfig.common.defaultNewAcl.ownerGroup||"system.group.administrator",typeof this.systemConfig.common.defaultNewAcl.state!="number"&&(this.systemConfig.common.defaultNewAcl.state=1636),typeof this.systemConfig.common.defaultNewAcl.object!="number"&&(this.systemConfig.common.defaultNewAcl.state=1636),typeof t.filterFunc=="function"){this.objects={};const N=t.filterFunc;Object.keys(i).forEach(l=>{try{if(N(i[l]))this.objects[l]=i[l];else{const L=i[l]&&i[l].type;L&&(L==="channel"||L==="device"||L==="folder"||L==="adapter"||L==="instance")&&(this.objects[l]=i[l])}}catch(L){console.log(`Error by filtering of "${l}": ${L}`)}})}else if(t.types){this.objects={};const N=t.types;Object.keys(i).forEach(l=>{var D;const L=(D=i[l])==null?void 0:D.type;L&&(L==="channel"||L==="device"||L==="enum"||L==="folder"||L==="adapter"||L==="instance"||N.includes(L))&&(this.objects[l]=i[l])})}else this.objects=i;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState(`system.adapter.${this.defaultHistory}.alive`).then(N=>{N!=null&&N.val||(this.defaultHistory="")}).catch(N=>window.alert(`Cannot get state: ${N}`));const o=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,o);const{info:r,root:n}=as(this.objects,{imagePrefix:t.imagePrefix,root:t.root,lang:t.lang,themeType:t.themeType});this.root=n,this.info=r;const c=((M=this.state.selected)==null?void 0:M.length)&&Lo(this.root,this.state.selected[0]);c&&!QM(c,this.state.filter,t.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:{...Lt},columnsForAdmin:o},()=>{this.doFilter(),this.setState({loaded:!0,updating:!1},()=>this.expandAllSelected(()=>{this.onAfterSelect(),this.applyInitialNavigateTo()}))}):(this.doFilter(),this.setState({loaded:!0,updating:!1,columnsForAdmin:o},()=>this.expandAllSelected(()=>{this.onAfterSelect(),this.applyInitialNavigateTo()})))}catch(i){this.showError(i)}}expandAllSelected(e){const t=[...this.state.expanded];let M=!1;this.state.selected.forEach(i=>{const o=i.split("."),r=[];for(let n=0;n<o.length-1;n++)r.push(o[n]),t.includes(r.join("."))||(t.push(r.join(".")),M=!0)}),M?(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t},e)):e&&e()}onAfterSelect(e){var t,M,i,o,r,n,c;if((t=this.state.selected)!=null&&t.length&&this.state.selected[0]){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst="");const N=this.findItem(this.state.selected[0]);if(N!=null&&N.data&&!N.data.visible&&!N.data.hasVisibleChildren&&this.clearFilter(),this.state.selected.length===1&&this.objects[this.state.selected[0]]){const l=p.getObjectName(this.objects,this.state.selected[0],null,{language:this.props.lang});(i=(M=this.props).onSelect)==null||i.call(M,this.state.selected,l,e)}else this.state.selected.length===1&&this.props.allowNonObjects?(r=(o=this.props).onSelect)==null||r.call(o,this.state.selected,null,e):(!this.props.allowNonObjects||!this.state.selected.find(l=>!this.objects[l]))&&((c=(n=this.props).onSelect)==null||c.call(n,this.state.selected,null,e))}else this.localStorage.removeItem(`${this.props.dialogName||"App"}.objectSelected`),this.state.selected.length?this.setState({selected:[]},()=>{this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}):this.props.onSelect&&(this.state.focused&&this.props.allowNonObjects?(this.selectFirst&&this.selectFirst!==this.state.selected[0]&&(this.selectFirst=""),this.props.onSelect([this.state.focused],null,e)):this.props.onSelect([],""))}static getDerivedStateFromProps(e,t){const M={};let i=!1;return e.expertMode!==void 0&&e.expertMode!==t.filter.expertMode&&(i=!0,M.filter={...t.filter},M.filter.expertMode=e.expertMode),i?M:null}async componentDidMount(){await this.loadAllObjects(!Ns),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),Ns=!0,window.addEventListener("contextmenu",this.onContextMenu,!0),window.addEventListener("keydown",this.onKeyPress,!0),window.addEventListener("keyup",this.onKeyPress,!0),this.props.onAllLoaded&&setTimeout(()=>{var e,t;(t=(e=this.props).onAllLoaded)==null||t.call(e)},100)}onKeyPress=e=>{e.type==="keydown"&&e.ctrlKey&&!this.ctrlPressed?(this.ctrlPressed=!0,this.tableRef.current&&(this.tableRef.current.className="highlight-link")):e.type==="keyup"&&!e.ctrlKey&&this.ctrlPressed&&(this.ctrlPressed=!1,this.tableRef.current&&(this.tableRef.current.className=""))};componentWillUnmount(){window.removeEventListener("contextmenu",this.onContextMenu,!0),window.removeEventListener("keydown",this.onKeyPress,!0),window.removeEventListener("keyup",this.onKeyPress,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange).catch(e=>console.error(`Cannot unsubscribe *: ${e}`)),this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.objects={}}showDeleteDialog(e){var c,N,l,L;const{id:t,obj:M,item:i}=e,o=Object.keys(this.objects);o.sort();let r=0;const n=`${t}.`;for(let D=0;D<o.length;D++)if(o[D].startsWith(n))r++;else if(o[D]>n)break;(L=(l=this.props).onObjectDelete)==null||L.call(l,t,!!((c=i.children)!=null&&c.length),!((N=M.common)!=null&&N.dontDelete),r+1)}onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item,position:{left:e.clientX+2,top:e.clientY-6}}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null};refreshComponent(){this.subscribes.forEach(e=>{this.props.socket.unsubscribeState(e,this.onStateChange)}),this.subscribes=[],this.loadAllObjects(!0).then(()=>console.log("updated!")).catch(e=>this.showError(e))}renderErrorDialog(){return this.state.error?a.createElement(u.Dialog,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},a.createElement(u.DialogTitle,{id:"alert-dialog-title"},this.props.t("ra_Error")),a.createElement(u.DialogContent,null,a.createElement(u.DialogContentText,{id:"alert-dialog-description"},this.state.error)),a.createElement(u.DialogActions,null,a.createElement(u.Button,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:a.createElement(I.Check,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:typeof e=="object"?e&&typeof e.toString=="function"?e.toString():JSON.stringify(e):e})}onSelect(e,t,M){if(this.localStorage.setItem(`${this.props.dialogName||"App"}.focused`,e),!this.props.multiSelect)this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))?(this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),M&&M()}):t&&this.props.onSelect&&this.onAfterSelect(t)):(this.localStorage.setItem(`${this.props.dialogName||"App"}.selectedNonObject`,e),this.setState({selected:[],selectedNonObject:e,focused:e},()=>{this.onAfterSelect(),M&&M()}));else if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem(`${this.props.dialogName||"App"}.selectedNonObject`);const i=[...this.state.selected],o=i.indexOf(e);o===-1?(i.push(e),i.sort()):t||i.splice(o,1),this.setState({selected:i,selectedNonObject:"",focused:e},()=>{this.onAfterSelect(t),M&&M()})}}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const M=t.indexOf("buttons");M!==-1&&t.splice(M,1)}return t.filter(M=>e&&(M==="val"||M==="buttons")||!e&&M!=="val"&&M!=="buttons").map(M=>{var i;return a.createElement(u.ListItemButton,{onClick:()=>{if(!this.state.columnsAuto&&M!=="id"){const o=[...this.state.columns||[]],r=o.indexOf(M);r===-1?(o.push(M),o.sort()):o.splice(r,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.calculateColumnsVisibility(null,o),this.setState({columns:o})}},key:M},a.createElement(u.Checkbox,{edge:"start",disabled:M==="id"||this.state.columnsAuto,checked:M==="id"||!!(this.state.columnsAuto?this.visibleCols.includes(M):(i=this.state.columns)!=null&&i.includes(M)),disableRipple:!0}),a.createElement(u.ListItemText,{primary:this.texts[`filter_${M}`]||this.props.t(`ra_${M}`)}))})}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?a.createElement(u.Dialog,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,sx:{"& .MuiPaper-root":p.getStyle(this.props.theme,z.dialogColumns,z[`transparent_${this.state.columnsDialogTransparent}`])}},a.createElement(u.DialogTitle,{sx:z.fontSizeTitle},this.props.t("ra_Configure")),a.createElement(u.DialogContent,{sx:z.fontSizeTitle},a.createElement(u.FormControlLabel,{style:z.switchColumnAuto,control:a.createElement(u.Switch,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.foldersFirst`,this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),a.createElement(u.FormControlLabel,{style:z.switchColumnAuto,control:a.createElement(u.Switch,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.lines`,this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),a.createElement(u.FormControlLabel,{style:z.switchColumnAuto,control:a.createElement(u.Switch,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.columnsAuto`,this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),a.createElement(u.List,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map(e=>{var t;return(t=this.state.columnsForAdmin)==null?void 0:t[e].map(M=>{var i;return a.createElement(u.ListItemButton,{onClick:()=>{if(!this.state.columnsAuto){const o=[...this.state.columns||[]],r=`_${e}_${M.path}`,n=o.indexOf(r);n===-1?(o.push(r),o.sort()):o.splice(n,1),this.calculateColumnsVisibility(null,o),this.localStorage.setItem(`${this.props.dialogName||"App"}.columns`,JSON.stringify(o)),this.setState({columns:o})}},key:`${e}_${M.name}`},a.createElement(u.ListItemIcon,null,a.createElement(u.Checkbox,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&((i=this.state.columns)==null?void 0:i.includes(`_${e}_${M.path}`)),disableRipple:!0})),a.createElement(u.ListItemText,{primary:`${M.name} (${e})`}))})}),this._renderDefinedList(!0))),a.createElement(u.DialogActions,null,a.createElement(u.Button,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:a.createElement(I.Close,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach(M=>t=this.parseObjectForAdmins(t,M)),t}catch(e){return console.error(`Cannot get adapters: ${e}`),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)this.recordStates.includes(this.subscribes[e])||this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,M,i){if(t||=e.split("."),M||=this.root,!M||!t.length)return null;if(i=(i?`${i}.`:"")+t.shift(),M.children){const o=M.children.find(r=>r.data.id===i);if(o){if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,i)}else return null}return null}onStateChange=(e,t)=>{if(this.states[e]){const M=this.findItem(e);M!=null&&M.data.state&&(M.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout(()=>{this.statesUpdateTimer=null,this.forceUpdate()},300))};parseObjectForAdmins(e,t){var M;if((M=t.common)!=null&&M.adminColumns&&t.common.name){const i=t.common.adminColumns;let o;i&&typeof i!="object"?o=[i]:i&&(o=i);let r;i?r=o.map(n=>{if(typeof n!="object")return{path:n,name:n.split(".").pop()};const c=n;return c.objTypes&&typeof c.objTypes!="object"?c.objTypes=[c.objTypes]:c.objTypes||(c.objTypes=void 0),!c.name&&c.path?{path:c.path,name:c.path.split(".").pop(),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:c.path?{path:c.path,name:Ie(c.name||"",this.props.lang),width:c.width,edit:!!c.edit,type:c.type,objTypes:c.objTypes}:(console.warn(`Admin columns for ${t._id} ignored, because path not found`),null)}).filter(n=>n):r=null,r!=null&&r.length&&(e||={},e[t.common.name]=r.sort((n,c)=>n.path>c.path?-1:n.path<c.path?1:0))}else t.common&&t.common.name&&e&&e[t.common.name]&&delete e[t.common.name];return e}onObjectChangeFromWorker=e=>{if(Array.isArray(e)){let t=null;e.forEach(M=>{const{newInnerState:i,filtered:o}=this.processOnObjectChangeElement(M.id,M.obj);o||(i&&t?Object.assign(t,i):t=i)}),t&&this.setState(t),this.afterObjectUpdated()}};onObjectChange=(e,t)=>{const{newInnerState:M,filtered:i}=this.processOnObjectChangeElement(e,t);i||(M&&this.setState(M),this.afterObjectUpdated())};afterObjectUpdated(){!this.objectsUpdateTimer&&this.objects&&(this.objectsUpdateTimer=setTimeout(()=>{this.objectsUpdateTimer=null;const{info:e,root:t}=as(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.pausedSubscribes||this.doFilter()},500))}updateAliases(e){var M,i,o;if(!this.objects||!((M=this.info)!=null&&M.aliasesMap)||!(e!=null&&e.startsWith("alias.")))return;const t=Object.keys(this.objects).filter(r=>r.startsWith("alias.0"));this.info.aliasesMap={};for(const r of t){const n=this.objects[r];if((o=(i=n==null?void 0:n.common)==null?void 0:i.alias)!=null&&o.id)if(typeof n.common.alias.id=="string"){const c=n.common.alias.id;this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(r)||this.info.aliasesMap[c].push(r):this.info.aliasesMap[c]=[r]}else{const c=n.common.alias.id.read;c&&(this.info.aliasesMap[c]?this.info.aliasesMap[c].includes(r)||this.info.aliasesMap[c].push(r):this.info.aliasesMap[c]=[r]);const N=n.common.alias.id.write;N&&(this.info.aliasesMap[N]?this.info.aliasesMap[N].includes(r)||this.info.aliasesMap[N].push(r):this.info.aliasesMap[N]=[r])}}}processOnObjectChangeElement(e,t){const M=t==null?void 0:t.type;if(t&&typeof this.props.filterFunc=="function"&&!this.props.filterFunc(t)&&M!=="channel"&&M!=="device"&&M!=="folder"&&M!=="adapter"&&M!=="instance")return{newInnerState:null,filtered:!0};let i=null;if(e.startsWith("system.adapter.")&&(t==null?void 0:t.type)==="adapter"){const o=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(o,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(o)&&(i={columnsForAdmin:o})}return this.objects||={},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],this.updateAliases(e),{newInnerState:i,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),this.pausedSubscribes||this.props.socket.subscribeState(e,this.onStateChange).catch(t=>console.error(`Cannot subscribe on state ${e}: ${t}`)))}unsubscribe(e){const t=this.subscribes.indexOf(e);t!==-1&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach(t=>this.props.socket.unsubscribeState(t,this.onStateChange))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach(t=>this.props.socket.subscribeState(t,this.onStateChange)))}clearFilter(){JSON.stringify(this.state.filter)!==JSON.stringify(Lt)&&this.setState({filter:{...Lt},filterKey:this.state.filterKey+1},()=>{var e,t;this.doFilter(),(t=(e=this.props).onFilterChanged)==null||t.call(e,{...Lt})})}isFilterEmpty(){var e,t,M,i,o;return!!this.state.filter.id||!!this.state.filter.name||!!((e=this.state.filter.room)!=null&&e.length)||!!((t=this.state.filter.func)!=null&&t.length)||!!((M=this.state.filter.role)!=null&&M.length)||!!((i=this.state.filter.type)!=null&&i.length)||!!((o=this.state.filter.custom)!=null&&o.length)}getFilterInput(e){return a.createElement(vie,{key:`${e}_${this.state.filterKey}`,styles:this.styles.filterInput,name:e,texts:this.texts,t:this.props.t,initialValue:this.state.filter[e],onChange:(t,M)=>{const i={...this.state.filter};M===void 0?delete i[t]:i[t]=M,this.setState({filter:i},()=>{var o,r;this.doFilter(),(r=(o=this.props).onFilterChanged)==null||r.call(o,i)})}})}getFilterSelect(e,t){return a.createElement(Uie,{key:`${e}_${this.state.filterKey}`,name:e,texts:this.texts,initialValue:this.state.filter[e]||[],values:t,onChange:(M,i)=>{const o={...this.state.filter};i===void 0?delete o[M]:o[M]=i,this.setState({filter:o},()=>{var r,n;this.doFilter(),(n=(r=this.props).onFilterChanged)==null||n.call(r,o)})}})}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles.map(e=>e.role))}getFilterSelectRoom(){const e=this.info.roomEnums.map(t=>{var M,i,o,r;return{name:Ie((i=(M=this.objects[t])==null?void 0:M.common)==null?void 0:i.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(je,{src:((r=(o=this.objects[t])==null?void 0:o.common)==null?void 0:r.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map(t=>{var M,i,o,r;return{name:Ie((i=(M=this.objects[t])==null?void 0:M.common)==null?void 0:i.name,this.props.lang)||t.split(".").pop(),value:t,icon:a.createElement(je,{src:((r=(o=this.objects[t])==null?void 0:o.common)==null?void 0:r.icon)||"",style:z.selectIcon})}});return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map(t=>({name:t,value:t,icon:cs[t]||null}));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map(t=>({name:t==="_"?this.texts.filterCustomsWithout:t,value:t,icon:t==="_"?null:a.createElement(je,{src:cM(this.objects,t,this.props.lang,this.imagePrefix)||"",style:z.selectIcon})}));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var i;const M=e||this.root;t||=[],(i=M==null?void 0:M.children)==null||i.forEach(o=>{o.data.sumVisibility&&(t.push(o.data.id),this.onExpandAll(o,t))}),M===this.root&&(t.sort(),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify([])),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,"[]"),this.setState({expanded:[],depth:0,selected:[]},()=>this.onAfterSelect())}expandDepth(e,t,M){var i;e||=this.root,t>0&&((i=e.children)==null||i.forEach(o=>{o.data.sumVisibility&&(bt(M,o.data.id)||(M.push(o.data.id),M.sort()),t-1>0&&this.expandDepth(o,t-1,M))}))}static collapseDepth(e,t){return t.filter(M=>M.split(".").length<=e)}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectStatesView`,JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=st.collapseDepth(e,this.state.expanded);this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({depth:e,expanded:t})}}getEnumsForId=e=>{const t=[];return this.info.enums.forEach(M=>{var i,o,r;if((r=(o=(i=this.objects[M])==null?void 0:i.common)==null?void 0:o.members)!=null&&r.includes(e)){const n={_id:this.objects[M]._id,common:JSON.parse(JSON.stringify(this.objects[M].common)),native:this.objects[M].native,type:"enum"};n.common&&(delete n.common.members,delete n.common.custom,delete n.common.mobile),t.push(n)}}),t.length?t:void 0};_createAllEnums=async(e,t)=>{var M,i;for(let o=0;o<e.length;o++){const r=e[o];let n,c;typeof r=="object"?(c=r,n=c._id):n=r;let N=this.objects[n];N?(i=(M=N.common)==null?void 0:M.members)!=null&&i.includes(t)||(N.common||={},N.type="enum",N.common.members||=[],N.common.members.push(t),N.common.members.sort(),await this.props.socket.setObject(n,N)):(N=c||{_id:n,common:{name:n.split(".").pop(),members:[]},native:{},type:"enum"},N.common||={},N.common.members=[t],N.type="enum",await this.props.socket.setObject(n,N))}};async loadObjects(e){var t;if(e)for(const M in e){if(!Object.prototype.hasOwnProperty.call(e,M)||!e[M])continue;const i=e[M];let o=null,r,n;(t=i==null?void 0:i.common)!=null&&t.enums?(o=i.common.enums,delete i.common.enums):o=null,(i.val||i.val===0)&&(r=i.val,delete i.val),i.ack!==void 0&&(n=i.ack,delete i.ack);try{if(await this.props.socket.setObject(M,i),o&&await this._createAllEnums(o,i._id),i.type==="state")if(r!=null)try{await this.props.socket.setState(i._id,r,n!==void 0?n:!0)}catch(c){window.alert(`Cannot set state "${i._id} with ${r}": ${c}`)}else try{const c=await this.props.socket.getState(i._id);if(!c||c.val===null)try{await this.props.socket.setState(i._id,!i.common||i.common.def===void 0?null:i.common.def,!0)}catch(N){window.alert(`Cannot set state "${i._id}": ${N}`)}}catch(c){window.alert(`Cannot read state "${i._id}": ${c}`)}}catch(c){window.alert(c)}}}_getSelectedIdsForExport(){if(this.state.selected.length||this.state.selectedNonObject){const e=[],t=Object.keys(this.objects);t.sort();const M=this.state.selected[0]||this.state.selectedNonObject,i=`${M}.`,o=i.length;for(let r=0;r<t.length;r++){const n=t[r];if((M===n||n.startsWith(i))&&e.push(n),n.substring(0,o)>i)break}return e}return[]}async _exportObjects(e){var o;if(e.isAll){ss("allObjects.json",this.objects,e);return}if(!(this.state.selected.length||this.state.selectedNonObject)){window.alert(this.props.t("ra_Save of objects-tree is not possible"));return}const t={},M=this.state.selected[0]||this.state.selectedNonObject,i=this._getSelectedIdsForExport();for(const r of i){if(t[r]=JSON.parse(JSON.stringify(this.objects[r])),((o=t[r])==null?void 0:o.type)==="state"&&!e.noStatesByExportImport){const n=await this.props.socket.getState(r);n&&(t[r].val=n.val,t[r].ack=n.ack)}if(t[r].common){const n=this.getEnumsForId(r);n&&(t[r].common.enums=n)}}ss(`${M}.json`,t,e)}renderExportDialog(){return this.state.showExportDialog===!1?null:a.createElement(u.Dialog,{open:!0,maxWidth:"lg"},a.createElement(u.DialogTitle,null,this.props.t("ra_Select type of export")),a.createElement(u.DialogContent,null,a.createElement(u.DialogContentText,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(a.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),a.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),a.createElement("br",null),a.createElement(u.FormControlLabel,{control:a.createElement(u.Checkbox,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),a.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),a.createElement(u.FormControlLabel,{control:a.createElement(u.Checkbox,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),a.createElement("br",null),a.createElement(u.FormControlLabel,{control:a.createElement(u.Checkbox,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),a.createElement(u.FormControlLabel,{control:a.createElement(u.Checkbox,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),a.createElement(u.DialogActions,null,this.state.filter.expertMode||this.state.showAllExportOptions?a.createElement(u.Button,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):a.createElement(u.Button,{color:"grey",variant:"outlined",startIcon:a.createElement(fM,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),a.createElement(u.Button,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations}))},a.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),a.createElement(u.Button,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:a.createElement(I.Close,null)},this.props.t("ra_Cancel"))))}renderRenameDialog(){var t;if(!this.state.showRenameDialog)return null;const e=this.props.objectMoveRenameDialog;return a.createElement(e,{expertMode:this.props.expertMode,onClose:()=>this.setState({showRenameDialog:null}),id:this.state.showRenameDialog.id,childrenIds:this.state.showRenameDialog.childrenIds,theme:this.props.theme,socket:this.props.socket,t:this.props.t,objectType:(t=this.objects[this.state.showRenameDialog.id])==null?void 0:t.type})}async parseJsonFile(e){try{const t=JSON.parse(e),M=Object.keys(t).length,i=t._id;if(i===void 0&&M)await this.loadObjects(t),window.alert(this.props.t("ra_%s object(s) processed",M));else{if(!i)return window.alert(this.props.t("ra_Invalid structure"));try{let o,r,n;if(t.common.enums&&(o=t.common.enums,delete t.common.enums),t.val&&(r=t.val,delete t.val),t.ack!==void 0&&(n=t.ack,delete t.ack),await this.props.socket.setObject(t._id,t),t.type==="state")if(r!=null)await this.props.socket.setState(t._id,r,n===void 0?!0:n);else{const c=await this.props.socket.getState(t._id);(!c||c.val===null||c.val===void 0)&&await this.props.socket.setState(t._id,t.common.def===void 0?null:t.common.def,!0)}o&&await this._createAllEnums(o,t._id),window.alert(this.props.t("ra_%s was imported",t._id))}catch(o){window.alert(o)}}}catch(t){window.alert(t)}}handleJsonUpload(e){var i;const t=e.target,M=((i=t.files)==null?void 0:i.length)&&t.files[0];if(M){const o=new FileReader;o.onload=r=>{var n;return this.parseJsonFile((n=r.target)==null?void 0:n.result),null},o.readAsText(M)}else window.alert(this.props.t("ra_Failed to open JSON File"))}toolTipObjectCreating=()=>{var M,i;const{t:e}=this.props;let t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(!(o.split(".").length<2||this.objects[o]&&((M=this.objects[o])==null?void 0:M.type)==="state"))if(this.state.filter.expertMode)switch((i=this.objects[o])==null?void 0:i.type){case"device":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:1},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:8},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:9},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(t=[a.createElement("div",{key:1},e("ra_Only following structures of objects are available:")),a.createElement("div",{key:2},e("ra_Folder → State")),a.createElement("div",{key:3},e("ra_Folder → Channel → State")),a.createElement("div",{key:4},e("ra_Folder → Device → Channel → State")),a.createElement("div",{key:5},e("ra_Device → Channel → State")),a.createElement("div",{key:6},e("ra_Channel → State")),a.createElement("div",{key:7,style:{height:10}}),a.createElement("div",{key:7},e('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),a.createElement("div",{key:8},e('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return t.length?t:e("ra_Add new child object to selected parent")};onOpenFile(){const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",t=>this.handleJsonUpload(t),!1),e.click()}renderInputJsonDialog(){const e=this.props.objectBrowserInsertJsonObjects;return this.state.showImportDialog?a.createElement(e,{onClose:t=>{this.setState({showImportDialog:!1}),t&&this.parseJsonFile(t)},themeName:this.props.themeName,themeType:this.props.themeType,t:this.props.t}):null}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&this.objects[t].type==="state"?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center",overflowX:"auto"}},a.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},a.createElement(u.Tooltip,{title:this.props.t("ra_Refresh tree"),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(u.IconButton,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},a.createElement(I.Refresh,null)))),this.props.showExpertButton&&!this.props.expertMode&&a.createElement(u.Tooltip,{title:this.props.t("ra_expertMode"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>{const t={...this.state.filter};t.expertMode=!t.expertMode,this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(t)),this.setState({filter:t})},size:"large"},a.createElement(fM,null))),!this.props.disableColumnSelector&&this.props.width!=="xs"&&a.createElement(u.Tooltip,{title:this.props.t("ra_Configure"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},a.createElement(I.ViewColumn,null))),this.props.width!=="xs"&&this.state.expandAllVisible&&a.createElement(u.Tooltip,{title:this.props.t("ra_Expand all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},a.createElement(MM,null))),a.createElement(u.Tooltip,{title:this.props.t("ra_Collapse all nodes"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},a.createElement(zt,null))),this.props.width!=="xs"&&a.createElement(u.Tooltip,{title:this.props.t("ra_Expand one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},a.createElement(u.Badge,{badgeContent:this.state.depth,color:"secondary",sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}})},a.createElement(MM,null)))),this.props.width!=="xs"&&a.createElement(u.Tooltip,{title:this.props.t("ra_Collapse one step node"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},a.createElement(u.Badge,{sx:t=>({badge:{right:3,top:3,border:`2px solid ${t.palette.background.paper}`,padding:"0 4px"}}),badgeContent:this.state.depth,color:"secondary"},a.createElement(zt,null)))),this.props.objectStatesView&&a.createElement(u.Tooltip,{title:this.props.t("ra_Toggle the states view"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{onClick:()=>this.onStatesViewVisible(),size:"large"},a.createElement(I.LooksOne,{color:this.state.statesView?"primary":"inherit"}))),a.createElement(u.Tooltip,{title:this.props.t("ra_Show/Hide object descriptions"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.desc`,this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},a.createElement(I.TextFields,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?a.createElement(u.Tooltip,{title:this.toolTipObjectCreating(),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,a.createElement(u.IconButton,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},a.createElement(I.Add,null)))):null,this.props.objectImportExport&&a.createElement(u.Tooltip,{title:this.props.t("ra_Add objects tree from JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{onClick:t=>{this.props.objectBrowserInsertJsonObjects?this.setState({showImportMenu:t.currentTarget}):this.onOpenFile()},size:"large"},a.createElement(I.Publish,null))),this.props.objectBrowserInsertJsonObjects?a.createElement(u.Menu,{anchorEl:this.state.showImportMenu,open:!!this.state.showImportMenu,onClose:()=>this.setState({showImportMenu:null})},a.createElement(u.MenuItem,{onClick:()=>this.setState({showImportMenu:null},()=>this.onOpenFile())},a.createElement(u.ListItemIcon,null,a.createElement(I.UploadFile,null)),a.createElement(u.ListItemText,null,this.props.t("ra_From file"))),a.createElement(u.MenuItem,{onClick:()=>this.setState({showImportMenu:null,showImportDialog:!0})},a.createElement(u.ListItemIcon,null,a.createElement(I.ContentPaste,null)),a.createElement(u.ListItemText,null,this.props.t("ra_From text")))):null,this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&a.createElement(u.Tooltip,{title:this.props.t("ra_Save objects tree as JSON file"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},a.createElement(I.Publish,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&this.props.width!=="xs"&&a.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},`${this.props.t("ra_Objects")}: ${Object.keys(this.info.objects).length}, ${this.props.t("ra_States")}: ${Object.keys(this.info.objects).filter(t=>this.info.objects[t].type==="state").length}`),this.props.objectEditBoolean&&a.createElement(u.Tooltip,{title:this.props.t("ra_Edit custom config"),slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{onClick:()=>{var M;const t=this.root?uo(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),t.length===1&&(this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,this.state.selected[0]),(M=this.props.router)==null||M.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},a.createElement(I.Build,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),M=t.indexOf(e);M===-1?(t.push(e),t.sort()):t.splice(M,1),this.localStorage.setItem(`${this.props.dialogName||"App"}.objectExpanded`,JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),t&&(p.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")}))}renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],M=[],i=o=>{const r=e[o];t.forEach((n,c)=>{r&n.valueNum&&M.push(a.createElement("span",{key:o+c},this.texts[`acl${n.group}_${n.title}_${o}`],",",a.createElement("span",{style:o==="object"?z.rightsObject:z.rightsState},n.value)))})};return M.push(a.createElement("span",{key:"group"},`${this.texts.ownerGroup}: ${(e.ownerGroup||"").replace("system.group.","")}`)),M.push(a.createElement("span",{key:"owner"},`${this.texts.ownerUser}: ${(e.owner||"").replace("system.user.","")}`)),i("object"),e.state&&i("state"),M.length?a.createElement("span",{style:z.tooltipAccessControl},M.map(o=>o)):null};renderColumnButtons(e,t){var r,n,c,N;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?a.createElement("div",{style:z.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(u.IconButton,{sx:{...z.cellButtonsButton,...z.cellButtonsEmptyButton,...z.cellButtonMinWidth},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:{height:15}},"---")):null,this.props.onObjectDelete&&((r=t.children)!=null&&r.length)?a.createElement(u.IconButton,{sx:{...z.cellButtonsButton,...z.cellButtonsButtonAlone},size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var y;const l=Object.keys(this.objects);l.sort();let L=0;const D=`${e}.`;for(let C=0;C<l.length;C++)if(l[C].startsWith(D))L++;else if(l[C]>D)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((y=t.children)!=null&&y.length),!1,L+1)}},a.createElement(I.Delete,{style:z.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const M=t.data.obj.acl?t.data.obj.type==="state"?t.data.obj.acl.state:t.data.obj.acl.object:0,i=t.data.obj.acl&&(t.data.obj.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),o=this.state.filter.expertMode||ns(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?a.createElement(u.Tooltip,{key:"acl",title:t.data.aclTooltip,slotProps:{popper:{sx:z.tooltip}}},a.createElement(u.IconButton,{sx:{...z.cellButtonsButton,...z.cellButtonMinWidth,opacity:1},onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},a.createElement("div",{style:z.aclText},Number.isNaN(Number(M))?Number(i).toString(16):Number(M).toString(16)))):a.createElement("div",{key:"aclEmpty",style:z.cellButtonMinWidth}),o?a.createElement(u.IconButton,{key:"edit",sx:{marginRight:"2px",...z.cellButtonsButton},size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},a.createElement(I.Edit,{style:z.cellButtonsButtonIcon})):a.createElement(u.Box,{component:"div",key:"editDisabled",sx:z.cellButtonsButton}),this.props.onObjectDelete&&((n=t.children)!=null&&n.length||!((c=t.data.obj.common)!=null&&c.dontDelete))?a.createElement(u.IconButton,{key:"delete",sx:z.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var y,C,A;const l=Object.keys(this.objects);l.sort();let L=0;const D=`${e}.`;for(let h=0;h<l.length;h++)if(l[h].startsWith(D))L++;else if(l[h]>D)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!((y=t.children)!=null&&y.length),!((A=(C=t.data.obj)==null?void 0:C.common)!=null&&A.dontDelete),L)},title:this.texts.deleteObject},a.createElement(I.Delete,{style:z.cellButtonsButtonIcon})):null,this.props.objectCustomDialog&&this.info.hasSomeCustoms&&t.data.obj.type==="state"&&((N=t.data.obj.common)==null?void 0:N.type)!=="file"?a.createElement(u.IconButton,{sx:{...z.cellButtonsButton,...t.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms},key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var l;this.localStorage.setItem(`${this.props.dialogName||"App"}.objectSelected`,e),this.pauseSubscribe(!0),(l=this.props.router)==null||l.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},a.createElement(I.Settings,{style:z.cellButtonsButtonIcon})):null]}readHistory(e){var t,M;if(window.sparkline&&this.defaultHistory&&((M=(t=this.objects[e])==null?void 0:t.common)!=null&&M.custom)&&this.objects[e].common.custom[this.defaultHistory]){const i=new Date;i.setHours(i.getHours()-24),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0);const o=i.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:o,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addId:!1,aggregate:"minmax"}).then(r=>{const n=window.document.getElementsByClassName("sparkline");for(let c=0;c<n.length;c++)if(n[c].dataset.id===e){const N=Pie(r,o);window.sparkline.sparkline(n[c],N);break}}).catch(r=>console.warn(`Cannot read history: ${r}`))}}getTooltipInfo(e,t){var N,l,L;const M=this.objects[e],i=this.states[e],{valFull:o,fileViewer:r}=hM({state:i,obj:M,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,full:!0}),n=[];o==null||o.forEach(D=>{D.t===this.texts.quality&&i.q?(n.push(a.createElement("div",{style:z.cellValueTooltipBoth,key:D.t},D.t,": ",D.v)),D.nbr||n.push(a.createElement("br",{key:`${D.t}_br`}))):(n.push(a.createElement("div",{style:z.cellValueTooltipTitle,key:D.t},D.t,": ")),n.push(a.createElement("div",{style:z.cellValueTooltipValue,key:`${D.t}_v`},D.v)),D.nbr||n.push(a.createElement("br",{key:`${D.t}_br`})))});const c=((N=M==null?void 0:M.common)==null?void 0:N.role)||"";r==="image"?n.push(a.createElement("img",{style:z.cellValueTooltipImage,src:i.val,alt:e})):c==="url"||M.common.role==="url.self"||M.common.role==="url.blank"?n.unshift(a.createElement("div",{key:"ctrl",style:{textDecoration:"underline",fontWeight:"bold"}},this.texts.ctrlForLink)):this.defaultHistory&&((L=(l=M==null?void 0:M.common)==null?void 0:l.custom)!=null&&L[this.defaultHistory])&&n.push(a.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"})),this.setState({tooltipInfo:{el:n,id:e}},()=>t&&t())}renderColumnValue(e,t,M){var c,N;const i=t.data.obj;if(!i||!this.states)return null;if(((c=i.common)==null?void 0:c.type)==="file")return a.createElement(u.Box,{component:"div",sx:{...z.cellValueText,...z.cellValueFile}},"[file]");if(!this.states[e])return i.type==="state"&&(this.recordStates.includes(e)||this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;this.recordStates.includes(e)||this.recordStates.push(e);const o=this.states[e];let r=t.data.state;if(!r){const{valText:l}=hM({state:o,obj:i,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),L=[];if(t.data.state={valTextRx:L},L.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${l.v.toString()}valText`,style:{whiteSpace:"nowrap",display:"inline-block",overflow:"hidden",textOverflow:"ellipsis"}},l.v.toString())),l.u&&L.push(a.createElement("span",{className:`newValueBrowser-${this.props.themeType||"light"}`,style:z.cellValueTextUnit,key:`${l.v.toString()}unit`},l.u)),l.s!==void 0&&L.push(a.createElement("span",{style:z.cellValueTextState,className:`newValueBrowser-${this.props.themeType||"light"}`,key:`${l.v.toString()}states`},"(",l.s,")")),!M){const D=l.c!==void 0?l.c:l.v||"";L.push(a.createElement(ut,{className:"copyButton",style:this.styles.iconCopy,onClick:y=>this.onCopy(y,D),key:"cc"}))}r=t.data.state}r.style=$ie({state:o,isExpertMode:this.state.filter.expertMode,isButton:t.data.button,nonAckColor:this.props.theme.palette.nonAck});let n=r.valTextRx;return this.state.filter.expertMode||(t.data.button?n=[a.createElement(kie,{key:"button",style:{color:r.style.color,...z.cellValueButton}})]:t.data.switch&&(n=[a.createElement(u.Switch,{key:"switch",sx:{"& .MuiSwitch-thumb":{color:r.style.color},"& .MuiSwitch-track":{backgroundColor:this.states[e].val&&this.state.selected.includes(e)?this.props.themeType==="dark"?"#FFF !important":"#111 !important":void 0}},checked:!!this.states[e].val})])),a.createElement(u.Tooltip,{key:"value",title:(N=this.state.tooltipInfo)==null?void 0:N.el,slotProps:{popper:{sx:z.cellValueTooltipBox},tooltip:{sx:z.cellValueTooltip}},onOpen:()=>this.getTooltipInfo(e,()=>this.readHistory(e)),onClose:()=>{var l;return((l=this.state.tooltipInfo)==null?void 0:l.id)===e&&this.setState({tooltipInfo:null})}},a.createElement(u.Box,{component:"div",style:r.style,className:t.data.url?"iob-link":void 0,sx:{...z.cellValueText,height:M?void 0:De,"& .admin-button:active":{transform:"translate(0, 2px)"}}},n))}_syncEnum(e,t,M,i){var n,c,N;if(!(t!=null&&t.length)){i&&i();return}const o=t.pop()||"",r=[];if((n=this.info.objects[o])!=null&&n.common){if((c=this.info.objects[o].common.members)!=null&&c.length){const l=this.info.objects[o].common.members.indexOf(e);if(l!==-1&&!M.includes(o)){const L=JSON.parse(JSON.stringify(this.info.objects[o]));L.common.members.splice(l,1),r.push(this.props.socket.setObject(o,L).then(()=>this.info.objects[o]=L).catch(D=>this.showError(D)))}}if(M.includes(o)&&!((N=this.info.objects[o].common.members)!=null&&N.includes(e))){const l=JSON.parse(JSON.stringify(this.info.objects[o]));l.common.members||=[],l.common.members.push(e),l.common.members.sort(),r.push(this.props.socket.setObject(o,l).then(()=>this.info.objects[o]=l).catch(L=>this.showError(L)))}}Promise.all(r).then(()=>{setTimeout(()=>this._syncEnum(e,t,M,i),0)})}syncEnum(e,t,M){const i=[...this.info[t==="func"?"funcEnums":"roomEnums"]];return new Promise(o=>{this._syncEnum(e,i,M,()=>{o()})})}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,M=this.state.enumDialogEnums,i=this.state.enumDialog.enumsOriginal,o=(e==="room"?this.info.roomEnums:this.info.funcEnums).map(r=>{var n,c;return{name:Ie(((c=(n=this.objects[r])==null?void 0:n.common)==null?void 0:c.name)||r.split(".").pop()||"",this.props.lang),value:r,icon:cM(this.objects,r,this.props.lang,this.imagePrefix)}}).sort((r,n)=>r.name>n.name?1:-1);return o.forEach(r=>{r.icon&&typeof r.icon=="string"&&(r.icon=a.createElement(u.Box,{style:z.enumIconDiv},a.createElement("img",{src:r.icon,style:z.enumIcon,alt:r.name})))}),a.createElement(u.Dialog,{sx:{"& .MuiPaper-root":z.enumDialog},onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},a.createElement(u.DialogTitle,{id:"enum-dialog-title",style:{display:"flex",justifyContent:"space-between",width:"100%",flexWrap:"nowrap",gap:8,paddingRight:12}},e==="func"?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),a.createElement(u.Fab,{color:"primary",disabled:i===JSON.stringify(M),size:"small",onClick:()=>this.syncEnum(t.data.id,e,M).then(()=>this.setState({enumDialog:null,enumDialogEnums:null}))},a.createElement(I.Check,null))),a.createElement(u.List,{sx:{"&.MuiList-root":z.enumList}},o.map(r=>{let n,c,N;typeof r=="object"?(n=r.value,c=r.name,N=r.icon):(n=r,c=r);const l=`checkbox-list-label-${n}`;return a.createElement(u.ListItem,{sx:z.headerCellSelectItem,key:n,onClick:()=>{const L=M.indexOf(n),D=JSON.parse(JSON.stringify(this.state.enumDialogEnums));L===-1?(D.push(n),D.sort()):D.splice(L,1),this.setState({enumDialogEnums:D})},secondaryAction:N},a.createElement(u.ListItemIcon,{sx:{"&.MuiListItemIcon-root":z.enumCheckbox}},a.createElement(u.Checkbox,{edge:"start",checked:M.includes(n),tabIndex:-1,disableRipple:!0,slotProps:{input:{"aria-labelledby":l}}})),a.createElement(u.ListItemText,{id:l},c))})))}renderEditRoleDialog(){var e,t;if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const M=this.props.objectBrowserEditRole;return a.createElement(M,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roleArray:this.info.roles,commonType:(t=(e=this.info.objects[this.state.roleDialog])==null?void 0:e.common)==null?void 0:t.type,onClose:i=>{i&&(this.info.objects[this.state.roleDialog]=i),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var M,i;const t=this.customColumnDialog;if(e){let o=t.value;t.type==="boolean"?o=o==="true"||o===!0:t.type==="number"&&(o=parseFloat(o)),this.customColumnDialog=null,this.props.socket.getObject(((i=(M=this.state.columnsEditCustomDialog)==null?void 0:M.obj)==null?void 0:i._id)||"").then(r=>{var n;if(r&&Jie(r,(n=this.state.columnsEditCustomDialog)==null?void 0:n.it,o))return this.props.socket.setObject(r._id,r);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))}).then(()=>this.setState({columnsEditCustomDialog:null})).catch(r=>this.showError(r))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=rs(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(e??"").toString(),value:(e??"").toString()}}return a.createElement(u.Dialog,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},a.createElement(u.DialogTitle,{id:"custom-dialog-title"},`${this.props.t("ra_Edit object field")}: ${this.state.columnsEditCustomDialog.obj._id}`),a.createElement(u.DialogContent,null,a.createElement(u.DialogContentText,{id:"alert-dialog-description"},this.customColumnDialog.type==="boolean"?a.createElement(u.FormControlLabel,{control:a.createElement(u.Checkbox,{onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:this.customColumnDialog.value==="true",onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const M=t.value!==t.initValue;M===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:M})}}),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`}):a.createElement(u.TextField,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>e.key==="Enter"&&this.onColumnsEditCustomDialogClose(!0),label:`${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const M=t.value!==t.initValue;M===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:M})},autoFocus:!0}))),a.createElement(u.DialogActions,null,a.createElement(u.Button,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:a.createElement(I.Check,null)},this.props.t("ra_Update")),a.createElement(u.Button,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:a.createElement(I.Close,null)},this.props.t("ra_Cancel"))))}renderCustomValue(e,t,M){const i=rs(e,t);return i!=null?t.edit&&!this.props.notEditable&&(!t.objTypes||t.objTypes.includes(e.type))?a.createElement(u.Box,{component:"div",style:{...z.columnCustom,...z.columnCustomEditable,...z[`columnCustom_${t.align}`]},onClick:()=>this.setState({columnsEditCustomDialog:{item:M,it:t,obj:e},customColumnDialogValueChanged:!1})},i):a.createElement(u.Box,{component:"div",style:{...z.columnCustom,...z[`columnCustom_${t.align}`]}},i):null}renderAliasLink(e,t,M){const i=t||0,o=this.objects[this.info.aliasesMap[e][i]].common.alias.id;return o?a.createElement(u.Box,{component:"div",onClick:r=>{r.stopPropagation(),r.preventDefault();const n=this.info.aliasesMap[e][i];this.info.aliasesMap[e].length>1&&this.setState({aliasMenu:""}),this.onSelect(n),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(n)),100)},sx:M||this.styles.aliasAlone},a.createElement("span",{className:"admin-browser-arrow"},typeof o=="string"||o.read===e&&o.write===e?"↔":o.read===e?"→":"←"),this.info.aliasesMap[e][i]):null}renderLeaf(e,t,M){var ht,At,mt,Bt,Rt,ni,ci,Ni,ui,li,Li,ji,Di,Ti;const i=e.data.id;M.count++,t=t===void 0?this.state.expanded.includes(i):t;let o;const r=e.data.obj,n=r==null?void 0:r.type;e.children||n==="folder"||n==="device"||n==="channel"||n==="meta"?o=t?a.createElement(MM,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(i)}):a.createElement(zt,{style:this.styles.cellIdIconFolder,onClick:()=>this.toggleExpanded(i)}):r&&r.common&&r.common.write===!1&&r.type==="state"?o=a.createElement(mie,{style:this.styles.cellIdIconDocument}):o=a.createElement(Aie,{style:this.styles.cellIdIconDocument});let c=null;e.data.icon&&(typeof e.data.icon=="string"?e.data.icon.length<3?c=a.createElement("span",{className:"iconOwn",style:z.cellIdIconOwn},e.data.icon):c=a.createElement(je,{style:z.cellIdIconOwn,className:"iconOwn",src:e.data.icon,alt:""}):c=e.data.icon);const N=r==null?void 0:r.common,l=(r==null?void 0:r.type)&&cs[r.type]||a.createElement("div",{className:"itemIcon"}),L=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:Y,per:V}=jo(this.info,i,this.props.lang);e.data.rooms=Y.join(", "),e.data.per=V;const{funcs:Te,pef:ne}=Do(this.info,i,this.props.lang);e.data.funcs=Te.join(", "),e.data.pef=ne,e.data.lang=this.props.lang}const D=this.props.multiSelect&&this.objects[i]&&(!this.props.types||this.props.types.includes(this.objects[i].type))?a.createElement(u.Checkbox,{style:z.checkBox,checked:this.state.selected.includes(i)}):null;let y=!this.props.notEditable&&n==="state"&&(this.state.filter.expertMode||(N==null?void 0:N.write)!==!1);this.props.objectBrowserViewFile&&(N==null?void 0:N.type)==="file"&&(y=!0);const C=!this.props.notEditable&&this.objects[i]&&(this.state.filter.expertMode||n==="state"||n==="channel"||n==="device"),A=this.state.statesView&&(n==="state"||n==="channel"||n==="device");let h="";const S=[];if(A&&(h=(ht=this.states[i])==null?void 0:ht.from,h===void 0?h=" ":(h=h?h.replace(/^system\.adapter\.|^system\./,""):"",S.push(`${this.texts.stateChangedFrom} ${h}`)),r!=null&&r.user)){const Y=r.user.replace("system.user.","");h+=`/${Y}`,S.push(`${this.texts.stateChangedBy} ${Y}`)}r&&(r.from&&S.push(`${this.texts.objectChangedFrom} ${r.from.replace(/^system\.adapter\.|^system\./,"")}`),r.user&&S.push(`${this.texts.objectChangedBy} ${r.user.replace(/^system\.user\./,"")}`),r.ts&&S.push(`${this.texts.objectChangedByUser} ${p.formatDate(new Date(r.ts),this.props.dateFormat||this.systemConfig.common.dateFormat)}`));let k=!1,w=null;i.startsWith("alias.")&&((At=N==null?void 0:N.alias)!=null&&At.id)?(k=typeof N.alias.id=="object",k?w=a.createElement("div",{style:z.cellIdAliasReadWriteDiv},N.alias.id.read?a.createElement(u.Box,{component:"div",onClick:Y=>{Y.stopPropagation(),Y.preventDefault(),this.onSelect(N.alias.id.read),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(N.alias.id.read)),100)},sx:this.styles.aliasReadWrite},"←",N.alias.id.read):null,N.alias.id.write?a.createElement(u.Box,{component:"div",onClick:Y=>{Y.stopPropagation(),Y.preventDefault(),this.onSelect(N.alias.id.write),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(N.alias.id.write)),100)},sx:this.styles.aliasReadWrite},"→",N.alias.id.write):null):w=a.createElement(u.Box,{component:"div",onClick:Y=>{Y.stopPropagation(),Y.preventDefault(),this.onSelect(N.alias.id),setTimeout(()=>this.expandAllSelected(()=>this.scrollToItem(N.alias.id)),100)},sx:this.styles.aliasAlone},"→",N.alias.id)):this.info.aliasesMap[i]&&(this.info.aliasesMap[i].length>1?w=a.createElement(u.Box,{component:"div",id:`alias_${i}`,onClick:Y=>{Y.stopPropagation(),Y.preventDefault(),this.setState({aliasMenu:i})},sx:this.styles.aliasAlone},this.props.t("ra_%s links from aliases",this.info.aliasesMap[i].length)):w=this.renderAliasLink(i,0));let O=N==null?void 0:N.color,m;if(O&&!this.state.selected.includes(i)){const Y=this.props.themeName==="dark"?"#1f1f1f":this.props.themeName==="blue"?"#222a2e":"#FFFFFF";p.colorDistance(O,Y)<1e3&&(m=this.props.themeType==="dark"?"#9a9a9a":"#565656")}let d=!1;i==="0_userdata"?(O=ro(this.props.themeType),d=!0):i==="alias"?(O=no(this.props.themeType),d=!0):i==="javascript"?(O=_ie(this.props.themeType),d=!0):i==="system"?(O=co(this.props.themeType),d=!0):i==="system.adapter"?O=No(this.props.themeType):(!O||this.state.selected.includes(i))&&(O="inherit");const E=[];if(N!=null&&N.statusStates){const Y={};Object.keys(N.statusStates).forEach(Te=>{var pe;let ne=N.statusStates[Te];ne.split(".").length<3&&(ne=`${i}.${ne}`),Y[Te]=ne,this.states[ne]?this.recordStates.includes(ne)||this.recordStates.push(ne):((pe=this.objects[ne])==null?void 0:pe.type)==="state"&&(this.recordStates.includes(ne)||this.recordStates.push(ne),this.states[ne]={val:null},this.subscribe(ne))});let V=!1;N.statusStates.errorId&&this.states[Y.errorId]&&this.states[Y.errorId].val&&(O=this.props.themeType==="dark"?To:go,V=!0,E.push(a.createElement(I.Error,{key:"error",style:this.styles.iconDeviceError}))),Y.onlineId&&this.states[Y.onlineId]?V?this.states[Y.onlineId].val?E.push(a.createElement(I.Wifi,{key:"conn",style:this.styles.iconDeviceConnected})):E.push(a.createElement(I.WifiOff,{key:"disc",style:this.styles.iconDeviceDisconnected})):this.states[Y.onlineId].val?(O=this.props.themeType==="dark"?UM:vM,E.push(a.createElement(I.Wifi,{key:"conn",style:this.styles.iconDeviceConnected}))):(O=this.props.themeType==="dark"?bM:$M,E.push(a.createElement(I.WifiOff,{key:"disc",style:this.styles.iconDeviceDisconnected}))):Y.offlineId&&this.states[Y.offlineId]&&(V?this.states[Y.offlineId].val?E.push(a.createElement(I.WifiOff,{key:"disc",style:this.styles.iconDeviceDisconnected})):E.push(a.createElement(I.Wifi,{key:"conn",style:this.styles.iconDeviceConnected})):this.states[Y.offlineId].val?(O=this.props.themeType==="dark"?bM:$M,E.push(a.createElement(I.WifiOff,{key:"disc",style:this.styles.iconDeviceDisconnected}))):(O=this.props.themeType==="dark"?UM:vM,E.push(a.createElement(I.Wifi,{key:"conn",style:this.styles.iconDeviceConnected}))))}const _=A?p.quality2text(((mt=this.states[i])==null?void 0:mt.q)||0).join(", "):null;let f=((Bt=e.data)==null?void 0:Bt.title)||"",W=!1;if(this.state.showDescription){const Y=lo(e.data,this.props.lang);Y&&(f=[a.createElement("div",{key:"name",style:z.cellNameDivDiv},f),a.createElement("div",{key:"desc",style:z.cellDescription},Y)],W=!!Y)}const $=this.props.width==="xs"&&this.state.focused===i,Z=a.createElement(u.Grid2,{container:!0,wrap:"nowrap",direction:"row",sx:z.cellId,style:{width:this.columnsVisibility.id,paddingLeft:L}},a.createElement(u.Grid2,{container:!0,alignItems:"center"},D,o),a.createElement(u.Grid2,{style:{...z.cellIdSpan,...m?this.styles.invertedBackground:void 0,color:O,fontWeight:d?"bold":void 0}},a.createElement(u.Tooltip,{title:bie(e.data,this.props.lang),slotProps:{popper:{sx:z.tooltip}}},a.createElement("div",null,e.data.name)),w,E),a.createElement("div",{style:{...z.grow,...m?this.styles.invertedBackgroundFlex:{}}}),a.createElement(u.Grid2,{container:!0,alignItems:"center"},c),this.props.width!=="xs"?a.createElement("div",null,a.createElement(ut,{className:$?"":"copyButton",style:z.cellCopyButton,onClick:Y=>this.onCopy(Y,i)})):null);let U=$&&f||this.columnsVisibility.name?a.createElement(u.Box,{component:"div",sx:{...z.cellName,...W?z.cellNameWithDesc:void 0,width:this.props.width!=="xs"?this.columnsVisibility.name:void 0,ml:$?0:"5px"}},f,!$&&((Rt=e.data)!=null&&Rt.title)?a.createElement(u.Box,{style:{color:O}},a.createElement(ut,{className:"copyButton",style:z.cellCopyButton,onClick:Y=>{var V;return this.onCopy(Y,(V=e.data)==null?void 0:V.title)}})):null):null,P;this.state.statesView?P=[$&&A&&((ni=this.states[i])!=null&&ni.from)||this.columnsVisibility.changedFrom?{el:a.createElement("div",{key:"from",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.changedFrom:void 0},title:S.join(`
|
|
587
|
-
`)},A&&((ci=this.states[i])!=null&&ci.from)?h:null),type:"from"}:null,$&&_||this.columnsVisibility.qualityCode?{el:a.createElement("div",{key:"q",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:_||""},_),type:"quality"}:null,$&&A&&((Ni=this.states[i])!=null&&Ni.ts)||this.columnsVisibility.timestamp?{el:a.createElement("div",{key:"ts",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},A&&((ui=this.states[i])!=null&&ui.ts)?p.formatDate(new Date(this.states[i].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,$&&A&&((li=this.states[i])!=null&&li.lc)||this.columnsVisibility.lastChange?{el:a.createElement("div",{key:"lc",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},A&&((Li=this.states[i])!=null&&Li.lc)?p.formatDate(new Date(this.states[i].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:P=[$&&(r!=null&&r.type)||this.columnsVisibility.type?{el:a.createElement("div",{key:"type",style:{...z.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},l," ",r==null?void 0:r.type),type:"filter_type"}:null,$&&N||this.columnsVisibility.role?{el:a.createElement("div",{key:"role",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?"text":"default"},onClick:!$&&this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},N==null?void 0:N.role),type:"filter_role",onClick:$&&this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,$&&N||this.columnsVisibility.room?{el:a.createElement("div",{key:"room",style:{...z.cellRoom,...e.data.per?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:C?"text":"default"},onClick:!$&&C?()=>{const Y=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Y)}})}:void 0},e.data.rooms),type:"filter_room",onClick:$&&C?()=>{const Y=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Y)}})}:void 0}:null,$&&N||this.columnsVisibility.func?{el:a.createElement("div",{key:"func",style:{...z.cellFunc,...e.data.pef?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:C?"text":"default"},onClick:!$&&C?()=>{const Y=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Y)}})}:void 0},e.data.funcs),type:"filter_func",onClick:$&&C?()=>{const Y=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Y)}})}:void 0}:null];let R=((ji=this.adapterColumns)==null?void 0:ji.map(Y=>a.createElement("div",{style:{...z.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[Y.id]:void 0},key:Y.id,title:`${Y.adapter} => ${Y.pathText}`},r?this.renderCustomValue(r,Y,e):null)))||null;const ae=$||this.columnsVisibility.val?this.renderColumnValue(i,e,$):null;let Ce=$&&ae||this.columnsVisibility.val?a.createElement("div",{"data-eos-object-value-cell":i,"data-eos-object-writable":y?"1":"0",className:"eos-object-value-cell",title:y?"Wert klicken, um zu schreiben oder sofort zu testen":"Statusinformationen anzeigen",style:{...z.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:y?(N==null?void 0:N.type)==="file"?"zoom-in":"pointer":"default"},onClick:Y=>{var V,Te,ne;if(y){if(!(!r||!this.states))if((N==null?void 0:N.type)==="file")this.setState({viewFileDialog:i});else if(e.data.url&&Y.ctrlKey){if((V=this.states[i])!=null&&V.val&&typeof this.states[i].val=="string")if((N==null?void 0:N.role)==="url.self")window.location.href=this.states[i].val;else{const pe=window.open(this.states[i].val,"_blank");pe==null||pe.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(i,!0).catch(pe=>window.alert(`Cannot write state "${i}": ${pe}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(i,!this.states[i].val).catch(pe=>window.alert(`Cannot write state "${i}": ${pe}`)):(this.edit={val:this.states[i]?this.states[i].val:"",q:this.states[i]&&this.states[i].q||0,ack:!1,id:i},this.setState({updateOpened:!0}))}else(N==null?void 0:N.role)==="url"||(N==null?void 0:N.role)==="url.blank"&&Y.ctrlKey?(Te=this.states[i])!=null&&Te.val&&typeof this.states[i].val=="string"&&window.open(this.states[i].val,"_blank"):(N==null?void 0:N.role)==="url.self"&&Y.ctrlKey&&(ne=this.states[i])!=null&&ne.val&&typeof this.states[i].val=="string"&&(window.location.href=this.states[i].val)}},ae):null,me=$||this.columnsVisibility.buttons?a.createElement("div",{style:{...z.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(i,e)):null,rt=null;if(this.props.width==="xs"&&this.state.focused===i){P=P.filter(V=>V);let Y;P.length?Y=P.map(V=>V?a.createElement("div",{key:V.type,style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts[V.type],":"),V.el,a.createElement("div",{style:{flexGrow:1}}),V.onClick?a.createElement(I.Edit,{style:z.cellCopyButtonInDetails,onClick:()=>{V!=null&&V.onClick&&V.onClick()}}):null):null):Y=null,R.length||(R=null),rt=a.createElement(u.Paper,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},a.createElement("div",{style:z.cellDetailsLine},a.createElement("div",{style:{flexGrow:1}}),a.createElement(ut,{style:z.cellCopyButtonInDetails,onClick:V=>this.onCopy(V,i)})),U&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.name,":"),U,a.createElement("div",{style:{flexGrow:1}}),(Di=e.data)!=null&&Di.title?a.createElement(ut,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:V=>{var Te;return this.onCopy(V,(Te=e.data)==null?void 0:Te.title)}}):null),Y,R&&a.createElement("div",{style:z.cellDetailsLine},R),((Ti=this.objects[i])==null?void 0:Ti.type)==="state"&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.value,":"),Ce,a.createElement("div",{style:{flexGrow:1}}),a.createElement(ut,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:V=>{const{valText:Te}=hM({state:this.states[i],obj:this.objects[i],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(V,Te.c!==void 0?Te.c:Te.v.toString())},key:"cc"})),me&&a.createElement("div",{style:{...z.cellDetailsLine,justifyContent:"right"}},me)),U=null,P=null,R=null,Ce=null,me=null}return{row:a.createElement(u.Grid2,{container:!0,direction:"row",wrap:"nowrap",sx:p.getStyle(this.props.theme,z.tableRow,this.state.linesEnabled&&z.tableRowLines,!this.props.dragEnabled&&z.tableRowNoDragging,w&&z.tableRowAlias,k&&z.tableRowAliasReadWrite,this.state.focused===i&&this.props.multiSelect&&z.tableRowFocused,!e.data.visible&&z.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&z.filteredParentOut,this.state.selected.includes(i)&&z.itemSelected,this.state.selectedNonObject===i&&z.itemSelected),key:i,id:i,onMouseDown:Y=>{this.onSelect(i);let V;"which"in Y?V=Y.which===3:"button"in Y&&(V=Y.button===2),V?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(i):this.onSelect(i,!0)}},Z,U,P==null?void 0:P.map(Y=>Y==null?void 0:Y.el),R,Ce,me),details:rt}}renderItem(e,t,M){const i=[];M=M||{count:0};const o=this.renderLeaf(e,t,M);let r;const n=this.props.DragWrapper;return this.props.dragEnabled&&n?e.data.sumVisibility?r=a.createElement(n,{key:e.data.id,item:e,style:z.draggable},o.row):r=a.createElement("div",{key:e.data.id,style:z.nonDraggable},o.row):r=o.row,e.data.id&&r&&i.push(r),o.details&&i.push(o.details),t=t===void 0?bt(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(i.push(e.children.map(c=>c.children&&(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null)),i.push(e.children.map(c=>!c.children&&(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null))):e.children&&i.push(e.children.map(c=>(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null))),i}calculateColumnsVisibility(e,t,M,i){let o=i||this.state.columnsWidths;const r=M||this.state.columnsForAdmin,n=t||this.state.columns||[],c=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(l=>{o[l]&&(o[l]=parseInt(o[l],10)||0)}),this.adapterColumns=[];const N=ie[this.props.width||"lg"].widths;if(c){if(this.columnsVisibility={id:ie[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&N.name||0,nameHeader:this.visibleCols.includes("name")&&N.name||0,type:this.visibleCols.includes("type")&&N.type||0,role:this.visibleCols.includes("role")&&N.role||0,room:this.visibleCols.includes("room")&&N.room||0,func:this.visibleCols.includes("func")&&N.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&N.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&N.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&N.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&N.lastChange||0,val:this.visibleCols.includes("val")&&N.val||0,buttons:this.visibleCols.includes("buttons")&&N.buttons||0},this.columnsVisibility.name&&!this.customWidth){let l=this.columnsVisibility.id||0;this.state.statesView?(l+=this.columnsVisibility.changedFrom||0,l+=this.columnsVisibility.qualityCode||0,l+=this.columnsVisibility.timestamp||0,l+=this.columnsVisibility.lastChange||0):(l+=this.columnsVisibility.type||0,l+=this.columnsVisibility.role||0,l+=this.columnsVisibility.room||0,l+=this.columnsVisibility.func||0),l+=this.columnsVisibility.val||0,l+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${l+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${l+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let l=0;this.state.statesView?(l+=this.columnsVisibility.changedFrom||0,l+=this.columnsVisibility.qualityCode||0,l+=this.columnsVisibility.timestamp||0,l+=this.columnsVisibility.lastChange||0):(l+=this.columnsVisibility.type||0,l+=this.columnsVisibility.role||0,l+=this.columnsVisibility.room||0,l+=this.columnsVisibility.func||0),l+=this.columnsVisibility.val||0,l+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${l+5}px)`}}else{const l=this.props.width||"lg";this.columnsVisibility={id:o.id||ie[l].idWidth,name:n.includes("name")&&(o.name||N.name||ie[l].widths.name)||0,type:n.includes("type")&&(o.type||N.type||ie[l].widths.type)||0,role:n.includes("role")&&(o.role||N.role||ie[l].widths.role)||0,room:n.includes("room")&&(o.room||N.room||ie[l].widths.room)||0,func:n.includes("func")&&(o.func||N.func||ie[l].widths.func)||0};let L=this.columnsVisibility.id;if(this.columnsVisibility.name&&(L+=this.columnsVisibility.type||0,L+=this.columnsVisibility.role||0,L+=this.columnsVisibility.room||0,L+=this.columnsVisibility.func||0),r&&n&&Object.keys(r).sort().forEach(D=>r[D].forEach(y=>{const C=`_${D}_${y.path}`;if(n.includes(C)){const A={adapter:D,id:`_${D}_${y.path}`,name:y.name,path:y.path.split("."),pathText:y.path};y.edit&&(A.edit=!0,y.type&&(A.type=y.type),y.objTypes&&(A.objTypes=y.objTypes)),this.adapterColumns.push(A),this.columnsVisibility[C]=o[A.id]||y.width||ie[l].widths.func||ie.xl.widths.func||0,L+=this.columnsVisibility[C]}else this.columnsVisibility[C]=0})),this.adapterColumns.sort((D,y)=>D.id>y.id?-1:D.id<y.id?1:0),this.columnsVisibility.val=n.includes("val")?o.val||N.val||ie.xl.widths.val:0,(!this.props.columns||this.props.columns.includes("buttons"))&&(this.columnsVisibility.buttons=n.includes("buttons")?o.buttons||N.buttons||ie.xl.widths.buttons:0,L+=this.columnsVisibility.buttons||0),this.columnsVisibility.name&&!o.name)L+=this.columnsVisibility.val||0,this.columnsVisibility.name=`calc(100% - ${L}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${L+5+this.state.scrollBarWidth}px)`;else{const D=Object.keys(this.columnsVisibility).reduce((y,C)=>C==="id"||typeof this.columnsVisibility[C]=="string"||!this.columnsVisibility[C]?y:y+this.columnsVisibility[C],0);this.columnsVisibility.id=`calc(100% - ${D}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,M;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,M=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,M=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||M>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=M,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${M}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=M,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=M-this.state.scrollBarWidth,this.resizerCurrentWidths.name=M-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(ie[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let M=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!M&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,M=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(M==null?void 0:M.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var M,i;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(M=this.tableRef.current)==null||M.childNodes.forEach(N=>o.push(N.id));const r=o.indexOf(t),n=e.code==="ArrowDown"?r+1:r-1,c=o[n]||t;this.onSelect(c),this.scrollToItem(c)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=st.getItemFromRoot(this.root,t);if(o){const{obj:r}=o.data;r&&!((i=r.common)!=null&&i.dontDelete)&&this.showDeleteDialog({id:t,obj:r,item:o})}}}}static getItemFromRoot(e,t){const M=t.split(".");let i="",o=e;for(let r=0;r<M.length;r++){const n=M[r];i=i?`${i}.${n}`:n;let c=!1;if(o.children){for(let N=0;N<o.children.length;N++)if(o.children[N].data.id===i){o=o.children[N],c=!0;break}}if(!c)return null}return o||null}resizerReset=()=>{this.customWidth=!1,ie[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return a.createElement(u.Box,{component:"div",className:"iob-ob-resize-handler",sx:{...z.resizeHandle,...z.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=a.createElement(u.IconButton,{onClick:()=>this.clearFilter(),style:z.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},a.createElement(Eie,null),a.createElement(I.Close,{style:z.buttonClearFilterIcon}))),this.props.width==="xs"?a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:"100%"}},this.getFilterInput("id"))):a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&a.createElement(a.Fragment,null,this.columnsVisibility.type?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&a.createElement(a.Fragment,null,a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?a.createElement("div",{title:this.texts.filter_custom,style:{...z.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return a.createElement(u.Snackbar,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:a.createElement(u.IconButton,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},a.createElement(I.Close,{fontSize:"small"}))})}getStateNav(){return this.state.editObjectDialog?{mode:"edit",id:this.state.editObjectDialog}:this.state.customDialog&&this.state.customDialog.length===1&&!this.state.customDialogAll?{mode:"settings",id:this.state.customDialog[0]}:this.state.viewFileDialog?{mode:"viewFile",id:this.state.viewFileDialog}:this.state.selected.length===1&&this.state.selected[0]?{mode:"select",id:this.state.selected[0]}:null}static navEqual(e,t){return!e||!t?!e&&!t:e.mode===t.mode&&e.id===t.id}applyNavigateTo(e){this.applyingNav=!0;const t=()=>{this.applyingNav=!1};if(!(e!=null&&e.id)){this.setState({editObjectDialog:"",customDialog:null,viewFileDialog:""},t);return}const{id:M}=e,i=()=>{e.mode==="edit"?this.setState({editObjectDialog:M,editObjectAlias:!1,customDialog:null,viewFileDialog:""},t):e.mode==="settings"?this.setState({customDialog:[M],customDialogAll:!1,editObjectDialog:"",viewFileDialog:""},t):e.mode==="viewFile"?this.setState({viewFileDialog:M,editObjectDialog:"",customDialog:null},t):this.setState({editObjectDialog:"",customDialog:null,viewFileDialog:""},t)};this.state.selected.length===1&&this.state.selected[0]===M?i():this.onSelect(M,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(M),i()}))}applyInitialNavigateTo(){const e=this.props.navigateTo??null;e!=null&&e.id?(this.lastNav=e,this.applyNavigateTo(e)):this.lastNav=this.getStateNav()}reconcileNavigation(e){var i,o;if(this.props.navigateTo===void 0&&!this.props.onNavigateTo||this.applyingNav)return;const t=this.props.navigateTo??null,M=this.getStateNav();if(st.navEqual(t,M)){this.lastNav=M;return}st.navEqual(t,e.navigateTo??null)?st.navEqual(M,this.lastNav)||(this.lastNav=M,(o=(i=this.props).onNavigateTo)==null||o.call(i,M)):(this.lastNav=t,this.applyNavigateTo(t))}componentDidUpdate(e){if(this.tableRef.current){const t=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==t?setTimeout(()=>this.setState({scrollBarWidth:t}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}this.reconcileNavigation(e)}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return a.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return a.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(M=>this.showError(`Cannot write object: ${M}`)),onClose:t=>{var M,i;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((M=this.objects[this.state.editObjectDialog].common)==null?void 0:M.alias)!==JSON.stringify((i=t.common)==null?void 0:i.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(r=>this.showError(`Cannot write object: ${r}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return a.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return a.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,M)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),M||0)})}showAddDataPointDialog(e,t,M){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:M}})}renderAliasMenu(){return this.state.aliasMenu?a.createElement(u.Menu,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>a.createElement(u.MenuItem,{key:e,onClick:()=>this.onSelect(e)},a.createElement(u.ListItemText,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var D,y,C,A,h,S,k;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,M=[],i=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!i)o="---";else{const w=i.acl?i.type==="state"?i.acl.state:i.acl.object:0,O=i.acl&&(i.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(O).toString(16):Number(w).toString(16)}const r=!this.props.notEditable&&i&&(this.state.filter.expertMode||i.type==="state"||i.type==="channel"||i.type==="device"),n=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",L={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&i&&(this.state.filter.expertMode||ns(t))),icon:a.createElement(I.Edit,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&i&&i.type==="state"&&((D=i.common)==null?void 0:D.type)!=="file"&&(this.state.filter.expertMode||i.common.write!==!1)),icon:a.createElement(I.FormatItalic,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(i==null?void 0:i.type)==="state"&&((y=i.common)==null?void 0:y.type)==="file",icon:a.createElement(I.FindInPage,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(i==null?void 0:i._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&i&&i.type==="state"&&((C=i.common)==null?void 0:C.type)!=="file"),icon:a.createElement(I.Settings,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&r&&this.props.objectBrowserEditRole),icon:a.createElement(I.BorderColor,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!r,icon:a.createElement(I.BedroomParent,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!r,icon:a.createElement(I.Construction,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(i==null?void 0:i.type)==="state"&&((A=i.common)==null?void 0:A.type)!=="file"),icon:a.createElement(I.Link,{style:(h=i==null?void 0:i.common)!=null&&h.alias?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=i==null?void 0:i.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(n||c||N||l),icon:a.createElement(I.Add,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:z.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:c,icon:a.createElement(oo,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:N,icon:a.createElement(ao,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:a.createElement(I.CreateNewFolder,{fontSize:"small"}),visibility:l,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:a.createElement(I.DriveFileRenameOutline,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),O=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(m=>m.startsWith(O))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((S=e.children)!=null&&S.length||i&&!((k=i.common)!=null&&k.dontDelete))),icon:a.createElement(I.Delete,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:i||{},item:e}))}};return Object.keys(L).forEach(w=>{var O,m;L[w].visibility&&(L[w].subMenu?(M.push(a.createElement(u.MenuItem,{key:w,href:"",onClick:d=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:d.target}}),style:L[w].style},a.createElement(u.ListItemIcon,{style:{...L[w].iconStyle,...L[w].listItemIconStyle}},L[w].icon),a.createElement(u.ListItemText,null,L[w].label,"..."),a.createElement("div",{style:{...z.contextMenuKeys,opacity:1}},a.createElement(I.ArrowRight,null)))),((O=this.state.showContextMenu)==null?void 0:O.subItem)===w&&M.push(a.createElement(u.Menu,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(m=L[w].subMenu)==null?void 0:m.map(d=>d.visibility?a.createElement(u.MenuItem,{key:d.label,onClick:d.onClick,style:d.style},a.createElement(u.ListItemIcon,{style:{...d.iconStyle,...d.listItemIconStyle||void 0}},d.icon),a.createElement(u.ListItemText,null,d.label)):null)))):M.push(a.createElement(u.MenuItem,{key:w,onClick:L[w].onClick,sx:L[w].style},a.createElement(u.ListItemIcon,{style:{...L[w].iconStyle,...L[w].listItemIconStyle}},L[w].icon),a.createElement(u.ListItemText,null,L[w].label),L[w].key?a.createElement("div",{style:z.contextMenuKeys},`Alt+${L[w].key==="Delete"?this.props.t("ra_Del"):L[w].key}`):null)))}),M.length?a.createElement(u.Menu,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(L).forEach(O=>{w.key===L[O].key&&L[O].onClick&&L[O].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},M):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var i;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(i=this.objects[this.edit.id].common)!=null&&i.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,M=this.props.objectBrowserValue;return a.createElement(M,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:p.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};QM(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:p.getStyle(this.props.theme,z.cellIdIconFolder),cellIdIconDocument:p.getStyle(this.props.theme,z.cellIdIconDocument),iconDeviceError:p.getStyle(this.props.theme,z.iconDeviceError),iconDeviceConnected:p.getStyle(this.props.theme,z.iconDeviceConnected),iconDeviceDisconnected:p.getStyle(this.props.theme,z.iconDeviceDisconnected),cellButtonsButtonWithCustoms:p.getStyle(this.props.theme,z.cellButtonsButtonWithCustoms),invertedBackground:p.getStyle(this.props.theme,z.invertedBackground),invertedBackgroundFlex:p.getStyle(this.props.theme,z.invertedBackgroundFlex),contextMenuEdit:p.getStyle(this.props.theme,z.contextMenuEdit),contextMenuEditValue:p.getStyle(this.props.theme,z.contextMenuEditValue),contextMenuView:p.getStyle(this.props.theme,z.contextMenuView),contextMenuCustom:p.getStyle(this.props.theme,z.contextMenuCustom),contextMenuACL:p.getStyle(this.props.theme,z.contextMenuACL),contextMenuRoom:p.getStyle(this.props.theme,z.contextMenuRoom),contextMenuRole:p.getStyle(this.props.theme,z.contextMenuRole),contextMenuDelete:p.getStyle(this.props.theme,z.contextMenuDelete),filterInput:p.getStyle(this.props.theme,z.headerCellInput,z.filterInput),iconCopy:p.getStyle(this.props.theme,z.cellButtonsValueButton,z.cellButtonsValueButtonCopy),aliasReadWrite:p.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasReadWrite),aliasAlone:p.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return a.createElement(u.CircularProgress,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return a.createElement(pie,{key:this.props.dialogName},a.createElement("style",null,`
|
|
587
|
+
`)},A&&((ci=this.states[i])!=null&&ci.from)?h:null),type:"from"}:null,$&&_||this.columnsVisibility.qualityCode?{el:a.createElement("div",{key:"q",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.qualityCode:void 0},title:_||""},_),type:"quality"}:null,$&&A&&((Ni=this.states[i])!=null&&Ni.ts)||this.columnsVisibility.timestamp?{el:a.createElement("div",{key:"ts",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.timestamp:void 0}},A&&((ui=this.states[i])!=null&&ui.ts)?p.formatDate(new Date(this.states[i].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"ts"}:null,$&&A&&((li=this.states[i])!=null&&li.lc)||this.columnsVisibility.lastChange?{el:a.createElement("div",{key:"lc",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.lastChange:void 0}},A&&((Li=this.states[i])!=null&&Li.lc)?p.formatDate(new Date(this.states[i].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null),type:"lc"}:null]:P=[$&&(r!=null&&r.type)||this.columnsVisibility.type?{el:a.createElement("div",{key:"type",style:{...z.cellType,width:this.props.width!=="xs"?this.columnsVisibility.type:void 0}},l," ",r==null?void 0:r.type),type:"filter_type"}:null,$&&N||this.columnsVisibility.role?{el:a.createElement("div",{key:"role",style:{...z.cellRole,width:this.props.width!=="xs"?this.columnsVisibility.role:"100%",cursor:this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?"text":"default"},onClick:!$&&this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},N==null?void 0:N.role),type:"filter_role",onClick:$&&this.state.filter.expertMode&&C&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0}:null,$&&N||this.columnsVisibility.room?{el:a.createElement("div",{key:"room",style:{...z.cellRoom,...e.data.per?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.room:"100%",cursor:C?"text":"default"},onClick:!$&&C?()=>{const Y=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Y)}})}:void 0},e.data.rooms),type:"filter_room",onClick:$&&C?()=>{const Y=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(Y)}})}:void 0}:null,$&&N||this.columnsVisibility.func?{el:a.createElement("div",{key:"func",style:{...z.cellFunc,...e.data.pef?z.cellEnumParent:{},width:this.props.width!=="xs"?this.columnsVisibility.func:"100%",cursor:C?"text":"default"},onClick:!$&&C?()=>{const Y=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Y)}})}:void 0},e.data.funcs),type:"filter_func",onClick:$&&C?()=>{const Y=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:Y,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(Y)}})}:void 0}:null];let R=((ji=this.adapterColumns)==null?void 0:ji.map(Y=>a.createElement("div",{style:{...z.cellAdapter,width:this.props.width!=="xs"?this.columnsVisibility[Y.id]:void 0},key:Y.id,title:`${Y.adapter} => ${Y.pathText}`},r?this.renderCustomValue(r,Y,e):null)))||null;const ae=$||this.columnsVisibility.val?this.renderColumnValue(i,e,$):null;let Ce=$&&ae||this.columnsVisibility.val?a.createElement("div",{"data-eos-object-value-cell":i,"data-eos-object-writable":y?"1":"0",className:"eos-object-value-cell",title:y?"Wert klicken, um zu schreiben oder sofort zu testen":"Statusinformationen anzeigen",style:{...z.cellValue,width:this.props.width!=="xs"?this.columnsVisibility.val:"calc(100% - 100px)",cursor:y?(N==null?void 0:N.type)==="file"?"zoom-in":"pointer":"default"},onClick:Y=>{var V,Te,ne;if(y){if(!(!r||!this.states))if((N==null?void 0:N.type)==="file")this.setState({viewFileDialog:i});else if(e.data.url&&Y.ctrlKey){if((V=this.states[i])!=null&&V.val&&typeof this.states[i].val=="string")if((N==null?void 0:N.role)==="url.self")window.location.href=this.states[i].val;else{const pe=window.open(this.states[i].val,"_blank");pe==null||pe.focus()}}else!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(i,{val:!0,ack:!1,q:0}).catch(pe=>window.alert(`Cannot write state "${i}": ${pe}`)):!this.state.filter.expertMode&&e.data.switch?this.props.socket.setState(i,{val:!this.states[i].val,ack:!1,q:0}).catch(pe=>window.alert(`Cannot write state "${i}": ${pe}`)):(this.edit={val:this.states[i]?this.states[i].val:"",q:this.states[i]&&this.states[i].q||0,ack:!1,id:i},this.setState({updateOpened:!0}))}else(N==null?void 0:N.role)==="url"||(N==null?void 0:N.role)==="url.blank"&&Y.ctrlKey?(Te=this.states[i])!=null&&Te.val&&typeof this.states[i].val=="string"&&window.open(this.states[i].val,"_blank"):(N==null?void 0:N.role)==="url.self"&&Y.ctrlKey&&(ne=this.states[i])!=null&&ne.val&&typeof this.states[i].val=="string"&&(window.location.href=this.states[i].val)}},ae):null,me=$||this.columnsVisibility.buttons?a.createElement("div",{style:{...z.cellButtons,width:this.props.width!=="xs"?this.columnsVisibility.buttons:void 0}},this.renderColumnButtons(i,e)):null,rt=null;if(this.props.width==="xs"&&this.state.focused===i){P=P.filter(V=>V);let Y;P.length?Y=P.map(V=>V?a.createElement("div",{key:V.type,style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts[V.type],":"),V.el,a.createElement("div",{style:{flexGrow:1}}),V.onClick?a.createElement(I.Edit,{style:z.cellCopyButtonInDetails,onClick:()=>{V!=null&&V.onClick&&V.onClick()}}):null):null):Y=null,R.length||(R=null),rt=a.createElement(u.Paper,{style:{width:"100%",display:"flex",flexDirection:"column",padding:10,backgroundColor:this.props.theme.palette.mode==="dark"?"#333":"#ccc"}},a.createElement("div",{style:z.cellDetailsLine},a.createElement("div",{style:{flexGrow:1}}),a.createElement(ut,{style:z.cellCopyButtonInDetails,onClick:V=>this.onCopy(V,i)})),U&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.name,":"),U,a.createElement("div",{style:{flexGrow:1}}),(Di=e.data)!=null&&Di.title?a.createElement(ut,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:V=>{var Te;return this.onCopy(V,(Te=e.data)==null?void 0:Te.title)}}):null),Y,R&&a.createElement("div",{style:z.cellDetailsLine},R),((Ti=this.objects[i])==null?void 0:Ti.type)==="state"&&a.createElement("div",{style:z.cellDetailsLine},a.createElement("span",{style:z.cellDetailsName},this.texts.value,":"),Ce,a.createElement("div",{style:{flexGrow:1}}),a.createElement(ut,{className:"copyButton",style:z.cellCopyButtonInDetails,onClick:V=>{const{valText:Te}=hM({state:this.states[i],obj:this.objects[i],texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma});this.onCopy(V,Te.c!==void 0?Te.c:Te.v.toString())},key:"cc"})),me&&a.createElement("div",{style:{...z.cellDetailsLine,justifyContent:"right"}},me)),U=null,P=null,R=null,Ce=null,me=null}return{row:a.createElement(u.Grid2,{container:!0,direction:"row",wrap:"nowrap",sx:p.getStyle(this.props.theme,z.tableRow,this.state.linesEnabled&&z.tableRowLines,!this.props.dragEnabled&&z.tableRowNoDragging,w&&z.tableRowAlias,k&&z.tableRowAliasReadWrite,this.state.focused===i&&this.props.multiSelect&&z.tableRowFocused,!e.data.visible&&z.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&z.filteredParentOut,this.state.selected.includes(i)&&z.itemSelected,this.state.selectedNonObject===i&&z.itemSelected),key:i,id:i,onMouseDown:Y=>{this.onSelect(i);let V;"which"in Y?V=Y.which===3:"button"in Y&&(V=Y.button===2),V?this.contextMenu={item:e,ts:Date.now()}:this.contextMenu=null},onDoubleClick:()=>{e.children?this.toggleExpanded(i):this.onSelect(i,!0)}},Z,U,P==null?void 0:P.map(Y=>Y==null?void 0:Y.el),R,Ce,me),details:rt}}renderItem(e,t,M){const i=[];M=M||{count:0};const o=this.renderLeaf(e,t,M);let r;const n=this.props.DragWrapper;return this.props.dragEnabled&&n?e.data.sumVisibility?r=a.createElement(n,{key:e.data.id,item:e,style:z.draggable},o.row):r=a.createElement("div",{key:e.data.id,style:z.nonDraggable},o.row):r=o.row,e.data.id&&r&&i.push(r),o.details&&i.push(o.details),t=t===void 0?bt(this.state.expanded,e.data.id):t,(!e.data.id||t)&&(this.state.foldersFirst?e.children&&(i.push(e.children.map(c=>c.children&&(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null)),i.push(e.children.map(c=>!c.children&&(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null))):e.children&&i.push(e.children.map(c=>(!this.state.columnsSelectorShow||M.count<15)&&c.data.sumVisibility?this.renderItem(c,void 0,M):null))),i}calculateColumnsVisibility(e,t,M,i){let o=i||this.state.columnsWidths;const r=M||this.state.columnsForAdmin,n=t||this.state.columns||[],c=typeof e!="boolean"?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach(l=>{o[l]&&(o[l]=parseInt(o[l],10)||0)}),this.adapterColumns=[];const N=ie[this.props.width||"lg"].widths;if(c){if(this.columnsVisibility={id:ie[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&N.name||0,nameHeader:this.visibleCols.includes("name")&&N.name||0,type:this.visibleCols.includes("type")&&N.type||0,role:this.visibleCols.includes("role")&&N.role||0,room:this.visibleCols.includes("room")&&N.room||0,func:this.visibleCols.includes("func")&&N.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&N.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&N.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&N.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&N.lastChange||0,val:this.visibleCols.includes("val")&&N.val||0,buttons:this.visibleCols.includes("buttons")&&N.buttons||0},this.columnsVisibility.name&&!this.customWidth){let l=this.columnsVisibility.id||0;this.state.statesView?(l+=this.columnsVisibility.changedFrom||0,l+=this.columnsVisibility.qualityCode||0,l+=this.columnsVisibility.timestamp||0,l+=this.columnsVisibility.lastChange||0):(l+=this.columnsVisibility.type||0,l+=this.columnsVisibility.role||0,l+=this.columnsVisibility.room||0,l+=this.columnsVisibility.func||0),l+=this.columnsVisibility.val||0,l+=this.columnsVisibility.buttons||0,this.columnsVisibility.name=`calc(100% - ${l+5}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${l+5+this.state.scrollBarWidth}px)`}else if(!this.customWidth){let l=0;this.state.statesView?(l+=this.columnsVisibility.changedFrom||0,l+=this.columnsVisibility.qualityCode||0,l+=this.columnsVisibility.timestamp||0,l+=this.columnsVisibility.lastChange||0):(l+=this.columnsVisibility.type||0,l+=this.columnsVisibility.role||0,l+=this.columnsVisibility.room||0,l+=this.columnsVisibility.func||0),l+=this.columnsVisibility.val||0,l+=this.columnsVisibility.buttons||0,this.columnsVisibility.id=`calc(100% - ${l+5}px)`}}else{const l=this.props.width||"lg";this.columnsVisibility={id:o.id||ie[l].idWidth,name:n.includes("name")&&(o.name||N.name||ie[l].widths.name)||0,type:n.includes("type")&&(o.type||N.type||ie[l].widths.type)||0,role:n.includes("role")&&(o.role||N.role||ie[l].widths.role)||0,room:n.includes("room")&&(o.room||N.room||ie[l].widths.room)||0,func:n.includes("func")&&(o.func||N.func||ie[l].widths.func)||0};let L=this.columnsVisibility.id;if(this.columnsVisibility.name&&(L+=this.columnsVisibility.type||0,L+=this.columnsVisibility.role||0,L+=this.columnsVisibility.room||0,L+=this.columnsVisibility.func||0),r&&n&&Object.keys(r).sort().forEach(D=>r[D].forEach(y=>{const C=`_${D}_${y.path}`;if(n.includes(C)){const A={adapter:D,id:`_${D}_${y.path}`,name:y.name,path:y.path.split("."),pathText:y.path};y.edit&&(A.edit=!0,y.type&&(A.type=y.type),y.objTypes&&(A.objTypes=y.objTypes)),this.adapterColumns.push(A),this.columnsVisibility[C]=o[A.id]||y.width||ie[l].widths.func||ie.xl.widths.func||0,L+=this.columnsVisibility[C]}else this.columnsVisibility[C]=0})),this.adapterColumns.sort((D,y)=>D.id>y.id?-1:D.id<y.id?1:0),this.columnsVisibility.val=n.includes("val")?o.val||N.val||ie.xl.widths.val:0,(!this.props.columns||this.props.columns.includes("buttons"))&&(this.columnsVisibility.buttons=n.includes("buttons")?o.buttons||N.buttons||ie.xl.widths.buttons:0,L+=this.columnsVisibility.buttons||0),this.columnsVisibility.name&&!o.name)L+=this.columnsVisibility.val||0,this.columnsVisibility.name=`calc(100% - ${L}px)`,this.columnsVisibility.nameHeader=`calc(100% - ${L+5+this.state.scrollBarWidth}px)`;else{const D=Object.keys(this.columnsVisibility).reduce((y,C)=>C==="id"||typeof this.columnsVisibility[C]=="string"||!this.columnsVisibility[C]?y:y+this.columnsVisibility[C],0);this.columnsVisibility.id=`calc(100% - ${D}px)`}}}resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,M;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,M=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,M=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||M>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=M,this.resizerActiveDiv.style.width=`${t}px`,this.resizerNextDiv&&(this.resizerNextDiv.style.width=`${M}px`),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=M,this.resizerNextName==="nameHeader"?(this.columnsVisibility.name=M-this.state.scrollBarWidth,this.resizerCurrentWidths.name=M-this.state.scrollBarWidth):this.resizerActiveName==="nameHeader"&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=null,this.forceUpdate()},200))}};resizerMouseUp=()=>{this.localStorage.setItem(`${this.props.dialogName||"App"}.table`,JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)};resizerMouseDown=e=>{if(this.storedWidths||=JSON.parse(JSON.stringify(ie[this.props.width||"lg"])),this.resizerCurrentWidths||={},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if(e.target.dataset.left==="true"){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let M=this.resizerNextDiv.querySelector(".iob-ob-resize-handler");for(;this.resizerNextDiv&&!M&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,M=this.resizerNextDiv.querySelector(".iob-ob-resize-handler"),t++;(M==null?void 0:M.dataset.left)!=="true"&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}};navigateKeyPress(e){var M,i;const t=this.state.selectedNonObject||this.state.selected[0];if(t){if(e.code==="ArrowUp"||e.code==="ArrowDown"){e.preventDefault();const o=[];(M=this.tableRef.current)==null||M.childNodes.forEach(N=>o.push(N.id));const r=o.indexOf(t),n=e.code==="ArrowDown"?r+1:r-1,c=o[n]||t;this.onSelect(c),this.scrollToItem(c)}if((e.code==="ArrowRight"||e.code==="ArrowLeft")&&this.toggleExpanded(t),e.code==="Delete"&&this.root&&t){const o=st.getItemFromRoot(this.root,t);if(o){const{obj:r}=o.data;r&&!((i=r.common)!=null&&i.dontDelete)&&this.showDeleteDialog({id:t,obj:r,item:o})}}}}static getItemFromRoot(e,t){const M=t.split(".");let i="",o=e;for(let r=0;r<M.length;r++){const n=M[r];i=i?`${i}.${n}`:n;let c=!1;if(o.children){for(let N=0;N<o.children.length;N++)if(o.children[N].data.id===i){o=o.children[N],c=!0;break}}if(!c)return null}return o||null}resizerReset=()=>{this.customWidth=!1,ie[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem(`${this.props.dialogName||"App"}.table`),this.forceUpdate()};renderHandleRight(){return a.createElement(u.Box,{component:"div",className:"iob-ob-resize-handler",sx:{...z.resizeHandle,...z.resizeHandleRight},onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){let e=null;return!this.columnsVisibility.buttons&&!this.isFilterEmpty()&&(e=a.createElement(u.IconButton,{onClick:()=>this.clearFilter(),style:z.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},a.createElement(Eie,null),a.createElement(I.Close,{style:z.buttonClearFilterIcon}))),this.props.width==="xs"?a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:"100%"}},this.getFilterInput("id"))):a.createElement("div",{style:z.headerRow},a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&a.createElement(a.Fragment,null,this.columnsVisibility.type?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?a.createElement("div",{style:{...z.headerCell,width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&a.createElement(a.Fragment,null,a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map(t=>a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name)),this.columnsVisibility.val?a.createElement("div",{style:{...z.headerCell,...z.headerCellValue,width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),e):null,this.columnsVisibility.buttons?a.createElement("div",{title:this.texts.filter_custom,style:{...z.headerCell,width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return a.createElement(u.Snackbar,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:a.createElement(u.IconButton,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},a.createElement(I.Close,{fontSize:"small"}))})}getStateNav(){return this.state.editObjectDialog?{mode:"edit",id:this.state.editObjectDialog}:this.state.customDialog&&this.state.customDialog.length===1&&!this.state.customDialogAll?{mode:"settings",id:this.state.customDialog[0]}:this.state.viewFileDialog?{mode:"viewFile",id:this.state.viewFileDialog}:this.state.selected.length===1&&this.state.selected[0]?{mode:"select",id:this.state.selected[0]}:null}static navEqual(e,t){return!e||!t?!e&&!t:e.mode===t.mode&&e.id===t.id}applyNavigateTo(e){this.applyingNav=!0;const t=()=>{this.applyingNav=!1};if(!(e!=null&&e.id)){this.setState({editObjectDialog:"",customDialog:null,viewFileDialog:""},t);return}const{id:M}=e,i=()=>{e.mode==="edit"?this.setState({editObjectDialog:M,editObjectAlias:!1,customDialog:null,viewFileDialog:""},t):e.mode==="settings"?this.setState({customDialog:[M],customDialogAll:!1,editObjectDialog:"",viewFileDialog:""},t):e.mode==="viewFile"?this.setState({viewFileDialog:M,editObjectDialog:"",customDialog:null},t):this.setState({editObjectDialog:"",customDialog:null,viewFileDialog:""},t)};this.state.selected.length===1&&this.state.selected[0]===M?i():this.onSelect(M,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(M),i()}))}applyInitialNavigateTo(){const e=this.props.navigateTo??null;e!=null&&e.id?(this.lastNav=e,this.applyNavigateTo(e)):this.lastNav=this.getStateNav()}reconcileNavigation(e){var i,o;if(this.props.navigateTo===void 0&&!this.props.onNavigateTo||this.applyingNav)return;const t=this.props.navigateTo??null,M=this.getStateNav();if(st.navEqual(t,M)){this.lastNav=M;return}st.navEqual(t,e.navigateTo??null)?st.navEqual(M,this.lastNav)||(this.lastNav=M,(o=(i=this.props).onNavigateTo)==null||o.call(i,M)):(this.lastNav=t,this.applyNavigateTo(t))}componentDidUpdate(e){if(this.tableRef.current){const t=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==t?setTimeout(()=>this.setState({scrollBarWidth:t}),100):this.selectFirst&&this.scrollToItem(this.selectFirst)}this.reconcileNavigation(e)}scrollToItem(e){this.selectFirst="";const t=window.document.getElementById(e);t==null||t.scrollIntoView({behavior:"auto",block:"center",inline:"center"})}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return a.createElement(e,{reportChangedIds:t=>this.changedIds=[...t],objectIDs:this.state.customDialog,allVisibleObjects:!!this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var t;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),(t=this.props.router)==null||t.doNavigate("tab-objects")},systemConfig:this.systemConfig})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch(t=>this.showError(`Cannot write value: ${t}`))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return a.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,theme:this.props.theme,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:!!this.state.filter.expertMode,onNewObject:t=>this.props.socket.setObject(t._id,t).then(()=>this.setState({editObjectDialog:t._id,editObjectAlias:!1},()=>this.onSelect(t._id))).catch(M=>this.showError(`Cannot write object: ${M}`)),onClose:t=>{var M,i;if(t){let o;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify((M=this.objects[this.state.editObjectDialog].common)==null?void 0:M.alias)!==JSON.stringify((i=t.common)==null?void 0:i.alias)&&(o=this.state.editObjectDialog),this.props.socket.setObject(t._id,t).then(()=>{o&&this.subscribes.includes(o)&&(this.unsubscribe(o),setTimeout(()=>this.subscribe(o),100))}).catch(r=>this.showError(`Cannot write object: ${r}`))}this.setState({editObjectDialog:"",editObjectAlias:!1})},width:this.props.width})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return a.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return a.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],roleArray:this.info.roles,objects:this.objects,socket:this.props.socket,t:this.props.t,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(t,M)=>setTimeout(()=>this.onSelect(t,!1,()=>this.expandAllSelected(()=>{this.scrollToItem(t),setTimeout(()=>this.setState({editObjectDialog:t,showAliasEditor:"",editObjectAlias:!0}),300)})),M||0)})}showAddDataPointDialog(e,t,M){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:M}})}renderAliasMenu(){return this.state.aliasMenu?a.createElement(u.Menu,{key:"aliasmenu",open:!0,anchorEl:window.document.getElementById(`alias_${this.state.aliasMenu}`),onClose:()=>this.setState({aliasMenu:""})},this.info.aliasesMap[this.state.aliasMenu].map((e,t)=>a.createElement(u.MenuItem,{key:e,onClick:()=>this.onSelect(e)},a.createElement(u.ListItemText,null,this.renderAliasLink(this.state.aliasMenu,t,{"& .admin-browser-arrow":{mr:"8px"}}))))):null}renderContextMenu(){var D,y,C,A,h,S,k;if(!this.state.showContextMenu)return null;const e=this.state.showContextMenu.item,t=e.data.id,M=[],i=e.data.obj;let o="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(!i)o="---";else{const w=i.acl?i.type==="state"?i.acl.state:i.acl.object:0,O=i.acl&&(i.type==="state"?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);o=Number.isNaN(Number(w))?Number(O).toString(16):Number(w).toString(16)}const r=!this.props.notEditable&&i&&(this.state.filter.expertMode||i.type==="state"||i.type==="channel"||i.type==="device"),n=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="channel"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",c=!e.data.obj||e.data.obj.type==="folder"||e.data.obj.type==="device"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",N=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",l=!e.data.obj||e.data.obj.type==="folder"||e.data.id==="0_userdata.0"||e.data.obj.type==="meta",L={EDIT:{key:"0",visibility:!!(this.props.objectBrowserEditObject&&i&&(this.state.filter.expertMode||ns(t))),icon:a.createElement(I.Edit,{fontSize:"small",style:this.styles.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:e.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!!(this.states&&!this.props.notEditable&&i&&i.type==="state"&&((D=i.common)==null?void 0:D.type)!=="file"&&(this.state.filter.expertMode||i.common.write!==!1)),icon:a.createElement(I.FormatItalic,{fontSize:"small",style:this.styles.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{var w;this.edit={val:this.states[t]?this.states[t].val:"",q:((w=this.states[t])==null?void 0:w.q)||0,ack:!1,id:t},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&(i==null?void 0:i.type)==="state"&&((y=i.common)==null?void 0:y.type)==="file",icon:a.createElement(I.FindInPage,{fontSize:"small",style:this.styles.contextMenuView}),label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(i==null?void 0:i._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&i&&i.type==="state"&&((C=i.common)==null?void 0:C.type)!=="file"),icon:a.createElement(I.Settings,{fontSize:"small",style:e.data.hasCustoms?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),style:this.styles.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var w;this.pauseSubscribe(!0),(w=this.props.router)==null||w.doNavigate(null,"customs",t),this.setState({customDialog:[t],showContextMenu:null})}},ACL:{key:"3",visibility:!!o,icon:o,iconStyle:{fontSize:"smaller"},listItemIconStyle:this.styles.contextMenuACL,style:this.styles.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:e.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&r&&this.props.objectBrowserEditRole),icon:a.createElement(I.BorderColor,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:e.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!r,icon:a.createElement(I.BedroomParent,{fontSize:"small",style:this.styles.contextMenuRole}),label:this.props.t("ra_Edit function"),onClick:()=>{const w=lt(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!r,icon:a.createElement(I.Construction,{fontSize:"small",style:this.styles.contextMenuRoom}),label:this.props.t("ra_Edit room"),onClick:()=>{const w=lt(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:w,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(w)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!!(!this.props.notEditable&&this.props.objectBrowserAliasEditor&&this.props.objectBrowserEditObject&&(i==null?void 0:i.type)==="state"&&((A=i.common)==null?void 0:A.type)!=="file"),icon:a.createElement(I.Link,{style:(h=i==null?void 0:i.common)!=null&&h.alias?this.styles.cellButtonsButtonWithCustoms:z.cellButtonsButtonWithoutCustoms}),label:this.info.aliasesMap[e.data.id]||e.data.id.startsWith("alias.0.")?this.props.t("ra_Edit alias"):this.props.t("ra_Create alias"),onClick:()=>{var w;(w=i==null?void 0:i.common)!=null&&w.alias?this.setState({showContextMenu:null,editObjectDialog:e.data.id,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:e.data.id})}},CREATE:{key:"+",visibility:(e.data.id.startsWith("0_userdata.0")||e.data.id.startsWith("javascript."))&&(n||c||N||l),icon:a.createElement(I.Add,{fontSize:"small",style:this.styles.cellButtonsButtonWithCustoms}),style:z.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","number")},{label:this.texts.createStringState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state","string")},{label:this.texts.createState,visibility:n,icon:a.createElement(kt,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"state")},{label:this.texts.createChannel,visibility:c,icon:a.createElement(oo,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"channel")},{label:this.texts.createDevice,visibility:N,icon:a.createElement(ao,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(e.data.id,"device")},{label:this.texts.createFolder,icon:a.createElement(I.CreateNewFolder,{fontSize:"small"}),visibility:l,onClick:()=>this.showAddDataPointDialog(e.data.id,"folder")}]},RENAME:{key:"8",visibility:!!(!this.props.notEditable&&this.props.objectMoveRenameDialog&&!e.data.id.startsWith("system.")&&e.data.id.split(".").length>2&&(this.props.expertMode||e.data.id.startsWith("javascript.0.")||e.data.id.startsWith("0_userdata.0."))),icon:a.createElement(I.DriveFileRenameOutline,null),label:this.props.t("ra_Rename_Move_Copy"),onClick:()=>{const w=Object.keys(this.objects),O=`${e.data.id}.`;this.setState({showContextMenu:null,showRenameDialog:{id:e.data.id,childrenIds:w.filter(m=>m.startsWith(O))}})}},DELETE:{key:"Delete",visibility:!!(this.props.onObjectDelete&&((S=e.children)!=null&&S.length||i&&!((k=i.common)!=null&&k.dontDelete))),icon:a.createElement(I.Delete,{fontSize:"small",style:this.styles.contextMenuDelete}),style:this.styles.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},()=>this.showDeleteDialog({id:t,obj:i||{},item:e}))}};return Object.keys(L).forEach(w=>{var O,m;L[w].visibility&&(L[w].subMenu?(M.push(a.createElement(u.MenuItem,{key:w,href:"",onClick:d=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position,subItem:w,subAnchor:d.target}}),style:L[w].style},a.createElement(u.ListItemIcon,{style:{...L[w].iconStyle,...L[w].listItemIconStyle}},L[w].icon),a.createElement(u.ListItemText,null,L[w].label,"..."),a.createElement("div",{style:{...z.contextMenuKeys,opacity:1}},a.createElement(I.ArrowRight,null)))),((O=this.state.showContextMenu)==null?void 0:O.subItem)===w&&M.push(a.createElement(u.Menu,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,position:this.state.showContextMenu.position}}),this.contextMenu=null}},(m=L[w].subMenu)==null?void 0:m.map(d=>d.visibility?a.createElement(u.MenuItem,{key:d.label,onClick:d.onClick,style:d.style},a.createElement(u.ListItemIcon,{style:{...d.iconStyle,...d.listItemIconStyle||void 0}},d.icon),a.createElement(u.ListItemText,null,d.label)):null)))):M.push(a.createElement(u.MenuItem,{key:w,onClick:L[w].onClick,sx:L[w].style},a.createElement(u.ListItemIcon,{style:{...L[w].iconStyle,...L[w].listItemIconStyle}},L[w].icon),a.createElement(u.ListItemText,null,L[w].label),L[w].key?a.createElement("div",{style:z.contextMenuKeys},`Alt+${L[w].key==="Delete"?this.props.t("ra_Del"):L[w].key}`):null)))}),M.length?a.createElement(u.Menu,{key:"contextMenu",open:!0,onKeyUp:w=>{w.preventDefault(),w.altKey&&Object.keys(L).forEach(O=>{w.key===L[O].key&&L[O].onClick&&L[O].onClick()})},anchorReference:"anchorPosition",anchorPosition:this.state.showContextMenu.position,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},M):(setTimeout(()=>this.setState({showContextMenu:null}),100),null)}renderEditValueDialog(){var i;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`),null;if(!this.objects[this.edit.id])return console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`),null;const e=(i=this.objects[this.edit.id].common)!=null&&i.type?this.objects[this.edit.id].common.type:typeof this.edit.val,t=this.objects[this.edit.id].common.role,M=this.props.objectBrowserValue;return a.createElement(M,{t:this.props.t,lang:this.props.lang,type:e,role:t||"",states:p.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,theme:this.props.theme,expertMode:!!this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:this.props.isFloatComma===void 0?this.systemConfig.common.isFloatComma:this.props.isFloatComma,onClose:o=>{this.setState({updateOpened:!1}),o&&this.onUpdate(o)},width:this.props.width})}doFilter(e){if(!this.objects||!this.root)return;e||this.localStorage.setItem(`${this.props.dialogName||"App"}.objectFilter`,JSON.stringify(this.state.filter));const t={count:0};QM(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!0})):t.count>=500&&this.state.expandAllVisible?setTimeout(()=>this.setState({expandAllVisible:!1})):this.forceUpdate()}render(){if(this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer),this.styleTheme!==this.props.themeType&&(this.styles={cellIdIconFolder:p.getStyle(this.props.theme,z.cellIdIconFolder),cellIdIconDocument:p.getStyle(this.props.theme,z.cellIdIconDocument),iconDeviceError:p.getStyle(this.props.theme,z.iconDeviceError),iconDeviceConnected:p.getStyle(this.props.theme,z.iconDeviceConnected),iconDeviceDisconnected:p.getStyle(this.props.theme,z.iconDeviceDisconnected),cellButtonsButtonWithCustoms:p.getStyle(this.props.theme,z.cellButtonsButtonWithCustoms),invertedBackground:p.getStyle(this.props.theme,z.invertedBackground),invertedBackgroundFlex:p.getStyle(this.props.theme,z.invertedBackgroundFlex),contextMenuEdit:p.getStyle(this.props.theme,z.contextMenuEdit),contextMenuEditValue:p.getStyle(this.props.theme,z.contextMenuEditValue),contextMenuView:p.getStyle(this.props.theme,z.contextMenuView),contextMenuCustom:p.getStyle(this.props.theme,z.contextMenuCustom),contextMenuACL:p.getStyle(this.props.theme,z.contextMenuACL),contextMenuRoom:p.getStyle(this.props.theme,z.contextMenuRoom),contextMenuRole:p.getStyle(this.props.theme,z.contextMenuRole),contextMenuDelete:p.getStyle(this.props.theme,z.contextMenuDelete),filterInput:p.getStyle(this.props.theme,z.headerCellInput,z.filterInput),iconCopy:p.getStyle(this.props.theme,z.cellButtonsValueButton,z.cellButtonsValueButtonCopy),aliasReadWrite:p.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasReadWrite),aliasAlone:p.getStyle(this.props.theme,z.cellIdAlias,z.cellIdAliasAlone)},this.styleTheme=this.props.themeType),this.unsubscribeTimer=setTimeout(()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()},200),this.expertMode!==!!this.state.filter.expertMode&&(this.expertMode=!!this.state.filter.expertMode,this.doFilter(!0)),!this.state.loaded)return a.createElement(u.CircularProgress,{key:`${this.props.dialogName}_c`});const e=this.root?this.renderItem(this.root,void 0):null;return a.createElement(pie,{key:this.props.dialogName},a.createElement("style",null,`
|
|
588
588
|
@keyframes newValueAnimation-light {
|
|
589
589
|
0% {
|
|
590
590
|
color: #00f900;
|
package/adminWww/index.html
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
rel="stylesheet"
|
|
32
32
|
href="css/leaflet.css"
|
|
33
33
|
/>
|
|
34
|
-
<link rel="stylesheet" href="./css/eos-branding.css?v=
|
|
34
|
+
<link rel="stylesheet" href="./css/eos-branding.css?v=40" />
|
|
35
35
|
<link
|
|
36
36
|
rel="manifest"
|
|
37
37
|
href="manifest.json"
|
|
@@ -154,10 +154,10 @@
|
|
|
154
154
|
<script type="module" crossorigin src="./assets/index-CQZugZ1z.js"></script>
|
|
155
155
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
|
|
156
156
|
<link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
|
|
157
|
-
<script defer src="./js/eos-branding.js?v=
|
|
158
|
-
<script defer src="./js/eos-security-ui.js?v=
|
|
159
|
-
<script defer src="./js/eos-assistant.js?v=
|
|
160
|
-
<script defer src="./js/eos-objects-state-tools.js?v=
|
|
157
|
+
<script defer src="./js/eos-branding.js?v=40"></script>
|
|
158
|
+
<script defer src="./js/eos-security-ui.js?v=40"></script>
|
|
159
|
+
<script defer src="./js/eos-assistant.js?v=40"></script>
|
|
160
|
+
<script defer src="./js/eos-objects-state-tools.js?v=40"></script>
|
|
161
161
|
</head>
|
|
162
162
|
<body>
|
|
163
163
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|