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.67 kB
import "lodash"; import "../../utils/light/index.js"; import { useState as u, useEffect as I, useMemo as E } from "react"; import "../useLocale/locales/index.js"; import { u as U } from "../../../index-BfdcdUoC.js"; import "../../HassConnect/HassContext.js"; import "@iconify/react"; import { useStore as v } from "../useStore/index.js"; import "use-debounce"; import "home-assistant-js-websocket"; import { subscribeAreaRegistry as g } from "./subscribe/areas.js"; import { subscribeEntityRegistry as D } from "./subscribe/entities.js"; import { subscribeDeviceRegistry as R } from "./subscribe/devices.js"; function K() { const { joinHassUrl: m } = U(), [p, y] = u([]), [o, _] = u([]), [d, b] = u([]), s = v((e) => e.connection), a = v((e) => e.entities); return I(() => { if (!s) return; const e = g(s, (i) => { y(i); }), n = D(s, (i) => { b(i); }), r = R(s, (i) => { _(i); }); return () => { e(), n(), r(); }; }, [s]), E(() => p.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 d) { 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((A) => A.id === t.device_id); if (!f) continue; const h = f.area_id === e.area_id; !t.area_id && h && n.push(c); } return { ...e, picture: e.picture ? m(e.picture) : e.picture, devices: r, services: i, entities: n }; }), [p, o, m, d, a]); } export { K as useAreas }; //# sourceMappingURL=index.js.map