{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.PluginArray
       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
        namedItemUnsafe, namedItemUnchecked, refresh, getLength,
        PluginArray(..), gTypePluginArray)
       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/PluginArray.item Mozilla PluginArray.item documentation> 
item :: (MonadDOM m) => PluginArray -> Word -> m (Maybe Plugin)
item :: PluginArray -> Word -> m (Maybe Plugin)
item PluginArray
self Word
index
  = DOM (Maybe Plugin) -> m (Maybe Plugin)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((PluginArray
self PluginArray
-> Getting (JSM JSVal) PluginArray (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 Plugin)) -> DOM (Maybe Plugin)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Plugin)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
namedItem_ ::
           (MonadDOM m, ToJSString name) => PluginArray -> name -> m ()
namedItem_ :: PluginArray -> name -> m ()
namedItem_ PluginArray
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 (PluginArray
self PluginArray -> 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/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
namedItemUnsafe ::
                (MonadDOM m, ToJSString name, HasCallStack) =>
                  PluginArray -> name -> m Plugin
namedItemUnsafe :: PluginArray -> name -> m Plugin
namedItemUnsafe PluginArray
self name
name
  = DOM Plugin -> m Plugin
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((PluginArray
self PluginArray -> name -> JSM JSVal
forall this name.
(MakeObject this, ToJSString name) =>
this -> name -> JSM JSVal
! name
name) JSM JSVal -> (JSVal -> DOM (Maybe Plugin)) -> DOM (Maybe Plugin)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe Plugin)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe Plugin) -> (Maybe Plugin -> DOM Plugin) -> DOM Plugin
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM Plugin -> (Plugin -> DOM Plugin) -> Maybe Plugin -> DOM Plugin
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM Plugin
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") Plugin -> DOM Plugin
forall (m :: * -> *) a. Monad m => a -> m a
return)

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

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

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