@alexkuz/react-json-tree
Version:
React JSON Viewer Component, Extracted from redux-devtools
105 lines (78 loc) • 3.17 kB
JavaScript
'use strict';
exports.__esModule = true;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
exports.getChildNodes = getChildNodes;
exports.default = function (_ref3) {
var props = (0, _objectWithoutProperties3.default)(_ref3, []);
return _react2.default.createElement(_JSONNestedNode2.default, (0, _extends3.default)({}, props, {
getChildNodes: getChildNodes,
nodeType: 'Object',
nodeTypeIndicator: '{}',
renderItemString: renderItemString
}));
};
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _JSONNestedNode = require('./JSONNestedNode');
var _JSONNestedNode2 = _interopRequireDefault(_JSONNestedNode);
var _grabNode = require('./grab-node');
var _grabNode2 = _interopRequireDefault(_grabNode);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Returns the "n Items" string for this node, generating and caching it if it hasn't been created yet.
function renderItemString(_ref) {
var data = _ref.data;
var getItemString = _ref.getItemString;
var itemString = _ref.itemString;
var itemType = _ref.itemType;
if (!itemString) {
var len = (0, _keys2.default)(data).length;
itemString = len + ' key' + (len !== 1 ? 's' : '');
}
return getItemString('Object', data, itemType, itemString);
}
// Returns the child nodes for each entry in iterable.
// If we have generated them previously we return from cache; otherwise we create them.
function getChildNodes(_ref2) {
var data = _ref2.data;
var getItemString = _ref2.getItemString;
var labelRenderer = _ref2.labelRenderer;
var previousData = _ref2.previousData;
var styles = _ref2.styles;
var theme = _ref2.theme;
var valueRenderer = _ref2.valueRenderer;
var allExpanded = _ref2.allExpanded;
var keyPath = _ref2.keyPath;
var childNodes = [];
for (var key in data) {
if ((0, _getPrototypeOf2.default)(data) === null || data.hasOwnProperty(key)) {
var previousDataValue = undefined;
if (typeof previousData !== 'undefined' && previousData !== null) {
previousDataValue = previousData[key];
}
var node = (0, _grabNode2.default)({
getItemString: getItemString,
keyPath: [key].concat(keyPath),
labelRenderer: labelRenderer,
previousData: previousDataValue,
renderItemString: renderItemString,
styles: styles,
theme: theme,
value: data[key],
valueRenderer: valueRenderer,
allExpanded: allExpanded
});
if (node !== false) {
childNodes.push(node);
}
}
}
return childNodes;
}
// Configures <JSONNestedNode> to render an Object