{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE JavaScriptFFI #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
module GHCJS.DOM.JSFFI.Generated.SVGViewSpec
       (js_getTransform, getTransform, getTransformUnsafe,
        getTransformUnchecked, js_getViewTarget, getViewTarget,
        getViewTargetUnsafe, getViewTargetUnchecked, js_getViewBoxString,
        getViewBoxString, js_getPreserveAspectRatioString,
        getPreserveAspectRatioString, js_getTransformString,
        getTransformString, js_getViewTargetString, getViewTargetString,
        js_setZoomAndPan, setZoomAndPan, js_getZoomAndPan, getZoomAndPan,
        SVGViewSpec(..), gTypeSVGViewSpec)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
import qualified Prelude (error)
import Data.Typeable (Typeable)
import GHCJS.Types (JSVal(..), JSString)
import GHCJS.Foreign (jsNull)
import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
import Control.Monad (void)
import Control.Monad.IO.Class (MonadIO(..))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import Data.Maybe (fromJust)
import GHCJS.DOM.Types
import Control.Applicative ((<$>))
import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
import GHCJS.DOM.JSFFI.Generated.Enums
 
foreign import javascript unsafe "$1[\"transform\"]"
        js_getTransform :: SVGViewSpec -> IO (Nullable SVGTransformList)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
getTransform ::
             (MonadIO m) => SVGViewSpec -> m (Maybe SVGTransformList)
getTransform self
  = liftIO (nullableToMaybe <$> (js_getTransform (self)))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
getTransformUnsafe ::
                   (MonadIO m, HasCallStack) => SVGViewSpec -> m SVGTransformList
getTransformUnsafe self
  = liftIO
      ((nullableToMaybe <$> (js_getTransform (self))) >>=
         maybe (Prelude.error "Nothing to return") return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
getTransformUnchecked ::
                      (MonadIO m) => SVGViewSpec -> m SVGTransformList
getTransformUnchecked self
  = liftIO (fromJust . nullableToMaybe <$> (js_getTransform (self)))
 
foreign import javascript unsafe "$1[\"viewTarget\"]"
        js_getViewTarget :: SVGViewSpec -> IO (Nullable SVGElement)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
getViewTarget :: (MonadIO m) => SVGViewSpec -> m (Maybe SVGElement)
getViewTarget self
  = liftIO (nullableToMaybe <$> (js_getViewTarget (self)))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
getViewTargetUnsafe ::
                    (MonadIO m, HasCallStack) => SVGViewSpec -> m SVGElement
getViewTargetUnsafe self
  = liftIO
      ((nullableToMaybe <$> (js_getViewTarget (self))) >>=
         maybe (Prelude.error "Nothing to return") return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
getViewTargetUnchecked ::
                       (MonadIO m) => SVGViewSpec -> m SVGElement
getViewTargetUnchecked self
  = liftIO (fromJust . nullableToMaybe <$> (js_getViewTarget (self)))
 
foreign import javascript unsafe "$1[\"viewBoxString\"]"
        js_getViewBoxString :: SVGViewSpec -> IO JSString

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewBoxString Mozilla SVGViewSpec.viewBoxString documentation> 
getViewBoxString ::
                 (MonadIO m, FromJSString result) => SVGViewSpec -> m result
getViewBoxString self
  = liftIO (fromJSString <$> (js_getViewBoxString (self)))
 
foreign import javascript unsafe
        "$1[\"preserveAspectRatioString\"]" js_getPreserveAspectRatioString
        :: SVGViewSpec -> IO JSString

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.preserveAspectRatioString Mozilla SVGViewSpec.preserveAspectRatioString documentation> 
getPreserveAspectRatioString ::
                             (MonadIO m, FromJSString result) => SVGViewSpec -> m result
getPreserveAspectRatioString self
  = liftIO
      (fromJSString <$> (js_getPreserveAspectRatioString (self)))
 
foreign import javascript unsafe "$1[\"transformString\"]"
        js_getTransformString :: SVGViewSpec -> IO JSString

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transformString Mozilla SVGViewSpec.transformString documentation> 
getTransformString ::
                   (MonadIO m, FromJSString result) => SVGViewSpec -> m result
getTransformString self
  = liftIO (fromJSString <$> (js_getTransformString (self)))
 
foreign import javascript unsafe "$1[\"viewTargetString\"]"
        js_getViewTargetString :: SVGViewSpec -> IO JSString

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTargetString Mozilla SVGViewSpec.viewTargetString documentation> 
getViewTargetString ::
                    (MonadIO m, FromJSString result) => SVGViewSpec -> m result
getViewTargetString self
  = liftIO (fromJSString <$> (js_getViewTargetString (self)))
 
foreign import javascript unsafe "$1[\"zoomAndPan\"] = $2;"
        js_setZoomAndPan :: SVGViewSpec -> Word -> IO ()

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
setZoomAndPan :: (MonadIO m) => SVGViewSpec -> Word -> m ()
setZoomAndPan self val = liftIO (js_setZoomAndPan (self) val)
 
foreign import javascript unsafe "$1[\"zoomAndPan\"]"
        js_getZoomAndPan :: SVGViewSpec -> IO Word

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
getZoomAndPan :: (MonadIO m) => SVGViewSpec -> m Word
getZoomAndPan self = liftIO (js_getZoomAndPan (self))