{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.HTMLOptionsCollection
       (addBefore, remove, item, item_, itemUnsafe, itemUnchecked,
        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
        setLength, getLength, setSelectedIndex, getSelectedIndex,
        HTMLOptionsCollection(..), gTypeHTMLOptionsCollection)
       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/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
addBefore ::
          (MonadDOM m, IsHTMLOptionElementOrGroup element,
           IsHTMLElementOrLong before) =>
            HTMLOptionsCollection -> element -> Maybe before -> m ()
addBefore :: forall (m :: * -> *) element before.
(MonadDOM m, IsHTMLOptionElementOrGroup element,
 IsHTMLElementOrLong before) =>
HTMLOptionsCollection -> element -> Maybe before -> m ()
addBefore HTMLOptionsCollection
self element
element Maybe before
before
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (HTMLOptionsCollection
self HTMLOptionsCollection
-> Getting (JSM JSVal) HTMLOptionsCollection (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
"add" [element -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal element
element, Maybe before -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe before
before]))

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

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

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

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

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

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

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
setLength :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
setLength :: forall (m :: * -> *).
MonadDOM m =>
HTMLOptionsCollection -> Word -> m ()
setLength HTMLOptionsCollection
self Word
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (HTMLOptionsCollection
self HTMLOptionsCollection
-> Getting (DOM ()) HTMLOptionsCollection (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. String
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss String
"length" (Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
getLength :: (MonadDOM m) => HTMLOptionsCollection -> m Word
getLength :: forall (m :: * -> *). MonadDOM m => HTMLOptionsCollection -> m Word
getLength HTMLOptionsCollection
self
  = 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
<$> ((HTMLOptionsCollection
self HTMLOptionsCollection
-> Getting (JSM JSVal) HTMLOptionsCollection (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter HTMLOptionsCollection (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"length") 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/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
setSelectedIndex ::
                 (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
setSelectedIndex :: forall (m :: * -> *).
MonadDOM m =>
HTMLOptionsCollection -> Int -> m ()
setSelectedIndex HTMLOptionsCollection
self Int
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (HTMLOptionsCollection
self HTMLOptionsCollection
-> Getting (DOM ()) HTMLOptionsCollection (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. String
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss String
"selectedIndex" (Int -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Int
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
getSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> m Int
getSelectedIndex :: forall (m :: * -> *). MonadDOM m => HTMLOptionsCollection -> m Int
getSelectedIndex HTMLOptionsCollection
self
  = DOM Int -> m Int
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Int
forall b. Integral b => Double -> b
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
<$> ((HTMLOptionsCollection
self HTMLOptionsCollection
-> Getting (JSM JSVal) HTMLOptionsCollection (JSM JSVal)
-> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter HTMLOptionsCollection (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"selectedIndex") 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))