@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
JavaScript
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