UNPKG

@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
"use strict"; 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