{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
module Eventloop.Module.Websocket.Mouse.Types where

import GHC.Generics (Generic)
import Control.DeepSeq

import Eventloop.Types.Common
import Eventloop.Utility.Vectors

data MouseIn = Mouse MouseType NumericId MouseEvent Point
             deriving (Eq, Show)

data MouseType = MouseCanvas
               | MouseSVG
               deriving (Eq, Show)

data MouseEvent = Click MouseButton
                | DoubleClick MouseButton
                | MouseMove
                | MouseDown MouseButton
                | MouseUp MouseButton
                | MouseEnter
                | MouseLeave
                deriving (Eq, Show)
         
data MouseButton = MouseLeft 
                 | MouseRight 
                 | MouseMiddle
                 deriving (Eq, Show, Generic, NFData)