{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MessageEvent
       (newMessageEvent, initMessageEvent, getOrigin, getLastEventId,
        getSource, getSourceUnsafe, getSourceUnchecked, getData, getPorts,
        MessageEvent(..), gTypeMessageEvent)
       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.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation> 
newMessageEvent ::
                (MonadDOM m, ToJSString type') =>
                  type' -> Maybe MessageEventInit -> m MessageEvent
newMessageEvent :: forall (m :: * -> *) type'.
(MonadDOM m, ToJSString type') =>
type' -> Maybe MessageEventInit -> m MessageEvent
newMessageEvent type'
type' Maybe MessageEventInit
eventInitDict
  = DOM MessageEvent -> m MessageEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> MessageEvent
MessageEvent (JSVal -> MessageEvent) -> JSM JSVal -> DOM MessageEvent
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 (String -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg String
"MessageEvent") [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe MessageEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe MessageEventInit
eventInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
initMessageEvent ::
                 (MonadDOM m, ToJSString type', ToJSVal data', ToJSString originArg,
                  ToJSString lastEventId, IsMessageEventSource source) =>
                   MessageEvent ->
                     type' ->
                       Bool ->
                         Bool ->
                           Maybe data' ->
                             Maybe originArg ->
                               Maybe lastEventId -> Maybe source -> [MessagePort] -> m ()
initMessageEvent :: forall (m :: * -> *) type' data' originArg lastEventId source.
(MonadDOM m, ToJSString type', ToJSVal data', ToJSString originArg,
 ToJSString lastEventId, IsMessageEventSource source) =>
MessageEvent
-> type'
-> Bool
-> Bool
-> Maybe data'
-> Maybe originArg
-> Maybe lastEventId
-> Maybe source
-> [MessagePort]
-> m ()
initMessageEvent MessageEvent
self type'
type' Bool
bubbles Bool
cancelable Maybe data'
data' Maybe originArg
originArg
  Maybe lastEventId
lastEventId Maybe source
source [MessagePort]
messagePorts
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"initMessageEvent"
            [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, Maybe data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe data'
data',
             Maybe originArg -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe originArg
originArg, Maybe lastEventId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe lastEventId
lastEventId, Maybe source -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe source
source,
             JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([MessagePort] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [MessagePort]
messagePorts)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.origin Mozilla MessageEvent.origin documentation> 
getOrigin ::
          (MonadDOM m, FromJSString result) => MessageEvent -> m result
getOrigin :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
MessageEvent -> m result
getOrigin MessageEvent
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"origin") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall a b. JSM a -> (a -> JSM b) -> JSM b
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/MessageEvent.lastEventId Mozilla MessageEvent.lastEventId documentation> 
getLastEventId ::
               (MonadDOM m, FromJSString result) => MessageEvent -> m result
getLastEventId :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
MessageEvent -> m result
getLastEventId MessageEvent
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"lastEventId") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall a b. JSM a -> (a -> JSM b) -> JSM b
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/MessageEvent.source Mozilla MessageEvent.source documentation> 
getSource :: (MonadDOM m) => MessageEvent -> m (Maybe EventTarget)
getSource :: forall (m :: * -> *).
MonadDOM m =>
MessageEvent -> m (Maybe EventTarget)
getSource MessageEvent
self = DOM (Maybe EventTarget) -> m (Maybe EventTarget)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"source") JSM JSVal
-> (JSVal -> DOM (Maybe EventTarget)) -> DOM (Maybe EventTarget)
forall a b. JSM a -> (a -> JSM b) -> JSM b
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/MessageEvent.source Mozilla MessageEvent.source documentation> 
getSourceUnsafe ::
                (MonadDOM m, HasCallStack) => MessageEvent -> m EventTarget
getSourceUnsafe :: forall (m :: * -> *).
(MonadDOM m, HasCallStack) =>
MessageEvent -> m EventTarget
getSourceUnsafe MessageEvent
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"source") JSM JSVal
-> (JSVal -> DOM (Maybe EventTarget)) -> DOM (Maybe EventTarget)
forall a b. JSM a -> (a -> JSM b) -> JSM b
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 a b. JSM a -> (a -> JSM b) -> JSM b
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 (String -> DOM EventTarget
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") EventTarget -> DOM EventTarget
forall a. a -> JSM a
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
getSourceUnchecked :: (MonadDOM m) => MessageEvent -> m EventTarget
getSourceUnchecked :: forall (m :: * -> *). MonadDOM m => MessageEvent -> m EventTarget
getSourceUnchecked MessageEvent
self
  = DOM EventTarget -> m EventTarget
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"source") JSM JSVal -> (JSVal -> DOM EventTarget) -> DOM EventTarget
forall a b. JSM a -> (a -> JSM b) -> JSM b
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/MessageEvent.data Mozilla MessageEvent.data documentation> 
getData :: (MonadDOM m) => MessageEvent -> m JSVal
getData :: forall (m :: * -> *). MonadDOM m => MessageEvent -> m JSVal
getData MessageEvent
self = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"data") JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.ports Mozilla MessageEvent.ports documentation> 
getPorts :: (MonadDOM m) => MessageEvent -> m [MessagePort]
getPorts :: forall (m :: * -> *). MonadDOM m => MessageEvent -> m [MessagePort]
getPorts MessageEvent
self
  = DOM [MessagePort] -> m [MessagePort]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MessageEvent
self MessageEvent
-> Getting (JSM JSVal) MessageEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter MessageEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"ports") JSM JSVal -> (JSVal -> DOM [MessagePort]) -> DOM [MessagePort]
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM [MessagePort]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)