@raulpesilva/re-state
Version:
easy way to create a shared state to the entire application
31 lines (28 loc) • 1.58 kB
JavaScript
import { createGetReState } from './createGetReState';
import { createReState } from './createReState';
import { createReStateDispatch } from './createReStateDispatch';
import { createReStateSelect } from './createReStateSelect';
import { setReStateInitialValue } from './store';
/**
* Creates a set of methods to use with React.
* @param name Unique name of the state
* @param initialValue initial value of the state
* @param valueOfReset value to reset when calling resetReState
* @returns a set of methods to use with React
*/
export var createReStateMethods = function createReStateMethods(name, initialValue, valueOfReset) {
var _methods;
if (!name) throw new Error('Name is required');
if (typeof name !== 'string') throw new Error('Name need to be a string');
var capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);
var use = createReState(name, initialValue);
var useSelect = createReStateSelect(name);
var dispatch = createReStateDispatch(name);
var get = createGetReState(name);
if (valueOfReset) setReStateInitialValue(name, valueOfReset.value);
var methods = (_methods = {}, _methods["use" + capitalizedName] = use, _methods["use" + capitalizedName + "Select"] = useSelect, _methods["dispatch" + capitalizedName] = dispatch, _methods["get" + capitalizedName] = get, _methods["reset" + capitalizedName] = function reset() {
var _valueOfReset$value;
return dispatch((_valueOfReset$value = valueOfReset == null ? void 0 : valueOfReset.value) != null ? _valueOfReset$value : initialValue);
}, _methods);
return methods;
};