{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.MediaKeyStatusMap
       (has, has_, get, get_, getSize, MediaKeyStatusMap(..),
        gTypeMediaKeyStatusMap)
       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/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
has ::
    (MonadDOM m, IsBufferSource keyId) =>
      MediaKeyStatusMap -> keyId -> m Bool
has :: MediaKeyStatusMap -> keyId -> m Bool
has MediaKeyStatusMap
self keyId
keyId
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MediaKeyStatusMap
self MediaKeyStatusMap
-> Getting (JSM JSVal) MediaKeyStatusMap (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]
"has" [keyId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal keyId
keyId]) 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/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
has_ ::
     (MonadDOM m, IsBufferSource keyId) =>
       MediaKeyStatusMap -> keyId -> m ()
has_ :: MediaKeyStatusMap -> keyId -> m ()
has_ MediaKeyStatusMap
self keyId
keyId
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (MediaKeyStatusMap
self MediaKeyStatusMap
-> Getting (JSM JSVal) MediaKeyStatusMap (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]
"has" [keyId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal keyId
keyId]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
get ::
    (MonadDOM m, IsBufferSource keyId) =>
      MediaKeyStatusMap -> keyId -> m JSVal
get :: MediaKeyStatusMap -> keyId -> m JSVal
get MediaKeyStatusMap
self keyId
keyId
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((MediaKeyStatusMap
self MediaKeyStatusMap
-> Getting (JSM JSVal) MediaKeyStatusMap (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]
"get" [keyId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal keyId
keyId]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.size Mozilla MediaKeyStatusMap.size documentation> 
getSize :: (MonadDOM m) => MediaKeyStatusMap -> m Word
getSize :: MediaKeyStatusMap -> m Word
getSize MediaKeyStatusMap
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (Double -> Word
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((MediaKeyStatusMap
self MediaKeyStatusMap
-> Getting (JSM JSVal) MediaKeyStatusMap (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter MediaKeyStatusMap (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"size") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))