{-|
  Description:
    Logging in javascript via console.log. This doesn't require a 'Show'
    instance or any other conversion of the JSVal to be shown.
-}
{-# Language OverloadedStrings #-}
module JSDOM.Extras.ConsoleLog where

import Prelude hiding (log)

import Control.Lens
import Control.Monad
import Language.Javascript.JSaddle

-- | <https://developer.mozilla.org/en-US/docs/Web/API/Console/log console.log>
consoleLog :: (MonadJSM m, ToJSVal a) => a -> m ()
consoleLog :: forall (m :: * -> *) a. (MonadJSM m, ToJSVal a) => a -> m ()
consoleLog a
arg = m JSVal -> m ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (m JSVal -> m ()) -> m JSVal -> m ()
forall a b. (a -> b) -> a -> b
$ JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadJSM m => JSM a -> m a
liftJSM (JSM JSVal -> m JSVal) -> JSM JSVal -> m JSVal
forall a b. (a -> b) -> a -> b
$ JSString -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg JSString
console JSM JSVal
-> Getting (JSM JSVal) (JSM JSVal) (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. JSString -> a -> JSF
forall name a0. (ToJSString name, ToJSVal a0) => name -> a0 -> JSF
js1 JSString
log a
arg
  where
    console, log :: JSString
    console :: JSString
console = JSString
"console"
    log :: JSString
log = JSString
"log"