@uiw/react-json-view 2.0.0-alpha.28 → 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 +45 -6
- package/cjs/Container.js +2 -1
- package/cjs/comps/KeyValues.js +11 -2
- package/cjs/comps/NestedClose.d.ts +1 -0
- package/cjs/comps/NestedClose.js +14 -3
- package/cjs/comps/NestedOpen.js +14 -3
- package/cjs/index.d.ts +6 -0
- package/cjs/index.js +3 -1
- package/cjs/store.d.ts +1 -0
- package/esm/Container.js +2 -1
- package/esm/comps/KeyValues.js +11 -2
- package/esm/comps/NestedClose.d.ts +1 -0
- package/esm/comps/NestedClose.js +13 -3
- package/esm/comps/NestedOpen.js +13 -3
- package/esm/index.d.ts +6 -0
- package/esm/index.js +3 -1
- package/esm/store.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -710,6 +710,45 @@ export default function Demo() {
|
|
|
710
710
|
}
|
|
711
711
|
```
|
|
712
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
|
+
|
|
713
752
|
## Modify Icon Style
|
|
714
753
|
|
|
715
754
|
Use built-in default icons.
|
|
@@ -840,17 +879,17 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
|
|
|
840
879
|
enableClipboard?: boolean;
|
|
841
880
|
/** When set to true, all nodes will be collapsed by default. Use an integer value to collapse at a particular depth. @default false */
|
|
842
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;
|
|
843
887
|
/** Whether to highlight updates. @default true */
|
|
844
888
|
highlightUpdates?: boolean;
|
|
845
889
|
/** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
|
|
846
890
|
shortenTextAfterLength?: number;
|
|
847
891
|
/** Callback function for when a treeNode is expanded or collapsed */
|
|
848
|
-
onExpand?: (props: {
|
|
849
|
-
expand: boolean;
|
|
850
|
-
value?: T;
|
|
851
|
-
keyid: string;
|
|
852
|
-
keyName?: string | number;
|
|
853
|
-
}) => void;
|
|
892
|
+
onExpand?: (props: { expand: boolean; value?: T; keyid: string; keyName?: string | number }) => void;
|
|
854
893
|
/** Fires event when you copy */
|
|
855
894
|
onCopied?: (text: string, value?: T) => void;
|
|
856
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
|
});
|
package/cjs/comps/KeyValues.js
CHANGED
|
@@ -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
|
|
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
|
}
|
package/cjs/comps/NestedClose.js
CHANGED
|
@@ -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
|
|
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
|
}
|
package/cjs/comps/NestedOpen.js
CHANGED
|
@@ -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
|
|
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,
|
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,
|
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>;
|
package/esm/Container.js
CHANGED
package/esm/comps/KeyValues.js
CHANGED
|
@@ -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
|
|
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
|
}
|
package/esm/comps/NestedClose.js
CHANGED
|
@@ -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
|
|
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
|
}
|
package/esm/comps/NestedOpen.js
CHANGED
|
@@ -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
|
|
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,
|
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,
|
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>;
|