{-# 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)