UNPKG

@genshi/react

Version:

A simple, composable and effective JavaScript state management library for React

54 lines (53 loc) 1.67 kB
"use strict"; 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] }); });