import MouseTrap from 'mousetrap'
import React, { useEffect } from 'react'
import { isRunningState } from '../../communication/bindings'
import { Panel, Button } from 'rsuite'
import { useRecoilState } from 'recoil'
import Amplifier from './Amplifier'
import TimeScales from './TimeScales'
import { useActiveBtns } from './hooks'

export default function Scales() {
  const [isRunning, setIsRunning] = useRecoilState(isRunningState)
  const [isSpaceActive, tapSpace] = useActiveBtns()

  useEffect(() => {
    MouseTrap.bind('space', (e) => {
      e.preventDefault()
      tapSpace()
      setIsRunning((isRunning) => !isRunning)
    })
    return () => {
      MouseTrap.unbind('space')
    }
  }, [setIsRunning, tapSpace])

  return (
    <Panel header="Scales" shaded collapsible defaultExpanded>
      <Button
        active={isSpaceActive}
        style={{
          color: 'white',
          backgroundColor: isRunning ? 'green' : 'red',
          width: '100%',
          marginBottom: '10px'
        }}
        size="sm"
        onClick={() => {
          setIsRunning(!isRunning)
        }}
      >
        {(isRunning ? 'Run' : 'Hold') + ' [space]'}
      </Button>
      <TimeScales />
      <Amplifier />
    </Panel>
  )
}