@uiw/react-json-view 2.0.0-alpha.8 → 2.0.0-alpha.9
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/cjs/comps/KeyValues.js +4 -1
- package/cjs/editor/KeyName.d.ts +2 -0
- package/cjs/editor/KeyName.js +82 -0
- package/cjs/editor/index.d.ts +19 -0
- package/cjs/editor/index.js +44 -0
- package/cjs/editor/store.d.ts +28 -0
- package/cjs/editor/store.js +23 -0
- package/cjs/section/KeyName.d.ts +1 -0
- package/cjs/section/KeyName.js +2 -0
- package/cjs/store/Section.d.ts +1 -0
- package/editor.d.ts +22 -20
- package/esm/comps/KeyValues.js +4 -1
- package/esm/editor/KeyName.d.ts +2 -0
- package/esm/editor/KeyName.js +77 -0
- package/esm/editor/index.d.ts +19 -0
- package/esm/editor/index.js +34 -0
- package/esm/editor/store.d.ts +28 -0
- package/esm/editor/store.js +13 -0
- package/esm/section/KeyName.d.ts +1 -0
- package/esm/section/KeyName.js +2 -0
- package/esm/store/Section.d.ts +1 -0
- package/package.json +2 -4
package/cjs/comps/KeyValues.js
CHANGED
|
@@ -80,6 +80,7 @@ var KeyValues = exports.KeyValues = function KeyValues(props) {
|
|
|
80
80
|
KeyValues.displayName = 'JVR.KeyValues';
|
|
81
81
|
var KayName = exports.KayName = function KayName(props) {
|
|
82
82
|
var keyName = props.keyName,
|
|
83
|
+
parentValue = props.parentValue,
|
|
83
84
|
value = props.value;
|
|
84
85
|
var _useStore2 = (0, _store.useStore)(),
|
|
85
86
|
highlightUpdates = _useStore2.highlightUpdates;
|
|
@@ -99,6 +100,7 @@ var KayName = exports.KayName = function KayName(props) {
|
|
|
99
100
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_KeyName.KeyNameComp, {
|
|
100
101
|
keyName: keyName,
|
|
101
102
|
value: value,
|
|
103
|
+
parentValue: parentValue,
|
|
102
104
|
children: keyName
|
|
103
105
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_symbol.Quote, {
|
|
104
106
|
isNumber: isNumber,
|
|
@@ -146,7 +148,8 @@ var KeyValuesItem = exports.KeyValuesItem = function KeyValuesItem(props) {
|
|
|
146
148
|
}, reset), {}, {
|
|
147
149
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(KayName, {
|
|
148
150
|
keyName: keyName,
|
|
149
|
-
value: value
|
|
151
|
+
value: value,
|
|
152
|
+
parentValue: parentValue
|
|
150
153
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Value.Value, {
|
|
151
154
|
keyName: keyName,
|
|
152
155
|
value: value,
|
|
@@ -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/section/KeyName.d.ts
CHANGED
package/cjs/section/KeyName.js
CHANGED
|
@@ -22,6 +22,7 @@ KeyName.displayName = 'JVR.KeyName';
|
|
|
22
22
|
var KeyNameComp = exports.KeyNameComp = function KeyNameComp(props) {
|
|
23
23
|
var children = props.children,
|
|
24
24
|
value = props.value,
|
|
25
|
+
parentValue = props.parentValue,
|
|
25
26
|
keyName = props.keyName;
|
|
26
27
|
var isNumber = typeof children === 'number';
|
|
27
28
|
var style = {
|
|
@@ -39,6 +40,7 @@ var KeyNameComp = exports.KeyNameComp = function KeyNameComp(props) {
|
|
|
39
40
|
children: children
|
|
40
41
|
}), {
|
|
41
42
|
value: value,
|
|
43
|
+
parentValue: parentValue,
|
|
42
44
|
keyName: keyName
|
|
43
45
|
});
|
|
44
46
|
if (child) return child;
|
package/cjs/store/Section.d.ts
CHANGED
package/editor.d.ts
CHANGED
|
@@ -2,35 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
declare module '@uiw/react-json-view/editor' {
|
|
4
4
|
import { JsonViewProps } from '@uiw/react-json-view';
|
|
5
|
-
import type { CountInfoExtraProps } from '@uiw/react-json-view/cjs/editor/countInfoExtra';
|
|
5
|
+
// import type { CountInfoExtraProps } from '@uiw/react-json-view/cjs/editor/countInfoExtra';
|
|
6
6
|
type Option = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
value: string;
|
|
8
|
+
prevValue: string;
|
|
9
|
+
keyName: string | number;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
export interface JsonViewEditorProps<T extends object> extends JsonViewProps<T> {
|
|
13
13
|
/** Callback when value edit functionality */
|
|
14
14
|
onEdit?: (option: {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
value: unknown;
|
|
16
|
+
oldValue: unknown;
|
|
17
|
+
keyName?: string | number;
|
|
18
|
+
parentName?: string | number;
|
|
19
|
+
type?: 'value' | 'key';
|
|
20
20
|
}) => void;
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
onAdd?: CountInfoExtraProps<T>['onAdd'];
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
onDelete?: CountInfoExtraProps<T>['onDelete'];
|
|
21
|
+
// /**
|
|
22
|
+
// * When a callback function is passed in, add functionality is enabled. The callback is invoked before additions are completed.
|
|
23
|
+
// * @returns {boolean} Returning false from onAdd will prevent the change from being made.
|
|
24
|
+
// */
|
|
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'];
|
|
31
31
|
/** Whether enable edit feature. @default true */
|
|
32
32
|
editable?: boolean;
|
|
33
33
|
}
|
|
34
|
-
const JsonViewEditor: import(
|
|
34
|
+
const JsonViewEditor: import('react').ForwardRefExoticComponent<
|
|
35
|
+
Omit<JsonViewEditorProps<object>, 'ref'> & import('react').RefAttributes<HTMLDivElement>
|
|
36
|
+
>;
|
|
35
37
|
export default JsonViewEditor;
|
|
36
38
|
}
|
package/esm/comps/KeyValues.js
CHANGED
|
@@ -64,6 +64,7 @@ KeyValues.displayName = 'JVR.KeyValues';
|
|
|
64
64
|
export var KayName = props => {
|
|
65
65
|
var {
|
|
66
66
|
keyName,
|
|
67
|
+
parentValue,
|
|
67
68
|
value
|
|
68
69
|
} = props;
|
|
69
70
|
var {
|
|
@@ -85,6 +86,7 @@ export var KayName = props => {
|
|
|
85
86
|
}), /*#__PURE__*/_jsx(KeyNameComp, {
|
|
86
87
|
keyName: keyName,
|
|
87
88
|
value: value,
|
|
89
|
+
parentValue: parentValue,
|
|
88
90
|
children: keyName
|
|
89
91
|
}), /*#__PURE__*/_jsx(Quote, {
|
|
90
92
|
isNumber: isNumber,
|
|
@@ -133,7 +135,8 @@ export var KeyValuesItem = props => {
|
|
|
133
135
|
}, reset, {
|
|
134
136
|
children: [/*#__PURE__*/_jsx(KayName, {
|
|
135
137
|
keyName: keyName,
|
|
136
|
-
value: value
|
|
138
|
+
value: value,
|
|
139
|
+
parentValue: parentValue
|
|
137
140
|
}), /*#__PURE__*/_jsx(Value, {
|
|
138
141
|
keyName: keyName,
|
|
139
142
|
value: value,
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
|
|
3
|
+
var _excluded = ["children"],
|
|
4
|
+
_excluded2 = ["value", "parentValue", "keyName"];
|
|
5
|
+
import { useRef, useState } from 'react';
|
|
6
|
+
import { useStore } from './store';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export var KeyNameRender = (_ref, _ref2) => {
|
|
9
|
+
var {
|
|
10
|
+
children
|
|
11
|
+
} = _ref,
|
|
12
|
+
reset = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
13
|
+
var {
|
|
14
|
+
value,
|
|
15
|
+
parentValue,
|
|
16
|
+
keyName
|
|
17
|
+
} = _ref2;
|
|
18
|
+
if (typeof children === 'number') {
|
|
19
|
+
return /*#__PURE__*/_jsx("span", _extends({}, reset, {
|
|
20
|
+
children: children
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
return /*#__PURE__*/_jsx(Child, _extends({}, reset, {
|
|
24
|
+
value: value,
|
|
25
|
+
parentValue: parentValue,
|
|
26
|
+
keyName: keyName,
|
|
27
|
+
children: children
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
var Child = props => {
|
|
31
|
+
var {
|
|
32
|
+
value,
|
|
33
|
+
keyName
|
|
34
|
+
} = props,
|
|
35
|
+
reset = _objectWithoutPropertiesLoose(props, _excluded2);
|
|
36
|
+
var $dom = useRef(null);
|
|
37
|
+
var [currentValue, setCurrentValue] = useState(props.children);
|
|
38
|
+
var {
|
|
39
|
+
onEdit
|
|
40
|
+
} = useStore();
|
|
41
|
+
var onKeyDown = evn => {
|
|
42
|
+
if (evn.key === 'Enter') {
|
|
43
|
+
var _$dom$current;
|
|
44
|
+
(_$dom$current = $dom.current) == null || _$dom$current.setAttribute('contentEditable', 'false');
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var onClick = evn => {
|
|
48
|
+
var _$dom$current2, _$dom$current3;
|
|
49
|
+
evn.stopPropagation();
|
|
50
|
+
(_$dom$current2 = $dom.current) == null || _$dom$current2.setAttribute('contentEditable', 'true');
|
|
51
|
+
(_$dom$current3 = $dom.current) == null || _$dom$current3.focus();
|
|
52
|
+
};
|
|
53
|
+
var onBlur = evn => {
|
|
54
|
+
var _$dom$current4;
|
|
55
|
+
(_$dom$current4 = $dom.current) == null || _$dom$current4.setAttribute('contentEditable', 'false');
|
|
56
|
+
var callback = onEdit && onEdit({
|
|
57
|
+
value: evn.target.textContent,
|
|
58
|
+
oldValue: value,
|
|
59
|
+
keyName
|
|
60
|
+
});
|
|
61
|
+
if (callback) {
|
|
62
|
+
setCurrentValue(evn.target.textContent);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
var spanProps = _extends({}, reset, {
|
|
66
|
+
onKeyDown,
|
|
67
|
+
onClick,
|
|
68
|
+
onBlur,
|
|
69
|
+
spellCheck: false,
|
|
70
|
+
contentEditable: 'false',
|
|
71
|
+
suppressContentEditableWarning: true,
|
|
72
|
+
children: currentValue
|
|
73
|
+
});
|
|
74
|
+
return /*#__PURE__*/_jsx("span", _extends({}, spanProps, {
|
|
75
|
+
ref: $dom
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
@@ -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,34 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
|
|
3
|
+
var _excluded = ["children", "onEdit", "editable"];
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import JsonView from '../';
|
|
6
|
+
import { KeyNameRender } from './KeyName';
|
|
7
|
+
import { Context, Dispatch, useStoreReducer } from './store';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
var JsonViewEditor = /*#__PURE__*/forwardRef((props, ref) => {
|
|
11
|
+
var {
|
|
12
|
+
children,
|
|
13
|
+
onEdit,
|
|
14
|
+
editable = true
|
|
15
|
+
} = props,
|
|
16
|
+
reset = _objectWithoutPropertiesLoose(props, _excluded);
|
|
17
|
+
var [state, dispatch] = useStoreReducer({
|
|
18
|
+
onEdit
|
|
19
|
+
});
|
|
20
|
+
return /*#__PURE__*/_jsx(Context.Provider, {
|
|
21
|
+
value: state,
|
|
22
|
+
children: /*#__PURE__*/_jsx(Dispatch.Provider, {
|
|
23
|
+
value: dispatch,
|
|
24
|
+
children: /*#__PURE__*/_jsxs(JsonView, _extends({}, reset, {
|
|
25
|
+
shortenTextAfterLength: 0,
|
|
26
|
+
ref: ref,
|
|
27
|
+
children: [editable && /*#__PURE__*/_jsx(JsonView.KeyName, {
|
|
28
|
+
render: KeyNameRender
|
|
29
|
+
}), children]
|
|
30
|
+
}))
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
export default JsonViewEditor;
|
|
@@ -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,13 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import { createContext, useContext, useReducer } from 'react';
|
|
3
|
+
var initialState = {};
|
|
4
|
+
export var Context = /*#__PURE__*/createContext(initialState);
|
|
5
|
+
var reducer = (state, action) => _extends({}, state, action);
|
|
6
|
+
export var Dispatch = /*#__PURE__*/createContext(() => {});
|
|
7
|
+
Dispatch.displayName = 'JVR.Editor.Dispatch';
|
|
8
|
+
export var useStore = () => {
|
|
9
|
+
return useContext(Context);
|
|
10
|
+
};
|
|
11
|
+
export function useStoreReducer(initialState) {
|
|
12
|
+
return useReducer(reducer, initialState);
|
|
13
|
+
}
|
package/esm/section/KeyName.d.ts
CHANGED
package/esm/section/KeyName.js
CHANGED
|
@@ -16,6 +16,7 @@ export var KeyNameComp = props => {
|
|
|
16
16
|
var {
|
|
17
17
|
children,
|
|
18
18
|
value,
|
|
19
|
+
parentValue,
|
|
19
20
|
keyName
|
|
20
21
|
} = props;
|
|
21
22
|
var isNumber = typeof children === 'number';
|
|
@@ -36,6 +37,7 @@ export var KeyNameComp = props => {
|
|
|
36
37
|
children
|
|
37
38
|
}), {
|
|
38
39
|
value,
|
|
40
|
+
parentValue,
|
|
39
41
|
keyName
|
|
40
42
|
});
|
|
41
43
|
if (child) return child;
|
package/esm/store/Section.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uiw/react-json-view",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.9",
|
|
4
4
|
"description": "JSON viewer for react.",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -114,10 +114,8 @@
|
|
|
114
114
|
"tree-view",
|
|
115
115
|
"treeview"
|
|
116
116
|
],
|
|
117
|
-
"dependencies": {
|
|
118
|
-
"@babel/runtime": "^7.22.6"
|
|
119
|
-
},
|
|
120
117
|
"devDependencies": {
|
|
118
|
+
"@babel/runtime": "^7.22.6",
|
|
121
119
|
"@testing-library/react": "^14.0.0",
|
|
122
120
|
"@types/react-test-renderer": "^18.0.0",
|
|
123
121
|
"react": "^18.2.0",
|