{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.StyleMedia
       (matchMedium, matchMedium_, getType, StyleMedia(..),
        gTypeStyleMedia)
       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/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
matchMedium ::
            (MonadDOM m, ToJSString mediaquery) =>
              StyleMedia -> Maybe mediaquery -> m Bool
matchMedium :: forall (m :: * -> *) mediaquery.
(MonadDOM m, ToJSString mediaquery) =>
StyleMedia -> Maybe mediaquery -> m Bool
matchMedium StyleMedia
self Maybe mediaquery
mediaquery
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((StyleMedia
self StyleMedia
-> Getting (JSM JSVal) StyleMedia (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
"matchMedium" [Maybe mediaquery -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe mediaquery
mediaquery]) 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/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
matchMedium_ ::
             (MonadDOM m, ToJSString mediaquery) =>
               StyleMedia -> Maybe mediaquery -> m ()
matchMedium_ :: forall (m :: * -> *) mediaquery.
(MonadDOM m, ToJSString mediaquery) =>
StyleMedia -> Maybe mediaquery -> m ()
matchMedium_ StyleMedia
self Maybe mediaquery
mediaquery
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (StyleMedia
self StyleMedia
-> Getting (JSM JSVal) StyleMedia (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
"matchMedium" [Maybe mediaquery -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe mediaquery
mediaquery]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.type Mozilla StyleMedia.type documentation> 
getType ::
        (MonadDOM m, FromJSString result) => StyleMedia -> m result
getType :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
StyleMedia -> m result
getType StyleMedia
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((StyleMedia
self StyleMedia
-> Getting (JSM JSVal) StyleMedia (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter StyleMedia (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"type") 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)