@alexkuz/react-json-tree
Version:
React JSON Viewer Component, Extracted from redux-devtools
107 lines (86 loc) • 3.97 kB
JavaScript
'use strict';
exports.__esModule = true;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.default = function (_ref) {
var getItemString = _ref.getItemString;
var _ref$initialExpanded = _ref.initialExpanded;
var initialExpanded = _ref$initialExpanded === undefined ? false : _ref$initialExpanded;
var allExpanded = _ref.allExpanded;
var keyPath = _ref.keyPath;
var labelRenderer = _ref.labelRenderer;
var previousData = _ref.previousData;
var styles = _ref.styles;
var theme = _ref.theme;
var value = _ref.value;
var valueRenderer = _ref.valueRenderer;
var nodeType = (0, _objType2.default)(value);
var simpleNodeProps = {
getItemString: getItemString,
initialExpanded: initialExpanded,
key: keyPath[0],
keyPath: keyPath,
labelRenderer: labelRenderer,
nodeType: nodeType,
previousData: previousData,
styles: styles,
theme: theme,
value: value,
valueRenderer: valueRenderer
};
var nestedNodeProps = (0, _extends3.default)({}, simpleNodeProps, {
data: value,
initialExpanded: initialExpanded,
allExpanded: allExpanded,
keyPath: keyPath
});
switch (nodeType) {
case 'Object':
return _react2.default.createElement(_JSONObjectNode2.default, nestedNodeProps);
case 'Array':
return _react2.default.createElement(_JSONArrayNode2.default, nestedNodeProps);
case 'Iterable':
return _react2.default.createElement(_JSONIterableNode2.default, nestedNodeProps);
case 'String':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base0B, valueGetter: function valueGetter(raw) {
return '"' + raw + '"';
} }));
case 'Number':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base09 }));
case 'Boolean':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base09, valueGetter: function valueGetter(raw) {
return raw ? 'true' : 'false';
} }));
case 'Date':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base0B, valueGetter: function valueGetter(raw) {
return raw.toISOString();
} }));
case 'Null':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base08, valueGetter: function valueGetter() {
return 'null';
} }));
case 'Undefined':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base08, valueGetter: function valueGetter() {
return 'undefined';
} }));
case 'Function':
return _react2.default.createElement(_JSONValueNode2.default, (0, _extends3.default)({}, simpleNodeProps, { valueColor: theme.base08, valueGetter: function valueGetter(raw) {
return raw.toString();
} }));
default:
return false;
}
};
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _objType = require('./obj-type');
var _objType2 = _interopRequireDefault(_objType);
var _JSONObjectNode = require('./JSONObjectNode');
var _JSONObjectNode2 = _interopRequireDefault(_JSONObjectNode);
var _JSONArrayNode = require('./JSONArrayNode');
var _JSONArrayNode2 = _interopRequireDefault(_JSONArrayNode);
var _JSONIterableNode = require('./JSONIterableNode');
var _JSONIterableNode2 = _interopRequireDefault(_JSONIterableNode);
var _JSONValueNode = require('./JSONValueNode');
var _JSONValueNode2 = _interopRequireDefault(_JSONValueNode);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }