apollo-form
Version:
Form state manager
154 lines (153 loc) • 4.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const isDate_1 = __importDefault(require("lodash/isDate"));
const query_1 = __importDefault(require("../managers/ApolloManager/query"));
exports.makeApolloFormQuery = query_1.default;
function replaceErrors(target, source, value) {
for (const key of Object.keys(source)) {
if (typeof source[key] === 'object' && source[key] !== null && !isDate_1.default(value)) {
if (Array.isArray(source[key])) {
if (source[key][1] !== null && source[key][1] !== undefined) {
if (typeof target[key] !== 'object' || target[key] === null) {
target[key] = {};
}
let t = Array.isArray(target[key]) ? target[key][1] : target[key];
target[key] = [true, replaceErrors(t || {}, source[key][1], true)];
}
}
else {
if (typeof target[key] !== 'object' || target[key] === null) {
target[key] = {};
}
if (source[key]) {
target[key] = replaceErrors(target[key] || {}, source[key], true);
}
}
}
else {
target[key] = value;
}
}
return target;
}
exports.replaceErrors = replaceErrors;
function firstError(state) {
for (const k in state) {
let item = state[k];
if (Array.isArray(state[k])) {
item = state[k][1];
}
if (typeof item === 'object' && !isDate_1.default(item)) {
const err = firstError(item);
if (err) {
return err;
}
}
else {
return item;
}
}
return undefined;
}
exports.firstError = firstError;
function getDeepStatus(state, path) {
const arr = path.split('.');
const last = arr[arr.length - 1];
let current = state;
for (let i = 0; i < arr.length - 1; i++) {
const key = arr[i];
if (typeof current[key] === 'undefined') {
if (i === arr.length - 1) {
current[key] = {};
}
else {
current[key] = [undefined, {}];
}
}
if (typeof current[key] === 'object') {
if (Array.isArray(current[key])) {
current = current[key][1];
}
else {
current = current[key];
}
}
else {
current[key] = [current[key], {}];
}
}
if (typeof current === 'undefined') {
return current;
}
if (typeof current[last] === 'object') {
if (!Array.isArray(current[last])) {
current[last] = [undefined, current[last]];
return undefined;
}
return current[last][0];
}
return current[last];
}
exports.getDeepStatus = getDeepStatus;
function setDeepStatus(state, path, value) {
const arr = path.split('.');
const last = arr[arr.length - 1];
let current = state;
for (let i = 0; i < arr.length - 1; i++) {
const key = arr[i];
if (typeof current[key] === 'undefined') {
if (i === arr.length - 1) {
current[key] = {};
}
else {
current[key] = [undefined, {}];
}
}
if (typeof current[key] === 'object') {
if (Array.isArray(current[key])) {
current = current[key][1];
}
else {
current = current[key];
}
}
else {
const t = current[key];
current[key] = [t, {}];
current = current[key][1];
}
}
if (typeof current[last] === 'object') {
if (!Array.isArray(current[last])) {
current[last] = [value, current[last]];
}
else {
current[last][0] = value;
}
}
else {
current[last] = value;
}
return state;
}
exports.setDeepStatus = setDeepStatus;
function blobToBase64(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = function () {
const base64data = reader.result;
if (typeof base64data === 'string') {
resolve(base64data);
}
else {
reject(new Error('Error parse'));
}
};
reader.readAsDataURL(blob);
reader.onerror = () => reject(new Error('Error parse'));
});
}
exports.blobToBase64 = blobToBase64;