react-box-tools
Version:
Box tools react components, utils and hooks
33 lines (32 loc) • 561 B
JavaScript
import { useSyncExternalStore as o, useCallback as n } from "react";
function f(u) {
let t = u, r = /* @__PURE__ */ new Set();
const s = (e) => (r.add(e), () => r.delete(e)), a = (e) => {
e(t), t = { ...t }, r.forEach((c) => {
c();
});
};
function d(e) {
return o(
s,
n(() => e(t), [e]),
n(() => e(t), [e])
);
}
function S() {
return o(
s,
n(() => t, []),
n(() => t, [])
);
}
return {
set: a,
selector: d,
store: S,
state: t
};
}
export {
f as createState
};