{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.StyleSheetList
       (item, item_, itemUnsafe, itemUnchecked, get, get_, getLength,
        StyleSheetList(..), gTypeStyleSheetList)
       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/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
item ::
     (MonadDOM m) => StyleSheetList -> Word -> m (Maybe StyleSheet)
item :: StyleSheetList -> Word -> m (Maybe StyleSheet)
item StyleSheetList
self Word
index
  = DOM (Maybe StyleSheet) -> m (Maybe StyleSheet)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((StyleSheetList
self StyleSheetList
-> Getting (JSM JSVal) StyleSheetList (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]
"item" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal
-> (JSVal -> DOM (Maybe StyleSheet)) -> DOM (Maybe StyleSheet)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe StyleSheet)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
itemUnsafe ::
           (MonadDOM m, HasCallStack) =>
             StyleSheetList -> Word -> m StyleSheet
itemUnsafe :: StyleSheetList -> Word -> m StyleSheet
itemUnsafe StyleSheetList
self Word
index
  = DOM StyleSheet -> m StyleSheet
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((StyleSheetList
self StyleSheetList
-> Getting (JSM JSVal) StyleSheetList (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]
"item" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal
-> (JSVal -> DOM (Maybe StyleSheet)) -> DOM (Maybe StyleSheet)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe StyleSheet)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe StyleSheet)
-> (Maybe StyleSheet -> DOM StyleSheet) -> DOM StyleSheet
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM StyleSheet
-> (StyleSheet -> DOM StyleSheet)
-> Maybe StyleSheet
-> DOM StyleSheet
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM StyleSheet
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") StyleSheet -> DOM StyleSheet
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
itemUnchecked ::
              (MonadDOM m) => StyleSheetList -> Word -> m StyleSheet
itemUnchecked :: StyleSheetList -> Word -> m StyleSheet
itemUnchecked StyleSheetList
self Word
index
  = DOM StyleSheet -> m StyleSheet
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((StyleSheetList
self StyleSheetList
-> Getting (JSM JSVal) StyleSheetList (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]
"item" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal -> (JSVal -> DOM StyleSheet) -> DOM StyleSheet
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM StyleSheet
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
get ::
    (MonadDOM m, ToJSString name) =>
      StyleSheetList -> name -> m CSSStyleSheet
get :: StyleSheetList -> name -> m CSSStyleSheet
get StyleSheetList
self name
name = DOM CSSStyleSheet -> m CSSStyleSheet
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((StyleSheetList
self StyleSheetList -> name -> JSM JSVal
forall this name.
(MakeObject this, ToJSString name) =>
this -> name -> JSM JSVal
! name
name) JSM JSVal -> (JSVal -> DOM CSSStyleSheet) -> DOM CSSStyleSheet
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM CSSStyleSheet
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
get_ ::
     (MonadDOM m, ToJSString name) => StyleSheetList -> name -> m ()
get_ :: StyleSheetList -> name -> m ()
get_ StyleSheetList
self name
name = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (StyleSheetList
self StyleSheetList -> name -> JSM JSVal
forall this name.
(MakeObject this, ToJSString name) =>
this -> name -> JSM JSVal
! name
name))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.length Mozilla StyleSheetList.length documentation> 
getLength :: (MonadDOM m) => StyleSheetList -> m Word
getLength :: StyleSheetList -> m Word
getLength StyleSheetList
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
<$> ((StyleSheetList
self StyleSheetList
-> Getting (JSM JSVal) StyleSheetList (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter StyleSheetList (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"length") 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))