1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = void 0;
|
9 |
|
10 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
11 |
|
12 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
13 |
|
14 | var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
15 |
|
16 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
17 |
|
18 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
19 |
|
20 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
21 |
|
22 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
23 |
|
24 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
25 |
|
26 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
27 |
|
28 | var _react = _interopRequireDefault(require("react"));
|
29 |
|
30 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
31 |
|
32 | var _JSONArrow = _interopRequireDefault(require("./JSONArrow"));
|
33 |
|
34 | var _getCollectionEntries = _interopRequireDefault(require("./getCollectionEntries"));
|
35 |
|
36 | var _JSONNode = _interopRequireDefault(require("./JSONNode"));
|
37 |
|
38 | var _ItemRange = _interopRequireDefault(require("./ItemRange"));
|
39 |
|
40 | 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; }
|
41 |
|
42 | 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) { (0, _defineProperty2.default)(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; }
|
43 |
|
44 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
45 |
|
46 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
47 |
|
48 | function isRange(rangeOrEntry) {
|
49 | return rangeOrEntry.to !== undefined;
|
50 | }
|
51 |
|
52 | function renderChildNodes(props, from, to) {
|
53 | var nodeType = props.nodeType,
|
54 | data = props.data,
|
55 | collectionLimit = props.collectionLimit,
|
56 | circularCache = props.circularCache,
|
57 | keyPath = props.keyPath,
|
58 | postprocessValue = props.postprocessValue,
|
59 | sortObjectKeys = props.sortObjectKeys;
|
60 | var childNodes = [];
|
61 | (0, _getCollectionEntries.default)(nodeType, data, sortObjectKeys, collectionLimit, from, to).forEach(function (entry) {
|
62 | if (isRange(entry)) {
|
63 | childNodes.push( _react.default.createElement(_ItemRange.default, (0, _extends2.default)({}, props, {
|
64 | key: "ItemRange--".concat(entry.from, "-").concat(entry.to),
|
65 | from: entry.from,
|
66 | to: entry.to,
|
67 | renderChildNodes: renderChildNodes
|
68 | })));
|
69 | } else {
|
70 | var key = entry.key,
|
71 | value = entry.value;
|
72 | var isCircular = circularCache.indexOf(value) !== -1;
|
73 | childNodes.push( _react.default.createElement(_JSONNode.default, (0, _extends2.default)({}, props, {
|
74 | postprocessValue: postprocessValue,
|
75 | collectionLimit: collectionLimit,
|
76 | key: "Node--".concat(key),
|
77 | keyPath: [key].concat((0, _toConsumableArray2.default)(keyPath)),
|
78 | value: postprocessValue(value),
|
79 | circularCache: [].concat((0, _toConsumableArray2.default)(circularCache), [value]),
|
80 | isCircular: isCircular,
|
81 | hideRoot: false
|
82 | })));
|
83 | }
|
84 | });
|
85 | return childNodes;
|
86 | }
|
87 |
|
88 | function getStateFromProps(props) {
|
89 |
|
90 | var expanded = !props.isCircular ? props.shouldExpandNode(props.keyPath, props.data, props.level) : false;
|
91 | return {
|
92 | expanded: expanded
|
93 | };
|
94 | }
|
95 |
|
96 | var JSONNestedNode = function (_React$Component) {
|
97 | (0, _inherits2.default)(JSONNestedNode, _React$Component);
|
98 |
|
99 | var _super = _createSuper(JSONNestedNode);
|
100 |
|
101 | function JSONNestedNode(props) {
|
102 | var _this;
|
103 |
|
104 | (0, _classCallCheck2.default)(this, JSONNestedNode);
|
105 | _this = _super.call(this, props);
|
106 | (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleClick", function () {
|
107 | if (_this.props.expandable) {
|
108 | _this.setState({
|
109 | expanded: !_this.state.expanded
|
110 | });
|
111 | }
|
112 | });
|
113 | _this.state = getStateFromProps(props);
|
114 | return _this;
|
115 | }
|
116 |
|
117 | (0, _createClass2.default)(JSONNestedNode, [{
|
118 | key: "UNSAFE_componentWillReceiveProps",
|
119 | value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
120 | var nextState = getStateFromProps(nextProps);
|
121 |
|
122 | if (getStateFromProps(this.props).expanded !== nextState.expanded) {
|
123 | this.setState(nextState);
|
124 | }
|
125 | }
|
126 | }, {
|
127 | key: "shouldComponentUpdate",
|
128 | value: function shouldComponentUpdate(nextProps, nextState) {
|
129 | var _this2 = this;
|
130 |
|
131 | return !!Object.keys(nextProps).find(function (key) {
|
132 | return key !== 'circularCache' && (key === 'keyPath' ? nextProps[key].join('/') !== _this2.props[key].join('/') : nextProps[key] !== _this2.props[key]);
|
133 | }) || nextState.expanded !== this.state.expanded;
|
134 | }
|
135 | }, {
|
136 | key: "render",
|
137 | value: function render() {
|
138 | var _this$props = this.props,
|
139 | getItemString = _this$props.getItemString,
|
140 | nodeTypeIndicator = _this$props.nodeTypeIndicator,
|
141 | nodeType = _this$props.nodeType,
|
142 | data = _this$props.data,
|
143 | hideRoot = _this$props.hideRoot,
|
144 | createItemString = _this$props.createItemString,
|
145 | styling = _this$props.styling,
|
146 | collectionLimit = _this$props.collectionLimit,
|
147 | keyPath = _this$props.keyPath,
|
148 | labelRenderer = _this$props.labelRenderer,
|
149 | expandable = _this$props.expandable;
|
150 | var expanded = this.state.expanded;
|
151 | var renderedChildren = expanded || hideRoot && this.props.level === 0 ? renderChildNodes(_objectSpread(_objectSpread({}, this.props), {}, {
|
152 | level: this.props.level + 1
|
153 | })) : null;
|
154 |
|
155 | var itemType = _react.default.createElement("span", styling('nestedNodeItemType', expanded), nodeTypeIndicator);
|
156 |
|
157 | var renderedItemString = getItemString(nodeType, data, itemType, createItemString(data, collectionLimit), keyPath);
|
158 | var stylingArgs = [keyPath, nodeType, expanded, expandable];
|
159 | return hideRoot ? _react.default.createElement("li", styling.apply(void 0, ['rootNode'].concat(stylingArgs)), _react.default.createElement("ul", styling.apply(void 0, ['rootNodeChildren'].concat(stylingArgs)), renderedChildren)) : _react.default.createElement("li", styling.apply(void 0, ['nestedNode'].concat(stylingArgs)), expandable && _react.default.createElement(_JSONArrow.default, {
|
160 | styling: styling,
|
161 | nodeType: nodeType,
|
162 | expanded: expanded,
|
163 | onClick: this.handleClick
|
164 | }), _react.default.createElement("label", (0, _extends2.default)({}, styling.apply(void 0, [['label', 'nestedNodeLabel']].concat(stylingArgs)), {
|
165 | onClick: this.handleClick
|
166 | }), labelRenderer.apply(void 0, stylingArgs)), _react.default.createElement("span", (0, _extends2.default)({}, styling.apply(void 0, ['nestedNodeItemString'].concat(stylingArgs)), {
|
167 | onClick: this.handleClick
|
168 | }), renderedItemString), _react.default.createElement("ul", styling.apply(void 0, ['nestedNodeChildren'].concat(stylingArgs)), renderedChildren));
|
169 | }
|
170 | }]);
|
171 | return JSONNestedNode;
|
172 | }(_react.default.Component);
|
173 |
|
174 | exports.default = JSONNestedNode;
|
175 | (0, _defineProperty2.default)(JSONNestedNode, "propTypes", {
|
176 | getItemString: _propTypes.default.func.isRequired,
|
177 | nodeTypeIndicator: _propTypes.default.any,
|
178 | nodeType: _propTypes.default.string.isRequired,
|
179 | data: _propTypes.default.any,
|
180 | hideRoot: _propTypes.default.bool.isRequired,
|
181 | createItemString: _propTypes.default.func.isRequired,
|
182 | styling: _propTypes.default.func.isRequired,
|
183 | collectionLimit: _propTypes.default.number,
|
184 | keyPath: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])).isRequired,
|
185 | labelRenderer: _propTypes.default.func.isRequired,
|
186 | shouldExpandNode: _propTypes.default.func,
|
187 | level: _propTypes.default.number.isRequired,
|
188 | sortObjectKeys: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.bool]),
|
189 | isCircular: _propTypes.default.bool,
|
190 | expandable: _propTypes.default.bool
|
191 | });
|
192 | (0, _defineProperty2.default)(JSONNestedNode, "defaultProps", {
|
193 | data: [],
|
194 | circularCache: [],
|
195 | level: 0,
|
196 | expandable: true
|
197 | }); |
\ | No newline at end of file |