UNPKG

@hakit/core

Version:

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

53 lines (52 loc) 1.66 kB
import "lodash"; import "../../utils/light/index.js"; import { useState as u, useEffect as E, useMemo as g } from "react"; import "../useLocale/locales/index.js"; import { u as l } from "../../../index-DnHwXFlq.js"; import "../../HassConnect/HassContext.js"; import "@iconify/react"; import "use-debounce"; import "deep-object-diff"; import "home-assistant-js-websocket"; import { subscribeAreaRegistry as U } from "./subscribe/areas.js"; import { subscribeEntityRegistry as D } from "./subscribe/entities.js"; import { subscribeDeviceRegistry as R } from "./subscribe/devices.js"; function L() { const { useStore: v, joinHassUrl: p, getAllEntities: y } = l(), [d, _] = u([]), [o, b] = u([]), [m, h] = u([]), s = v((e) => e.connection), a = y(); return E(() => { if (!s) return; const e = U(s, (i) => { _(i); }), n = D(s, (i) => { h(i); }), r = R(s, (i) => { b(i); }); return () => { e(), n(), r(); }; }, [s]), g(() => d.map((e) => { const n = [], r = [], i = []; for (const t of o) t.area_id === e.area_id && (t.entry_type === "service" ? i.push(t) : r.push(t)); for (const t of m) { const c = a[t.entity_id]; if (!c || (t.area_id === e.area_id && n.push(c), !t.device_id)) continue; const f = o.find((I) => I.id === t.device_id); if (!f) continue; const A = f.area_id === e.area_id; !t.area_id && A && n.push(c); } return { ...e, picture: e.picture ? p(e.picture) : e.picture, devices: r, services: i, entities: n }; }), [d, o, p, m, a]); } export { L as useAreas }; //# sourceMappingURL=index.js.map