UNPKG

@schema-render/core-react

Version:

Through a set of simple JSON Schema, efficiently build a set of forms.

260 lines (259 loc) 7.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { cloneDeep: function() { return cloneDeep; }, debounce: function() { return debounce; }, dropRight: function() { return dropRight; }, find: function() { return find; }, get: function() { return get; }, isMatch: function() { return isMatch; }, mapKeys: function() { return mapKeys; }, omit: function() { return omit; }, pick: function() { return pick; }, set: function() { return set; }, toLower: function() { return toLower; } }); var _assert = /*#__PURE__*/ _interop_require_default(require("./assert")); var _base = require("./base"); var _checking = require("./checking"); function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } function cloneDeep(val) { var k, out, tmp; if (Array.isArray(val)) { out = Array(k = val.length); while(k--)out[k] = (tmp = val[k]) && (typeof tmp === "undefined" ? "undefined" : _type_of(tmp)) === 'object' ? cloneDeep(tmp) : tmp; return out; } if (Object.prototype.toString.call(val) === '[object Object]') { out = {}; for(k in val){ if (k === '__proto__') { Object.defineProperty(out, k, { value: cloneDeep(val[k]), configurable: true, enumerable: true, writable: true }); } else { out[k] = (tmp = val[k]) && (typeof tmp === "undefined" ? "undefined" : _type_of(tmp)) === 'object' ? cloneDeep(tmp) : tmp; } } return out; } return val; } function mapKeys(obj, fn) { if (!(0, _checking.isPlainObject)(obj) || !(0, _checking.isFunction)(fn)) { return {}; } var keys = Object.keys(obj); var result = {}; keys.map(function(key) { var value = obj[key]; var newKey = fn(value, key); result[newKey] = value; }); return result; } function pick(obj) { for(var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){ keys[_key - 1] = arguments[_key]; } var result = {}; if (!(0, _checking.isPlainObject)(obj)) { return result; } keys.map(function(key) { if ((0, _base.hasOwnProperty)(obj, key)) { result[key] = obj[key]; } }); return result; } function omit(obj) { for(var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){ keys[_key - 1] = arguments[_key]; } if (!(0, _checking.isPlainObject)(obj)) { return {}; } var result = _object_spread({}, obj); keys.map(function(key) { if ((0, _base.hasOwnProperty)(obj, key)) { delete result[key]; } }); return result; } function dropRight(arr) { var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; if (!(0, _checking.isArray)(arr)) { return []; } return arr.slice(0, n > 0 ? n * -1 : arr.length); } function find(arr, predicate) { var fromIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; if (!(0, _checking.isArray)(arr)) { return undefined; } var length = arr.length; for(var i = fromIndex; i < length; i++){ var item = arr[i]; if ((0, _checking.isFunction)(predicate)) { if (predicate(item)) { return item; } } else if ((0, _checking.isPlainObject)(predicate)) { if (isMatch(item, predicate)) { return item; } } } } function isMatch(obj, source) { if (!(0, _checking.isPlainObject)(obj)) { return true; } var keys = Object.keys(source); for(var i = 0; i < keys.length; i++){ var key = keys[i]; if (!(0, _base.hasOwnProperty)(obj, key) || source[key] !== obj[key]) { return false; } } return true; } function get(obj, path) { if (!(0, _checking.isPlainObject)(obj) || !(0, _checking.isArray)(path)) { return undefined; } var value = obj; for(var i = 0; i < path.length; i++){ var filed = path[i]; if (value) { value = value[filed]; } else { return undefined; } } return value; } /** * fork from https://github.com/lodash/lodash/blob/4.17.21-es/_isIndex.js */ var regIsUint = /^(?:0|[1-9]\d*)$/; function isIndex(value) { return (0, _checking.isNumber)(value) || regIsUint.test(value); } function set(obj, path, value) { if (!(0, _checking.isPlainObject)(obj)) { return obj; } var length = path.length; var lastIndex = length - 1; var index = -1; var nested = obj; while(nested !== null && ++index < length){ var key = path[index]; var newValue = value; if (index !== lastIndex) { var objValue = nested[key]; newValue = (0, _checking.isObject)(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; } nested[key] = newValue; nested = nested[key]; } return obj; } function debounce(func, wait) { if (!(0, _checking.isFunction)(func)) { _assert.default.fail('Expected a function'); } var timeout; function debounced() { var _this = this; for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){ args[_key] = arguments[_key]; } clearTimeout(timeout); timeout = setTimeout(function() { return func.apply(_this, args); }, wait); } debounced.cancel = function() { clearTimeout(timeout); }; return debounced; } function toLower(str) { if ((0, _checking.isString)(str)) { return str.toLowerCase(); } return ''; }