@uiw/react-json-view
Version:
JSON viewer for react.
116 lines (115 loc) • 4.64 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NestedOpen = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _KeyValues = require("./KeyValues");
var _Expands = require("../store/Expands");
var _store = require("../store");
var _Copied = require("./Copied");
var _CountInfoExtra = require("../section/CountInfoExtra");
var _CountInfo = require("../section/CountInfo");
var _symbol = require("../symbol/");
var _Ellipsis = require("../section/Ellipsis");
var _types = require("../types/");
var _jsxRuntime = require("react/jsx-runtime");
var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
var _expands$expandKey;
var keyName = props.keyName,
expandKey = props.expandKey,
_props$keys = props.keys,
keys = _props$keys === void 0 ? [] : _props$keys,
initialValue = props.initialValue,
value = props.value,
parentValue = props.parentValue,
level = props.level;
var expands = (0, _Expands.useExpandsStore)();
var dispatchExpands = (0, _Expands.useExpandsDispatch)();
var _useStore = (0, _store.useStore)(),
onExpand = _useStore.onExpand,
collapsed = _useStore.collapsed,
shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
var isArray = Array.isArray(value);
var isMySet = value instanceof Set;
var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
var isObject = (0, _typeof2["default"])(value) === 'object';
var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : defaultExpanded;
var shouldExpand = shouldExpandNodeInitially && shouldExpandNodeInitially(!isExpanded, {
value: value,
keys: keys,
level: level
});
if (expands[expandKey] === undefined && shouldExpandNodeInitially && !shouldExpand) {
isExpanded = !shouldExpand;
}
var click = function click() {
var opt = {
expand: !isExpanded,
value: value,
keyid: expandKey,
keyName: keyName
};
onExpand && onExpand(opt);
dispatchExpands((0, _defineProperty2["default"])({}, expandKey, opt.expand));
};
var style = {
display: 'inline-flex',
alignItems: 'center'
};
var arrowStyle = {
transform: "rotate(".concat(!isExpanded ? '0' : '-90', "deg)"),
transition: 'all 0.3s'
};
var len = Object.keys(value).length;
var showArrow = len !== 0 && (isArray || isMySet || isObject);
var reset = {
style: style
};
if (showArrow) {
reset.onClick = click;
}
var compProps = {
keyName: keyName,
value: value,
keys: keys,
parentValue: parentValue
};
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, (0, _objectSpread2["default"])({
style: arrowStyle,
expandKey: expandKey
}, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, (0, _objectSpread2["default"])({}, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.SetComp, {
value: initialValue,
keyName: keyName
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.MapComp, {
value: initialValue,
keyName: keyName
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, (0, _objectSpread2["default"])({
isBrackets: isArray || isMySet
}, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
keyName: keyName,
value: value,
isExpanded: isExpanded
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, (0, _objectSpread2["default"])({
isVisiable: isExpanded || !showArrow,
isBrackets: isArray || isMySet
}, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
value: value,
keyName: keyName
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfoExtra.CountInfoExtraComps, {
value: value,
keyName: keyName
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Copied.Copied, {
keyName: keyName,
value: value,
expandKey: expandKey,
parentValue: parentValue,
keys: keys
})]
}));
};
NestedOpen.displayName = 'JVR.NestedOpen';