silphius/app/react/components/devtools.jsx

48 lines
1.3 KiB
React
Raw Normal View History

2024-07-31 09:29:33 -05:00
import {useCallback, useState} from 'react';
2024-07-08 15:49:23 -05:00
import {Tab, Tabs, TabList, TabPanel} from 'react-tabs';
import 'react-tabs/style/react-tabs.css';
2024-07-07 23:30:48 -05:00
2024-07-31 09:29:33 -05:00
import {useEcsTick} from '@/react/context/ecs.js';
2024-07-20 04:32:33 -05:00
import {useMainEntity} from '@/react/context/main-entity.js';
2024-07-10 23:40:11 -05:00
2024-07-07 23:30:48 -05:00
import styles from './devtools.module.css';
2024-07-08 15:49:23 -05:00
import Tiles from './devtools/tiles.jsx';
2024-07-07 23:30:48 -05:00
export default function Devtools({
2024-07-09 16:00:05 -05:00
eventsChannel,
2024-07-07 23:30:48 -05:00
}) {
2024-07-10 23:40:11 -05:00
const [mainEntity] = useMainEntity();
2024-07-21 07:28:22 -05:00
const [mainEntityJson, setMainEntityJson] = useState('');
2024-07-31 09:29:33 -05:00
const onEcsTick = useCallback((payload, ecs) => {
if (!mainEntity) {
2024-07-10 23:40:11 -05:00
return;
}
2024-07-21 07:28:22 -05:00
setMainEntityJson(JSON.stringify(ecs.get(mainEntity), null, 2));
2024-07-31 09:29:33 -05:00
}, [mainEntity]);
useEcsTick(onEcsTick);
2024-07-07 23:30:48 -05:00
return (
<div className={styles.devtools}>
2024-07-08 15:49:23 -05:00
<Tabs>
<TabList>
<Tab>Dashboard</Tab>
<Tab>Tiles</Tab>
</TabList>
<TabPanel>
2024-07-08 22:14:21 -05:00
<div className={styles.dashboard}>
<form>
<div className={styles.engineBar}>
</div>
</form>
2024-07-21 07:28:22 -05:00
<pre><code><small>{mainEntityJson}</small></code></pre>
2024-07-08 22:14:21 -05:00
</div>
2024-07-08 15:49:23 -05:00
</TabPanel>
<TabPanel>
<Tiles
2024-07-09 16:00:05 -05:00
eventsChannel={eventsChannel}
2024-07-08 15:49:23 -05:00
/>
</TabPanel>
</Tabs>
</div>
2024-07-07 23:30:48 -05:00
);
}