UNPKG

@undermuz/use-form

Version:
89 lines (87 loc) 2.94 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/useForm/useControlledForm.ts var useControlledForm_exports = {}; __export(useControlledForm_exports, { useControlledForm: () => useControlledForm }); module.exports = __toCommonJS(useControlledForm_exports); var import_react = require("react"); var import_underscore = require("underscore"); var import_common = require("../utils/common.cjs"); var useControlledForm = (form, props) => { const { value, onChange, options } = props; const valueRef = (0, import_react.useRef)(value); const onChangeRef = (0, import_common.useRefBy)(onChange); const mountFlag = (0, import_react.useRef)(false); (0, import_react.useEffect)(() => { if (!value) { return; } if (value === valueRef.current) { return; } if ((0, import_underscore.isEqual)(value, valueRef.current)) { return; } if (options == null ? void 0 : options.debug) console.log("[useForm][Update values from external]", { external: value, current: valueRef.current }); valueRef.current = value; form.setValues(value); }, [value]); (0, import_react.useEffect)(() => { if (!mountFlag.current) { mountFlag.current = true; return; } if (!onChangeRef.current) { return; } if (valueRef.current !== form.values && !(0, import_underscore.isEqual)(valueRef.current, form.values)) { if (options == null ? void 0 : options.debug) console.log("[useForm][Emit values to external]", { current: form.values, external: valueRef.current }); valueRef.current = form.values; onChangeRef.current(form.values); } }, [form.values]); (0, import_react.useEffect)(() => { if (!value) { return; } if (value === form.store.getState().values) { return; } if (options == null ? void 0 : options.debug) console.log("[useForm][Set initials values]", { external: value, current: form.store.getState().values }); form.setValues(value); }, []); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useControlledForm });