UNPKG

@alexkuz/react-json-tree

Version:

React JSON Viewer Component, Extracted from redux-devtools

93 lines (71 loc) 2.75 kB
'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); exports.default = JSONArrayNode; 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) { itemString = data.length + ' item' + (data.length !== 1 ? 's' : ''); } return getItemString('Array', 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 = []; data.forEach(function (value, 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: value, valueRenderer: valueRenderer, allExpanded: allExpanded }); if (node !== false) { childNodes.push(node); } }); return childNodes; } // Configures <JSONNestedNode> to render an Array function JSONArrayNode(_ref3) { var props = (0, _objectWithoutProperties3.default)(_ref3, []); return _react2.default.createElement(_JSONNestedNode2.default, (0, _extends3.default)({}, props, { getChildNodes: getChildNodes, nodeType: 'Array', nodeTypeIndicator: '[]', renderItemString: renderItemString })); }