UNPKG

react-application-core

Version:

A react-based application core for the business applications.

63 lines 2.42 kB
"use strict"; 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