UNPKG

@hakit/core

Version:

A collection of React hooks and helpers for Home Assistant to easily communicate with the Home Assistant WebSocket API.

3 lines (2 loc) 1.4 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("lodash");require("../../utils/light/index.js");const n=require("react");require("../useLocale/locales/index.js");const S=require("../../../index-DKqwfDib.cjs");require("../../HassConnect/HassContext.js");require("@iconify/react");const v=require("../useStore/index.js");require("use-debounce");require("home-assistant-js-websocket");const I=require("./subscribe/areas.js"),m=require("./subscribe/entities.js"),g=require("./subscribe/devices.js");function k(){const{joinHassUrl:a}=S.useHass(),[d,y]=n.useState([]),[u,h]=n.useState([]),[_,q]=n.useState([]),i=v.useStore(e=>e.connection),b=v.useStore(e=>e.entities);return n.useEffect(()=>{if(!i)return;const e=I.subscribeAreaRegistry(i,t=>{y(t)}),r=m.subscribeEntityRegistry(i,t=>{q(t)}),c=g.subscribeDeviceRegistry(i,t=>{h(t)});return()=>{e(),r(),c()}},[i]),n.useMemo(()=>d.map(e=>{const r=[],c=[],t=[];for(const s of u)s.area_id===e.area_id&&(s.entry_type==="service"?t.push(s):c.push(s));for(const s of _){const o=b[s.entity_id];if(!o||(s.area_id===e.area_id&&r.push(o),!s.device_id))continue;const f=u.find(p=>p.id===s.device_id);if(!f)continue;const A=f.area_id===e.area_id;!s.area_id&&A&&r.push(o)}return{...e,picture:e.picture?a(e.picture):e.picture,devices:c,services:t,entities:r}}),[d,u,a,_,b])}exports.useAreas=k; //# sourceMappingURL=index.js.map