2023-02-03 11:09:09 +11:00
|
|
|
import ReactJson from 'react-json-view'
|
2022-11-27 14:06:33 +11:00
|
|
|
import { useEffect } from 'react'
|
2023-08-09 13:57:07 -04:00
|
|
|
import { Themes, useStore } from '../useStore'
|
2023-08-06 21:29:26 -04:00
|
|
|
import { CollapsiblePanel, CollapsiblePanelProps } from './CollapsiblePanel'
|
2022-11-27 14:06:33 +11:00
|
|
|
|
2023-02-03 11:09:09 +11:00
|
|
|
const ReactJsonTypeHack = ReactJson as any
|
|
|
|
|
2023-08-06 21:29:26 -04:00
|
|
|
interface LogPanelProps extends CollapsiblePanelProps {
|
2023-08-09 13:57:07 -04:00
|
|
|
theme?: Exclude<Themes, Themes.System>
|
2023-08-06 21:29:26 -04:00
|
|
|
}
|
|
|
|
|
2023-08-09 13:57:07 -04:00
|
|
|
export const Logs = ({ theme = Themes.Light, ...props }: LogPanelProps) => {
|
2023-08-06 21:29:26 -04:00
|
|
|
const { logs } = useStore(({ logs }) => ({
|
2022-11-27 14:06:33 +11:00
|
|
|
logs,
|
|
|
|
}))
|
|
|
|
useEffect(() => {
|
|
|
|
const element = document.querySelector('.console-tile')
|
|
|
|
if (element) {
|
|
|
|
element.scrollTop = element.scrollHeight - element.clientHeight
|
|
|
|
}
|
|
|
|
}, [logs])
|
|
|
|
return (
|
2023-08-06 21:29:26 -04:00
|
|
|
<CollapsiblePanel {...props}>
|
|
|
|
<div className="relative w-full">
|
|
|
|
<div className="absolute inset-0 flex flex-col">
|
2023-02-03 11:09:09 +11:00
|
|
|
<ReactJsonTypeHack
|
|
|
|
src={logs}
|
|
|
|
collapsed={1}
|
|
|
|
collapseStringsAfterLength={60}
|
|
|
|
enableClipboard={false}
|
|
|
|
displayArrayKey={false}
|
|
|
|
displayDataTypes={false}
|
|
|
|
displayObjectSize={true}
|
2023-02-03 11:31:37 +11:00
|
|
|
indentWidth={2}
|
|
|
|
quotesOnKeys={false}
|
2023-02-03 11:09:09 +11:00
|
|
|
name={false}
|
2023-08-06 21:29:26 -04:00
|
|
|
theme={theme === 'light' ? 'rjv-default' : 'monokai'}
|
2023-02-03 11:09:09 +11:00
|
|
|
/>
|
2022-11-27 14:06:33 +11:00
|
|
|
</div>
|
|
|
|
</div>
|
2023-08-06 21:29:26 -04:00
|
|
|
</CollapsiblePanel>
|
2022-11-27 14:06:33 +11:00
|
|
|
)
|
|
|
|
}
|
2023-07-26 14:10:30 -05:00
|
|
|
|
2023-08-09 13:57:07 -04:00
|
|
|
export const KCLErrors = ({
|
|
|
|
theme = Themes.Light,
|
|
|
|
...props
|
|
|
|
}: LogPanelProps) => {
|
2023-07-26 14:10:30 -05:00
|
|
|
const { kclErrors } = useStore(({ kclErrors }) => ({
|
|
|
|
kclErrors,
|
|
|
|
}))
|
|
|
|
useEffect(() => {
|
|
|
|
const element = document.querySelector('.console-tile')
|
|
|
|
if (element) {
|
|
|
|
element.scrollTop = element.scrollHeight - element.clientHeight
|
|
|
|
}
|
|
|
|
}, [kclErrors])
|
|
|
|
return (
|
2023-08-06 21:29:26 -04:00
|
|
|
<CollapsiblePanel {...props}>
|
2023-07-26 14:10:30 -05:00
|
|
|
<div className="h-full relative">
|
2023-08-06 21:29:26 -04:00
|
|
|
<div className="absolute inset-0 flex flex-col">
|
2023-07-26 14:10:30 -05:00
|
|
|
<ReactJsonTypeHack
|
|
|
|
src={kclErrors}
|
|
|
|
collapsed={1}
|
|
|
|
collapseStringsAfterLength={60}
|
|
|
|
enableClipboard={false}
|
|
|
|
displayArrayKey={false}
|
|
|
|
displayDataTypes={false}
|
|
|
|
displayObjectSize={true}
|
|
|
|
indentWidth={2}
|
|
|
|
quotesOnKeys={false}
|
|
|
|
name={false}
|
2023-08-06 21:29:26 -04:00
|
|
|
theme={theme === 'light' ? 'rjv-default' : 'monokai'}
|
2023-07-26 14:10:30 -05:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-08-06 21:29:26 -04:00
|
|
|
</CollapsiblePanel>
|
2023-07-26 14:10:30 -05:00
|
|
|
)
|
|
|
|
}
|