@uiw/react-json-view 2.0.0-alpha.27 → 2.0.0-alpha.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -127,7 +127,6 @@ export default function Demo() {
127
127
  }
128
128
  ```
129
129
 
130
-
131
130
  Example of custom `vscode` theme styles:
132
131
 
133
132
  ```tsx mdx:preview
@@ -682,6 +681,74 @@ export default function Demo() {
682
681
 
683
682
  This feature can be disabled with `highlightUpdates={false}`, and the default color can be changed with `--w-rjv-update-color`.
684
683
 
684
+ ## Do not display array index
685
+
686
+ ```tsx mdx:preview
687
+ import React, { Fragment } from 'react';
688
+ import JsonView from '@uiw/react-json-view';
689
+
690
+ export default function Demo() {
691
+ const value = { data: ["123", 23] }
692
+ return (
693
+ <JsonView value={value} style={{ '--w-rjv-background-color': '#ffffff' }}>
694
+ <JsonView.Colon render={(props, { parentValue, value, keyName }) => {
695
+ if (Array.isArray(parentValue) && props.children == ":") {
696
+ return <span />
697
+ }
698
+ return <span {...props} />
699
+ }}/>
700
+ <JsonView.KeyName
701
+ render={({ ...props }, { type, parentValue, value, keyName }) => {
702
+ if (Array.isArray(parentValue) && Number.isFinite( props.children)) {
703
+ return <span />
704
+ }
705
+ return <span {...props} />
706
+ }}
707
+ />
708
+ </JsonView>
709
+ )
710
+ }
711
+ ```
712
+
713
+ ## Default Collapse/Expand
714
+
715
+ ```tsx mdx:preview
716
+ import React from 'react';
717
+ import JsonView from '@uiw/react-json-view';
718
+ const object = {
719
+ string: 'Lorem ipsum dolor sit amet',
720
+ integer: 42,
721
+ float: 114.514,
722
+ object: {
723
+ 'first-child': true,
724
+ 'second-child': false,
725
+ 'last-child': null,
726
+ },
727
+ nestedArray: [
728
+ [1, 2],
729
+ [3, 4],
730
+ ],
731
+ }
732
+ export default function Demo() {
733
+ return (
734
+ <JsonView
735
+ value={object}
736
+ collapsed={2}
737
+ shouldExpandNodeInitially={(isExpanded, { value, keys, level }) => {
738
+ if (keys.length > 0 && keys[0] == "object") {
739
+ return true
740
+ }
741
+ return isExpanded
742
+ }}
743
+ style={{
744
+ '--w-rjv-background-color': '#ffffff',
745
+ }}
746
+ >
747
+ </JsonView>
748
+ )
749
+ }
750
+ ```
751
+
685
752
  ## Modify Icon Style
686
753
 
687
754
  Use built-in default icons.
@@ -812,17 +879,17 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
812
879
  enableClipboard?: boolean;
813
880
  /** When set to true, all nodes will be collapsed by default. Use an integer value to collapse at a particular depth. @default false */
814
881
  collapsed?: boolean | number;
882
+ /** Determine whether the node should be expanded on the first render, or you can use collapsed to control the level of expansion (by default, the root is expanded). */
883
+ shouldExpandNodeInitially?: (
884
+ isExpanded: boolean,
885
+ props: { value?: T; keys: (number | string)[]; level: number },
886
+ ) => boolean;
815
887
  /** Whether to highlight updates. @default true */
816
888
  highlightUpdates?: boolean;
817
889
  /** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
818
890
  shortenTextAfterLength?: number;
819
891
  /** Callback function for when a treeNode is expanded or collapsed */
820
- onExpand?: (props: {
821
- expand: boolean;
822
- value?: T;
823
- keyid: string;
824
- keyName?: string | number;
825
- }) => void;
892
+ onExpand?: (props: { expand: boolean; value?: T; keyid: string; keyName?: string | number }) => void;
826
893
  /** Fires event when you copy */
827
894
  onCopied?: (text: string, value?: T) => void;
828
895
  }
package/cjs/Container.js CHANGED
@@ -63,7 +63,8 @@ var Container = exports.Container = /*#__PURE__*/(0, _react.forwardRef)(function
63
63
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_NestedClose.NestedClose, {
64
64
  expandKey: subkeyid,
65
65
  value: value,
66
- level: level
66
+ level: level,
67
+ keys: keys
67
68
  })]
68
69
  }));
69
70
  });
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.KeyValuesItem = exports.KeyValues = exports.KayName = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
  var _react = require("react");
@@ -35,9 +35,18 @@ var KeyValues = exports.KeyValues = function KeyValues(props) {
35
35
  var _useStore = (0, _store.useStore)(),
36
36
  objectSortKeys = _useStore.objectSortKeys,
37
37
  indentWidth = _useStore.indentWidth,
38
- collapsed = _useStore.collapsed;
38
+ collapsed = _useStore.collapsed,
39
+ shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
39
40
  var isMyArray = Array.isArray(value);
40
- var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
41
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
42
+ var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : defaultExpanded;
43
+ if (expands[expandKey] === undefined && shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
44
+ value: value,
45
+ keys: keys,
46
+ level: level
47
+ })) {
48
+ return null;
49
+ }
41
50
  if (isExpanded) {
42
51
  return null;
43
52
  }
@@ -99,23 +108,25 @@ var KayName = exports.KayName = function KayName(props) {
99
108
  highlightUpdates: highlightUpdates,
100
109
  highlightContainer: highlightContainer
101
110
  });
111
+ var compProps = {
112
+ keyName: keyName,
113
+ value: value,
114
+ keys: keys,
115
+ parentValue: parentValue
116
+ };
102
117
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.Fragment, {
103
118
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
104
119
  ref: highlightContainer,
105
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
120
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
106
121
  isNumber: isNumber,
107
122
  "data-placement": "left"
108
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, {
109
- keyName: keyName,
110
- value: value,
111
- keys: keys,
112
- parentValue: parentValue,
123
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, compProps), {}, {
113
124
  children: keyName
114
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
125
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
115
126
  isNumber: isNumber,
116
127
  "data-placement": "right"
117
- })]
118
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, {})]
128
+ }, compProps))]
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, (0, _objectSpread2["default"])({}, compProps))]
119
130
  });
120
131
  };
121
132
  KayName.displayName = 'JVR.KayName';
@@ -2,6 +2,7 @@ interface NestedCloseProps<T extends object> {
2
2
  value?: T;
3
3
  expandKey: string;
4
4
  level: number;
5
+ keys?: (string | number)[];
5
6
  }
6
7
  export declare const NestedClose: {
7
8
  <T extends object>(props: NestedCloseProps<T>): import("react/jsx-runtime").JSX.Element | null;
@@ -12,14 +12,25 @@ var NestedClose = exports.NestedClose = function NestedClose(props) {
12
12
  var _expands$expandKey;
13
13
  var value = props.value,
14
14
  expandKey = props.expandKey,
15
- level = props.level;
15
+ level = props.level,
16
+ _props$keys = props.keys,
17
+ keys = _props$keys === void 0 ? [] : _props$keys;
16
18
  var expands = (0, _Expands.useExpandsStore)();
17
19
  var isArray = Array.isArray(value);
18
20
  var _useStore = (0, _store.useStore)(),
19
- collapsed = _useStore.collapsed;
21
+ collapsed = _useStore.collapsed,
22
+ shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
20
23
  var isMySet = value instanceof Set;
21
- var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
24
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
25
+ var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : defaultExpanded;
22
26
  var len = Object.keys(value).length;
27
+ if (expands[expandKey] === undefined && shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
28
+ value: value,
29
+ keys: keys,
30
+ level: level
31
+ })) {
32
+ return null;
33
+ }
23
34
  if (isExpanded || len === 0) {
24
35
  return null;
25
36
  }
@@ -22,7 +22,8 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
22
22
  var _expands$expandKey;
23
23
  var keyName = props.keyName,
24
24
  expandKey = props.expandKey,
25
- keys = props.keys,
25
+ _props$keys = props.keys,
26
+ keys = _props$keys === void 0 ? [] : _props$keys,
26
27
  initialValue = props.initialValue,
27
28
  value = props.value,
28
29
  parentValue = props.parentValue,
@@ -31,11 +32,21 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
31
32
  var dispatchExpands = (0, _Expands.useExpandsDispatch)();
32
33
  var _useStore = (0, _store.useStore)(),
33
34
  onExpand = _useStore.onExpand,
34
- collapsed = _useStore.collapsed;
35
+ collapsed = _useStore.collapsed,
36
+ shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
35
37
  var isArray = Array.isArray(value);
36
38
  var isMySet = value instanceof Set;
37
- var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
39
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
38
40
  var isObject = (0, _typeof2["default"])(value) === 'object';
41
+ var isExpanded = (_expands$expandKey = expands[expandKey]) !== null && _expands$expandKey !== void 0 ? _expands$expandKey : defaultExpanded;
42
+ var shouldExpand = shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
43
+ value: value,
44
+ keys: keys,
45
+ level: level
46
+ });
47
+ if (expands[expandKey] === undefined && shouldExpand !== undefined) {
48
+ isExpanded = shouldExpand;
49
+ }
39
50
  var click = function click() {
40
51
  var opt = {
41
52
  expand: !isExpanded,
@@ -62,11 +73,17 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
62
73
  if (showArrow) {
63
74
  reset.onClick = click;
64
75
  }
76
+ var compProps = {
77
+ keyName: keyName,
78
+ value: value,
79
+ keys: keys,
80
+ parentValue: parentValue
81
+ };
65
82
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
66
- children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, {
83
+ children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, (0, _objectSpread2["default"])({
67
84
  style: arrowStyle,
68
85
  expandKey: expandKey
69
- }), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, {
86
+ }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, {
70
87
  keyName: keyName
71
88
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.SetComp, {
72
89
  value: initialValue,
@@ -74,16 +91,16 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
74
91
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.MapComp, {
75
92
  value: initialValue,
76
93
  keyName: keyName
77
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, {
94
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, (0, _objectSpread2["default"])({
78
95
  isBrackets: isArray || isMySet
79
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
96
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
80
97
  keyName: keyName,
81
98
  value: value,
82
99
  isExpanded: isExpanded
83
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, {
100
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, (0, _objectSpread2["default"])({
84
101
  isVisiable: isExpanded || !showArrow,
85
102
  isBrackets: isArray || isMySet
86
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
103
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
87
104
  value: value,
88
105
  keyName: keyName
89
106
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfoExtra.CountInfoExtraComps, {
package/cjs/index.d.ts CHANGED
@@ -48,6 +48,12 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
48
48
  enableClipboard?: boolean;
49
49
  /** When set to true, all nodes will be collapsed by default. Use an integer value to collapse at a particular depth. @default false */
50
50
  collapsed?: boolean | number;
51
+ /** Determine whether the node should be expanded on the first render, or you can use collapsed to control the level of expansion (by default, the root is expanded). */
52
+ shouldExpandNodeInitially?: (isExpanded: boolean, props: {
53
+ value?: T;
54
+ keys: (number | string)[];
55
+ level: number;
56
+ }) => boolean;
51
57
  /** Whether to highlight updates. @default true */
52
58
  highlightUpdates?: boolean;
53
59
  /** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
package/cjs/index.js CHANGED
@@ -110,7 +110,7 @@ Object.keys(_symbol).forEach(function (key) {
110
110
  }
111
111
  });
112
112
  });
113
- var _excluded = ["className", "style", "value", "children", "collapsed", "indentWidth", "displayObjectSize", "shortenTextAfterLength", "highlightUpdates", "enableClipboard", "displayDataTypes", "objectSortKeys", "onExpand", "onCopied"];
113
+ var _excluded = ["className", "style", "value", "children", "collapsed", "shouldExpandNodeInitially", "indentWidth", "displayObjectSize", "shortenTextAfterLength", "highlightUpdates", "enableClipboard", "displayDataTypes", "objectSortKeys", "onExpand", "onCopied"];
114
114
  var JsonView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
115
115
  var _props$className = props.className,
116
116
  className = _props$className === void 0 ? '' : _props$className,
@@ -118,6 +118,7 @@ var JsonView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
118
118
  value = props.value,
119
119
  children = props.children,
120
120
  collapsed = props.collapsed,
121
+ shouldExpandNodeInitially = props.shouldExpandNodeInitially,
121
122
  _props$indentWidth = props.indentWidth,
122
123
  indentWidth = _props$indentWidth === void 0 ? 15 : _props$indentWidth,
123
124
  _props$displayObjectS = props.displayObjectSize,
@@ -148,6 +149,7 @@ var JsonView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
148
149
  value: value,
149
150
  objectSortKeys: objectSortKeys,
150
151
  indentWidth: indentWidth,
152
+ shouldExpandNodeInitially: shouldExpandNodeInitially,
151
153
  displayObjectSize: displayObjectSize,
152
154
  collapsed: collapsed,
153
155
  enableClipboard: enableClipboard,
@@ -1,8 +1,15 @@
1
1
  import { FC, PropsWithChildren, ElementType, ComponentPropsWithoutRef } from 'react';
2
2
  import { type TagType } from './Types';
3
+ export interface SymbolsElementResult<T extends object, K = string | number> {
4
+ value?: T;
5
+ parentValue?: T;
6
+ keyName?: K;
7
+ /** Index of the parent `keyName` */
8
+ keys?: K[];
9
+ }
3
10
  type SymbolsElementProps<T extends TagType = 'span'> = {
4
11
  as?: T;
5
- render?: (props: SymbolsElement<T>) => React.ReactNode;
12
+ render?: (props: SymbolsElement<T>, result: SymbolsElementResult<object>) => React.ReactNode;
6
13
  'data-type'?: string;
7
14
  };
8
15
  export type SymbolsElement<T extends TagType = 'span'> = SymbolsElementProps<T> & ComponentPropsWithoutRef<T>;
package/cjs/store.d.ts CHANGED
@@ -12,6 +12,7 @@ export interface InitialState<T extends object> {
12
12
  enableClipboard?: JsonViewProps<T>['enableClipboard'];
13
13
  highlightUpdates?: JsonViewProps<T>['highlightUpdates'];
14
14
  collapsed?: JsonViewProps<T>['collapsed'];
15
+ shouldExpandNodeInitially?: JsonViewProps<T>['shouldExpandNodeInitially'];
15
16
  indentWidth?: number;
16
17
  }
17
18
  export declare const initialState: InitialState<object>;
@@ -1,9 +1,9 @@
1
- import { type SymbolsElement } from '../store/Symbols';
1
+ import { type SymbolsElement, type SymbolsElementResult } from '../store/Symbols';
2
2
  import { type TagType } from '../store/Types';
3
3
  export declare const Quote: {
4
- (props: {
4
+ <T extends object>(props: {
5
5
  isNumber?: boolean;
6
- } & React.HTMLAttributes<HTMLElement>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
6
+ } & React.HTMLAttributes<HTMLElement> & SymbolsElementResult<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
7
7
  displayName: string;
8
8
  };
9
9
  export declare const ValueQuote: {
@@ -11,19 +11,19 @@ export declare const ValueQuote: {
11
11
  displayName: string;
12
12
  };
13
13
  export declare const Colon: {
14
- (): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
14
+ <T extends object>(props: SymbolsElementResult<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
15
15
  displayName: string;
16
16
  };
17
17
  export declare const Arrow: {
18
- <T extends TagType>(props: SymbolsElement<T> & {
18
+ <T extends TagType, K extends object>(props: SymbolsElement<T> & {
19
19
  expandKey: string;
20
- }): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
20
+ } & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
21
21
  displayName: string;
22
22
  };
23
23
  export declare const BracketsOpen: {
24
- ({ isBrackets }: {
24
+ <K extends object>(props: {
25
25
  isBrackets?: boolean;
26
- }): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
26
+ } & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
27
27
  displayName: string;
28
28
  };
29
29
  type BracketsCloseProps = {
@@ -31,7 +31,7 @@ type BracketsCloseProps = {
31
31
  isVisiable?: boolean;
32
32
  };
33
33
  export declare const BracketsClose: {
34
- ({ isBrackets, isVisiable }: BracketsCloseProps): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
34
+ <K extends object>(props: BracketsCloseProps & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
35
35
  displayName: string;
36
36
  };
37
37
  export {};
@@ -12,7 +12,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
12
12
  var _Symbols = require("../store/Symbols");
13
13
  var _Expands = require("../store/Expands");
14
14
  var _jsxRuntime = require("react/jsx-runtime");
15
- var _excluded = ["isNumber"],
15
+ var _excluded = ["isNumber", "value", "parentValue", "keyName", "keys"],
16
16
  _excluded2 = ["as", "render"],
17
17
  _excluded3 = ["as", "render"],
18
18
  _excluded4 = ["as", "render"],
@@ -26,6 +26,10 @@ var Quote = exports.Quote = function Quote(props) {
26
26
  _useSymbolsStore$Quot = _useSymbolsStore.Quote,
27
27
  Comp = _useSymbolsStore$Quot === void 0 ? {} : _useSymbolsStore$Quot;
28
28
  var isNumber = props.isNumber,
29
+ value = props.value,
30
+ parentValue = props.parentValue,
31
+ keyName = props.keyName,
32
+ keys = props.keys,
29
33
  other = (0, _objectWithoutProperties2["default"])(props, _excluded);
30
34
  if (isNumber) return null;
31
35
  var as = Comp.as,
@@ -33,7 +37,13 @@ var Quote = exports.Quote = function Quote(props) {
33
37
  reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded2);
34
38
  var Elm = as || 'span';
35
39
  var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other), reset);
36
- var child = render && typeof render === 'function' && render(elmProps);
40
+ var result = {
41
+ value: value,
42
+ parentValue: parentValue,
43
+ keyName: keyName,
44
+ keys: keys || (keyName ? [keyName] : [])
45
+ };
46
+ var child = render && typeof render === 'function' && render(elmProps, result);
37
47
  if (child) return child;
38
48
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, elmProps));
39
49
  };
@@ -48,12 +58,16 @@ var ValueQuote = exports.ValueQuote = function ValueQuote(props) {
48
58
  reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded3);
49
59
  var Elm = as || 'span';
50
60
  var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, other), reset);
51
- var child = render && typeof render === 'function' && render(elmProps);
61
+ var child = render && typeof render === 'function' && render(elmProps, {});
52
62
  if (child) return child;
53
63
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, elmProps));
54
64
  };
55
65
  ValueQuote.displayName = 'JVR.ValueQuote';
56
- var Colon = exports.Colon = function Colon() {
66
+ var Colon = exports.Colon = function Colon(props) {
67
+ var value = props.value,
68
+ parentValue = props.parentValue,
69
+ keyName = props.keyName,
70
+ keys = props.keys;
57
71
  var _useSymbolsStore3 = (0, _Symbols.useSymbolsStore)(),
58
72
  _useSymbolsStore3$Col = _useSymbolsStore3.Colon,
59
73
  Comp = _useSymbolsStore3$Col === void 0 ? {} : _useSymbolsStore3$Col;
@@ -61,7 +75,12 @@ var Colon = exports.Colon = function Colon() {
61
75
  render = Comp.render,
62
76
  reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded4);
63
77
  var Elm = as || 'span';
64
- var child = render && typeof render === 'function' && render(reset);
78
+ var child = render && typeof render === 'function' && render(reset, {
79
+ value: value,
80
+ parentValue: parentValue,
81
+ keyName: keyName,
82
+ keys: keys || (keyName ? [keyName] : [])
83
+ });
65
84
  if (child) return child;
66
85
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, reset));
67
86
  };
@@ -71,7 +90,12 @@ var Arrow = exports.Arrow = function Arrow(props) {
71
90
  _useSymbolsStore4$Arr = _useSymbolsStore4.Arrow,
72
91
  Comp = _useSymbolsStore4$Arr === void 0 ? {} : _useSymbolsStore4$Arr;
73
92
  var expands = (0, _Expands.useExpandsStore)();
74
- var expandKey = props.expandKey;
93
+ var expandKey = props.expandKey,
94
+ resetStyle = props.style,
95
+ value = props.value,
96
+ parentValue = props.parentValue,
97
+ keyName = props.keyName,
98
+ keys = props.keys;
75
99
  var isExpanded = !!expands[expandKey];
76
100
  var as = Comp.as,
77
101
  style = Comp.style,
@@ -79,44 +103,71 @@ var Arrow = exports.Arrow = function Arrow(props) {
79
103
  reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded5);
80
104
  var Elm = as || 'span';
81
105
  var isRender = render && typeof render === 'function';
82
- var child = isRender && render((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
106
+ var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
83
107
  'data-expanded': isExpanded,
84
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, style), props.style)
85
- }));
108
+ style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, style), resetStyle)
109
+ });
110
+ var result = {
111
+ value: value,
112
+ parentValue: parentValue,
113
+ keyName: keyName,
114
+ keys: keys || (keyName ? [keyName] : [])
115
+ };
116
+ var child = isRender && render(elmProps, result);
86
117
  if (child) return child;
87
118
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
88
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, style), props.style)
119
+ style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, style), resetStyle)
89
120
  }));
90
121
  };
91
122
  Arrow.displayName = 'JVR.Arrow';
92
- var BracketsOpen = exports.BracketsOpen = function BracketsOpen(_ref) {
93
- var isBrackets = _ref.isBrackets;
123
+ var BracketsOpen = exports.BracketsOpen = function BracketsOpen(props) {
124
+ var isBrackets = props.isBrackets,
125
+ value = props.value,
126
+ parentValue = props.parentValue,
127
+ keyName = props.keyName,
128
+ keys = props.keys;
94
129
  var _useSymbolsStore5 = (0, _Symbols.useSymbolsStore)(),
95
130
  _useSymbolsStore5$Bra = _useSymbolsStore5.BracketsLeft,
96
131
  BracketsLeft = _useSymbolsStore5$Bra === void 0 ? {} : _useSymbolsStore5$Bra,
97
132
  _useSymbolsStore5$Bra2 = _useSymbolsStore5.BraceLeft,
98
133
  BraceLeft = _useSymbolsStore5$Bra2 === void 0 ? {} : _useSymbolsStore5$Bra2;
134
+ var result = {
135
+ value: value,
136
+ parentValue: parentValue,
137
+ keyName: keyName,
138
+ keys: keys || (keyName ? [keyName] : [])
139
+ };
99
140
  if (isBrackets) {
100
141
  var as = BracketsLeft.as,
101
142
  _render = BracketsLeft.render,
102
143
  reset = (0, _objectWithoutProperties2["default"])(BracketsLeft, _excluded6);
103
144
  var BracketsLeftComp = as || 'span';
104
- var _child = _render && typeof _render === 'function' && _render(reset);
145
+ var _child = _render && typeof _render === 'function' && _render(reset, result);
105
146
  if (_child) return _child;
106
147
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(BracketsLeftComp, (0, _objectSpread2["default"])({}, reset));
107
148
  }
108
149
  var elm = BraceLeft.as,
109
150
  render = BraceLeft.render,
110
- props = (0, _objectWithoutProperties2["default"])(BraceLeft, _excluded7);
151
+ resetProps = (0, _objectWithoutProperties2["default"])(BraceLeft, _excluded7);
111
152
  var BraceLeftComp = elm || 'span';
112
- var child = render && typeof render === 'function' && render(props);
153
+ var child = render && typeof render === 'function' && render(resetProps, result);
113
154
  if (child) return child;
114
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(BraceLeftComp, (0, _objectSpread2["default"])({}, props));
155
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BraceLeftComp, (0, _objectSpread2["default"])({}, resetProps));
115
156
  };
116
157
  BracketsOpen.displayName = 'JVR.BracketsOpen';
117
- var BracketsClose = exports.BracketsClose = function BracketsClose(_ref2) {
118
- var isBrackets = _ref2.isBrackets,
119
- isVisiable = _ref2.isVisiable;
158
+ var BracketsClose = exports.BracketsClose = function BracketsClose(props) {
159
+ var isBrackets = props.isBrackets,
160
+ isVisiable = props.isVisiable,
161
+ value = props.value,
162
+ parentValue = props.parentValue,
163
+ keyName = props.keyName,
164
+ keys = props.keys;
165
+ var result = {
166
+ value: value,
167
+ parentValue: parentValue,
168
+ keyName: keyName,
169
+ keys: keys || (keyName ? [keyName] : [])
170
+ };
120
171
  if (!isVisiable) return null;
121
172
  var _useSymbolsStore6 = (0, _Symbols.useSymbolsStore)(),
122
173
  _useSymbolsStore6$Bra = _useSymbolsStore6.BracketsRight,
@@ -128,7 +179,7 @@ var BracketsClose = exports.BracketsClose = function BracketsClose(_ref2) {
128
179
  _render2 = BracketsRight.render,
129
180
  _reset = (0, _objectWithoutProperties2["default"])(BracketsRight, _excluded8);
130
181
  var BracketsRightComp = as || 'span';
131
- var _child2 = _render2 && typeof _render2 === 'function' && _render2(_reset);
182
+ var _child2 = _render2 && typeof _render2 === 'function' && _render2(_reset, result);
132
183
  if (_child2) return _child2;
133
184
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(BracketsRightComp, (0, _objectSpread2["default"])({}, _reset));
134
185
  }
@@ -136,7 +187,7 @@ var BracketsClose = exports.BracketsClose = function BracketsClose(_ref2) {
136
187
  render = BraceRight.render,
137
188
  reset = (0, _objectWithoutProperties2["default"])(BraceRight, _excluded9);
138
189
  var BraceRightComp = elm || 'span';
139
- var child = render && typeof render === 'function' && render(reset);
190
+ var child = render && typeof render === 'function' && render(reset, result);
140
191
  if (child) return child;
141
192
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(BraceRightComp, (0, _objectSpread2["default"])({}, reset));
142
193
  };
package/esm/Container.js CHANGED
@@ -52,7 +52,8 @@ export var Container = /*#__PURE__*/forwardRef((props, ref) => {
52
52
  }), /*#__PURE__*/_jsx(NestedClose, {
53
53
  expandKey: subkeyid,
54
54
  value: value,
55
- level: level
55
+ level: level,
56
+ keys: keys
56
57
  })]
57
58
  }));
58
59
  });
@@ -24,10 +24,19 @@ export var KeyValues = props => {
24
24
  var {
25
25
  objectSortKeys,
26
26
  indentWidth,
27
- collapsed
27
+ collapsed,
28
+ shouldExpandNodeInitially
28
29
  } = useStore();
29
30
  var isMyArray = Array.isArray(value);
30
- var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
31
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
32
+ var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : defaultExpanded;
33
+ if (expands[expandKey] === undefined && shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
34
+ value,
35
+ keys,
36
+ level
37
+ })) {
38
+ return null;
39
+ }
31
40
  if (isExpanded) {
32
41
  return null;
33
42
  }
@@ -82,23 +91,25 @@ export var KayName = props => {
82
91
  highlightUpdates,
83
92
  highlightContainer
84
93
  });
94
+ var compProps = {
95
+ keyName,
96
+ value,
97
+ keys,
98
+ parentValue
99
+ };
85
100
  return /*#__PURE__*/_jsxs(Fragment, {
86
101
  children: [/*#__PURE__*/_jsxs("span", {
87
102
  ref: highlightContainer,
88
- children: [/*#__PURE__*/_jsx(Quote, {
103
+ children: [/*#__PURE__*/_jsx(Quote, _extends({
89
104
  isNumber: isNumber,
90
105
  "data-placement": "left"
91
- }), /*#__PURE__*/_jsx(KeyNameComp, {
92
- keyName: keyName,
93
- value: value,
94
- keys: keys,
95
- parentValue: parentValue,
106
+ }, compProps)), /*#__PURE__*/_jsx(KeyNameComp, _extends({}, compProps, {
96
107
  children: keyName
97
- }), /*#__PURE__*/_jsx(Quote, {
108
+ })), /*#__PURE__*/_jsx(Quote, _extends({
98
109
  isNumber: isNumber,
99
110
  "data-placement": "right"
100
- })]
101
- }), /*#__PURE__*/_jsx(Colon, {})]
111
+ }, compProps))]
112
+ }), /*#__PURE__*/_jsx(Colon, _extends({}, compProps))]
102
113
  });
103
114
  };
104
115
  KayName.displayName = 'JVR.KayName';
@@ -2,6 +2,7 @@ interface NestedCloseProps<T extends object> {
2
2
  value?: T;
3
3
  expandKey: string;
4
4
  level: number;
5
+ keys?: (string | number)[];
5
6
  }
6
7
  export declare const NestedClose: {
7
8
  <T extends object>(props: NestedCloseProps<T>): import("react/jsx-runtime").JSX.Element | null;
@@ -7,16 +7,26 @@ export var NestedClose = props => {
7
7
  var {
8
8
  value,
9
9
  expandKey,
10
- level
10
+ level,
11
+ keys = []
11
12
  } = props;
12
13
  var expands = useExpandsStore();
13
14
  var isArray = Array.isArray(value);
14
15
  var {
15
- collapsed
16
+ collapsed,
17
+ shouldExpandNodeInitially
16
18
  } = useStore();
17
19
  var isMySet = value instanceof Set;
18
- var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
20
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
21
+ var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : defaultExpanded;
19
22
  var len = Object.keys(value).length;
23
+ if (expands[expandKey] === undefined && shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
24
+ value,
25
+ keys,
26
+ level
27
+ })) {
28
+ return null;
29
+ }
20
30
  if (isExpanded || len === 0) {
21
31
  return null;
22
32
  }
@@ -14,7 +14,7 @@ export var NestedOpen = props => {
14
14
  var {
15
15
  keyName,
16
16
  expandKey,
17
- keys,
17
+ keys = [],
18
18
  initialValue,
19
19
  value,
20
20
  parentValue,
@@ -24,12 +24,22 @@ export var NestedOpen = props => {
24
24
  var dispatchExpands = useExpandsDispatch();
25
25
  var {
26
26
  onExpand,
27
- collapsed
27
+ collapsed,
28
+ shouldExpandNodeInitially
28
29
  } = useStore();
29
30
  var isArray = Array.isArray(value);
30
31
  var isMySet = value instanceof Set;
31
- var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
32
+ var defaultExpanded = typeof collapsed === 'boolean' ? collapsed : typeof collapsed === 'number' ? level > collapsed : false;
32
33
  var isObject = typeof value === 'object';
34
+ var isExpanded = (_expands$expandKey = expands[expandKey]) != null ? _expands$expandKey : defaultExpanded;
35
+ var shouldExpand = shouldExpandNodeInitially && shouldExpandNodeInitially(isExpanded, {
36
+ value,
37
+ keys,
38
+ level
39
+ });
40
+ if (expands[expandKey] === undefined && shouldExpand !== undefined) {
41
+ isExpanded = shouldExpand;
42
+ }
33
43
  var click = () => {
34
44
  var opt = {
35
45
  expand: !isExpanded,
@@ -58,11 +68,17 @@ export var NestedOpen = props => {
58
68
  if (showArrow) {
59
69
  reset.onClick = click;
60
70
  }
71
+ var compProps = {
72
+ keyName,
73
+ value,
74
+ keys,
75
+ parentValue
76
+ };
61
77
  return /*#__PURE__*/_jsxs("span", _extends({}, reset, {
62
- children: [showArrow && /*#__PURE__*/_jsx(Arrow, {
78
+ children: [showArrow && /*#__PURE__*/_jsx(Arrow, _extends({
63
79
  style: arrowStyle,
64
80
  expandKey: expandKey
65
- }), (keyName || typeof keyName === 'number') && /*#__PURE__*/_jsx(KayName, {
81
+ }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/_jsx(KayName, {
66
82
  keyName: keyName
67
83
  }), /*#__PURE__*/_jsx(SetComp, {
68
84
  value: initialValue,
@@ -70,16 +86,16 @@ export var NestedOpen = props => {
70
86
  }), /*#__PURE__*/_jsx(MapComp, {
71
87
  value: initialValue,
72
88
  keyName: keyName
73
- }), /*#__PURE__*/_jsx(BracketsOpen, {
89
+ }), /*#__PURE__*/_jsx(BracketsOpen, _extends({
74
90
  isBrackets: isArray || isMySet
75
- }), /*#__PURE__*/_jsx(EllipsisComp, {
91
+ }, compProps)), /*#__PURE__*/_jsx(EllipsisComp, {
76
92
  keyName: keyName,
77
93
  value: value,
78
94
  isExpanded: isExpanded
79
- }), /*#__PURE__*/_jsx(BracketsClose, {
95
+ }), /*#__PURE__*/_jsx(BracketsClose, _extends({
80
96
  isVisiable: isExpanded || !showArrow,
81
97
  isBrackets: isArray || isMySet
82
- }), /*#__PURE__*/_jsx(CountInfoComp, {
98
+ }, compProps)), /*#__PURE__*/_jsx(CountInfoComp, {
83
99
  value: value,
84
100
  keyName: keyName
85
101
  }), /*#__PURE__*/_jsx(CountInfoExtraComps, {
package/esm/index.d.ts CHANGED
@@ -48,6 +48,12 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
48
48
  enableClipboard?: boolean;
49
49
  /** When set to true, all nodes will be collapsed by default. Use an integer value to collapse at a particular depth. @default false */
50
50
  collapsed?: boolean | number;
51
+ /** Determine whether the node should be expanded on the first render, or you can use collapsed to control the level of expansion (by default, the root is expanded). */
52
+ shouldExpandNodeInitially?: (isExpanded: boolean, props: {
53
+ value?: T;
54
+ keys: (number | string)[];
55
+ level: number;
56
+ }) => boolean;
51
57
  /** Whether to highlight updates. @default true */
52
58
  highlightUpdates?: boolean;
53
59
  /** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
package/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
3
- var _excluded = ["className", "style", "value", "children", "collapsed", "indentWidth", "displayObjectSize", "shortenTextAfterLength", "highlightUpdates", "enableClipboard", "displayDataTypes", "objectSortKeys", "onExpand", "onCopied"];
3
+ var _excluded = ["className", "style", "value", "children", "collapsed", "shouldExpandNodeInitially", "indentWidth", "displayObjectSize", "shortenTextAfterLength", "highlightUpdates", "enableClipboard", "displayDataTypes", "objectSortKeys", "onExpand", "onCopied"];
4
4
  import { forwardRef } from 'react';
5
5
  import { Provider } from './store';
6
6
  import { Container } from './Container';
@@ -45,6 +45,7 @@ var JsonView = /*#__PURE__*/forwardRef((props, ref) => {
45
45
  value,
46
46
  children,
47
47
  collapsed,
48
+ shouldExpandNodeInitially,
48
49
  indentWidth = 15,
49
50
  displayObjectSize = true,
50
51
  shortenTextAfterLength = 30,
@@ -69,6 +70,7 @@ var JsonView = /*#__PURE__*/forwardRef((props, ref) => {
69
70
  value,
70
71
  objectSortKeys,
71
72
  indentWidth,
73
+ shouldExpandNodeInitially,
72
74
  displayObjectSize,
73
75
  collapsed,
74
76
  enableClipboard,
@@ -1,8 +1,15 @@
1
1
  import { FC, PropsWithChildren, ElementType, ComponentPropsWithoutRef } from 'react';
2
2
  import { type TagType } from './Types';
3
+ export interface SymbolsElementResult<T extends object, K = string | number> {
4
+ value?: T;
5
+ parentValue?: T;
6
+ keyName?: K;
7
+ /** Index of the parent `keyName` */
8
+ keys?: K[];
9
+ }
3
10
  type SymbolsElementProps<T extends TagType = 'span'> = {
4
11
  as?: T;
5
- render?: (props: SymbolsElement<T>) => React.ReactNode;
12
+ render?: (props: SymbolsElement<T>, result: SymbolsElementResult<object>) => React.ReactNode;
6
13
  'data-type'?: string;
7
14
  };
8
15
  export type SymbolsElement<T extends TagType = 'span'> = SymbolsElementProps<T> & ComponentPropsWithoutRef<T>;
package/esm/store.d.ts CHANGED
@@ -12,6 +12,7 @@ export interface InitialState<T extends object> {
12
12
  enableClipboard?: JsonViewProps<T>['enableClipboard'];
13
13
  highlightUpdates?: JsonViewProps<T>['highlightUpdates'];
14
14
  collapsed?: JsonViewProps<T>['collapsed'];
15
+ shouldExpandNodeInitially?: JsonViewProps<T>['shouldExpandNodeInitially'];
15
16
  indentWidth?: number;
16
17
  }
17
18
  export declare const initialState: InitialState<object>;
@@ -1,9 +1,9 @@
1
- import { type SymbolsElement } from '../store/Symbols';
1
+ import { type SymbolsElement, type SymbolsElementResult } from '../store/Symbols';
2
2
  import { type TagType } from '../store/Types';
3
3
  export declare const Quote: {
4
- (props: {
4
+ <T extends object>(props: {
5
5
  isNumber?: boolean;
6
- } & React.HTMLAttributes<HTMLElement>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
6
+ } & React.HTMLAttributes<HTMLElement> & SymbolsElementResult<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
7
7
  displayName: string;
8
8
  };
9
9
  export declare const ValueQuote: {
@@ -11,19 +11,19 @@ export declare const ValueQuote: {
11
11
  displayName: string;
12
12
  };
13
13
  export declare const Colon: {
14
- (): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
14
+ <T extends object>(props: SymbolsElementResult<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
15
15
  displayName: string;
16
16
  };
17
17
  export declare const Arrow: {
18
- <T extends TagType>(props: SymbolsElement<T> & {
18
+ <T extends TagType, K extends object>(props: SymbolsElement<T> & {
19
19
  expandKey: string;
20
- }): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
20
+ } & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
21
21
  displayName: string;
22
22
  };
23
23
  export declare const BracketsOpen: {
24
- ({ isBrackets }: {
24
+ <K extends object>(props: {
25
25
  isBrackets?: boolean;
26
- }): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
26
+ } & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element;
27
27
  displayName: string;
28
28
  };
29
29
  type BracketsCloseProps = {
@@ -31,7 +31,7 @@ type BracketsCloseProps = {
31
31
  isVisiable?: boolean;
32
32
  };
33
33
  export declare const BracketsClose: {
34
- ({ isBrackets, isVisiable }: BracketsCloseProps): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
34
+ <K extends object>(props: BracketsCloseProps & SymbolsElementResult<K>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
35
35
  displayName: string;
36
36
  };
37
37
  export {};
@@ -1,7 +1,7 @@
1
1
  import _objectDestructuringEmpty from "@babel/runtime/helpers/objectDestructuringEmpty";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
4
- var _excluded = ["isNumber"],
4
+ var _excluded = ["isNumber", "value", "parentValue", "keyName", "keys"],
5
5
  _excluded2 = ["as", "render"],
6
6
  _excluded3 = ["as", "render"],
7
7
  _excluded4 = ["as", "render"],
@@ -18,7 +18,11 @@ export var Quote = props => {
18
18
  Quote: Comp = {}
19
19
  } = useSymbolsStore();
20
20
  var {
21
- isNumber
21
+ isNumber,
22
+ value,
23
+ parentValue,
24
+ keyName,
25
+ keys
22
26
  } = props,
23
27
  other = _objectWithoutPropertiesLoose(props, _excluded);
24
28
  if (isNumber) return null;
@@ -29,7 +33,13 @@ export var Quote = props => {
29
33
  reset = _objectWithoutPropertiesLoose(Comp, _excluded2);
30
34
  var Elm = as || 'span';
31
35
  var elmProps = _extends({}, other, reset);
32
- var child = render && typeof render === 'function' && render(elmProps);
36
+ var result = {
37
+ value,
38
+ parentValue,
39
+ keyName,
40
+ keys: keys || (keyName ? [keyName] : [])
41
+ };
42
+ var child = render && typeof render === 'function' && render(elmProps, result);
33
43
  if (child) return child;
34
44
  return /*#__PURE__*/_jsx(Elm, _extends({}, elmProps));
35
45
  };
@@ -46,12 +56,18 @@ export var ValueQuote = props => {
46
56
  reset = _objectWithoutPropertiesLoose(Comp, _excluded3);
47
57
  var Elm = as || 'span';
48
58
  var elmProps = _extends({}, other, reset);
49
- var child = render && typeof render === 'function' && render(elmProps);
59
+ var child = render && typeof render === 'function' && render(elmProps, {});
50
60
  if (child) return child;
51
61
  return /*#__PURE__*/_jsx(Elm, _extends({}, elmProps));
52
62
  };
53
63
  ValueQuote.displayName = 'JVR.ValueQuote';
54
- export var Colon = () => {
64
+ export var Colon = props => {
65
+ var {
66
+ value,
67
+ parentValue,
68
+ keyName,
69
+ keys
70
+ } = props;
55
71
  var {
56
72
  Colon: Comp = {}
57
73
  } = useSymbolsStore();
@@ -61,7 +77,12 @@ export var Colon = () => {
61
77
  } = Comp,
62
78
  reset = _objectWithoutPropertiesLoose(Comp, _excluded4);
63
79
  var Elm = as || 'span';
64
- var child = render && typeof render === 'function' && render(reset);
80
+ var child = render && typeof render === 'function' && render(reset, {
81
+ value,
82
+ parentValue,
83
+ keyName,
84
+ keys: keys || (keyName ? [keyName] : [])
85
+ });
65
86
  if (child) return child;
66
87
  return /*#__PURE__*/_jsx(Elm, _extends({}, reset));
67
88
  };
@@ -72,7 +93,12 @@ export var Arrow = props => {
72
93
  } = useSymbolsStore();
73
94
  var expands = useExpandsStore();
74
95
  var {
75
- expandKey
96
+ expandKey,
97
+ style: resetStyle,
98
+ value,
99
+ parentValue,
100
+ keyName,
101
+ keys
76
102
  } = props;
77
103
  var isExpanded = !!expands[expandKey];
78
104
  var {
@@ -83,24 +109,41 @@ export var Arrow = props => {
83
109
  reset = _objectWithoutPropertiesLoose(Comp, _excluded5);
84
110
  var Elm = as || 'span';
85
111
  var isRender = render && typeof render === 'function';
86
- var child = isRender && render(_extends({}, reset, {
112
+ var elmProps = _extends({}, reset, {
87
113
  'data-expanded': isExpanded,
88
- style: _extends({}, style, props.style)
89
- }));
114
+ style: _extends({}, style, resetStyle)
115
+ });
116
+ var result = {
117
+ value,
118
+ parentValue,
119
+ keyName,
120
+ keys: keys || (keyName ? [keyName] : [])
121
+ };
122
+ var child = isRender && render(elmProps, result);
90
123
  if (child) return child;
91
124
  return /*#__PURE__*/_jsx(Elm, _extends({}, reset, {
92
- style: _extends({}, style, props.style)
125
+ style: _extends({}, style, resetStyle)
93
126
  }));
94
127
  };
95
128
  Arrow.displayName = 'JVR.Arrow';
96
- export var BracketsOpen = _ref => {
129
+ export var BracketsOpen = props => {
97
130
  var {
98
- isBrackets
99
- } = _ref;
131
+ isBrackets,
132
+ value,
133
+ parentValue,
134
+ keyName,
135
+ keys
136
+ } = props;
100
137
  var {
101
138
  BracketsLeft = {},
102
139
  BraceLeft = {}
103
140
  } = useSymbolsStore();
141
+ var result = {
142
+ value,
143
+ parentValue,
144
+ keyName,
145
+ keys: keys || (keyName ? [keyName] : [])
146
+ };
104
147
  if (isBrackets) {
105
148
  var {
106
149
  as,
@@ -108,7 +151,7 @@ export var BracketsOpen = _ref => {
108
151
  } = BracketsLeft,
109
152
  reset = _objectWithoutPropertiesLoose(BracketsLeft, _excluded6);
110
153
  var BracketsLeftComp = as || 'span';
111
- var _child = _render && typeof _render === 'function' && _render(reset);
154
+ var _child = _render && typeof _render === 'function' && _render(reset, result);
112
155
  if (_child) return _child;
113
156
  return /*#__PURE__*/_jsx(BracketsLeftComp, _extends({}, reset));
114
157
  }
@@ -116,18 +159,28 @@ export var BracketsOpen = _ref => {
116
159
  as: elm,
117
160
  render
118
161
  } = BraceLeft,
119
- props = _objectWithoutPropertiesLoose(BraceLeft, _excluded7);
162
+ resetProps = _objectWithoutPropertiesLoose(BraceLeft, _excluded7);
120
163
  var BraceLeftComp = elm || 'span';
121
- var child = render && typeof render === 'function' && render(props);
164
+ var child = render && typeof render === 'function' && render(resetProps, result);
122
165
  if (child) return child;
123
- return /*#__PURE__*/_jsx(BraceLeftComp, _extends({}, props));
166
+ return /*#__PURE__*/_jsx(BraceLeftComp, _extends({}, resetProps));
124
167
  };
125
168
  BracketsOpen.displayName = 'JVR.BracketsOpen';
126
- export var BracketsClose = _ref2 => {
169
+ export var BracketsClose = props => {
127
170
  var {
128
171
  isBrackets,
129
- isVisiable
130
- } = _ref2;
172
+ isVisiable,
173
+ value,
174
+ parentValue,
175
+ keyName,
176
+ keys
177
+ } = props;
178
+ var result = {
179
+ value,
180
+ parentValue,
181
+ keyName,
182
+ keys: keys || (keyName ? [keyName] : [])
183
+ };
131
184
  if (!isVisiable) return null;
132
185
  var {
133
186
  BracketsRight = {},
@@ -140,7 +193,7 @@ export var BracketsClose = _ref2 => {
140
193
  } = BracketsRight,
141
194
  _reset = _objectWithoutPropertiesLoose(BracketsRight, _excluded8);
142
195
  var BracketsRightComp = as || 'span';
143
- var _child2 = _render2 && typeof _render2 === 'function' && _render2(_reset);
196
+ var _child2 = _render2 && typeof _render2 === 'function' && _render2(_reset, result);
144
197
  if (_child2) return _child2;
145
198
  return /*#__PURE__*/_jsx(BracketsRightComp, _extends({}, _reset));
146
199
  }
@@ -150,7 +203,7 @@ export var BracketsClose = _ref2 => {
150
203
  } = BraceRight,
151
204
  reset = _objectWithoutPropertiesLoose(BraceRight, _excluded9);
152
205
  var BraceRightComp = elm || 'span';
153
- var child = render && typeof render === 'function' && render(reset);
206
+ var child = render && typeof render === 'function' && render(reset, result);
154
207
  if (child) return child;
155
208
  return /*#__PURE__*/_jsx(BraceRightComp, _extends({}, reset));
156
209
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-json-view",
3
- "version": "2.0.0-alpha.27",
3
+ "version": "2.0.0-alpha.29",
4
4
  "description": "JSON viewer for react.",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",