react-application-core
Version:
A react-based application core for the business applications.
63 lines • 2.42 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CloneUtils = exports.cloneReactNodes = void 0;
var React = require("react");
var R = require("ramda");
var definitions_interface_1 = require("../definitions.interface");
var calc_1 = require("./calc");
var cond_1 = require("./cond");
var type_1 = require("./type");
var uuid_1 = require("./uuid");
/**
* @stable [29.08.2020]
* @param entity
*/
var shallowClone = function (entity) { return cond_1.ConditionUtils.ifNotNilThanValue(entity, function () { return (__assign({}, entity)); }, definitions_interface_1.UNDEF_SYMBOL); };
/**
* @stable [29.08.2020]
* @param o
*/
var clone = function (o) { return R.clone(o); };
exports.cloneReactNodes = function (component, mergedProps, mergePropsPredicate, renderPredicate) {
return React.Children.map(component.props.children, function (child) {
if (R.isNil(child)) {
return null;
}
else if (type_1.TypeUtils.isPrimitive(child)) {
return child;
}
else {
var reactChild = child;
var ref = reactChild.ref || uuid_1.UuidUtils.uuid();
var canMergeProps = mergePropsPredicate(reactChild);
var canRender = renderPredicate ? renderPredicate(reactChild) : true;
if (!R.isNil(canRender) && !canRender) {
return null;
}
return React.cloneElement(reactChild, __assign(__assign({}, (canMergeProps && __assign({ ref: ref }, calc_1.CalcUtils.calc(mergedProps, reactChild)))), { children: exports.cloneReactNodes(reactChild, mergedProps, mergePropsPredicate, renderPredicate) }));
}
});
};
/**
* @stable [18.07.2020]
*/
var CloneUtils = /** @class */ (function () {
function CloneUtils() {
}
CloneUtils.clone = clone;
CloneUtils.shallowClone = shallowClone;
return CloneUtils;
}());
exports.CloneUtils = CloneUtils;
//# sourceMappingURL=clone.js.map