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