UNPKG

@alexkuz/react-json-tree

Version:

React JSON Viewer Component, Extracted from redux-devtools

143 lines (111 loc) 4.12 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); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _isSafeInteger = require('babel-runtime/core-js/number/is-safe-integer'); var _isSafeInteger2 = _interopRequireDefault(_isSafeInteger); exports.default = function (_ref5) { var props = (0, _objectWithoutProperties3.default)(_ref5, []); return _react2.default.createElement(_JSONNestedNode2.default, (0, _extends3.default)({}, props, { getChildNodes: getChildNodes, nodeType: 'Iterable', 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 count = 0; if ((0, _isSafeInteger2.default)(data.size)) { count = data.size; } else { for (var _iterator = data, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { var _ref2; if (_isArray) { if (_i >= _iterator.length) break; _ref2 = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref2 = _i.value; } var entry = _ref2; // eslint-disable-line no-unused-vars count += 1; } } itemString = count + ' entr' + (count !== 1 ? 'ies' : 'y'); } return getItemString('Iterable', 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(_ref3) { var data = _ref3.data; var getItemString = _ref3.getItemString; var labelRenderer = _ref3.labelRenderer; var previousData = _ref3.previousData; var styles = _ref3.styles; var theme = _ref3.theme; var valueRenderer = _ref3.valueRenderer; var allExpanded = _ref3.allExpanded; var keyPath = _ref3.keyPath; var childNodes = []; for (var _iterator2 = data, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) { var _ref4; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref4 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref4 = _i2.value; } var entry = _ref4; var key = null; var value = null; if (Array.isArray(entry)) { key = entry[0]; value = entry[1]; } else { key = childNodes.length; value = entry; } 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, styles: styles, theme: theme, value: value, valueRenderer: valueRenderer, allExpanded: allExpanded }); if (node !== false) { childNodes.push(node); } } return childNodes; } // Configures <JSONNestedNode> to render an iterable