{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MouseEvent
       (newMouseEvent, initMouseEvent, pattern WEBKIT_FORCE_AT_MOUSE_DOWN,
        pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN, getScreenX, getScreenY,
        getClientX, getClientY, getCtrlKey, getShiftKey, getAltKey,
        getMetaKey, getButton, getRelatedTarget, getRelatedTargetUnsafe,
        getRelatedTargetUnchecked, getMovementX, getMovementY,
        getWebkitForce, getOffsetX, getOffsetY, getX, getY, getFromElement,
        getFromElementUnsafe, getFromElementUnchecked, getToElement,
        getToElementUnsafe, getToElementUnchecked, getDataTransfer,
        getDataTransferUnsafe, getDataTransferUnchecked, MouseEvent(..),
        gTypeMouseEvent, IsMouseEvent, toMouseEvent)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation> 
newMouseEvent ::
              (MonadDOM m, ToJSString type', IsMouseEventInit eventInitDict) =>
                type' -> Maybe eventInitDict -> m MouseEvent
newMouseEvent :: type' -> Maybe eventInitDict -> m MouseEvent
newMouseEvent type'
type' Maybe eventInitDict
eventInitDict
  = DOM MouseEvent -> m MouseEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> MouseEvent
MouseEvent (JSVal -> MouseEvent) -> JSM JSVal -> DOM MouseEvent
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"MouseEvent") [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe eventInitDict -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe eventInitDict
eventInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
initMouseEvent ::
               (MonadDOM m, IsMouseEvent self, ToJSString type',
                ToJSVal relatedTarget) =>
                 self ->
                   Maybe type' ->
                     Bool ->
                       Bool ->
                         Maybe Window ->
                           Maybe Int ->
                             Maybe Int ->
                               Maybe Int ->
                                 Maybe Int ->
                                   Maybe Int ->
                                     Bool ->
                                       Bool ->
                                         Bool -> Bool -> Maybe Word -> Maybe relatedTarget -> m ()
initMouseEvent :: self
-> Maybe type'
-> Bool
-> Bool
-> Maybe Window
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> Bool
-> Bool
-> Bool
-> Bool
-> Maybe Word
-> Maybe relatedTarget
-> m ()
initMouseEvent self
self Maybe type'
type' Bool
canBubble Bool
cancelable Maybe Window
view Maybe Int
detail Maybe Int
screenX
  Maybe Int
screenY Maybe Int
clientX Maybe Int
clientY Bool
ctrlKey Bool
altKey Bool
shiftKey Bool
metaKey Maybe Word
button
  Maybe relatedTarget
relatedTarget
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"initMouseEvent"
            [Maybe type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe type'
type', Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
canBubble, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
cancelable,
             Maybe Window -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Window
view, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
detail, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
screenX, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
screenY,
             Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
clientX, Maybe Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Int
clientY, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
ctrlKey, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
altKey,
             Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
shiftKey, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
metaKey, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
button,
             Maybe relatedTarget -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe relatedTarget
relatedTarget]))
pattern $bWEBKIT_FORCE_AT_MOUSE_DOWN :: a
$mWEBKIT_FORCE_AT_MOUSE_DOWN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
WEBKIT_FORCE_AT_MOUSE_DOWN = 1
pattern $bWEBKIT_FORCE_AT_FORCE_MOUSE_DOWN :: a
$mWEBKIT_FORCE_AT_FORCE_MOUSE_DOWN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN = 2

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenX Mozilla MouseEvent.screenX documentation> 
getScreenX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getScreenX :: self -> m Int
getScreenX self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"screenX") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenY Mozilla MouseEvent.screenY documentation> 
getScreenY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getScreenY :: self -> m Int
getScreenY self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"screenY") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientX Mozilla MouseEvent.clientX documentation> 
getClientX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getClientX :: self -> m Int
getClientX self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"clientX") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientY Mozilla MouseEvent.clientY documentation> 
getClientY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getClientY :: self -> m Int
getClientY self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"clientY") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.ctrlKey Mozilla MouseEvent.ctrlKey documentation> 
getCtrlKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
getCtrlKey :: self -> m Bool
getCtrlKey self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"ctrlKey") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.shiftKey Mozilla MouseEvent.shiftKey documentation> 
getShiftKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
getShiftKey :: self -> m Bool
getShiftKey self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"shiftKey") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.altKey Mozilla MouseEvent.altKey documentation> 
getAltKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
getAltKey :: self -> m Bool
getAltKey self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"altKey") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.metaKey Mozilla MouseEvent.metaKey documentation> 
getMetaKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
getMetaKey :: self -> m Bool
getMetaKey self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"metaKey") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button Mozilla MouseEvent.button documentation> 
getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Word
getButton :: self -> m Word
getButton self
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Word
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"button") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
getRelatedTarget ::
                 (MonadDOM m, IsMouseEvent self) => self -> m (Maybe EventTarget)
getRelatedTarget :: self -> m (Maybe EventTarget)
getRelatedTarget self
self
  = DOM (Maybe EventTarget) -> m (Maybe EventTarget)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"relatedTarget") JSM JSVal
-> (JSVal -> DOM (Maybe EventTarget)) -> DOM (Maybe EventTarget)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe EventTarget)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
getRelatedTargetUnsafe ::
                       (MonadDOM m, IsMouseEvent self, HasCallStack) =>
                         self -> m EventTarget
getRelatedTargetUnsafe :: self -> m EventTarget
getRelatedTargetUnsafe self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"relatedTarget") JSM JSVal
-> (JSVal -> DOM (Maybe EventTarget)) -> DOM (Maybe EventTarget)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe EventTarget)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe EventTarget)
-> (Maybe EventTarget -> DOM EventTarget) -> DOM EventTarget
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM EventTarget
-> (EventTarget -> DOM EventTarget)
-> Maybe EventTarget
-> DOM EventTarget
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM EventTarget
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") EventTarget -> DOM EventTarget
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
getRelatedTargetUnchecked ::
                          (MonadDOM m, IsMouseEvent self) => self -> m EventTarget
getRelatedTargetUnchecked :: self -> m EventTarget
getRelatedTargetUnchecked self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"relatedTarget") JSM JSVal -> (JSVal -> DOM EventTarget) -> DOM EventTarget
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM EventTarget
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementX Mozilla MouseEvent.movementX documentation> 
getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getMovementX :: self -> m Int
getMovementX self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"movementX") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementY Mozilla MouseEvent.movementY documentation> 
getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getMovementY :: self -> m Int
getMovementY self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"movementY") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.webkitForce Mozilla MouseEvent.webkitForce documentation> 
getWebkitForce ::
               (MonadDOM m, IsMouseEvent self) => self -> m Double
getWebkitForce :: self -> m Double
getWebkitForce self
self
  = JSM Double -> m Double
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"webkitForce") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetX Mozilla MouseEvent.offsetX documentation> 
getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getOffsetX :: self -> m Int
getOffsetX self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"offsetX") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetY Mozilla MouseEvent.offsetY documentation> 
getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getOffsetY :: self -> m Int
getOffsetY self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"offsetY") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.x Mozilla MouseEvent.x documentation> 
getX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getX :: self -> m Int
getX self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"x") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.y Mozilla MouseEvent.y documentation> 
getY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
getY :: self -> m Int
getY self
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"y") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
getFromElement ::
               (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
getFromElement :: self -> m (Maybe Node)
getFromElement self
self
  = DOM (Maybe Node) -> m (Maybe Node)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"fromElement") JSM JSVal -> (JSVal -> DOM (Maybe Node)) -> DOM (Maybe Node)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Node)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
getFromElementUnsafe ::
                     (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
getFromElementUnsafe :: self -> m Node
getFromElementUnsafe self
self
  = DOM Node -> m Node
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"fromElement") JSM JSVal -> (JSVal -> DOM (Maybe Node)) -> DOM (Maybe Node)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Node)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe Node) -> (Maybe Node -> DOM Node) -> DOM Node
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM Node -> (Node -> DOM Node) -> Maybe Node -> DOM Node
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Node
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Node -> DOM Node
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
getFromElementUnchecked ::
                        (MonadDOM m, IsMouseEvent self) => self -> m Node
getFromElementUnchecked :: self -> m Node
getFromElementUnchecked self
self
  = DOM Node -> m Node
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"fromElement") JSM JSVal -> (JSVal -> DOM Node) -> DOM Node
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Node
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
getToElement ::
             (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
getToElement :: self -> m (Maybe Node)
getToElement self
self
  = DOM (Maybe Node) -> m (Maybe Node)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"toElement") JSM JSVal -> (JSVal -> DOM (Maybe Node)) -> DOM (Maybe Node)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Node)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
getToElementUnsafe ::
                   (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
getToElementUnsafe :: self -> m Node
getToElementUnsafe self
self
  = DOM Node -> m Node
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"toElement") JSM JSVal -> (JSVal -> DOM (Maybe Node)) -> DOM (Maybe Node)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Node)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe Node) -> (Maybe Node -> DOM Node) -> DOM Node
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM Node -> (Node -> DOM Node) -> Maybe Node -> DOM Node
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Node
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Node -> DOM Node
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
getToElementUnchecked ::
                      (MonadDOM m, IsMouseEvent self) => self -> m Node
getToElementUnchecked :: self -> m Node
getToElementUnchecked self
self
  = DOM Node -> m Node
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"toElement") JSM JSVal -> (JSVal -> DOM Node) -> DOM Node
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Node
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
getDataTransfer ::
                (MonadDOM m, IsMouseEvent self) => self -> m (Maybe DataTransfer)
getDataTransfer :: self -> m (Maybe DataTransfer)
getDataTransfer self
self
  = DOM (Maybe DataTransfer) -> m (Maybe DataTransfer)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"dataTransfer") JSM JSVal
-> (JSVal -> DOM (Maybe DataTransfer)) -> DOM (Maybe DataTransfer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe DataTransfer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
getDataTransferUnsafe ::
                      (MonadDOM m, IsMouseEvent self, HasCallStack) =>
                        self -> m DataTransfer
getDataTransferUnsafe :: self -> m DataTransfer
getDataTransferUnsafe self
self
  = DOM DataTransfer -> m DataTransfer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"dataTransfer") JSM JSVal
-> (JSVal -> DOM (Maybe DataTransfer)) -> DOM (Maybe DataTransfer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe DataTransfer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe DataTransfer)
-> (Maybe DataTransfer -> DOM DataTransfer) -> DOM DataTransfer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM DataTransfer
-> (DataTransfer -> DOM DataTransfer)
-> Maybe DataTransfer
-> DOM DataTransfer
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM DataTransfer
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") DataTransfer -> DOM DataTransfer
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
getDataTransferUnchecked ::
                         (MonadDOM m, IsMouseEvent self) => self -> m DataTransfer
getDataTransferUnchecked :: self -> m DataTransfer
getDataTransferUnchecked self
self
  = DOM DataTransfer -> m DataTransfer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> MouseEvent
forall o. IsMouseEvent o => o -> MouseEvent
toMouseEvent self
self) MouseEvent
-> Getting (JSM JSVal) MouseEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MouseEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"dataTransfer") JSM JSVal -> (JSVal -> DOM DataTransfer) -> DOM DataTransfer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM DataTransfer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)