{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.CSSMediaRule
       (insertRule, insertRule_, deleteRule, getMedia, getCssRules,
        CSSMediaRule(..), gTypeCSSMediaRule)
       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/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
insertRule ::
           (MonadDOM m, ToJSString rule) =>
             CSSMediaRule -> Maybe rule -> Maybe Word -> m Word
insertRule :: forall (m :: * -> *) rule.
(MonadDOM m, ToJSString rule) =>
CSSMediaRule -> Maybe rule -> Maybe Word -> m Word
insertRule CSSMediaRule
self Maybe rule
rule Maybe Word
index
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Word
forall b. Integral b => Double -> b
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
<$>
         ((CSSMediaRule
self CSSMediaRule
-> Getting (JSM JSVal) CSSMediaRule (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
"insertRule" [Maybe rule -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe rule
rule, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
index]) JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
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 Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
insertRule_ ::
            (MonadDOM m, ToJSString rule) =>
              CSSMediaRule -> Maybe rule -> Maybe Word -> m ()
insertRule_ :: forall (m :: * -> *) rule.
(MonadDOM m, ToJSString rule) =>
CSSMediaRule -> Maybe rule -> Maybe Word -> m ()
insertRule_ CSSMediaRule
self Maybe rule
rule Maybe Word
index
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (CSSMediaRule
self CSSMediaRule
-> Getting (JSM JSVal) CSSMediaRule (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
"insertRule" [Maybe rule -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe rule
rule, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
index]))

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

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

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