react-web-native-sketch
Version:
[TODO: We need an overview of how this can be used via npm vs as a local package]
126 lines • 4.09 kB
JavaScript
;
var __assign = (this && this.__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;
};
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("../../utils/common");
function getFormValues(formData, onlyTouchedFields) {
if (onlyTouchedFields === void 0) { onlyTouchedFields = true; }
var formValues = {}, fields = formData && formData.values || {};
Object.keys(fields).filter(function (key) {
return onlyTouchedFields
? common_1.getNestedField(formData, ['fields', key, 'touched'])
: true;
}).map(function (key) {
if (fields[key] !== null && fields[key] !== undefined) {
if (key.indexOf('!') !== -1) {
formValues = unpackJson(formValues, key, fields[key]);
}
else if (key.indexOf('~') === -1) {
formValues = unpackForm(formValues, key, fields[key]);
}
else {
formValues = unpackMultipleField(formValues, key, fields[key]);
}
}
formValues = initFormArray(formValues, key);
});
clearLists(formValues);
return formValues;
}
exports.getFormValues = getFormValues;
function getFormDbValue(state, formName, field) {
if (!!state.form[formName] && !!state.form[formName].values) {
if (!!state.form[formName].values[field]) {
return state.form[formName].values[field];
}
for (var fieldName in state.form[formName].values) {
if (fieldName.split("~").indexOf(field) !== -1) {
if (state.form[formName].values[fieldName] && state.form[formName].values[fieldName]) {
return state.form[formName].values[fieldName][field];
}
return null;
}
}
}
return null;
}
exports.getFormDbValue = getFormDbValue;
function unpackMultipleField(root, s, value) {
root = __assign({}, root, value);
return root;
}
function unpackJson(root, s, value) {
root[s.split('!')[0]] = value;
return root;
}
function unpackForm(root, s, value) {
var last = 0, key;
var elem = root, index;
for (index = 0; index < s.length; index++) {
if (s[index] === ',' || s[index] === '.') {
key = s.substring(last, index);
last = index + 1;
if (!elem[key]) {
elem[key] = s[index] === ',' ? [] : {};
}
elem = elem[key];
}
}
key = s.substring(last, index);
elem[key] = value;
return root;
}
function initFormArray(root, s) {
var last = 0, key;
var elem = root, index;
for (index = 0; index < s.length; index++) {
if (s[index] === ',' || s[index] === '.') {
key = s.substring(last, index);
last = index + 1;
if (!elem[key]) {
if (s[index] === ',') {
elem[key] = [];
}
else {
return;
}
}
elem = elem[key];
}
}
return root;
}
function clearLists(formValues) {
if (formValues === null) {
return;
}
for (var k in formValues) {
if (formValues[k] instanceof Array) {
formValues[k] = formValues[k].filter(function (v) { return v !== null; });
}
else if (formValues[k] instanceof Object) {
clearLists(formValues[k]);
}
}
}
function getFormFieldContent(field, values, isRequired, alwaysTouched) {
var dbValue;
if (field.indexOf('~') > -1) {
dbValue = {};
field.split('~').forEach(function (oneField) {
dbValue[oneField] = values[oneField];
});
}
else {
dbValue = values[field];
}
return dbValue;
}
exports.getFormFieldContent = getFormFieldContent;
//# sourceMappingURL=Form.utils.js.map