UNPKG

react-hook-core

Version:
97 lines (96 loc) 2.8 kB
"use strict" Object.defineProperty(exports, "__esModule", { value: true }) var query_string_1 = require("query-string") var reflect_1 = require("./reflect") function goBack(navigate, confirm, resource, o1, o2, keys, version) { if (!reflect_1.hasDiff(o1, o2, keys, version)) { navigate(-1) } else { confirm(resource.msg_confirm_back, function () { return navigate(-1) }) } } exports.goBack = goBack function buildFromUrl(modelT) { return buildParameters(window.location.search, modelT) } exports.buildFromUrl = buildFromUrl function buildParameters(url, model) { var urlSearch = url var i = urlSearch.indexOf("?") if (i >= 0) { urlSearch = url.substring(i + 1) } try { var parsed = convertToObject(query_string_1.default.parse(urlSearch), model) return parsed } catch (error) { console.log(error) throw error } } exports.buildParameters = buildParameters function convertToObject(input, model) { if (model) { return parseToModel(input, model) } var output = {} for (var key in input) { var value = input[key] var keys = key.split(".") var currentObj = output for (var i = 0; i < keys.length; i++) { var currentKey = keys[i] if (!currentObj[currentKey]) { if (i === keys.length - 1) { currentObj[currentKey] = parseValue(value) } else { currentObj[currentKey] = {} } } currentObj = currentObj[currentKey] } } return output } exports.convertToObject = convertToObject function parseToModel(dest, src) { if (typeof dest !== "object" || typeof src !== "object") { return dest } for (var key in src) { if (!Object.hasOwn(dest, key)) continue if (src.hasOwnProperty(key)) { if (src[key] && src[key].constructor === Object) { if (!dest[key] || dest[key].constructor !== Object) { dest[key] = {} } parseToModel(dest[key], src[key]) } else if (src[key] instanceof Date) { dest[key] = new Date(dest[key]) } else if (typeof src[key] === "boolean") { if (dest[key].length > 0) { dest[key] = new Boolean(dest[key]) } } else if (typeof src[key] === "number") { if (typeof dest[key] === "string" && dest[key].indexOf(".") !== -1) { dest[key] = parseFloat(dest[key]) } else { dest[key] = parseInt(dest[key], 10) } } else if (typeof src[key] === "string") { if (dest[key]) { dest[key] = dest[key].toString() } } } } return dest } function parseValue(value) { if (!isNaN(value) && !isNaN(parseFloat(value))) { return parseFloat(value) } return value }