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

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

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

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

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

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

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

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

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

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