@uiw/react-json-view 2.0.0-alpha.3 → 2.0.0-alpha.30

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.
Files changed (197) hide show
  1. package/README.md +217 -26
  2. package/basic.d.ts +3 -0
  3. package/cjs/Container.d.ts +2 -0
  4. package/cjs/Container.js +13 -6
  5. package/cjs/arrow/TriangleArrow.js +1 -1
  6. package/cjs/comps/Copied.d.ts +2 -4
  7. package/cjs/comps/Copied.js +50 -17
  8. package/cjs/comps/KeyValues.d.ts +2 -4
  9. package/cjs/comps/KeyValues.js +62 -27
  10. package/cjs/comps/NestedClose.d.ts +1 -0
  11. package/cjs/comps/NestedClose.js +15 -5
  12. package/cjs/comps/NestedOpen.d.ts +2 -3
  13. package/cjs/comps/NestedOpen.js +34 -14
  14. package/cjs/comps/Value.d.ts +1 -2
  15. package/cjs/comps/Value.js +4 -8
  16. package/cjs/comps/useIdCompat.d.ts +1 -0
  17. package/cjs/comps/useIdCompat.js +14 -0
  18. package/cjs/editor/KeyName.d.ts +2 -0
  19. package/cjs/editor/KeyName.js +82 -0
  20. package/cjs/editor/index.d.ts +18 -0
  21. package/cjs/editor/index.js +44 -0
  22. package/cjs/editor/store.d.ts +27 -0
  23. package/cjs/editor/store.js +23 -0
  24. package/cjs/index.d.ts +10 -3
  25. package/cjs/index.js +9 -4
  26. package/cjs/section/Copied.d.ts +1 -1
  27. package/cjs/section/Copied.js +1 -2
  28. package/cjs/section/CountInfo.d.ts +1 -2
  29. package/cjs/section/CountInfo.js +3 -5
  30. package/cjs/section/CountInfoExtra.d.ts +1 -2
  31. package/cjs/section/CountInfoExtra.js +2 -4
  32. package/cjs/section/Ellipsis.d.ts +0 -1
  33. package/cjs/section/Ellipsis.js +4 -5
  34. package/cjs/section/KeyName.d.ts +7 -6
  35. package/cjs/section/KeyName.js +8 -6
  36. package/cjs/section/Row.d.ts +13 -0
  37. package/cjs/section/Row.js +51 -0
  38. package/cjs/store/Expands.js +2 -4
  39. package/cjs/store/Section.d.ts +12 -6
  40. package/cjs/store/Section.js +6 -4
  41. package/cjs/store/ShowTools.js +2 -4
  42. package/cjs/store/Symbols.d.ts +10 -3
  43. package/cjs/store/Symbols.js +2 -4
  44. package/cjs/store/Types.d.ts +29 -25
  45. package/cjs/store/Types.js +8 -8
  46. package/cjs/store.d.ts +8 -4
  47. package/cjs/store.js +5 -10
  48. package/cjs/symbol/Arrow.d.ts +1 -1
  49. package/cjs/symbol/Arrow.js +1 -2
  50. package/cjs/symbol/BraceLeft.d.ts +1 -1
  51. package/cjs/symbol/BraceLeft.js +1 -2
  52. package/cjs/symbol/BraceRight.d.ts +1 -1
  53. package/cjs/symbol/BraceRight.js +1 -2
  54. package/cjs/symbol/BracketsLeft.d.ts +1 -1
  55. package/cjs/symbol/BracketsLeft.js +1 -2
  56. package/cjs/symbol/BracketsRight.d.ts +1 -1
  57. package/cjs/symbol/BracketsRight.js +1 -2
  58. package/cjs/symbol/Colon.d.ts +1 -1
  59. package/cjs/symbol/Colon.js +1 -2
  60. package/cjs/symbol/Quote.d.ts +1 -1
  61. package/cjs/symbol/Quote.js +1 -2
  62. package/cjs/symbol/ValueQuote.d.ts +1 -1
  63. package/cjs/symbol/ValueQuote.js +1 -2
  64. package/cjs/symbol/index.d.ts +11 -16
  65. package/cjs/symbol/index.js +75 -30
  66. package/cjs/theme/basic.d.ts +1 -2
  67. package/cjs/theme/basic.js +4 -3
  68. package/cjs/theme/dark.d.ts +1 -2
  69. package/cjs/theme/dark.js +2 -3
  70. package/cjs/theme/github.dark.d.ts +1 -2
  71. package/cjs/theme/github.dark.js +2 -3
  72. package/cjs/theme/github.light.d.ts +1 -2
  73. package/cjs/theme/github.light.js +2 -3
  74. package/cjs/theme/gruvbox.d.ts +1 -2
  75. package/cjs/theme/gruvbox.js +2 -3
  76. package/cjs/theme/light.d.ts +1 -2
  77. package/cjs/theme/light.js +2 -3
  78. package/cjs/theme/monokai.d.ts +1 -2
  79. package/cjs/theme/monokai.js +2 -3
  80. package/cjs/theme/nord.d.ts +1 -2
  81. package/cjs/theme/nord.js +2 -3
  82. package/cjs/theme/vscode.d.ts +1 -2
  83. package/cjs/theme/vscode.js +2 -3
  84. package/cjs/types/Bigint.d.ts +1 -1
  85. package/cjs/types/Bigint.js +1 -2
  86. package/cjs/types/Date.d.ts +1 -1
  87. package/cjs/types/Date.js +1 -2
  88. package/cjs/types/False.d.ts +1 -1
  89. package/cjs/types/False.js +1 -2
  90. package/cjs/types/Float.d.ts +1 -1
  91. package/cjs/types/Float.js +1 -2
  92. package/cjs/types/Int.d.ts +1 -1
  93. package/cjs/types/Int.js +1 -2
  94. package/cjs/types/Map.d.ts +1 -1
  95. package/cjs/types/Map.js +1 -2
  96. package/cjs/types/Nan.d.ts +1 -1
  97. package/cjs/types/Nan.js +1 -2
  98. package/cjs/types/Null.d.ts +1 -1
  99. package/cjs/types/Null.js +1 -2
  100. package/cjs/types/Set.d.ts +1 -1
  101. package/cjs/types/Set.js +1 -2
  102. package/cjs/types/String.d.ts +1 -1
  103. package/cjs/types/String.js +1 -2
  104. package/cjs/types/True.d.ts +1 -1
  105. package/cjs/types/True.js +1 -2
  106. package/cjs/types/Undefined.d.ts +1 -1
  107. package/cjs/types/Undefined.js +1 -2
  108. package/cjs/types/Url.d.ts +1 -1
  109. package/cjs/types/Url.js +1 -2
  110. package/cjs/types/index.d.ts +3 -1
  111. package/cjs/types/index.js +96 -124
  112. package/cjs/utils/useHighlight.d.ts +0 -1
  113. package/cjs/utils/useRender.d.ts +1 -1
  114. package/editor.d.ts +22 -20
  115. package/esm/Container.d.ts +2 -0
  116. package/esm/Container.js +15 -7
  117. package/esm/arrow/TriangleArrow.js +1 -1
  118. package/esm/comps/Copied.d.ts +2 -4
  119. package/esm/comps/Copied.js +48 -16
  120. package/esm/comps/KeyValues.d.ts +2 -4
  121. package/esm/comps/KeyValues.js +53 -21
  122. package/esm/comps/NestedClose.d.ts +1 -0
  123. package/esm/comps/NestedClose.js +13 -3
  124. package/esm/comps/NestedOpen.d.ts +2 -3
  125. package/esm/comps/NestedOpen.js +33 -14
  126. package/esm/comps/Value.d.ts +1 -2
  127. package/esm/comps/Value.js +2 -4
  128. package/esm/comps/useIdCompat.d.ts +1 -0
  129. package/esm/comps/useIdCompat.js +8 -0
  130. package/esm/editor/KeyName.d.ts +2 -0
  131. package/esm/editor/KeyName.js +77 -0
  132. package/esm/editor/index.d.ts +18 -0
  133. package/esm/editor/index.js +33 -0
  134. package/esm/editor/store.d.ts +27 -0
  135. package/esm/editor/store.js +13 -0
  136. package/esm/index.d.ts +10 -3
  137. package/esm/index.js +10 -5
  138. package/esm/section/Copied.d.ts +1 -1
  139. package/esm/section/CountInfo.d.ts +1 -2
  140. package/esm/section/CountInfo.js +1 -1
  141. package/esm/section/CountInfoExtra.d.ts +1 -2
  142. package/esm/section/Ellipsis.d.ts +0 -1
  143. package/esm/section/Ellipsis.js +1 -1
  144. package/esm/section/KeyName.d.ts +7 -6
  145. package/esm/section/KeyName.js +6 -2
  146. package/esm/section/Row.d.ts +13 -0
  147. package/esm/section/Row.js +47 -0
  148. package/esm/store/Section.d.ts +12 -6
  149. package/esm/store/Section.js +4 -0
  150. package/esm/store/Symbols.d.ts +10 -3
  151. package/esm/store/Types.d.ts +29 -25
  152. package/esm/store/Types.js +6 -4
  153. package/esm/store.d.ts +8 -4
  154. package/esm/symbol/Arrow.d.ts +1 -1
  155. package/esm/symbol/BraceLeft.d.ts +1 -1
  156. package/esm/symbol/BraceRight.d.ts +1 -1
  157. package/esm/symbol/BracketsLeft.d.ts +1 -1
  158. package/esm/symbol/BracketsRight.d.ts +1 -1
  159. package/esm/symbol/Colon.d.ts +1 -1
  160. package/esm/symbol/Quote.d.ts +1 -1
  161. package/esm/symbol/ValueQuote.d.ts +1 -1
  162. package/esm/symbol/index.d.ts +11 -16
  163. package/esm/symbol/index.js +76 -23
  164. package/esm/theme/basic.d.ts +1 -2
  165. package/esm/theme/basic.js +2 -0
  166. package/esm/theme/dark.d.ts +1 -2
  167. package/esm/theme/github.dark.d.ts +1 -2
  168. package/esm/theme/github.light.d.ts +1 -2
  169. package/esm/theme/gruvbox.d.ts +1 -2
  170. package/esm/theme/light.d.ts +1 -2
  171. package/esm/theme/monokai.d.ts +1 -2
  172. package/esm/theme/nord.d.ts +1 -2
  173. package/esm/theme/vscode.d.ts +1 -2
  174. package/esm/types/Bigint.d.ts +1 -1
  175. package/esm/types/Date.d.ts +1 -1
  176. package/esm/types/False.d.ts +1 -1
  177. package/esm/types/Float.d.ts +1 -1
  178. package/esm/types/Int.d.ts +1 -1
  179. package/esm/types/Map.d.ts +1 -1
  180. package/esm/types/Nan.d.ts +1 -1
  181. package/esm/types/Null.d.ts +1 -1
  182. package/esm/types/Set.d.ts +1 -1
  183. package/esm/types/String.d.ts +1 -1
  184. package/esm/types/True.d.ts +1 -1
  185. package/esm/types/Undefined.d.ts +1 -1
  186. package/esm/types/Url.d.ts +1 -1
  187. package/esm/types/index.d.ts +3 -1
  188. package/esm/types/index.js +82 -100
  189. package/esm/utils/useHighlight.d.ts +0 -1
  190. package/esm/utils/useRender.d.ts +1 -1
  191. package/githubDark.d.ts +3 -0
  192. package/githubLight.d.ts +3 -0
  193. package/gruvbox.d.ts +3 -0
  194. package/monokai.d.ts +3 -0
  195. package/nord.d.ts +3 -0
  196. package/package.json +11 -5
  197. package/vscode.d.ts +3 -0
@@ -5,9 +5,10 @@ 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
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _react = require("react");
13
14
  var _store = require("../store");
@@ -15,23 +16,37 @@ var _Expands = require("../store/Expands");
15
16
  var _ShowTools = require("../store/ShowTools");
16
17
  var _Value = require("./Value");
17
18
  var _KeyName = require("../section/KeyName");
19
+ var _Row = require("../section/Row");
18
20
  var _Container = require("../Container");
19
21
  var _symbol = require("../symbol");
20
22
  var _useHighlight = require("../utils/useHighlight");
23
+ var _Copied = require("../comps/Copied");
24
+ var _useIdCompat = require("../comps/useIdCompat");
21
25
  var _jsxRuntime = require("react/jsx-runtime");
22
- var KeyValues = function KeyValues(props) {
26
+ var KeyValues = exports.KeyValues = function KeyValues(props) {
23
27
  var _expands$expandKey;
24
28
  var value = props.value,
25
29
  _props$expandKey = props.expandKey,
26
30
  expandKey = _props$expandKey === void 0 ? '' : _props$expandKey,
27
- level = props.level;
31
+ level = props.level,
32
+ _props$keys = props.keys,
33
+ keys = _props$keys === void 0 ? [] : _props$keys;
28
34
  var expands = (0, _Expands.useExpandsStore)();
29
35
  var _useStore = (0, _store.useStore)(),
30
36
  objectSortKeys = _useStore.objectSortKeys,
31
37
  indentWidth = _useStore.indentWidth,
32
- collapsed = _useStore.collapsed;
38
+ collapsed = _useStore.collapsed,
39
+ shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
33
40
  var isMyArray = Array.isArray(value);
34
- 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
+ }
35
50
  if (isExpanded) {
36
51
  return null;
37
52
  }
@@ -47,11 +62,13 @@ var KeyValues = function KeyValues(props) {
47
62
  b = _ref4[0];
48
63
  return typeof a === 'string' && typeof b === 'string' ? a.localeCompare(b) : 0;
49
64
  }) : entries.sort(function (_ref5, _ref6) {
50
- var _ref7 = (0, _slicedToArray2["default"])(_ref5, 1),
51
- a = _ref7[0];
52
- var _ref8 = (0, _slicedToArray2["default"])(_ref6, 1),
53
- b = _ref8[0];
54
- return typeof a === 'string' && typeof b === 'string' ? objectSortKeys(a, b) : 0;
65
+ var _ref7 = (0, _slicedToArray2["default"])(_ref5, 2),
66
+ a = _ref7[0],
67
+ valA = _ref7[1];
68
+ var _ref8 = (0, _slicedToArray2["default"])(_ref6, 2),
69
+ b = _ref8[0],
70
+ valB = _ref8[1];
71
+ return typeof a === 'string' && typeof b === 'string' ? objectSortKeys(a, b, valA, valB) : 0;
55
72
  });
56
73
  }
57
74
  var style = {
@@ -69,16 +86,18 @@ var KeyValues = function KeyValues(props) {
69
86
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(KeyValuesItem, {
70
87
  parentValue: value,
71
88
  keyName: key,
89
+ keys: [].concat((0, _toConsumableArray2["default"])(keys), [key]),
72
90
  value: val,
73
91
  level: level
74
92
  }, idx);
75
93
  })
76
94
  });
77
95
  };
78
- exports.KeyValues = KeyValues;
79
96
  KeyValues.displayName = 'JVR.KeyValues';
80
- var KayName = function KayName(props) {
97
+ var KayName = exports.KayName = function KayName(props) {
81
98
  var keyName = props.keyName,
99
+ parentValue = props.parentValue,
100
+ keys = props.keys,
82
101
  value = props.value;
83
102
  var _useStore2 = (0, _store.useStore)(),
84
103
  highlightUpdates = _useStore2.highlightUpdates;
@@ -89,33 +108,38 @@ var KayName = function KayName(props) {
89
108
  highlightUpdates: highlightUpdates,
90
109
  highlightContainer: highlightContainer
91
110
  });
111
+ var compProps = {
112
+ keyName: keyName,
113
+ value: value,
114
+ keys: keys,
115
+ parentValue: parentValue
116
+ };
92
117
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.Fragment, {
93
118
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
94
119
  ref: highlightContainer,
95
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
120
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
96
121
  isNumber: isNumber,
97
122
  "data-placement": "left"
98
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, {
99
- keyName: keyName,
100
- value: value,
123
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, compProps), {}, {
101
124
  children: keyName
102
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
125
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, (0, _objectSpread2["default"])({
103
126
  isNumber: isNumber,
104
127
  "data-placement": "right"
105
- })]
106
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, {})]
128
+ }, compProps))]
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Colon, (0, _objectSpread2["default"])({}, compProps))]
107
130
  });
108
131
  };
109
- exports.KayName = KayName;
110
132
  KayName.displayName = 'JVR.KayName';
111
- var KeyValuesItem = function KeyValuesItem(props) {
133
+ var KeyValuesItem = exports.KeyValuesItem = function KeyValuesItem(props) {
112
134
  var keyName = props.keyName,
113
135
  value = props.value,
114
136
  parentValue = props.parentValue,
115
137
  _props$level = props.level,
116
- level = _props$level === void 0 ? 0 : _props$level;
138
+ level = _props$level === void 0 ? 0 : _props$level,
139
+ _props$keys2 = props.keys,
140
+ keys = _props$keys2 === void 0 ? [] : _props$keys2;
117
141
  var dispatch = (0, _ShowTools.useShowToolsDispatch)();
118
- var subkeyid = (0, _react.useId)();
142
+ var subkeyid = (0, _useIdCompat.useIdCompat)();
119
143
  var isMyArray = Array.isArray(value);
120
144
  var isMySet = value instanceof Set;
121
145
  var isMyMap = value instanceof Map;
@@ -130,6 +154,7 @@ var KeyValuesItem = function KeyValuesItem(props) {
130
154
  value: myValue,
131
155
  parentValue: parentValue,
132
156
  initialValue: value,
157
+ keys: keys,
133
158
  level: level + 1
134
159
  });
135
160
  }
@@ -141,18 +166,28 @@ var KeyValuesItem = function KeyValuesItem(props) {
141
166
  return dispatch((0, _defineProperty2["default"])({}, subkeyid, false));
142
167
  }
143
168
  };
144
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
145
- className: "w-rjv-line"
169
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Row.RowComp, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
170
+ className: "w-rjv-line",
171
+ value: value,
172
+ keyName: keyName,
173
+ keys: keys,
174
+ parentValue: parentValue
146
175
  }, reset), {}, {
147
176
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(KayName, {
148
177
  keyName: keyName,
149
- value: value
178
+ value: value,
179
+ keys: keys,
180
+ parentValue: parentValue
150
181
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Value.Value, {
182
+ keyName: keyName,
183
+ value: value
184
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Copied.Copied, {
151
185
  keyName: keyName,
152
186
  value: value,
187
+ keys: keys,
188
+ parentValue: parentValue,
153
189
  expandKey: subkeyid
154
190
  })]
155
191
  }));
156
192
  };
157
- exports.KeyValuesItem = KeyValuesItem;
158
193
  KeyValuesItem.displayName = 'JVR.KeyValuesItem';
@@ -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;
@@ -8,18 +8,29 @@ var _store = require("../store");
8
8
  var _Expands = require("../store/Expands");
9
9
  var _symbol = require("../symbol");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
- var NestedClose = function NestedClose(props) {
11
+ 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
  }
@@ -34,5 +45,4 @@ var NestedClose = function NestedClose(props) {
34
45
  })
35
46
  });
36
47
  };
37
- exports.NestedClose = NestedClose;
38
48
  NestedClose.displayName = 'JVR.NestedClose';
@@ -1,6 +1,5 @@
1
- export interface NestedOpenProps<T extends object> {
2
- keyName?: string | number;
3
- value?: T;
1
+ import { type SectionElementResult } from '../store/Section';
2
+ export interface NestedOpenProps<T extends object> extends SectionElementResult<T> {
4
3
  initialValue?: T;
5
4
  expandKey: string;
6
5
  level: number;
@@ -18,22 +18,35 @@ var _symbol = require("../symbol");
18
18
  var _Ellipsis = require("../section/Ellipsis");
19
19
  var _types = require("../types");
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
- var NestedOpen = function NestedOpen(props) {
21
+ var NestedOpen = exports.NestedOpen = function NestedOpen(props) {
22
22
  var _expands$expandKey;
23
23
  var keyName = props.keyName,
24
24
  expandKey = props.expandKey,
25
+ _props$keys = props.keys,
26
+ keys = _props$keys === void 0 ? [] : _props$keys,
25
27
  initialValue = props.initialValue,
26
28
  value = props.value,
29
+ parentValue = props.parentValue,
27
30
  level = props.level;
28
31
  var expands = (0, _Expands.useExpandsStore)();
29
32
  var dispatchExpands = (0, _Expands.useExpandsDispatch)();
30
33
  var _useStore = (0, _store.useStore)(),
31
34
  onExpand = _useStore.onExpand,
32
- collapsed = _useStore.collapsed;
35
+ collapsed = _useStore.collapsed,
36
+ shouldExpandNodeInitially = _useStore.shouldExpandNodeInitially;
33
37
  var isArray = Array.isArray(value);
34
38
  var isMySet = value instanceof Set;
35
- 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;
36
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
+ }
37
50
  var click = function click() {
38
51
  var opt = {
39
52
  expand: !isExpanded,
@@ -60,26 +73,32 @@ var NestedOpen = function NestedOpen(props) {
60
73
  if (showArrow) {
61
74
  reset.onClick = click;
62
75
  }
76
+ var compProps = {
77
+ keyName: keyName,
78
+ value: value,
79
+ keys: keys,
80
+ parentValue: parentValue
81
+ };
63
82
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
64
- children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, {
83
+ children: [showArrow && /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Arrow, (0, _objectSpread2["default"])({
65
84
  style: arrowStyle,
66
85
  expandKey: expandKey
67
- }), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, {
86
+ }, compProps)), (keyName || typeof keyName === 'number') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyValues.KayName, (0, _objectSpread2["default"])({}, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.SetComp, {
87
+ value: initialValue,
68
88
  keyName: keyName
69
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.SetComp, {
70
- value: initialValue
71
89
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.MapComp, {
72
- value: initialValue
73
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, {
90
+ value: initialValue,
91
+ keyName: keyName
92
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsOpen, (0, _objectSpread2["default"])({
74
93
  isBrackets: isArray || isMySet
75
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
94
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Ellipsis.EllipsisComp, {
76
95
  keyName: keyName,
77
96
  value: value,
78
97
  isExpanded: isExpanded
79
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, {
98
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.BracketsClose, (0, _objectSpread2["default"])({
80
99
  isVisiable: isExpanded || !showArrow,
81
100
  isBrackets: isArray || isMySet
82
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
101
+ }, compProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfo.CountInfoComp, {
83
102
  value: value,
84
103
  keyName: keyName
85
104
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CountInfoExtra.CountInfoExtraComps, {
@@ -88,9 +107,10 @@ var NestedOpen = function NestedOpen(props) {
88
107
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Copied.Copied, {
89
108
  keyName: keyName,
90
109
  value: value,
91
- expandKey: expandKey
110
+ expandKey: expandKey,
111
+ parentValue: parentValue,
112
+ keys: keys
92
113
  })]
93
114
  }));
94
115
  };
95
- exports.NestedOpen = NestedOpen;
96
116
  NestedOpen.displayName = 'JVR.NestedOpen';
@@ -1,8 +1,7 @@
1
1
  export declare const isFloat: (n: number) => boolean;
2
2
  interface ValueProps {
3
- value?: unknown;
3
+ value: unknown;
4
4
  keyName: string | number;
5
- expandKey: string;
6
5
  }
7
6
  export declare const Value: {
8
7
  (props: ValueProps): import("react/jsx-runtime").JSX.Element | null;
@@ -8,17 +8,14 @@ exports.isFloat = exports.Value = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _types = require("../types");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
- var isFloat = function isFloat(n) {
11
+ var isFloat = exports.isFloat = function isFloat(n) {
12
12
  return Number(n) === n && n % 1 !== 0 || isNaN(n);
13
13
  };
14
- exports.isFloat = isFloat;
15
- var Value = function Value(props) {
14
+ var Value = exports.Value = function Value(props) {
16
15
  var value = props.value,
17
- keyName = props.keyName,
18
- expandKey = props.expandKey;
16
+ keyName = props.keyName;
19
17
  var reset = {
20
- keyName: keyName,
21
- expandKey: expandKey
18
+ keyName: keyName
22
19
  };
23
20
  if (value instanceof URL) {
24
21
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeUrl, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
@@ -74,5 +71,4 @@ var Value = function Value(props) {
74
71
  }
75
72
  return null;
76
73
  };
77
- exports.Value = Value;
78
74
  Value.displayName = 'JVR.Value';
@@ -0,0 +1 @@
1
+ export declare function useIdCompat(): string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIdCompat = useIdCompat;
7
+ var _react = require("react");
8
+ function useIdCompat() {
9
+ var idRef = (0, _react.useRef)(null);
10
+ if (idRef.current === null) {
11
+ idRef.current = 'custom-id-' + Math.random().toString(36).substr(2, 9);
12
+ }
13
+ return idRef.current;
14
+ }
@@ -0,0 +1,2 @@
1
+ import { type SectionElementProps } from '../store/Section';
2
+ export declare const KeyNameRender: SectionElementProps['render'];
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.KeyNameRender = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("react");
12
+ var _store = require("./store");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ var _excluded = ["children"],
15
+ _excluded2 = ["value", "parentValue", "keyName"];
16
+ var KeyNameRender = exports.KeyNameRender = function KeyNameRender(_ref, _ref2) {
17
+ var children = _ref.children,
18
+ reset = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
19
+ var value = _ref2.value,
20
+ parentValue = _ref2.parentValue,
21
+ keyName = _ref2.keyName;
22
+ if (typeof children === 'number') {
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
24
+ children: children
25
+ }));
26
+ }
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Child, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
28
+ value: value,
29
+ parentValue: parentValue,
30
+ keyName: keyName,
31
+ children: children
32
+ }));
33
+ };
34
+ var Child = function Child(props) {
35
+ var value = props.value,
36
+ parentValue = props.parentValue,
37
+ keyName = props.keyName,
38
+ reset = (0, _objectWithoutProperties2["default"])(props, _excluded2);
39
+ var $dom = (0, _react.useRef)(null);
40
+ var _useState = (0, _react.useState)(props.children),
41
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
42
+ currentValue = _useState2[0],
43
+ setCurrentValue = _useState2[1];
44
+ var _useStore = (0, _store.useStore)(),
45
+ onEdit = _useStore.onEdit;
46
+ var onKeyDown = function onKeyDown(evn) {
47
+ if (evn.key === 'Enter') {
48
+ var _$dom$current;
49
+ (_$dom$current = $dom.current) === null || _$dom$current === void 0 || _$dom$current.setAttribute('contentEditable', 'false');
50
+ }
51
+ };
52
+ var onClick = function onClick(evn) {
53
+ var _$dom$current2, _$dom$current3;
54
+ evn.stopPropagation();
55
+ (_$dom$current2 = $dom.current) === null || _$dom$current2 === void 0 || _$dom$current2.setAttribute('contentEditable', 'true');
56
+ (_$dom$current3 = $dom.current) === null || _$dom$current3 === void 0 || _$dom$current3.focus();
57
+ };
58
+ var onBlur = function onBlur(evn) {
59
+ var _$dom$current4;
60
+ (_$dom$current4 = $dom.current) === null || _$dom$current4 === void 0 || _$dom$current4.setAttribute('contentEditable', 'false');
61
+ var callback = onEdit && onEdit({
62
+ value: evn.target.textContent,
63
+ oldValue: value,
64
+ keyName: keyName
65
+ });
66
+ if (callback) {
67
+ setCurrentValue(evn.target.textContent);
68
+ }
69
+ };
70
+ var spanProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
71
+ onKeyDown: onKeyDown,
72
+ onClick: onClick,
73
+ onBlur: onBlur,
74
+ spellCheck: false,
75
+ contentEditable: 'false',
76
+ suppressContentEditableWarning: true,
77
+ children: currentValue
78
+ });
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, spanProps), {}, {
80
+ ref: $dom
81
+ }));
82
+ };
@@ -0,0 +1,18 @@
1
+ import { type JsonViewProps } from '../';
2
+ export interface JsonViewEditorProps<T extends object> extends Omit<JsonViewProps<T>, 'shortenTextAfterLength'> {
3
+ /**
4
+ * When a callback function is passed in, edit functionality is enabled. The callback is invoked before edits are completed.
5
+ * @returns {boolean} Returning false from onEdit will prevent the change from being made.
6
+ */
7
+ onEdit?: (option: {
8
+ value: unknown;
9
+ oldValue: unknown;
10
+ keyName?: string | number;
11
+ parentName?: string | number;
12
+ type?: 'value' | 'key';
13
+ }) => boolean;
14
+ /** Whether enable edit feature. @default true */
15
+ editable?: boolean;
16
+ }
17
+ declare const JsonViewEditor: import("react").ForwardRefExoticComponent<Omit<JsonViewEditorProps<object>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
18
+ export default JsonViewEditor;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = require("react");
12
+ var _ = _interopRequireDefault(require("../"));
13
+ var _KeyName = require("./KeyName");
14
+ var _store = require("./store");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ var _excluded = ["children", "onEdit", "editable"];
17
+ var JsonViewEditor = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
18
+ var children = props.children,
19
+ onEdit = props.onEdit,
20
+ _props$editable = props.editable,
21
+ editable = _props$editable === void 0 ? true : _props$editable,
22
+ reset = (0, _objectWithoutProperties2["default"])(props, _excluded);
23
+ var _useStoreReducer = (0, _store.useStoreReducer)({
24
+ onEdit: onEdit
25
+ }),
26
+ _useStoreReducer2 = (0, _slicedToArray2["default"])(_useStoreReducer, 2),
27
+ state = _useStoreReducer2[0],
28
+ dispatch = _useStoreReducer2[1];
29
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_store.Context.Provider, {
30
+ value: state,
31
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_store.Dispatch.Provider, {
32
+ value: dispatch,
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_["default"], (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
34
+ shortenTextAfterLength: 0,
35
+ ref: ref,
36
+ children: [editable && /*#__PURE__*/(0, _jsxRuntime.jsx)(_["default"].KeyName, {
37
+ render: _KeyName.KeyNameRender
38
+ }), children]
39
+ }))
40
+ })
41
+ });
42
+ });
43
+ var _default = exports["default"] = JsonViewEditor;
44
+ module.exports = exports.default;
@@ -0,0 +1,27 @@
1
+ type InitialState = {
2
+ /**
3
+ * When a callback function is passed in, edit functionality is enabled. The callback is invoked before edits are completed.
4
+ * @returns {boolean} Returning false from onEdit will prevent the change from being made.
5
+ */
6
+ onEdit?: (option: {
7
+ value: unknown;
8
+ oldValue: unknown;
9
+ keyName?: string | number;
10
+ parentName?: string | number;
11
+ type?: 'value' | 'key';
12
+ }) => boolean;
13
+ };
14
+ type Dispatch = React.Dispatch<InitialState>;
15
+ export declare const Context: import("react").Context<InitialState>;
16
+ export declare const Dispatch: import("react").Context<Dispatch>;
17
+ export declare const useStore: () => InitialState;
18
+ export declare function useStoreReducer(initialState: InitialState): [{
19
+ onEdit?: (option: {
20
+ value: unknown;
21
+ oldValue: unknown;
22
+ keyName?: string | number;
23
+ parentName?: string | number;
24
+ type?: "value" | "key";
25
+ }) => boolean;
26
+ }, import("react").Dispatch<InitialState>];
27
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useStore = exports.Dispatch = exports.Context = void 0;
8
+ exports.useStoreReducer = useStoreReducer;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _react = require("react");
11
+ var initialState = {};
12
+ var Context = exports.Context = /*#__PURE__*/(0, _react.createContext)(initialState);
13
+ var reducer = function reducer(state, action) {
14
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), action);
15
+ };
16
+ var Dispatch = exports.Dispatch = /*#__PURE__*/(0, _react.createContext)(function () {});
17
+ Dispatch.displayName = 'JVR.Editor.Dispatch';
18
+ var useStore = exports.useStore = function useStore() {
19
+ return (0, _react.useContext)(Context);
20
+ };
21
+ function useStoreReducer(initialState) {
22
+ return (0, _react.useReducer)(reducer, initialState);
23
+ }
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { BraceLeft } from './symbol/BraceLeft';
3
2
  import { BraceRight } from './symbol/BraceRight';
4
3
  import { BracketsLeft } from './symbol/BracketsLeft';
@@ -25,6 +24,7 @@ import { CountInfo } from './section/CountInfo';
25
24
  import { CountInfoExtra } from './section/CountInfoExtra';
26
25
  import { Ellipsis } from './section/Ellipsis';
27
26
  import { KeyName } from './section/KeyName';
27
+ import { Row } from './section/Row';
28
28
  export * from './store';
29
29
  export * from './store/Expands';
30
30
  export * from './store/ShowTools';
@@ -37,7 +37,7 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
37
37
  /** Define the root node name. @default undefined */
38
38
  keyName?: string | number;
39
39
  /** Whether sort keys through `String.prototype.localeCompare()` @default false */
40
- objectSortKeys?: boolean | ((a: string, b: string) => number);
40
+ objectSortKeys?: boolean | ((keyA: string, keyB: string, valueA: T, valueB: T) => number);
41
41
  /** Set the indent-width for nested objects @default 15 */
42
42
  indentWidth?: number;
43
43
  /** When set to `true`, `objects` and `arrays` are labeled with size @default true */
@@ -48,9 +48,15 @@ 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
- /** Shorten long JSON strings, Set to `0` to disable this feature @default 20 */
59
+ /** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
54
60
  shortenTextAfterLength?: number;
55
61
  /** Callback function for when a treeNode is expanded or collapsed */
56
62
  onExpand?: (props: {
@@ -89,6 +95,7 @@ type JsonViewComponent = React.FC<React.PropsWithRef<JsonViewProps<object>>> & {
89
95
  CountInfo: typeof CountInfo;
90
96
  CountInfoExtra: typeof CountInfoExtra;
91
97
  KeyName: typeof KeyName;
98
+ Row: typeof Row;
92
99
  };
93
100
  declare const JsonView: JsonViewComponent;
94
101
  export default JsonView;