29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.useMultiStateValidator = void 0;
|
|
var react_1 = require("react");
|
|
function useMultiStateValidator(states, validator, initialValidity) {
|
|
if (initialValidity === void 0) { initialValidity = [undefined]; }
|
|
if (typeof states !== 'object') {
|
|
throw new Error('states expected to be an object or array, got ' + typeof states);
|
|
}
|
|
var validatorInner = react_1.useRef(validator);
|
|
var statesInner = react_1.useRef(states);
|
|
validatorInner.current = validator;
|
|
statesInner.current = states;
|
|
var _a = react_1.useState(initialValidity), validity = _a[0], setValidity = _a[1];
|
|
var validate = react_1.useCallback(function () {
|
|
if (validatorInner.current.length >= 2) {
|
|
validatorInner.current(statesInner.current, setValidity);
|
|
}
|
|
else {
|
|
setValidity(validatorInner.current(statesInner.current));
|
|
}
|
|
}, [setValidity]);
|
|
react_1.useEffect(function () {
|
|
validate();
|
|
}, Object.values(states));
|
|
return [validity, validate];
|
|
}
|
|
exports.useMultiStateValidator = useMultiStateValidator;
|