UNPKG

@bigfishtv/cockpit

Version:

64 lines (56 loc) 2.26 kB
import Immutable from 'immutable'; import { isArray } from './typeUtils'; import _get from 'lodash/get'; /** * 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} */ export 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 (!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 (isArray(field)) field = field.join('.'); if (_get(oldValue, field) !== _get(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} */ export 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} */ export function getDataHash(data) { return Immutable.fromJS(data).hashCode().toString(); }