{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MediaSource
       (newMediaSource, addSourceBuffer, addSourceBuffer_,
        removeSourceBuffer, endOfStream, isTypeSupported, isTypeSupported_,
        setLiveSeekableRange, clearLiveSeekableRange, getSourceBuffers,
        getActiveSourceBuffers, setDuration, getDuration, getReadyState,
        sourceopen, sourceended, sourceclose, MediaSource(..),
        gTypeMediaSource)
       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/MediaSource Mozilla MediaSource documentation> 
newMediaSource :: (MonadDOM m) => m MediaSource
newMediaSource :: m MediaSource
newMediaSource
  = DOM MediaSource -> m MediaSource
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSVal -> MediaSource
MediaSource (JSVal -> MediaSource) -> JSM JSVal -> DOM MediaSource
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> 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]
"MediaSource") ())

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
addSourceBuffer ::
                (MonadDOM m, ToJSString type') =>
                  MediaSource -> type' -> m SourceBuffer
addSourceBuffer :: MediaSource -> type' -> m SourceBuffer
addSourceBuffer MediaSource
self type'
type'
  = DOM SourceBuffer -> m SourceBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"addSourceBuffer" [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type']) JSM JSVal -> (JSVal -> DOM SourceBuffer) -> DOM SourceBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM SourceBuffer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
addSourceBuffer_ ::
                 (MonadDOM m, ToJSString type') => MediaSource -> type' -> m ()
addSourceBuffer_ :: MediaSource -> type' -> m ()
addSourceBuffer_ MediaSource
self type'
type'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"addSourceBuffer" [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
removeSourceBuffer ::
                   (MonadDOM m) => MediaSource -> SourceBuffer -> m ()
removeSourceBuffer :: MediaSource -> SourceBuffer -> m ()
removeSourceBuffer MediaSource
self SourceBuffer
buffer
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"removeSourceBuffer" [SourceBuffer -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal SourceBuffer
buffer]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
endOfStream ::
            (MonadDOM m) => MediaSource -> Maybe EndOfStreamError -> m ()
endOfStream :: MediaSource -> Maybe EndOfStreamError -> m ()
endOfStream MediaSource
self Maybe EndOfStreamError
error
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"endOfStream" [Maybe EndOfStreamError -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe EndOfStreamError
error]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
isTypeSupported ::
                (MonadDOM m, ToJSString type') => type' -> m Bool
isTypeSupported :: type' -> m Bool
isTypeSupported type'
type'
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"MediaSource") JSM JSVal
-> Getting (JSM JSVal) (JSM JSVal) (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]
"isTypeSupported" [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type']) 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/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
isTypeSupported_ :: (MonadDOM m, ToJSString type') => type' -> m ()
isTypeSupported_ :: type' -> m ()
isTypeSupported_ type'
type'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"MediaSource") JSM JSVal
-> Getting (JSM JSVal) (JSM JSVal) (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]
"isTypeSupported" [type' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal type'
type']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.setLiveSeekableRange Mozilla MediaSource.setLiveSeekableRange documentation> 
setLiveSeekableRange ::
                     (MonadDOM m) => MediaSource -> Double -> Double -> m ()
setLiveSeekableRange :: MediaSource -> Double -> Double -> m ()
setLiveSeekableRange MediaSource
self Double
start Double
end
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"setLiveSeekableRange" [Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
start, Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
end]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.clearLiveSeekableRange Mozilla MediaSource.clearLiveSeekableRange documentation> 
clearLiveSeekableRange :: (MonadDOM m) => MediaSource -> m ()
clearLiveSeekableRange :: MediaSource -> m ()
clearLiveSeekableRange MediaSource
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 (MediaSource
self MediaSource
-> Getting (JSM JSVal) MediaSource (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]
"clearLiveSeekableRange" ()))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
setDuration :: (MonadDOM m) => MediaSource -> Double -> m ()
setDuration :: MediaSource -> Double -> m ()
setDuration MediaSource
self Double
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (MediaSource
self MediaSource -> Getting (DOM ()) MediaSource (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]
"duration" (Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Double
val))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceopen Mozilla MediaSource.onsourceopen documentation> 
sourceopen :: EventName MediaSource onsourceopen
sourceopen :: EventName MediaSource onsourceopen
sourceopen = DOMString -> EventName MediaSource onsourceopen
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"sourceopen")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceended Mozilla MediaSource.onsourceended documentation> 
sourceended :: EventName MediaSource onsourceended
sourceended :: EventName MediaSource onsourceended
sourceended = DOMString -> EventName MediaSource onsourceended
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"sourceended")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceclose Mozilla MediaSource.onsourceclose documentation> 
sourceclose :: EventName MediaSource onsourceclose
sourceclose :: EventName MediaSource onsourceclose
sourceclose = DOMString -> EventName MediaSource onsourceclose
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"sourceclose")