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.38 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 l=require("../../../index-CUxh5LWn.cjs");require("../../HassConnect/HassContext.js");require("@iconify/react");require("use-debounce");require("deep-object-diff");require("home-assistant-js-websocket");const S=require("./subscribe/areas.js"),g=require("./subscribe/entities.js"),m=require("./subscribe/devices.js");function E(){const{useStore:v,joinHassUrl:a,getAllEntities:y}=l.useHass(),[d,h]=n.useState([]),[u,q]=n.useState([]),[_,A]=n.useState([]),i=v(e=>e.connection),b=y();return n.useEffect(()=>{if(!i)return;const e=S.subscribeAreaRegistry(i,t=>{h(t)}),r=g.subscribeEntityRegistry(i,t=>{A(t)}),c=m.subscribeDeviceRegistry(i,t=>{q(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(I=>I.id===s.device_id);if(!f)continue;const p=f.area_id===e.area_id;!s.area_id&&p&&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=E; //# sourceMappingURL=index.js.map