UNPKG

@shopify/react-form

Version:

Manage react forms tersely and safely-typed with no magic using React hooks.

43 lines (42 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = require("react"); var utilities_1 = require("../utilities"); function useVisitFields(fieldBag, visitor) { return react_1.useCallback(function () { var e_1, _a; var fields = Object.values(fieldBag); try { for (var fields_1 = tslib_1.__values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) { var item = fields_1_1.value; if (utilities_1.isField(item)) { visitor(item); continue; } var visit = visitDictionary(visitor); if (Array.isArray(item)) { item.forEach(visit); continue; } visit(item); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (fields_1_1 && !fields_1_1.done && (_a = fields_1.return)) _a.call(fields_1); } finally { if (e_1) throw e_1.error; } } }, [fieldBag, visitor]); } exports.default = useVisitFields; function visitDictionary(visitor) { return function (fields) { return Object.keys(fields).forEach(function (key) { var field = fields[key]; visitor(field); }); }; }