{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGTests
       (hasExtension, hasExtension_, getRequiredFeatures,
        getRequiredExtensions, getSystemLanguage, SVGTests(..),
        gTypeSVGTests, IsSVGTests, toSVGTests)
       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/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
hasExtension ::
             (MonadDOM m, IsSVGTests self, ToJSString extension) =>
               self -> Maybe extension -> m Bool
hasExtension :: self -> Maybe extension -> m Bool
hasExtension self
self Maybe extension
extension
  = DOM Bool -> m Bool
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> SVGTests
forall o. IsSVGTests o => o -> SVGTests
toSVGTests self
self) SVGTests -> Getting (JSM JSVal) SVGTests (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]
"hasExtension" [Maybe extension -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe extension
extension]) 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/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
hasExtension_ ::
              (MonadDOM m, IsSVGTests self, ToJSString extension) =>
                self -> Maybe extension -> m ()
hasExtension_ :: self -> Maybe extension -> m ()
hasExtension_ self
self Maybe extension
extension
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> SVGTests
forall o. IsSVGTests o => o -> SVGTests
toSVGTests self
self) SVGTests -> Getting (JSM JSVal) SVGTests (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]
"hasExtension" [Maybe extension -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe extension
extension]))

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

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

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