iobroker.admin 7.6.13 → 7.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/adminWww/assets/{AdapterUpdateDialog-B8g_ZuhP.js → AdapterUpdateDialog-DnnNHIQJ.js} +1 -1
- package/adminWww/assets/{Adapters-XtPWdL3s.js → Adapters-Ctxos-gw.js} +4 -4
- package/adminWww/assets/{Config-Dhj9WMpz.js → Config-Dyad6_tq.js} +1 -1
- package/adminWww/assets/CustomModal-BNDSg_P8.js +1 -0
- package/adminWww/assets/{CustomTab-CSgGzXlh.js → CustomTab-BEL1ttN8.js} +1 -1
- package/adminWww/assets/{EasyMode-Bwx_UimW.js → EasyMode-3ydknWSd.js} +1 -1
- package/adminWww/assets/{Enums-B-PrqYys.js → Enums-nRoQYhch.js} +2 -2
- package/adminWww/assets/{Fields-CYjxm_8L.js → Fields-Bwvci3VO.js} +1 -1
- package/adminWww/assets/{Files-CsBMd5VX.js → Files-Dzs9GmrC.js} +1 -1
- package/adminWww/assets/{Hosts-D7aAXH9U.js → Hosts-BjpHSLCf.js} +3 -3
- package/adminWww/assets/{Instances-Bj8CqStT.js → Instances-BtTV4PMv.js} +2 -2
- package/adminWww/assets/Intro-DD3K3IVm.js +2 -0
- package/adminWww/assets/{Logs-Bb16bYuu.js → Logs-BXU61QOI.js} +1 -1
- package/adminWww/assets/{Objects-C7k5tHdx.js → Objects-jsWq-neK.js} +2 -2
- package/adminWww/assets/{State-DPLzxZ6D.js → State-CuA1h-bU.js} +1 -1
- package/adminWww/assets/{Users-BQ3pWAxq.js → Users-BFdQMyo4.js} +1 -1
- package/adminWww/assets/{ace-j1VT51C2.js → ace-CI9-Cq3I.js} +2 -2
- package/adminWww/assets/{bootstrap-BNkcLa73.js → bootstrap-FCtLxt0T.js} +14 -14
- package/adminWww/assets/{index-jZ28cZd6.js → index-3IvffoSA.js} +1 -1
- package/adminWww/assets/{index-C6O1p4S2.js → index-DPxBLJAn.js} +2 -2
- package/adminWww/assets/{sentry-9i5rBs6L.js → sentry-BNaNpYqi.js} +1 -1
- package/adminWww/assets/{zh-cn-CULr7ytT.js → zh-cn-CbEN7EL2.js} +1 -1
- package/adminWww/index.html +1 -1
- package/adminWww/mf-manifest.json +1 -1
- package/adminWww/remoteEntry.js +2 -2
- package/io-package.json +15 -15
- package/package.json +12 -7
- package/adminWww/assets/CustomModal-4eTuDNla.js +0 -1
- package/adminWww/assets/Intro-sAT0x17e.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as n}from"./DefaultPropsProvider-BrbE0teb.js";import{Z as Pe,X as ze,Y as Ie,f as M,U as H,b as J,a as C,i as p,a2 as Ne,a3 as Fe,a4 as He,_ as $e,W as Me,a5 as Je,a6 as Ke,$ as Ue,a0 as qe,a1 as Ze,h as Ye,T as Xe}from"./bootstrap-
|
|
1
|
+
import{j as n}from"./DefaultPropsProvider-BrbE0teb.js";import{Z as Pe,X as ze,Y as Ie,f as M,U as H,b as J,a as C,i as p,a2 as Ne,a3 as Fe,a4 as He,_ as $e,W as Me,a5 as Je,a6 as Ke,$ as Ue,a0 as qe,a1 as Ze,h as Ye,T as Xe}from"./bootstrap-FCtLxt0T.js";import{i as P,R as j}from"./iobroker_admin__loadShare__react__loadShare__-DtlEM_52.js";import{I as re,a as Qe,b as et}from"./Fields-Bwvci3VO.js";import{g as Oe,h as je}from"./index-HOidq_rM.js";import{_ as s}from"./preload-helper-C1FmrZbK.js";import"./iobroker_admin__loadShare__prop_mf_2_types__loadShare__-BGyJCibC.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./iobroker_admin__mf_v__runtimeInit__mf_v__-VDoBF19b.js";import"./emotion-serialize.esm-BUa21YfQ.js";import"./iobroker_admin__loadShare___mf_0_emotion_mf_1_react__loadShare__-gw2iqPBS.js";import"./ace-CI9-Cq3I.js";import"./FilledInput-D-tz8rvg.js";import"./blueGrey-B0oIowPK.js";import"./emotion-cache.browser.esm-B8BFze5o.js";import"./iobroker_admin__loadShare__leaflet__loadShare__-B1OZ7tj-.js";import"./extends-CF3RwP-h.js";import"./iconBase-CgxZ5MMC.js";var Le={exports:{}},S={};/** @license React v17.0.2
|
|
2
2
|
* react-is.production.min.js
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
@@ -108,4 +108,4 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
108
108
|
background: #434252;
|
|
109
109
|
}
|
|
110
110
|
/* ====== */`);const ut=j.forwardRef(({className:e,theme:t,draggerClassName:i,direction:r=T.Vertical,onDragging:o},a)=>{const c=`__dbk__gutter ${r} ${e||t}`,u=`__dbk__dragger ${r} ${i||t}`;return n.jsx("div",Object.assign({className:c,ref:a,dir:r,onMouseDown:o,onTouchStart:se?o:void 0},{children:n.jsx("div",{className:u},void 0)}),void 0)});var k;function he(e,t,i){let r,o;return t?(r=e/2,o=e):i?(r=e,o=e/2):(r=e,o=e),{aGutterSize:r,bGutterSize:o}}function pt(e,t){switch(t.type){case k.SetIsReadyToCompute:return Object.assign(Object.assign({},e),{isReady:t.payload.isReady});case k.CreatePairs:{const{direction:i,children:r,gutters:o}=t.payload,a=r[0].parentNode;if(!a)throw new Error("Cannot create pairs - parent is undefined.");const c=ae(i,a);if(c===void 0)throw new Error(`Cannot create pairs - parent has undefined or zero size: ${c}.`);const u=[];return r.forEach((d,h)=>{if(h>0){const g=r[h-1],m=r[h],l=o[h-1],_=i===T.Horizontal?g.getBoundingClientRect().left:g.getBoundingClientRect().top,D=i===T.Horizontal?m.getBoundingClientRect().right:m.getBoundingClientRect().bottom,w=i===T.Horizontal?g.getBoundingClientRect().width+l.getBoundingClientRect().width+m.getBoundingClientRect().width:g.getBoundingClientRect().height+l.getBoundingClientRect().height+m.getBoundingClientRect().height,B=i===T.Horizontal?l.getBoundingClientRect().width:l.getBoundingClientRect().height,$={idx:h-1,a:g,b:m,gutter:l,parent:a,start:_,end:D,size:w,gutterSize:B,aSizePct:100/r.length,bSizePct:100/r.length};u.push($)}}),Object.assign(Object.assign({},e),{pairs:u})}case k.StartDragging:{const{gutterIdx:i}=t.payload;return Object.assign(Object.assign({},e),{isDragging:!0,draggingIdx:i})}case k.StopDragging:return Object.assign(Object.assign({},e),{isDragging:!1});case k.CalculateSizes:{const{direction:i,gutterIdx:r}=t.payload,o=e.pairs[r],a=ae(i,o.parent);if(!a)throw new Error("Cannot calculate sizes - 'pair.parent' has undefined or zero size.");const c=o.gutter[i===T.Horizontal?"clientWidth":"clientHeight"],u=r===0,d=r===e.pairs.length-1,{aGutterSize:h,bGutterSize:g}=he(c,u,d);let m,l,_,D,w;return i===T.Horizontal?(m=o.a.getBoundingClientRect().left,l=o.b.getBoundingClientRect().right,D=(o.a.getBoundingClientRect().width+h)/a*100,w=(o.b.getBoundingClientRect().width+g)/a*100,_=o.a.getBoundingClientRect().width+h+g+o.b.getBoundingClientRect().width):(m=o.a.getBoundingClientRect().top,l=o.b.getBoundingClientRect().bottom,D=(o.a.getBoundingClientRect().height+h)/a*100,w=(o.b.getBoundingClientRect().height+g)/a*100,_=o.a.getBoundingClientRect().height+h+g+o.b.getBoundingClientRect().height),e.pairs[r]=Object.assign(Object.assign({},o),{start:m,end:l,size:_,aSizePct:D,bSizePct:w,gutterSize:c}),Object.assign({},e)}default:return e}}function Ge(e,t=0,i=[]){return P.Children.toArray(e).reduce((r,o,a)=>(mt.isFragment(o)?r.push.apply(r,Ge(o.props.children,t+1,i.concat(o.key||a))):P.isValidElement(o)?r.push(P.cloneElement(o,{key:i.concat(String(o.key)).join(".")})):typeof o!="string"&&typeof o!="number"||r.push(o),r),[])}(function(e){e[e.SetIsReadyToCompute=0]="SetIsReadyToCompute",e[e.CreatePairs=1]="CreatePairs",e[e.CalculateSizes=2]="CalculateSizes",e[e.StartDragging=3]="StartDragging",e[e.StopDragging=4]="StopDragging"})(k||(k={}));const be=e=>"changedTouches"in e;var T,_e;(function(e){e.Horizontal="Horizontal",e.Vertical="Vertical"})(T||(T={})),function(e){e.Light="Light",e.Dark="Dark"}(_e||(_e={}));const se=typeof window<"u"&&"ontouchstart"in window;function ge(e){return e===T.Horizontal?"col-resize":"row-resize"}const gt={isReady:!1,isDragging:!1,pairs:[]};function ht({direction:e=T.Horizontal,minWidths:t=[],minHeights:i=[],initialSizes:r,gutterTheme:o=_e.Dark,gutterClassName:a,draggerClassName:c,children:u,onResizeStarted:d,onResizeFinished:h,classes:g=[]}){const m=Ge(u),[l,_]=P.useReducer(pt,gt),D=P.useRef(null),w=P.useRef([]),B=P.useRef([]);w.current=[],B.current=[];const $=j.useCallback(v=>{_({type:k.SetIsReadyToCompute,payload:{isReady:v}})},[]),We=j.useCallback((v,E)=>{_({type:k.StartDragging,payload:{gutterIdx:E}});const f=l.pairs[E];d==null||d(f.idx),f.a.style.userSelect="none",f.b.style.userSelect="none",f.gutter.style.cursor=ge(v),f.parent.style.cursor=ge(v),document.body.style.cursor=ge(v)},[l.pairs]),me=j.useCallback(()=>{_({type:k.StopDragging});const v=[];for(let f=0;f<l.pairs.length;f++){const b=l.pairs[f],O=ae(e,b.parent);if(O===void 0)throw new Error("Cannot call the 'onResizeFinished' callback - parentSize is undefined");if(b.gutterSize===void 0)throw new Error("Cannot call 'onResizeFinished' callback - gutterSize is undefined");const R=f===0,I=f===l.pairs.length-1,N=b.a.getBoundingClientRect()[e===T.Horizontal?"width":"height"],{aGutterSize:G,bGutterSize:W}=he(b.gutterSize,R,I),A=(N+G)/O*100;if(v.push(A),I){const ie=(b.b.getBoundingClientRect()[e===T.Horizontal?"width":"height"]+W)/O*100;v.push(ie)}}if(l.draggingIdx===void 0)throw new Error("Could not reset cursor and user-select because 'state.draggingIdx' is undefined");const E=l.pairs[l.draggingIdx];h==null||h(E.idx,v),E.a.style.userSelect="",E.b.style.userSelect="",E.gutter.style.cursor="",E.parent.style.cursor="",document.body.style.cursor=""},[l.draggingIdx,l.pairs,e]),ve=j.useCallback((v,E)=>{_({type:k.CalculateSizes,payload:{direction:v,gutterIdx:E}})},[]),Ee=j.useCallback((v,E,f)=>{_({type:k.CreatePairs,payload:{direction:v,children:E,gutters:f}})},[]),ue=j.useCallback((v,E,f,b)=>{const O=E[0].parentNode;if(!O)throw new Error("Cannot set initial sizes - parent is undefined");if(ae(v,O)===void 0)throw new Error("Cannot set initial sizes - parent has undefined size");E.forEach((R,I)=>{const N=I===0,G=I===E.length-1;let W,A=0;E.length>1&&(A=f[G?I-1:I].getBoundingClientRect()[v===T.Horizontal?"width":"height"],A=N||G?A/2:A),W=b&&I<b.length?`calc(${b[I]}% - ${A}px)`:`calc(${100/E.length}% - ${A}px)`,v===T.Horizontal?(R.style.width=W,R.style.height="100%"):(R.style.height=W,R.style.width="100%")})},[]),De=j.useCallback((v,E)=>{if(l.draggingIdx===void 0)throw new Error("Cannot adjust size - 'draggingIdx' is undefined");const f=l.pairs[l.draggingIdx];if(f.size===void 0)throw new Error("Cannot adjust size - 'pair.size' is undefined");if(f.gutterSize===void 0)throw new Error("Cannot adjust size - 'pair.gutterSize' is undefined");const b=f.aSizePct+f.bSizePct,O=E/f.size*b,R=b-E/f.size*b,I=l.draggingIdx===0,N=l.draggingIdx===l.pairs.length-1,{aGutterSize:G,bGutterSize:W}=he(f.gutterSize,I,N),A=`calc(${O}% - ${G}px)`,ie=`calc(${R}% - ${W}px)`;v===T.Horizontal?(f.a.style.width=A,f.b.style.width=ie):(f.a.style.height=A,f.b.style.height=ie)},[l.draggingIdx,l.pairs,e]),pe=j.useCallback((v,E,f)=>{if(!l.isDragging)return;if(l.draggingIdx===void 0)throw new Error("Cannot drag - 'draggingIdx' is undefined");const b=l.pairs[l.draggingIdx];if(b.start===void 0)throw new Error("Cannot drag - 'pair.start' is undefined");if(b.size===void 0)throw new Error("Cannot drag - 'pair.size' is undefined");if(b.gutterSize===void 0)throw new Error("Cannot drag - 'pair.gutterSize' is undefined");let O=function(N,G){const W=be(G)?G.changedTouches[0]:G;return N===T.Horizontal?W.clientX:W.clientY}(E,v)-b.start,R=16,I=16;f.length>l.draggingIdx&&(R=f[l.draggingIdx]),f.length>=l.draggingIdx+1&&(I=f[l.draggingIdx+1]),O<b.gutterSize+R&&(O=b.gutterSize+R),O>=b.size-(b.gutterSize+I)&&(O=b.size-(b.gutterSize+I)),De(E,O)},[l.isDragging,l.draggingIdx,l.pairs,De]),ye=()=>{if(l.isDragging){if(l.draggingIdx===void 0)throw new Error("Cannot calculate sizes after dragging = 'state.draggingIdx' is undefined");ve(e,l.draggingIdx),me()}},Ce=v=>{l.isDragging&&(be(v)&&v.preventDefault(),pe(v,e,e===T.Horizontal?t:i))};function Se(v,E){if(!v.current)throw new Error("Can't add element to ref object - ref isn't initialized");E&&!v.current.includes(E)&&v.current.push(E)}return ne("mouseup",ye,[l.isDragging,me]),ne("mousemove",Ce,[e,l.isDragging,pe,t,i]),ne("touchend",ye,[l.isDragging,me],{condition:se}),ne("touchmove",Ce,[e,l.isDragging,pe,t,i],{condition:se,passive:!se}),P.useEffect(function(){if(!D.current)return;const v=D.current.parentElement;if(!v)return;const E=new ResizeObserver(()=>{const f=getComputedStyle(v),b=e===T.Horizontal?v.clientWidth:v.clientHeight;$(!!f&&!!b)});return E.observe(v),()=>{E.disconnect()}},[D.current,e]),P.useEffect(function(){if(l.isReady&&(!w.current||w.current[0].offsetParent)){if(!w.current||!B.current)throw new Error("Cannot create pairs - either variable 'childRefs' or 'gutterRefs' is undefined");m.length<=1?ue(e,w.current,B.current,r):(ue(e,w.current,B.current,r),Ee(e,w.current,B.current))}},[u,l.isReady,e,ue,Ee,r]),n.jsx("div",Object.assign({className:`__dbk__container ${e}`,ref:D},{children:l.isReady&&m.map((v,E)=>n.jsxs(j.Fragment,{children:[n.jsx("div",Object.assign({ref:f=>Se(w,f),className:"__dbk__child-wrapper "+(E<g.length?g[E]:"")},{children:v}),void 0),E<m.length-1&&n.jsx(ut,{ref:f=>Se(B,f),className:a,theme:o,draggerClassName:c,direction:e,onDragging:()=>{return ve(e,f=E),void We(e,f);var f}},void 0)]},E))}),void 0)}const _t="0 1px 1px 0 rgba(0, 0, 0, .4),0 6px 6px 0 rgba(0, 0, 0, .2)",y={enumGroupCard:e=>({border:"1px solid #FFF",borderColor:e.palette.divider,m:"10px",backgroundColor:e.palette.background.default,color:e.palette.text.primary,transition:"all 200ms ease-out",opacity:1,overflow:"hidden",position:"relative","&:hover":{overflowY:"auto",boxShadow:_t},minHeight:70}),enumGroupCardExpanded:{minHeight:140},enumUpdating:{opacity:.5,position:"relative","&:before":{content:'""',position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:100,opacity:".3 !important",background:"repeating-linear-gradient(135deg, #333, #333 10px, #888 10px, #888 20px)"}},enumCardContent:{height:"100%",opacity:1},right:{float:"right"},enumGroupTitle:{display:"inline-flex",alignItems:"center",cursor:"pointer"},icon:{height:32,width:32,marginRight:5,cursor:"grab",backgroundSize:"cover",backgroundPosition:"center",display:"inline-block"},enumGroupName:{marginLeft:5},enumGroupEnumName:{fontWeight:900},enumGroupEnumID:{opacity:.7,marginLeft:5,fontSize:12,fontStyle:"italic"},enumName:{fontSize:12,fontWeight:700,opacity:.7,marginTop:-4},enumGroupMember:e=>({display:"inline-flex",m:"4px",p:"4px",backgroundColor:"#00000010",border:"1px solid #FFF",borderColor:e.palette.text.primary,color:e.palette.text.primary,alignItems:"center",position:"relative"}),secondLine:{fontSize:9,fontStyle:"italic",whiteSpace:"nowrap",opacity:.5},context:{paddingTop:8,paddingLeft:8,paddingRight:8,paddingBottom:"0 !important"},folderDiv:{display:"inline-block",position:"relative",cursor:"pointer"},folder:{width:48,height:48},folderIcon:{position:"absolute",top:18,left:16,width:18,height:18,zIndex:2},folderIconExpanded:{transform:"skew(147deg, 183deg) scale(0.5) translate(6px, 7px)"},bottomButtons:{position:"absolute",right:0,bottom:0},membersNumber:{top:40,left:26,fontSize:18,position:"absolute"},memberNumberFolder:{top:46,left:26}};class oe extends P.Component{constructor(t){var i,r;super(t),this.state={icons:(r=(i=t.enum)==null?void 0:i.common)!=null&&r.members?t.enum.common.members.map(o=>{var a,c;return((c=(a=t.members[o])==null?void 0:a.common)==null?void 0:c.icon)||""}):[]}}async componentDidMount(){var c,u,d,h;const t=[...this.state.icons];let i=!1;const r=(u=(c=this.props.enum)==null?void 0:c.common)==null?void 0:u.members,o=this.props.cachedIcons;try{if(r){for(let g=0;g<t.length;g++)if(!t[g]){const m=H.getParentId(r[g]);if(o[m]!==void 0){o[m]&&(t[g]=o[m],i=!0);continue}if(m&&m.split(".").length>2){const l=await this.props.socket.getObject(m);if(l&&(l.type==="channel"||l.type==="device")){if((d=l.common)!=null&&d.icon)o[m]=l.common.icon,t[g]=l.common.icon,i=!0;else{const _=H.getParentId(m);if(_&&_.split(".").length>2){const D=await this.props.socket.getObject(_);D&&(D.type==="channel"||D.type==="device")&&(h=D.common)!=null&&h.icon&&(o[_]=D.common.icon,o[m]=D.common.icon,t[g]=D.common.icon,i=!0),o[_]=o[_]||null}}o[m]=o[m]||null}}}}}catch(g){window.alert(`Cannot get icons: ${g}`)}const a=".";if(r){const g=this.props.members;for(let m=0;m<t.length;m++){const l=t[m],_=r[m];if(l&&!l.startsWith("data:image/")&&l.includes(".")){let D;g[_]&&(g[_].type==="instance"||g[_].type==="adapter")?t[m]=`${a}/adapter/${this.props.getName(g[_].common.name)}/${l}`:_&&_.startsWith("system.adapter.")?(D=_.split(".",3),l[0]==="/"?D[2]+=l:D[2]+=`/${l}`,t[m]=`${a}/adapter/${D[2]}`):(D=_.split(".",2),l[0]==="/"?D[0]+=l:D[0]+=`/${l}`,t[m]=`${a}/adapter/${D[0]}`),i=!0}}}i&&this.setState({icons:t})}render(){var c,u,d;const t=this.props,i=(c=t.enum)==null?void 0:c.common,r=H.getInvertedColor(i==null?void 0:i.color,t.themeType,!0),o={opacity:this.props.isDragging?0:1,color:r};i!=null&&i.color&&(o.backgroundColor=t.enum.common.color);let a=i!=null&&i.icon?n.jsx(J,{style:{...y.icon,...t.childrenCount?y.folderIcon:void 0,...t.childrenCount&&!t.closed?y.folderIconExpanded:void 0},src:t.enum.common.icon}):n.jsx(C.List,{style:{...y.icon,...t.childrenCount?y.folderIcon:void 0,...t.childrenCount&&!t.closed?y.folderIconExpanded:void 0}});return a=t.childrenCount?n.jsx("div",{style:y.folderDiv,onClick:()=>t.toggleEnum(t.id),children:t.closed?[n.jsx(Oe,{style:y.folder},1),n.jsx("div",{children:a},2)]:[n.jsx(je,{style:y.folder},1),n.jsx("div",{children:a},2)]}):a,this.props.iconDragRef&&(a=n.jsx("span",{ref:this.props.iconDragRef,children:a})),n.jsxs(p.Card,{style:o,sx:H.getStyle(this.props.theme,y.enumGroupCard,this.props.updating&&y.enumUpdating,!t.collapsed&&y.enumGroupCardExpanded),id:t.id,children:[n.jsxs("div",{style:y.enumCardContent,children:[n.jsxs("div",{style:y.right,children:[t.enum?n.jsx(p.IconButton,{size:"small",onClick:()=>t.showEnumEditDialog(t.enum,!1),children:n.jsx(p.Tooltip,{title:t.t("Edit"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Edit,{style:{color:r}})})}):null,t.enum?n.jsx(p.IconButton,{size:"small",onClick:()=>t.copyEnum(t.id),children:n.jsx(p.Tooltip,{title:t.t("Clone"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.FileCopy,{style:{color:r}})})}):null,n.jsx(p.IconButton,{size:"small",onClick:()=>t.showEnumDeleteDialog(t.enum),disabled:i==null?void 0:i.dontDelete,children:n.jsx(p.Tooltip,{title:t.t("Delete"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Delete,{style:i!=null&&i.dontDelete?null:{color:r}})})})]}),n.jsxs(p.CardContent,{style:y.context,children:[n.jsxs(p.Typography,{gutterBottom:!t.collapsed,component:"div",style:y.enumGroupTitle,onClick:()=>t.onCollapse(t.id),children:[a,n.jsxs("div",{style:y.enumGroupName,children:[n.jsx("span",{style:y.enumGroupEnumName,children:t.name||t.getName(i==null?void 0:i.name)||t.id.split(".").pop()}),n.jsx("span",{style:y.enumGroupEnumID,children:t.idText||t.id}),i!=null&&i.desc?n.jsx("div",{style:y.enumName,children:t.getName(i.desc)}):null]})]}),n.jsx("div",{children:!t.collapsed&&(i!=null&&i.members)?t.enum.common.members.map((h,g)=>{var _,D;const m=t.members[h];if(!m)return null;const l=((_=m.common)==null?void 0:_.name)&&t.getName((D=m.common)==null?void 0:D.name);return n.jsxs(p.Card,{title:l?`${t.t("Name: %s",l)}
|
|
111
|
-
ID: ${m._id}`:m._id,variant:"outlined",sx:y.enumGroupMember,style:{color:r,borderColor:`${r}80`},children:[this.state.icons[g]?n.jsx(J,{style:y.icon,src:this.state.icons[g]}):m.type==="state"?n.jsx(Ne,{style:y.icon}):m.type==="channel"?n.jsx(Fe,{style:y.icon}):m.type==="device"?n.jsx(He,{style:y.icon}):n.jsx(C.List,{style:y.icon}),n.jsxs("div",{children:[l||m._id,l?n.jsx("div",{style:y.secondLine,children:m._id}):null]}),n.jsx(p.IconButton,{size:"small",onClick:()=>t.removeMemberFromEnum(m._id,t.id),children:n.jsx(p.Tooltip,{title:t.t("Remove"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Clear,{style:{color:r}})})})]},m._id)}):(u=i==null?void 0:i.members)!=null&&u.length?n.jsx("div",{style:{...y.membersNumber,...t.childrenCount?y.memberNumberFolder:void 0},children:(d=i==null?void 0:i.members)==null?void 0:d.length}):""})]})]}),n.jsxs("div",{style:y.bottomButtons,children:[n.jsx(p.IconButton,{size:"small",onClick:()=>{["functions","rooms"].includes(t.currentCategory)?t.showEnumTemplateDialog(t.id):t.showEnumEditDialog(t.getEnumTemplate(t.id),!0)},children:n.jsx(p.Tooltip,{title:t.t("Add child"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Add,{style:{color:r}})})}),n.jsx(p.IconButton,{size:"small",onClick:()=>t.onCollapse(t.id),children:n.jsx(p.Tooltip,{title:t.collapsed?t.t("Show members"):t.t("Hide members"),placement:"top",children:t.collapsed?n.jsx(C.KeyboardArrowDown,{style:{color:r}}):n.jsx(C.KeyboardArrowUp,{style:{color:r}})})})]})]})}}function ft(e,t){var i;return!e.getItem()||!e.getItem().data?!0:t?(i=t.common)!=null&&i.members?!t.common.members.includes(e.getItem().data.id):!0:!1}const vt=e=>{var d,h;const[{canDrop:t,isOver:i},r]=Pe(()=>({accept:["object","enum"],drop:()=>({enumId:e.id}),canDrop:(g,m)=>ft(m,e.enum),collect:g=>({isOver:g.isOver(),canDrop:g.canDrop()})}),[(h=(d=e.enum)==null?void 0:d.common)==null?void 0:h.members]),o=P.useRef(null),[{isDragging:a},c,u]=ze({type:"enum",item:()=>{var g;return{enumId:e.id,preview:n.jsx("div",{style:{width:((g=o.current)==null?void 0:g.offsetWidth)||50},children:n.jsx(oe,{...e})})}},end:(g,m)=>{const l=m.getDropResult();if(l)e.moveEnum(g.enumId,l.enumId);else{const _=g.enumId.split(".");e.moveEnum(g.enumId,`${_[0]}.${_[1]}`)}},collect:g=>({isDragging:g.isDragging(),handlerId:g.getHandlerId()})});return P.useEffect(()=>{u(Ie(),{captureDraggingState:!0})},[u]),e.enum?M.isTouchDevice()?n.jsx("div",{ref:r,style:{opacity:t&&i?.5:1},children:n.jsx("div",{ref:o,children:n.jsx(oe,{isDragging:a,iconDragRef:c,...e})})}):n.jsx("div",{ref:r,style:{opacity:t&&i?.5:1},children:n.jsx("div",{ref:c,children:n.jsx("div",{ref:o,children:n.jsx(oe,{isDragging:a,...e})})})}):n.jsx(oe,{isDragging:a,...e})},Et=e=>{const[,t]=Pe(()=>({accept:["enum"],drop:()=>({enumId:e.categoryData._id}),collect:r=>({isOver:r.isOver(),canDrop:r.canDrop()})})),i=H.getInvertedColor(e.categoryData.common.color,e.themeType,!0);return n.jsxs("span",{ref:t,style:{...e.styles.categoryTitle,color:i},children:[e.categoryData.common.icon?n.jsx(J,{style:e.styles.icon,src:e.categoryData.common.icon}):null,typeof e.categoryData.common.name=="string"?e.categoryData.common.name:e.categoryData.common.name[e.lang]||e.categoryData.common.name.en,n.jsx(p.IconButton,{size:"small",style:{color:i},onClick:()=>{e.showEnumEditDialog(e.categoryData,!1)},children:n.jsx(p.Tooltip,{title:e.t("Edit"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Edit,{})})}),e.categoryData.common.dontDelete?null:n.jsx(p.IconButton,{size:"small",style:{color:i},onClick:()=>e.showEnumDeleteDialog(e.categoryData),children:n.jsx(p.Tooltip,{title:e.t("Delete"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Delete,{})})})]})},L={contentRoot:{padding:"16px 24px"},dialogTitle:{borderBottom:"1px solid #00000020",padding:0,width:"100%"},dialogActions:{borderTop:"1px solid #00000020",width:"100%"},dialog:{},iconPreview:{height:32,width:32},colorPicker:{},formIcon:{margin:10,opacity:.6},formContainer:{display:"flex",justifyContent:"center",alignItems:"center"},formControl:{display:"flex",padding:"0 0 24px 0",flexGrow:1e3}};function Dt(e){const t=e.enums.find(u=>u._id===e.enum._id);let i=e.enum._id!=="system.enum.";e.isNew&&t&&(i=!1);const r=u=>u.split(".").pop(),o=u=>u.replace(H.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").replace(/,/g,"_").replace(/__/g,"_").replace(/__/g,"_"),a=u=>u&&typeof u=="object"?u[e.lang]||u.en:u||"",c=(u,d)=>{const h=u.split(".");return h[h.length-1]=d,h.join(".")};return n.jsxs(p.Dialog,{fullWidth:e.innerWidth<500,open:!0,onClose:(u,d)=>{d!=="backdropClick"&&d!=="escapeKeyDown"&&e.onClose()},children:[n.jsx(p.DialogTitle,{style:{...L.dialogTitle,padding:12},children:e.t("Enum parameters")}),n.jsx(p.DialogContent,{sx:{"&.MuiDialogContent-root":L.contentRoot},children:n.jsxs(p.Grid2,{container:!0,spacing:2,style:L.dialog,children:[n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"Name",t:e.t,value:e.getName(e.enum.common.name),onChange:u=>{const d=e.enum;!e.enum.common.dontDelete&&o(e.getName(d.common.name))===r(d._id)&&(d._id=c(d._id,o(u))),d.common.name=u,e.onChange(d)},autoComplete:"off",icon:C.TextFields,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"ID edit",t:e.t,disabled:e.enum.common.dontDelete,value:e.enum._id.split(".")[e.enum._id.split(".").length-1],onChange:u=>{const d=JSON.parse(JSON.stringify(e.enum));d._id=c(d._id,o(u)),e.onChange(d)},icon:C.LocalOffer,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"ID preview",t:e.t,disabled:!0,value:e.enum._id,icon:C.Pageview,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"Description",t:e.t,value:a(e.enum.common.desc),onChange:u=>{const d=e.enum;d.common.desc=u,e.onChange(d)},icon:C.Description,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx($e,{label:"Icon",onlyDevices:e.enum._id.startsWith("enum.functions."),onlyRooms:e.enum._id.startsWith("enum.rooms."),value:e.enum.common.icon,onChange:u=>{const d=e.enum;d.common.icon=u,e.onChange(d)},previewStyle:L.iconPreview,icon:C.Image,customStyles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(Qe,{label:"Color",value:e.enum.common.color,previewStyle:L.iconPreview,onChange:u=>{const d=e.enum;d.common.color=u,e.onChange(d)},icon:C.ColorLens,style:L.colorPicker,styles:L,t:e.t})})]})}),n.jsxs(p.DialogActions,{style:L.dialogActions,children:[n.jsx(p.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>e.saveData(),disabled:!i||!e.changed,startIcon:n.jsx(C.Check,{}),children:e.t("Save")}),n.jsx(p.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:n.jsx(C.Close,{}),children:e.t("Cancel")})]})]})}const yt=(e,t,i)=>{const r=e[t];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((o,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+t+(t.split("/").length!==i?". Note that variables only represent file names one level deep.":""))))})},Te=JSON.parse(`[{"_id":"hood","name":{"en":"Hood","ru":"Вытяжка","de":"Abzugshaube","fr":"Capot","it":"Cappe","nl":"Hood","pl":"Okapy","pt":"Hood","es":"Campana","zh-cn":"抽油烟机"},"icon":"Hoods"},{"_id":"alarm_system","name":{"en":"Alarm System","ru":"Сигнализация","de":"Alarmanlage","fr":"Systèmes D'Alarme","it":"Sistemi Di Allarme","nl":"Alarm Systems","pl":"Systemy Alarmowe","pt":"Sistemas De Alarme","es":"Sistemas De Alarma","zh-cn":"报警系统"},"icon":"Alarm Systems"},{"_id":"battery_status","name":{"en":"Battery Status","ru":"Заряд батареи","de":"Batteriestatus","fr":"État De La Batterie","it":"Stato Della Batteria","nl":"Batterij Status","pl":"Stan Baterii","pt":"Estado Da Bateria","es":"Estado De La Batería","zh-cn":"电池状态"},"icon":"Battery Status"},{"_id":"lighting","name":{"en":"Lighting","ru":"Светильник","de":"Beleuchtung","fr":"Éclairages","it":"Illuminazione","nl":"Verlichting","pl":"Oprawy Oświetleniowe","pt":"Iluminações","es":"Iluminaciones","zh-cn":"照明"},"icon":"Lightings"},{"_id":"shading","name":{"en":"Shading","ru":"Затенение","de":"Beschattungen","fr":"Ombres","it":"Ombreggiatura","nl":"Shading","pl":"Zacienienie","pt":"Shading","es":"Sombreado","zh-cn":"底纹"},"icon":"Shading"},{"_id":"irrigation","name":{"en":"Irrigation","ru":"Орошение","de":"Bewässerung","fr":"Irrigation","it":"Irrigazione","nl":"Irrigatie","pl":"Nawadnianie","pt":"Irrigação","es":"Irrigación","zh-cn":"灌溉"},"icon":"Irrigation"},{"_id":"iron","name":{"en":"Iron","ru":"Утюг","de":"Bügeleisen","fr":"Le Fer","it":"Ferro","nl":"Ijzer","pl":"Żelazo","pt":"Ferro","es":"Hierro","zh-cn":"铁"},"icon":"Iron"},{"_id":"computer","name":{"en":"Computer","ru":"Компьютер","de":"Rechner","fr":"L'Ordinateur","it":"Computer","nl":"Computer","pl":"Komputer","pt":"Computador","es":"Ordenador","zh-cn":"电脑"},"icon":"Computer"},{"_id":"ceiling_spotlight","name":{"en":"Ceiling Spotlight","ru":"Потолочный прожектор","de":"Deckenspot","fr":"Plafond Spotlight","it":"Faretti A Soffitto","nl":"Plafond Spotlight","pl":"Reflektory Sufitowe","pt":"Tecto Foco","es":"Focos De Techo","zh-cn":"天花射灯"},"icon":"Ceiling Spotlights"},{"_id":"printer","name":{"en":"Printer","de":"Drucker","ru":"Принтер","pt":"Impressora","nl":"Printer","fr":"Imprimante","it":"Stampante","es":"Impresora","pl":"Drukarka","zh-cn":"打印机"},"icon":"Printer"},{"_id":"power_consumption","name":{"en":"Power Consumption","ru":"Потребляемая мощность","de":"Stromverbrauch","fr":"Consommation D'Énergie","it":"Consumo Di Energia","nl":"Energieverbruik","pl":"Pobór Energii","pt":"Consumo De Energia","es":"El Consumo De Energía","zh-cn":"能量消耗"},"icon":"Power Consumption"},{"_id":"window","name":{"en":"Window","ru":"Окно","de":"Fenster","fr":"La Fenêtre","it":"Finestra","nl":"Venster","pl":"Okno","pt":"Janela","es":"Ventana","zh-cn":"窗户"},"icon":"Window"},{"_id":"garage_door","name":{"en":"Garage Door","ru":"Гаражные Ворота","de":"Garagentor","fr":"Portes De Garage","it":"Garage Door","nl":"Garage Door","pl":"Bramy Garażowe","pt":"Portas De Garagem","es":"Las Puertas De Garaje","zh-cn":"车库门"},"icon":"Garage Doors"},{"_id":"hairdryer","name":{"en":"Hairdryer","ru":"Фен","de":"Haartrockner","fr":"Sèche-Cheveux","it":"Asciugacapelli","nl":"Haardroger","pl":"Suszarka Do Włosów","pt":"Secador De Cabelo","es":"Secador De Pelo","zh-cn":"电吹风"},"icon":"Hairdryer"},{"_id":"hanging_lamp","name":{"en":"Hanging Lamp","ru":"Подвесной светильник","de":"Hängelampe","fr":"Lampes Suspendues","it":"Lampade A Sospensione","nl":"Opknoping Lampen","pl":"Lampy Wiszące","pt":"Lâmpadas De Suspensão","es":"Lámparas Colgantes","zh-cn":"挂灯"},"icon":"Hanging Lamps"},{"_id":"doorstep","name":{"en":"Enterance","ru":"Входная дверь","de":"Haustür","fr":"Seuil De Porte","it":"Gradino Della Porta","nl":"Drempel","pl":"Próg","pt":"Porta","es":"Peldaño","zh-cn":"门阶"},"icon":"Doorstep"},{"_id":"hot_water","name":{"en":"Hot Water","ru":"Горячая вода","de":"Heißwasser","fr":"Eau Chaude","it":"Acqua Calda","nl":"Heet Water","pl":"Gorąca Woda","pt":"Água Quente","es":"Agua Caliente","zh-cn":"热水"},"icon":"Hot Water"},{"_id":"heating","name":{"en":"Heating","ru":"Отопление","de":"Heizung","fr":"Chauffe-Eau","it":"Riscaldatore","nl":"Verwarmer","pl":"Podgrzewacz","pt":"Aquecedor","es":"Calentador","zh-cn":"加热器"},"icon":"Heater"},{"_id":"stove","name":{"en":"Stove","ru":"Печь","de":"Herd","fr":"Le Fourneau","it":"Stufa","nl":"Fornuis","pl":"Kuchenka","pt":"Forno","es":"Cocina","zh-cn":"火炉"},"icon":"Stove"},{"_id":"louvre","name":{"en":"Louvres","ru":"Жалюзи","de":"Jalousie","fr":"Persienne","it":"Persiana Di Ventilazione","nl":"Louvre","pl":"Żaluzja","pt":"Trapeira","es":"Lumbrera","zh-cn":"卢浮宫"},"icon":"Louvre"},{"_id":"coffee_maker","name":{"en":"Coffee Maker","ru":"Кофеварка","de":"Kaffeemaschine","fr":"Cafetière","it":"Macchine Da Caffè","nl":"Koffie Maker","pl":"Ekspresy Do Kawy","pt":"Cafeteira","es":"Cafetera","zh-cn":"咖啡壶"},"icon":"Coffee Makers"},{"_id":"cold_water","name":{"en":"Cold Water","ru":"Холодная вода","de":"Kaltwasser","fr":"Eau Froide","it":"Acqua Fredda","nl":"Koud Water","pl":"Zimna Woda","pt":"Água Fria","es":"Agua Fría","zh-cn":"冷水"},"icon":"Cold Water"},{"_id":"climate","name":{"en":"Climate","ru":"Климат","de":"Klima","fr":"Climat","it":"Clima","nl":"Klimaat","pl":"Klimat","pt":"Clima","es":"Clima","zh-cn":"气候"},"icon":"Climate"},{"_id":"speaker","name":{"en":"Speaker","ru":"Звуковая система","de":"Lautsprecher","fr":"Orateur","it":"Altoparlante","nl":"Spreker","pl":"Głośnik","pt":"Palestrante","es":"Altavoz","zh-cn":"扬声器"},"icon":"Speaker"},{"_id":"led_strip","name":{"en":"Led Strip","ru":"Светодиодная лента","de":"LED Leiste","fr":"Led Strip","it":"Led Strip","nl":"Loden Strip","pl":"Pasek Ledowy","pt":"Led Faixa","es":"Tira Llevada","zh-cn":"灯带"},"icon":"Led Strip"},{"_id":"light","name":{"en":"Light","ru":"Свет","de":"Licht","fr":"Lumière","it":"Leggero","nl":"Licht","pl":"Lekki","pt":"Luz","es":"Luz","zh-cn":"光"},"icon":"Light"},{"_id":"fan","name":{"en":"Fan","ru":"Вентилятор","de":"Lüfter","fr":"Ventilateur","it":"Fan","nl":"Ventilator","pl":"Wentylator","pt":"Ventilador","es":"Ventilador","zh-cn":"扇子"},"icon":"Fan"},{"_id":"humidity","name":{"en":"Humidity","ru":"Влажность","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","nl":"Vochtigheid","pl":"Wilgotność","pt":"Umidade","es":"Humedad","zh-cn":"湿度"},"icon":"Humidity"},{"_id":"ventilation","name":{"en":"Ventilation","ru":"Вентиляция","de":"Lüftung","fr":"Ventilation","it":"Ventilazione","nl":"Ventilatie","pl":"Wentylacja","pt":"Ventilação","es":"Ventilación","zh-cn":"通风"},"icon":"Ventilation"},{"_id":"chandelier","name":{"en":"Chandelier","ru":"Люстра","de":"Kronleuchter","fr":"Lustre","it":"Lampadario","nl":"Kroonluchter","pl":"Żyrandol","pt":"Lustre","es":"Candelabro","zh-cn":"枝形吊灯"},"icon":"Chandelier"},{"_id":"awning","name":{"en":"Awning","ru":"Маркиза","de":"Markise","fr":"Auvents","it":"Tende","nl":"Luifels","pl":"Okrycia","pt":"Toldos","es":"Toldos","zh-cn":"遮阳篷"},"icon":"Awnings"},{"_id":"music","name":{"en":"Music","ru":"Музыка","de":"Musik","fr":"Musique","it":"Musica","nl":"Muziek","pl":"Muzyka","pt":"Música","es":"Música","zh-cn":"音乐"},"icon":"Music"},{"_id":"people","name":{"en":"People","ru":"Люди","de":"Personen","fr":"Gens","it":"Persone","nl":"Mensen","pl":"Ludzie","pt":"Pessoas","es":"Personas","zh-cn":"人们"},"icon":"People"},{"_id":"pool","name":{"en":"Pool","ru":"Бассейн","de":"Pool","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"水池"},"icon":"Pool"},{"_id":"pump","name":{"en":"Pump","ru":"Насос","de":"Pumpe","fr":"Pompe","it":"Pompa","nl":"Pomp","pl":"Pompa","pt":"Bombear","es":"Bomba","zh-cn":"泵"},"icon":"Pump"},{"_id":"outdoor_blinds","name":{"en":"Outdoor Blinds","ru":"Внещгте жалюзи","de":"Raffstore","fr":"Volets","it":"Tende Da Esterni","nl":"Outdoor Blinds","pl":"Rolety Zewnętrzne","pt":"Estores Exteriores","es":"Persianas Exteriores","zh-cn":"室外百叶窗"},"icon":"Outdoor Blinds"},{"_id":"mowing_machine","name":{"en":"Mowing Machine","ru":"Газонокосилка","de":"Rasenmäher","fr":"Machine De Fauchage","it":"Macchina Di Falciatura","nl":"Maaimachine","pl":"Kosiarka","pt":"Roçada Máquina","es":"Segadora","zh-cn":"割草机"},"icon":"Mowing Machine"},{"_id":"receiver","name":{"en":"Receiver","ru":"Приставка","de":"Receiver","fr":"Destinataire","it":"Ricevitore","nl":"Ontvanger","pl":"Odbiorca","pt":"Recebedor","es":"Receptor","zh-cn":"接收者"},"icon":"Receiver"},{"_id":"shutters","name":{"en":"Shutters","ru":"Ставни","de":"Rollladen","fr":"Volets","it":"Persiane","nl":"Shutters","pl":"Żaluzje","pt":"Persianas","es":"Persianas","zh-cn":"百叶窗"},"icon":"Shutters"},{"_id":"smoke_detector","name":{"en":"Smoke detector","de":"Rauchmelder","ru":"Детектор дыма","pt":"Detector de fumaça","nl":"Rookdetector","fr":"Détecteur de fumée","it":"Rilevatore di fumo","es":"Detector de humo","pl":"Wykrywacz dymu","zh-cn":"烟雾探测器"},"icon":"SmokeDetector"},{"_id":"lock","name":{"en":"Lock","ru":"Замок","de":"Schloß","fr":"Fermer À Clé","it":"Serratura","nl":"Slot","pl":"Zamek","pt":"Trancar","es":"Cerrar Con Llave","zh-cn":"锁"},"icon":"Lock"},{"_id":"security","name":{"en":"Security","ru":"Безопасность","de":"Sicherheit","fr":"Sécurité","it":"Sicurezza","nl":"Veiligheid","pl":"Bezpieczeństwo","pt":"Segurança","es":"Seguridad","zh-cn":"安全"},"icon":"Security"},{"_id":"dishwasher","name":{"en":"Dishwasher","ru":"Посудомоечная машина","de":"Spülmaschine","fr":"Lave-Vaisselles","it":"Lavastoviglie","nl":"Vaatwassers","pl":"Zmywarki","pt":"Máquinas De Lavar Louça","es":"Lavaplatos","zh-cn":"洗碗机"},"icon":"Dishwashers"},{"_id":"vacuum_cleaner","name":{"en":"Vacuum Cleaner","ru":"Пылесос","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","nl":"Stofzuiger","pl":"Odkurzacz","pt":"Aspirador De Pó","es":"Aspiradora","zh-cn":"吸尘器"},"icon":"Vacuum Cleaner"},{"_id":"socket","name":{"en":"Socket","ru":"Розетка","de":"Steckdose","fr":"Prise","it":"Socket","nl":"Socket","pl":"Gniazdka","pt":"Tomada","es":"Zócalo","zh-cn":"套接字"},"icon":"Sockets"},{"_id":"floor_lamp","name":{"en":"Floor Lamp","ru":"Торшер","de":"Stehlampe","fr":"Lampes Pour Plancher","it":"Lampade A Stelo","nl":"Vloerlampen","pl":"Lampy Podłogowe","pt":"Lâmpadas Chão","es":"Lámparas De Pie","zh-cn":"落地灯"},"icon":"Floor Lamps"},{"_id":"power_consumption","name":{"en":"Power Consumption","ru":"Потребляемая мощность","de":"Stromverbrauch","fr":"Consommation D'Énergie","it":"Consumo Di Energia","nl":"Energieverbruik","pl":"Pobór Energii","pt":"Consumo De Energia","es":"El Consumo De Energía","zh-cn":"能量消耗"},"icon":"Power Consumption"},{"_id":"temperature_sensor","name":{"en":"Temperature Sensor","ru":"Температурный датчик","de":"Temperatur-Sensor","fr":"Capteur De Température","it":"Sensori Di Temperatura","nl":"Temperatuursensor","pl":"Czujniki Temperatury","pt":"Sensores De Temperatura","es":"Sensores De Temperatura","zh-cn":"温度传感器"},"icon":"Temperature Sensors"},{"_id":"table_lamp","name":{"en":"Table Lamp","ru":"Настольная лампа","de":"Tischlampe","fr":"Lampe De Chevet","it":"Lampade Da Tavolo","nl":"Tafellampen","pl":"Lampy Stołowe","pt":"Lâmpadas De Mesa","es":"Lámparas De Mesa","zh-cn":"台灯"},"icon":"Table Lamps"},{"_id":"gate","name":{"en":"Gate","ru":"Ворота","de":"Tor","fr":"Porte","it":"Gate","nl":"Gate","pl":"Bramy","pt":"Portões","es":"Puertas","zh-cn":"盖茨"},"icon":"Gates"},{"_id":"dryer","name":{"en":"Dryer","ru":"Сушилка","de":"Trockner","fr":"Séchoir","it":"Asciugatrice","nl":"Droger","pl":"Suszarka","pt":"Secador","es":"Secadora","zh-cn":"烘干机"},"icon":"Dryer"},{"_id":"door","name":{"en":"Door","ru":"Дверь","de":"Tür","fr":"Des Portes","it":"Porte","nl":"Deuren","pl":"Drzwi","pt":"Portas","es":"Puertas","zh-cn":"门"},"icon":"Doors"},{"_id":"tv","name":{"en":"Tv","ru":"Телевизор","de":"TV","fr":"La Télé","it":"Tv","nl":"Tv","pl":"Telewizja","pt":"Televisão","es":"Televisor","zh-cn":"电视"},"icon":"Tv"},{"_id":"consumption","name":{"en":"Consumption","ru":"Потребление","de":"Verbrauch","fr":"Consommation","it":"Consumo","nl":"Consumptie","pl":"Konsumpcja","pt":"Consumo","es":"Consumo","zh-cn":"消费"},"icon":"Consumption"},{"_id":"amplifier","name":{"en":"Amplifier","ru":"Усилитель звука","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","nl":"Versterker","pl":"Wzmacniacz","pt":"Amplificador","es":"Amplificador","zh-cn":"放大器"},"icon":"Amplifier"},{"_id":"curtains","name":{"en":"Curtains","ru":"Шторы","de":"Vorhänge","fr":"Des Rideaux","it":"Le Tende","nl":"Gordijnen","pl":"Zasłony","pt":"Cortinas","es":"Cortinas","zh-cn":"窗帘"},"icon":"Curtains"},{"_id":"sconce","name":{"en":"Sconce","ru":"Настенный светильник","de":"Wandlampe","fr":"Sconce","it":"Sconce","nl":"Sconce","pl":"Kinkiety","pt":"Arandelas","es":"Los Apliques","zh-cn":"壁灯"},"icon":"Sconces"},{"_id":"washing_machine","name":{"en":"Washing Machine","ru":"Стиральная машина","de":"Waschmaschine","fr":"Machines À Laver","it":"Lavatrici","nl":"Wasmachines","pl":"Pralki","pt":"Máquinas De Lavar Roupas","es":"Lavadoras","zh-cn":"洗衣机"},"icon":"Washing Machines"},{"_id":"water","name":{"en":"Water","ru":"Вода","de":"Wasser","fr":"L'Eau","it":"Acqua","nl":"Water","pl":"Woda","pt":"Água","es":"Agua","zh-cn":"水"},"icon":"Water"},{"_id":"water_heater","name":{"en":"Water Heater","ru":"Нагреватель воды","de":"Wasserkocher","fr":"Chauffe-Eau","it":"Scaldabagno","nl":"Waterkoker","pl":"Podgrzewacz Wody","pt":"Aquecedor De Água","es":"Calentador De Agua","zh-cn":"热水器"},"icon":"Water Heater"},{"_id":"water_consumption","name":{"en":"Water Consumption","ru":"Потребление воды","de":"Wasserverbrauch","fr":"Consommation D'Eau","it":"Consumo D'Acqua","nl":"Waterverbruik","pl":"Konsumpcja Wody","pt":"Consumo De Água","es":"Consumo De Agua","zh-cn":"耗水量"},"icon":"Water Consumption"},{"_id":"weather","name":{"en":"Weather","ru":"Погода","de":"Wetter","fr":"La Météo","it":"Tempo Metereologico","nl":"Weer","pl":"Pogoda","pt":"Clima","es":"Tiempo","zh-cn":"天气"},"icon":"Weather"}]`),we=JSON.parse(`[{"_id":"storeroom","name":{"en":"Storeroom","ru":"Кладовая","de":"Abstellraum","fr":"Débarras","it":"Dispensa","nl":"Bergplaats","pl":"Magazyn","pt":"Despensa","es":"Trastero","zh-cn":"库房"},"icon":"Storeroom"},{"_id":"second_floor","name":{"en":"Second floor","ru":"Второй этаж","de":"Erster OG","pt":"Primeiro andar","nl":"Eerste verdieping","fr":"Premier étage","it":"Primo piano","es":"Primer piso","pl":"Pierwsze piętro","zh-cn":"第一层"},"icon":"Second Floor"},{"_id":"dressing_room","name":{"en":"Dressing Room","ru":"Гардеробная","de":"Ankleide","fr":"Vestiaire","it":"Camerino","nl":"Kleedkamer","pl":"Przebieralnia","pt":"Provador","es":"Vestidor","zh-cn":"更衣室"},"icon":"Dressing Room"},{"_id":"workspace","name":{"en":"Workspace","ru":"Кабинет","de":"Arbeitszimmer","fr":"Espace De Travail","it":"Area Di Lavoro","nl":"Workspace","pl":"Workspace","pt":"Área De Trabalho","es":"Espacio De Trabajo","zh-cn":"工作区"},"icon":"Workspace"},{"_id":"driveway","name":{"en":"Driveway","ru":"Подъезд","de":"Auffahrt","fr":"Allée","it":"Viale","nl":"Pad","pl":"Podjazd","pt":"Entrada Da Garagem","es":"Entrada De Coches","zh-cn":"车道"},"icon":"Driveway"},{"_id":"outdoors","name":{"en":"Outdoors","ru":"Улица","de":"Außenbereich","fr":"En Plein Air","it":"All'Aperto","nl":"Buitenshuis","pl":"Na Dworze","pt":"Ao Ar Livre","es":"Al Aire Libre","zh-cn":"户外"},"icon":"Outdoors"},{"_id":"bathroom","name":{"en":"Bathroom","ru":"Ванная","de":"Badezimmer","fr":"Salle De Bains","it":"Bagno","nl":"Badkamer","pl":"Łazienka","pt":"Banheiro","es":"Baño","zh-cn":"浴室"},"icon":"Bathroom"},{"_id":"balcony","name":{"en":"Balcony","ru":"Балкон","de":"Balkon","fr":"Balcon","it":"Balcone","nl":"Balkon","pl":"Balkon","pt":"Sacada","es":"Balcón","zh-cn":"阳台"},"icon":"Balcony"},{"_id":"office","name":{"en":"Office","ru":"Офис","de":"Office","fr":"Bureau","it":"Ufficio","nl":"Kantoor","pl":"Gabinet","pt":"Escritório","es":"Oficina","zh-cn":"办公室"},"icon":"Office"},{"_id":"carport","name":{"en":"Carport","ru":"Навес","de":"Carport","fr":"Carport","it":"Posto Auto Coperto","nl":"Carport","pl":"Wiata","pt":"Telheiro","es":"Cochera","zh-cn":"车棚"},"icon":"Carport"},{"_id":"attic","name":{"en":"Attic","ru":"Чердак","de":"Dachgeschoss","fr":"Grenier","it":"Attico","nl":"Zolder","pl":"Poddasze","pt":"Sótão","es":"Ático","zh-cn":"阁楼"},"icon":"Attic"},{"_id":"hall","name":{"en":"Hall","ru":"Холл","de":"Diele","fr":"Salle","it":"Sala","nl":"Hal","pl":"Sala","pt":"Corredor","es":"Sala","zh-cn":"大厅"},"icon":"Hall"},{"_id":"entrance","name":{"en":"Entrance","ru":"Вход","de":"Eingang","fr":"Entrée","it":"Ingresso","nl":"Ingang","pl":"Wejście","pt":"Entrada","es":"Entrada","zh-cn":"入口"},"icon":"Entrance"},{"_id":"ground_floor","name":{"en":"Ground Floor","ru":"Первый этаж","de":"Erdgeschoss","fr":"Rez-De-Chaussée","it":"Piano Terra","nl":"Begane Grond","pl":"Parter","pt":"Térreo","es":"Planta Baja","zh-cn":"一楼"},"icon":"Ground Floor"},{"_id":"dining_area","name":{"en":"Dining Area","ru":"Столовая","de":"Essbereich","fr":"Salle À Manger","it":"Zona Pranzo","nl":"Eethoek","pl":"Jadalnia","pt":"Área De Refeições","es":"Comedor","zh-cn":"用餐区"},"icon":"Dining Area"},{"_id":"dining_room","name":{"en":"Dining Room","ru":"Столовая комната","de":"Esszimmer","fr":"Salle À Manger","it":"Sala Da Pranzo","nl":"Eetkamer","pl":"Jadalnia","pt":"Sala De Jantar","es":"Comedor","zh-cn":"饭厅"},"icon":"Dining Room"},{"_id":"gym","name":{"en":"Gym","ru":"Спортзал","de":"Fitnessraum","fr":"Gym","it":"Palestra","nl":"Sportschool","pl":"Siłownia","pt":"Ginásio","es":"Gimnasio","zh-cn":"健身房"},"icon":"Gym"},{"_id":"gallery","name":{"en":"Gallery","ru":"Галерея","de":"Galerie","fr":"Galerie","it":"Galleria","nl":"Galerij","pl":"Galeria","pt":"Galeria","es":"Galería","zh-cn":"画廊"},"icon":"Gallery"},{"_id":"garage","name":{"en":"Garage","ru":"Гараж","de":"Garage","fr":"Garage","it":"Box Auto","nl":"Garage","pl":"Garaż","pt":"Garagem","es":"Garaje","zh-cn":"车库"},"icon":"Garage"},{"_id":"wardrobe","name":{"en":"Wardrobe","ru":"Гардероб","de":"Garderobe","fr":"Penderie","it":"Armadio","nl":"Garderobe","pl":"Szafa","pt":"Guarda Roupa","es":"Armario","zh-cn":"衣柜"},"icon":"Wardrobe"},{"_id":"garden","name":{"en":"Garden","ru":"Сад","de":"Garten","fr":"Jardin","it":"Giardino","nl":"Tuin","pl":"Ogród","pt":"Jardim","es":"Jardín","zh-cn":"花园"},"icon":"Garden"},{"_id":"summer_house","name":{"en":"Summer House","ru":"Дача","de":"Gartenhaus","fr":"Maison D'Été","it":"Casa Estiva","nl":"Zomerhuis","pl":"Domek Letniskowy","pt":"Summer House","es":"Casa De Verano","zh-cn":"凉亭"},"icon":"Summer House"},{"_id":"guest_bathroom","name":{"en":"Guest Bathroom","ru":"Гостевая ванная","de":"Gäste-WC","fr":"Salle De Bains Invité","it":"Guest Bathroom","nl":"Gastenbadkamer","pl":"Łazienka Gościnna","pt":"Banheiro De Hóspedes","es":"Baño De Visitas","zh-cn":"客用浴室"},"icon":"Guest Bathroom"},{"_id":"guest_room","name":{"en":"Guest Room","ru":"Гостевая комната","de":"Gästezimmer","fr":"Chambre D'Amis","it":"Stanza Degli Ospiti","nl":"Guest Room","pl":"Pokój Gościnny","pt":"Quarto De Hóspedes","es":"Habitación De Huéspedes","zh-cn":"客房"},"icon":"Guest Room"},{"_id":"laundry_room","name":{"en":"Laundry Room","ru":"Прачечная","de":"Hauswirtschaftsraum","fr":"Buanderie","it":"Lavanderia","nl":"Wasruimte","pl":"Pralnia","pt":"Lavandaria","es":"Cuarto De Lavado","zh-cn":"洗衣房"},"icon":"Laundry Room"},{"_id":"home_theater","name":{"en":"Home Theater","ru":"Кинозал","de":"Heimkino","fr":"Cinéma Maison","it":"Home Theater","nl":"Thuisbioscoop","pl":"Kino Domowe","pt":"Cinema Em Casa","es":"Cine En Casa","zh-cn":"家庭电影院"},"icon":"Home Theater"},{"_id":"boiler_room","name":{"en":"Boiler Room","ru":"Бойлерная","de":"Heizungsraum","fr":"Chaufferie","it":"Locale Caldaia","nl":"Boiler Room","pl":"Kotłownia","pt":"Sala Da Caldeira","es":"Sala De Calderas","zh-cn":"锅炉房"},"icon":"Boiler Room"},{"_id":"chamber","name":{"en":"Chamber","ru":"Хранилище","de":"Kammer","fr":"Chambre","it":"Camera","nl":"Kamer","pl":"Izba","pt":"Câmara","es":"Cámara","zh-cn":"商会"},"icon":"Chamber"},{"_id":"cellar","name":{"en":"Cellar","ru":"Погреб","de":"Keller","fr":"Sous-Sol","it":"Taverna","nl":"Kelder","pl":"Piwnica","pt":"Porão","es":"Sótano","zh-cn":"地下室"},"icon":"Basement"},{"_id":"nursery","name":{"en":"Kids","ru":"Детская","de":"Kinderzimmer","fr":"Garderie","it":"Asilo","nl":"Kinderkamer","pl":"Żłobek","pt":"Berçário","es":"Guardería","zh-cn":"苗圃"},"icon":"Nursery"},{"_id":"corridor","name":{"en":"Corridor","ru":"Коридор","de":"Korridor","fr":"Couloir","it":"Corridoio","nl":"Gang","pl":"Korytarz","pt":"Corredor","es":"Corredor","zh-cn":"走廊"},"icon":"Corridor"},{"_id":"kitchen","name":{"en":"Kitchen","ru":"Кухня","de":"Küche","fr":"Cuisine","it":"Cucina","nl":"Keuken","pl":"Kuchnia","pt":"Cozinha","es":"Cocina","zh-cn":"厨房"},"icon":"Kitchen"},{"_id":"upstairs","name":{"en":"Upstairs","ru":"Верхний этаж","de":"Obergeschoss","fr":"En Haut","it":"Di Sopra","nl":"Boven","pl":"Na Górę","pt":"Andar De Cima","es":"Piso Superior","zh-cn":"楼上"},"icon":"Upstairs"},{"_id":"office","name":{"en":"Office","ru":"Офис","de":"Office","fr":"Bureau","it":"Ufficio","nl":"Kantoor","pl":"Gabinet","pt":"Escritório","es":"Oficina","zh-cn":"办公室"},"icon":"Office"},{"_id":"pool","name":{"en":"Pool","ru":"Бассейн","de":"Pool","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"水池"},"icon":"Pool"},{"_id":"rear_wall","name":{"en":"Rear Wall","ru":"Задний забор","de":"Rückwand","fr":"Paroi Arrière","it":"Parete Posteriore","nl":"Achterwand","pl":"Tylna Ściana","pt":"Parede Traseira","es":"Pared Posterior","zh-cn":"后墙"},"icon":"Rear Wall"},{"_id":"barn","name":{"en":"Barn","ru":"Амбар","de":"Scheune","fr":"Grange","it":"Fienile","nl":"Schuur","pl":"Stodoła","pt":"Celeiro","es":"Granero","zh-cn":"谷仓"},"icon":"Barn"},{"_id":"sleeping_area","name":{"en":"Sleeping Area","ru":"Комната для сна","de":"Schlafbereich","fr":"Coin Montagne","it":"Area Sleeping","nl":"Sleeping Area","pl":"Powierzchnia Spania","pt":"Sleeping Area","es":"Área De Dormir","zh-cn":"睡眠区"},"icon":"Sleeping Area"},{"_id":"bedroom","name":{"en":"Bedroom","ru":"Спальня","de":"Schlafzimmer","fr":"Chambre","it":"Camera Da Letto","nl":"Slaapkamer","pl":"Sypialnia","pt":"Quarto","es":"Cuarto","zh-cn":"卧室"},"icon":"Bedroom"},{"_id":"shed","name":{"en":"Shed","ru":"Сарай","de":"Schuppen","fr":"Hangar","it":"Capannone","nl":"Schuur","pl":"Budka","pt":"Cabana","es":"Cobertizo","zh-cn":"棚"},"icon":"Shed"},{"_id":"swimming_pool","name":{"en":"Swimming Pool","ru":"Бассейн","de":"Schwimmbad","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"游泳池"},"icon":"Swimming Pool"},{"_id":"dining","name":{"en":"Dining","ru":"Обеденная","de":"Speis","fr":"À Manger","it":"Cenare","nl":"Dining","pl":"Jadalnia","pt":"Jantar","es":"Comida","zh-cn":"用餐"},"icon":"Dining"},{"_id":"playroom","name":{"en":"Playroom","ru":"Игровая","de":"Spielzimmer","fr":"Salle De Jeux","it":"Stanza Dei Giochi","nl":"Speelkamer","pl":"Pokój Zabaw","pt":"Sala De Jogos","es":"Cuarto De Jugar","zh-cn":"游戏室"},"icon":"Playroom"},{"_id":"stairway","name":{"en":"Stairway","ru":"Лестница","de":"Treppe","fr":"Escalier","it":"Scala","nl":"Trap","pl":"Klatka Schodowa","pt":"Escada","es":"Escalera","zh-cn":"楼梯"},"icon":"Stairway"},{"_id":"equipment_room","name":{"en":"Equipment Room","ru":"Техническая комната","de":"Technikraum","fr":"Salle D'Équipement","it":"Stanza Degli Attrezzi","nl":"Technische Ruimte","pl":"Wyposażenie Pokoi","pt":"Sala De Equipamentos","es":"Cuarto De Equipos","zh-cn":"机房"},"icon":"Equipment Room"},{"_id":"terrace","name":{"en":"Terrace","ru":"Терраса","de":"Terrasse","fr":"Terrasse","it":"Terrazza","nl":"Terras","pl":"Taras","pt":"Terraço","es":"Terraza","zh-cn":"阳台"},"icon":"Terrace"},{"_id":"toilet","name":{"en":"Toilet","ru":"Туалет","de":"Toilette","fr":"Toilette","it":"Gabinetto","nl":"Toilet","pl":"Toaleta","pt":"Banheiro","es":"Inodoro","zh-cn":"洗手间"},"icon":"Toilet"},{"_id":"stairwell","name":{"en":"Stairwell","ru":"Лестничная клетка","de":"Treppenhaus","fr":"Cage D'Escalier","it":"Tromba Delle Scale","nl":"Trappenhuis","pl":"Klatka Schodowa","pt":"Caixa De Escada","es":"Hueco De Escalera","zh-cn":"楼梯间"},"icon":"Stairwell"},{"_id":"locker_room","name":{"en":"Locker Room","ru":"Кладовка","de":"Umkleideraum","fr":"Vestiaire","it":"Spogliatoio","nl":"Kleedkamer","pl":"Szatnia","pt":"Vestiário","es":"Vestuario","zh-cn":"更衣室"},"icon":"Locker Room"},{"_id":"basement","name":{"en":"Basement","ru":"Подвал","de":"Untergeschoss","fr":"Sous-Sol","it":"Seminterrato","nl":"Kelder","pl":"Piwnica","pt":"Porão","es":"Sótano","zh-cn":"地下室"},"icon":"Basement"},{"_id":"front_yard","name":{"en":"Front Yard","ru":"Передний Двор","de":"Vorgarten","fr":"Front Yard","it":"Cortile","nl":"Voortuin","pl":"Podwórko","pt":"Jardim Da Frente","es":"Patio Delantero","zh-cn":"前院"},"icon":"Front Yard"},{"_id":"anteroom","name":{"en":"Anteroom","ru":"Передняя","de":"Vorraum","fr":"Antichambre","it":"Anticamera","nl":"Voorkamer","pl":"Przedpokój","pt":"Ante-Sala","es":"Antesala","zh-cn":"接待室"},"icon":"Anteroom"},{"_id":"washroom","name":{"en":"Washroom","ru":"Умывальная","de":"Waschraum","fr":"Toilettes","it":"Bagno","nl":"Waskamer","pl":"Umywalnia","pt":"Banheiro","es":"Baño","zh-cn":"卫生间"},"icon":"Washroom"},{"_id":"wc","name":{"en":"Wc","ru":"Туалет","de":"WC","fr":"Toilettes","it":"Bagno","nl":"Wc","pl":"Toaleta","pt":"Banheiro","es":"Wc","zh-cn":"厕所"},"icon":"Wc"},{"_id":"workshop","name":{"en":"Workshop","ru":"Мастерская","de":"Werkstatt","fr":"Atelier","it":"Laboratorio","nl":"Werkplaats","pl":"Warsztat","pt":"Oficina","es":"Taller","zh-cn":"作坊"},"icon":"Workshop"},{"_id":"vestibule","name":{"en":"Vestibule","ru":"Прихожая","de":"Windfang","fr":"Pare-Brise","it":"Parabrezza","nl":"Voorruit","pl":"Szyba Przednia","pt":"Pára-Brisas","es":"Parabrisas","zh-cn":"风档"},"icon":"Windscreen"},{"_id":"living_area","name":{"en":"Living Area","ru":"Зал","de":"Wohnbereich","fr":"Salon","it":"Zona Giorno","nl":"Living Area","pl":"Powierzchnia Mieszkalna","pt":"Sala-De-Estar","es":"Sala De Estar","zh-cn":"生活区域"},"icon":"Living Area"},{"_id":"living_room","name":{"en":"Living Room","ru":"Гостинная","de":"Wohnzimmer","fr":"Le Salon","it":"Soggiorno","nl":"Woonkamer","pl":"Salon","pt":"Sala De Estar","es":"Sala De Estar","zh-cn":"客厅"},"icon":"Living Room"}]`),F={icon:{width:32,height:32},customGroupButton:{},enumTemplateButton:{justifyContent:"end",margin:4,padding:"4px 8px"},enumTemplateLabel:{textAlign:"right",opacity:.4,overflow:"hidden",textOverflow:"ellipsis",flexGrow:1},fullHeight:{height:"calc(100% - 32px)",maxHeight:900},filter:{marginLeft:16,marginTop:0,marginBottom:0},content:{display:"grid",width:"100%",gridTemplateColumns:"repeat(4,1fr)"}};class Ct extends P.Component{constructor(t){super(t),this.state={icons:[],loading:!0,filter:""}}componentDidMount(){this.setState({loading:!0},()=>{const t=this.props.prefix.startsWith("enum.functions")?Te:we,i=[],r=t.map(async(o,a)=>{try{const u=await yt(Object.assign({"../../assets/devices/Alarm Systems.svg":()=>s(()=>import("./Alarm Systems-gR7dS0A2.js"),[],import.meta.url),"../../assets/devices/Amplifier.svg":()=>s(()=>import("./Amplifier-25Guwmsj.js"),[],import.meta.url),"../../assets/devices/Awnings.svg":()=>s(()=>import("./Awnings-Co-hmfUH.js"),[],import.meta.url),"../../assets/devices/Battery Status.svg":()=>s(()=>import("./Battery Status-B87Kvv-I.js"),[],import.meta.url),"../../assets/devices/Ceiling Spotlights.svg":()=>s(()=>import("./Ceiling Spotlights-DtqldpdR.js"),[],import.meta.url),"../../assets/devices/Chandelier.svg":()=>s(()=>import("./Chandelier-Cd8E2Wtu.js"),[],import.meta.url),"../../assets/devices/Climate.svg":()=>s(()=>import("./Climate-D413u9id.js"),[],import.meta.url),"../../assets/devices/Coffee Makers.svg":()=>s(()=>import("./Coffee Makers-KF4ZcNxS.js"),[],import.meta.url),"../../assets/devices/Cold Water.svg":()=>s(()=>import("./Cold Water-CkeFWerW.js"),[],import.meta.url),"../../assets/devices/Computer.svg":()=>s(()=>import("./Computer-BTE1qsMK.js"),[],import.meta.url),"../../assets/devices/Consumption.svg":()=>s(()=>import("./Consumption-kn0jqZNL.js"),[],import.meta.url),"../../assets/devices/Curtains.svg":()=>s(()=>import("./Curtains-CHoQr379.js"),[],import.meta.url),"../../assets/devices/Dishwashers.svg":()=>s(()=>import("./Dishwashers-B-Sw8Agt.js"),[],import.meta.url),"../../assets/devices/Doors.svg":()=>s(()=>import("./Doors-CGplwj0G.js"),[],import.meta.url),"../../assets/devices/Doorstep.svg":()=>s(()=>import("./Doorstep-CDxK6WGU.js"),[],import.meta.url),"../../assets/devices/Dryer.svg":()=>s(()=>import("./Dryer-Cq6roMKB.js"),[],import.meta.url),"../../assets/devices/Fan.svg":()=>s(()=>import("./Fan-JaXmdymA.js"),[],import.meta.url),"../../assets/devices/Floor Lamps.svg":()=>s(()=>import("./Floor Lamps-CRZ476zt.js"),[],import.meta.url),"../../assets/devices/Garage Doors.svg":()=>s(()=>import("./Garage Doors-CkWxHxVX.js"),[],import.meta.url),"../../assets/devices/Gates.svg":()=>s(()=>import("./Gates-C78n8Uvq.js"),[],import.meta.url),"../../assets/devices/Hairdryer.svg":()=>s(()=>import("./Hairdryer-CWFjS2Ij.js"),[],import.meta.url),"../../assets/devices/Handle.svg":()=>s(()=>import("./Handle-wHYWJ26z.js"),[],import.meta.url),"../../assets/devices/Hanging Lamps.svg":()=>s(()=>import("./Hanging Lamps-MotocLIk.js"),[],import.meta.url),"../../assets/devices/Heater.svg":()=>s(()=>import("./Heater-ceSMUh-t.js"),[],import.meta.url),"../../assets/devices/Hoods.svg":()=>s(()=>import("./Hoods-Bz4IVHgt.js"),[],import.meta.url),"../../assets/devices/Hot Water.svg":()=>s(()=>import("./Hot Water-HJAmxfSV.js"),[],import.meta.url),"../../assets/devices/Humidity.svg":()=>s(()=>import("./Humidity-CVLTW-gm.js"),[],import.meta.url),"../../assets/devices/Iron.svg":()=>s(()=>import("./Iron-BmVcdQDM.js"),[],import.meta.url),"../../assets/devices/Irrigation.svg":()=>s(()=>import("./Irrigation-BhJPKg6k.js"),[],import.meta.url),"../../assets/devices/Led Strip.svg":()=>s(()=>import("./Led Strip-BcmH_zbj.js"),[],import.meta.url),"../../assets/devices/Light.svg":()=>s(()=>import("./Light-ChIiCfYD.js"),[],import.meta.url),"../../assets/devices/Lightings.svg":()=>s(()=>import("./Lightings-C0WZ69yF.js"),[],import.meta.url),"../../assets/devices/Lock.svg":()=>s(()=>import("./Lock-BMJY64TO.js"),[],import.meta.url),"../../assets/devices/Louvre.svg":()=>s(()=>import("./Louvre-C5YcNLVm.js"),[],import.meta.url),"../../assets/devices/Mowing Machine.svg":()=>s(()=>import("./Mowing Machine-8EOTsqgg.js"),[],import.meta.url),"../../assets/devices/Music.svg":()=>s(()=>import("./Music-GTFyD3_A.js"),[],import.meta.url),"../../assets/devices/Outdoor Blinds.svg":()=>s(()=>import("./Outdoor Blinds-CXkkQc7j.js"),[],import.meta.url),"../../assets/devices/People.svg":()=>s(()=>import("./People-D60rnvXq.js"),[],import.meta.url),"../../assets/devices/Pool.svg":()=>s(()=>import("./Pool-DA49roJI.js"),[],import.meta.url),"../../assets/devices/Power Consumption.svg":()=>s(()=>import("./Power Consumption-CKf-DuPt.js"),[],import.meta.url),"../../assets/devices/Printer.svg":()=>s(()=>import("./Printer-BBdg5KQ0.js"),[],import.meta.url),"../../assets/devices/Pump.svg":()=>s(()=>import("./Pump-qElQ0u4I.js"),[],import.meta.url),"../../assets/devices/Receiver.svg":()=>s(()=>import("./Receiver-CM3as5YE.js"),[],import.meta.url),"../../assets/devices/Sconces.svg":()=>s(()=>import("./Sconces-C-gkKtaK.js"),[],import.meta.url),"../../assets/devices/Security.svg":()=>s(()=>import("./Security-BD-3hOtV.js"),[],import.meta.url),"../../assets/devices/Shading.svg":()=>s(()=>import("./Shading-BYTX3uGs.js"),[],import.meta.url),"../../assets/devices/Shutters.svg":()=>s(()=>import("./Shutters-C0RWQwOf.js"),[],import.meta.url),"../../assets/devices/SmokeDetector.svg":()=>s(()=>import("./SmokeDetector-BI7HtY1L.js"),[],import.meta.url),"../../assets/devices/Sockets.svg":()=>s(()=>import("./Sockets-DGwEYIEX.js"),[],import.meta.url),"../../assets/devices/Speaker.svg":()=>s(()=>import("./Speaker-DYDUjQxp.js"),[],import.meta.url),"../../assets/devices/Stove.svg":()=>s(()=>import("./Stove-C_JAiJBF.js"),[],import.meta.url),"../../assets/devices/Table Lamps.svg":()=>s(()=>import("./Table Lamps-G4idrhKm.js"),[],import.meta.url),"../../assets/devices/Temperature Sensors.svg":()=>s(()=>import("./Temperature Sensors-BzDeIhhc.js"),[],import.meta.url),"../../assets/devices/Tv.svg":()=>s(()=>import("./Tv-GicrNRwV.js"),[],import.meta.url),"../../assets/devices/Vacuum Cleaner.svg":()=>s(()=>import("./Vacuum Cleaner-BazNfd2m.js"),[],import.meta.url),"../../assets/devices/Ventilation.svg":()=>s(()=>import("./Ventilation-D7F0rbZK.js"),[],import.meta.url),"../../assets/devices/Washing Machines.svg":()=>s(()=>import("./Washing Machines-DyIMTxKc.js"),[],import.meta.url),"../../assets/devices/Water Consumption.svg":()=>s(()=>import("./Water Consumption-C0sLvwRF.js"),[],import.meta.url),"../../assets/devices/Water Heater.svg":()=>s(()=>import("./Water Heater-Byq4Q86V.js"),[],import.meta.url),"../../assets/devices/Water.svg":()=>s(()=>import("./Water-Dcu-ZixL.js"),[],import.meta.url),"../../assets/devices/Weather.svg":()=>s(()=>import("./Weather-pQkhBG6o.js"),[],import.meta.url),"../../assets/devices/Window.svg":()=>s(()=>import("./Window-B0emTnKi.js"),[],import.meta.url),"../../assets/groups/group1.svg":()=>s(()=>import("./group1-DBYxcyxq.js"),[],import.meta.url),"../../assets/groups/group10.svg":()=>s(()=>import("./group10-BIcZMfE3.js"),[],import.meta.url),"../../assets/groups/group2.svg":()=>s(()=>import("./group2-BUQSell7.js"),[],import.meta.url),"../../assets/groups/group3.svg":()=>s(()=>import("./group3-B0AdMrOp.js"),[],import.meta.url),"../../assets/groups/group4.svg":()=>s(()=>import("./group4-TeCgDok7.js"),[],import.meta.url),"../../assets/groups/group5.svg":()=>s(()=>import("./group5-CJ_-VPxg.js"),[],import.meta.url),"../../assets/groups/group6.svg":()=>s(()=>import("./group6-JW-nEhw_.js"),[],import.meta.url),"../../assets/groups/group7.svg":()=>s(()=>import("./group7-CWpVuR4T.js"),[],import.meta.url),"../../assets/groups/group8.svg":()=>s(()=>import("./group8-CRGBxCwd.js"),[],import.meta.url),"../../assets/groups/group9.svg":()=>s(()=>import("./group9-BXRQchYG.js"),[],import.meta.url),"../../assets/rooms/Anteroom.svg":()=>s(()=>import("./Anteroom-DPbAOJ_i.js"),[],import.meta.url),"../../assets/rooms/Attic.svg":()=>s(()=>import("./Attic-CGXtMIdp.js"),[],import.meta.url),"../../assets/rooms/Balcony.svg":()=>s(()=>import("./Balcony-DfK6N3aX.js"),[],import.meta.url),"../../assets/rooms/Barn.svg":()=>s(()=>import("./Barn-Lc8i72_q.js"),[],import.meta.url),"../../assets/rooms/Basement.svg":()=>s(()=>import("./Basement-DPN5xOB9.js"),[],import.meta.url),"../../assets/rooms/Bathroom.svg":()=>s(()=>import("./Bathroom-DzUiTIHs.js"),[],import.meta.url),"../../assets/rooms/Bedroom.svg":()=>s(()=>import("./Bedroom-xMBCTCFq.js"),[],import.meta.url),"../../assets/rooms/Boiler Room.svg":()=>s(()=>import("./Boiler Room-Bor2zD5L.js"),[],import.meta.url),"../../assets/rooms/Carport.svg":()=>s(()=>import("./Carport-C8HtrUXH.js"),[],import.meta.url),"../../assets/rooms/Cellar.svg":()=>s(()=>import("./Cellar-DRGc9D6m.js"),[],import.meta.url),"../../assets/rooms/Chamber.svg":()=>s(()=>import("./Chamber-D3f_uF0H.js"),[],import.meta.url),"../../assets/rooms/Corridor.svg":()=>s(()=>import("./Corridor-CasyPy4F.js"),[],import.meta.url),"../../assets/rooms/Dining Area.svg":()=>s(()=>import("./Dining Area-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dining Room.svg":()=>s(()=>import("./Dining Room-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dining.svg":()=>s(()=>import("./Dining-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dressing Room.svg":()=>s(()=>import("./Dressing Room-Dr_mWZjM.js"),[],import.meta.url),"../../assets/rooms/Driveway.svg":()=>s(()=>import("./Driveway-BehcXrKD.js"),[],import.meta.url),"../../assets/rooms/Entrance.svg":()=>s(()=>import("./Entrance-BYqUyt1q.js"),[],import.meta.url),"../../assets/rooms/Equipment Room.svg":()=>s(()=>import("./Equipment Room-B5AsGJCs.js"),[],import.meta.url),"../../assets/rooms/Front Yard.svg":()=>s(()=>import("./Front Yard-CsV9sTio.js"),[],import.meta.url),"../../assets/rooms/Gallery.svg":()=>s(()=>import("./Gallery-Cz16BrQ3.js"),[],import.meta.url),"../../assets/rooms/Garage.svg":()=>s(()=>import("./Garage-BxcK0Mpu.js"),[],import.meta.url),"../../assets/rooms/Garden.svg":()=>s(()=>import("./Garden-C67u1ESp.js"),[],import.meta.url),"../../assets/rooms/Ground Floor.svg":()=>s(()=>import("./Ground Floor-0zPWVd6I.js"),[],import.meta.url),"../../assets/rooms/Guest Bathroom.svg":()=>s(()=>import("./Guest Bathroom-DSAlkwqV.js"),[],import.meta.url),"../../assets/rooms/Guest Room.svg":()=>s(()=>import("./Guest Room-DijMrEih.js"),[],import.meta.url),"../../assets/rooms/Gym.svg":()=>s(()=>import("./Gym-D5EhuzLI.js"),[],import.meta.url),"../../assets/rooms/Hall.svg":()=>s(()=>import("./Hall-BXwSgCh7.js"),[],import.meta.url),"../../assets/rooms/Home Theater.svg":()=>s(()=>import("./Home Theater-BcYqHMU1.js"),[],import.meta.url),"../../assets/rooms/Kitchen.svg":()=>s(()=>import("./Kitchen-CfzTeEPK.js"),[],import.meta.url),"../../assets/rooms/Laundry Room.svg":()=>s(()=>import("./Laundry Room-zhlszIKu.js"),[],import.meta.url),"../../assets/rooms/Living Area.svg":()=>s(()=>import("./Living Area-CqhYSGQI.js"),[],import.meta.url),"../../assets/rooms/Living Room.svg":()=>s(()=>import("./Living Room-C7AE21A_.js"),[],import.meta.url),"../../assets/rooms/Locker Room.svg":()=>s(()=>import("./Locker Room-CyyDtimo.js"),[],import.meta.url),"../../assets/rooms/Nursery.svg":()=>s(()=>import("./Nursery-Cxrv-xmv.js"),[],import.meta.url),"../../assets/rooms/Office.svg":()=>s(()=>import("./Office-CIXVNXkh.js"),[],import.meta.url),"../../assets/rooms/Outdoors.svg":()=>s(()=>import("./Outdoors-BL5-A5jB.js"),[],import.meta.url),"../../assets/rooms/Playroom.svg":()=>s(()=>import("./Playroom-Cq-XMXTL.js"),[],import.meta.url),"../../assets/rooms/Pool.svg":()=>s(()=>import("./Pool-DLG0SZJN.js"),[],import.meta.url),"../../assets/rooms/Rear Wall.svg":()=>s(()=>import("./Rear Wall-BNvjPc7z.js"),[],import.meta.url),"../../assets/rooms/Second Floor.svg":()=>s(()=>import("./Second Floor-V-mYDL2A.js"),[],import.meta.url),"../../assets/rooms/Shed.svg":()=>s(()=>import("./Shed-liUNwlvT.js"),[],import.meta.url),"../../assets/rooms/Sleeping Area.svg":()=>s(()=>import("./Sleeping Area-41NoHRj5.js"),[],import.meta.url),"../../assets/rooms/Stairway.svg":()=>s(()=>import("./Stairway-DlYPygtf.js"),[],import.meta.url),"../../assets/rooms/Stairwell.svg":()=>s(()=>import("./Stairwell-DbZPzEAa.js"),[],import.meta.url),"../../assets/rooms/Storeroom.svg":()=>s(()=>import("./Storeroom-DVXZ_Y0f.js"),[],import.meta.url),"../../assets/rooms/Summer House.svg":()=>s(()=>import("./Summer House-l_7dnk-K.js"),[],import.meta.url),"../../assets/rooms/Swimming Pool.svg":()=>s(()=>import("./Swimming Pool-CQBR5mIg.js"),[],import.meta.url),"../../assets/rooms/Terrace.svg":()=>s(()=>import("./Terrace-YmL9ugkA.js"),[],import.meta.url),"../../assets/rooms/Toilet.svg":()=>s(()=>import("./Toilet-BKoDvjLo.js"),[],import.meta.url),"../../assets/rooms/Upstairs.svg":()=>s(()=>import("./Upstairs-W8fYn1Q6.js"),[],import.meta.url),"../../assets/rooms/Wardrobe.svg":()=>s(()=>import("./Wardrobe-Bns8F0nU.js"),[],import.meta.url),"../../assets/rooms/Washroom.svg":()=>s(()=>import("./Washroom-BqiNyqrk.js"),[],import.meta.url),"../../assets/rooms/Wc.svg":()=>s(()=>import("./Wc-BKoDvjLo.js"),[],import.meta.url),"../../assets/rooms/Windscreen.svg":()=>s(()=>import("./Windscreen-x8wYPJWL.js"),[],import.meta.url),"../../assets/rooms/Workshop.svg":()=>s(()=>import("./Workshop-CKHcsro_.js"),[],import.meta.url),"../../assets/rooms/Workspace.svg":()=>s(()=>import("./Workspace-DS72Rvmo.js"),[],import.meta.url),"../../assets/users/user1.svg":()=>s(()=>import("./user1-BHHH0LIq.js"),[],import.meta.url),"../../assets/users/user10.svg":()=>s(()=>import("./user10-Dvmqf8l1.js"),[],import.meta.url),"../../assets/users/user11.svg":()=>s(()=>import("./user11-C8ly5pY7.js"),[],import.meta.url),"../../assets/users/user12.svg":()=>s(()=>import("./user12-CHtaF3qG.js"),[],import.meta.url),"../../assets/users/user2.svg":()=>s(()=>import("./user2-BN56rMPt.js"),[],import.meta.url),"../../assets/users/user3.svg":()=>s(()=>import("./user3-Mx6XZSLK.js"),[],import.meta.url),"../../assets/users/user4.svg":()=>s(()=>import("./user4-DpEs_YiD.js"),[],import.meta.url),"../../assets/users/user5.svg":()=>s(()=>import("./user5-CVfrnlXE.js"),[],import.meta.url),"../../assets/users/user6.svg":()=>s(()=>import("./user6-C7HkYnq4.js"),[],import.meta.url),"../../assets/users/user7.svg":()=>s(()=>import("./user7-VAQcubFn.js"),[],import.meta.url),"../../assets/users/user8.svg":()=>s(()=>import("./user8-CwACr_jq.js"),[],import.meta.url),"../../assets/users/user9.svg":()=>s(()=>import("./user9-Dk4Mlhcc.js"),[],import.meta.url)}),`../../assets/${this.props.prefix.startsWith("enum.functions")?"devices":"rooms"}/${o.icon}.svg`,5),d=await H.getSvg(u.default);return i[a]=d}catch{return null}});Promise.all(r).then(()=>this.setState({icons:i,loading:!1}))})}render(){const t=this.props.prefix.startsWith("enum.functions")?Te:we;return n.jsxs(p.Dialog,{maxWidth:"md",fullWidth:!0,sx:{"& .MuiPaper-root":F.fullHeight},open:!0,onClose:this.props.onClose,children:[n.jsxs(p.DialogTitle,{children:[this.props.t(this.props.prefix.startsWith("enum.functions")?"Create new function":"Create new room"),n.jsx(p.TextField,{variant:"standard",style:F.filter,value:this.state.filter,onChange:i=>this.setState({filter:i.target.value.toLowerCase()}),placeholder:this.props.t("Filter"),margin:"dense",slotProps:{input:{endAdornment:this.state.filter?n.jsx(p.IconButton,{size:"small",onClick:()=>this.setState({filter:""}),children:n.jsx(C.Clear,{})}):null}}})]}),n.jsxs(p.DialogContent,{style:{textAlign:"center"},children:[this.state.loading&&n.jsx(p.LinearProgress,{}),n.jsx("div",{style:F.content,children:t.map((i,r)=>{const o=M.getText(i.name,this.props.lang)||i._id;return this.props.enums[`${this.props.prefix}.${i._id}`]?null:!this.state.filter||o.toLowerCase().includes(this.state.filter)?n.jsx(p.Button,{color:"grey",variant:"outlined",onClick:()=>{this.props.onClose(),this.props.createEnumTemplate(this.props.prefix,{_id:`${this.props.prefix}.${i._id}`,type:"enum",common:{name:i.name,icon:this.state.icons[r]},native:{}})},style:F.enumTemplateButton,startIcon:n.jsx(J,{src:this.state.icons[r],style:F.icon}),children:n.jsx("span",{style:F.enumTemplateLabel,children:M.getText(i.name,this.props.lang)||i._id})},r):null})})]}),n.jsxs(p.DialogActions,{children:[n.jsx(p.Button,{variant:"contained",color:"primary",style:F.customGroupButton,onClick:()=>{this.props.onClose(),this.props.showEnumEditDialog(this.props.getEnumTemplate(this.props.prefix),!0)},startIcon:n.jsx(C.Brush,{}),children:this.props.prefix==="enum.rooms"?this.props.t("Custom room"):this.props.prefix==="enum.functions"?this.props.t("Custom function"):this.props.t("Custom enumeration")}),n.jsx(p.Button,{color:"grey",variant:"contained",onClick:this.props.onClose,startIcon:n.jsx(C.Close,{}),children:this.props.t("Cancel")})]})]})}}function St(e){return n.jsxs(p.Dialog,{open:!0,onClose:e.onClose,children:[n.jsx(p.DialogTitle,{children:e.t("Please confirm")}),n.jsx(p.DialogContent,{children:n.jsx(p.DialogContentText,{children:e.t('Do you want to delete enum "%s"?',e.getName(e.enum.common.name))})}),n.jsxs(p.DialogActions,{children:[n.jsx(p.Button,{variant:"contained",autoFocus:!0,color:"primary",onClick:()=>e.deleteEnum(e.enum._id),startIcon:n.jsx(C.Delete,{}),children:e.t("Delete")}),n.jsx(p.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:n.jsx(C.Close,{}),children:e.t("Cancel")})]})]})}const bt=e=>{const[t,i]=P.useState({DragWrapper:null}),r=j.useRef(null);return P.useEffect(()=>{i({DragWrapper:a=>{var m,l,_,D;const u={type:"object",end:(w,B)=>{const $=B.getDropResult();w.data&&$&&(w.data.obj?e.addItemToEnum(w.data.obj._id,$.enumId):window.alert(`TODO: Add all direct children of ${w.data.id}`))},item:{data:a.item.data,preview:a.item.data&&a.item.data.obj?n.jsxs(p.Card,{variant:"outlined",style:e.stylesParent.enumGroupMember,children:[(m=a.item.data.obj.common)!=null&&m.icon?n.jsx(J,{style:e.stylesParent.icon,src:r.current?Ke(r.current,a.item.data.obj._id,e.lang):a.item.data.obj.common.icon}):Je[a.item.data.obj.type]||n.jsx(C.List,{style:e.stylesParent.icon}),n.jsxs("div",{children:[n.jsx("div",{children:(l=a.item.data.obj.common)!=null&&l.name?e.getName((_=a.item.data.obj.common)==null?void 0:_.name):a.item.data.obj._id}),(D=a.item.data.obj.common)!=null&&D.name?n.jsx("div",{style:{fontStyle:"italic",fontSize:"smaller",opacity:.7},children:a.item.data.obj._id}):null]})]},a.item.data.obj._id):null},collect:w=>({isDragging:w.isDragging()})},[{isDragging:d},h,g]=ze(u);return P.useEffect(()=>{g(Ie(),{captureDraggingState:!0})},[g]),n.jsx(p.Box,{sx:a.style,ref:h,style:{backgroundColor:d?"rgba(100,152,255,0.1)":void 0},children:a.children},a.item.data.id)}})},[e.stylesParent,e.addItemToEnum,e.getName]),t?n.jsx(Me,{t:e.t,socket:e.socket,types:["state","channel","device"],columns:["name","type","role","room","func"],lang:e.lang,dragEnabled:!0,theme:e.theme,DragWrapper:t.DragWrapper,setObjectsReference:o=>r.current=o,levelPadding:10}):null},x={mainGridCont:{height:"100%",overflowY:"auto"},childGridCont:{display:"flex",flexDirection:"column",height:"100%"},enumGroupMember:{display:"flex",gap:8,alignItems:"center",padding:"8px 16px"},childGridContWide:{height:"100%"},blocksContainer:{overflowY:"auto",overflowX:"hidden"},canDrop:e=>({backgroundColor:e.palette.background.default}),icon:{height:32,width:32,marginRight:5,backgroundSize:"cover",backgroundPosition:"center",display:"inline-block"},categoryTitle:{flexDirection:"row",alignItems:"center",display:"inline-flex"},enumTemplateDialog:{overflowY:"auto",textAlign:"center"},enumTemplate:{display:"inline-flex",padding:10,width:200},toolbarButton:{},filter:{width:"100%",paddingRight:20},topPanel:{display:"flex",flexDirection:"row",alignItems:"center",paddingLeft:20},topPanel2:{display:"flex",flexDirection:"row",alignItems:"center",padding:"4px 20px",justifyContent:"space-between"},searchText:{color:"orange"}},Tt=()=>{const e=et(),t=e.display,{item:i,style:r}=e;return t?n.jsx("div",{style:{...r,zIndex:1e3},children:i.preview}):null},wt={favorites:{_id:"enum.favorites",type:"enum",common:{name:{en:"Favorites",de:"Favoriten",ru:"Избранное",pt:"Favoritos",nl:"Favorieten",fr:"Favoris",it:"Preferiti",es:"Favoritos",pl:"Ulubione",uk:"Обране","zh-cn":"收藏夹"}},native:{}}};function xe(e,t){return(i,r)=>{var c,u,d,h;let o=t(((u=(c=e[i])==null?void 0:c.common)==null?void 0:u.name)||"")||i.split(".").pop(),a=t(((h=(d=e[r])==null?void 0:d.common)==null?void 0:h.name)||"")||r.split(".").pop();return o=o.toLowerCase(),a=a.toLowerCase(),o>a?1:o<a?-1:0}}const xt={_id:"",type:"enum",common:{name:"",color:"",desc:"",members:[]},native:{}};class le extends P.Component{cachedIcons;fastUpdate;refFilter;refClearButton;updateTimeout=null;changeEnums;scrollToItem;searchTimer=null;constructor(t){super(t);const i=window._localStorage||window.localStorage;let r={};try{r=i.getItem("enumsClosed")?JSON.parse(i.getItem("enumsClosed")):{}}catch{}let o=[];try{o=i.getItem("enumsCollapsed")?JSON.parse(i.getItem("enumsCollapsed")):[]}catch{}const a=i.getItem("enumsSplitSizes");let c=[50,50];if(a){try{c=JSON.parse(a)}catch{}(!Array.isArray(c)||c.length!==2)&&(c=[50,50])}this.state={enums:null,enumsTree:null,currentCategory:i.getItem("enumCurrentCategory")||"",search:"",enumEditDialog:null,enumTemplateDialog:null,enumDeleteDialog:null,members:{},categoryPopoverOpen:!1,enumsClosed:r,updating:[],enumsCollapsed:o,innerWidth:0,splitSizes:c},this.cachedIcons={},this.fastUpdate=!1,this.refFilter=j.createRef(),this.refClearButton=j.createRef()}getEnumTemplate=t=>{const i=JSON.parse(JSON.stringify(xt)),{_id:r,name:o}=le.findNewUniqueName(t,Object.values(this.state.enums),this.props.t("Enum"));return i._id=r,i.common.name=o,i};scrollToEnum(t){let i=t.split(".");i.pop();let r=!1;const o=JSON.parse(JSON.stringify(this.state.enumsClosed));for(;i.length>2;){const a=i.join(".");o[a]&&(delete o[a],r=!0),i=a.split("."),i.pop()}r?this.setState({enumsClosed:o},()=>{setTimeout(()=>{const a=document.getElementById(t);a==null||a.scrollIntoView(!0)},400)}):setTimeout(()=>{const a=document.getElementById(t);a==null||a.scrollIntoView(!0)},400)}addUpdating(t){if(!this.state.updating.includes(t)){const i=[...this.state.updating];return i.push(t),new Promise(r=>{this.setState({updating:i},()=>r())})}return Promise.resolve()}createEnumTemplate=(t,i)=>{const r=this.getEnumTemplate(t);r._id=i._id,r.common={...r.common,...i.common},this.scrollToItem=r._id,this.addUpdating(r._id).then(()=>this.props.socket.setObject(r._id,r)).catch(o=>window.alert(`Cannot create enum: ${o}`))};async componentDidMount(){await this.updateData(),await this.props.socket.subscribeObject("enum.*",this.onObjectChange)}componentWillUnmount(){this.props.socket.unsubscribeObject("enum.*",this.onObjectChange),this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}onObjectChange=(t,i)=>{let r;if(this.state.enums&&t.startsWith("enum."))if(i){const o=this.changeEnums&&this.changeEnums[t]||this.state.enums&&this.state.enums[t];(!o||o&&JSON.stringify(o)!==JSON.stringify(i))&&(this.changeEnums=this.changeEnums||JSON.parse(JSON.stringify(this.state.enums)),this.changeEnums[t]=i,r=!0)}else(this.changeEnums&&this.changeEnums[t]||!this.changeEnums&&this.state.enums&&this.state.enums[t])&&(this.changeEnums=this.changeEnums||JSON.parse(JSON.stringify(this.state.enums)),delete this.changeEnums[t],r=!0);r&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null;const o=this.changeEnums;this.changeEnums=null,this.updateData(o).then(()=>{this.scrollToItem&&(this.scrollToEnum(this.scrollToItem),this.scrollToItem=null)}).catch(()=>{})},this.fastUpdate?0:200),this.fastUpdate=!1)};updateData=async t=>{var o;t=t||await this.props.socket.getForeignObjects("enum.*","enum");const i={},r=Object.keys(t);for(let a=0;a<r.length;a++){const c=r[a];if((o=t[c].common)!=null&&o.members)for(let u=0;u<t[c].common.members.length;u++){const d=t[c].common.members[u];if(!i[d])try{i[d]=await this.props.socket.getObject(d)}catch{window.alert(`Cannot read member "${d}"`)}}}this.setState({enums:t,members:i,updating:[]},()=>this.buildTree(t))};buildTree(t){const i={data:null,children:{},id:""},r=Object.keys(t).sort(xe(t,this.getName));for(let o=0;o<r.length;o++){const a=r[o],c=t[a],u=a.split(".");let d=i;const h=[];for(let g=0;g<u.length;g++){const m=u[g];h.push(m),d.children[m]||(d.children[m]={data:null,children:{},id:h.join(".")}),d=d.children[m]}d.data=c}this.setCurrentCategory(this.state.currentCategory&&i.children.enum.children[this.state.currentCategory]?this.state.currentCategory:Object.keys(i.children.enum.children)[0],()=>this.setState({enumsTree:i}))}setCurrentCategory=(t,i)=>{t!==this.state.currentCategory?(this.setState({currentCategory:t},()=>{i&&i()}),(window._localStorage||window.localStorage).setItem("enumCurrentCategory",t)):i&&i()};addItemToEnum=(t,i)=>{var a;const r=JSON.parse(JSON.stringify(this.state.enums[i]));(a=r.common)!=null&&a.members||(r.common=r.common||{},r.common.members=[]);const o=r.common.members;o.includes(t)||(o.push(t),this.fastUpdate=!0,this.props.socket.setObject(r._id,r).catch(c=>window.alert(`Cannot set enum: ${c}`)))};removeMemberFromEnum=(t,i)=>{const r=JSON.parse(JSON.stringify(this.state.enums[i])),o=r.common.members,a=o.indexOf(t);a!==-1&&(o.splice(a,1),this.fastUpdate=!0,this.props.socket.setObject(r._id,r).catch(c=>window.alert(`Cannot update enum: ${c}`)))};moveEnum=async(t,i)=>{if(i.startsWith(t))return;const r=t.split(".");r.pop();const o=r.join("."),a=i;if(o===a)return;const c=Object.keys(this.state.enums),u=[...this.state.updating];try{for(let d=0;d<c.length;d++){const h=this.state.enums[c[d]];if(c[d].startsWith(t)){const g=c[d].replace(o,a),m=JSON.parse(JSON.stringify(h));m._id=g,u.includes(c[d])||u.push(c[d]),await this.props.socket.setObject(g,h),await this.props.socket.delObject(c[d])}}}catch(d){window.alert(`Cannot move enum: ${d}`)}this.setState({updating:u})};renderTree(t,i,r){var h,g;let o=null;if(!this.state.enumsClosed[t.id]){o=Object.keys(t.children);const m={};for(let l=0;l<o.length;l++){const _=o[l];m[_]=t.children[_].data}o.sort(xe(m,this.getName))}const a=this.getName((g=(h=t.data)==null?void 0:h.common)==null?void 0:g.name),c=t.id;let u,d;if(this.state.search){const m=this.state.search,l=a.toLowerCase().indexOf(m),_=c.toLowerCase().indexOf(m);if(l===-1&&_===-1)return null;l!==-1&&(u=a?[n.jsx("span",{children:a.substring(0,l)},"0"),n.jsx("span",{style:x.searchText,children:a.substring(l,l+this.state.search.length)},"1"),n.jsx("span",{children:a.substring(l+this.state.search.length)},"2")]:null),_!==-1&&(d=a?[n.jsx("span",{children:c.substring(0,_)},"0"),n.jsx("span",{style:x.searchText,children:c.substring(_,_+this.state.search.length)},"1"),n.jsx("span",{children:c.substring(_+this.state.search.length)},"2")]:null)}return n.jsxs("div",{style:{paddingLeft:r?32:0},children:[n.jsx(vt,{cachedIcons:this.cachedIcons,stylesParent:x,closed:this.state.enumsClosed[t.id],collapsed:this.state.enumsCollapsed.includes(t.id),copyEnum:this.copyEnum,currentCategory:this.state.currentCategory,enum:t.data,getEnumTemplate:this.getEnumTemplate,getName:this.getName,id:t.id,idText:d,members:this.state.members,moveEnum:this.moveEnum,name:u,onCollapse:()=>{const m=[...this.state.enumsCollapsed],l=m.indexOf(t.id);l===-1?m.push(t.id):m.splice(l,1),this.setState({enumsCollapsed:m}),(window._localStorage||window.localStorage).setItem("enumsCollapsed",JSON.stringify(m))},removeMemberFromEnum:this.removeMemberFromEnum,showEnumDeleteDialog:this.showEnumDeleteDialog,showEnumEditDialog:this.showEnumEditDialog,showEnumTemplateDialog:this.showEnumTemplateDialog,socket:this.props.socket,t:this.props.t,themeType:this.props.themeType,theme:this.props.theme,toggleEnum:this.toggleEnum,updating:this.state.updating.includes(t.id),childrenCount:t.children?Object.keys(t.children).length:0}),o?o.map((m,l)=>n.jsx(j.Fragment,{children:this.renderTree(t.children[m],l,r+1)},l)):null]},t.id||i)}showEnumEditDialog=(t,i)=>{const r={changed:!1};r.newItem=JSON.parse(JSON.stringify(t)),r.originalItem=JSON.parse(JSON.stringify(t)),r.isNew=i,this.setState({enumEditDialog:r})};showEnumTemplateDialog=t=>this.setState({enumTemplateDialog:t});showEnumDeleteDialog=t=>this.setState({enumDeleteDialog:t});saveEnum=async()=>{const t=this.state.enumEditDialog.newItem,i=this.state.enumEditDialog.originalItem._id;this.state.enumEditDialog.isNew&&(this.scrollToItem=t._id);const r=[...this.state.updating];if(r.includes(i)||r.push(i),await this.props.socket.setObject(t._id,t),i!==t._id)try{await this.props.socket.delObject(i);const o=Object.keys(this.state.enums);for(let a=0;a<o.length;a++){const c=o[a];if(c.startsWith(`${i}.`)){const u=JSON.parse(JSON.stringify(this.state.enums[c]));u._id=u._id.replace(`${i}.`,`${t._id}.`),r.includes(c)||r.push(c),await this.props.socket.setObject(u._id,u),await this.props.socket.delObject(c)}}}catch(o){window.alert(`Cannot save enum: ${o}`)}this.setState({enumEditDialog:null,updating:r})};deleteEnum=async t=>{const i=[...this.state.updating];try{i.includes(t)||i.push(t),this.state.enums[t]&&await this.props.socket.delObject(t);const r=Object.keys(this.state.enums);for(let o=0;o<r.length;o++){const a=r[o];a.startsWith(`${t}.`)&&(i.includes(a)||i.push(a),this.state.enums[t]&&await this.props.socket.delObject(a))}}catch(r){window.alert(`Cannot delete enum: ${r}`)}this.setState({enumDeleteDialog:null,updating:i})};copyEnum=t=>{const i=JSON.parse(JSON.stringify(this.state.enums[t]));let r,o=1;do r=t+o.toString(),o++;while(this.state.enums[r]);i._id=r,this.props.socket.setObject(r,i).catch(a=>window.alert(`Cannot delete enum: ${a}`))};toggleEnum=t=>{const i=JSON.parse(JSON.stringify(this.state.enumsClosed));i[t]=!i[t],this.setState({enumsClosed:i}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(i))};changeEnumFormData=t=>{const i=JSON.parse(JSON.stringify(this.state.enumEditDialog));i.newItem=JSON.parse(JSON.stringify(t)),i.changed=JSON.stringify(i.newItem)!==JSON.stringify(this.state.enums[i.originalItem]||{}),this.setState({enumEditDialog:i})};getName=t=>M.getText(t,this.props.lang);static _isUniqueName(t,i,r,o){return!i.find(a=>a._id===`${t}.${r.toLowerCase()}_${o}`)}static findNewUniqueName(t,i,r){let o=1;for(;!le._isUniqueName(t,i,r,o);)o++;return{_id:`${t}.${r.toLowerCase()}_${o}`,name:`${r} ${o}`}}onFilterChanged(t,i){this.refClearButton.current&&(t?this.refClearButton.current.style.display="block":this.refClearButton.current.style.display="none"),i&&this.refFilter.current&&(this.refFilter.current.value=""),this.searchTimer&&clearTimeout(this.searchTimer),this.searchTimer=setTimeout(r=>{this.searchTimer=null,this.setState({search:r.toLowerCase()})},i?0:300,t)}renderEditDialog(){return this.state.enumEditDialog?n.jsx(Dt,{onClose:()=>this.setState({enumEditDialog:null}),enums:Object.values(this.state.enums),enum:this.state.enumEditDialog.newItem,getName:this.getName,isNew:this.state.enumEditDialog.isNew,t:this.props.t,lang:this.props.lang,changed:this.state.enumEditDialog.changed,onChange:this.changeEnumFormData,saveData:this.saveEnum,innerWidth:this.state.innerWidth}):null}renderDeleteDialog(){return this.state.enumDeleteDialog?n.jsx(St,{onClose:()=>this.setState({enumDeleteDialog:null}),enum:this.state.enumDeleteDialog,getName:this.getName,t:this.props.t,deleteEnum:this.deleteEnum}):null}renderTemplateDialog(){return this.state.enumTemplateDialog?n.jsx(Ct,{prefix:this.state.enumTemplateDialog,onClose:()=>this.setState({enumTemplateDialog:null}),t:this.props.t,lang:this.props.lang,createEnumTemplate:this.createEnumTemplate,showEnumEditDialog:this.showEnumEditDialog,enums:this.state.enums,getEnumTemplate:this.getEnumTemplate}):null}render(){if(!this.state.enumsTree)return n.jsx(p.LinearProgress,{});const t=Object.values(this.state.enumsTree.children.enum.children[this.state.currentCategory].children),i=!!t.find(r=>r.children&&Object.keys(r.children).length);return n.jsxs(n.Fragment,{children:[n.jsxs(Ue,{backend:M.isTouchDevice()?qe:Ze,children:[n.jsx(Tt,{}),n.jsxs(ht,{direction:T.Horizontal,initialSizes:this.state.splitSizes,minWidths:[450,450],onResizeFinished:(r,o)=>{this.setState({splitSizes:o}),(window._localStorage||window.localStorage).setItem("enumsSplitSizes",JSON.stringify(o))},gutterClassName:this.props.themeType==="dark"?"Dark visGutter":"Light visGutter",children:[n.jsxs("div",{style:{...x.childGridCont,...this.state.innerWidth>600?x.childGridContWide:void 0},children:[n.jsxs("div",{style:x.topPanel,children:[n.jsx(p.Tooltip,{title:this.props.t("Add enum"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{id:"categoryPopoverButton",size:"small",style:x.toolbarButton,onClick:()=>this.state.enumsTree.children.enum.children.favorites?this.showEnumEditDialog(this.getEnumTemplate("enum"),!0):this.setState({categoryPopoverOpen:!0}),children:n.jsx(C.Add,{})})}),n.jsx(p.Popover,{open:this.state.categoryPopoverOpen,onClose:()=>this.setState({categoryPopoverOpen:!1}),anchorEl:()=>document.getElementById("categoryPopoverButton"),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:n.jsxs(p.MenuList,{children:[this.state.enumsTree.children.enum.children.favorites?null:n.jsx(p.MenuItem,{onClick:()=>this.createEnumTemplate("enum",wt.favorites),children:this.props.t("Favorites")}),n.jsx(p.MenuItem,{onClick:()=>this.showEnumEditDialog(this.getEnumTemplate("enum"),!0),children:this.props.t("Custom enum")})]})}),n.jsx(p.Tabs,{value:this.state.currentCategory,variant:"scrollable",scrollButtons:"auto",onChange:(r,o)=>this.setCurrentCategory(o),children:Object.keys(this.state.enumsTree.children.enum.children).map((r,o)=>{var c;let a=this.state.enumsTree.children.enum.children[r].data;return a=a||{_id:this.state.enumsTree.children.enum.children[r].id,common:{name:this.state.enumsTree.children.enum.children[r].id.split(".").pop()},type:"enum",native:{}},n.jsx(p.Tab,{component:"span",style:{backgroundColor:((c=a.common)==null?void 0:c.color)||void 0,borderRadius:4},label:n.jsx(Et,{themeType:this.props.themeType,categoryData:a,showEnumEditDialog:this.showEnumEditDialog,showEnumDeleteDialog:this.showEnumDeleteDialog,styles:x,...this.props}),value:r},o)})})]}),n.jsxs("div",{style:x.topPanel2,children:[n.jsx(p.TextField,{variant:"standard",inputRef:this.refFilter,placeholder:this.props.t("Filter"),style:x.filter,slotProps:{inputLabel:{shrink:!0},input:{endAdornment:n.jsx(p.IconButton,{ref:this.refClearButton,style:{display:"none"},size:"small",onClick:()=>this.onFilterChanged("",!0),children:n.jsx(C.Clear,{})})}},onChange:r=>this.onFilterChanged(r.target.value)}),n.jsx(p.Tooltip,{title:this.props.t("Narrow all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r=Object.keys(this.state.enums);this.setState({enumsCollapsed:r}),(window._localStorage||window.localStorage).setItem("enumsCollapsed",JSON.stringify(r))},children:n.jsx(C.KeyboardArrowUp,{})})}),n.jsx(p.Tooltip,{title:this.props.t("Wide all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{this.setState({enumsCollapsed:[]}),(window._localStorage||window.localStorage).setItem("enumsCollapsed","[]")},children:n.jsx(C.KeyboardArrowDown,{})})}),i&&n.jsx(p.Tooltip,{title:this.props.t("Collapse all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r={};Object.keys(this.state.enums).forEach(o=>r[o]=!0),this.setState({enumsClosed:r}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(r))},children:n.jsx(Oe,{})})}),i&&n.jsx(p.Tooltip,{title:this.props.t("Expand all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r={};this.setState({enumsClosed:r}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(r))},children:n.jsx(je,{})})}),n.jsx(p.Tooltip,{title:this.props.t("Add group"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",onClick:()=>{["functions","rooms"].includes(this.state.currentCategory)?this.setState({enumTemplateDialog:`enum.${this.state.currentCategory}`}):this.showEnumEditDialog(this.getEnumTemplate(`enum.${this.state.currentCategory}`),!0)},children:n.jsx(C.Add,{})})})]}),n.jsx("div",{style:x.blocksContainer,children:t.map((r,o)=>this.renderTree(r,o,0))})]}),n.jsx("div",{style:{...x.childGridCont,...this.state.innerWidth>600?x.childGridContWide:void 0},children:n.jsx("div",{style:x.blocksContainer,children:n.jsx(bt,{addItemToEnum:this.addItemToEnum,getName:this.getName,stylesParent:x,t:this.props.t,socket:this.props.socket,lang:this.props.lang,theme:this.props.theme})})})]})]}),this.renderEditDialog(),this.renderDeleteDialog(),this.renderTemplateDialog()]})}}function Jt(e){return n.jsx(Ye,{children:n.jsx(Xe,{style:{display:"flex",flexDirection:"column",overflow:"auto"},children:n.jsx(le,{socket:e.socket,t:e.t,lang:e.lang,themeType:e.themeType,theme:e.theme})})})}export{Jt as default};
|
|
111
|
+
ID: ${m._id}`:m._id,variant:"outlined",sx:y.enumGroupMember,style:{color:r,borderColor:`${r}80`},children:[this.state.icons[g]?n.jsx(J,{style:y.icon,src:this.state.icons[g]}):m.type==="state"?n.jsx(Ne,{style:y.icon}):m.type==="channel"?n.jsx(Fe,{style:y.icon}):m.type==="device"?n.jsx(He,{style:y.icon}):n.jsx(C.List,{style:y.icon}),n.jsxs("div",{children:[l||m._id,l?n.jsx("div",{style:y.secondLine,children:m._id}):null]}),n.jsx(p.IconButton,{size:"small",onClick:()=>t.removeMemberFromEnum(m._id,t.id),children:n.jsx(p.Tooltip,{title:t.t("Remove"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Clear,{style:{color:r}})})})]},m._id)}):(u=i==null?void 0:i.members)!=null&&u.length?n.jsx("div",{style:{...y.membersNumber,...t.childrenCount?y.memberNumberFolder:void 0},children:(d=i==null?void 0:i.members)==null?void 0:d.length}):""})]})]}),n.jsxs("div",{style:y.bottomButtons,children:[n.jsx(p.IconButton,{size:"small",onClick:()=>{["functions","rooms"].includes(t.currentCategory)?t.showEnumTemplateDialog(t.id):t.showEnumEditDialog(t.getEnumTemplate(t.id),!0)},children:n.jsx(p.Tooltip,{title:t.t("Add child"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Add,{style:{color:r}})})}),n.jsx(p.IconButton,{size:"small",onClick:()=>t.onCollapse(t.id),children:n.jsx(p.Tooltip,{title:t.collapsed?t.t("Show members"):t.t("Hide members"),placement:"top",children:t.collapsed?n.jsx(C.KeyboardArrowDown,{style:{color:r}}):n.jsx(C.KeyboardArrowUp,{style:{color:r}})})})]})]})}}function ft(e,t){var i;return!e.getItem()||!e.getItem().data?!0:t?(i=t.common)!=null&&i.members?!t.common.members.includes(e.getItem().data.id):!0:!1}const vt=e=>{var d,h;const[{canDrop:t,isOver:i},r]=Pe(()=>({accept:["object","enum"],drop:()=>({enumId:e.id}),canDrop:(g,m)=>ft(m,e.enum),collect:g=>({isOver:g.isOver(),canDrop:g.canDrop()})}),[(h=(d=e.enum)==null?void 0:d.common)==null?void 0:h.members]),o=P.useRef(null),[{isDragging:a},c,u]=ze({type:"enum",item:()=>{var g;return{enumId:e.id,preview:n.jsx("div",{style:{width:((g=o.current)==null?void 0:g.offsetWidth)||50},children:n.jsx(oe,{...e})})}},end:(g,m)=>{const l=m.getDropResult();if(l)e.moveEnum(g.enumId,l.enumId);else{const _=g.enumId.split(".");e.moveEnum(g.enumId,`${_[0]}.${_[1]}`)}},collect:g=>({isDragging:g.isDragging(),handlerId:g.getHandlerId()})});return P.useEffect(()=>{u(Ie(),{captureDraggingState:!0})},[u]),e.enum?M.isTouchDevice()?n.jsx("div",{ref:r,style:{opacity:t&&i?.5:1},children:n.jsx("div",{ref:o,children:n.jsx(oe,{isDragging:a,iconDragRef:c,...e})})}):n.jsx("div",{ref:r,style:{opacity:t&&i?.5:1},children:n.jsx("div",{ref:c,children:n.jsx("div",{ref:o,children:n.jsx(oe,{isDragging:a,...e})})})}):n.jsx(oe,{isDragging:a,...e})},Et=e=>{const[,t]=Pe(()=>({accept:["enum"],drop:()=>({enumId:e.categoryData._id}),collect:r=>({isOver:r.isOver(),canDrop:r.canDrop()})})),i=H.getInvertedColor(e.categoryData.common.color,e.themeType,!0);return n.jsxs("span",{ref:t,style:{...e.styles.categoryTitle,color:i},children:[e.categoryData.common.icon?n.jsx(J,{style:e.styles.icon,src:e.categoryData.common.icon}):null,typeof e.categoryData.common.name=="string"?e.categoryData.common.name:e.categoryData.common.name[e.lang]||e.categoryData.common.name.en,n.jsx(p.IconButton,{size:"small",style:{color:i},onClick:()=>{e.showEnumEditDialog(e.categoryData,!1)},children:n.jsx(p.Tooltip,{title:e.t("Edit"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Edit,{})})}),e.categoryData.common.dontDelete?null:n.jsx(p.IconButton,{size:"small",style:{color:i},onClick:()=>e.showEnumDeleteDialog(e.categoryData),children:n.jsx(p.Tooltip,{title:e.t("Delete"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(C.Delete,{})})})]})},L={contentRoot:{padding:"16px 24px"},dialogTitle:{borderBottom:"1px solid #00000020",padding:0,width:"100%"},dialogActions:{borderTop:"1px solid #00000020",width:"100%"},dialog:{},iconPreview:{height:32,width:32},colorPicker:{},formIcon:{margin:10,opacity:.6},formContainer:{display:"flex",justifyContent:"center",alignItems:"center"},formControl:{display:"flex",padding:"0 0 24px 0",flexGrow:1e3}};function Dt(e){const t=e.enums.find(u=>u._id===e.enum._id);let i=e.enum._id!=="system.enum.";e.isNew&&t&&(i=!1);const r=u=>u.split(".").pop(),o=u=>u.replace(H.FORBIDDEN_CHARS,"_").replace(/\s/g,"_").replace(/\./g,"_").replace(/,/g,"_").replace(/__/g,"_").replace(/__/g,"_"),a=u=>u&&typeof u=="object"?u[e.lang]||u.en:u||"",c=(u,d)=>{const h=u.split(".");return h[h.length-1]=d,h.join(".")};return n.jsxs(p.Dialog,{fullWidth:e.innerWidth<500,open:!0,onClose:(u,d)=>{d!=="backdropClick"&&d!=="escapeKeyDown"&&e.onClose()},children:[n.jsx(p.DialogTitle,{style:{...L.dialogTitle,padding:12},children:e.t("Enum parameters")}),n.jsx(p.DialogContent,{sx:{"&.MuiDialogContent-root":L.contentRoot},children:n.jsxs(p.Grid2,{container:!0,spacing:2,style:L.dialog,children:[n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"Name",t:e.t,value:e.getName(e.enum.common.name),onChange:u=>{const d=e.enum;!e.enum.common.dontDelete&&o(e.getName(d.common.name))===r(d._id)&&(d._id=c(d._id,o(u))),d.common.name=u,e.onChange(d)},autoComplete:"off",icon:C.TextFields,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"ID edit",t:e.t,disabled:e.enum.common.dontDelete,value:e.enum._id.split(".")[e.enum._id.split(".").length-1],onChange:u=>{const d=JSON.parse(JSON.stringify(e.enum));d._id=c(d._id,o(u)),e.onChange(d)},icon:C.LocalOffer,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"ID preview",t:e.t,disabled:!0,value:e.enum._id,icon:C.Pageview,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(re,{label:"Description",t:e.t,value:a(e.enum.common.desc),onChange:u=>{const d=e.enum;d.common.desc=u,e.onChange(d)},icon:C.Description,styles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx($e,{label:"Icon",onlyDevices:e.enum._id.startsWith("enum.functions."),onlyRooms:e.enum._id.startsWith("enum.rooms."),value:e.enum.common.icon,onChange:u=>{const d=e.enum;d.common.icon=u,e.onChange(d)},previewStyle:L.iconPreview,icon:C.Image,customStyles:L})}),n.jsx(p.Grid2,{size:{xs:12,md:6},children:n.jsx(Qe,{label:"Color",value:e.enum.common.color,previewStyle:L.iconPreview,onChange:u=>{const d=e.enum;d.common.color=u,e.onChange(d)},icon:C.ColorLens,style:L.colorPicker,styles:L,t:e.t})})]})}),n.jsxs(p.DialogActions,{style:L.dialogActions,children:[n.jsx(p.Button,{variant:"contained",color:"primary",autoFocus:!0,onClick:()=>e.saveData(),disabled:!i||!e.changed,startIcon:n.jsx(C.Check,{}),children:e.t("Save")}),n.jsx(p.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:n.jsx(C.Close,{}),children:e.t("Cancel")})]})]})}const yt=(e,t,i)=>{const r=e[t];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((o,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+t+(t.split("/").length!==i?". Note that variables only represent file names one level deep.":""))))})},Te=JSON.parse(`[{"_id":"hood","name":{"en":"Hood","ru":"Вытяжка","de":"Abzugshaube","fr":"Capot","it":"Cappe","nl":"Hood","pl":"Okapy","pt":"Hood","es":"Campana","zh-cn":"抽油烟机"},"icon":"Hoods"},{"_id":"alarm_system","name":{"en":"Alarm System","ru":"Сигнализация","de":"Alarmanlage","fr":"Systèmes D'Alarme","it":"Sistemi Di Allarme","nl":"Alarm Systems","pl":"Systemy Alarmowe","pt":"Sistemas De Alarme","es":"Sistemas De Alarma","zh-cn":"报警系统"},"icon":"Alarm Systems"},{"_id":"battery_status","name":{"en":"Battery Status","ru":"Заряд батареи","de":"Batteriestatus","fr":"État De La Batterie","it":"Stato Della Batteria","nl":"Batterij Status","pl":"Stan Baterii","pt":"Estado Da Bateria","es":"Estado De La Batería","zh-cn":"电池状态"},"icon":"Battery Status"},{"_id":"lighting","name":{"en":"Lighting","ru":"Светильник","de":"Beleuchtung","fr":"Éclairages","it":"Illuminazione","nl":"Verlichting","pl":"Oprawy Oświetleniowe","pt":"Iluminações","es":"Iluminaciones","zh-cn":"照明"},"icon":"Lightings"},{"_id":"shading","name":{"en":"Shading","ru":"Затенение","de":"Beschattungen","fr":"Ombres","it":"Ombreggiatura","nl":"Shading","pl":"Zacienienie","pt":"Shading","es":"Sombreado","zh-cn":"底纹"},"icon":"Shading"},{"_id":"irrigation","name":{"en":"Irrigation","ru":"Орошение","de":"Bewässerung","fr":"Irrigation","it":"Irrigazione","nl":"Irrigatie","pl":"Nawadnianie","pt":"Irrigação","es":"Irrigación","zh-cn":"灌溉"},"icon":"Irrigation"},{"_id":"iron","name":{"en":"Iron","ru":"Утюг","de":"Bügeleisen","fr":"Le Fer","it":"Ferro","nl":"Ijzer","pl":"Żelazo","pt":"Ferro","es":"Hierro","zh-cn":"铁"},"icon":"Iron"},{"_id":"computer","name":{"en":"Computer","ru":"Компьютер","de":"Rechner","fr":"L'Ordinateur","it":"Computer","nl":"Computer","pl":"Komputer","pt":"Computador","es":"Ordenador","zh-cn":"电脑"},"icon":"Computer"},{"_id":"ceiling_spotlight","name":{"en":"Ceiling Spotlight","ru":"Потолочный прожектор","de":"Deckenspot","fr":"Plafond Spotlight","it":"Faretti A Soffitto","nl":"Plafond Spotlight","pl":"Reflektory Sufitowe","pt":"Tecto Foco","es":"Focos De Techo","zh-cn":"天花射灯"},"icon":"Ceiling Spotlights"},{"_id":"printer","name":{"en":"Printer","de":"Drucker","ru":"Принтер","pt":"Impressora","nl":"Printer","fr":"Imprimante","it":"Stampante","es":"Impresora","pl":"Drukarka","zh-cn":"打印机"},"icon":"Printer"},{"_id":"power_consumption","name":{"en":"Power Consumption","ru":"Потребляемая мощность","de":"Stromverbrauch","fr":"Consommation D'Énergie","it":"Consumo Di Energia","nl":"Energieverbruik","pl":"Pobór Energii","pt":"Consumo De Energia","es":"El Consumo De Energía","zh-cn":"能量消耗"},"icon":"Power Consumption"},{"_id":"window","name":{"en":"Window","ru":"Окно","de":"Fenster","fr":"La Fenêtre","it":"Finestra","nl":"Venster","pl":"Okno","pt":"Janela","es":"Ventana","zh-cn":"窗户"},"icon":"Window"},{"_id":"garage_door","name":{"en":"Garage Door","ru":"Гаражные Ворота","de":"Garagentor","fr":"Portes De Garage","it":"Garage Door","nl":"Garage Door","pl":"Bramy Garażowe","pt":"Portas De Garagem","es":"Las Puertas De Garaje","zh-cn":"车库门"},"icon":"Garage Doors"},{"_id":"hairdryer","name":{"en":"Hairdryer","ru":"Фен","de":"Haartrockner","fr":"Sèche-Cheveux","it":"Asciugacapelli","nl":"Haardroger","pl":"Suszarka Do Włosów","pt":"Secador De Cabelo","es":"Secador De Pelo","zh-cn":"电吹风"},"icon":"Hairdryer"},{"_id":"hanging_lamp","name":{"en":"Hanging Lamp","ru":"Подвесной светильник","de":"Hängelampe","fr":"Lampes Suspendues","it":"Lampade A Sospensione","nl":"Opknoping Lampen","pl":"Lampy Wiszące","pt":"Lâmpadas De Suspensão","es":"Lámparas Colgantes","zh-cn":"挂灯"},"icon":"Hanging Lamps"},{"_id":"doorstep","name":{"en":"Enterance","ru":"Входная дверь","de":"Haustür","fr":"Seuil De Porte","it":"Gradino Della Porta","nl":"Drempel","pl":"Próg","pt":"Porta","es":"Peldaño","zh-cn":"门阶"},"icon":"Doorstep"},{"_id":"hot_water","name":{"en":"Hot Water","ru":"Горячая вода","de":"Heißwasser","fr":"Eau Chaude","it":"Acqua Calda","nl":"Heet Water","pl":"Gorąca Woda","pt":"Água Quente","es":"Agua Caliente","zh-cn":"热水"},"icon":"Hot Water"},{"_id":"heating","name":{"en":"Heating","ru":"Отопление","de":"Heizung","fr":"Chauffe-Eau","it":"Riscaldatore","nl":"Verwarmer","pl":"Podgrzewacz","pt":"Aquecedor","es":"Calentador","zh-cn":"加热器"},"icon":"Heater"},{"_id":"stove","name":{"en":"Stove","ru":"Печь","de":"Herd","fr":"Le Fourneau","it":"Stufa","nl":"Fornuis","pl":"Kuchenka","pt":"Forno","es":"Cocina","zh-cn":"火炉"},"icon":"Stove"},{"_id":"louvre","name":{"en":"Louvres","ru":"Жалюзи","de":"Jalousie","fr":"Persienne","it":"Persiana Di Ventilazione","nl":"Louvre","pl":"Żaluzja","pt":"Trapeira","es":"Lumbrera","zh-cn":"卢浮宫"},"icon":"Louvre"},{"_id":"coffee_maker","name":{"en":"Coffee Maker","ru":"Кофеварка","de":"Kaffeemaschine","fr":"Cafetière","it":"Macchine Da Caffè","nl":"Koffie Maker","pl":"Ekspresy Do Kawy","pt":"Cafeteira","es":"Cafetera","zh-cn":"咖啡壶"},"icon":"Coffee Makers"},{"_id":"cold_water","name":{"en":"Cold Water","ru":"Холодная вода","de":"Kaltwasser","fr":"Eau Froide","it":"Acqua Fredda","nl":"Koud Water","pl":"Zimna Woda","pt":"Água Fria","es":"Agua Fría","zh-cn":"冷水"},"icon":"Cold Water"},{"_id":"climate","name":{"en":"Climate","ru":"Климат","de":"Klima","fr":"Climat","it":"Clima","nl":"Klimaat","pl":"Klimat","pt":"Clima","es":"Clima","zh-cn":"气候"},"icon":"Climate"},{"_id":"speaker","name":{"en":"Speaker","ru":"Звуковая система","de":"Lautsprecher","fr":"Orateur","it":"Altoparlante","nl":"Spreker","pl":"Głośnik","pt":"Palestrante","es":"Altavoz","zh-cn":"扬声器"},"icon":"Speaker"},{"_id":"led_strip","name":{"en":"Led Strip","ru":"Светодиодная лента","de":"LED Leiste","fr":"Led Strip","it":"Led Strip","nl":"Loden Strip","pl":"Pasek Ledowy","pt":"Led Faixa","es":"Tira Llevada","zh-cn":"灯带"},"icon":"Led Strip"},{"_id":"light","name":{"en":"Light","ru":"Свет","de":"Licht","fr":"Lumière","it":"Leggero","nl":"Licht","pl":"Lekki","pt":"Luz","es":"Luz","zh-cn":"光"},"icon":"Light"},{"_id":"fan","name":{"en":"Fan","ru":"Вентилятор","de":"Lüfter","fr":"Ventilateur","it":"Fan","nl":"Ventilator","pl":"Wentylator","pt":"Ventilador","es":"Ventilador","zh-cn":"扇子"},"icon":"Fan"},{"_id":"humidity","name":{"en":"Humidity","ru":"Влажность","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","nl":"Vochtigheid","pl":"Wilgotność","pt":"Umidade","es":"Humedad","zh-cn":"湿度"},"icon":"Humidity"},{"_id":"ventilation","name":{"en":"Ventilation","ru":"Вентиляция","de":"Lüftung","fr":"Ventilation","it":"Ventilazione","nl":"Ventilatie","pl":"Wentylacja","pt":"Ventilação","es":"Ventilación","zh-cn":"通风"},"icon":"Ventilation"},{"_id":"chandelier","name":{"en":"Chandelier","ru":"Люстра","de":"Kronleuchter","fr":"Lustre","it":"Lampadario","nl":"Kroonluchter","pl":"Żyrandol","pt":"Lustre","es":"Candelabro","zh-cn":"枝形吊灯"},"icon":"Chandelier"},{"_id":"awning","name":{"en":"Awning","ru":"Маркиза","de":"Markise","fr":"Auvents","it":"Tende","nl":"Luifels","pl":"Okrycia","pt":"Toldos","es":"Toldos","zh-cn":"遮阳篷"},"icon":"Awnings"},{"_id":"music","name":{"en":"Music","ru":"Музыка","de":"Musik","fr":"Musique","it":"Musica","nl":"Muziek","pl":"Muzyka","pt":"Música","es":"Música","zh-cn":"音乐"},"icon":"Music"},{"_id":"people","name":{"en":"People","ru":"Люди","de":"Personen","fr":"Gens","it":"Persone","nl":"Mensen","pl":"Ludzie","pt":"Pessoas","es":"Personas","zh-cn":"人们"},"icon":"People"},{"_id":"pool","name":{"en":"Pool","ru":"Бассейн","de":"Pool","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"水池"},"icon":"Pool"},{"_id":"pump","name":{"en":"Pump","ru":"Насос","de":"Pumpe","fr":"Pompe","it":"Pompa","nl":"Pomp","pl":"Pompa","pt":"Bombear","es":"Bomba","zh-cn":"泵"},"icon":"Pump"},{"_id":"outdoor_blinds","name":{"en":"Outdoor Blinds","ru":"Внещгте жалюзи","de":"Raffstore","fr":"Volets","it":"Tende Da Esterni","nl":"Outdoor Blinds","pl":"Rolety Zewnętrzne","pt":"Estores Exteriores","es":"Persianas Exteriores","zh-cn":"室外百叶窗"},"icon":"Outdoor Blinds"},{"_id":"mowing_machine","name":{"en":"Mowing Machine","ru":"Газонокосилка","de":"Rasenmäher","fr":"Machine De Fauchage","it":"Macchina Di Falciatura","nl":"Maaimachine","pl":"Kosiarka","pt":"Roçada Máquina","es":"Segadora","zh-cn":"割草机"},"icon":"Mowing Machine"},{"_id":"receiver","name":{"en":"Receiver","ru":"Приставка","de":"Receiver","fr":"Destinataire","it":"Ricevitore","nl":"Ontvanger","pl":"Odbiorca","pt":"Recebedor","es":"Receptor","zh-cn":"接收者"},"icon":"Receiver"},{"_id":"shutters","name":{"en":"Shutters","ru":"Ставни","de":"Rollladen","fr":"Volets","it":"Persiane","nl":"Shutters","pl":"Żaluzje","pt":"Persianas","es":"Persianas","zh-cn":"百叶窗"},"icon":"Shutters"},{"_id":"smoke_detector","name":{"en":"Smoke detector","de":"Rauchmelder","ru":"Детектор дыма","pt":"Detector de fumaça","nl":"Rookdetector","fr":"Détecteur de fumée","it":"Rilevatore di fumo","es":"Detector de humo","pl":"Wykrywacz dymu","zh-cn":"烟雾探测器"},"icon":"SmokeDetector"},{"_id":"lock","name":{"en":"Lock","ru":"Замок","de":"Schloß","fr":"Fermer À Clé","it":"Serratura","nl":"Slot","pl":"Zamek","pt":"Trancar","es":"Cerrar Con Llave","zh-cn":"锁"},"icon":"Lock"},{"_id":"security","name":{"en":"Security","ru":"Безопасность","de":"Sicherheit","fr":"Sécurité","it":"Sicurezza","nl":"Veiligheid","pl":"Bezpieczeństwo","pt":"Segurança","es":"Seguridad","zh-cn":"安全"},"icon":"Security"},{"_id":"dishwasher","name":{"en":"Dishwasher","ru":"Посудомоечная машина","de":"Spülmaschine","fr":"Lave-Vaisselles","it":"Lavastoviglie","nl":"Vaatwassers","pl":"Zmywarki","pt":"Máquinas De Lavar Louça","es":"Lavaplatos","zh-cn":"洗碗机"},"icon":"Dishwashers"},{"_id":"vacuum_cleaner","name":{"en":"Vacuum Cleaner","ru":"Пылесос","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","nl":"Stofzuiger","pl":"Odkurzacz","pt":"Aspirador De Pó","es":"Aspiradora","zh-cn":"吸尘器"},"icon":"Vacuum Cleaner"},{"_id":"socket","name":{"en":"Socket","ru":"Розетка","de":"Steckdose","fr":"Prise","it":"Socket","nl":"Socket","pl":"Gniazdka","pt":"Tomada","es":"Zócalo","zh-cn":"套接字"},"icon":"Sockets"},{"_id":"floor_lamp","name":{"en":"Floor Lamp","ru":"Торшер","de":"Stehlampe","fr":"Lampes Pour Plancher","it":"Lampade A Stelo","nl":"Vloerlampen","pl":"Lampy Podłogowe","pt":"Lâmpadas Chão","es":"Lámparas De Pie","zh-cn":"落地灯"},"icon":"Floor Lamps"},{"_id":"power_consumption","name":{"en":"Power Consumption","ru":"Потребляемая мощность","de":"Stromverbrauch","fr":"Consommation D'Énergie","it":"Consumo Di Energia","nl":"Energieverbruik","pl":"Pobór Energii","pt":"Consumo De Energia","es":"El Consumo De Energía","zh-cn":"能量消耗"},"icon":"Power Consumption"},{"_id":"temperature_sensor","name":{"en":"Temperature Sensor","ru":"Температурный датчик","de":"Temperatur-Sensor","fr":"Capteur De Température","it":"Sensori Di Temperatura","nl":"Temperatuursensor","pl":"Czujniki Temperatury","pt":"Sensores De Temperatura","es":"Sensores De Temperatura","zh-cn":"温度传感器"},"icon":"Temperature Sensors"},{"_id":"table_lamp","name":{"en":"Table Lamp","ru":"Настольная лампа","de":"Tischlampe","fr":"Lampe De Chevet","it":"Lampade Da Tavolo","nl":"Tafellampen","pl":"Lampy Stołowe","pt":"Lâmpadas De Mesa","es":"Lámparas De Mesa","zh-cn":"台灯"},"icon":"Table Lamps"},{"_id":"gate","name":{"en":"Gate","ru":"Ворота","de":"Tor","fr":"Porte","it":"Gate","nl":"Gate","pl":"Bramy","pt":"Portões","es":"Puertas","zh-cn":"盖茨"},"icon":"Gates"},{"_id":"dryer","name":{"en":"Dryer","ru":"Сушилка","de":"Trockner","fr":"Séchoir","it":"Asciugatrice","nl":"Droger","pl":"Suszarka","pt":"Secador","es":"Secadora","zh-cn":"烘干机"},"icon":"Dryer"},{"_id":"door","name":{"en":"Door","ru":"Дверь","de":"Tür","fr":"Des Portes","it":"Porte","nl":"Deuren","pl":"Drzwi","pt":"Portas","es":"Puertas","zh-cn":"门"},"icon":"Doors"},{"_id":"tv","name":{"en":"Tv","ru":"Телевизор","de":"TV","fr":"La Télé","it":"Tv","nl":"Tv","pl":"Telewizja","pt":"Televisão","es":"Televisor","zh-cn":"电视"},"icon":"Tv"},{"_id":"consumption","name":{"en":"Consumption","ru":"Потребление","de":"Verbrauch","fr":"Consommation","it":"Consumo","nl":"Consumptie","pl":"Konsumpcja","pt":"Consumo","es":"Consumo","zh-cn":"消费"},"icon":"Consumption"},{"_id":"amplifier","name":{"en":"Amplifier","ru":"Усилитель звука","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","nl":"Versterker","pl":"Wzmacniacz","pt":"Amplificador","es":"Amplificador","zh-cn":"放大器"},"icon":"Amplifier"},{"_id":"curtains","name":{"en":"Curtains","ru":"Шторы","de":"Vorhänge","fr":"Des Rideaux","it":"Le Tende","nl":"Gordijnen","pl":"Zasłony","pt":"Cortinas","es":"Cortinas","zh-cn":"窗帘"},"icon":"Curtains"},{"_id":"sconce","name":{"en":"Sconce","ru":"Настенный светильник","de":"Wandlampe","fr":"Sconce","it":"Sconce","nl":"Sconce","pl":"Kinkiety","pt":"Arandelas","es":"Los Apliques","zh-cn":"壁灯"},"icon":"Sconces"},{"_id":"washing_machine","name":{"en":"Washing Machine","ru":"Стиральная машина","de":"Waschmaschine","fr":"Machines À Laver","it":"Lavatrici","nl":"Wasmachines","pl":"Pralki","pt":"Máquinas De Lavar Roupas","es":"Lavadoras","zh-cn":"洗衣机"},"icon":"Washing Machines"},{"_id":"water","name":{"en":"Water","ru":"Вода","de":"Wasser","fr":"L'Eau","it":"Acqua","nl":"Water","pl":"Woda","pt":"Água","es":"Agua","zh-cn":"水"},"icon":"Water"},{"_id":"water_heater","name":{"en":"Water Heater","ru":"Нагреватель воды","de":"Wasserkocher","fr":"Chauffe-Eau","it":"Scaldabagno","nl":"Waterkoker","pl":"Podgrzewacz Wody","pt":"Aquecedor De Água","es":"Calentador De Agua","zh-cn":"热水器"},"icon":"Water Heater"},{"_id":"water_consumption","name":{"en":"Water Consumption","ru":"Потребление воды","de":"Wasserverbrauch","fr":"Consommation D'Eau","it":"Consumo D'Acqua","nl":"Waterverbruik","pl":"Konsumpcja Wody","pt":"Consumo De Água","es":"Consumo De Agua","zh-cn":"耗水量"},"icon":"Water Consumption"},{"_id":"weather","name":{"en":"Weather","ru":"Погода","de":"Wetter","fr":"La Météo","it":"Tempo Metereologico","nl":"Weer","pl":"Pogoda","pt":"Clima","es":"Tiempo","zh-cn":"天气"},"icon":"Weather"}]`),we=JSON.parse(`[{"_id":"storeroom","name":{"en":"Storeroom","ru":"Кладовая","de":"Abstellraum","fr":"Débarras","it":"Dispensa","nl":"Bergplaats","pl":"Magazyn","pt":"Despensa","es":"Trastero","zh-cn":"库房"},"icon":"Storeroom"},{"_id":"second_floor","name":{"en":"Second floor","ru":"Второй этаж","de":"Erster OG","pt":"Primeiro andar","nl":"Eerste verdieping","fr":"Premier étage","it":"Primo piano","es":"Primer piso","pl":"Pierwsze piętro","zh-cn":"第一层"},"icon":"Second Floor"},{"_id":"dressing_room","name":{"en":"Dressing Room","ru":"Гардеробная","de":"Ankleide","fr":"Vestiaire","it":"Camerino","nl":"Kleedkamer","pl":"Przebieralnia","pt":"Provador","es":"Vestidor","zh-cn":"更衣室"},"icon":"Dressing Room"},{"_id":"workspace","name":{"en":"Workspace","ru":"Кабинет","de":"Arbeitszimmer","fr":"Espace De Travail","it":"Area Di Lavoro","nl":"Workspace","pl":"Workspace","pt":"Área De Trabalho","es":"Espacio De Trabajo","zh-cn":"工作区"},"icon":"Workspace"},{"_id":"driveway","name":{"en":"Driveway","ru":"Подъезд","de":"Auffahrt","fr":"Allée","it":"Viale","nl":"Pad","pl":"Podjazd","pt":"Entrada Da Garagem","es":"Entrada De Coches","zh-cn":"车道"},"icon":"Driveway"},{"_id":"outdoors","name":{"en":"Outdoors","ru":"Улица","de":"Außenbereich","fr":"En Plein Air","it":"All'Aperto","nl":"Buitenshuis","pl":"Na Dworze","pt":"Ao Ar Livre","es":"Al Aire Libre","zh-cn":"户外"},"icon":"Outdoors"},{"_id":"bathroom","name":{"en":"Bathroom","ru":"Ванная","de":"Badezimmer","fr":"Salle De Bains","it":"Bagno","nl":"Badkamer","pl":"Łazienka","pt":"Banheiro","es":"Baño","zh-cn":"浴室"},"icon":"Bathroom"},{"_id":"balcony","name":{"en":"Balcony","ru":"Балкон","de":"Balkon","fr":"Balcon","it":"Balcone","nl":"Balkon","pl":"Balkon","pt":"Sacada","es":"Balcón","zh-cn":"阳台"},"icon":"Balcony"},{"_id":"office","name":{"en":"Office","ru":"Офис","de":"Office","fr":"Bureau","it":"Ufficio","nl":"Kantoor","pl":"Gabinet","pt":"Escritório","es":"Oficina","zh-cn":"办公室"},"icon":"Office"},{"_id":"carport","name":{"en":"Carport","ru":"Навес","de":"Carport","fr":"Carport","it":"Posto Auto Coperto","nl":"Carport","pl":"Wiata","pt":"Telheiro","es":"Cochera","zh-cn":"车棚"},"icon":"Carport"},{"_id":"attic","name":{"en":"Attic","ru":"Чердак","de":"Dachgeschoss","fr":"Grenier","it":"Attico","nl":"Zolder","pl":"Poddasze","pt":"Sótão","es":"Ático","zh-cn":"阁楼"},"icon":"Attic"},{"_id":"hall","name":{"en":"Hall","ru":"Холл","de":"Diele","fr":"Salle","it":"Sala","nl":"Hal","pl":"Sala","pt":"Corredor","es":"Sala","zh-cn":"大厅"},"icon":"Hall"},{"_id":"entrance","name":{"en":"Entrance","ru":"Вход","de":"Eingang","fr":"Entrée","it":"Ingresso","nl":"Ingang","pl":"Wejście","pt":"Entrada","es":"Entrada","zh-cn":"入口"},"icon":"Entrance"},{"_id":"ground_floor","name":{"en":"Ground Floor","ru":"Первый этаж","de":"Erdgeschoss","fr":"Rez-De-Chaussée","it":"Piano Terra","nl":"Begane Grond","pl":"Parter","pt":"Térreo","es":"Planta Baja","zh-cn":"一楼"},"icon":"Ground Floor"},{"_id":"dining_area","name":{"en":"Dining Area","ru":"Столовая","de":"Essbereich","fr":"Salle À Manger","it":"Zona Pranzo","nl":"Eethoek","pl":"Jadalnia","pt":"Área De Refeições","es":"Comedor","zh-cn":"用餐区"},"icon":"Dining Area"},{"_id":"dining_room","name":{"en":"Dining Room","ru":"Столовая комната","de":"Esszimmer","fr":"Salle À Manger","it":"Sala Da Pranzo","nl":"Eetkamer","pl":"Jadalnia","pt":"Sala De Jantar","es":"Comedor","zh-cn":"饭厅"},"icon":"Dining Room"},{"_id":"gym","name":{"en":"Gym","ru":"Спортзал","de":"Fitnessraum","fr":"Gym","it":"Palestra","nl":"Sportschool","pl":"Siłownia","pt":"Ginásio","es":"Gimnasio","zh-cn":"健身房"},"icon":"Gym"},{"_id":"gallery","name":{"en":"Gallery","ru":"Галерея","de":"Galerie","fr":"Galerie","it":"Galleria","nl":"Galerij","pl":"Galeria","pt":"Galeria","es":"Galería","zh-cn":"画廊"},"icon":"Gallery"},{"_id":"garage","name":{"en":"Garage","ru":"Гараж","de":"Garage","fr":"Garage","it":"Box Auto","nl":"Garage","pl":"Garaż","pt":"Garagem","es":"Garaje","zh-cn":"车库"},"icon":"Garage"},{"_id":"wardrobe","name":{"en":"Wardrobe","ru":"Гардероб","de":"Garderobe","fr":"Penderie","it":"Armadio","nl":"Garderobe","pl":"Szafa","pt":"Guarda Roupa","es":"Armario","zh-cn":"衣柜"},"icon":"Wardrobe"},{"_id":"garden","name":{"en":"Garden","ru":"Сад","de":"Garten","fr":"Jardin","it":"Giardino","nl":"Tuin","pl":"Ogród","pt":"Jardim","es":"Jardín","zh-cn":"花园"},"icon":"Garden"},{"_id":"summer_house","name":{"en":"Summer House","ru":"Дача","de":"Gartenhaus","fr":"Maison D'Été","it":"Casa Estiva","nl":"Zomerhuis","pl":"Domek Letniskowy","pt":"Summer House","es":"Casa De Verano","zh-cn":"凉亭"},"icon":"Summer House"},{"_id":"guest_bathroom","name":{"en":"Guest Bathroom","ru":"Гостевая ванная","de":"Gäste-WC","fr":"Salle De Bains Invité","it":"Guest Bathroom","nl":"Gastenbadkamer","pl":"Łazienka Gościnna","pt":"Banheiro De Hóspedes","es":"Baño De Visitas","zh-cn":"客用浴室"},"icon":"Guest Bathroom"},{"_id":"guest_room","name":{"en":"Guest Room","ru":"Гостевая комната","de":"Gästezimmer","fr":"Chambre D'Amis","it":"Stanza Degli Ospiti","nl":"Guest Room","pl":"Pokój Gościnny","pt":"Quarto De Hóspedes","es":"Habitación De Huéspedes","zh-cn":"客房"},"icon":"Guest Room"},{"_id":"laundry_room","name":{"en":"Laundry Room","ru":"Прачечная","de":"Hauswirtschaftsraum","fr":"Buanderie","it":"Lavanderia","nl":"Wasruimte","pl":"Pralnia","pt":"Lavandaria","es":"Cuarto De Lavado","zh-cn":"洗衣房"},"icon":"Laundry Room"},{"_id":"home_theater","name":{"en":"Home Theater","ru":"Кинозал","de":"Heimkino","fr":"Cinéma Maison","it":"Home Theater","nl":"Thuisbioscoop","pl":"Kino Domowe","pt":"Cinema Em Casa","es":"Cine En Casa","zh-cn":"家庭电影院"},"icon":"Home Theater"},{"_id":"boiler_room","name":{"en":"Boiler Room","ru":"Бойлерная","de":"Heizungsraum","fr":"Chaufferie","it":"Locale Caldaia","nl":"Boiler Room","pl":"Kotłownia","pt":"Sala Da Caldeira","es":"Sala De Calderas","zh-cn":"锅炉房"},"icon":"Boiler Room"},{"_id":"chamber","name":{"en":"Chamber","ru":"Хранилище","de":"Kammer","fr":"Chambre","it":"Camera","nl":"Kamer","pl":"Izba","pt":"Câmara","es":"Cámara","zh-cn":"商会"},"icon":"Chamber"},{"_id":"cellar","name":{"en":"Cellar","ru":"Погреб","de":"Keller","fr":"Sous-Sol","it":"Taverna","nl":"Kelder","pl":"Piwnica","pt":"Porão","es":"Sótano","zh-cn":"地下室"},"icon":"Basement"},{"_id":"nursery","name":{"en":"Kids","ru":"Детская","de":"Kinderzimmer","fr":"Garderie","it":"Asilo","nl":"Kinderkamer","pl":"Żłobek","pt":"Berçário","es":"Guardería","zh-cn":"苗圃"},"icon":"Nursery"},{"_id":"corridor","name":{"en":"Corridor","ru":"Коридор","de":"Korridor","fr":"Couloir","it":"Corridoio","nl":"Gang","pl":"Korytarz","pt":"Corredor","es":"Corredor","zh-cn":"走廊"},"icon":"Corridor"},{"_id":"kitchen","name":{"en":"Kitchen","ru":"Кухня","de":"Küche","fr":"Cuisine","it":"Cucina","nl":"Keuken","pl":"Kuchnia","pt":"Cozinha","es":"Cocina","zh-cn":"厨房"},"icon":"Kitchen"},{"_id":"upstairs","name":{"en":"Upstairs","ru":"Верхний этаж","de":"Obergeschoss","fr":"En Haut","it":"Di Sopra","nl":"Boven","pl":"Na Górę","pt":"Andar De Cima","es":"Piso Superior","zh-cn":"楼上"},"icon":"Upstairs"},{"_id":"office","name":{"en":"Office","ru":"Офис","de":"Office","fr":"Bureau","it":"Ufficio","nl":"Kantoor","pl":"Gabinet","pt":"Escritório","es":"Oficina","zh-cn":"办公室"},"icon":"Office"},{"_id":"pool","name":{"en":"Pool","ru":"Бассейн","de":"Pool","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"水池"},"icon":"Pool"},{"_id":"rear_wall","name":{"en":"Rear Wall","ru":"Задний забор","de":"Rückwand","fr":"Paroi Arrière","it":"Parete Posteriore","nl":"Achterwand","pl":"Tylna Ściana","pt":"Parede Traseira","es":"Pared Posterior","zh-cn":"后墙"},"icon":"Rear Wall"},{"_id":"barn","name":{"en":"Barn","ru":"Амбар","de":"Scheune","fr":"Grange","it":"Fienile","nl":"Schuur","pl":"Stodoła","pt":"Celeiro","es":"Granero","zh-cn":"谷仓"},"icon":"Barn"},{"_id":"sleeping_area","name":{"en":"Sleeping Area","ru":"Комната для сна","de":"Schlafbereich","fr":"Coin Montagne","it":"Area Sleeping","nl":"Sleeping Area","pl":"Powierzchnia Spania","pt":"Sleeping Area","es":"Área De Dormir","zh-cn":"睡眠区"},"icon":"Sleeping Area"},{"_id":"bedroom","name":{"en":"Bedroom","ru":"Спальня","de":"Schlafzimmer","fr":"Chambre","it":"Camera Da Letto","nl":"Slaapkamer","pl":"Sypialnia","pt":"Quarto","es":"Cuarto","zh-cn":"卧室"},"icon":"Bedroom"},{"_id":"shed","name":{"en":"Shed","ru":"Сарай","de":"Schuppen","fr":"Hangar","it":"Capannone","nl":"Schuur","pl":"Budka","pt":"Cabana","es":"Cobertizo","zh-cn":"棚"},"icon":"Shed"},{"_id":"swimming_pool","name":{"en":"Swimming Pool","ru":"Бассейн","de":"Schwimmbad","fr":"Piscine","it":"Piscina","nl":"Zwembad","pl":"Basen","pt":"Piscina","es":"Piscina","zh-cn":"游泳池"},"icon":"Swimming Pool"},{"_id":"dining","name":{"en":"Dining","ru":"Обеденная","de":"Speis","fr":"À Manger","it":"Cenare","nl":"Dining","pl":"Jadalnia","pt":"Jantar","es":"Comida","zh-cn":"用餐"},"icon":"Dining"},{"_id":"playroom","name":{"en":"Playroom","ru":"Игровая","de":"Spielzimmer","fr":"Salle De Jeux","it":"Stanza Dei Giochi","nl":"Speelkamer","pl":"Pokój Zabaw","pt":"Sala De Jogos","es":"Cuarto De Jugar","zh-cn":"游戏室"},"icon":"Playroom"},{"_id":"stairway","name":{"en":"Stairway","ru":"Лестница","de":"Treppe","fr":"Escalier","it":"Scala","nl":"Trap","pl":"Klatka Schodowa","pt":"Escada","es":"Escalera","zh-cn":"楼梯"},"icon":"Stairway"},{"_id":"equipment_room","name":{"en":"Equipment Room","ru":"Техническая комната","de":"Technikraum","fr":"Salle D'Équipement","it":"Stanza Degli Attrezzi","nl":"Technische Ruimte","pl":"Wyposażenie Pokoi","pt":"Sala De Equipamentos","es":"Cuarto De Equipos","zh-cn":"机房"},"icon":"Equipment Room"},{"_id":"terrace","name":{"en":"Terrace","ru":"Терраса","de":"Terrasse","fr":"Terrasse","it":"Terrazza","nl":"Terras","pl":"Taras","pt":"Terraço","es":"Terraza","zh-cn":"阳台"},"icon":"Terrace"},{"_id":"toilet","name":{"en":"Toilet","ru":"Туалет","de":"Toilette","fr":"Toilette","it":"Gabinetto","nl":"Toilet","pl":"Toaleta","pt":"Banheiro","es":"Inodoro","zh-cn":"洗手间"},"icon":"Toilet"},{"_id":"stairwell","name":{"en":"Stairwell","ru":"Лестничная клетка","de":"Treppenhaus","fr":"Cage D'Escalier","it":"Tromba Delle Scale","nl":"Trappenhuis","pl":"Klatka Schodowa","pt":"Caixa De Escada","es":"Hueco De Escalera","zh-cn":"楼梯间"},"icon":"Stairwell"},{"_id":"locker_room","name":{"en":"Locker Room","ru":"Кладовка","de":"Umkleideraum","fr":"Vestiaire","it":"Spogliatoio","nl":"Kleedkamer","pl":"Szatnia","pt":"Vestiário","es":"Vestuario","zh-cn":"更衣室"},"icon":"Locker Room"},{"_id":"basement","name":{"en":"Basement","ru":"Подвал","de":"Untergeschoss","fr":"Sous-Sol","it":"Seminterrato","nl":"Kelder","pl":"Piwnica","pt":"Porão","es":"Sótano","zh-cn":"地下室"},"icon":"Basement"},{"_id":"front_yard","name":{"en":"Front Yard","ru":"Передний Двор","de":"Vorgarten","fr":"Front Yard","it":"Cortile","nl":"Voortuin","pl":"Podwórko","pt":"Jardim Da Frente","es":"Patio Delantero","zh-cn":"前院"},"icon":"Front Yard"},{"_id":"anteroom","name":{"en":"Anteroom","ru":"Передняя","de":"Vorraum","fr":"Antichambre","it":"Anticamera","nl":"Voorkamer","pl":"Przedpokój","pt":"Ante-Sala","es":"Antesala","zh-cn":"接待室"},"icon":"Anteroom"},{"_id":"washroom","name":{"en":"Washroom","ru":"Умывальная","de":"Waschraum","fr":"Toilettes","it":"Bagno","nl":"Waskamer","pl":"Umywalnia","pt":"Banheiro","es":"Baño","zh-cn":"卫生间"},"icon":"Washroom"},{"_id":"wc","name":{"en":"Wc","ru":"Туалет","de":"WC","fr":"Toilettes","it":"Bagno","nl":"Wc","pl":"Toaleta","pt":"Banheiro","es":"Wc","zh-cn":"厕所"},"icon":"Wc"},{"_id":"workshop","name":{"en":"Workshop","ru":"Мастерская","de":"Werkstatt","fr":"Atelier","it":"Laboratorio","nl":"Werkplaats","pl":"Warsztat","pt":"Oficina","es":"Taller","zh-cn":"作坊"},"icon":"Workshop"},{"_id":"vestibule","name":{"en":"Vestibule","ru":"Прихожая","de":"Windfang","fr":"Pare-Brise","it":"Parabrezza","nl":"Voorruit","pl":"Szyba Przednia","pt":"Pára-Brisas","es":"Parabrisas","zh-cn":"风档"},"icon":"Windscreen"},{"_id":"living_area","name":{"en":"Living Area","ru":"Зал","de":"Wohnbereich","fr":"Salon","it":"Zona Giorno","nl":"Living Area","pl":"Powierzchnia Mieszkalna","pt":"Sala-De-Estar","es":"Sala De Estar","zh-cn":"生活区域"},"icon":"Living Area"},{"_id":"living_room","name":{"en":"Living Room","ru":"Гостинная","de":"Wohnzimmer","fr":"Le Salon","it":"Soggiorno","nl":"Woonkamer","pl":"Salon","pt":"Sala De Estar","es":"Sala De Estar","zh-cn":"客厅"},"icon":"Living Room"}]`),F={icon:{width:32,height:32},customGroupButton:{},enumTemplateButton:{justifyContent:"end",margin:4,padding:"4px 8px"},enumTemplateLabel:{textAlign:"right",opacity:.4,overflow:"hidden",textOverflow:"ellipsis",flexGrow:1},fullHeight:{height:"calc(100% - 32px)",maxHeight:900},filter:{marginLeft:16,marginTop:0,marginBottom:0},content:{display:"grid",width:"100%",gridTemplateColumns:"repeat(4,1fr)"}};class Ct extends P.Component{constructor(t){super(t),this.state={icons:[],loading:!0,filter:""}}componentDidMount(){this.setState({loading:!0},()=>{const t=this.props.prefix.startsWith("enum.functions")?Te:we,i=[],r=t.map(async(o,a)=>{try{const u=await yt(Object.assign({"../../assets/devices/Alarm Systems.svg":()=>s(()=>import("./Alarm Systems-gR7dS0A2.js"),[],import.meta.url),"../../assets/devices/Amplifier.svg":()=>s(()=>import("./Amplifier-25Guwmsj.js"),[],import.meta.url),"../../assets/devices/Awnings.svg":()=>s(()=>import("./Awnings-Co-hmfUH.js"),[],import.meta.url),"../../assets/devices/Battery Status.svg":()=>s(()=>import("./Battery Status-B87Kvv-I.js"),[],import.meta.url),"../../assets/devices/Ceiling Spotlights.svg":()=>s(()=>import("./Ceiling Spotlights-DtqldpdR.js"),[],import.meta.url),"../../assets/devices/Chandelier.svg":()=>s(()=>import("./Chandelier-Cd8E2Wtu.js"),[],import.meta.url),"../../assets/devices/Climate.svg":()=>s(()=>import("./Climate-D413u9id.js"),[],import.meta.url),"../../assets/devices/Coffee Makers.svg":()=>s(()=>import("./Coffee Makers-KF4ZcNxS.js"),[],import.meta.url),"../../assets/devices/Cold Water.svg":()=>s(()=>import("./Cold Water-CkeFWerW.js"),[],import.meta.url),"../../assets/devices/Computer.svg":()=>s(()=>import("./Computer-BTE1qsMK.js"),[],import.meta.url),"../../assets/devices/Consumption.svg":()=>s(()=>import("./Consumption-kn0jqZNL.js"),[],import.meta.url),"../../assets/devices/Curtains.svg":()=>s(()=>import("./Curtains-CHoQr379.js"),[],import.meta.url),"../../assets/devices/Dishwashers.svg":()=>s(()=>import("./Dishwashers-B-Sw8Agt.js"),[],import.meta.url),"../../assets/devices/Doors.svg":()=>s(()=>import("./Doors-CGplwj0G.js"),[],import.meta.url),"../../assets/devices/Doorstep.svg":()=>s(()=>import("./Doorstep-CDxK6WGU.js"),[],import.meta.url),"../../assets/devices/Dryer.svg":()=>s(()=>import("./Dryer-Cq6roMKB.js"),[],import.meta.url),"../../assets/devices/Fan.svg":()=>s(()=>import("./Fan-JaXmdymA.js"),[],import.meta.url),"../../assets/devices/Floor Lamps.svg":()=>s(()=>import("./Floor Lamps-CRZ476zt.js"),[],import.meta.url),"../../assets/devices/Garage Doors.svg":()=>s(()=>import("./Garage Doors-CkWxHxVX.js"),[],import.meta.url),"../../assets/devices/Gates.svg":()=>s(()=>import("./Gates-C78n8Uvq.js"),[],import.meta.url),"../../assets/devices/Hairdryer.svg":()=>s(()=>import("./Hairdryer-CWFjS2Ij.js"),[],import.meta.url),"../../assets/devices/Handle.svg":()=>s(()=>import("./Handle-wHYWJ26z.js"),[],import.meta.url),"../../assets/devices/Hanging Lamps.svg":()=>s(()=>import("./Hanging Lamps-MotocLIk.js"),[],import.meta.url),"../../assets/devices/Heater.svg":()=>s(()=>import("./Heater-ceSMUh-t.js"),[],import.meta.url),"../../assets/devices/Hoods.svg":()=>s(()=>import("./Hoods-Bz4IVHgt.js"),[],import.meta.url),"../../assets/devices/Hot Water.svg":()=>s(()=>import("./Hot Water-HJAmxfSV.js"),[],import.meta.url),"../../assets/devices/Humidity.svg":()=>s(()=>import("./Humidity-CVLTW-gm.js"),[],import.meta.url),"../../assets/devices/Iron.svg":()=>s(()=>import("./Iron-BmVcdQDM.js"),[],import.meta.url),"../../assets/devices/Irrigation.svg":()=>s(()=>import("./Irrigation-BhJPKg6k.js"),[],import.meta.url),"../../assets/devices/Led Strip.svg":()=>s(()=>import("./Led Strip-BcmH_zbj.js"),[],import.meta.url),"../../assets/devices/Light.svg":()=>s(()=>import("./Light-ChIiCfYD.js"),[],import.meta.url),"../../assets/devices/Lightings.svg":()=>s(()=>import("./Lightings-C0WZ69yF.js"),[],import.meta.url),"../../assets/devices/Lock.svg":()=>s(()=>import("./Lock-BMJY64TO.js"),[],import.meta.url),"../../assets/devices/Louvre.svg":()=>s(()=>import("./Louvre-C5YcNLVm.js"),[],import.meta.url),"../../assets/devices/Mowing Machine.svg":()=>s(()=>import("./Mowing Machine-8EOTsqgg.js"),[],import.meta.url),"../../assets/devices/Music.svg":()=>s(()=>import("./Music-GTFyD3_A.js"),[],import.meta.url),"../../assets/devices/Outdoor Blinds.svg":()=>s(()=>import("./Outdoor Blinds-CXkkQc7j.js"),[],import.meta.url),"../../assets/devices/People.svg":()=>s(()=>import("./People-D60rnvXq.js"),[],import.meta.url),"../../assets/devices/Pool.svg":()=>s(()=>import("./Pool-DA49roJI.js"),[],import.meta.url),"../../assets/devices/Power Consumption.svg":()=>s(()=>import("./Power Consumption-CKf-DuPt.js"),[],import.meta.url),"../../assets/devices/Printer.svg":()=>s(()=>import("./Printer-BBdg5KQ0.js"),[],import.meta.url),"../../assets/devices/Pump.svg":()=>s(()=>import("./Pump-qElQ0u4I.js"),[],import.meta.url),"../../assets/devices/Receiver.svg":()=>s(()=>import("./Receiver-CM3as5YE.js"),[],import.meta.url),"../../assets/devices/Sconces.svg":()=>s(()=>import("./Sconces-C-gkKtaK.js"),[],import.meta.url),"../../assets/devices/Security.svg":()=>s(()=>import("./Security-BD-3hOtV.js"),[],import.meta.url),"../../assets/devices/Shading.svg":()=>s(()=>import("./Shading-BYTX3uGs.js"),[],import.meta.url),"../../assets/devices/Shutters.svg":()=>s(()=>import("./Shutters-C0RWQwOf.js"),[],import.meta.url),"../../assets/devices/SmokeDetector.svg":()=>s(()=>import("./SmokeDetector-BI7HtY1L.js"),[],import.meta.url),"../../assets/devices/Sockets.svg":()=>s(()=>import("./Sockets-DGwEYIEX.js"),[],import.meta.url),"../../assets/devices/Speaker.svg":()=>s(()=>import("./Speaker-DYDUjQxp.js"),[],import.meta.url),"../../assets/devices/Stove.svg":()=>s(()=>import("./Stove-C_JAiJBF.js"),[],import.meta.url),"../../assets/devices/Table Lamps.svg":()=>s(()=>import("./Table Lamps-G4idrhKm.js"),[],import.meta.url),"../../assets/devices/Temperature Sensors.svg":()=>s(()=>import("./Temperature Sensors-BzDeIhhc.js"),[],import.meta.url),"../../assets/devices/Tv.svg":()=>s(()=>import("./Tv-GicrNRwV.js"),[],import.meta.url),"../../assets/devices/Vacuum Cleaner.svg":()=>s(()=>import("./Vacuum Cleaner-BazNfd2m.js"),[],import.meta.url),"../../assets/devices/Ventilation.svg":()=>s(()=>import("./Ventilation-D7F0rbZK.js"),[],import.meta.url),"../../assets/devices/Washing Machines.svg":()=>s(()=>import("./Washing Machines-DyIMTxKc.js"),[],import.meta.url),"../../assets/devices/Water Consumption.svg":()=>s(()=>import("./Water Consumption-C0sLvwRF.js"),[],import.meta.url),"../../assets/devices/Water Heater.svg":()=>s(()=>import("./Water Heater-Byq4Q86V.js"),[],import.meta.url),"../../assets/devices/Water.svg":()=>s(()=>import("./Water-Dcu-ZixL.js"),[],import.meta.url),"../../assets/devices/Weather.svg":()=>s(()=>import("./Weather-pQkhBG6o.js"),[],import.meta.url),"../../assets/devices/Window.svg":()=>s(()=>import("./Window-B0emTnKi.js"),[],import.meta.url),"../../assets/groups/group1.svg":()=>s(()=>import("./group1-DBYxcyxq.js"),[],import.meta.url),"../../assets/groups/group10.svg":()=>s(()=>import("./group10-BIcZMfE3.js"),[],import.meta.url),"../../assets/groups/group2.svg":()=>s(()=>import("./group2-BUQSell7.js"),[],import.meta.url),"../../assets/groups/group3.svg":()=>s(()=>import("./group3-B0AdMrOp.js"),[],import.meta.url),"../../assets/groups/group4.svg":()=>s(()=>import("./group4-TeCgDok7.js"),[],import.meta.url),"../../assets/groups/group5.svg":()=>s(()=>import("./group5-CJ_-VPxg.js"),[],import.meta.url),"../../assets/groups/group6.svg":()=>s(()=>import("./group6-JW-nEhw_.js"),[],import.meta.url),"../../assets/groups/group7.svg":()=>s(()=>import("./group7-CWpVuR4T.js"),[],import.meta.url),"../../assets/groups/group8.svg":()=>s(()=>import("./group8-CRGBxCwd.js"),[],import.meta.url),"../../assets/groups/group9.svg":()=>s(()=>import("./group9-BXRQchYG.js"),[],import.meta.url),"../../assets/rooms/Anteroom.svg":()=>s(()=>import("./Anteroom-DPbAOJ_i.js"),[],import.meta.url),"../../assets/rooms/Attic.svg":()=>s(()=>import("./Attic-CGXtMIdp.js"),[],import.meta.url),"../../assets/rooms/Balcony.svg":()=>s(()=>import("./Balcony-DfK6N3aX.js"),[],import.meta.url),"../../assets/rooms/Barn.svg":()=>s(()=>import("./Barn-Lc8i72_q.js"),[],import.meta.url),"../../assets/rooms/Basement.svg":()=>s(()=>import("./Basement-DPN5xOB9.js"),[],import.meta.url),"../../assets/rooms/Bathroom.svg":()=>s(()=>import("./Bathroom-DzUiTIHs.js"),[],import.meta.url),"../../assets/rooms/Bedroom.svg":()=>s(()=>import("./Bedroom-xMBCTCFq.js"),[],import.meta.url),"../../assets/rooms/Boiler Room.svg":()=>s(()=>import("./Boiler Room-Bor2zD5L.js"),[],import.meta.url),"../../assets/rooms/Carport.svg":()=>s(()=>import("./Carport-C8HtrUXH.js"),[],import.meta.url),"../../assets/rooms/Cellar.svg":()=>s(()=>import("./Cellar-DRGc9D6m.js"),[],import.meta.url),"../../assets/rooms/Chamber.svg":()=>s(()=>import("./Chamber-D3f_uF0H.js"),[],import.meta.url),"../../assets/rooms/Corridor.svg":()=>s(()=>import("./Corridor-CasyPy4F.js"),[],import.meta.url),"../../assets/rooms/Dining Area.svg":()=>s(()=>import("./Dining Area-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dining Room.svg":()=>s(()=>import("./Dining Room-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dining.svg":()=>s(()=>import("./Dining-9890E2Je.js"),[],import.meta.url),"../../assets/rooms/Dressing Room.svg":()=>s(()=>import("./Dressing Room-Dr_mWZjM.js"),[],import.meta.url),"../../assets/rooms/Driveway.svg":()=>s(()=>import("./Driveway-BehcXrKD.js"),[],import.meta.url),"../../assets/rooms/Entrance.svg":()=>s(()=>import("./Entrance-BYqUyt1q.js"),[],import.meta.url),"../../assets/rooms/Equipment Room.svg":()=>s(()=>import("./Equipment Room-B5AsGJCs.js"),[],import.meta.url),"../../assets/rooms/Front Yard.svg":()=>s(()=>import("./Front Yard-CsV9sTio.js"),[],import.meta.url),"../../assets/rooms/Gallery.svg":()=>s(()=>import("./Gallery-Cz16BrQ3.js"),[],import.meta.url),"../../assets/rooms/Garage.svg":()=>s(()=>import("./Garage-BxcK0Mpu.js"),[],import.meta.url),"../../assets/rooms/Garden.svg":()=>s(()=>import("./Garden-C67u1ESp.js"),[],import.meta.url),"../../assets/rooms/Ground Floor.svg":()=>s(()=>import("./Ground Floor-0zPWVd6I.js"),[],import.meta.url),"../../assets/rooms/Guest Bathroom.svg":()=>s(()=>import("./Guest Bathroom-DSAlkwqV.js"),[],import.meta.url),"../../assets/rooms/Guest Room.svg":()=>s(()=>import("./Guest Room-DijMrEih.js"),[],import.meta.url),"../../assets/rooms/Gym.svg":()=>s(()=>import("./Gym-D5EhuzLI.js"),[],import.meta.url),"../../assets/rooms/Hall.svg":()=>s(()=>import("./Hall-BXwSgCh7.js"),[],import.meta.url),"../../assets/rooms/Home Theater.svg":()=>s(()=>import("./Home Theater-BcYqHMU1.js"),[],import.meta.url),"../../assets/rooms/Kitchen.svg":()=>s(()=>import("./Kitchen-CfzTeEPK.js"),[],import.meta.url),"../../assets/rooms/Laundry Room.svg":()=>s(()=>import("./Laundry Room-zhlszIKu.js"),[],import.meta.url),"../../assets/rooms/Living Area.svg":()=>s(()=>import("./Living Area-CqhYSGQI.js"),[],import.meta.url),"../../assets/rooms/Living Room.svg":()=>s(()=>import("./Living Room-C7AE21A_.js"),[],import.meta.url),"../../assets/rooms/Locker Room.svg":()=>s(()=>import("./Locker Room-CyyDtimo.js"),[],import.meta.url),"../../assets/rooms/Nursery.svg":()=>s(()=>import("./Nursery-Cxrv-xmv.js"),[],import.meta.url),"../../assets/rooms/Office.svg":()=>s(()=>import("./Office-CIXVNXkh.js"),[],import.meta.url),"../../assets/rooms/Outdoors.svg":()=>s(()=>import("./Outdoors-BL5-A5jB.js"),[],import.meta.url),"../../assets/rooms/Playroom.svg":()=>s(()=>import("./Playroom-Cq-XMXTL.js"),[],import.meta.url),"../../assets/rooms/Pool.svg":()=>s(()=>import("./Pool-DLG0SZJN.js"),[],import.meta.url),"../../assets/rooms/Rear Wall.svg":()=>s(()=>import("./Rear Wall-BNvjPc7z.js"),[],import.meta.url),"../../assets/rooms/Second Floor.svg":()=>s(()=>import("./Second Floor-V-mYDL2A.js"),[],import.meta.url),"../../assets/rooms/Shed.svg":()=>s(()=>import("./Shed-liUNwlvT.js"),[],import.meta.url),"../../assets/rooms/Sleeping Area.svg":()=>s(()=>import("./Sleeping Area-41NoHRj5.js"),[],import.meta.url),"../../assets/rooms/Stairway.svg":()=>s(()=>import("./Stairway-DlYPygtf.js"),[],import.meta.url),"../../assets/rooms/Stairwell.svg":()=>s(()=>import("./Stairwell-DbZPzEAa.js"),[],import.meta.url),"../../assets/rooms/Storeroom.svg":()=>s(()=>import("./Storeroom-DVXZ_Y0f.js"),[],import.meta.url),"../../assets/rooms/Summer House.svg":()=>s(()=>import("./Summer House-l_7dnk-K.js"),[],import.meta.url),"../../assets/rooms/Swimming Pool.svg":()=>s(()=>import("./Swimming Pool-CQBR5mIg.js"),[],import.meta.url),"../../assets/rooms/Terrace.svg":()=>s(()=>import("./Terrace-YmL9ugkA.js"),[],import.meta.url),"../../assets/rooms/Toilet.svg":()=>s(()=>import("./Toilet-BKoDvjLo.js"),[],import.meta.url),"../../assets/rooms/Upstairs.svg":()=>s(()=>import("./Upstairs-W8fYn1Q6.js"),[],import.meta.url),"../../assets/rooms/Wardrobe.svg":()=>s(()=>import("./Wardrobe-Bns8F0nU.js"),[],import.meta.url),"../../assets/rooms/Washroom.svg":()=>s(()=>import("./Washroom-BqiNyqrk.js"),[],import.meta.url),"../../assets/rooms/Wc.svg":()=>s(()=>import("./Wc-BKoDvjLo.js"),[],import.meta.url),"../../assets/rooms/Windscreen.svg":()=>s(()=>import("./Windscreen-x8wYPJWL.js"),[],import.meta.url),"../../assets/rooms/Workshop.svg":()=>s(()=>import("./Workshop-CKHcsro_.js"),[],import.meta.url),"../../assets/rooms/Workspace.svg":()=>s(()=>import("./Workspace-DS72Rvmo.js"),[],import.meta.url),"../../assets/users/user1.svg":()=>s(()=>import("./user1-BHHH0LIq.js"),[],import.meta.url),"../../assets/users/user10.svg":()=>s(()=>import("./user10-Dvmqf8l1.js"),[],import.meta.url),"../../assets/users/user11.svg":()=>s(()=>import("./user11-C8ly5pY7.js"),[],import.meta.url),"../../assets/users/user12.svg":()=>s(()=>import("./user12-CHtaF3qG.js"),[],import.meta.url),"../../assets/users/user2.svg":()=>s(()=>import("./user2-BN56rMPt.js"),[],import.meta.url),"../../assets/users/user3.svg":()=>s(()=>import("./user3-Mx6XZSLK.js"),[],import.meta.url),"../../assets/users/user4.svg":()=>s(()=>import("./user4-DpEs_YiD.js"),[],import.meta.url),"../../assets/users/user5.svg":()=>s(()=>import("./user5-CVfrnlXE.js"),[],import.meta.url),"../../assets/users/user6.svg":()=>s(()=>import("./user6-C7HkYnq4.js"),[],import.meta.url),"../../assets/users/user7.svg":()=>s(()=>import("./user7-VAQcubFn.js"),[],import.meta.url),"../../assets/users/user8.svg":()=>s(()=>import("./user8-CwACr_jq.js"),[],import.meta.url),"../../assets/users/user9.svg":()=>s(()=>import("./user9-Dk4Mlhcc.js"),[],import.meta.url)}),`../../assets/${this.props.prefix.startsWith("enum.functions")?"devices":"rooms"}/${o.icon}.svg`,5),d=await H.getSvg(u.default);return i[a]=d}catch{return null}});Promise.all(r).then(()=>this.setState({icons:i,loading:!1}))})}render(){const t=this.props.prefix.startsWith("enum.functions")?Te:we;return n.jsxs(p.Dialog,{maxWidth:"md",fullWidth:!0,sx:{"& .MuiPaper-root":F.fullHeight},open:!0,onClose:this.props.onClose,children:[n.jsxs(p.DialogTitle,{children:[this.props.t(this.props.prefix.startsWith("enum.functions")?"Create new function":"Create new room"),n.jsx(p.TextField,{variant:"standard",style:F.filter,value:this.state.filter,onChange:i=>this.setState({filter:i.target.value.toLowerCase()}),placeholder:this.props.t("Filter"),margin:"dense",slotProps:{input:{endAdornment:this.state.filter?n.jsx(p.IconButton,{tabIndex:-1,size:"small",onClick:()=>this.setState({filter:""}),children:n.jsx(C.Clear,{})}):null}}})]}),n.jsxs(p.DialogContent,{style:{textAlign:"center"},children:[this.state.loading&&n.jsx(p.LinearProgress,{}),n.jsx("div",{style:F.content,children:t.map((i,r)=>{const o=M.getText(i.name,this.props.lang)||i._id;return this.props.enums[`${this.props.prefix}.${i._id}`]?null:!this.state.filter||o.toLowerCase().includes(this.state.filter)?n.jsx(p.Button,{color:"grey",variant:"outlined",onClick:()=>{this.props.onClose(),this.props.createEnumTemplate(this.props.prefix,{_id:`${this.props.prefix}.${i._id}`,type:"enum",common:{name:i.name,icon:this.state.icons[r]},native:{}})},style:F.enumTemplateButton,startIcon:n.jsx(J,{src:this.state.icons[r],style:F.icon}),children:n.jsx("span",{style:F.enumTemplateLabel,children:M.getText(i.name,this.props.lang)||i._id})},r):null})})]}),n.jsxs(p.DialogActions,{children:[n.jsx(p.Button,{variant:"contained",color:"primary",style:F.customGroupButton,onClick:()=>{this.props.onClose(),this.props.showEnumEditDialog(this.props.getEnumTemplate(this.props.prefix),!0)},startIcon:n.jsx(C.Brush,{}),children:this.props.prefix==="enum.rooms"?this.props.t("Custom room"):this.props.prefix==="enum.functions"?this.props.t("Custom function"):this.props.t("Custom enumeration")}),n.jsx(p.Button,{color:"grey",variant:"contained",onClick:this.props.onClose,startIcon:n.jsx(C.Close,{}),children:this.props.t("Cancel")})]})]})}}function St(e){return n.jsxs(p.Dialog,{open:!0,onClose:e.onClose,children:[n.jsx(p.DialogTitle,{children:e.t("Please confirm")}),n.jsx(p.DialogContent,{children:n.jsx(p.DialogContentText,{children:e.t('Do you want to delete enum "%s"?',e.getName(e.enum.common.name))})}),n.jsxs(p.DialogActions,{children:[n.jsx(p.Button,{variant:"contained",autoFocus:!0,color:"primary",onClick:()=>e.deleteEnum(e.enum._id),startIcon:n.jsx(C.Delete,{}),children:e.t("Delete")}),n.jsx(p.Button,{variant:"contained",color:"grey",onClick:e.onClose,startIcon:n.jsx(C.Close,{}),children:e.t("Cancel")})]})]})}const bt=e=>{const[t,i]=P.useState({DragWrapper:null}),r=j.useRef(null);return P.useEffect(()=>{i({DragWrapper:a=>{var m,l,_,D;const u={type:"object",end:(w,B)=>{const $=B.getDropResult();w.data&&$&&(w.data.obj?e.addItemToEnum(w.data.obj._id,$.enumId):window.alert(`TODO: Add all direct children of ${w.data.id}`))},item:{data:a.item.data,preview:a.item.data&&a.item.data.obj?n.jsxs(p.Card,{variant:"outlined",style:e.stylesParent.enumGroupMember,children:[(m=a.item.data.obj.common)!=null&&m.icon?n.jsx(J,{style:e.stylesParent.icon,src:r.current?Ke(r.current,a.item.data.obj._id,e.lang):a.item.data.obj.common.icon}):Je[a.item.data.obj.type]||n.jsx(C.List,{style:e.stylesParent.icon}),n.jsxs("div",{children:[n.jsx("div",{children:(l=a.item.data.obj.common)!=null&&l.name?e.getName((_=a.item.data.obj.common)==null?void 0:_.name):a.item.data.obj._id}),(D=a.item.data.obj.common)!=null&&D.name?n.jsx("div",{style:{fontStyle:"italic",fontSize:"smaller",opacity:.7},children:a.item.data.obj._id}):null]})]},a.item.data.obj._id):null},collect:w=>({isDragging:w.isDragging()})},[{isDragging:d},h,g]=ze(u);return P.useEffect(()=>{g(Ie(),{captureDraggingState:!0})},[g]),n.jsx(p.Box,{sx:a.style,ref:h,style:{backgroundColor:d?"rgba(100,152,255,0.1)":void 0},children:a.children},a.item.data.id)}})},[e.stylesParent,e.addItemToEnum,e.getName]),t?n.jsx(Me,{t:e.t,socket:e.socket,types:["state","channel","device"],columns:["name","type","role","room","func"],lang:e.lang,dragEnabled:!0,theme:e.theme,DragWrapper:t.DragWrapper,setObjectsReference:o=>r.current=o,levelPadding:10}):null},x={mainGridCont:{height:"100%",overflowY:"auto"},childGridCont:{display:"flex",flexDirection:"column",height:"100%"},enumGroupMember:{display:"flex",gap:8,alignItems:"center",padding:"8px 16px"},childGridContWide:{height:"100%"},blocksContainer:{overflowY:"auto",overflowX:"hidden"},canDrop:e=>({backgroundColor:e.palette.background.default}),icon:{height:32,width:32,marginRight:5,backgroundSize:"cover",backgroundPosition:"center",display:"inline-block"},categoryTitle:{flexDirection:"row",alignItems:"center",display:"inline-flex"},enumTemplateDialog:{overflowY:"auto",textAlign:"center"},enumTemplate:{display:"inline-flex",padding:10,width:200},toolbarButton:{},filter:{width:"100%",paddingRight:20},topPanel:{display:"flex",flexDirection:"row",alignItems:"center",paddingLeft:20},topPanel2:{display:"flex",flexDirection:"row",alignItems:"center",padding:"4px 20px",justifyContent:"space-between"},searchText:{color:"orange"}},Tt=()=>{const e=et(),t=e.display,{item:i,style:r}=e;return t?n.jsx("div",{style:{...r,zIndex:1e3},children:i.preview}):null},wt={favorites:{_id:"enum.favorites",type:"enum",common:{name:{en:"Favorites",de:"Favoriten",ru:"Избранное",pt:"Favoritos",nl:"Favorieten",fr:"Favoris",it:"Preferiti",es:"Favoritos",pl:"Ulubione",uk:"Обране","zh-cn":"收藏夹"}},native:{}}};function xe(e,t){return(i,r)=>{var c,u,d,h;let o=t(((u=(c=e[i])==null?void 0:c.common)==null?void 0:u.name)||"")||i.split(".").pop(),a=t(((h=(d=e[r])==null?void 0:d.common)==null?void 0:h.name)||"")||r.split(".").pop();return o=o.toLowerCase(),a=a.toLowerCase(),o>a?1:o<a?-1:0}}const xt={_id:"",type:"enum",common:{name:"",color:"",desc:"",members:[]},native:{}};class le extends P.Component{cachedIcons;fastUpdate;refFilter;refClearButton;updateTimeout=null;changeEnums;scrollToItem;searchTimer=null;constructor(t){super(t);const i=window._localStorage||window.localStorage;let r={};try{r=i.getItem("enumsClosed")?JSON.parse(i.getItem("enumsClosed")):{}}catch{}let o=[];try{o=i.getItem("enumsCollapsed")?JSON.parse(i.getItem("enumsCollapsed")):[]}catch{}const a=i.getItem("enumsSplitSizes");let c=[50,50];if(a){try{c=JSON.parse(a)}catch{}(!Array.isArray(c)||c.length!==2)&&(c=[50,50])}this.state={enums:null,enumsTree:null,currentCategory:i.getItem("enumCurrentCategory")||"",search:"",enumEditDialog:null,enumTemplateDialog:null,enumDeleteDialog:null,members:{},categoryPopoverOpen:!1,enumsClosed:r,updating:[],enumsCollapsed:o,innerWidth:0,splitSizes:c},this.cachedIcons={},this.fastUpdate=!1,this.refFilter=j.createRef(),this.refClearButton=j.createRef()}getEnumTemplate=t=>{const i=JSON.parse(JSON.stringify(xt)),{_id:r,name:o}=le.findNewUniqueName(t,Object.values(this.state.enums),this.props.t("Enum"));return i._id=r,i.common.name=o,i};scrollToEnum(t){let i=t.split(".");i.pop();let r=!1;const o=JSON.parse(JSON.stringify(this.state.enumsClosed));for(;i.length>2;){const a=i.join(".");o[a]&&(delete o[a],r=!0),i=a.split("."),i.pop()}r?this.setState({enumsClosed:o},()=>{setTimeout(()=>{const a=document.getElementById(t);a==null||a.scrollIntoView(!0)},400)}):setTimeout(()=>{const a=document.getElementById(t);a==null||a.scrollIntoView(!0)},400)}addUpdating(t){if(!this.state.updating.includes(t)){const i=[...this.state.updating];return i.push(t),new Promise(r=>{this.setState({updating:i},()=>r())})}return Promise.resolve()}createEnumTemplate=(t,i)=>{const r=this.getEnumTemplate(t);r._id=i._id,r.common={...r.common,...i.common},this.scrollToItem=r._id,this.addUpdating(r._id).then(()=>this.props.socket.setObject(r._id,r)).catch(o=>window.alert(`Cannot create enum: ${o}`))};async componentDidMount(){await this.updateData(),await this.props.socket.subscribeObject("enum.*",this.onObjectChange)}componentWillUnmount(){this.props.socket.unsubscribeObject("enum.*",this.onObjectChange),this.updateTimeout&&(clearTimeout(this.updateTimeout),this.updateTimeout=null)}onObjectChange=(t,i)=>{let r;if(this.state.enums&&t.startsWith("enum."))if(i){const o=this.changeEnums&&this.changeEnums[t]||this.state.enums&&this.state.enums[t];(!o||o&&JSON.stringify(o)!==JSON.stringify(i))&&(this.changeEnums=this.changeEnums||JSON.parse(JSON.stringify(this.state.enums)),this.changeEnums[t]=i,r=!0)}else(this.changeEnums&&this.changeEnums[t]||!this.changeEnums&&this.state.enums&&this.state.enums[t])&&(this.changeEnums=this.changeEnums||JSON.parse(JSON.stringify(this.state.enums)),delete this.changeEnums[t],r=!0);r&&(this.updateTimeout&&clearTimeout(this.updateTimeout),this.updateTimeout=setTimeout(()=>{this.updateTimeout=null;const o=this.changeEnums;this.changeEnums=null,this.updateData(o).then(()=>{this.scrollToItem&&(this.scrollToEnum(this.scrollToItem),this.scrollToItem=null)}).catch(()=>{})},this.fastUpdate?0:200),this.fastUpdate=!1)};updateData=async t=>{var o;t=t||await this.props.socket.getForeignObjects("enum.*","enum");const i={},r=Object.keys(t);for(let a=0;a<r.length;a++){const c=r[a];if((o=t[c].common)!=null&&o.members)for(let u=0;u<t[c].common.members.length;u++){const d=t[c].common.members[u];if(!i[d])try{i[d]=await this.props.socket.getObject(d)}catch{window.alert(`Cannot read member "${d}"`)}}}this.setState({enums:t,members:i,updating:[]},()=>this.buildTree(t))};buildTree(t){const i={data:null,children:{},id:""},r=Object.keys(t).sort(xe(t,this.getName));for(let o=0;o<r.length;o++){const a=r[o],c=t[a],u=a.split(".");let d=i;const h=[];for(let g=0;g<u.length;g++){const m=u[g];h.push(m),d.children[m]||(d.children[m]={data:null,children:{},id:h.join(".")}),d=d.children[m]}d.data=c}this.setCurrentCategory(this.state.currentCategory&&i.children.enum.children[this.state.currentCategory]?this.state.currentCategory:Object.keys(i.children.enum.children)[0],()=>this.setState({enumsTree:i}))}setCurrentCategory=(t,i)=>{t!==this.state.currentCategory?(this.setState({currentCategory:t},()=>{i&&i()}),(window._localStorage||window.localStorage).setItem("enumCurrentCategory",t)):i&&i()};addItemToEnum=(t,i)=>{var a;const r=JSON.parse(JSON.stringify(this.state.enums[i]));(a=r.common)!=null&&a.members||(r.common=r.common||{},r.common.members=[]);const o=r.common.members;o.includes(t)||(o.push(t),this.fastUpdate=!0,this.props.socket.setObject(r._id,r).catch(c=>window.alert(`Cannot set enum: ${c}`)))};removeMemberFromEnum=(t,i)=>{const r=JSON.parse(JSON.stringify(this.state.enums[i])),o=r.common.members,a=o.indexOf(t);a!==-1&&(o.splice(a,1),this.fastUpdate=!0,this.props.socket.setObject(r._id,r).catch(c=>window.alert(`Cannot update enum: ${c}`)))};moveEnum=async(t,i)=>{if(i.startsWith(t))return;const r=t.split(".");r.pop();const o=r.join("."),a=i;if(o===a)return;const c=Object.keys(this.state.enums),u=[...this.state.updating];try{for(let d=0;d<c.length;d++){const h=this.state.enums[c[d]];if(c[d].startsWith(t)){const g=c[d].replace(o,a),m=JSON.parse(JSON.stringify(h));m._id=g,u.includes(c[d])||u.push(c[d]),await this.props.socket.setObject(g,h),await this.props.socket.delObject(c[d])}}}catch(d){window.alert(`Cannot move enum: ${d}`)}this.setState({updating:u})};renderTree(t,i,r){var h,g;let o=null;if(!this.state.enumsClosed[t.id]){o=Object.keys(t.children);const m={};for(let l=0;l<o.length;l++){const _=o[l];m[_]=t.children[_].data}o.sort(xe(m,this.getName))}const a=this.getName((g=(h=t.data)==null?void 0:h.common)==null?void 0:g.name),c=t.id;let u,d;if(this.state.search){const m=this.state.search,l=a.toLowerCase().indexOf(m),_=c.toLowerCase().indexOf(m);if(l===-1&&_===-1)return null;l!==-1&&(u=a?[n.jsx("span",{children:a.substring(0,l)},"0"),n.jsx("span",{style:x.searchText,children:a.substring(l,l+this.state.search.length)},"1"),n.jsx("span",{children:a.substring(l+this.state.search.length)},"2")]:null),_!==-1&&(d=a?[n.jsx("span",{children:c.substring(0,_)},"0"),n.jsx("span",{style:x.searchText,children:c.substring(_,_+this.state.search.length)},"1"),n.jsx("span",{children:c.substring(_+this.state.search.length)},"2")]:null)}return n.jsxs("div",{style:{paddingLeft:r?32:0},children:[n.jsx(vt,{cachedIcons:this.cachedIcons,stylesParent:x,closed:this.state.enumsClosed[t.id],collapsed:this.state.enumsCollapsed.includes(t.id),copyEnum:this.copyEnum,currentCategory:this.state.currentCategory,enum:t.data,getEnumTemplate:this.getEnumTemplate,getName:this.getName,id:t.id,idText:d,members:this.state.members,moveEnum:this.moveEnum,name:u,onCollapse:()=>{const m=[...this.state.enumsCollapsed],l=m.indexOf(t.id);l===-1?m.push(t.id):m.splice(l,1),this.setState({enumsCollapsed:m}),(window._localStorage||window.localStorage).setItem("enumsCollapsed",JSON.stringify(m))},removeMemberFromEnum:this.removeMemberFromEnum,showEnumDeleteDialog:this.showEnumDeleteDialog,showEnumEditDialog:this.showEnumEditDialog,showEnumTemplateDialog:this.showEnumTemplateDialog,socket:this.props.socket,t:this.props.t,themeType:this.props.themeType,theme:this.props.theme,toggleEnum:this.toggleEnum,updating:this.state.updating.includes(t.id),childrenCount:t.children?Object.keys(t.children).length:0}),o?o.map((m,l)=>n.jsx(j.Fragment,{children:this.renderTree(t.children[m],l,r+1)},l)):null]},t.id||i)}showEnumEditDialog=(t,i)=>{const r={changed:!1};r.newItem=JSON.parse(JSON.stringify(t)),r.originalItem=JSON.parse(JSON.stringify(t)),r.isNew=i,this.setState({enumEditDialog:r})};showEnumTemplateDialog=t=>this.setState({enumTemplateDialog:t});showEnumDeleteDialog=t=>this.setState({enumDeleteDialog:t});saveEnum=async()=>{const t=this.state.enumEditDialog.newItem,i=this.state.enumEditDialog.originalItem._id;this.state.enumEditDialog.isNew&&(this.scrollToItem=t._id);const r=[...this.state.updating];if(r.includes(i)||r.push(i),await this.props.socket.setObject(t._id,t),i!==t._id)try{await this.props.socket.delObject(i);const o=Object.keys(this.state.enums);for(let a=0;a<o.length;a++){const c=o[a];if(c.startsWith(`${i}.`)){const u=JSON.parse(JSON.stringify(this.state.enums[c]));u._id=u._id.replace(`${i}.`,`${t._id}.`),r.includes(c)||r.push(c),await this.props.socket.setObject(u._id,u),await this.props.socket.delObject(c)}}}catch(o){window.alert(`Cannot save enum: ${o}`)}this.setState({enumEditDialog:null,updating:r})};deleteEnum=async t=>{const i=[...this.state.updating];try{i.includes(t)||i.push(t),this.state.enums[t]&&await this.props.socket.delObject(t);const r=Object.keys(this.state.enums);for(let o=0;o<r.length;o++){const a=r[o];a.startsWith(`${t}.`)&&(i.includes(a)||i.push(a),this.state.enums[t]&&await this.props.socket.delObject(a))}}catch(r){window.alert(`Cannot delete enum: ${r}`)}this.setState({enumDeleteDialog:null,updating:i})};copyEnum=t=>{const i=JSON.parse(JSON.stringify(this.state.enums[t]));let r,o=1;do r=t+o.toString(),o++;while(this.state.enums[r]);i._id=r,this.props.socket.setObject(r,i).catch(a=>window.alert(`Cannot delete enum: ${a}`))};toggleEnum=t=>{const i=JSON.parse(JSON.stringify(this.state.enumsClosed));i[t]=!i[t],this.setState({enumsClosed:i}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(i))};changeEnumFormData=t=>{const i=JSON.parse(JSON.stringify(this.state.enumEditDialog));i.newItem=JSON.parse(JSON.stringify(t)),i.changed=JSON.stringify(i.newItem)!==JSON.stringify(this.state.enums[i.originalItem]||{}),this.setState({enumEditDialog:i})};getName=t=>M.getText(t,this.props.lang);static _isUniqueName(t,i,r,o){return!i.find(a=>a._id===`${t}.${r.toLowerCase()}_${o}`)}static findNewUniqueName(t,i,r){let o=1;for(;!le._isUniqueName(t,i,r,o);)o++;return{_id:`${t}.${r.toLowerCase()}_${o}`,name:`${r} ${o}`}}onFilterChanged(t,i){this.refClearButton.current&&(t?this.refClearButton.current.style.display="block":this.refClearButton.current.style.display="none"),i&&this.refFilter.current&&(this.refFilter.current.value=""),this.searchTimer&&clearTimeout(this.searchTimer),this.searchTimer=setTimeout(r=>{this.searchTimer=null,this.setState({search:r.toLowerCase()})},i?0:300,t)}renderEditDialog(){return this.state.enumEditDialog?n.jsx(Dt,{onClose:()=>this.setState({enumEditDialog:null}),enums:Object.values(this.state.enums),enum:this.state.enumEditDialog.newItem,getName:this.getName,isNew:this.state.enumEditDialog.isNew,t:this.props.t,lang:this.props.lang,changed:this.state.enumEditDialog.changed,onChange:this.changeEnumFormData,saveData:this.saveEnum,innerWidth:this.state.innerWidth}):null}renderDeleteDialog(){return this.state.enumDeleteDialog?n.jsx(St,{onClose:()=>this.setState({enumDeleteDialog:null}),enum:this.state.enumDeleteDialog,getName:this.getName,t:this.props.t,deleteEnum:this.deleteEnum}):null}renderTemplateDialog(){return this.state.enumTemplateDialog?n.jsx(Ct,{prefix:this.state.enumTemplateDialog,onClose:()=>this.setState({enumTemplateDialog:null}),t:this.props.t,lang:this.props.lang,createEnumTemplate:this.createEnumTemplate,showEnumEditDialog:this.showEnumEditDialog,enums:this.state.enums,getEnumTemplate:this.getEnumTemplate}):null}render(){if(!this.state.enumsTree)return n.jsx(p.LinearProgress,{});const t=Object.values(this.state.enumsTree.children.enum.children[this.state.currentCategory].children),i=!!t.find(r=>r.children&&Object.keys(r.children).length);return n.jsxs(n.Fragment,{children:[n.jsxs(Ue,{backend:M.isTouchDevice()?qe:Ze,children:[n.jsx(Tt,{}),n.jsxs(ht,{direction:T.Horizontal,initialSizes:this.state.splitSizes,minWidths:[450,450],onResizeFinished:(r,o)=>{this.setState({splitSizes:o}),(window._localStorage||window.localStorage).setItem("enumsSplitSizes",JSON.stringify(o))},gutterClassName:this.props.themeType==="dark"?"Dark visGutter":"Light visGutter",children:[n.jsxs("div",{style:{...x.childGridCont,...this.state.innerWidth>600?x.childGridContWide:void 0},children:[n.jsxs("div",{style:x.topPanel,children:[n.jsx(p.Tooltip,{title:this.props.t("Add enum"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{id:"categoryPopoverButton",size:"small",style:x.toolbarButton,onClick:()=>this.state.enumsTree.children.enum.children.favorites?this.showEnumEditDialog(this.getEnumTemplate("enum"),!0):this.setState({categoryPopoverOpen:!0}),children:n.jsx(C.Add,{})})}),n.jsx(p.Popover,{open:this.state.categoryPopoverOpen,onClose:()=>this.setState({categoryPopoverOpen:!1}),anchorEl:()=>document.getElementById("categoryPopoverButton"),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:n.jsxs(p.MenuList,{children:[this.state.enumsTree.children.enum.children.favorites?null:n.jsx(p.MenuItem,{onClick:()=>this.createEnumTemplate("enum",wt.favorites),children:this.props.t("Favorites")}),n.jsx(p.MenuItem,{onClick:()=>this.showEnumEditDialog(this.getEnumTemplate("enum"),!0),children:this.props.t("Custom enum")})]})}),n.jsx(p.Tabs,{value:this.state.currentCategory,variant:"scrollable",scrollButtons:"auto",onChange:(r,o)=>this.setCurrentCategory(o),children:Object.keys(this.state.enumsTree.children.enum.children).map((r,o)=>{var c;let a=this.state.enumsTree.children.enum.children[r].data;return a=a||{_id:this.state.enumsTree.children.enum.children[r].id,common:{name:this.state.enumsTree.children.enum.children[r].id.split(".").pop()},type:"enum",native:{}},n.jsx(p.Tab,{component:"span",style:{backgroundColor:((c=a.common)==null?void 0:c.color)||void 0,borderRadius:4},label:n.jsx(Et,{themeType:this.props.themeType,categoryData:a,showEnumEditDialog:this.showEnumEditDialog,showEnumDeleteDialog:this.showEnumDeleteDialog,styles:x,...this.props}),value:r},o)})})]}),n.jsxs("div",{style:x.topPanel2,children:[n.jsx(p.TextField,{variant:"standard",inputRef:this.refFilter,placeholder:this.props.t("Filter"),style:x.filter,slotProps:{inputLabel:{shrink:!0},input:{endAdornment:n.jsx(p.IconButton,{tabIndex:-1,ref:this.refClearButton,style:{display:"none"},size:"small",onClick:()=>this.onFilterChanged("",!0),children:n.jsx(C.Clear,{})})}},onChange:r=>this.onFilterChanged(r.target.value)}),n.jsx(p.Tooltip,{title:this.props.t("Narrow all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r=Object.keys(this.state.enums);this.setState({enumsCollapsed:r}),(window._localStorage||window.localStorage).setItem("enumsCollapsed",JSON.stringify(r))},children:n.jsx(C.KeyboardArrowUp,{})})}),n.jsx(p.Tooltip,{title:this.props.t("Wide all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{this.setState({enumsCollapsed:[]}),(window._localStorage||window.localStorage).setItem("enumsCollapsed","[]")},children:n.jsx(C.KeyboardArrowDown,{})})}),i&&n.jsx(p.Tooltip,{title:this.props.t("Collapse all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r={};Object.keys(this.state.enums).forEach(o=>r[o]=!0),this.setState({enumsClosed:r}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(r))},children:n.jsx(Oe,{})})}),i&&n.jsx(p.Tooltip,{title:this.props.t("Expand all"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",style:x.toolbarButton,onClick:()=>{const r={};this.setState({enumsClosed:r}),(window._localStorage||window.localStorage).setItem("enumsClosed",JSON.stringify(r))},children:n.jsx(je,{})})}),n.jsx(p.Tooltip,{title:this.props.t("Add group"),placement:"top",slotProps:{popper:{sx:{pointerEvents:"none"}}},children:n.jsx(p.IconButton,{size:"large",onClick:()=>{["functions","rooms"].includes(this.state.currentCategory)?this.setState({enumTemplateDialog:`enum.${this.state.currentCategory}`}):this.showEnumEditDialog(this.getEnumTemplate(`enum.${this.state.currentCategory}`),!0)},children:n.jsx(C.Add,{})})})]}),n.jsx("div",{style:x.blocksContainer,children:t.map((r,o)=>this.renderTree(r,o,0))})]}),n.jsx("div",{style:{...x.childGridCont,...this.state.innerWidth>600?x.childGridContWide:void 0},children:n.jsx("div",{style:x.blocksContainer,children:n.jsx(bt,{addItemToEnum:this.addItemToEnum,getName:this.getName,stylesParent:x,t:this.props.t,socket:this.props.socket,lang:this.props.lang,theme:this.props.theme})})})]})]}),this.renderEditDialog(),this.renderDeleteDialog(),this.renderTemplateDialog()]})}}function Jt(e){return n.jsx(Ye,{children:n.jsx(Xe,{style:{display:"flex",flexDirection:"column",overflow:"auto"},children:n.jsx(le,{socket:e.socket,t:e.t,lang:e.lang,themeType:e.themeType,theme:e.theme})})})}export{Jt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as u}from"./iobroker_admin__loadShare__react__loadShare__-DtlEM_52.js";import{j as a}from"./DefaultPropsProvider-BrbE0teb.js";import{a7 as c,i as r,a as m,a8 as _}from"./bootstrap-
|
|
1
|
+
import{i as u}from"./iobroker_admin__loadShare__react__loadShare__-DtlEM_52.js";import{j as a}from"./DefaultPropsProvider-BrbE0teb.js";import{a7 as c,i as r,a as m,a8 as _}from"./bootstrap-FCtLxt0T.js";u.createContext(void 0);var o=(e,t)=>({x:e.x-t.x,y:e.y-t.y}),f=(e,t)=>({x:e.x+t.x,y:e.y+t.y}),x=e=>{let t=e.getInitialClientOffset(),n=e.getInitialSourceClientOffset();return t===null||n===null?{x:0,y:0}:o(t,n)},y=(e,t)=>{switch(e){case"left":case"top-start":case"bottom-start":return 0;case"right":case"top-end":case"bottom-end":return t.width;default:return t.width/2}},g=(e,t)=>{switch(e){case"top":case"top-start":case"top-end":return 0;case"bottom":case"bottom-start":case"bottom-end":return t.height;default:return t.height/2}},h=(e,t,n="center",l={x:0,y:0})=>{let i=e.getClientOffset();if(i===null)return null;if(!t.current||!t.current.getBoundingClientRect)return o(i,x(e));let s=t.current.getBoundingClientRect(),d={x:y(n,s),y:g(n,s)};return f(o(i,d),l)},C=e=>{let t=`translate(${e.x.toFixed(1)}px, ${e.y.toFixed(1)}px)`;return{pointerEvents:"none",position:"fixed",top:0,left:0,transform:t,WebkitTransform:t}},j=e=>{let t=u.useRef(null),n=c(l=>({currentOffset:h(l,t,e==null?void 0:e.placement,e==null?void 0:e.padding),isDragging:l.isDragging(),itemType:l.getItemType(),item:l.getItem(),monitor:l}));return!n.isDragging||n.currentOffset===null?{display:!1}:{display:!0,itemType:n.itemType,item:n.item,style:C(n.currentOffset),monitor:n.monitor,ref:t}};function k(e){const t=e.icon;return a.jsxs("div",{style:e.styles.formContainer,children:[t?a.jsx(t,{style:e.styles.formIcon}):null,a.jsx(r.FormControl,{style:e.styles.formControl,variant:"standard",children:a.jsx(r.TextField,{variant:"standard",label:e.t(e.label),autoComplete:e.autoComplete,error:!!e.error,helperText:e.error||"",value:e.value,onChange:n=>e.onChange(n.target.value),disabled:e.disabled,type:e.type,slotProps:{inputLabel:{shrink:!0},input:{readOnly:!1,endAdornment:e.value?a.jsx(r.InputAdornment,{position:"end",children:a.jsx(r.IconButton,{tabIndex:-1,size:"small",onClick:()=>e.onChange(""),children:a.jsx(m.Close,{})})}):null}}})})]})}function O(e){const t=e.icon;return a.jsxs("div",{style:{width:"100%"},children:[t?a.jsx(t,{style:e.previewStyle||e.styles.formIcon}):null,a.jsx(_,{style:{...e.style||void 0,width:t?"calc(100% - 45px)":"100%",display:"inline-block",verticalAlign:"top"},label:e.t(e.label),onChange:e.onChange,value:e.value||""})]})}export{k as I,O as a,j as b};
|