UNPKG

@rxx/core

Version:

React MVI micro framework.

169 lines (168 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = tslib_1.__importStar(require("react")); var OBJECT_REGEXP = /\[object ([^\]]+)\]/; var toStringClass = function (o) { return o ? Object.prototype.toString.call(o).match(OBJECT_REGEXP)[1] : 'null'; }; function symbol(val) { return typeof Symbol === 'function' ? Symbol(val) : val; } exports.symbol = symbol; function isDefined(obj) { return obj !== undefined && obj !== null; } exports.isDefined = isDefined; function assign(base, append) { return tslib_1.__assign({}, base, append); } exports.assign = assign; function extend(base, append) { for (var key in append) { base[key] = append[key]; } return base; } exports.extend = extend; function omit(obj, name) { var ret = {}; var omits = typeof name === 'string' ? [name] : name; for (var key in obj) { if (omits.indexOf(key) === -1) { ret[key] = obj[key]; } } return ret; } exports.omit = omit; function forIn(obj, cb) { for (var key in obj || {}) { cb(obj[key], key, obj); } } exports.forIn = forIn; function isObject(obj) { return toStringClass(obj) === 'Object'; } exports.isObject = isObject; exports.STATE_ENTITY = '__RMVI_STATE_ENTITY__'; function isSimpleObject(obj) { return isObject(obj) && (obj.constructor === Object && !obj[exports.STATE_ENTITY]); } exports.isSimpleObject = isSimpleObject; function isArray(obj) { return toStringClass(obj) === 'Array'; } exports.isArray = isArray; function isRegExp(obj) { return toStringClass(obj) === 'RegExp'; } exports.isRegExp = isRegExp; function filter(obj, cb) { if (isArray(obj)) { return obj.filter(cb); } var ret = []; for (var key in obj || {}) { if (cb(obj[key], key, obj)) { ret.push(obj[key]); } } return ret; } exports.filter = filter; function map(obj, cb) { if (isArray(obj)) { return obj.map(cb); } var ret = []; for (var key in obj || {}) { ret.push(cb(obj[key], key, obj)); } return ret; } exports.map = map; function some(obj, cb) { if (isArray(obj)) { return obj.some(cb); } else if (isObject(obj)) { for (var key in obj || {}) { if (cb(obj[key], key, obj)) { return true; } } } return false; } exports.some = some; function every(obj, cb) { if (isArray(obj)) { return obj.every(cb); } else if (isObject(obj)) { for (var key in obj || {}) { if (!cb(obj[key], key, obj)) { return false; } } } return true; } exports.every = every; function mapValues(obj, cb) { var ret = {}; for (var key in obj || {}) { ret[key] = cb(obj[key], key, obj); } return ret; } exports.mapValues = mapValues; function clone(target) { if (isObject(target)) { return tslib_1.__assign({}, target); } else if (isArray(target)) { return target.slice(); } return target; } exports.clone = clone; function mergeDeep(target, source) { if (target === source) { return target; } var isTargetReactElement = React.isValidElement(target); var isSourceReactElement = React.isValidElement(source); if (isTargetReactElement || isSourceReactElement) { return source; } if (isSimpleObject(target) && isSimpleObject(source)) { var ret_1 = tslib_1.__assign({}, target); Object.keys(source).forEach(function (key) { if (isSimpleObject(source[key])) { if (!(key in ret_1)) { ret_1[key] = {}; } ret_1[key] = mergeDeep(ret_1[key], source[key]); } else { ret_1[key] = source[key]; } }); return ret_1; } return source; } exports.mergeDeep = mergeDeep; var IDGenerator = (function () { function IDGenerator() { } IDGenerator.genNextId = function () { return this.id++; }; IDGenerator.id = 0; return IDGenerator; }()); exports.IDGenerator = IDGenerator;