@hakit/core
Version:
A collection of React hooks and helpers for Home Assistant to easily communicate with the Home Assistant WebSocket API.
86 lines (85 loc) • 2.21 kB
JavaScript
import { createContext as a } from "react";
import { isEmpty as c } from "lodash";
import { diff as d } from "deep-object-diff";
import { create as f } from "zustand";
const u = ["last_changed", "last_updated", "context"], l = (t, e = u) => Object.fromEntries(
Object.entries(t).map(([n, s]) => [
n,
Object.fromEntries(Object.entries(s).filter(([r]) => !e.includes(r)))
])
), p = {
xxs: 600,
xs: 900,
sm: 1200,
md: 1536,
lg: 1700,
xlg: 1701
}, b = f((t) => ({
routes: [],
setRoutes: (e) => t(() => ({ routes: e })),
entities: {},
setHassUrl: (e) => t({ hassUrl: e }),
hassUrl: null,
hash: "",
locales: null,
setLocales: (e) => t({ locales: e }),
setHash: (e) => t({ hash: e }),
setPortalRoot: (e) => t({ portalRoot: e }),
windowContext: window,
setWindowContext: (e) => t({ windowContext: e }),
setEntities: (e) => t((n) => {
const s = d(l(n.entities), l(e));
if (!c(s)) {
const r = Object.keys(s).reduce(
(o, i) => ({
...o,
[i]: e[i]
}),
{}
);
return Object.keys(r).forEach((o) => {
n.entities[o] = {
...n.entities[o],
...e[o]
};
}), n.ready ? {
lastUpdated: /* @__PURE__ */ new Date(),
entities: n.entities
} : {
ready: !0,
lastUpdated: /* @__PURE__ */ new Date(),
entities: n.entities
};
}
return n;
}),
connection: null,
setConnection: (e) => t({ connection: e }),
cannotConnect: !1,
setCannotConnect: (e) => t({ cannotConnect: e }),
ready: !1,
setReady: (e) => t({ ready: e }),
lastUpdated: /* @__PURE__ */ new Date(),
setLastUpdated: (e) => t({ lastUpdated: e }),
auth: null,
setAuth: (e) => t({ auth: e }),
config: null,
setConfig: (e) => t({ config: e }),
error: null,
setError: (e) => t({ error: e }),
breakpoints: p,
setBreakpoints: (e) => t({
breakpoints: {
...e,
xlg: e.lg + 1
}
}),
globalComponentStyles: {},
setGlobalComponentStyles: (e) => t(() => ({ globalComponentStyles: e }))
})), h = a({});
export {
p as DEFAULT_BREAKPOINTS,
h as HassContext,
b as useStore
};
//# sourceMappingURL=HassContext.js.map