@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
49 lines (48 loc) • 1.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.State = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = __importDefault(require("react"));
/**
* State
*/
class State {
/**
* Generic to create state context and provider
* @param reducer Reduce function
* @param initState Init state
* @param uiCreator Additional UI creator
*/
static create(reducer, initState, calls, uiCreator) {
// State context
const context = react_1.default.createContext(calls);
// State context provider
const provider = (props) => {
// Destruct
const { children, update } = props;
// Update reducer
const [state, dispatch] = react_1.default.useReducer(reducer, initState);
// Callback
if (update != null)
update(dispatch);
if (uiCreator) {
// Custom renderer
return uiCreator(state, dispatch, props);
}
else {
// Context new value
const value = { ...calls, state, dispatch };
return (0, jsx_runtime_1.jsx)(context.Provider, { value: value, children: children });
}
};
// Return
return {
context,
provider
};
}
}
exports.State = State;