{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.Event
       (newEvent, composedPath, composedPath_, stopPropagation,
        stopImmediatePropagation, preventDefault, initEvent, pattern NONE,
        pattern CAPTURING_PHASE, pattern AT_TARGET, pattern BUBBLING_PHASE,
        getType, getTarget, getTargetUnsafe, getTargetUnchecked,
        getCurrentTarget, getCurrentTargetUnsafe,
        getCurrentTargetUnchecked, getEventPhase, setCancelBubble,
        getCancelBubble, getBubbles, getCancelable, getDefaultPrevented,
        getComposed, getIsTrusted, getTimeStamp, getSrcElement,
        setReturnValue, getReturnValue, Event(..), gTypeEvent, IsEvent,
        toEvent)
       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/Event Mozilla Event documentation> 
newEvent ::
         (MonadDOM m, ToJSString type', IsEventInit eventInitDict) =>
           type' -> Maybe eventInitDict -> m Event
newEvent :: type' -> Maybe eventInitDict -> m Event
newEvent type'
type' Maybe eventInitDict
eventInitDict
  = DOM Event -> m Event
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> Event
Event (JSVal -> Event) -> JSM JSVal -> DOM Event
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]
"Event") [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/Event.composedPath Mozilla Event.composedPath documentation> 
composedPath ::
             (MonadDOM m, IsEvent self) => self -> m [EventTarget]
composedPath :: self -> m [EventTarget]
composedPath self
self
  = DOM [EventTarget] -> m [EventTarget]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"composedPath" ()) JSM JSVal -> (JSVal -> DOM [EventTarget]) -> DOM [EventTarget]
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM [EventTarget]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
composedPath_ :: (MonadDOM m, IsEvent self) => self -> m ()
composedPath_ :: self -> m ()
composedPath_ self
self
  = 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"composedPath" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
stopPropagation :: (MonadDOM m, IsEvent self) => self -> m ()
stopPropagation :: self -> m ()
stopPropagation self
self
  = 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"stopPropagation" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation Mozilla Event.stopImmediatePropagation documentation> 
stopImmediatePropagation ::
                         (MonadDOM m, IsEvent self) => self -> m ()
stopImmediatePropagation :: self -> m ()
stopImmediatePropagation self
self
  = 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"stopImmediatePropagation" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.preventDefault Mozilla Event.preventDefault documentation> 
preventDefault :: (MonadDOM m, IsEvent self) => self -> m ()
preventDefault :: self -> m ()
preventDefault self
self
  = 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"preventDefault" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.initEvent Mozilla Event.initEvent documentation> 
initEvent ::
          (MonadDOM m, IsEvent self, ToJSString type') =>
            self -> type' -> Bool -> Bool -> m ()
initEvent :: self -> type' -> Bool -> Bool -> m ()
initEvent self
self type'
type' Bool
bubbles Bool
cancelable
  = 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (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]
"initEvent"
            [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
bubbles, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
cancelable]))
pattern $bNONE :: a
$mNONE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
NONE = 0
pattern $bCAPTURING_PHASE :: a
$mCAPTURING_PHASE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CAPTURING_PHASE = 1
pattern $bAT_TARGET :: a
$mAT_TARGET :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
AT_TARGET = 2
pattern $bBUBBLING_PHASE :: a
$mBUBBLING_PHASE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BUBBLING_PHASE = 3

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.type Mozilla Event.type documentation> 
getType ::
        (MonadDOM m, IsEvent self, FromJSString result) => self -> m result
getType :: self -> m result
getType self
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"type") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
getTarget ::
          (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
getTarget :: self -> m (Maybe EventTarget)
getTarget self
self
  = DOM (Maybe EventTarget) -> m (Maybe EventTarget)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"target") 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/Event.target Mozilla Event.target documentation> 
getTargetUnsafe ::
                (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
getTargetUnsafe :: self -> m EventTarget
getTargetUnsafe self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"target") 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/Event.target Mozilla Event.target documentation> 
getTargetUnchecked ::
                   (MonadDOM m, IsEvent self) => self -> m EventTarget
getTargetUnchecked :: self -> m EventTarget
getTargetUnchecked self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"target") 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/Event.currentTarget Mozilla Event.currentTarget documentation> 
getCurrentTarget ::
                 (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
getCurrentTarget :: self -> m (Maybe EventTarget)
getCurrentTarget self
self
  = DOM (Maybe EventTarget) -> m (Maybe EventTarget)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"currentTarget") 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/Event.currentTarget Mozilla Event.currentTarget documentation> 
getCurrentTargetUnsafe ::
                       (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
getCurrentTargetUnsafe :: self -> m EventTarget
getCurrentTargetUnsafe self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"currentTarget") 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/Event.currentTarget Mozilla Event.currentTarget documentation> 
getCurrentTargetUnchecked ::
                          (MonadDOM m, IsEvent self) => self -> m EventTarget
getCurrentTargetUnchecked :: self -> m EventTarget
getCurrentTargetUnchecked self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"currentTarget") 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/Event.eventPhase Mozilla Event.eventPhase documentation> 
getEventPhase :: (MonadDOM m, IsEvent self) => self -> m Word
getEventPhase :: self -> m Word
getEventPhase 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"eventPhase") 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/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
setCancelBubble ::
                (MonadDOM m, IsEvent self) => self -> Bool -> m ()
setCancelBubble :: self -> Bool -> m ()
setCancelBubble self
self Bool
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (DOM ()) Event (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"cancelBubble" (Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
getCancelBubble :: (MonadDOM m, IsEvent self) => self -> m Bool
getCancelBubble :: self -> m Bool
getCancelBubble self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"cancelBubble") 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/Event.bubbles Mozilla Event.bubbles documentation> 
getBubbles :: (MonadDOM m, IsEvent self) => self -> m Bool
getBubbles :: self -> m Bool
getBubbles self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"bubbles") 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/Event.cancelable Mozilla Event.cancelable documentation> 
getCancelable :: (MonadDOM m, IsEvent self) => self -> m Bool
getCancelable :: self -> m Bool
getCancelable self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"cancelable") 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/Event.defaultPrevented Mozilla Event.defaultPrevented documentation> 
getDefaultPrevented :: (MonadDOM m, IsEvent self) => self -> m Bool
getDefaultPrevented :: self -> m Bool
getDefaultPrevented self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"defaultPrevented") 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/Event.composed Mozilla Event.composed documentation> 
getComposed :: (MonadDOM m, IsEvent self) => self -> m Bool
getComposed :: self -> m Bool
getComposed self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"composed") 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/Event.isTrusted Mozilla Event.isTrusted documentation> 
getIsTrusted :: (MonadDOM m, IsEvent self) => self -> m Bool
getIsTrusted :: self -> m Bool
getIsTrusted self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"isTrusted") 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/Event.timeStamp Mozilla Event.timeStamp documentation> 
getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Word
getTimeStamp :: self -> m Word
getTimeStamp 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 -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"timeStamp") 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/Event.srcElement Mozilla Event.srcElement documentation> 
getSrcElement ::
              (MonadDOM m, IsEvent self) => self -> m EventTarget
getSrcElement :: self -> m EventTarget
getSrcElement self
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"srcElement") 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/Event.returnValue Mozilla Event.returnValue documentation> 
setReturnValue ::
               (MonadDOM m, IsEvent self) => self -> Bool -> m ()
setReturnValue :: self -> Bool -> m ()
setReturnValue self
self Bool
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (DOM ()) Event (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"returnValue" (Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
getReturnValue :: (MonadDOM m, IsEvent self) => self -> m Bool
getReturnValue :: self -> m Bool
getReturnValue self
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (((self -> Event
forall o. IsEvent o => o -> Event
toEvent self
self) Event -> Getting (JSM JSVal) Event (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter Event (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"returnValue") 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)