* feat tracker moving redux stuff to worker thread * feat ui: sync redux messages to action time * feat ui: starting new redux ui * fix backend mob gen * feat tracker moving redux stuff to worker thread * feat ui: sync redux messages to action time * feat ui: starting new redux ui * fix backend mob gen * styles, third party etc * rm dead code * design fixes * wrapper around old redux stuff * prettier * icon sw * some changes to default style * some code style fixes
62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
import React from 'react';
|
|
import JsonView from 'react18-json-view';
|
|
|
|
function updateObjectLink(obj: any): any {
|
|
if (typeof obj !== 'object' || obj === null) return obj;
|
|
if (Array.isArray(obj)) return [...obj];
|
|
return { ...obj };
|
|
}
|
|
|
|
interface Props {
|
|
src: any;
|
|
className?: string;
|
|
dark?: boolean;
|
|
theme?:
|
|
| 'default'
|
|
| 'a11y'
|
|
| 'github'
|
|
| 'vscode'
|
|
| 'atom'
|
|
| 'winter-is-coming';
|
|
enableClipboard?: boolean;
|
|
matchesURL?: boolean;
|
|
displaySize?: boolean | number | 'collapsed';
|
|
collapseStringsAfterLength?: number;
|
|
collapsed?: number | boolean;
|
|
editable?: boolean;
|
|
onAdd?: (params: {
|
|
indexOrName: string | number;
|
|
depth: number;
|
|
src: any;
|
|
parentType: 'object' | 'array';
|
|
}) => void;
|
|
onDelete?: (params: {
|
|
value: any;
|
|
indexOrName: string | number;
|
|
depth: number;
|
|
src: any;
|
|
parentType: 'object' | 'array';
|
|
}) => void;
|
|
onEdit?: (params: {
|
|
newValue: any;
|
|
oldValue: any;
|
|
depth: number;
|
|
src: any;
|
|
indexOrName: string | number;
|
|
parentType: 'object' | 'array';
|
|
}) => void;
|
|
}
|
|
|
|
function JSONTree(props: Props) {
|
|
return (
|
|
<JsonView
|
|
src={updateObjectLink(props.src)}
|
|
collapsed={1}
|
|
displaySize={'collapsed'}
|
|
enableClipboard={true}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default JSONTree;
|