@bigfishtv/cockpit
Version:
79 lines (64 loc) • 2.68 kB
JavaScript
;
exports.__esModule = true;
exports.valueChanged = valueChanged;
exports.formValueChanged = formValueChanged;
exports.getDataHash = getDataHash;
var _immutable = require('immutable');
var _immutable2 = _interopRequireDefault(_immutable);
var _typeUtils = require('./typeUtils');
var _get2 = require('lodash/get');
var _get3 = _interopRequireDefault(_get2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Takes two objects and a list of paths and checks if any have changed
* @param {Object} oldValue
* @param {Object} newValue
* @param {Array} fields Either array of fields or string for a single field
* @return {Boolean}
*/
function valueChanged() {
var oldValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var newValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var fields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
if (!(0, _typeUtils.isArray)(fields)) fields = [fields];
for (var _iterator = fields, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var field = _ref;
if ((0, _typeUtils.isArray)(field)) field = field.join('.');
if ((0, _get3.default)(oldValue, field) !== (0, _get3.default)(newValue, field)) {
return true;
}
}
return false;
}
/**
* Takes two form values (or prevProps and props) and checks for any differences in provided field list
* @param {Object} oldFormValue Either formValue or props object containing formValue
* @param {Object} newFormValue Either formValue or props object containing formValue
* @param {Array} fields Either array of fields or string for a single field
* @return {Boolean}
*/
function formValueChanged(oldFormValue, newFormValue) {
var fields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
if ('formValue' in oldFormValue) oldFormValue = oldFormValue.formValue;
if ('formValue' in newFormValue) newFormValue = newFormValue.formValue;
oldFormValue = oldFormValue.value || {};
newFormValue = newFormValue.value || {};
return valueChanged(oldFormValue, newFormValue, fields);
}
/**
* Take any array or object and get a hash string for it
* @param {Object|Array} data
* @returns {String}
*/
function getDataHash(data) {
return _immutable2.default.fromJS(data).hashCode().toString();
}