@uiw/react-json-view 1.7.0 → 1.8.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 +32 -7
- package/cjs/editor/countInfoExtra.d.ts +10 -2
- package/cjs/editor/countInfoExtra.js +50 -6
- package/cjs/editor/icon/add.js +3 -3
- package/cjs/editor/icon/delete.d.ts +4 -0
- package/cjs/editor/icon/delete.js +30 -0
- package/cjs/editor/index.d.ts +10 -2
- package/cjs/editor/index.js +5 -2
- package/cjs/editor/value.d.ts +3 -0
- package/cjs/editor/value.js +126 -64
- package/cjs/node.d.ts +2 -0
- package/cjs/node.js +20 -10
- package/cjs/value.d.ts +13 -7
- package/cjs/value.js +6 -2
- package/editor.d.ts +5 -0
- package/esm/editor/countInfoExtra.d.ts +10 -2
- package/esm/editor/countInfoExtra.js +37 -6
- package/esm/editor/icon/add.js +3 -3
- package/esm/editor/icon/delete.d.ts +4 -0
- package/esm/editor/icon/delete.js +24 -0
- package/esm/editor/index.d.ts +10 -2
- package/esm/editor/index.js +6 -3
- package/esm/editor/value.d.ts +3 -0
- package/esm/editor/value.js +94 -59
- package/esm/node.d.ts +2 -0
- package/esm/node.js +13 -4
- package/esm/value.d.ts +13 -7
- package/esm/value.js +6 -2
- package/package.json +1 -1
package/cjs/node.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.CountInfo = void 0;
|
|
|
8
8
|
exports.RooNode = RooNode;
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
13
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
14
|
var _react = require("react");
|
|
@@ -19,7 +20,7 @@ var _copied = require("./copied");
|
|
|
19
20
|
var _ellipsis = require("./comps/ellipsis");
|
|
20
21
|
var _meta = require("./comps/meta");
|
|
21
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "collapsed", "level", "keyid", "quotes", "onCopied", "onExpand"];
|
|
23
|
+
var _excluded = ["value", "keyName", "className", "displayDataTypes", "components", "displayObjectSize", "enableClipboard", "highlightUpdates", "objectSortKeys", "indentWidth", "collapsed", "level", "keyid", "quotes", "onCopied", "onExpand", "parentValue", "setParentValue"];
|
|
23
24
|
var CountInfo = function CountInfo(_ref) {
|
|
24
25
|
var children = _ref.children;
|
|
25
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_value.Label, {
|
|
@@ -62,6 +63,8 @@ function RooNode(props) {
|
|
|
62
63
|
quotes = _props$quotes === void 0 ? '"' : _props$quotes,
|
|
63
64
|
onCopied = props.onCopied,
|
|
64
65
|
onExpand = props.onExpand,
|
|
66
|
+
parentValue = props.parentValue,
|
|
67
|
+
setParentValue = props.setParentValue,
|
|
65
68
|
reset = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
66
69
|
var isArray = Array.isArray(value);
|
|
67
70
|
var subkeyid = (0, _react.useId)();
|
|
@@ -80,6 +83,10 @@ function RooNode(props) {
|
|
|
80
83
|
});
|
|
81
84
|
!expand ? _store.store.expand(keyid) : _store.store.collapse(keyid);
|
|
82
85
|
};
|
|
86
|
+
var _useState = (0, _react.useState)(value),
|
|
87
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
88
|
+
valueData = _useState2[0],
|
|
89
|
+
setValueData = _useState2[1];
|
|
83
90
|
var subNodeProps = {
|
|
84
91
|
components: components,
|
|
85
92
|
indentWidth: indentWidth,
|
|
@@ -90,6 +97,8 @@ function RooNode(props) {
|
|
|
90
97
|
onCopied: onCopied,
|
|
91
98
|
onExpand: onExpand,
|
|
92
99
|
collapsed: collapsed,
|
|
100
|
+
parentValue: value,
|
|
101
|
+
setParentValue: setValueData,
|
|
93
102
|
quotes: quotes,
|
|
94
103
|
level: level + 1,
|
|
95
104
|
style: {
|
|
@@ -101,7 +110,9 @@ function RooNode(props) {
|
|
|
101
110
|
displayObjectSize: displayObjectSize,
|
|
102
111
|
enableClipboard: enableClipboard,
|
|
103
112
|
indentWidth: indentWidth,
|
|
113
|
+
data: valueData,
|
|
104
114
|
quotes: quotes,
|
|
115
|
+
setValue: setValueData,
|
|
105
116
|
renderBraces: components.braces,
|
|
106
117
|
renderValue: components.value
|
|
107
118
|
};
|
|
@@ -113,10 +124,10 @@ function RooNode(props) {
|
|
|
113
124
|
style: arrowStyle,
|
|
114
125
|
className: "w-rjv-arrow"
|
|
115
126
|
});
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
showTools =
|
|
119
|
-
setShowTools =
|
|
127
|
+
var _useState3 = (0, _react.useState)(false),
|
|
128
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
129
|
+
showTools = _useState4[0],
|
|
130
|
+
setShowTools = _useState4[1];
|
|
120
131
|
var eventProps = {};
|
|
121
132
|
if (enableClipboard) {
|
|
122
133
|
eventProps.onMouseEnter = function () {
|
|
@@ -126,10 +137,6 @@ function RooNode(props) {
|
|
|
126
137
|
return setShowTools(false);
|
|
127
138
|
};
|
|
128
139
|
}
|
|
129
|
-
var _useState3 = (0, _react.useState)(value),
|
|
130
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
131
|
-
valueData = _useState4[0],
|
|
132
|
-
setValueData = _useState4[1];
|
|
133
140
|
(0, _react.useEffect)(function () {
|
|
134
141
|
return setValueData(value);
|
|
135
142
|
}, [value]);
|
|
@@ -202,8 +209,11 @@ function RooNode(props) {
|
|
|
202
209
|
count: nameKeys.length,
|
|
203
210
|
level: level,
|
|
204
211
|
showTools: showTools,
|
|
212
|
+
keyName: keyName,
|
|
205
213
|
visible: expand,
|
|
206
214
|
value: valueData,
|
|
215
|
+
parentValue: parentValue,
|
|
216
|
+
setParentValue: setParentValue,
|
|
207
217
|
setValue: setValueData
|
|
208
218
|
}), enableClipboard && /*#__PURE__*/(0, _jsxRuntime.jsx)(_copied.Copied, {
|
|
209
219
|
show: showTools,
|
|
@@ -217,7 +227,7 @@ function RooNode(props) {
|
|
|
217
227
|
borderLeft: 'var(--w-rjv-border-left-width, 1px) var(--w-rjv-line-style, solid) var(--w-rjv-line-color, #ebebeb)',
|
|
218
228
|
marginLeft: 6
|
|
219
229
|
},
|
|
220
|
-
children: entries.length > 0 && entries.map(function (_ref10, idx) {
|
|
230
|
+
children: entries.length > 0 && (0, _toConsumableArray2["default"])(entries).map(function (_ref10, idx) {
|
|
221
231
|
var _ref11 = (0, _slicedToArray2["default"])(_ref10, 2),
|
|
222
232
|
key = _ref11[0],
|
|
223
233
|
itemVal = _ref11[1];
|
package/cjs/value.d.ts
CHANGED
|
@@ -46,9 +46,19 @@ export declare const typeMap: {
|
|
|
46
46
|
};
|
|
47
47
|
};
|
|
48
48
|
export declare const Colon: FC<PropsWithChildren<React.HTMLAttributes<HTMLSpanElement>>>;
|
|
49
|
+
interface RenderValueProps<T extends object> extends React.HTMLAttributes<HTMLSpanElement> {
|
|
50
|
+
type: TypeProps['type'];
|
|
51
|
+
value?: unknown;
|
|
52
|
+
data?: T;
|
|
53
|
+
visible?: boolean;
|
|
54
|
+
quotes?: JsonViewProps<T>['quotes'];
|
|
55
|
+
setValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
56
|
+
keyName?: ValueViewProps<T>['keyName'];
|
|
57
|
+
}
|
|
49
58
|
export interface ValueViewProps<T extends object> extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement> {
|
|
50
59
|
keyName?: string | number;
|
|
51
60
|
value?: unknown;
|
|
61
|
+
data?: T;
|
|
52
62
|
displayDataTypes: boolean;
|
|
53
63
|
displayObjectSize: boolean;
|
|
54
64
|
enableClipboard: boolean;
|
|
@@ -57,13 +67,8 @@ export interface ValueViewProps<T extends object> extends React.DetailedHTMLProp
|
|
|
57
67
|
quotes?: JsonViewProps<T>['quotes'];
|
|
58
68
|
renderKey?: JSX.Element;
|
|
59
69
|
renderBraces?: MetaProps['render'];
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
value?: unknown;
|
|
63
|
-
visible?: boolean;
|
|
64
|
-
quotes?: JsonViewProps<T>['quotes'];
|
|
65
|
-
keyName?: ValueViewProps<T>['keyName'];
|
|
66
|
-
}) => JSX.Element;
|
|
70
|
+
setValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
71
|
+
renderValue?: (props: RenderValueProps<T>) => JSX.Element;
|
|
67
72
|
}
|
|
68
73
|
export declare function getValueString<T>(value: T): {
|
|
69
74
|
type: "string" | "number" | "bigint" | "boolean" | "undefined" | "date" | "url" | "float" | "null" | "NaN";
|
|
@@ -81,3 +86,4 @@ export interface TypeProps extends React.DetailedHTMLProps<React.HTMLAttributes<
|
|
|
81
86
|
type: keyof typeof typeMap;
|
|
82
87
|
}
|
|
83
88
|
export declare const Type: FC<PropsWithChildren<TypeProps>>;
|
|
89
|
+
export {};
|
package/cjs/value.js
CHANGED
|
@@ -18,7 +18,7 @@ var _meta = require("./comps/meta");
|
|
|
18
18
|
var _copied = require("./copied");
|
|
19
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
20
|
var _excluded = ["children", "style"],
|
|
21
|
-
_excluded2 = ["value", "keyName", "indentWidth", "renderKey", "quotes", "level", "renderValue", "renderBraces", "enableClipboard", "displayObjectSize", "displayDataTypes"],
|
|
21
|
+
_excluded2 = ["value", "setValue", "data", "keyName", "indentWidth", "renderKey", "quotes", "level", "renderValue", "renderBraces", "enableClipboard", "displayObjectSize", "displayDataTypes"],
|
|
22
22
|
_excluded3 = ["children", "color", "fontSize", "opacity", "paddingRight", "style"];
|
|
23
23
|
var Line = function Line(props) {
|
|
24
24
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _objectSpread2["default"])({}, props));
|
|
@@ -55,7 +55,7 @@ var typeMap = {
|
|
|
55
55
|
},
|
|
56
56
|
url: {
|
|
57
57
|
color: 'var(--w-rjv-type-url-color, #0969da)',
|
|
58
|
-
label: '
|
|
58
|
+
label: 'url'
|
|
59
59
|
},
|
|
60
60
|
"null": {
|
|
61
61
|
color: 'var(--w-rjv-type-null-color, #d33682)',
|
|
@@ -129,6 +129,8 @@ function getValueString(value) {
|
|
|
129
129
|
function ValueView(props) {
|
|
130
130
|
var _typeMap$type;
|
|
131
131
|
var value = props.value,
|
|
132
|
+
setValue = props.setValue,
|
|
133
|
+
data = props.data,
|
|
132
134
|
keyName = props.keyName,
|
|
133
135
|
indentWidth = props.indentWidth,
|
|
134
136
|
renderKey = props.renderKey,
|
|
@@ -192,6 +194,8 @@ function ValueView(props) {
|
|
|
192
194
|
}, style),
|
|
193
195
|
type: type,
|
|
194
196
|
value: value,
|
|
197
|
+
setValue: setValue,
|
|
198
|
+
data: data,
|
|
195
199
|
quotes: quotes,
|
|
196
200
|
keyName: keyName,
|
|
197
201
|
visible: showTools,
|
package/editor.d.ts
CHANGED
|
@@ -23,6 +23,11 @@ declare module '@uiw/react-json-view/editor' {
|
|
|
23
23
|
* @returns {boolean} Returning false from onAdd will prevent the change from being made.
|
|
24
24
|
*/
|
|
25
25
|
onAdd?: CountInfoExtraProps<T>['onAdd'];
|
|
26
|
+
/**
|
|
27
|
+
* When a callback function is passed in, delete functionality is enabled. The callback is invoked before deletions are completed.
|
|
28
|
+
* @returns Returning false from onDelete will prevent the change from being made.
|
|
29
|
+
*/
|
|
30
|
+
onDelete?: CountInfoExtraProps<T>['onDelete'];
|
|
26
31
|
/** Whether enable edit feature. @default true */
|
|
27
32
|
editable?: boolean;
|
|
28
33
|
}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { CountInfoProps } from '../';
|
|
3
|
-
export interface CountInfoExtraProps<T> extends CountInfoProps {
|
|
3
|
+
export interface CountInfoExtraProps<T> extends Partial<CountInfoProps> {
|
|
4
4
|
editable: boolean;
|
|
5
5
|
showTools: boolean;
|
|
6
6
|
value: T;
|
|
7
|
-
|
|
7
|
+
parentValue?: T;
|
|
8
|
+
keyName?: string | number;
|
|
9
|
+
setValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
10
|
+
setParentValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
8
11
|
/**
|
|
9
12
|
* When a callback function is passed in, add functionality is enabled. The callback is invoked before additions are completed.
|
|
10
13
|
* @returns {boolean} Returning false from onAdd will prevent the change from being made.
|
|
11
14
|
*/
|
|
12
15
|
onAdd?: (keyOrValue: string, newValue: T, value: T, isAdd: boolean) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* When a callback function is passed in, delete functionality is enabled. The callback is invoked before deletions are completed.
|
|
18
|
+
* @returns Returning false from onDelete will prevent the change from being made.
|
|
19
|
+
*/
|
|
20
|
+
onDelete?: (keyName: string | number, value: T, parentValue: T) => boolean;
|
|
13
21
|
}
|
|
14
22
|
export declare function CountInfoExtra<T extends object>(props: CountInfoExtraProps<T>): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
+
import { Fragment } from 'react';
|
|
3
4
|
import { AddIcon } from './icon/add';
|
|
5
|
+
import { DeleteIcon } from './icon/delete';
|
|
4
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
8
|
export function CountInfoExtra(props) {
|
|
6
9
|
var {
|
|
7
10
|
visible,
|
|
8
11
|
showTools,
|
|
12
|
+
editable,
|
|
13
|
+
keyName,
|
|
9
14
|
value,
|
|
15
|
+
parentValue,
|
|
10
16
|
setValue,
|
|
11
|
-
|
|
17
|
+
setParentValue,
|
|
18
|
+
onAdd,
|
|
19
|
+
onDelete
|
|
12
20
|
} = props;
|
|
13
21
|
if (!visible || !showTools) return null;
|
|
14
22
|
var click = /*#__PURE__*/function () {
|
|
@@ -20,7 +28,7 @@ export function CountInfoExtra(props) {
|
|
|
20
28
|
var result = isArray ? [...value, keyOrValue] : _extends({}, value, {
|
|
21
29
|
[keyOrValue]: undefined
|
|
22
30
|
});
|
|
23
|
-
if (onAdd) {
|
|
31
|
+
if (onAdd && setValue) {
|
|
24
32
|
var maybeAdd = yield onAdd(keyOrValue, result, props.value, isAdd);
|
|
25
33
|
if (maybeAdd) {
|
|
26
34
|
setValue(result);
|
|
@@ -31,8 +39,31 @@ export function CountInfoExtra(props) {
|
|
|
31
39
|
return _ref.apply(this, arguments);
|
|
32
40
|
};
|
|
33
41
|
}();
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
var deleteHandle = /*#__PURE__*/function () {
|
|
43
|
+
var _ref2 = _asyncToGenerator(function* (event) {
|
|
44
|
+
event.stopPropagation();
|
|
45
|
+
if (onDelete && (keyName || typeof keyName === 'number') && parentValue) {
|
|
46
|
+
var maybeDelete = yield onDelete(keyName, value, parentValue);
|
|
47
|
+
if (maybeDelete && setParentValue) {
|
|
48
|
+
if (Array.isArray(parentValue)) {
|
|
49
|
+
parentValue.splice(keyName, 1);
|
|
50
|
+
setParentValue([...parentValue]);
|
|
51
|
+
} else if (keyName in parentValue) {
|
|
52
|
+
delete parentValue[keyName];
|
|
53
|
+
setParentValue(_extends({}, parentValue));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return function deleteHandle(_x2) {
|
|
59
|
+
return _ref2.apply(this, arguments);
|
|
60
|
+
};
|
|
61
|
+
}();
|
|
62
|
+
return /*#__PURE__*/_jsxs(Fragment, {
|
|
63
|
+
children: [editable && onAdd && /*#__PURE__*/_jsx(AddIcon, {
|
|
64
|
+
onClick: click
|
|
65
|
+
}), editable && onDelete && parentValue && /*#__PURE__*/_jsx(DeleteIcon, {
|
|
66
|
+
onClick: deleteHandle
|
|
67
|
+
})]
|
|
68
|
+
});
|
|
38
69
|
}
|
package/esm/editor/icon/add.js
CHANGED
|
@@ -13,12 +13,12 @@ export var AddIcon = props => {
|
|
|
13
13
|
width: '1em'
|
|
14
14
|
};
|
|
15
15
|
return /*#__PURE__*/_jsx("svg", _extends({
|
|
16
|
-
viewBox: "0 0
|
|
17
|
-
fill: "var(--w-rjv-
|
|
16
|
+
viewBox: "0 0 40 40",
|
|
17
|
+
fill: "var(--w-rjv-add-color, currentColor)"
|
|
18
18
|
}, props, {
|
|
19
19
|
style: _extends({}, style, defaultStyle),
|
|
20
20
|
children: /*#__PURE__*/_jsx("path", {
|
|
21
|
-
d: "
|
|
21
|
+
d: "M28.3940997,0 L11.625773,0 C4.34215619,0 0,4.34 0,11.62 L0,28.36 C0,35.66 4.34215619,40 11.625773,40 L28.3740897,40 C35.6577066,40 39.9999316,35.66 39.9999316,28.38 L39.9999316,11.62 C40.0198727,4.34 35.6777165,0 28.3940997,0 Z M30.12022,21.8947368 L21.9056145,21.8947368 L21.9056145,30.1052632 C21.9056145,31.1410526 21.0462404,32 20.0099363,32 C18.9736323,32 18.1142582,31.1410526 18.1142582,30.1052632 L18.1142582,21.8947368 L9.89965272,21.8947368 C8.86334865,21.8947368 8.00397454,21.0357895 8.00397454,20 C8.00397454,18.9642105 8.86334865,18.1052632 9.89965272,18.1052632 L18.1142582,18.1052632 L18.1142582,9.89473684 C18.1142582,8.85894737 18.9736323,8 20.0099363,8 C21.0462404,8 21.9056145,8.85894737 21.9056145,9.89473684 L21.9056145,18.1052632 L30.12022,18.1052632 C31.156524,18.1052632 32.0158982,18.9642105 32.0158982,20 C32.0158982,21.0357895 31.156524,21.8947368 30.12022,21.8947368 Z"
|
|
22
22
|
})
|
|
23
23
|
}));
|
|
24
24
|
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
export var DeleteIcon = props => {
|
|
4
|
+
var {
|
|
5
|
+
style
|
|
6
|
+
} = props;
|
|
7
|
+
var defaultStyle = {
|
|
8
|
+
verticalAlign: 'middle',
|
|
9
|
+
display: 'inline-block',
|
|
10
|
+
cursor: 'pointer',
|
|
11
|
+
marginLeft: 5,
|
|
12
|
+
height: '1em',
|
|
13
|
+
width: '1em'
|
|
14
|
+
};
|
|
15
|
+
return /*#__PURE__*/_jsx("svg", _extends({
|
|
16
|
+
viewBox: "0 0 40 40",
|
|
17
|
+
fill: "var(--w-rjv-delete-color, #dc3545)"
|
|
18
|
+
}, props, {
|
|
19
|
+
style: _extends({}, style, defaultStyle),
|
|
20
|
+
children: /*#__PURE__*/_jsx("path", {
|
|
21
|
+
d: "M28.3940997,0 L11.625773,0 C4.34215619,0 0,4.34 0,11.62 L0,28.36 C0,35.66 4.34215619,40 11.625773,40 L28.3740897,40 C35.6577066,40 39.9999316,35.66 39.9999316,28.38 L39.9999316,11.62 C40.0198727,4.34 35.6777165,0 28.3940997,0 Z M30.3428039,27.0681654 C31.2346195,27.9595381 31.2346195,29.4349136 30.3428039,30.3262862 C29.88152,30.7873411 29.2972271,31.0025 28.7129341,31.0025 C28.1286412,31.0025 27.5443483,30.7873411 27.0830644,30.3262862 L20.0100446,23.2567787 L12.9370249,30.3262862 C12.475741,30.7873411 11.891448,31.0025 11.3071551,31.0025 C10.7228621,31.0025 10.1385692,30.7873411 9.67728531,30.3262862 C8.78464325,29.4234847 8.78464325,27.9709669 9.67728531,27.0681654 L16.7503051,19.9986579 L9.67728531,12.9291504 C8.78464325,12.0263488 8.78464325,10.573831 9.67728531,9.67102951 C10.5691008,8.77965683 12.0452093,8.77965683 12.9370249,9.67102951 L20.0100446,16.740537 L27.0830644,9.67102951 C27.9748799,8.77965683 29.4509884,8.77965683 30.3428039,9.67102951 C31.2346195,10.5624022 31.2346195,12.0377777 30.3428039,12.9291504 L23.2697842,19.9986579 L30.3428039,27.0681654 L30.3428039,27.0681654 Z"
|
|
22
|
+
})
|
|
23
|
+
}));
|
|
24
|
+
};
|
package/esm/editor/index.d.ts
CHANGED
|
@@ -2,19 +2,27 @@
|
|
|
2
2
|
import type { JsonViewProps } from '../';
|
|
3
3
|
import type { CountInfoExtraProps } from './countInfoExtra';
|
|
4
4
|
export interface JsonViewEditorProps<T extends object> extends JsonViewProps<T> {
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* When a callback function is passed in, edit functionality is enabled. The callback is invoked before edits are completed.
|
|
7
|
+
* @returns {boolean} Returning false from onEdit will prevent the change from being made.
|
|
8
|
+
*/
|
|
6
9
|
onEdit?: (option: {
|
|
7
10
|
value: unknown;
|
|
8
11
|
oldValue: unknown;
|
|
9
12
|
keyName?: string | number;
|
|
10
13
|
parentName?: string | number;
|
|
11
14
|
type?: 'value' | 'key';
|
|
12
|
-
}) =>
|
|
15
|
+
}) => boolean;
|
|
13
16
|
/**
|
|
14
17
|
* When a callback function is passed in, add functionality is enabled. The callback is invoked before additions are completed.
|
|
15
18
|
* @returns {boolean} Returning false from onAdd will prevent the change from being made.
|
|
16
19
|
*/
|
|
17
20
|
onAdd?: CountInfoExtraProps<T>['onAdd'];
|
|
21
|
+
/**
|
|
22
|
+
* When a callback function is passed in, delete functionality is enabled. The callback is invoked before deletions are completed.
|
|
23
|
+
* @returns Returning false from onDelete will prevent the change from being made.
|
|
24
|
+
*/
|
|
25
|
+
onDelete?: CountInfoExtraProps<T>['onDelete'];
|
|
18
26
|
/** Whether enable edit feature. @default true */
|
|
19
27
|
editable?: boolean;
|
|
20
28
|
}
|
package/esm/editor/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["onEdit", "components", "editable", "displayDataTypes", "onAdd"];
|
|
3
|
+
var _excluded = ["onEdit", "components", "editable", "displayDataTypes", "onAdd", "onDelete"];
|
|
4
4
|
import { forwardRef } from 'react';
|
|
5
5
|
import JsonView from '../';
|
|
6
6
|
import { ObjectKey } from './objectKey';
|
|
@@ -13,13 +13,15 @@ var JsonViewEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
13
13
|
components,
|
|
14
14
|
editable = true,
|
|
15
15
|
displayDataTypes = true,
|
|
16
|
-
onAdd
|
|
16
|
+
onAdd,
|
|
17
|
+
onDelete
|
|
17
18
|
} = props,
|
|
18
19
|
reset = _objectWithoutPropertiesLoose(props, _excluded);
|
|
19
20
|
var comps = _extends({}, components, {
|
|
20
21
|
countInfoExtra: reprops => /*#__PURE__*/_jsx(CountInfoExtra, _extends({}, reprops, {
|
|
21
22
|
editable: editable,
|
|
22
|
-
onAdd: onAdd
|
|
23
|
+
onAdd: onAdd,
|
|
24
|
+
onDelete: onDelete
|
|
23
25
|
})),
|
|
24
26
|
objectKey: reprops => /*#__PURE__*/_jsx(ObjectKey, _extends({}, reprops, {
|
|
25
27
|
editableValue: editable,
|
|
@@ -30,6 +32,7 @@ var JsonViewEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
30
32
|
return /*#__PURE__*/_jsx(ReValue, _extends({}, reprops, {
|
|
31
33
|
editableValue: editable,
|
|
32
34
|
displayDataTypes: displayDataTypes,
|
|
35
|
+
onDelete: onDelete,
|
|
33
36
|
onEdit: onEdit
|
|
34
37
|
}));
|
|
35
38
|
}
|
package/esm/editor/value.d.ts
CHANGED
|
@@ -7,8 +7,11 @@ export interface ReValueProps<T extends object> extends React.HTMLAttributes<HTM
|
|
|
7
7
|
keyName?: JsonViewEditorProps<T>['keyName'];
|
|
8
8
|
type: TypeProps['type'];
|
|
9
9
|
value?: unknown;
|
|
10
|
+
data?: T;
|
|
10
11
|
visible?: boolean;
|
|
11
12
|
editableValue?: boolean;
|
|
12
13
|
displayDataTypes?: boolean;
|
|
14
|
+
setValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
15
|
+
onDelete?: JsonViewEditorProps<T>['onDelete'];
|
|
13
16
|
}
|
|
14
17
|
export declare function ReValue<T extends object>(props: ReValueProps<T>): import("react/jsx-runtime").JSX.Element;
|
package/esm/editor/value.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["type", "value", "keyName", "visible", "quotes", "style", "children", "displayDataTypes", "editableValue", "onEdit"];
|
|
4
|
+
var _excluded = ["type", "value", "setValue", "data", "keyName", "visible", "quotes", "style", "children", "displayDataTypes", "editableValue", "onDelete", "onEdit"];
|
|
4
5
|
import { Fragment, useEffect, useRef, useState } from 'react';
|
|
5
6
|
import { getValueString, isFloat, Type, typeMap } from '../value';
|
|
6
7
|
import { EditIcon } from './icon/edit';
|
|
8
|
+
import { DeleteIcon } from './icon/delete';
|
|
7
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
11
|
var Quotes = _ref => {
|
|
@@ -23,11 +25,15 @@ export function ReValue(props) {
|
|
|
23
25
|
var {
|
|
24
26
|
type,
|
|
25
27
|
value,
|
|
28
|
+
setValue,
|
|
29
|
+
data,
|
|
30
|
+
keyName,
|
|
26
31
|
visible,
|
|
27
32
|
quotes,
|
|
28
33
|
style,
|
|
29
34
|
displayDataTypes,
|
|
30
35
|
editableValue,
|
|
36
|
+
onDelete,
|
|
31
37
|
onEdit
|
|
32
38
|
} = props,
|
|
33
39
|
reset = _objectWithoutPropertiesLoose(props, _excluded);
|
|
@@ -55,51 +61,68 @@ export function ReValue(props) {
|
|
|
55
61
|
$edit.current.contentEditable = 'false';
|
|
56
62
|
}
|
|
57
63
|
};
|
|
58
|
-
var blur = ()
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
$edit.current
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
64
|
+
var blur = /*#__PURE__*/function () {
|
|
65
|
+
var _ref2 = _asyncToGenerator(function* () {
|
|
66
|
+
if (!editableValue) return;
|
|
67
|
+
setEditable(false);
|
|
68
|
+
if ($edit.current) {
|
|
69
|
+
$edit.current.contentEditable = 'false';
|
|
70
|
+
var text = $edit.current.innerText;
|
|
71
|
+
var _typeStr = curentType;
|
|
72
|
+
if (curentType === 'number' || curentType === 'float') {
|
|
73
|
+
text = Number(text);
|
|
74
|
+
_typeStr = isFloat(text) ? 'float' : 'number';
|
|
75
|
+
}
|
|
76
|
+
if (curentType === 'url' && typeof text === 'string') {
|
|
77
|
+
text = new URL(text);
|
|
78
|
+
_typeStr = 'url';
|
|
79
|
+
}
|
|
80
|
+
if (Number.isNaN(text)) {
|
|
81
|
+
_typeStr = 'number';
|
|
82
|
+
}
|
|
83
|
+
if (typeof text === 'string' && /^(true|false)$/ig.test(text)) {
|
|
84
|
+
text = /^(true)$/ig.test(text) ? true : false;
|
|
85
|
+
_typeStr = 'boolean';
|
|
86
|
+
} else if (typeof text === 'string' && /^[\d]+n$/ig.test(text)) {
|
|
87
|
+
text = BigInt(text.replace(/n$/ig, ''));
|
|
88
|
+
_typeStr = 'bigint';
|
|
89
|
+
} else if (typeof text === 'string' && /^(null)$/ig.test(text)) {
|
|
90
|
+
text = null;
|
|
91
|
+
_typeStr = 'null';
|
|
92
|
+
} else if (typeof text === 'string' && /^(undefined)$/ig.test(text)) {
|
|
93
|
+
text = undefined;
|
|
94
|
+
_typeStr = 'undefined';
|
|
95
|
+
} else if (typeof text === 'string') {
|
|
96
|
+
try {
|
|
97
|
+
if (text && text.length > 10 && !isNaN(Date.parse(text))) {
|
|
98
|
+
var dt = new Date(text);
|
|
99
|
+
text = dt;
|
|
100
|
+
_typeStr = 'date';
|
|
101
|
+
}
|
|
102
|
+
} catch (error) {}
|
|
103
|
+
}
|
|
104
|
+
if (onEdit) {
|
|
105
|
+
var result = yield onEdit({
|
|
106
|
+
type: 'value',
|
|
107
|
+
value: text,
|
|
108
|
+
oldValue: curentChild
|
|
109
|
+
});
|
|
110
|
+
if (result) {
|
|
111
|
+
setCurentType(_typeStr);
|
|
112
|
+
setCurentChild(text);
|
|
113
|
+
} else {
|
|
114
|
+
var {
|
|
115
|
+
content: oldChildStr
|
|
116
|
+
} = getValueString(curentChild);
|
|
117
|
+
$edit.current.innerHTML = String(oldChildStr);
|
|
92
118
|
}
|
|
93
|
-
}
|
|
119
|
+
}
|
|
94
120
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
};
|
|
121
|
+
});
|
|
122
|
+
return function blur() {
|
|
123
|
+
return _ref2.apply(this, arguments);
|
|
124
|
+
};
|
|
125
|
+
}();
|
|
103
126
|
var defaultStyle = {
|
|
104
127
|
minWidth: 34,
|
|
105
128
|
minHeight: 18,
|
|
@@ -127,23 +150,35 @@ export function ReValue(props) {
|
|
|
127
150
|
if (typeStr === 'null' || typeStr === 'undefined') {
|
|
128
151
|
typeView = /*#__PURE__*/_jsx(Fragment, {});
|
|
129
152
|
}
|
|
153
|
+
var deleteHandle = /*#__PURE__*/function () {
|
|
154
|
+
var _ref3 = _asyncToGenerator(function* (evn) {
|
|
155
|
+
evn.stopPropagation();
|
|
156
|
+
if (data && keyName && keyName in data && setValue) {
|
|
157
|
+
delete data[keyName];
|
|
158
|
+
setValue(_extends({}, data));
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
return function deleteHandle(_x) {
|
|
162
|
+
return _ref3.apply(this, arguments);
|
|
163
|
+
};
|
|
164
|
+
}();
|
|
130
165
|
return /*#__PURE__*/_jsxs(Fragment, {
|
|
131
|
-
children: [displayDataTypes && typeView, /*#__PURE__*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
})]
|
|
145
|
-
}), visible && editableValue && /*#__PURE__*/_jsx(EditIcon, {
|
|
166
|
+
children: [displayDataTypes && typeView, /*#__PURE__*/_jsx(Quotes, {
|
|
167
|
+
style: style,
|
|
168
|
+
quotes: quotes,
|
|
169
|
+
show: typeStr === 'string'
|
|
170
|
+
}), /*#__PURE__*/_jsx("span", _extends({}, spanProps, {
|
|
171
|
+
ref: $edit,
|
|
172
|
+
"data-value": childStr,
|
|
173
|
+
children: typeof curentChild === 'string' ? curentChild : childStr
|
|
174
|
+
})), /*#__PURE__*/_jsx(Quotes, {
|
|
175
|
+
style: style,
|
|
176
|
+
quotes: quotes,
|
|
177
|
+
show: typeStr === 'string'
|
|
178
|
+
}), visible && editableValue && onEdit && /*#__PURE__*/_jsx(EditIcon, {
|
|
146
179
|
onClick: click
|
|
180
|
+
}), visible && editableValue && onDelete && /*#__PURE__*/_jsx(DeleteIcon, {
|
|
181
|
+
onClick: deleteHandle
|
|
147
182
|
})]
|
|
148
183
|
});
|
|
149
184
|
}
|
package/esm/node.d.ts
CHANGED
|
@@ -6,5 +6,7 @@ export interface RooNodeProps<T extends object> extends JsonViewProps<T> {
|
|
|
6
6
|
keyName?: string | number;
|
|
7
7
|
keyid?: string;
|
|
8
8
|
level?: number;
|
|
9
|
+
parentValue?: T;
|
|
10
|
+
setParentValue?: React.Dispatch<React.SetStateAction<T>>;
|
|
9
11
|
}
|
|
10
12
|
export declare function RooNode<T extends object>(props: RooNodeProps<T>): import("react/jsx-runtime").JSX.Element;
|