{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.DOMImplementation
       (createDocumentType, createDocumentType_, createDocument,
        createDocument_, createHTMLDocument, createHTMLDocument_,
        hasFeature, hasFeature_, DOMImplementation(..),
        gTypeDOMImplementation)
       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/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
createDocumentType ::
                   (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
                    ToJSString systemId) =>
                     DOMImplementation ->
                       qualifiedName -> publicId -> systemId -> m DocumentType
createDocumentType :: DOMImplementation
-> qualifiedName -> publicId -> systemId -> m DocumentType
createDocumentType DOMImplementation
self qualifiedName
qualifiedName publicId
publicId systemId
systemId
  = DOM DocumentType -> m DocumentType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (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]
"createDocumentType"
          [qualifiedName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal qualifiedName
qualifiedName, publicId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal publicId
publicId, systemId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal systemId
systemId])
         JSM JSVal -> (JSVal -> DOM DocumentType) -> DOM DocumentType
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM DocumentType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
createDocumentType_ ::
                    (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
                     ToJSString systemId) =>
                      DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()
createDocumentType_ :: DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()
createDocumentType_ DOMImplementation
self qualifiedName
qualifiedName publicId
publicId systemId
systemId
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (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]
"createDocumentType"
            [qualifiedName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal qualifiedName
qualifiedName, publicId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal publicId
publicId, systemId -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal systemId
systemId]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
createDocument ::
               (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
                 DOMImplementation ->
                   Maybe namespaceURI ->
                     qualifiedName -> Maybe DocumentType -> m XMLDocument
createDocument :: DOMImplementation
-> Maybe namespaceURI
-> qualifiedName
-> Maybe DocumentType
-> m XMLDocument
createDocument DOMImplementation
self Maybe namespaceURI
namespaceURI qualifiedName
qualifiedName Maybe DocumentType
doctype
  = DOM XMLDocument -> m XMLDocument
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (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]
"createDocument"
          [Maybe namespaceURI -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe namespaceURI
namespaceURI, qualifiedName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal qualifiedName
qualifiedName, Maybe DocumentType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe DocumentType
doctype])
         JSM JSVal -> (JSVal -> DOM XMLDocument) -> DOM XMLDocument
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM XMLDocument
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
createDocument_ ::
                (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
                  DOMImplementation ->
                    Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m ()
createDocument_ :: DOMImplementation
-> Maybe namespaceURI
-> qualifiedName
-> Maybe DocumentType
-> m ()
createDocument_ DOMImplementation
self Maybe namespaceURI
namespaceURI qualifiedName
qualifiedName Maybe DocumentType
doctype
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (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]
"createDocument"
            [Maybe namespaceURI -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe namespaceURI
namespaceURI, qualifiedName -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal qualifiedName
qualifiedName, Maybe DocumentType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe DocumentType
doctype]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
createHTMLDocument ::
                   (MonadDOM m, ToJSString title) =>
                     DOMImplementation -> Maybe title -> m HTMLDocument
createHTMLDocument :: DOMImplementation -> Maybe title -> m HTMLDocument
createHTMLDocument DOMImplementation
self Maybe title
title
  = DOM HTMLDocument -> m HTMLDocument
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (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]
"createHTMLDocument" [Maybe title -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe title
title]) JSM JSVal -> (JSVal -> DOM HTMLDocument) -> DOM HTMLDocument
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM HTMLDocument
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
hasFeature :: (MonadDOM m) => DOMImplementation -> m Bool
hasFeature :: DOMImplementation -> m Bool
hasFeature DOMImplementation
self
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"hasFeature" ()) JSM JSVal -> (JSVal -> DOM Bool) -> DOM Bool
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Bool
forall value. ToJSVal value => value -> DOM Bool
valToBool)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
hasFeature_ :: (MonadDOM m) => DOMImplementation -> m ()
hasFeature_ :: DOMImplementation -> m ()
hasFeature_ DOMImplementation
self = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DOMImplementation
self DOMImplementation
-> Getting (JSM JSVal) DOMImplementation (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"hasFeature" ()))