@rxx/core
Version:
React MVI micro framework.
169 lines (168 loc) • 4.24 kB
JavaScript
;
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;