UNPKG

@react-form-fields/core

Version:

Material UI Form Fields

35 lines 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var cloneDeep = require("lodash/cloneDeep"); var react_1 = require("react"); var useModel = function (initialState) { var cloneModel = react_1.useCallback(function (model, $dirty) { model = cloneDeep(model); model.$dirty = $dirty; model.toJSON = function () { var result = cloneDeep(this); delete result.$dirty; return result; }; return model; }, []); var freezeInitalState = react_1.useState(cloneModel(initialState, false))[0]; var _a = react_1.useState(cloneModel(initialState, false)), model = _a[0], setModel = _a[1]; var handlers = react_1.useRef({}).current; var setModelCallback = react_1.useRef(function (key, handler) { if (!handlers[key]) { handlers[key] = function (value) { var newModel = cloneModel(model, true); handler(newModel, value); setModel(newModel); }; } return handlers[key]; }).current; var cleanModel = react_1.useCallback(function () { setModel(cloneModel(freezeInitalState, false)); }, [cloneModel, freezeInitalState]); return [model, setModelCallback, setModel, cleanModel]; }; exports.default = useModel; //# sourceMappingURL=useModel.js.map