UNPKG

@uiw/react-json-view

Version:
111 lines 3.46 kB
import _extends from "@babel/runtime/helpers/extends"; import { KayName } from "./KeyValues.js"; import { useExpandsStore, useExpandsDispatch } from "../store/Expands.js"; import { useStore } from "../store.js"; import { Copied } from "./Copied.js"; import { CountInfoExtraComps } from "../section/CountInfoExtra.js"; import { CountInfoComp } from "../section/CountInfo.js"; import { Arrow, BracketsOpen, BracketsClose } from "../symbol/index.js"; import { EllipsisComp } from "../section/Ellipsis.js"; import { SetComp, MapComp } from "../types/index.js"; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; export var NestedOpen = props => { var _expands$expandKey; var { keyName, expandKey, keys = [], initialValue, value, parentValue, level } = props; var expands = useExpandsStore(); var dispatchExpands = useExpandsDispatch(); var { onExpand, collapsed, shouldExpandNodeInitially } = useStore(); var isArray = Array.isArray(value); var isMySet = value instanceof Set; var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false; var isObject = typeof value === 'object'; var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : defaultExpanded; var shouldExpand = shouldExpandNodeInitially && shouldExpandNodeInitially(!isExpanded, { value, keys, level }); if (expands[expandKey] === undefined && shouldExpandNodeInitially && !shouldExpand) { isExpanded = !shouldExpand; } var click = () => { var opt = { expand: !isExpanded, value, keyid: expandKey, keyName }; onExpand && onExpand(opt); dispatchExpands({ [expandKey]: opt.expand }); }; var style = { display: 'inline-flex', alignItems: 'center' }; var arrowStyle = { transform: "rotate(" + (!isExpanded ? '0' : '-90') + "deg)", transition: 'all 0.3s' }; var len = Object.keys(value).length; var showArrow = len !== 0 && (isArray || isMySet || isObject); var reset = { style }; if (showArrow) { reset.onClick = click; } var compProps = { keyName, value, keys, parentValue }; return /*#__PURE__*/_jsxs("span", _extends({}, reset, { children: [showArrow && /*#__PURE__*/_jsx(Arrow, _extends({ style: arrowStyle, expandKey: expandKey }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/_jsx(KayName, _extends({}, compProps)), /*#__PURE__*/_jsx(SetComp, { value: initialValue, keyName: keyName }), /*#__PURE__*/_jsx(MapComp, { value: initialValue, keyName: keyName }), /*#__PURE__*/_jsx(BracketsOpen, _extends({ isBrackets: isArray || isMySet }, compProps)), /*#__PURE__*/_jsx(EllipsisComp, { keyName: keyName, value: value, isExpanded: isExpanded }), /*#__PURE__*/_jsx(BracketsClose, _extends({ isVisiable: isExpanded || !showArrow, isBrackets: isArray || isMySet }, compProps)), /*#__PURE__*/_jsx(CountInfoComp, { value: value, keyName: keyName }), /*#__PURE__*/_jsx(CountInfoExtraComps, { value: value, keyName: keyName }), /*#__PURE__*/_jsx(Copied, { keyName: keyName, value: value, expandKey: expandKey, parentValue: parentValue, keys: keys })] })); }; NestedOpen.displayName = 'JVR.NestedOpen';