@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
122 lines • 4.85 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepareArrayValidator = exports.getValidate = exports.prepareValidator = exports.convertToWarning = void 0;
var helpers_1 = require("../common/helpers");
var validator_functions_1 = require("../validators/validator-functions");
var compose_validators_1 = __importDefault(require("../compose-validators"));
var isValidatorMapper = function (mapper) {
// Check if all values are factory functions
return Object.values(mapper).every(function (value) {
if (typeof value !== 'function') {
return false;
}
try {
var result = value({});
return typeof result === 'function';
}
catch (_a) {
return false;
}
});
};
var convertMainValidatorMapper = function (mainMapper) {
var converted = {};
var _loop_1 = function (key, value) {
if (typeof value === 'function') {
// Try to determine if it's a factory function or ValidatorFunction
try {
var testResult = value({});
if (typeof testResult === 'function') {
// It's a factory function
converted[key] = value;
}
else {
// It's a ValidatorFunction, wrap it
converted[key] = function () { return value; };
}
}
catch (_c) {
// If calling with {} fails, it's likely a ValidatorFunction
converted[key] = function () { return value; };
}
}
};
for (var _i = 0, _a = Object.entries(mainMapper); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], value = _b[1];
_loop_1(key, value);
}
return converted;
};
var convertToWarning = function (validator) {
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return ({
type: 'warning',
error: validator(args[0], args[1], args[2]),
});
};
};
exports.convertToWarning = convertToWarning;
var prepareValidator = function (validator, mapper) {
if (typeof validator === 'function') {
return (0, helpers_1.memoize)(validator);
}
if (validator.warning) {
return (0, exports.convertToWarning)(mapper[validator.type](__assign({}, validator)));
}
return mapper[validator.type](__assign({}, validator));
};
exports.prepareValidator = prepareValidator;
var getValidate = function (validate, dataType, mapper) {
if (mapper === void 0) { mapper = {}; }
var convertedMapper = isValidatorMapper(mapper) ? mapper : convertMainValidatorMapper(mapper);
return __spreadArray(__spreadArray([], (validate ? validate.map(function (validator) { return (0, exports.prepareValidator)(validator, convertedMapper); }) : []), true), (dataType ? [(0, validator_functions_1.dataTypeValidator)(dataType)()] : []), true);
};
exports.getValidate = getValidate;
var prepareArrayValidator = function (validation) {
return function (value) {
if (value === void 0) { value = []; }
if (!Array.isArray(value)) {
return;
}
var arrayValidator = (0, compose_validators_1.default)(validation);
var result = arrayValidator(value && value.length > 0 ? value : undefined);
// Handle both sync and async validation results
if (typeof result === 'function') {
result = result(value);
}
else if ((result === null || result === void 0 ? void 0 : result.then) && typeof result.then === 'function') {
// Handle Promise case - return the promise
return result;
}
return result;
};
};
exports.prepareArrayValidator = prepareArrayValidator;
//# sourceMappingURL=validator-helpers.js.map