@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
105 lines (87 loc) • 2.87 kB
JavaScript
import _typeof from "@babel/runtime/helpers/typeof";
/* eslint-disable no-unused-vars */
import { isValidElement } from 'react';
import Validators from '../validators';
var HAS_PROP = {}.hasOwnProperty;
export var TO_STRING = {}.toString;
var isObject = function isObject(obj) {
return _typeof(obj) === 'object' && TO_STRING.call(obj) === '[object Object]' && obj !== null;
};
var stringify = function stringify(args) {
var arr = [];
var value;
var options = args;
if (typeof options === 'number') {
options = options.toString();
}
for (var k in options) {
if (HAS_PROP.call(options, k)) {
value = options[k];
arr.push(k, /*#__PURE__*/isValidElement(value) ? stringify(value.props) : isObject(value) ? stringify(value) : value.toString());
}
}
return JSON.stringify(arr);
};
export var memoize = function memoize(func) {
if (!func.cache) {
func.cache = {};
}
return function (value, allValues) {
var key = stringify(value, allValues);
for (var _len = arguments.length, options = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
options[_key - 2] = arguments[_key];
}
return HAS_PROP.call(func.cache, key) ? func.cache[key] : func.cache[key] = func.apply(void 0, [value, allValues].concat(options));
};
};
var defaultMessage = function defaultMessage(type, values) {
var msg = Validators.messages[type];
return typeof msg === 'string' ? {
defaultMessage: msg,
values: values
} : Object.assign({}, msg, {
values: values
});
};
export var prepareMsg = function prepareMsg(msg, type, values) {
if (msg == null) {
return defaultMessage(type, values);
}
if (HAS_PROP.call(msg, 'props') && /*#__PURE__*/isValidElement(msg)) {
msg = msg.props;
}
if (msg[type] != null) {
msg = msg[type];
}
if (isObject(msg)) {
if (HAS_PROP.call(msg, 'id') || HAS_PROP.call(msg, 'defaultMessage')) {
return Object.assign({}, msg, {
values: values
});
}
return defaultMessage(type, values);
}
return {
id: msg,
defaultMessage: msg,
values: values
};
};
export var assign = Object.assign;
export var prepare = function prepare(func) {
return function (value, allValues) {
for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
args[_key2 - 2] = arguments[_key2];
}
return func.apply(void 0, [value, allValues].concat(args));
};
};
export var isNumber = function isNumber(num) {
return !isNaN(num) && (num !== 0 || ('' + num).trim() !== '');
};
export function selectNum(var1, var2) {
return isNumber(var1) ? +var1 : arguments.length > 1 && isNumber(var2) ? +var2 : null;
}
export var trunc = function trunc(num) {
return Math.trunc ? Math.trunc(num) : num < 0 ? Math.ceil(num) : Math.floor(num);
};