{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MediaDevices
       (enumerateDevices, enumerateDevices_, getSupportedConstraints,
        getSupportedConstraints_, getUserMedia, getUserMedia_,
        devicechange, MediaDevices(..), gTypeMediaDevices)
       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/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
enumerateDevices ::
                 (MonadDOM m) => MediaDevices -> m [MediaDeviceInfo]
enumerateDevices :: forall (m :: * -> *).
MonadDOM m =>
MediaDevices -> m [MediaDeviceInfo]
enumerateDevices MediaDevices
self
  = DOM [MediaDeviceInfo] -> m [MediaDeviceInfo]
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((MediaDevices
self MediaDevices
-> Getting (JSM JSVal) MediaDevices (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"enumerateDevices" ()) 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
readPromise) JSM JSVal
-> (JSVal -> DOM [MediaDeviceInfo]) -> DOM [MediaDeviceInfo]
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 [MediaDeviceInfo]
forall o. FromJSVal o => JSVal -> JSM [o]
fromJSArrayUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
enumerateDevices_ :: (MonadDOM m) => MediaDevices -> m ()
enumerateDevices_ :: forall (m :: * -> *). MonadDOM m => MediaDevices -> m ()
enumerateDevices_ MediaDevices
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 (MediaDevices
self MediaDevices
-> Getting (JSM JSVal) MediaDevices (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"enumerateDevices" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
getSupportedConstraints ::
                        (MonadDOM m) => MediaDevices -> m MediaTrackSupportedConstraints
getSupportedConstraints :: forall (m :: * -> *).
MonadDOM m =>
MediaDevices -> m MediaTrackSupportedConstraints
getSupportedConstraints MediaDevices
self
  = DOM MediaTrackSupportedConstraints
-> m MediaTrackSupportedConstraints
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((MediaDevices
self MediaDevices
-> Getting (JSM JSVal) MediaDevices (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getSupportedConstraints" ()) JSM JSVal
-> (JSVal -> DOM MediaTrackSupportedConstraints)
-> DOM MediaTrackSupportedConstraints
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 MediaTrackSupportedConstraints
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
getSupportedConstraints_ :: (MonadDOM m) => MediaDevices -> m ()
getSupportedConstraints_ :: forall (m :: * -> *). MonadDOM m => MediaDevices -> m ()
getSupportedConstraints_ MediaDevices
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 (MediaDevices
self MediaDevices
-> Getting (JSM JSVal) MediaDevices (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getSupportedConstraints" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
getUserMedia ::
             (MonadDOM m) =>
               MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
getUserMedia :: forall (m :: * -> *).
MonadDOM m =>
MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
getUserMedia MediaDevices
self Maybe MediaStreamConstraints
constraints
  = DOM MediaStream -> m MediaStream
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((MediaDevices
self MediaDevices
-> Getting (JSM JSVal) MediaDevices (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
"getUserMedia" [Maybe MediaStreamConstraints -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe MediaStreamConstraints
constraints]) 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
readPromise)
         JSM JSVal -> (JSVal -> DOM MediaStream) -> DOM MediaStream
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 MediaStream
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.ondevicechange Mozilla MediaDevices.ondevicechange documentation> 
devicechange :: EventName MediaDevices ondevicechange
devicechange :: forall ondevicechange. EventName MediaDevices ondevicechange
devicechange = DOMString -> EventName MediaDevices ondevicechange
forall t e. DOMString -> EventName t e
unsafeEventName (String -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString String
"devicechange")