UNPKG

@etsoo/react

Version:

TypeScript ReactJs UI Independent Framework

49 lines (48 loc) 1.56 kB
"use strict"; 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;