{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGAnimatedLength
       (getBaseVal, getAnimVal, SVGAnimatedLength(..),
        gTypeSVGAnimatedLength)
       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/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
getBaseVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
getBaseVal :: forall (m :: * -> *).
MonadDOM m =>
SVGAnimatedLength -> m SVGLength
getBaseVal SVGAnimatedLength
self
  = DOM SVGLength -> m SVGLength
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((SVGAnimatedLength
self SVGAnimatedLength
-> Getting (JSM JSVal) SVGAnimatedLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter SVGAnimatedLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"baseVal") JSM JSVal -> (JSVal -> DOM SVGLength) -> DOM SVGLength
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 SVGLength
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
getAnimVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
getAnimVal :: forall (m :: * -> *).
MonadDOM m =>
SVGAnimatedLength -> m SVGLength
getAnimVal SVGAnimatedLength
self
  = DOM SVGLength -> m SVGLength
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((SVGAnimatedLength
self SVGAnimatedLength
-> Getting (JSM JSVal) SVGAnimatedLength (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter SVGAnimatedLength (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"animVal") JSM JSVal -> (JSVal -> DOM SVGLength) -> DOM SVGLength
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 SVGLength
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)