import { h } from 'preact';
import { useState } from 'preact/hooks';
import { Inset } from '../Inset';
import { Tab, Tabs } from '../Tabs';
import { Apple2 } from 'js/apple2';

import { Applesoft } from './Applesoft';
import { CPU } from './CPU';
import { Disks } from './Disks';
import { Memory } from './Memory';
import { VideoModes } from './VideoModes';

import styles from './css/Debugger.module.css';

interface DebuggerProps {
    apple2: Apple2 | undefined;
}

export const Debugger = ({ apple2 }: DebuggerProps) => {
    const [selected, setSelected] = useState(0);

    if (!apple2) {
        return null;
    }

    return (
        <Inset className={styles.inset}>
            <Tabs setSelected={setSelected}>
                <Tab>CPU</Tab>
                <Tab>Video</Tab>
                <Tab>Memory</Tab>
                <Tab>Disks</Tab>
                <Tab>Applesoft</Tab>
            </Tabs>
            <div className={styles.debugger}>
                {selected === 0 ? <CPU apple2={apple2} /> : null}
                {selected === 1 ? <VideoModes apple2={apple2} /> : null}
                {selected === 2 ? <Memory apple2={apple2} /> : null}
                {selected === 3 ? <Disks apple2={apple2} /> : null}
                {selected === 4 ? <Applesoft apple2={apple2} /> : null}
            </div>
        </Inset>
    );
};