openreplay/frontend/app/components/ui/JSONTree/JSONTree.tsx
Delirium 5421aedfe6
move redux plugin hashing to worker thread, update redux panel look and style
* 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
2024-04-09 14:47:31 +02:00

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;