@uiw/react-json-view 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (171) hide show
  1. package/README.md +145 -36
  2. package/cjs/Container.js +4 -8
  3. package/cjs/comps/Copied.js +15 -13
  4. package/cjs/comps/KeyValues.js +30 -22
  5. package/cjs/comps/NestedClose.js +3 -4
  6. package/cjs/comps/NestedOpen.js +18 -16
  7. package/cjs/comps/Value.js +14 -16
  8. package/cjs/editor/KeyName.d.ts +2 -0
  9. package/cjs/editor/KeyName.js +82 -0
  10. package/cjs/editor/index.d.ts +19 -0
  11. package/cjs/editor/index.js +44 -0
  12. package/cjs/editor/store.d.ts +28 -0
  13. package/cjs/editor/store.js +23 -0
  14. package/cjs/index.d.ts +5 -3
  15. package/cjs/index.js +9 -8
  16. package/cjs/section/Copied.d.ts +1 -1
  17. package/cjs/section/Copied.js +1 -2
  18. package/cjs/section/CountInfo.d.ts +10 -1
  19. package/cjs/section/CountInfo.js +42 -4
  20. package/cjs/section/CountInfoExtra.d.ts +10 -1
  21. package/cjs/section/CountInfoExtra.js +32 -4
  22. package/cjs/section/Ellipsis.d.ts +10 -0
  23. package/cjs/section/Ellipsis.js +30 -4
  24. package/cjs/section/KeyName.d.ts +8 -0
  25. package/cjs/section/KeyName.js +38 -4
  26. package/cjs/section/Row.d.ts +16 -0
  27. package/cjs/section/Row.js +50 -0
  28. package/cjs/store/Expands.js +2 -4
  29. package/cjs/store/Section.d.ts +5 -2
  30. package/cjs/store/Section.js +6 -4
  31. package/cjs/store/ShowTools.js +2 -4
  32. package/cjs/store/Symbols.d.ts +2 -2
  33. package/cjs/store/Symbols.js +3 -4
  34. package/cjs/store/Types.d.ts +28 -24
  35. package/cjs/store/Types.js +8 -8
  36. package/cjs/store.d.ts +7 -4
  37. package/cjs/store.js +5 -10
  38. package/cjs/symbol/Arrow.d.ts +1 -1
  39. package/cjs/symbol/Arrow.js +1 -2
  40. package/cjs/symbol/BraceLeft.d.ts +1 -1
  41. package/cjs/symbol/BraceLeft.js +1 -2
  42. package/cjs/symbol/BraceRight.d.ts +1 -1
  43. package/cjs/symbol/BraceRight.js +1 -2
  44. package/cjs/symbol/BracketsLeft.d.ts +1 -1
  45. package/cjs/symbol/BracketsLeft.js +1 -2
  46. package/cjs/symbol/BracketsRight.d.ts +1 -1
  47. package/cjs/symbol/BracketsRight.js +1 -2
  48. package/cjs/symbol/Colon.d.ts +1 -1
  49. package/cjs/symbol/Colon.js +1 -2
  50. package/cjs/symbol/Quote.d.ts +1 -1
  51. package/cjs/symbol/Quote.js +1 -2
  52. package/cjs/symbol/ValueQuote.d.ts +1 -1
  53. package/cjs/symbol/ValueQuote.js +1 -2
  54. package/{esm/comps/ReRender/Symbols.d.ts → cjs/symbol/index.d.ts} +4 -6
  55. package/cjs/{comps/ReRender/Symbols.js → symbol/index.js} +32 -33
  56. package/cjs/theme/basic.js +2 -3
  57. package/cjs/theme/dark.js +2 -3
  58. package/cjs/theme/github.dark.js +2 -3
  59. package/cjs/theme/github.light.js +2 -3
  60. package/cjs/theme/gruvbox.js +2 -3
  61. package/cjs/theme/light.js +2 -3
  62. package/cjs/theme/monokai.js +2 -3
  63. package/cjs/theme/nord.js +2 -3
  64. package/cjs/theme/vscode.js +2 -3
  65. package/cjs/types/Bigint.d.ts +1 -1
  66. package/cjs/types/Bigint.js +1 -2
  67. package/cjs/types/Date.d.ts +1 -1
  68. package/cjs/types/Date.js +1 -2
  69. package/cjs/types/False.d.ts +1 -1
  70. package/cjs/types/False.js +1 -2
  71. package/cjs/types/Float.d.ts +1 -1
  72. package/cjs/types/Float.js +1 -2
  73. package/cjs/types/Int.d.ts +1 -1
  74. package/cjs/types/Int.js +1 -2
  75. package/cjs/types/Map.d.ts +1 -1
  76. package/cjs/types/Map.js +1 -2
  77. package/cjs/types/Nan.d.ts +1 -1
  78. package/cjs/types/Nan.js +1 -2
  79. package/cjs/types/Null.d.ts +1 -1
  80. package/cjs/types/Null.js +1 -2
  81. package/cjs/types/Set.d.ts +1 -1
  82. package/cjs/types/Set.js +1 -2
  83. package/cjs/types/String.d.ts +1 -1
  84. package/cjs/types/String.js +1 -2
  85. package/cjs/types/True.d.ts +1 -1
  86. package/cjs/types/True.js +1 -2
  87. package/cjs/types/Undefined.d.ts +1 -1
  88. package/cjs/types/Undefined.js +1 -2
  89. package/cjs/types/Url.d.ts +1 -1
  90. package/cjs/types/Url.js +1 -2
  91. package/{esm/comps/ReRender/Types.d.ts → cjs/types/index.d.ts} +8 -13
  92. package/cjs/{comps/ReRender/Types.js → types/index.js} +103 -121
  93. package/cjs/utils/useHighlight.js +0 -1
  94. package/cjs/utils/useRender.d.ts +1 -1
  95. package/editor.d.ts +22 -20
  96. package/esm/Container.js +4 -5
  97. package/esm/comps/Copied.js +14 -11
  98. package/esm/comps/KeyValues.js +20 -11
  99. package/esm/comps/NestedClose.js +1 -1
  100. package/esm/comps/NestedOpen.js +12 -9
  101. package/esm/comps/Value.js +1 -1
  102. package/esm/editor/KeyName.d.ts +2 -0
  103. package/esm/editor/KeyName.js +77 -0
  104. package/esm/editor/index.d.ts +19 -0
  105. package/esm/editor/index.js +34 -0
  106. package/esm/editor/store.d.ts +28 -0
  107. package/esm/editor/store.js +13 -0
  108. package/esm/index.d.ts +5 -3
  109. package/esm/index.js +5 -3
  110. package/esm/section/Copied.d.ts +1 -1
  111. package/esm/section/CountInfo.d.ts +10 -1
  112. package/esm/section/CountInfo.js +43 -1
  113. package/esm/section/CountInfoExtra.d.ts +10 -1
  114. package/esm/section/CountInfoExtra.js +32 -1
  115. package/esm/section/Ellipsis.d.ts +10 -0
  116. package/esm/section/Ellipsis.js +31 -1
  117. package/esm/section/KeyName.d.ts +8 -0
  118. package/esm/section/KeyName.js +39 -1
  119. package/esm/section/Row.d.ts +16 -0
  120. package/esm/section/Row.js +45 -0
  121. package/esm/store/Section.d.ts +5 -2
  122. package/esm/store/Section.js +4 -0
  123. package/esm/store/Symbols.d.ts +2 -2
  124. package/esm/store/Symbols.js +1 -0
  125. package/esm/store/Types.d.ts +28 -24
  126. package/esm/store/Types.js +6 -4
  127. package/esm/store.d.ts +7 -4
  128. package/esm/symbol/Arrow.d.ts +1 -1
  129. package/esm/symbol/BraceLeft.d.ts +1 -1
  130. package/esm/symbol/BraceRight.d.ts +1 -1
  131. package/esm/symbol/BracketsLeft.d.ts +1 -1
  132. package/esm/symbol/BracketsRight.d.ts +1 -1
  133. package/esm/symbol/Colon.d.ts +1 -1
  134. package/esm/symbol/Quote.d.ts +1 -1
  135. package/esm/symbol/ValueQuote.d.ts +1 -1
  136. package/{cjs/comps/ReRender/Symbols.d.ts → esm/symbol/index.d.ts} +4 -6
  137. package/esm/{comps/ReRender/Symbols.js → symbol/index.js} +26 -24
  138. package/esm/types/Bigint.d.ts +1 -1
  139. package/esm/types/Date.d.ts +1 -1
  140. package/esm/types/False.d.ts +1 -1
  141. package/esm/types/Float.d.ts +1 -1
  142. package/esm/types/Int.d.ts +1 -1
  143. package/esm/types/Map.d.ts +1 -1
  144. package/esm/types/Nan.d.ts +1 -1
  145. package/esm/types/Null.d.ts +1 -1
  146. package/esm/types/Set.d.ts +1 -1
  147. package/esm/types/String.d.ts +1 -1
  148. package/esm/types/True.d.ts +1 -1
  149. package/esm/types/Undefined.d.ts +1 -1
  150. package/esm/types/Url.d.ts +1 -1
  151. package/{cjs/comps/ReRender/Types.d.ts → esm/types/index.d.ts} +8 -13
  152. package/esm/{comps/ReRender/Types.js → types/index.js} +84 -94
  153. package/esm/utils/useHighlight.js +0 -1
  154. package/esm/utils/useRender.d.ts +1 -1
  155. package/package.json +3 -4
  156. package/cjs/comps/CountInfo.d.ts +0 -19
  157. package/cjs/comps/CountInfo.js +0 -72
  158. package/cjs/comps/Ellipsis.d.ts +0 -10
  159. package/cjs/comps/Ellipsis.js +0 -35
  160. package/cjs/comps/Key.d.ts +0 -7
  161. package/cjs/comps/Key.js +0 -39
  162. package/cjs/type.d.ts +0 -50
  163. package/cjs/type.js +0 -57
  164. package/esm/comps/CountInfo.d.ts +0 -19
  165. package/esm/comps/CountInfo.js +0 -70
  166. package/esm/comps/Ellipsis.d.ts +0 -10
  167. package/esm/comps/Ellipsis.js +0 -31
  168. package/esm/comps/Key.d.ts +0 -7
  169. package/esm/comps/Key.js +0 -35
  170. package/esm/type.d.ts +0 -50
  171. package/esm/type.js +0 -50
@@ -6,13 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.isFloat = exports.Value = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _Types = require("./ReRender/Types");
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
16
  keyName = props.keyName,
18
17
  expandKey = props.expandKey;
@@ -21,58 +20,57 @@ var Value = function Value(props) {
21
20
  expandKey: expandKey
22
21
  };
23
22
  if (value instanceof URL) {
24
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeUrl, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeUrl, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
25
24
  children: value
26
25
  }));
27
26
  }
28
27
  if (typeof value === 'string') {
29
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeString, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
28
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeString, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
30
29
  children: value
31
30
  }));
32
31
  }
33
32
  if (value === true) {
34
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeTrue, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeTrue, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
35
34
  children: value
36
35
  }));
37
36
  }
38
37
  if (value === false) {
39
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeFalse, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeFalse, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
40
39
  children: value
41
40
  }));
42
41
  }
43
42
  if (value === null) {
44
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeNull, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeNull, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
45
44
  children: value
46
45
  }));
47
46
  }
48
47
  if (value === undefined) {
49
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeUndefined, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
48
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeUndefined, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
50
49
  children: value
51
50
  }));
52
51
  }
53
52
  if (value instanceof Date) {
54
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeDate, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeDate, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
55
54
  children: value
56
55
  }));
57
56
  }
58
57
  if (typeof value === 'number' && isNaN(value)) {
59
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeNan, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
58
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeNan, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
60
59
  children: value
61
60
  }));
62
61
  } else if (typeof value === 'number' && isFloat(value)) {
63
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeFloat, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
62
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeFloat, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
64
63
  children: value
65
64
  }));
66
65
  } else if (typeof value === 'bigint') {
67
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeBigint, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
66
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeBigint, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
68
67
  children: value
69
68
  }));
70
69
  } else if (typeof value === 'number') {
71
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Types.TypeInt, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_types.TypeInt, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
72
71
  children: value
73
72
  }));
74
73
  }
75
74
  return null;
76
75
  };
77
- exports.Value = Value;
78
76
  Value.displayName = 'JVR.Value';
@@ -0,0 +1,2 @@
1
+ import { 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,19 @@
1
+ /// <reference types="react" />
2
+ import { type JsonViewProps } from '../';
3
+ export interface JsonViewEditorProps<T extends object> extends Omit<JsonViewProps<T>, 'shortenTextAfterLength'> {
4
+ /**
5
+ * When a callback function is passed in, edit functionality is enabled. The callback is invoked before edits are completed.
6
+ * @returns {boolean} Returning false from onEdit will prevent the change from being made.
7
+ */
8
+ onEdit?: (option: {
9
+ value: unknown;
10
+ oldValue: unknown;
11
+ keyName?: string | number;
12
+ parentName?: string | number;
13
+ type?: 'value' | 'key';
14
+ }) => boolean;
15
+ /** Whether enable edit feature. @default true */
16
+ editable?: boolean;
17
+ }
18
+ declare const JsonViewEditor: import("react").ForwardRefExoticComponent<Omit<JsonViewEditorProps<object>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
19
+ 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,28 @@
1
+ /// <reference types="react" />
2
+ type InitialState = {
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
+ };
15
+ type Dispatch = React.Dispatch<InitialState>;
16
+ export declare const Context: import("react").Context<InitialState>;
17
+ export declare const Dispatch: import("react").Context<Dispatch>;
18
+ export declare const useStore: () => InitialState;
19
+ export declare function useStoreReducer(initialState: InitialState): [{
20
+ onEdit?: ((option: {
21
+ value: unknown;
22
+ oldValue: unknown;
23
+ keyName?: string | number | undefined;
24
+ parentName?: string | number | undefined;
25
+ type?: "value" | "key" | undefined;
26
+ }) => boolean) | undefined;
27
+ }, import("react").Dispatch<InitialState>];
28
+ 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
@@ -25,19 +25,20 @@ import { CountInfo } from './section/CountInfo';
25
25
  import { CountInfoExtra } from './section/CountInfoExtra';
26
26
  import { Ellipsis } from './section/Ellipsis';
27
27
  import { KeyName } from './section/KeyName';
28
+ import { Row } from './section/Row';
28
29
  export * from './store';
29
30
  export * from './store/Expands';
30
31
  export * from './store/ShowTools';
31
32
  export * from './store/Symbols';
32
33
  export * from './store/Types';
33
- export * from './comps/ReRender/Symbols';
34
+ export * from './symbol';
34
35
  export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> {
35
36
  /** This property contains your input JSON */
36
37
  value?: T;
37
38
  /** Define the root node name. @default undefined */
38
39
  keyName?: string | number;
39
40
  /** Whether sort keys through `String.prototype.localeCompare()` @default false */
40
- objectSortKeys?: boolean | ((a: string, b: string) => number);
41
+ objectSortKeys?: boolean | ((keyA: string, keyB: string, valueA: T, valueB: T) => number);
41
42
  /** Set the indent-width for nested objects @default 15 */
42
43
  indentWidth?: number;
43
44
  /** When set to `true`, `objects` and `arrays` are labeled with size @default true */
@@ -50,7 +51,7 @@ export interface JsonViewProps<T extends object> extends React.DetailedHTMLProps
50
51
  collapsed?: boolean | number;
51
52
  /** Whether to highlight updates. @default true */
52
53
  highlightUpdates?: boolean;
53
- /** Shorten long JSON strings, Set to `0` to disable this feature @default 20 */
54
+ /** Shorten long JSON strings, Set to `0` to disable this feature @default 30 */
54
55
  shortenTextAfterLength?: number;
55
56
  /** Callback function for when a treeNode is expanded or collapsed */
56
57
  onExpand?: (props: {
@@ -89,6 +90,7 @@ type JsonViewComponent = React.FC<React.PropsWithRef<JsonViewProps<object>>> & {
89
90
  CountInfo: typeof CountInfo;
90
91
  CountInfoExtra: typeof CountInfoExtra;
91
92
  KeyName: typeof KeyName;
93
+ Row: typeof Row;
92
94
  };
93
95
  declare const JsonView: JsonViewComponent;
94
96
  export default JsonView;
package/cjs/index.js CHANGED
@@ -48,6 +48,7 @@ var _CountInfo = require("./section/CountInfo");
48
48
  var _CountInfoExtra = require("./section/CountInfoExtra");
49
49
  var _Ellipsis = require("./section/Ellipsis");
50
50
  var _KeyName = require("./section/KeyName");
51
+ var _Row = require("./section/Row");
51
52
  var _jsxRuntime = require("react/jsx-runtime");
52
53
  var _Expands = require("./store/Expands");
53
54
  Object.keys(_Expands).forEach(function (key) {
@@ -97,15 +98,15 @@ Object.keys(_Types).forEach(function (key) {
97
98
  }
98
99
  });
99
100
  });
100
- var _Symbols2 = require("./comps/ReRender/Symbols");
101
- Object.keys(_Symbols2).forEach(function (key) {
101
+ var _symbol = require("./symbol");
102
+ Object.keys(_symbol).forEach(function (key) {
102
103
  if (key === "default" || key === "__esModule") return;
103
104
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
104
- if (key in exports && exports[key] === _Symbols2[key]) return;
105
+ if (key in exports && exports[key] === _symbol[key]) return;
105
106
  Object.defineProperty(exports, key, {
106
107
  enumerable: true,
107
108
  get: function get() {
108
- return _Symbols2[key];
109
+ return _symbol[key];
109
110
  }
110
111
  });
111
112
  });
@@ -122,7 +123,7 @@ var JsonView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
122
123
  _props$displayObjectS = props.displayObjectSize,
123
124
  displayObjectSize = _props$displayObjectS === void 0 ? true : _props$displayObjectS,
124
125
  _props$shortenTextAft = props.shortenTextAfterLength,
125
- shortenTextAfterLength = _props$shortenTextAft === void 0 ? 20 : _props$shortenTextAft,
126
+ shortenTextAfterLength = _props$shortenTextAft === void 0 ? 30 : _props$shortenTextAft,
126
127
  _props$highlightUpdat = props.highlightUpdates,
127
128
  highlightUpdates = _props$highlightUpdat === void 0 ? true : _props$highlightUpdat,
128
129
  _props$enableClipboar = props.enableClipboard,
@@ -140,7 +141,7 @@ var JsonView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
140
141
  backgroundColor: 'var(--w-rjv-background-color, #00000000)',
141
142
  fontSize: 13
142
143
  }, style);
143
- var cls = "w-json-view-container w-rjv ".concat(className || '');
144
+ var cls = ['w-json-view-container', 'w-rjv', className].filter(Boolean).join(' ');
144
145
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_store.Provider, {
145
146
  initialState: {
146
147
  value: value,
@@ -191,6 +192,6 @@ JsonView.Copied = _Copied.Copied;
191
192
  JsonView.CountInfo = _CountInfo.CountInfo;
192
193
  JsonView.CountInfoExtra = _CountInfoExtra.CountInfoExtra;
193
194
  JsonView.KeyName = _KeyName.KeyName;
195
+ JsonView.Row = _Row.Row;
194
196
  JsonView.displayName = 'JVR.JsonView';
195
- var _default = JsonView;
196
- exports["default"] = _default;
197
+ var _default = exports["default"] = JsonView;
@@ -1,6 +1,6 @@
1
1
  import { type TagType } from '../store/Types';
2
2
  import { type SectionElement } from '../store/Section';
3
3
  export declare const Copied: {
4
- (props: SectionElement<TagType>): null;
4
+ <K extends TagType = "svg">(props: SectionElement<K>): null;
5
5
  displayName: string;
6
6
  };
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Copied = void 0;
7
7
  var _Section = require("../store/Section");
8
8
  var _useRender = require("../utils/useRender");
9
- var Copied = function Copied(props) {
9
+ var Copied = exports.Copied = function Copied(props) {
10
10
  var _useSectionStore = (0, _Section.useSectionStore)(),
11
11
  _useSectionStore$Copi = _useSectionStore.Copied,
12
12
  Comp = _useSectionStore$Copi === void 0 ? {} : _useSectionStore$Copi;
13
13
  (0, _useRender.useSectionRender)(Comp, props, 'Copied');
14
14
  return null;
15
15
  };
16
- exports.Copied = Copied;
17
16
  Copied.displayName = 'JVR.Copied';
@@ -1,6 +1,15 @@
1
+ /// <reference types="react" />
1
2
  import { type TagType } from '../store/Types';
2
- import { type SectionElement } from '../store/Section';
3
+ import { type SectionElement, type SectionElementProps } from '../store/Section';
3
4
  export declare const CountInfo: {
4
5
  <K extends TagType>(props: SectionElement<K>): null;
5
6
  displayName: string;
6
7
  };
8
+ export interface CountInfoCompProps<T extends object> {
9
+ value?: T;
10
+ keyName: string | number;
11
+ }
12
+ export declare const CountInfoComp: {
13
+ <K extends TagType, T extends object>(props: SectionElementProps<K> & CountInfoCompProps<T> & import("react").HTMLAttributes<HTMLElement>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
14
+ displayName: string;
15
+ };
@@ -1,17 +1,55 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.CountInfo = void 0;
7
+ exports.CountInfoComp = exports.CountInfo = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
10
  var _Section = require("../store/Section");
8
11
  var _useRender = require("../utils/useRender");
9
- var CountInfo = function CountInfo(props) {
12
+ var _store = require("../store");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ var _excluded = ["value", "keyName"],
15
+ _excluded2 = ["as", "render"];
16
+ var CountInfo = exports.CountInfo = function CountInfo(props) {
10
17
  var _useSectionStore = (0, _Section.useSectionStore)(),
11
18
  _useSectionStore$Coun = _useSectionStore.CountInfo,
12
19
  Comp = _useSectionStore$Coun === void 0 ? {} : _useSectionStore$Coun;
13
20
  (0, _useRender.useSectionRender)(Comp, props, 'CountInfo');
14
21
  return null;
15
22
  };
16
- exports.CountInfo = CountInfo;
17
- CountInfo.displayName = 'JVR.CountInfo';
23
+ CountInfo.displayName = 'JVR.CountInfo';
24
+ var CountInfoComp = exports.CountInfoComp = function CountInfoComp(props) {
25
+ var _props$value = props.value,
26
+ value = _props$value === void 0 ? {} : _props$value,
27
+ keyName = props.keyName,
28
+ other = (0, _objectWithoutProperties2["default"])(props, _excluded);
29
+ var _useStore = (0, _store.useStore)(),
30
+ displayObjectSize = _useStore.displayObjectSize;
31
+ var _useSectionStore2 = (0, _Section.useSectionStore)(),
32
+ _useSectionStore2$Cou = _useSectionStore2.CountInfo,
33
+ Comp = _useSectionStore2$Cou === void 0 ? {} : _useSectionStore2$Cou;
34
+ if (!displayObjectSize) return null;
35
+ var as = Comp.as,
36
+ render = Comp.render,
37
+ reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded2);
38
+ var Elm = as || 'span';
39
+ reset.style = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset.style), props.style);
40
+ var len = Object.keys(value).length;
41
+ if (!reset.children) {
42
+ reset.children = "".concat(len, " items");
43
+ }
44
+ var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), other);
45
+ var isRender = render && typeof render === 'function';
46
+ var child = isRender && render((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, elmProps), {}, {
47
+ 'data-length': len
48
+ }), {
49
+ value: value,
50
+ keyName: keyName
51
+ });
52
+ if (child) return child;
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, elmProps));
54
+ };
55
+ CountInfoComp.displayName = 'JVR.CountInfoComp';
@@ -1,6 +1,15 @@
1
+ /// <reference types="react" />
1
2
  import { type TagType } from '../store/Types';
2
- import { type SectionElement } from '../store/Section';
3
+ import { type SectionElement, type SectionElementProps } from '../store/Section';
3
4
  export declare const CountInfoExtra: {
4
5
  <K extends TagType>(props: SectionElement<K>): null;
5
6
  displayName: string;
6
7
  };
8
+ export interface CountInfoExtraCompsProps<T extends object> {
9
+ value?: T;
10
+ keyName: string | number;
11
+ }
12
+ export declare const CountInfoExtraComps: {
13
+ <T extends object, K extends TagType>(props: SectionElementProps<K> & CountInfoExtraCompsProps<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
14
+ displayName: string;
15
+ };
@@ -1,17 +1,45 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.CountInfoExtra = void 0;
7
+ exports.CountInfoExtraComps = exports.CountInfoExtra = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
10
  var _Section = require("../store/Section");
8
11
  var _useRender = require("../utils/useRender");
9
- var CountInfoExtra = function CountInfoExtra(props) {
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ var _excluded = ["value", "keyName"],
14
+ _excluded2 = ["as", "render"];
15
+ var CountInfoExtra = exports.CountInfoExtra = function CountInfoExtra(props) {
10
16
  var _useSectionStore = (0, _Section.useSectionStore)(),
11
17
  _useSectionStore$Coun = _useSectionStore.CountInfoExtra,
12
18
  Comp = _useSectionStore$Coun === void 0 ? {} : _useSectionStore$Coun;
13
19
  (0, _useRender.useSectionRender)(Comp, props, 'CountInfoExtra');
14
20
  return null;
15
21
  };
16
- exports.CountInfoExtra = CountInfoExtra;
17
- CountInfoExtra.displayName = 'JVR.CountInfoExtra';
22
+ CountInfoExtra.displayName = 'JVR.CountInfoExtra';
23
+ var CountInfoExtraComps = exports.CountInfoExtraComps = function CountInfoExtraComps(props) {
24
+ var _props$value = props.value,
25
+ value = _props$value === void 0 ? {} : _props$value,
26
+ keyName = props.keyName,
27
+ other = (0, _objectWithoutProperties2["default"])(props, _excluded);
28
+ var _useSectionStore2 = (0, _Section.useSectionStore)(),
29
+ _useSectionStore2$Cou = _useSectionStore2.CountInfoExtra,
30
+ Comp = _useSectionStore2$Cou === void 0 ? {} : _useSectionStore2$Cou;
31
+ var as = Comp.as,
32
+ render = Comp.render,
33
+ reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded2);
34
+ if (!render && !reset.children) return null;
35
+ var Elm = as || 'span';
36
+ var isRender = render && typeof render === 'function';
37
+ var elmProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), other);
38
+ var child = isRender && render(elmProps, {
39
+ value: value,
40
+ keyName: keyName
41
+ });
42
+ if (child) return child;
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, elmProps));
44
+ };
45
+ CountInfoExtraComps.displayName = 'JVR.CountInfoExtraComps';
@@ -1,6 +1,16 @@
1
+ /// <reference types="react" />
1
2
  import { type TagType } from '../store/Types';
2
3
  import { type SectionElement } from '../store/Section';
3
4
  export declare const Ellipsis: {
4
5
  <K extends TagType>(props: SectionElement<K>): null;
5
6
  displayName: string;
6
7
  };
8
+ export interface EllipsisCompProps<T extends object> {
9
+ value?: T;
10
+ keyName: string | number;
11
+ isExpanded: boolean;
12
+ }
13
+ export declare const EllipsisComp: {
14
+ <T extends object>({ isExpanded, value, keyName }: EllipsisCompProps<T>): string | number | true | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null;
15
+ displayName: string;
16
+ };
@@ -1,17 +1,43 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.Ellipsis = void 0;
7
+ exports.EllipsisComp = exports.Ellipsis = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
10
  var _Section = require("../store/Section");
8
11
  var _useRender = require("../utils/useRender");
9
- var Ellipsis = function Ellipsis(props) {
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ var _excluded = ["as", "render"];
14
+ var Ellipsis = exports.Ellipsis = function Ellipsis(props) {
10
15
  var _useSectionStore = (0, _Section.useSectionStore)(),
11
16
  _useSectionStore$Elli = _useSectionStore.Ellipsis,
12
17
  Comp = _useSectionStore$Elli === void 0 ? {} : _useSectionStore$Elli;
13
18
  (0, _useRender.useSectionRender)(Comp, props, 'Ellipsis');
14
19
  return null;
15
20
  };
16
- exports.Ellipsis = Ellipsis;
17
- Ellipsis.displayName = 'JVR.Ellipsis';
21
+ Ellipsis.displayName = 'JVR.Ellipsis';
22
+ var EllipsisComp = exports.EllipsisComp = function EllipsisComp(_ref) {
23
+ var isExpanded = _ref.isExpanded,
24
+ value = _ref.value,
25
+ keyName = _ref.keyName;
26
+ var _useSectionStore2 = (0, _Section.useSectionStore)(),
27
+ _useSectionStore2$Ell = _useSectionStore2.Ellipsis,
28
+ Comp = _useSectionStore2$Ell === void 0 ? {} : _useSectionStore2$Ell;
29
+ var as = Comp.as,
30
+ render = Comp.render,
31
+ reset = (0, _objectWithoutProperties2["default"])(Comp, _excluded);
32
+ var Elm = as || 'span';
33
+ var child = render && typeof render === 'function' && render((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, reset), {}, {
34
+ 'data-expanded': isExpanded
35
+ }), {
36
+ value: value,
37
+ keyName: keyName
38
+ });
39
+ if (child) return child;
40
+ if (!isExpanded) return null;
41
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Elm, (0, _objectSpread2["default"])({}, reset));
42
+ };
43
+ EllipsisComp.displayName = 'JVR.EllipsisComp';
@@ -1,6 +1,14 @@
1
+ import { type FC, type PropsWithChildren } from 'react';
1
2
  import { type TagType } from '../store/Types';
2
3
  import { type SectionElement } from '../store/Section';
3
4
  export declare const KeyName: {
4
5
  <K extends TagType>(props: SectionElement<K>): null;
5
6
  displayName: string;
6
7
  };
8
+ type KeyNameCompProps = {
9
+ keyName: string | number;
10
+ value?: unknown;
11
+ parentValue?: unknown;
12
+ };
13
+ export declare const KeyNameComp: FC<PropsWithChildren<KeyNameCompProps>>;
14
+ export {};