{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MediaEncryptedEvent
       (newMediaEncryptedEvent, getInitDataType, getInitData,
        getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..),
        gTypeMediaEncryptedEvent)
       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/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation> 
newMediaEncryptedEvent ::
                       (MonadDOM m, ToJSString type') =>
                         type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
newMediaEncryptedEvent :: type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
newMediaEncryptedEvent type'
type' Maybe MediaEncryptedEventInit
eventInitDict
  = DOM MediaEncryptedEvent -> m MediaEncryptedEvent
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> MediaEncryptedEvent
MediaEncryptedEvent (JSVal -> MediaEncryptedEvent)
-> JSM JSVal -> DOM MediaEncryptedEvent
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]
"MediaEncryptedEvent")
           [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type', Maybe MediaEncryptedEventInit -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe MediaEncryptedEventInit
eventInitDict])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initDataType Mozilla MediaEncryptedEvent.initDataType documentation> 
getInitDataType ::
                (MonadDOM m, FromJSString result) =>
                  MediaEncryptedEvent -> m result
getInitDataType :: MediaEncryptedEvent -> m result
getInitDataType MediaEncryptedEvent
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MediaEncryptedEvent
self MediaEncryptedEvent
-> Getting (JSM JSVal) MediaEncryptedEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MediaEncryptedEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"initDataType") 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/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
getInitData ::
            (MonadDOM m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
getInitData :: MediaEncryptedEvent -> m (Maybe ArrayBuffer)
getInitData MediaEncryptedEvent
self = DOM (Maybe ArrayBuffer) -> m (Maybe ArrayBuffer)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MediaEncryptedEvent
self MediaEncryptedEvent
-> Getting (JSM JSVal) MediaEncryptedEvent (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MediaEncryptedEvent (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"initData") JSM JSVal
-> (JSVal -> DOM (Maybe ArrayBuffer)) -> DOM (Maybe ArrayBuffer)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe ArrayBuffer)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

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