{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.CSSStyleSheet
       (insertRuleDeprecated, insertRuleDeprecated_, insertRule,
        insertRule_, deleteRule, addRule, addRule_, removeRule,
        getOwnerRule, getCssRules, getRules, CSSStyleSheet(..),
        gTypeCSSStyleSheet)
       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/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
insertRuleDeprecated ::
                     (MonadDOM m, ToJSString rule) =>
                       CSSStyleSheet -> rule -> Word -> m Word
insertRuleDeprecated :: CSSStyleSheet -> rule -> Word -> m Word
insertRuleDeprecated CSSStyleSheet
self rule
rule Word
index
  = 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
<$>
         ((CSSStyleSheet
self CSSStyleSheet
-> Getting (JSM JSVal) CSSStyleSheet (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]
"insertRule" [rule -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal rule
rule, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) 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))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
insertRule ::
           (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> m Word
insertRule :: CSSStyleSheet -> rule -> m Word
insertRule CSSStyleSheet
self rule
rule
  = 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
<$>
         ((CSSStyleSheet
self CSSStyleSheet
-> Getting (JSM JSVal) CSSStyleSheet (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]
"insertRule" [rule -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal rule
rule]) 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))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
addRule ::
        (MonadDOM m, ToJSString selector, ToJSString style) =>
          CSSStyleSheet ->
            Maybe selector -> Maybe style -> Maybe Word -> m Int
addRule :: CSSStyleSheet
-> Maybe selector -> Maybe style -> Maybe Word -> m Int
addRule CSSStyleSheet
self Maybe selector
selector Maybe style
style Maybe Word
index
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Int) -> JSM Double -> DOM Int
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         ((CSSStyleSheet
self CSSStyleSheet
-> Getting (JSM JSVal) CSSStyleSheet (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]
"addRule"
             [Maybe selector -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe selector
selector, Maybe style -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe style
style, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
index])
            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))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
addRule_ ::
         (MonadDOM m, ToJSString selector, ToJSString style) =>
           CSSStyleSheet ->
             Maybe selector -> Maybe style -> Maybe Word -> m ()
addRule_ :: CSSStyleSheet
-> Maybe selector -> Maybe style -> Maybe Word -> m ()
addRule_ CSSStyleSheet
self Maybe selector
selector Maybe style
style 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
         (CSSStyleSheet
self CSSStyleSheet
-> Getting (JSM JSVal) CSSStyleSheet (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]
"addRule"
            [Maybe selector -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe selector
selector, Maybe style -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe style
style, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
index]))

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

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

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

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