1 | import _extends from "@babel/runtime/helpers/extends";
|
2 | import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3 | import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
4 | var _excluded = ["getItemString", "keyPath", "labelRenderer", "styling", "value", "valueRenderer", "isCustomNode"];
|
5 |
|
6 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
7 |
|
8 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
9 |
|
10 | import React from 'react';
|
11 | import PropTypes from 'prop-types';
|
12 | import objType from './objType';
|
13 | import JSONObjectNode from './JSONObjectNode';
|
14 | import JSONArrayNode from './JSONArrayNode';
|
15 | import JSONIterableNode from './JSONIterableNode';
|
16 | import JSONValueNode from './JSONValueNode';
|
17 |
|
18 | var JSONNode = function JSONNode(_ref) {
|
19 | var getItemString = _ref.getItemString,
|
20 | keyPath = _ref.keyPath,
|
21 | labelRenderer = _ref.labelRenderer,
|
22 | styling = _ref.styling,
|
23 | value = _ref.value,
|
24 | valueRenderer = _ref.valueRenderer,
|
25 | isCustomNode = _ref.isCustomNode,
|
26 | rest = _objectWithoutProperties(_ref, _excluded);
|
27 |
|
28 | var nodeType = isCustomNode(value) ? 'Custom' : objType(value);
|
29 | var simpleNodeProps = {
|
30 | getItemString: getItemString,
|
31 | key: keyPath[0],
|
32 | keyPath: keyPath,
|
33 | labelRenderer: labelRenderer,
|
34 | nodeType: nodeType,
|
35 | styling: styling,
|
36 | value: value,
|
37 | valueRenderer: valueRenderer
|
38 | };
|
39 |
|
40 | var nestedNodeProps = _objectSpread(_objectSpread(_objectSpread({}, rest), simpleNodeProps), {}, {
|
41 | data: value,
|
42 | isCustomNode: isCustomNode
|
43 | });
|
44 |
|
45 | switch (nodeType) {
|
46 | case 'Object':
|
47 | case 'Error':
|
48 | case 'WeakMap':
|
49 | case 'WeakSet':
|
50 | return React.createElement(JSONObjectNode, nestedNodeProps);
|
51 |
|
52 | case 'Array':
|
53 | return React.createElement(JSONArrayNode, nestedNodeProps);
|
54 |
|
55 | case 'Iterable':
|
56 | case 'Map':
|
57 | case 'Set':
|
58 | return React.createElement(JSONIterableNode, nestedNodeProps);
|
59 |
|
60 | case 'String':
|
61 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
62 | valueGetter: function valueGetter(raw) {
|
63 | return "\"".concat(raw, "\"");
|
64 | }
|
65 | }));
|
66 |
|
67 | case 'Number':
|
68 | return React.createElement(JSONValueNode, simpleNodeProps);
|
69 |
|
70 | case 'Boolean':
|
71 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
72 | valueGetter: function valueGetter(raw) {
|
73 | return raw ? 'true' : 'false';
|
74 | }
|
75 | }));
|
76 |
|
77 | case 'Date':
|
78 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
79 | valueGetter: function valueGetter(raw) {
|
80 | return raw.toISOString();
|
81 | }
|
82 | }));
|
83 |
|
84 | case 'Null':
|
85 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
86 | valueGetter: function valueGetter() {
|
87 | return 'null';
|
88 | }
|
89 | }));
|
90 |
|
91 | case 'Undefined':
|
92 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
93 | valueGetter: function valueGetter() {
|
94 | return 'undefined';
|
95 | }
|
96 | }));
|
97 |
|
98 | case 'Function':
|
99 | case 'Symbol':
|
100 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
101 | valueGetter: function valueGetter(raw) {
|
102 | return raw.toString();
|
103 | }
|
104 | }));
|
105 |
|
106 | case 'Custom':
|
107 | return React.createElement(JSONValueNode, simpleNodeProps);
|
108 |
|
109 | default:
|
110 | return React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {
|
111 | valueGetter: function valueGetter() {
|
112 | return "<".concat(nodeType, ">");
|
113 | }
|
114 | }));
|
115 | }
|
116 | };
|
117 |
|
118 | JSONNode.propTypes = {
|
119 | getItemString: PropTypes.func.isRequired,
|
120 | keyPath: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired).isRequired,
|
121 | labelRenderer: PropTypes.func.isRequired,
|
122 | styling: PropTypes.func.isRequired,
|
123 | value: PropTypes.any,
|
124 | valueRenderer: PropTypes.func.isRequired,
|
125 | isCustomNode: PropTypes.func.isRequired
|
126 | };
|
127 | export default JSONNode; |
\ | No newline at end of file |