summaryrefslogtreecommitdiff
path: root/src/JavaScript.hs
blob: 21571ea93ed2ce16b9ec6fd87f57ebc70a0252fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
module JavaScript (
    getElementById,

    asEventListener,
    addEventListener,

    consoleLog,
    consoleLogVal,
) where

import GHC.Wasm.Prim

getElementById :: String -> IO JSVal
getElementById = js_document_getElementById . toJSString
foreign import javascript unsafe "document.getElementById($1)"
    js_document_getElementById :: JSString -> IO JSVal

foreign import javascript "wrapper"
    asEventListener :: (JSVal -> IO ()) -> IO JSVal

addEventListener :: JSVal -> String -> (JSVal -> IO ()) -> IO ()
addEventListener obj ev cb = do
    js_addEventListener obj (toJSString ev) =<< asEventListener cb
foreign import javascript unsafe "$1.addEventListener($2, $3)"
    js_addEventListener :: JSVal -> JSString -> JSVal -> IO ()

consoleLog :: String -> IO ()
consoleLog = js_consoleLog . toJSString
foreign import javascript unsafe "console.log($1)"
    js_consoleLog :: JSString -> IO ()

foreign import javascript unsafe "console.log($1)"
    consoleLogVal :: JSVal -> IO ()