@uiw/react-json-view 1.11.1 → 1.12.0

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
@@ -229,9 +229,11 @@ const customTheme = {
229
229
  '--w-rjv-type-boolean-color': '#559bd4',
230
230
  '--w-rjv-type-date-color': '#586e75',
231
231
  '--w-rjv-type-url-color': '#0969da',
232
- '--w-rjv-type-null-color': '#d33682',
233
232
  '--w-rjv-type-nan-color': '#859900',
234
233
  '--w-rjv-type-undefined-color': '#586e75',
234
+ '--w-rjv-type-null-color': '#d33682',
235
+ '--w-rjv-type-set-color': '#268bd2',
236
+ '--w-rjv-type-map-color': '#268bd2',
235
237
  };
236
238
 
237
239
  export default function Demo() {
package/cjs/node.d.ts CHANGED
@@ -7,6 +7,8 @@ export interface RootNodeProps<T extends object> extends JsonViewProps<T> {
7
7
  keyid?: string;
8
8
  level?: number;
9
9
  parentValue?: T;
10
+ isSet?: boolean;
11
+ isMap?: boolean;
10
12
  namespace?: Array<string | number>;
11
13
  setParentValue?: React.Dispatch<React.SetStateAction<T>>;
12
14
  }
package/cjs/node.js CHANGED
@@ -19,7 +19,7 @@ var _copied = require("./copied");
19
19
  var _ellipsis = require("./comps/ellipsis");
20
20
  var _meta = require("./comps/meta");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
- var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "shortenTextAfterLength", "collapsed", "level", "keyid", "quotes", "namespace", "onCopied", "onExpand", "parentValue", "setParentValue"];
22
+ var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "shortenTextAfterLength", "collapsed", "level", "keyid", "quotes", "namespace", "isSet", "isMap", "onCopied", "onExpand", "parentValue", "setParentValue"];
23
23
  function getLength(obj) {
24
24
  try {
25
25
  return Object.keys(obj).length;
@@ -72,6 +72,10 @@ var RootNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
72
72
  quotes = _props$quotes === void 0 ? '"' : _props$quotes,
73
73
  _props$namespace = props.namespace,
74
74
  namespace = _props$namespace === void 0 ? [] : _props$namespace,
75
+ _props$isSet = props.isSet,
76
+ isSet = _props$isSet === void 0 ? false : _props$isSet,
77
+ _props$isMap = props.isMap,
78
+ isMap = _props$isMap === void 0 ? false : _props$isMap,
75
79
  onCopied = props.onCopied,
76
80
  onExpand = props.onExpand,
77
81
  parentValue = props.parentValue,
@@ -220,6 +224,10 @@ var RootNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
220
224
  parentName: keyName,
221
225
  color: typeof keyName === 'number' ? _value.typeMap['number'].color : ''
222
226
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Colon, {})]
227
+ }), isSet && /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Type, {
228
+ type: "Set"
229
+ }), isMap && /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Type, {
230
+ type: "Map"
223
231
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_meta.Meta, {
224
232
  start: true,
225
233
  isArray: isArray,
@@ -250,35 +258,40 @@ var RootNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
250
258
  key = _ref11[0],
251
259
  itemVal = _ref11[1];
252
260
  var item = itemVal;
253
- var isEmpty = Array.isArray(item) && item.length === 0 || (0, _typeof2["default"])(item) === 'object' && item && !(item instanceof Date) && Object.keys(item).length === 0;
254
- if (Array.isArray(item) && !isEmpty) {
261
+ var isMySet = item instanceof Set;
262
+ var isMyMap = item instanceof Map;
263
+ var myValue = isMySet ? Array.from(item) : isMyMap ? Object.fromEntries(item) : item;
264
+ var isEmpty = Array.isArray(myValue) && myValue.length === 0 || (0, _typeof2["default"])(myValue) === 'object' && myValue && !(myValue instanceof Date) && Object.keys(myValue).length === 0;
265
+ if ((Array.isArray(myValue) || isMySet || isMyMap) && !isEmpty) {
255
266
  var label = isArray ? idx : key;
256
267
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Line, {
257
268
  className: "w-rjv-wrap",
258
269
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(RootNode, (0, _objectSpread2["default"])({
259
- value: item,
270
+ value: myValue,
271
+ isSet: isMySet,
272
+ isMap: isMyMap,
260
273
  namespace: [].concat((0, _toConsumableArray2["default"])(namespace), [label]),
261
274
  keyName: label,
262
275
  keyid: keyid + subkeyid + label
263
276
  }, subNodeProps))
264
277
  }, label + idx);
265
278
  }
266
- if ((0, _typeof2["default"])(item) === 'object' && item && !(item instanceof Date) && !isEmpty) {
279
+ if ((0, _typeof2["default"])(myValue) === 'object' && myValue && !(myValue instanceof Date) && !isEmpty) {
267
280
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Line, {
268
281
  className: "w-rjv-wrap",
269
282
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(RootNode, (0, _objectSpread2["default"])({
270
- value: item,
283
+ value: myValue,
271
284
  namespace: [].concat((0, _toConsumableArray2["default"])(namespace), [key]),
272
285
  keyName: key,
273
286
  keyid: keyid + subkeyid + key
274
287
  }, subNodeProps))
275
288
  }, key + '' + idx);
276
289
  }
277
- if (typeof item === 'function') {
290
+ if (typeof myValue === 'function') {
278
291
  return;
279
292
  }
280
293
  var renderKey = /*#__PURE__*/(0, _jsxRuntime.jsx)(_semicolon.Semicolon, {
281
- value: item,
294
+ value: myValue,
282
295
  "data-keys": keyid,
283
296
  quotes: quotes,
284
297
  namespace: [].concat((0, _toConsumableArray2["default"])(namespace), [key]),
@@ -288,7 +301,7 @@ var RootNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
288
301
  color: typeof key === 'number' ? _value.typeMap['number'].color : '',
289
302
  keyName: key
290
303
  });
291
- var length = Array.isArray(item) ? item.length : getLength(item);
304
+ var length = Array.isArray(myValue) ? myValue.length : getLength(myValue);
292
305
  countInfo = /*#__PURE__*/(0, _jsxRuntime.jsx)(CountInfo, {
293
306
  children: length
294
307
  });
@@ -306,7 +319,8 @@ var RootNode = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
306
319
  countInfo: countInfo,
307
320
  renderKey: renderKey,
308
321
  keyName: key,
309
- value: item
322
+ isSet: isSet,
323
+ value: myValue
310
324
  }), idx);
311
325
  })
312
326
  }), expand && /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Line, {
package/cjs/value.d.ts CHANGED
@@ -35,6 +35,14 @@ export declare const typeMap: {
35
35
  color: string;
36
36
  label: string;
37
37
  };
38
+ Set: {
39
+ color: string;
40
+ label: string;
41
+ };
42
+ Map: {
43
+ color: string;
44
+ label: string;
45
+ };
38
46
  NaN: {
39
47
  color: string;
40
48
  label: string;
@@ -53,6 +61,7 @@ export interface ValueViewProps<T extends object> extends React.DetailedHTMLProp
53
61
  displayDataTypes: boolean;
54
62
  displayObjectSize: boolean;
55
63
  enableClipboard: boolean;
64
+ isSet: boolean;
56
65
  indentWidth: number;
57
66
  level?: number;
58
67
  shortenTextAfterLength?: JsonViewProps<T>['shortenTextAfterLength'];
@@ -64,7 +73,7 @@ export interface ValueViewProps<T extends object> extends React.DetailedHTMLProp
64
73
  setValue?: React.Dispatch<React.SetStateAction<T>>;
65
74
  }
66
75
  export declare function getValueString<T>(value: T): {
67
- type: "string" | "number" | "bigint" | "boolean" | "undefined" | "date" | "url" | "float" | "null" | "NaN";
76
+ type: "string" | "number" | "bigint" | "boolean" | "undefined" | "date" | "url" | "float" | "null" | "Set" | "Map" | "NaN";
68
77
  content: string;
69
78
  };
70
79
  export declare function ValueView<T extends object>(props: ValueViewProps<T>): import("react/jsx-runtime").JSX.Element;
package/cjs/value.js CHANGED
@@ -19,7 +19,7 @@ var _jsxRuntime = require("react/jsx-runtime");
19
19
  var _excluded = ["children", "style"],
20
20
  _excluded2 = ["children", "length", "style"],
21
21
  _excluded3 = ["color", "style", "isURL", "href", "children"],
22
- _excluded4 = ["value", "parentValue", "setValue", "countInfo", "data", "keyName", "indentWidth", "namespace", "renderKey", "components", "quotes", "level", "enableClipboard", "displayObjectSize", "displayDataTypes", "shortenTextAfterLength"],
22
+ _excluded4 = ["value", "parentValue", "setValue", "countInfo", "data", "keyName", "indentWidth", "isSet", "namespace", "renderKey", "components", "quotes", "level", "enableClipboard", "displayObjectSize", "displayDataTypes", "shortenTextAfterLength"],
23
23
  _excluded5 = ["children", "color", "fontSize", "opacity", "paddingRight", "style"];
24
24
  var Line = function Line(props) {
25
25
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])({}, props));
@@ -63,6 +63,14 @@ var typeMap = {
63
63
  color: 'var(--w-rjv-type-null-color, #d33682)',
64
64
  label: 'null'
65
65
  },
66
+ Set: {
67
+ color: 'var(--w-rjv-type-set-color, #268bd2)',
68
+ label: 'Set'
69
+ },
70
+ Map: {
71
+ color: 'var(--w-rjv-type-map-color, #268bd2)',
72
+ label: 'Map'
73
+ },
66
74
  NaN: {
67
75
  color: 'var(--w-rjv-type-nan-color, #859900)',
68
76
  label: 'NaN'
@@ -146,7 +154,6 @@ var RenderShortenTextValue = function RenderShortenTextValue(_ref2) {
146
154
  shorten = _useState2[0],
147
155
  setShorten = _useState2[1];
148
156
  var click = function click() {
149
- console.log(shorten);
150
157
  if (length && childrenStr.length <= length) return setShorten(false);
151
158
  setShorten(!shorten);
152
159
  };
@@ -193,6 +200,7 @@ function ValueView(props) {
193
200
  data = props.data,
194
201
  keyName = props.keyName,
195
202
  indentWidth = props.indentWidth,
203
+ isSet = props.isSet,
196
204
  namespace = props.namespace,
197
205
  renderKey = props.renderKey,
198
206
  _props$components = props.components,
package/esm/node.d.ts CHANGED
@@ -7,6 +7,8 @@ export interface RootNodeProps<T extends object> extends JsonViewProps<T> {
7
7
  keyid?: string;
8
8
  level?: number;
9
9
  parentValue?: T;
10
+ isSet?: boolean;
11
+ isMap?: boolean;
10
12
  namespace?: Array<string | number>;
11
13
  setParentValue?: React.Dispatch<React.SetStateAction<T>>;
12
14
  }
package/esm/node.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
3
- var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "shortenTextAfterLength", "collapsed", "level", "keyid", "quotes", "namespace", "onCopied", "onExpand", "parentValue", "setParentValue"];
3
+ var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "shortenTextAfterLength", "collapsed", "level", "keyid", "quotes", "namespace", "isSet", "isMap", "onCopied", "onExpand", "parentValue", "setParentValue"];
4
4
  import { Fragment, useId, cloneElement, useState, useEffect, forwardRef } from 'react';
5
- import { ValueView, Colon, Label, Line, typeMap } from './value';
5
+ import { ValueView, Type, Colon, Label, Line, typeMap } from './value';
6
6
  import { TriangleArrow } from './arrow/TriangleArrow';
7
7
  import { useExpandsStatus, store } from './store';
8
8
  import { Semicolon } from './semicolon';
@@ -52,6 +52,8 @@ export var RootNode = /*#__PURE__*/forwardRef((props, ref) => {
52
52
  keyid = 'root',
53
53
  quotes = '"',
54
54
  namespace = [],
55
+ isSet = false,
56
+ isMap = false,
55
57
  onCopied,
56
58
  onExpand,
57
59
  parentValue,
@@ -181,6 +183,10 @@ export var RootNode = /*#__PURE__*/forwardRef((props, ref) => {
181
183
  parentName: keyName,
182
184
  color: typeof keyName === 'number' ? typeMap['number'].color : ''
183
185
  }), /*#__PURE__*/_jsx(Colon, {})]
186
+ }), isSet && /*#__PURE__*/_jsx(Type, {
187
+ type: "Set"
188
+ }), isMap && /*#__PURE__*/_jsx(Type, {
189
+ type: "Map"
184
190
  }), /*#__PURE__*/_jsx(Meta, {
185
191
  start: true,
186
192
  isArray: isArray,
@@ -209,35 +215,40 @@ export var RootNode = /*#__PURE__*/forwardRef((props, ref) => {
209
215
  children: entries.length > 0 && [...entries].map((_ref6, idx) => {
210
216
  var [key, itemVal] = _ref6;
211
217
  var item = itemVal;
212
- var isEmpty = Array.isArray(item) && item.length === 0 || typeof item === 'object' && item && !(item instanceof Date) && Object.keys(item).length === 0;
213
- if (Array.isArray(item) && !isEmpty) {
218
+ var isMySet = item instanceof Set;
219
+ var isMyMap = item instanceof Map;
220
+ var myValue = isMySet ? Array.from(item) : isMyMap ? Object.fromEntries(item) : item;
221
+ var isEmpty = Array.isArray(myValue) && myValue.length === 0 || typeof myValue === 'object' && myValue && !(myValue instanceof Date) && Object.keys(myValue).length === 0;
222
+ if ((Array.isArray(myValue) || isMySet || isMyMap) && !isEmpty) {
214
223
  var label = isArray ? idx : key;
215
224
  return /*#__PURE__*/_jsx(Line, {
216
225
  className: "w-rjv-wrap",
217
226
  children: /*#__PURE__*/_jsx(RootNode, _extends({
218
- value: item,
227
+ value: myValue,
228
+ isSet: isMySet,
229
+ isMap: isMyMap,
219
230
  namespace: [...namespace, label],
220
231
  keyName: label,
221
232
  keyid: keyid + subkeyid + label
222
233
  }, subNodeProps))
223
234
  }, label + idx);
224
235
  }
225
- if (typeof item === 'object' && item && !(item instanceof Date) && !isEmpty) {
236
+ if (typeof myValue === 'object' && myValue && !(myValue instanceof Date) && !isEmpty) {
226
237
  return /*#__PURE__*/_jsx(Line, {
227
238
  className: "w-rjv-wrap",
228
239
  children: /*#__PURE__*/_jsx(RootNode, _extends({
229
- value: item,
240
+ value: myValue,
230
241
  namespace: [...namespace, key],
231
242
  keyName: key,
232
243
  keyid: keyid + subkeyid + key
233
244
  }, subNodeProps))
234
245
  }, key + '' + idx);
235
246
  }
236
- if (typeof item === 'function') {
247
+ if (typeof myValue === 'function') {
237
248
  return;
238
249
  }
239
250
  var renderKey = /*#__PURE__*/_jsx(Semicolon, {
240
- value: item,
251
+ value: myValue,
241
252
  "data-keys": keyid,
242
253
  quotes: quotes,
243
254
  namespace: [...namespace, key],
@@ -247,7 +258,7 @@ export var RootNode = /*#__PURE__*/forwardRef((props, ref) => {
247
258
  color: typeof key === 'number' ? typeMap['number'].color : '',
248
259
  keyName: key
249
260
  });
250
- var length = Array.isArray(item) ? item.length : getLength(item);
261
+ var length = Array.isArray(myValue) ? myValue.length : getLength(myValue);
251
262
  countInfo = /*#__PURE__*/_jsx(CountInfo, {
252
263
  children: length
253
264
  });
@@ -265,7 +276,8 @@ export var RootNode = /*#__PURE__*/forwardRef((props, ref) => {
265
276
  countInfo: countInfo,
266
277
  renderKey: renderKey,
267
278
  keyName: key,
268
- value: item
279
+ isSet: isSet,
280
+ value: myValue
269
281
  }), idx);
270
282
  })
271
283
  }), expand && /*#__PURE__*/_jsx(Line, {
package/esm/value.d.ts CHANGED
@@ -35,6 +35,14 @@ export declare const typeMap: {
35
35
  color: string;
36
36
  label: string;
37
37
  };
38
+ Set: {
39
+ color: string;
40
+ label: string;
41
+ };
42
+ Map: {
43
+ color: string;
44
+ label: string;
45
+ };
38
46
  NaN: {
39
47
  color: string;
40
48
  label: string;
@@ -53,6 +61,7 @@ export interface ValueViewProps<T extends object> extends React.DetailedHTMLProp
53
61
  displayDataTypes: boolean;
54
62
  displayObjectSize: boolean;
55
63
  enableClipboard: boolean;
64
+ isSet: boolean;
56
65
  indentWidth: number;
57
66
  level?: number;
58
67
  shortenTextAfterLength?: JsonViewProps<T>['shortenTextAfterLength'];
@@ -64,7 +73,7 @@ export interface ValueViewProps<T extends object> extends React.DetailedHTMLProp
64
73
  setValue?: React.Dispatch<React.SetStateAction<T>>;
65
74
  }
66
75
  export declare function getValueString<T>(value: T): {
67
- type: "string" | "number" | "bigint" | "boolean" | "undefined" | "date" | "url" | "float" | "null" | "NaN";
76
+ type: "string" | "number" | "bigint" | "boolean" | "undefined" | "date" | "url" | "float" | "null" | "Set" | "Map" | "NaN";
68
77
  content: string;
69
78
  };
70
79
  export declare function ValueView<T extends object>(props: ValueViewProps<T>): import("react/jsx-runtime").JSX.Element;
package/esm/value.js CHANGED
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  var _excluded = ["children", "style"],
4
4
  _excluded2 = ["children", "length", "style"],
5
5
  _excluded3 = ["color", "style", "isURL", "href", "children"],
6
- _excluded4 = ["value", "parentValue", "setValue", "countInfo", "data", "keyName", "indentWidth", "namespace", "renderKey", "components", "quotes", "level", "enableClipboard", "displayObjectSize", "displayDataTypes", "shortenTextAfterLength"],
6
+ _excluded4 = ["value", "parentValue", "setValue", "countInfo", "data", "keyName", "indentWidth", "isSet", "namespace", "renderKey", "components", "quotes", "level", "enableClipboard", "displayObjectSize", "displayDataTypes", "shortenTextAfterLength"],
7
7
  _excluded5 = ["children", "color", "fontSize", "opacity", "paddingRight", "style"];
8
8
  import { Fragment, forwardRef, useMemo, useState } from 'react';
9
9
  import { Meta } from './comps/meta';
@@ -46,6 +46,14 @@ export var typeMap = {
46
46
  color: 'var(--w-rjv-type-null-color, #d33682)',
47
47
  label: 'null'
48
48
  },
49
+ Set: {
50
+ color: 'var(--w-rjv-type-set-color, #268bd2)',
51
+ label: 'Set'
52
+ },
53
+ Map: {
54
+ color: 'var(--w-rjv-type-map-color, #268bd2)',
55
+ label: 'Map'
56
+ },
49
57
  NaN: {
50
58
  color: 'var(--w-rjv-type-nan-color, #859900)',
51
59
  label: 'NaN'
@@ -127,7 +135,6 @@ var RenderShortenTextValue = _ref2 => {
127
135
  var childrenStr = children;
128
136
  var [shorten, setShorten] = useState(length && childrenStr.length >= length);
129
137
  var click = () => {
130
- console.log(shorten);
131
138
  if (length && childrenStr.length <= length) return setShorten(false);
132
139
  setShorten(!shorten);
133
140
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-json-view",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
4
4
  "description": "JSON viewer for react.",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",