zigbee2mqtt-windfront
Version:
[](https://npmjs.org/package/zigbee2mqtt-windfront) [](https://github.com/Nerivec/zigbee2mqtt-windf
2 lines (1 loc) • 4.31 kB
JavaScript
import{b as P,a as t,r,A as z,c as d,j as n,d as y,S as M,F as o,f as q,L as D,C as u,Z as N,$ as R,a0 as A,N as E,M as C,a1 as L}from"./index-Cg_dwqpD.js";import{S as V}from"./SelectField-dfeWrxvV.js";import{T as $}from"./Table-FUtHXzGb.js";import{u as B,T as G}from"./useTable-B3JMT6Iq.js";import"./envs-CSqIi4cL.js";import"./DebouncedInput-E4d1IUlA.js";function Q(){const{t:i}=P(["touchlink","common","zigbee"]),m=t(e=>e.touchlinkDevices),f=t(e=>e.devices),h=t(e=>e.touchlinkIdentifyInProgress),g=t(e=>e.touchlinkResetInProgress),b=t(e=>Object.values(e.touchlinkScanInProgress).some(s=>s)),x=t(e=>e.setTouchlinkIdentifyInProgress),k=t(e=>e.setTouchlinkResetInProgress),j=t(e=>e.setTouchlinkScan),[p,F]=r.useState(0),I=r.useMemo(()=>{const e=[];for(let s=0;s<z.length;s++){const a=f[s];for(const l of m[s])e.push({sourceIdx:s,touchlinkDevice:l,friendlyName:a.find(c=>c.ieee_address===l.ieee_address)?.friendly_name,identifyInProgress:h[s],resetInProgress:g[s]})}return e},[f,m,h,g]),T=r.useCallback(async e=>{j(e,{inProgress:!0,devices:[]}),await d(e,"bridge/request/touchlink/scan","")},[j]),v=r.useCallback(async([e,s])=>{x(e,!0),await d(e,"bridge/request/touchlink/identify",s)},[x]),_=r.useCallback(async([e,s])=>{k(e,!0),await d(e,"bridge/request/touchlink/factory_reset",s)},[k]),w=r.useMemo(()=>[{id:"source",size:60,header:()=>n.jsx("span",{title:i(e=>e.source,{ns:"common"}),children:n.jsx(o,{icon:q})}),accessorFn:({sourceIdx:e})=>y[e],cell:({row:{original:{sourceIdx:e}}})=>n.jsx(M,{idx:e,nameClassName:"hidden md:inline-block"}),filterFn:"equals",meta:{filterVariant:"select",showFacetedOccurrences:!0}},{id:"ieee_address",minSize:175,header:i(e=>e.ieee_address,{ns:"zigbee"}),accessorFn:({touchlinkDevice:e})=>e.ieee_address,cell:({row:{original:{sourceIdx:e,touchlinkDevice:s,friendlyName:a}}})=>a?n.jsx("div",{className:"min-w-0",children:n.jsx(D,{to:`/device/${e}/${s.ieee_address}/info`,className:"link link-hover truncate",children:s.ieee_address})}):s.ieee_address,sortingFn:(e,s)=>e.original.touchlinkDevice.ieee_address.localeCompare(s.original.touchlinkDevice.ieee_address),filterFn:"includesString",meta:{filterVariant:"text"}},{id:"friendly_name",minSize:175,header:i(e=>e.friendly_name,{ns:"common"}),accessorFn:({friendlyName:e})=>e,filterFn:"includesString",sortingFn:(e,s)=>(e.original.friendlyName??e.original.touchlinkDevice.ieee_address).localeCompare(s.original.friendlyName??s.original.touchlinkDevice.ieee_address),meta:{filterVariant:"text",textFaceted:!0}},{id:"channel",minSize:175,header:i(e=>e.channel,{ns:"zigbee"}),accessorFn:({touchlinkDevice:e})=>e.channel,filterFn:"weakEquals",meta:{filterVariant:"select"}},{id:"actions",minSize:130,cell:({row:{original:{sourceIdx:e,touchlinkDevice:s,resetInProgress:a,identifyInProgress:l}}})=>n.jsxs("div",{className:"join join-horizontal",children:[n.jsx(u,{disabled:a||l,item:[e,s],title:i(c=>c.identify),className:"btn btn-sm btn-square btn-outline btn-primary join-item",onClick:v,children:n.jsx(o,{icon:l?N:R,spin:l})}),n.jsx(u,{disabled:a||l,item:[e,s],title:i(c=>c.factory_reset),className:"btn btn-sm btn-square btn-outline btn-error join-item",onClick:_,children:n.jsx(o,{icon:a?N:A,spin:a})})]}),enableSorting:!1,enableColumnFilter:!1,enableGlobalFilter:!1}],[i,v,_]),S=B({id:"touchlink-devices",columns:w,data:I,visibleColumns:{source:C},sorting:[{id:"friendly_name",desc:!1}]});return b?n.jsx("div",{className:"flex flex-row justify-center items-center gap-2",children:n.jsx("span",{className:"loading loading-infinity loading-xl"})}):n.jsxs(n.Fragment,{children:[n.jsx(E,{children:n.jsx(G,{...S})}),n.jsxs("div",{className:"flex flex-row flex-wrap justify-center items-center gap-2 mb-3",children:[C&&n.jsxs(V,{name:"scan_idx_picker",label:i(e=>e.scan_source),value:p,onChange:e=>!e.target.validationMessage&&!!e.target.value&&F(Number.parseInt(e.target.value,10)),className:"select",children:[n.jsx("option",{value:"",disabled:!0,children:i(e=>e.select_scan_source)}),y.map((e,s)=>n.jsx("option",{value:s,children:e},e))]}),n.jsx("fieldset",{className:"fieldset self-end",children:n.jsxs(u,{className:"btn btn-outline btn-primary",item:p,onClick:T,disabled:b,children:[n.jsx(o,{icon:L}),i(e=>e.scan)]})})]}),n.jsx("div",{className:"mb-5",children:n.jsx($,{id:"touchlink-devices",...S})})]})}export{Q as default};