{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ChildNode
       (before, after, replaceWith, remove, ChildNode(..), gTypeChildNode,
        IsChildNode, toChildNode)
       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/ChildNode.before Mozilla ChildNode.before documentation> 
before ::
       (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
         self -> [nodes] -> m ()
before :: forall (m :: * -> *) self nodes.
(MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
self -> [nodes] -> m ()
before self
self [nodes]
nodes
  = 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 -> ChildNode
forall o. IsChildNode o => o -> ChildNode
toChildNode self
self) ChildNode -> Getting (JSM JSVal) ChildNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"before" [JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([nodes] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [nodes]
nodes)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.after Mozilla ChildNode.after documentation> 
after ::
      (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
        self -> [nodes] -> m ()
after :: forall (m :: * -> *) self nodes.
(MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
self -> [nodes] -> m ()
after self
self [nodes]
nodes
  = 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 -> ChildNode
forall o. IsChildNode o => o -> ChildNode
toChildNode self
self) ChildNode -> Getting (JSM JSVal) ChildNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"after" [JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([nodes] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [nodes]
nodes)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.replaceWith Mozilla ChildNode.replaceWith documentation> 
replaceWith ::
            (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
              self -> [nodes] -> m ()
replaceWith :: forall (m :: * -> *) self nodes.
(MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
self -> [nodes] -> m ()
replaceWith self
self [nodes]
nodes
  = 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 -> ChildNode
forall o. IsChildNode o => o -> ChildNode
toChildNode self
self) ChildNode -> Getting (JSM JSVal) ChildNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"replaceWith" [JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([nodes] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [nodes]
nodes)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
remove :: (MonadDOM m, IsChildNode self) => self -> m ()
remove :: forall (m :: * -> *) self.
(MonadDOM m, IsChildNode self) =>
self -> m ()
remove self
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 ((self -> ChildNode
forall o. IsChildNode o => o -> ChildNode
toChildNode self
self) ChildNode -> Getting (JSM JSVal) ChildNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"remove" ()))