UNPKG

@bigfishtv/cockpit

Version:

79 lines (64 loc) 2.68 kB
'use strict'; 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(); }