module JSDOM.Custom.FormData(
    module Generated,
    newFormData
) where

import Prelude ()
import Prelude.Compat

import JSDOM.Types
import Data.Maybe (mapMaybe)
import Language.Javascript.JSaddle (toJSVal, jsg, new)

import JSDOM.Generated.FormData as Generated hiding (newFormData)


-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
newFormData :: Maybe HTMLFormElement -> m FormData
newFormData Maybe HTMLFormElement
form
  = DOM FormData -> m FormData
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSVal -> FormData
FormData (JSVal -> FormData) -> JSM JSVal -> DOM FormData
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"FormData") ((Maybe HTMLFormElement -> Maybe (JSM JSVal))
-> [Maybe HTMLFormElement] -> [JSM JSVal]
forall a b. (a -> Maybe b) -> [a] -> [b]
mapMaybe ((HTMLFormElement -> JSM JSVal)
-> Maybe HTMLFormElement -> Maybe (JSM JSVal)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap HTMLFormElement -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal) [Maybe HTMLFormElement
form]))