{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.RTCRtpTransceiver
       (setDirection, stop, getMid, getMidUnsafe, getMidUnchecked,
        getSender, getReceiver, getStopped, getDirection,
        RTCRtpTransceiver(..), gTypeRTCRtpTransceiver)
       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/RTCRtpTransceiver.setDirection Mozilla RTCRtpTransceiver.setDirection documentation> 
setDirection ::
             (MonadDOM m) =>
               RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
setDirection :: RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
setDirection RTCRtpTransceiver
self RTCRtpTransceiverDirection
direction
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (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]
"setDirection" [RTCRtpTransceiverDirection -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal RTCRtpTransceiverDirection
direction]))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
getMid ::
       (MonadDOM m, FromJSString result) =>
         RTCRtpTransceiver -> m (Maybe result)
getMid :: RTCRtpTransceiver -> m (Maybe result)
getMid RTCRtpTransceiver
self = DOM (Maybe result) -> m (Maybe result)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"mid") JSM JSVal -> (JSVal -> DOM (Maybe result)) -> DOM (Maybe result)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe result)
forall a. FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
getMidUnchecked ::
                (MonadDOM m, FromJSString result) => RTCRtpTransceiver -> m result
getMidUnchecked :: RTCRtpTransceiver -> m result
getMidUnchecked RTCRtpTransceiver
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"mid") 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/RTCRtpTransceiver.sender Mozilla RTCRtpTransceiver.sender documentation> 
getSender :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpSender
getSender :: RTCRtpTransceiver -> m RTCRtpSender
getSender RTCRtpTransceiver
self
  = DOM RTCRtpSender -> m RTCRtpSender
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sender") JSM JSVal -> (JSVal -> DOM RTCRtpSender) -> DOM RTCRtpSender
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM RTCRtpSender
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stopped Mozilla RTCRtpTransceiver.stopped documentation> 
getStopped :: (MonadDOM m) => RTCRtpTransceiver -> m Bool
getStopped :: RTCRtpTransceiver -> m Bool
getStopped RTCRtpTransceiver
self = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"stopped") 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/RTCRtpTransceiver.direction Mozilla RTCRtpTransceiver.direction documentation> 
getDirection ::
             (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
getDirection :: RTCRtpTransceiver -> m RTCRtpTransceiverDirection
getDirection RTCRtpTransceiver
self
  = DOM RTCRtpTransceiverDirection -> m RTCRtpTransceiverDirection
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpTransceiver
self RTCRtpTransceiver
-> Getting (JSM JSVal) RTCRtpTransceiver (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"direction") JSM JSVal
-> (JSVal -> DOM RTCRtpTransceiverDirection)
-> DOM RTCRtpTransceiverDirection
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM RTCRtpTransceiverDirection
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)