@genshi/react
Version:
A simple, composable and effective JavaScript state management library for React
54 lines (53 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const Genshi = require("@genshi/core");
const react = require("react");
function _interopNamespaceDefault(e) {
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
if (e) {
for (const k in e) {
if (k !== "default") {
const d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: () => e[k]
});
}
}
}
n.default = e;
return Object.freeze(n);
}
const Genshi__namespace = /* @__PURE__ */ _interopNamespaceDefault(Genshi);
function createSubscriber(store) {
return function subscription(callback) {
const listener = store.subscribe(callback);
return listener.remove;
};
}
function createSnapshot(store) {
return function getSnapshot(accessor) {
return function snapshot() {
return accessor(store.getState());
};
};
}
function createStore(initialState, config) {
const store = new Genshi__namespace.Store(initialState, config);
const subscriber = createSubscriber(store);
const getSnapshot = createSnapshot(store);
function useStore(accessor) {
const snapshot = getSnapshot(accessor);
const internalState = react.useSyncExternalStore(subscriber, snapshot, snapshot);
return [internalState, store.dispatch];
}
return [useStore, store];
}
exports.createStore = createStore;
Object.keys(Genshi).forEach((k) => {
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
Object.defineProperty(exports, k, {
enumerable: true,
get: () => Genshi[k]
});
});