'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = diffLogger; var _deepDiff = require('deep-diff'); var _deepDiff2 = _interopRequireDefault(_deepDiff); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } // https://github.com/flitbit/diff#differences var dictionary = { 'E': { color: '#2196F3', text: 'CHANGED:' }, 'N': { color: '#4CAF50', text: 'ADDED:' }, 'D': { color: '#F44336', text: 'DELETED:' }, 'A': { color: '#2196F3', text: 'ARRAY:' } }; function style(kind) { return 'color: ' + dictionary[kind].color + '; font-weight: bold'; } function render(diff) { var kind = diff.kind, path = diff.path, lhs = diff.lhs, rhs = diff.rhs, index = diff.index, item = diff.item; switch (kind) { case 'E': return [path.join('.'), lhs, '\u2192', rhs]; case 'N': return [path.join('.'), rhs]; case 'D': return [path.join('.')]; case 'A': return [path.join('.') + '[' + index + ']', item]; default: return []; } } function diffLogger(prevState, newState, logger, isCollapsed) { var diff = (0, _deepDiff2.default)(prevState, newState); try { if (isCollapsed) { logger.groupCollapsed('diff'); } else { logger.group('diff'); } } catch (e) { logger.log('diff'); } if (diff) { diff.forEach(function (elem) { var kind = elem.kind; var output = render(elem); logger.log.apply(logger, ['%c ' + dictionary[kind].text, style(kind)].concat(_toConsumableArray(output))); }); } else { logger.log('\u2014\u2014 no diff \u2014\u2014'); } try { logger.groupEnd(); } catch (e) { logger.log('\u2014\u2014 diff end \u2014\u2014 '); } } module.exports = exports['default'];