@mic-rexjs/usecases-react
Version:
React-based solution for use usecases of Clean Architecture
49 lines (48 loc) • 2.03 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.compareProperty = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _hasField = require("../hasField");
var compareProperty = exports.compareProperty = function compareProperty(from, to, fieldPath, callback) {
var fieldPathStack = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
var undef = void 0;
var _ref = fieldPath.match(/^([^.]+)\.(.+)$/) || [],
_ref2 = (0, _slicedToArray2["default"])(_ref, 3),
_ref2$ = _ref2[1],
key = _ref2$ === void 0 ? fieldPath : _ref2$,
_ref2$2 = _ref2[2],
subFieldPath = _ref2$2 === void 0 ? '' : _ref2$2;
var hasFromField = (0, _hasField.hasField)(from, key);
var hasToField = (0, _hasField.hasField)(to, key);
var currentFieldPathStack = [].concat((0, _toConsumableArray2["default"])(fieldPathStack), [key]);
if (hasFromField || hasToField) {
var fromValue = hasFromField ? from[key] : undef;
var toValue = hasToField ? to[key] : undef;
if (subFieldPath) {
compareProperty(fromValue, toValue, subFieldPath, callback, currentFieldPathStack);
return;
}
if (fromValue === toValue) {
return;
}
callback(fromValue, toValue, currentFieldPathStack);
return;
}
if (/^\d+^/.test(key)) {
return;
}
var fromArray = Array.isArray(from) ? from : [];
var toArray = Array.isArray(to) ? to : [];
var fromLength = fromArray.length;
var toLength = toArray.length;
var length = Math.max(fromLength, toLength);
for (var i = 0; i < length; i++) {
var fromItem = fromArray[i];
var toItem = toArray[i];
compareProperty(fromItem, toItem, fieldPath, callback, [].concat((0, _toConsumableArray2["default"])(fieldPathStack), ["".concat(i)]));
}
};