zustand
Version:
🐻 Bear necessities for state management in React
51 lines (40 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var createStoreImpl = function createStoreImpl(createState) {
var state;
var listeners = new Set();
var setState = function setState(partial, replace) {
var nextState = typeof partial === 'function' ? partial(state) : partial;
if (nextState !== state) {
var _previousState = state;
state = replace ? nextState : Object.assign({}, state, nextState);
listeners.forEach(function (listener) {
return listener(state, _previousState);
});
}
};
var getState = function getState() {
return state;
};
var subscribe = function subscribe(listener) {
listeners.add(listener);
return function () {
return listeners.delete(listener);
};
};
var destroy = function destroy() {
return listeners.clear();
};
var api = {
setState: setState,
getState: getState,
subscribe: subscribe,
destroy: destroy
};
state = createState(setState, getState, api);
return api;
};
var createStore = function createStore(createState) {
return createState ? createStoreImpl(createState) : createStoreImpl;
};
exports["default"] = createStore;