import { h } from 'preact';
import { useState } from 'preact/hooks';
import useSWR from 'swr';
import { usePtzCommand } from '../api/ws';
import ActivityIndicator from './ActivityIndicator';
import ArrowRightDouble from '../icons/ArrowRightDouble';
import ArrowUpDouble from '../icons/ArrowUpDouble';
import ArrowDownDouble from '../icons/ArrowDownDouble';
import ArrowLeftDouble from '../icons/ArrowLeftDouble';
import Button from './Button';
import Heading from './Heading';
export default function CameraControlPanel({ camera = '' }) {
  const { data: ptz } = useSWR(`${camera}/ptz/info`);
  const [currentPreset, setCurrentPreset] = useState('');
  const { payload: _, send: sendPtz } = usePtzCommand(camera);
  const onSetPreview = async (e) => {
    e.stopPropagation();
    if (currentPreset == 'none') {
      return;
    }
    sendPtz(`preset_${currentPreset}`);
    setCurrentPreset('');
  };
  const onSetMove = async (e, dir) => {
    e.stopPropagation();
    sendPtz(`MOVE_${dir}`);
    setCurrentPreset('');
  };
  const onSetZoom = async (e, dir) => {
    e.stopPropagation();
    sendPtz(`ZOOM_${dir}`);
    setCurrentPreset('');
  };
  const onSetStop = async (e) => {
    e.stopPropagation();
    sendPtz('STOP');
  };
  if (!ptz) {
    return ;
  }
  document.addEventListener('keydown', (e) => {
    if (!e) {
      return;
    }
    if (e.repeat) {
      e.preventDefault();
      return;
    }
    if (ptz.features.includes('pt')) {
      if (e.key === 'ArrowLeft') {
        e.preventDefault();
        onSetMove(e, 'LEFT');
      } else if (e.key === 'ArrowRight') {
        e.preventDefault();
        onSetMove(e, 'RIGHT');
      } else if (e.key === 'ArrowUp') {
        e.preventDefault();
        onSetMove(e, 'UP');
      } else if (e.key === 'ArrowDown') {
        e.preventDefault();
        onSetMove(e, 'DOWN');
      }
      if (ptz.features.includes('zoom')) {
        if (e.key == '+') {
          e.preventDefault();
          onSetZoom(e, 'IN');
        } else if (e.key == '-') {
          e.preventDefault();
          onSetZoom(e, 'OUT');
        }
      }
    }
  });
  document.addEventListener('keyup', (e) => {
    if (!e || e.repeat) {
      return;
    }
    if (
      e.key === 'ArrowLeft' ||
      e.key === 'ArrowRight' ||
      e.key === 'ArrowUp' ||
      e.key === 'ArrowDown' ||
      e.key === '+' ||
      e.key === '-'
    ) {
      e.preventDefault();
      onSetStop(e);
    }
  });
  return (
    
      {ptz.features.includes('pt') && (
        
          
            
              Pan / Tilt
            
            
              
             
            
              
              
             
            
              
             
           
         
      )}
      {ptz.features.includes('zoom') && (
        
          
            Zoom
          
          
            
           
          
          
            
           
         
      )}
      {(ptz.presets || []).length > 0 && (
        
          
            Presets
          
          
            
          
          
         
      )}
    
 
  );
}