{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MediaKeyMessageEvent
       (newMediaKeyMessageEvent, getMessageType, getMessage,
        MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
       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/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
newMediaKeyMessageEvent ::
                        (MonadDOM m, ToJSString type') =>
                          type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
newMediaKeyMessageEvent :: type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
newMediaKeyMessageEvent type'
type' MediaKeyMessageEventInit
eventInitDict
  = DOM MediaKeyMessageEvent -> m MediaKeyMessageEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> MediaKeyMessageEvent
MediaKeyMessageEvent (JSVal -> MediaKeyMessageEvent)
-> JSM JSVal -> DOM MediaKeyMessageEvent
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]
"MediaKeyMessageEvent")
           [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', MediaKeyMessageEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal MediaKeyMessageEventInit
eventInitDict])

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

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