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

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,35 @@ 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
+
685
713
  ## Modify Icon Style
686
714
 
687
715
  Use built-in default icons.
@@ -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");
@@ -99,23 +99,25 @@ var KayName = exports.KayName = function KayName(props) {
99
99
  highlightUpdates: highlightUpdates,
100
100
  highlightContainer: highlightContainer
101
101
  });
102
+ var compProps = {
103
+ keyName: keyName,
104
+ value: value,
105
+ keys: keys,
106
+ parentValue: parentValue
107
+ };
102
108
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.Fragment, {
103
109
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
104
110
  ref: highlightContainer,
105
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
111
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
106
112
  isNumber: isNumber,
107
113
  "data-placement": "left"
108
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, {
109
- keyName: keyName,
110
- value: value,
111
- keys: keys,
112
- parentValue: parentValue,
114
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, compProps), {}, {
113
115
  children: keyName
114
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
116
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
115
117
  isNumber: isNumber,
116
118
  "data-placement": "right"
117
- })]
118
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, {})]
119
+ }, compProps))]
120
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, (0, _objectSpread2["default"])({}, compProps))]
119
121
  });
120
122
  };
121
123
  KayName.displayName = 'JVR.KayName';
@@ -62,11 +62,17 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
62
62
  if (showArrow) {
63
63
  reset.onClick = click;
64
64
  }
65
+ var compProps = {
66
+ keyName: keyName,
67
+ value: value,
68
+ keys: keys,
69
+ parentValue: parentValue
70
+ };
65
71
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
66
- children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, {
72
+ children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, (0, _objectSpread2["default"])({
67
73
  style: arrowStyle,
68
74
  expandKey: expandKey
69
- }), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, {
75
+ }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, {
70
76
  keyName: keyName
71
77
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.SetComp, {
72
78
  value: initialValue,
@@ -74,16 +80,16 @@ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
74
80
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.MapComp, {
75
81
  value: initialValue,
76
82
  keyName: keyName
77
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, {
83
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, (0, _objectSpread2["default"])({
78
84
  isBrackets: isArray || isMySet
79
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
85
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
80
86
  keyName: keyName,
81
87
  value: value,
82
88
  isExpanded: isExpanded
83
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, {
89
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, (0, _objectSpread2["default"])({
84
90
  isVisiable: isExpanded || !showArrow,
85
91
  isBrackets: isArray || isMySet
86
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
92
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
87
93
  value: value,
88
94
  keyName: keyName
89
95
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfoExtra.CountInfoExtraComps, {
@@ -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>;
@@ -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
  };
@@ -82,23 +82,25 @@ export var KayName = props => {
82
82
  highlightUpdates,
83
83
  highlightContainer
84
84
  });
85
+ var compProps = {
86
+ keyName,
87
+ value,
88
+ keys,
89
+ parentValue
90
+ };
85
91
  return /*#__PURE__*/_jsxs(Fragment, {
86
92
  children: [/*#__PURE__*/_jsxs("span", {
87
93
  ref: highlightContainer,
88
- children: [/*#__PURE__*/_jsx(Quote, {
94
+ children: [/*#__PURE__*/_jsx(Quote, _extends({
89
95
  isNumber: isNumber,
90
96
  "data-placement": "left"
91
- }), /*#__PURE__*/_jsx(KeyNameComp, {
92
- keyName: keyName,
93
- value: value,
94
- keys: keys,
95
- parentValue: parentValue,
97
+ }, compProps)), /*#__PURE__*/_jsx(KeyNameComp, _extends({}, compProps, {
96
98
  children: keyName
97
- }), /*#__PURE__*/_jsx(Quote, {
99
+ })), /*#__PURE__*/_jsx(Quote, _extends({
98
100
  isNumber: isNumber,
99
101
  "data-placement": "right"
100
- })]
101
- }), /*#__PURE__*/_jsx(Colon, {})]
102
+ }, compProps))]
103
+ }), /*#__PURE__*/_jsx(Colon, _extends({}, compProps))]
102
104
  });
103
105
  };
104
106
  KayName.displayName = 'JVR.KayName';
@@ -58,11 +58,17 @@ export var NestedOpen = props => {
58
58
  if (showArrow) {
59
59
  reset.onClick = click;
60
60
  }
61
+ var compProps = {
62
+ keyName,
63
+ value,
64
+ keys,
65
+ parentValue
66
+ };
61
67
  return /*#__PURE__*/_jsxs("span", _extends({}, reset, {
62
- children: [showArrow && /*#__PURE__*/_jsx(Arrow, {
68
+ children: [showArrow && /*#__PURE__*/_jsx(Arrow, _extends({
63
69
  style: arrowStyle,
64
70
  expandKey: expandKey
65
- }), (keyName || typeof keyName === 'number') && /*#__PURE__*/_jsx(KayName, {
71
+ }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/_jsx(KayName, {
66
72
  keyName: keyName
67
73
  }), /*#__PURE__*/_jsx(SetComp, {
68
74
  value: initialValue,
@@ -70,16 +76,16 @@ export var NestedOpen = props => {
70
76
  }), /*#__PURE__*/_jsx(MapComp, {
71
77
  value: initialValue,
72
78
  keyName: keyName
73
- }), /*#__PURE__*/_jsx(BracketsOpen, {
79
+ }), /*#__PURE__*/_jsx(BracketsOpen, _extends({
74
80
  isBrackets: isArray || isMySet
75
- }), /*#__PURE__*/_jsx(EllipsisComp, {
81
+ }, compProps)), /*#__PURE__*/_jsx(EllipsisComp, {
76
82
  keyName: keyName,
77
83
  value: value,
78
84
  isExpanded: isExpanded
79
- }), /*#__PURE__*/_jsx(BracketsClose, {
85
+ }), /*#__PURE__*/_jsx(BracketsClose, _extends({
80
86
  isVisiable: isExpanded || !showArrow,
81
87
  isBrackets: isArray || isMySet
82
- }), /*#__PURE__*/_jsx(CountInfoComp, {
88
+ }, compProps)), /*#__PURE__*/_jsx(CountInfoComp, {
83
89
  value: value,
84
90
  keyName: keyName
85
91
  }), /*#__PURE__*/_jsx(CountInfoExtraComps, {
@@ -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>;
@@ -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.28",
4
4
  "description": "JSON viewer for react.",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",