UNPKG

zigbee2mqtt-windfront

Version:

[![Version](https://img.shields.io/npm/v/zigbee2mqtt-windfront.svg)](https://npmjs.org/package/zigbee2mqtt-windfront) [![CI](https://github.com/Nerivec/zigbee2mqtt-windfront/actions/workflows/ci.yml/badge.svg)](https://github.com/Nerivec/zigbee2mqtt-windf

2 lines (1 loc) 4.68 kB
import{r as d,aw as _,b as y,c as j,j as a,C as w,a as g,k as C,T as S,F as D,G as N}from"./index-Cg_dwqpD.js";import{R as k,A as E}from"./RecallRemove-BrzsS3Vg.js";import{D as F}from"./DevicePicker-BKPECTmF.js";import{E as A}from"./EndpointPicker-Dnt0o2EO.js";import{u as M,b as G}from"./useColumnCount-B-PyuU0g.js";import{D as R}from"./DashboardFeatureWrapper-DAZ17bMu.js";import{D as T}from"./DeviceCard-BQTqTIzx.js";import"./envs-CSqIi4cL.js";import"./Feature-CgMuzQp3.js";import"./DisplayValue-DcXMP9Gf.js";import"./isObject--vsEa_js.js";import"./_createCompounder-Dcznv9Az.js";import"./isArray-uIIfUpwr.js";import"./index-BwjSpuUu.js";import"./InputField-D9KJc30P.js";import"./SelectField-dfeWrxvV.js";import"./LastSeen-F90Gw0JI.js";import"./format-BHlbVbae.js";import"./Lqi-OUPQk-S2.js";import"./PowerSource-BDEov_ab.js";import"./snakeCase-CrKq36vi.js";import"./DeviceImage-CHwoOcls.js";import"./index-BbB5QEu8.js";const q=d.memo(({sourceIdx:s,devices:i,group:t})=>{const[n,m]=d.useState(""),[o,u]=d.useState(""),v=d.useMemo(()=>_(i.find(e=>e.ieee_address===o)),[o,i]),{t:l}=y(["groups","zigbee"]),b=d.useCallback(e=>{u(e.ieee_address);const c=_(e);m(c.values().next().value)},[]),f=d.useCallback(async()=>await j(s,"bridge/request/group/members/add",{group:t.id.toString(),endpoint:n,device:o}),[s,t.id,n,o]);return a.jsxs(a.Fragment,{children:[a.jsx("h2",{className:"text-lg font-semibold",children:l(e=>e.add_to_group_header)}),a.jsxs("div",{className:"mb-3",children:[a.jsx(F,{label:l(e=>e.device,{ns:"zigbee"}),value:o,devices:i,onChange:b}),a.jsx(A,{label:l(e=>e.endpoint,{ns:"zigbee"}),values:v,value:n,onChange:e=>m(e),disabled:!o})]}),a.jsx(w,{onClick:f,className:"btn btn-primary",disabled:n==null||n===""||!o,children:l(e=>e.add_to_group)})]})}),z=({sourceIdx:s,device:i,deviceState:t,deviceAvailability:n,groupMember:m,lastSeenConfig:o,removeDeviceFromGroup:u,setDeviceState:v})=>{const{endpoint:l}=m,{t:b}=y(["groups","common"]),f=g(C(r=>r.deviceScenesFeatures[s][i.ieee_address]??[])),e=d.useCallback(async r=>await v(i.ieee_address,r),[i.ieee_address,v]),c=d.useCallback(async()=>await u(i.ieee_address,l),[i.ieee_address,l,u]);return a.jsx("div",{className:`mb-3 card card-border bg-base-200 rounded-box shadow-md ${n==="offline"?"border-error/50":"border-base-300"}`,children:a.jsx(T,{sourceIdx:s,hideSourceDot:!0,features:f,device:i,endpoint:l,deviceState:t,onChange:e,featureWrapperClass:R,lastSeenConfig:o,children:a.jsx(S,{onClick:c,className:"btn btn-square btn-outline btn-error btn-sm",title:b(r=>r.remove_from_group),modalDescription:b(r=>r.dialog_confirmation_prompt,{ns:"common"}),modalCancelLabel:b(r=>r.cancel,{ns:"common"}),children:a.jsx(D,{icon:N})})})})},W=s=>s?.data?a.jsx(z,{...s.data}):null,$=d.memo(({sourceIdx:s,devices:i,group:t})=>{const n=g(e=>e.availability),m=g(e=>e.bridgeInfo),o=g(C(e=>e.deviceStates[s])),u=g(C(e=>e.bridgeInfo[s].config.advanced.last_seen)),v=M(),l=d.useCallback(async(e,c)=>await j(s,"bridge/request/group/members/remove",{device:e,endpoint:c,group:t.id.toString()}),[s,t.id]),b=d.useCallback(async(e,c)=>{await j(s,`${e}/set`,c)},[s]),f=d.useMemo(()=>{const e=[],c=m[s].config.availability.enabled;for(const r of t.members){const p=i.find(h=>h.ieee_address===r.ieee_address);if(p){let h="disabled";if(!p.disabled){const x=m[s].config.devices[p.ieee_address]?.availability;h=(x!=null?!!x:void 0)??c?n[s][p.friendly_name]?.state??"offline":"disabled"}e.push({sourceIdx:s,groupMember:r,device:p,deviceState:o[p.friendly_name]??{},deviceAvailability:h,lastSeenConfig:u,removeDeviceFromGroup:l,setDeviceState:b})}}return e.sort((r,p)=>r.device.ieee_address.localeCompare(p.device.ieee_address)),e},[s,t,i,u,o,m,n,l,b]);return a.jsx("div",{children:a.jsx(G,{useWindowScroll:!0,columnCount:v,data:f,ItemContent:W,className:"gap-3"},`groupmembers-${f.length}`)})});function ce({sourceIdx:s,group:i}){const t=g(C(n=>n.devices[s]));return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"flex flex-row flex-wrap gap-4 mb-4 w-full",children:[a.jsx("div",{className:"card card-border bg-base-200 border-base-300 rounded-box shadow-md flex-1",children:a.jsx("div",{className:"card-body p-4",children:a.jsx(q,{sourceIdx:s,devices:t,group:i})})}),a.jsx("div",{className:"card card-border bg-base-200 border-base-300 rounded-box shadow-md flex-1",children:a.jsx("div",{className:"card-body p-4",children:a.jsx(k,{sourceIdx:s,target:i})})}),a.jsx("div",{className:"card card-border bg-base-200 border-base-300 rounded-box shadow-md flex-1",children:a.jsx("div",{className:"card-body p-4",children:a.jsx(E,{sourceIdx:s,target:i,deviceState:{}})})})]}),a.jsx($,{sourceIdx:s,devices:t,group:i})]})}export{ce as default};