{-# 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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"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 :: forall (m :: * -> *). MonadDOM m => 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
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"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 :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"mid") JSM JSVal -> (JSVal -> DOM (Maybe result)) -> DOM (Maybe result)
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 (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 :: forall (m :: * -> *) result.
(MonadDOM m, HasCallStack, FromJSString result) =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"mid") JSM JSVal -> (JSVal -> JSM (Maybe result)) -> JSM (Maybe result)
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 (Maybe result)
forall a. FromJSString a => JSVal -> JSM (Maybe a)
fromMaybeJSString) JSM (Maybe result) -> (Maybe result -> DOM result) -> DOM result
forall a b. JSM a -> (a -> JSM b) -> JSM b
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 (String -> DOM result
forall a. HasCallStack => String -> a
Prelude.error String
"Nothing to return") result -> DOM result
forall a. a -> JSM a
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 :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"mid") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"sender") JSM JSVal -> (JSVal -> DOM RTCRtpSender) -> DOM RTCRtpSender
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 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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"receiver") JSM JSVal -> (JSVal -> DOM RTCRtpReceiver) -> DOM RTCRtpReceiver
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 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 :: forall (m :: * -> *). MonadDOM m => 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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"stopped") JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
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 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 :: forall (m :: * -> *).
MonadDOM m =>
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
^. String -> IndexPreservingGetter RTCRtpTransceiver (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"direction") JSM JSVal
-> (JSVal -> DOM RTCRtpTransceiverDirection)
-> DOM RTCRtpTransceiverDirection
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 RTCRtpTransceiverDirection
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)