@shopify/react-form
Version:
Manage react forms tersely and safely-typed with no magic using React hooks.
43 lines (42 loc) • 1.44 kB
JavaScript
;
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);
});
};
}