import { useState } from 'react'; import clsx from 'clsx'; import { Console } from './components/console/console'; import { debouncedUpdateEsm, updateEsm } from './utils/esm'; import { Editor } from './components/editor/editor'; import { FileBrowser } from './components/file-browser/file-browser'; import { getSearchParam } from './utils/search-params'; import { Header } from './components/header/header'; import { PlayArea } from './components/play-area/play-area'; import { StatusBar } from './components/status-bar/status-bar'; import { Tabs } from './components/tabs/tabs'; import { useDevTool } from './hooks/use-dev-tool'; import { useLightMode } from './hooks/use-light-mode'; import { useLogs } from './hooks/use-logs'; import styles from './app.module.css'; export function App() { const [templatePickerOpen, setTemplatePickerOpen] = useState(false); const [autoPlay, setAutoPlay] = useState(getSearchParam('initialAutoPlay')); const [code, setCode] = useState(getSearchParam('initialCode')); const [compiledCode, setCompiledCode] = useState(''); const [tab, setTab] = useState(getSearchParam('initialTab')); const [isLightMode, setIsLightMode] = useLightMode(getSearchParam('initialLightMode')); const devTool = useDevTool(); const { logs } = useLogs(); const onCompiledChange = (text: string) => { setCompiledCode(text); if (autoPlay) { debouncedUpdateEsm(text); } }; const manualPlay = () => { updateEsm(compiledCode); }; return (