{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
#ifdef USE_TEMPLATE_HASKELL
{-# LANGUAGE TemplateHaskell #-}
#endif
{-# LANGUAGE TypeFamilies #-}
module Reflex.Dom.Builder.Class.Events where

#ifdef USE_TEMPLATE_HASKELL
import Data.GADT.Compare.TH
#else
import Data.GADT.Compare
       (GOrdering(..), (:~:)(..), GEq(..), GCompare(..))
#endif
import Data.Text (Text)

data EventTag
   = AbortTag
   | BlurTag
   | ChangeTag
   | ClickTag
   | ContextmenuTag
   | DblclickTag
   | DragTag
   | DragendTag
   | DragenterTag
   | DragleaveTag
   | DragoverTag
   | DragstartTag
   | DropTag
   | ErrorTag
   | FocusTag
   | InputTag
   | InvalidTag
   | KeydownTag
   | KeypressTag
   | KeyupTag
   | LoadTag
   | MousedownTag
   | MouseenterTag
   | MouseleaveTag
   | MousemoveTag
   | MouseoutTag
   | MouseoverTag
   | MouseupTag
   | MousewheelTag
   | ScrollTag
   | SelectTag
   | SubmitTag
   | WheelTag
   | BeforecutTag
   | CutTag
   | BeforecopyTag
   | CopyTag
   | BeforepasteTag
   | PasteTag
   | ResetTag
   | SearchTag
   | SelectstartTag
   | TouchstartTag
   | TouchmoveTag
   | TouchendTag
   | TouchcancelTag

data EventName :: EventTag -> * where
  Abort :: EventName 'AbortTag
  Blur :: EventName 'BlurTag
  Change :: EventName 'ChangeTag
  Click :: EventName 'ClickTag
  Contextmenu :: EventName 'ContextmenuTag
  Dblclick :: EventName 'DblclickTag
  Drag :: EventName 'DragTag
  Dragend :: EventName 'DragendTag
  Dragenter :: EventName 'DragenterTag
  Dragleave :: EventName 'DragleaveTag
  Dragover :: EventName 'DragoverTag
  Dragstart :: EventName 'DragstartTag
  Drop :: EventName 'DropTag
  Error :: EventName 'ErrorTag
  Focus :: EventName 'FocusTag
  Input :: EventName 'InputTag
  Invalid :: EventName 'InvalidTag
  Keydown :: EventName 'KeydownTag
  Keypress :: EventName 'KeypressTag
  Keyup :: EventName 'KeyupTag
  Load :: EventName 'LoadTag
  Mousedown :: EventName 'MousedownTag
  Mouseenter :: EventName 'MouseenterTag
  Mouseleave :: EventName 'MouseleaveTag
  Mousemove :: EventName 'MousemoveTag
  Mouseout :: EventName 'MouseoutTag
  Mouseover :: EventName 'MouseoverTag
  Mouseup :: EventName 'MouseupTag
  Mousewheel :: EventName 'MousewheelTag
  Scroll :: EventName 'ScrollTag
  Select :: EventName 'SelectTag
  Submit :: EventName 'SubmitTag
  Wheel :: EventName 'WheelTag
  Beforecut :: EventName 'BeforecutTag
  Cut :: EventName 'CutTag
  Beforecopy :: EventName 'BeforecopyTag
  Copy :: EventName 'CopyTag
  Beforepaste :: EventName 'BeforepasteTag
  Paste :: EventName 'PasteTag
  Reset :: EventName 'ResetTag
  Search :: EventName 'SearchTag
  Selectstart :: EventName 'SelectstartTag
  Touchstart :: EventName 'TouchstartTag
  Touchmove :: EventName 'TouchmoveTag
  Touchend :: EventName 'TouchendTag
  Touchcancel :: EventName 'TouchcancelTag

newtype EventResult en = EventResult { EventResult en -> EventResultType en
unEventResult :: EventResultType en }

type family EventResultType (en :: EventTag) :: * where
  EventResultType 'ClickTag = ()
  EventResultType 'DblclickTag = (Int, Int)
  EventResultType 'KeypressTag = Word
  EventResultType 'KeydownTag = Word
  EventResultType 'KeyupTag = Word
  EventResultType 'ScrollTag = Double
  EventResultType 'MousemoveTag = (Int, Int)
  EventResultType 'MousedownTag = (Int, Int)
  EventResultType 'MouseupTag = (Int, Int)
  EventResultType 'MouseenterTag = ()
  EventResultType 'MouseleaveTag = ()
  EventResultType 'FocusTag = ()
  EventResultType 'BlurTag = ()
  EventResultType 'ChangeTag = ()
  EventResultType 'DragTag = ()
  EventResultType 'DragendTag = ()
  EventResultType 'DragenterTag = ()
  EventResultType 'DragleaveTag = ()
  EventResultType 'DragoverTag = ()
  EventResultType 'DragstartTag = ()
  EventResultType 'DropTag = ()
  EventResultType 'AbortTag = ()
  EventResultType 'ContextmenuTag = ()
  EventResultType 'ErrorTag = ()
  EventResultType 'InputTag = ()
  EventResultType 'InvalidTag = ()
  EventResultType 'LoadTag = ()
  EventResultType 'MouseoutTag = ()
  EventResultType 'MouseoverTag = ()
  EventResultType 'MousewheelTag = ()
  EventResultType 'SelectTag = ()
  EventResultType 'SubmitTag = ()
  EventResultType 'BeforecutTag = ()
  EventResultType 'CutTag = ()
  EventResultType 'BeforecopyTag = ()
  EventResultType 'CopyTag = ()
  EventResultType 'BeforepasteTag = ()
  EventResultType 'PasteTag = Maybe Text
  EventResultType 'ResetTag = ()
  EventResultType 'SearchTag = ()
  EventResultType 'SelectstartTag = ()
  EventResultType 'TouchstartTag = TouchEventResult
  EventResultType 'TouchmoveTag = TouchEventResult
  EventResultType 'TouchendTag = TouchEventResult
  EventResultType 'TouchcancelTag = TouchEventResult
  EventResultType 'WheelTag = WheelEventResult

data DeltaMode = DeltaPixel | DeltaLine | DeltaPage
  deriving (Int -> DeltaMode -> ShowS
[DeltaMode] -> ShowS
DeltaMode -> String
(Int -> DeltaMode -> ShowS)
-> (DeltaMode -> String)
-> ([DeltaMode] -> ShowS)
-> Show DeltaMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeltaMode] -> ShowS
$cshowList :: [DeltaMode] -> ShowS
show :: DeltaMode -> String
$cshow :: DeltaMode -> String
showsPrec :: Int -> DeltaMode -> ShowS
$cshowsPrec :: Int -> DeltaMode -> ShowS
Show, ReadPrec [DeltaMode]
ReadPrec DeltaMode
Int -> ReadS DeltaMode
ReadS [DeltaMode]
(Int -> ReadS DeltaMode)
-> ReadS [DeltaMode]
-> ReadPrec DeltaMode
-> ReadPrec [DeltaMode]
-> Read DeltaMode
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeltaMode]
$creadListPrec :: ReadPrec [DeltaMode]
readPrec :: ReadPrec DeltaMode
$creadPrec :: ReadPrec DeltaMode
readList :: ReadS [DeltaMode]
$creadList :: ReadS [DeltaMode]
readsPrec :: Int -> ReadS DeltaMode
$creadsPrec :: Int -> ReadS DeltaMode
Read, DeltaMode -> DeltaMode -> Bool
(DeltaMode -> DeltaMode -> Bool)
-> (DeltaMode -> DeltaMode -> Bool) -> Eq DeltaMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeltaMode -> DeltaMode -> Bool
$c/= :: DeltaMode -> DeltaMode -> Bool
== :: DeltaMode -> DeltaMode -> Bool
$c== :: DeltaMode -> DeltaMode -> Bool
Eq, Eq DeltaMode
Eq DeltaMode =>
(DeltaMode -> DeltaMode -> Ordering)
-> (DeltaMode -> DeltaMode -> Bool)
-> (DeltaMode -> DeltaMode -> Bool)
-> (DeltaMode -> DeltaMode -> Bool)
-> (DeltaMode -> DeltaMode -> Bool)
-> (DeltaMode -> DeltaMode -> DeltaMode)
-> (DeltaMode -> DeltaMode -> DeltaMode)
-> Ord DeltaMode
DeltaMode -> DeltaMode -> Bool
DeltaMode -> DeltaMode -> Ordering
DeltaMode -> DeltaMode -> DeltaMode
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: DeltaMode -> DeltaMode -> DeltaMode
$cmin :: DeltaMode -> DeltaMode -> DeltaMode
max :: DeltaMode -> DeltaMode -> DeltaMode
$cmax :: DeltaMode -> DeltaMode -> DeltaMode
>= :: DeltaMode -> DeltaMode -> Bool
$c>= :: DeltaMode -> DeltaMode -> Bool
> :: DeltaMode -> DeltaMode -> Bool
$c> :: DeltaMode -> DeltaMode -> Bool
<= :: DeltaMode -> DeltaMode -> Bool
$c<= :: DeltaMode -> DeltaMode -> Bool
< :: DeltaMode -> DeltaMode -> Bool
$c< :: DeltaMode -> DeltaMode -> Bool
compare :: DeltaMode -> DeltaMode -> Ordering
$ccompare :: DeltaMode -> DeltaMode -> Ordering
$cp1Ord :: Eq DeltaMode
Ord, DeltaMode
DeltaMode -> DeltaMode -> Bounded DeltaMode
forall a. a -> a -> Bounded a
maxBound :: DeltaMode
$cmaxBound :: DeltaMode
minBound :: DeltaMode
$cminBound :: DeltaMode
Bounded, Int -> DeltaMode
DeltaMode -> Int
DeltaMode -> [DeltaMode]
DeltaMode -> DeltaMode
DeltaMode -> DeltaMode -> [DeltaMode]
DeltaMode -> DeltaMode -> DeltaMode -> [DeltaMode]
(DeltaMode -> DeltaMode)
-> (DeltaMode -> DeltaMode)
-> (Int -> DeltaMode)
-> (DeltaMode -> Int)
-> (DeltaMode -> [DeltaMode])
-> (DeltaMode -> DeltaMode -> [DeltaMode])
-> (DeltaMode -> DeltaMode -> [DeltaMode])
-> (DeltaMode -> DeltaMode -> DeltaMode -> [DeltaMode])
-> Enum DeltaMode
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: DeltaMode -> DeltaMode -> DeltaMode -> [DeltaMode]
$cenumFromThenTo :: DeltaMode -> DeltaMode -> DeltaMode -> [DeltaMode]
enumFromTo :: DeltaMode -> DeltaMode -> [DeltaMode]
$cenumFromTo :: DeltaMode -> DeltaMode -> [DeltaMode]
enumFromThen :: DeltaMode -> DeltaMode -> [DeltaMode]
$cenumFromThen :: DeltaMode -> DeltaMode -> [DeltaMode]
enumFrom :: DeltaMode -> [DeltaMode]
$cenumFrom :: DeltaMode -> [DeltaMode]
fromEnum :: DeltaMode -> Int
$cfromEnum :: DeltaMode -> Int
toEnum :: Int -> DeltaMode
$ctoEnum :: Int -> DeltaMode
pred :: DeltaMode -> DeltaMode
$cpred :: DeltaMode -> DeltaMode
succ :: DeltaMode -> DeltaMode
$csucc :: DeltaMode -> DeltaMode
Enum)

data WheelEventResult = WheelEventResult
  { WheelEventResult -> Double
_wheelEventResult_deltaX :: Double
  , WheelEventResult -> Double
_wheelEventResult_deltaY :: Double
  , WheelEventResult -> Double
_wheelEventResult_deltaZ :: Double
  , WheelEventResult -> DeltaMode
_wheelEventResult_deltaMode :: DeltaMode
  } deriving (Int -> WheelEventResult -> ShowS
[WheelEventResult] -> ShowS
WheelEventResult -> String
(Int -> WheelEventResult -> ShowS)
-> (WheelEventResult -> String)
-> ([WheelEventResult] -> ShowS)
-> Show WheelEventResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WheelEventResult] -> ShowS
$cshowList :: [WheelEventResult] -> ShowS
show :: WheelEventResult -> String
$cshow :: WheelEventResult -> String
showsPrec :: Int -> WheelEventResult -> ShowS
$cshowsPrec :: Int -> WheelEventResult -> ShowS
Show, ReadPrec [WheelEventResult]
ReadPrec WheelEventResult
Int -> ReadS WheelEventResult
ReadS [WheelEventResult]
(Int -> ReadS WheelEventResult)
-> ReadS [WheelEventResult]
-> ReadPrec WheelEventResult
-> ReadPrec [WheelEventResult]
-> Read WheelEventResult
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WheelEventResult]
$creadListPrec :: ReadPrec [WheelEventResult]
readPrec :: ReadPrec WheelEventResult
$creadPrec :: ReadPrec WheelEventResult
readList :: ReadS [WheelEventResult]
$creadList :: ReadS [WheelEventResult]
readsPrec :: Int -> ReadS WheelEventResult
$creadsPrec :: Int -> ReadS WheelEventResult
Read, WheelEventResult -> WheelEventResult -> Bool
(WheelEventResult -> WheelEventResult -> Bool)
-> (WheelEventResult -> WheelEventResult -> Bool)
-> Eq WheelEventResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WheelEventResult -> WheelEventResult -> Bool
$c/= :: WheelEventResult -> WheelEventResult -> Bool
== :: WheelEventResult -> WheelEventResult -> Bool
$c== :: WheelEventResult -> WheelEventResult -> Bool
Eq, Eq WheelEventResult
Eq WheelEventResult =>
(WheelEventResult -> WheelEventResult -> Ordering)
-> (WheelEventResult -> WheelEventResult -> Bool)
-> (WheelEventResult -> WheelEventResult -> Bool)
-> (WheelEventResult -> WheelEventResult -> Bool)
-> (WheelEventResult -> WheelEventResult -> Bool)
-> (WheelEventResult -> WheelEventResult -> WheelEventResult)
-> (WheelEventResult -> WheelEventResult -> WheelEventResult)
-> Ord WheelEventResult
WheelEventResult -> WheelEventResult -> Bool
WheelEventResult -> WheelEventResult -> Ordering
WheelEventResult -> WheelEventResult -> WheelEventResult
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: WheelEventResult -> WheelEventResult -> WheelEventResult
$cmin :: WheelEventResult -> WheelEventResult -> WheelEventResult
max :: WheelEventResult -> WheelEventResult -> WheelEventResult
$cmax :: WheelEventResult -> WheelEventResult -> WheelEventResult
>= :: WheelEventResult -> WheelEventResult -> Bool
$c>= :: WheelEventResult -> WheelEventResult -> Bool
> :: WheelEventResult -> WheelEventResult -> Bool
$c> :: WheelEventResult -> WheelEventResult -> Bool
<= :: WheelEventResult -> WheelEventResult -> Bool
$c<= :: WheelEventResult -> WheelEventResult -> Bool
< :: WheelEventResult -> WheelEventResult -> Bool
$c< :: WheelEventResult -> WheelEventResult -> Bool
compare :: WheelEventResult -> WheelEventResult -> Ordering
$ccompare :: WheelEventResult -> WheelEventResult -> Ordering
$cp1Ord :: Eq WheelEventResult
Ord)

data TouchEventResult = TouchEventResult
  { TouchEventResult -> Bool
_touchEventResult_altKey :: Bool
  , TouchEventResult -> [TouchResult]
_touchEventResult_changedTouches :: [TouchResult]
  , TouchEventResult -> Bool
_touchEventResult_ctrlKey :: Bool
  , TouchEventResult -> Bool
_touchEventResult_metaKey :: Bool
  , TouchEventResult -> Bool
_touchEventResult_shiftKey :: Bool
  , TouchEventResult -> [TouchResult]
_touchEventResult_targetTouches :: [TouchResult]
  , TouchEventResult -> [TouchResult]
_touchEventResult_touches :: [TouchResult]
  }
  deriving (Int -> TouchEventResult -> ShowS
[TouchEventResult] -> ShowS
TouchEventResult -> String
(Int -> TouchEventResult -> ShowS)
-> (TouchEventResult -> String)
-> ([TouchEventResult] -> ShowS)
-> Show TouchEventResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TouchEventResult] -> ShowS
$cshowList :: [TouchEventResult] -> ShowS
show :: TouchEventResult -> String
$cshow :: TouchEventResult -> String
showsPrec :: Int -> TouchEventResult -> ShowS
$cshowsPrec :: Int -> TouchEventResult -> ShowS
Show, ReadPrec [TouchEventResult]
ReadPrec TouchEventResult
Int -> ReadS TouchEventResult
ReadS [TouchEventResult]
(Int -> ReadS TouchEventResult)
-> ReadS [TouchEventResult]
-> ReadPrec TouchEventResult
-> ReadPrec [TouchEventResult]
-> Read TouchEventResult
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TouchEventResult]
$creadListPrec :: ReadPrec [TouchEventResult]
readPrec :: ReadPrec TouchEventResult
$creadPrec :: ReadPrec TouchEventResult
readList :: ReadS [TouchEventResult]
$creadList :: ReadS [TouchEventResult]
readsPrec :: Int -> ReadS TouchEventResult
$creadsPrec :: Int -> ReadS TouchEventResult
Read, TouchEventResult -> TouchEventResult -> Bool
(TouchEventResult -> TouchEventResult -> Bool)
-> (TouchEventResult -> TouchEventResult -> Bool)
-> Eq TouchEventResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TouchEventResult -> TouchEventResult -> Bool
$c/= :: TouchEventResult -> TouchEventResult -> Bool
== :: TouchEventResult -> TouchEventResult -> Bool
$c== :: TouchEventResult -> TouchEventResult -> Bool
Eq, Eq TouchEventResult
Eq TouchEventResult =>
(TouchEventResult -> TouchEventResult -> Ordering)
-> (TouchEventResult -> TouchEventResult -> Bool)
-> (TouchEventResult -> TouchEventResult -> Bool)
-> (TouchEventResult -> TouchEventResult -> Bool)
-> (TouchEventResult -> TouchEventResult -> Bool)
-> (TouchEventResult -> TouchEventResult -> TouchEventResult)
-> (TouchEventResult -> TouchEventResult -> TouchEventResult)
-> Ord TouchEventResult
TouchEventResult -> TouchEventResult -> Bool
TouchEventResult -> TouchEventResult -> Ordering
TouchEventResult -> TouchEventResult -> TouchEventResult
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TouchEventResult -> TouchEventResult -> TouchEventResult
$cmin :: TouchEventResult -> TouchEventResult -> TouchEventResult
max :: TouchEventResult -> TouchEventResult -> TouchEventResult
$cmax :: TouchEventResult -> TouchEventResult -> TouchEventResult
>= :: TouchEventResult -> TouchEventResult -> Bool
$c>= :: TouchEventResult -> TouchEventResult -> Bool
> :: TouchEventResult -> TouchEventResult -> Bool
$c> :: TouchEventResult -> TouchEventResult -> Bool
<= :: TouchEventResult -> TouchEventResult -> Bool
$c<= :: TouchEventResult -> TouchEventResult -> Bool
< :: TouchEventResult -> TouchEventResult -> Bool
$c< :: TouchEventResult -> TouchEventResult -> Bool
compare :: TouchEventResult -> TouchEventResult -> Ordering
$ccompare :: TouchEventResult -> TouchEventResult -> Ordering
$cp1Ord :: Eq TouchEventResult
Ord)

data TouchResult = TouchResult
  { TouchResult -> Word
_touchResult_identifier :: Word
  , TouchResult -> Int
_touchResult_screenX :: Int
  , TouchResult -> Int
_touchResult_screenY :: Int
  , TouchResult -> Int
_touchResult_clientX :: Int
  , TouchResult -> Int
_touchResult_clientY :: Int
  , TouchResult -> Int
_touchResult_pageX :: Int
  , TouchResult -> Int
_touchResult_pageY :: Int
  }
  deriving (Int -> TouchResult -> ShowS
[TouchResult] -> ShowS
TouchResult -> String
(Int -> TouchResult -> ShowS)
-> (TouchResult -> String)
-> ([TouchResult] -> ShowS)
-> Show TouchResult
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TouchResult] -> ShowS
$cshowList :: [TouchResult] -> ShowS
show :: TouchResult -> String
$cshow :: TouchResult -> String
showsPrec :: Int -> TouchResult -> ShowS
$cshowsPrec :: Int -> TouchResult -> ShowS
Show, ReadPrec [TouchResult]
ReadPrec TouchResult
Int -> ReadS TouchResult
ReadS [TouchResult]
(Int -> ReadS TouchResult)
-> ReadS [TouchResult]
-> ReadPrec TouchResult
-> ReadPrec [TouchResult]
-> Read TouchResult
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TouchResult]
$creadListPrec :: ReadPrec [TouchResult]
readPrec :: ReadPrec TouchResult
$creadPrec :: ReadPrec TouchResult
readList :: ReadS [TouchResult]
$creadList :: ReadS [TouchResult]
readsPrec :: Int -> ReadS TouchResult
$creadsPrec :: Int -> ReadS TouchResult
Read, TouchResult -> TouchResult -> Bool
(TouchResult -> TouchResult -> Bool)
-> (TouchResult -> TouchResult -> Bool) -> Eq TouchResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TouchResult -> TouchResult -> Bool
$c/= :: TouchResult -> TouchResult -> Bool
== :: TouchResult -> TouchResult -> Bool
$c== :: TouchResult -> TouchResult -> Bool
Eq, Eq TouchResult
Eq TouchResult =>
(TouchResult -> TouchResult -> Ordering)
-> (TouchResult -> TouchResult -> Bool)
-> (TouchResult -> TouchResult -> Bool)
-> (TouchResult -> TouchResult -> Bool)
-> (TouchResult -> TouchResult -> Bool)
-> (TouchResult -> TouchResult -> TouchResult)
-> (TouchResult -> TouchResult -> TouchResult)
-> Ord TouchResult
TouchResult -> TouchResult -> Bool
TouchResult -> TouchResult -> Ordering
TouchResult -> TouchResult -> TouchResult
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TouchResult -> TouchResult -> TouchResult
$cmin :: TouchResult -> TouchResult -> TouchResult
max :: TouchResult -> TouchResult -> TouchResult
$cmax :: TouchResult -> TouchResult -> TouchResult
>= :: TouchResult -> TouchResult -> Bool
$c>= :: TouchResult -> TouchResult -> Bool
> :: TouchResult -> TouchResult -> Bool
$c> :: TouchResult -> TouchResult -> Bool
<= :: TouchResult -> TouchResult -> Bool
$c<= :: TouchResult -> TouchResult -> Bool
< :: TouchResult -> TouchResult -> Bool
$c< :: TouchResult -> TouchResult -> Bool
compare :: TouchResult -> TouchResult -> Ordering
$ccompare :: TouchResult -> TouchResult -> Ordering
$cp1Ord :: Eq TouchResult
Ord)

#ifdef USE_TEMPLATE_HASKELL
deriveGEq ''EventName
deriveGCompare ''EventName
#else
instance GEq EventName
    where geq Abort Abort             = return Refl
          geq Blur Blur               = return Refl
          geq Change Change           = return Refl
          geq Click Click             = return Refl
          geq Contextmenu Contextmenu = return Refl
          geq Dblclick Dblclick       = return Refl
          geq Drag Drag               = return Refl
          geq Dragend Dragend         = return Refl
          geq Dragenter Dragenter     = return Refl
          geq Dragleave Dragleave     = return Refl
          geq Dragover Dragover       = return Refl
          geq Dragstart Dragstart     = return Refl
          geq Drop Drop               = return Refl
          geq Error Error             = return Refl
          geq Focus Focus             = return Refl
          geq Input Input             = return Refl
          geq Invalid Invalid         = return Refl
          geq Keydown Keydown         = return Refl
          geq Keypress Keypress       = return Refl
          geq Keyup Keyup             = return Refl
          geq Load Load               = return Refl
          geq Mousedown Mousedown     = return Refl
          geq Mouseenter Mouseenter   = return Refl
          geq Mouseleave Mouseleave   = return Refl
          geq Mousemove Mousemove     = return Refl
          geq Mouseout Mouseout       = return Refl
          geq Mouseover Mouseover     = return Refl
          geq Mouseup Mouseup         = return Refl
          geq Mousewheel Mousewheel   = return Refl
          geq Scroll Scroll           = return Refl
          geq Select Select           = return Refl
          geq Submit Submit           = return Refl
          geq Wheel Wheel             = return Refl
          geq Beforecut Beforecut     = return Refl
          geq Cut Cut                 = return Refl
          geq Beforecopy Beforecopy   = return Refl
          geq Copy Copy               = return Refl
          geq Beforepaste Beforepaste = return Refl
          geq Paste Paste             = return Refl
          geq Reset Reset             = return Refl
          geq Search Search           = return Refl
          geq Selectstart Selectstart = return Refl
          geq Touchstart Touchstart   = return Refl
          geq Touchmove Touchmove     = return Refl
          geq Touchend Touchend       = return Refl
          geq Touchcancel Touchcancel = return Refl
          geq _ _ = Nothing

instance GCompare EventName
    where gcompare Abort Abort             = GEQ
          gcompare Abort _                 = GLT
          gcompare _ Abort                 = GGT
          gcompare Blur Blur               = GEQ
          gcompare Blur _                  = GLT
          gcompare _ Blur                  = GGT
          gcompare Change Change           = GEQ
          gcompare Change _                = GLT
          gcompare _ Change                = GGT
          gcompare Click Click             = GEQ
          gcompare Click _                 = GLT
          gcompare _ Click                 = GGT
          gcompare Contextmenu Contextmenu = GEQ
          gcompare Contextmenu _           = GLT
          gcompare _ Contextmenu           = GGT
          gcompare Dblclick Dblclick       = GEQ
          gcompare Dblclick _              = GLT
          gcompare _ Dblclick              = GGT
          gcompare Drag Drag               = GEQ
          gcompare Drag _                  = GLT
          gcompare _ Drag                  = GGT
          gcompare Dragend Dragend         = GEQ
          gcompare Dragend _               = GLT
          gcompare _ Dragend               = GGT
          gcompare Dragenter Dragenter     = GEQ
          gcompare Dragenter _             = GLT
          gcompare _ Dragenter             = GGT
          gcompare Dragleave Dragleave     = GEQ
          gcompare Dragleave _             = GLT
          gcompare _ Dragleave             = GGT
          gcompare Dragover Dragover       = GEQ
          gcompare Dragover _              = GLT
          gcompare _ Dragover              = GGT
          gcompare Dragstart Dragstart     = GEQ
          gcompare Dragstart _             = GLT
          gcompare _ Dragstart             = GGT
          gcompare Drop Drop               = GEQ
          gcompare Drop _                  = GLT
          gcompare _ Drop                  = GGT
          gcompare Error Error             = GEQ
          gcompare Error _                 = GLT
          gcompare _ Error                 = GGT
          gcompare Focus Focus             = GEQ
          gcompare Focus _                 = GLT
          gcompare _ Focus                 = GGT
          gcompare Input Input             = GEQ
          gcompare Input _                 = GLT
          gcompare _ Input                 = GGT
          gcompare Invalid Invalid         = GEQ
          gcompare Invalid _               = GLT
          gcompare _ Invalid               = GGT
          gcompare Keydown Keydown         = GEQ
          gcompare Keydown _               = GLT
          gcompare _ Keydown               = GGT
          gcompare Keypress Keypress       = GEQ
          gcompare Keypress _              = GLT
          gcompare _ Keypress              = GGT
          gcompare Keyup Keyup             = GEQ
          gcompare Keyup _                 = GLT
          gcompare _ Keyup                 = GGT
          gcompare Load Load               = GEQ
          gcompare Load _                  = GLT
          gcompare _ Load                  = GGT
          gcompare Mousedown Mousedown     = GEQ
          gcompare Mousedown _             = GLT
          gcompare _ Mousedown             = GGT
          gcompare Mouseenter Mouseenter   = GEQ
          gcompare Mouseenter _            = GLT
          gcompare _ Mouseenter            = GGT
          gcompare Mouseleave Mouseleave   = GEQ
          gcompare Mouseleave _            = GLT
          gcompare _ Mouseleave            = GGT
          gcompare Mousemove Mousemove     = GEQ
          gcompare Mousemove _             = GLT
          gcompare _ Mousemove             = GGT
          gcompare Mouseout Mouseout       = GEQ
          gcompare Mouseout _              = GLT
          gcompare _ Mouseout              = GGT
          gcompare Mouseover Mouseover     = GEQ
          gcompare Mouseover _             = GLT
          gcompare _ Mouseover             = GGT
          gcompare Mouseup Mouseup         = GEQ
          gcompare Mouseup _               = GLT
          gcompare _ Mouseup               = GGT
          gcompare Mousewheel Mousewheel   = GEQ
          gcompare Mousewheel _            = GLT
          gcompare _ Mousewheel            = GGT
          gcompare Scroll Scroll           = GEQ
          gcompare Scroll _                = GLT
          gcompare _ Scroll                = GGT
          gcompare Select Select           = GEQ
          gcompare Select _                = GLT
          gcompare _ Select                = GGT
          gcompare Submit Submit           = GEQ
          gcompare Submit _                = GLT
          gcompare _ Submit                = GGT
          gcompare Wheel Wheel             = GEQ
          gcompare Wheel _                 = GLT
          gcompare _ Wheel                 = GGT
          gcompare Beforecut Beforecut     = GEQ
          gcompare Beforecut _             = GLT
          gcompare _ Beforecut             = GGT
          gcompare Cut Cut                 = GEQ
          gcompare Cut _                   = GLT
          gcompare _ Cut                   = GGT
          gcompare Beforecopy Beforecopy   = GEQ
          gcompare Beforecopy _            = GLT
          gcompare _ Beforecopy            = GGT
          gcompare Copy Copy               = GEQ
          gcompare Copy _                  = GLT
          gcompare _ Copy                  = GGT
          gcompare Beforepaste Beforepaste = GEQ
          gcompare Beforepaste _           = GLT
          gcompare _ Beforepaste           = GGT
          gcompare Paste Paste             = GEQ
          gcompare Paste _                 = GLT
          gcompare _ Paste                 = GGT
          gcompare Reset Reset             = GEQ
          gcompare Reset _                 = GLT
          gcompare _ Reset                 = GGT
          gcompare Search Search           = GEQ
          gcompare Search _                = GLT
          gcompare _ Search                = GGT
          gcompare Selectstart Selectstart = GEQ
          gcompare Selectstart _           = GLT
          gcompare _ Selectstart           = GGT
          gcompare Touchstart Touchstart   = GEQ
          gcompare Touchstart _            = GLT
          gcompare _ Touchstart            = GGT
          gcompare Touchmove Touchmove     = GEQ
          gcompare Touchmove _             = GLT
          gcompare _ Touchmove             = GGT
          gcompare Touchend Touchend       = GEQ
          gcompare Touchend _              = GLT
          gcompare _ Touchend              = GGT
          gcompare Touchcancel Touchcancel = GEQ
#endif