{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SVGPathSegList
       (clear, initialize, initialize_, getItem, getItem_,
        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
        SVGPathSegList(..), gTypeSVGPathSegList)
       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/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
clear :: (MonadDOM m) => SVGPathSegList -> m ()
clear :: SVGPathSegList -> m ()
clear SVGPathSegList
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 (SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"clear" ()))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
getItem :: (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
getItem :: SVGPathSegList -> Word -> m SVGPathSeg
getItem SVGPathSegList
self Word
index
  = DOM SVGPathSeg -> m SVGPathSeg
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"getItem" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal -> (JSVal -> DOM SVGPathSeg) -> DOM SVGPathSeg
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM SVGPathSeg
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
getItem_ :: (MonadDOM m) => SVGPathSegList -> Word -> m ()
getItem_ :: SVGPathSegList -> Word -> m ()
getItem_ SVGPathSegList
self Word
index
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"getItem" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
insertItemBefore ::
                 (MonadDOM m, IsSVGPathSeg newItem) =>
                   SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
insertItemBefore :: SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
insertItemBefore SVGPathSegList
self Maybe newItem
newItem Word
index
  = DOM SVGPathSeg -> m SVGPathSeg
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"insertItemBefore" [Maybe newItem -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe newItem
newItem, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index])
         JSM JSVal -> (JSVal -> DOM SVGPathSeg) -> DOM SVGPathSeg
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM SVGPathSeg
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
insertItemBefore_ ::
                  (MonadDOM m, IsSVGPathSeg newItem) =>
                    SVGPathSegList -> Maybe newItem -> Word -> m ()
insertItemBefore_ :: SVGPathSegList -> Maybe newItem -> Word -> m ()
insertItemBefore_ SVGPathSegList
self Maybe newItem
newItem Word
index
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"insertItemBefore" [Maybe newItem -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe newItem
newItem, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
replaceItem ::
            (MonadDOM m, IsSVGPathSeg newItem) =>
              SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
replaceItem :: SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
replaceItem SVGPathSegList
self Maybe newItem
newItem Word
index
  = DOM SVGPathSeg -> m SVGPathSeg
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"replaceItem" [Maybe newItem -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe newItem
newItem, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal -> (JSVal -> DOM SVGPathSeg) -> DOM SVGPathSeg
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM SVGPathSeg
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
replaceItem_ ::
             (MonadDOM m, IsSVGPathSeg newItem) =>
               SVGPathSegList -> Maybe newItem -> Word -> m ()
replaceItem_ :: SVGPathSegList -> Maybe newItem -> Word -> m ()
replaceItem_ SVGPathSegList
self Maybe newItem
newItem Word
index
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"replaceItem" [Maybe newItem -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe newItem
newItem, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
removeItem ::
           (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
removeItem :: SVGPathSegList -> Word -> m SVGPathSeg
removeItem SVGPathSegList
self Word
index
  = DOM SVGPathSeg -> m SVGPathSeg
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      ((SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"removeItem" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]) JSM JSVal -> (JSVal -> DOM SVGPathSeg) -> DOM SVGPathSeg
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM SVGPathSeg
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
removeItem_ :: (MonadDOM m) => SVGPathSegList -> Word -> m ()
removeItem_ :: SVGPathSegList -> Word -> m ()
removeItem_ SVGPathSegList
self Word
index
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (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]
"removeItem" [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
index]))

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

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.numberOfItems Mozilla SVGPathSegList.numberOfItems documentation> 
getNumberOfItems :: (MonadDOM m) => SVGPathSegList -> m Word
getNumberOfItems :: SVGPathSegList -> m Word
getNumberOfItems SVGPathSegList
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Word
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> JSM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((SVGPathSegList
self SVGPathSegList
-> Getting (JSM JSVal) SVGPathSegList (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter SVGPathSegList (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"numberOfItems") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))