From 75150152f51b21db78bd3cef70b47a5ec98a4c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 28 Jun 2026 13:26:33 +0200 Subject: Newtype wrappers for some JavaScript values --- src/JavaScript.hs | 45 ++++++++------------------------------------- 1 file changed, 8 insertions(+), 37 deletions(-) (limited to 'src/JavaScript.hs') diff --git a/src/JavaScript.hs b/src/JavaScript.hs index 81b3502..6c07370 100644 --- a/src/JavaScript.hs +++ b/src/JavaScript.hs @@ -1,40 +1,18 @@ module JavaScript ( - getElementById, - documentQuerySelector, - querySelector, - - asEventListener, - addEventListener, + module JavaScript.Event, + module JavaScript.Element, + module JavaScript.Window, + toJSVal, consoleLog, consoleLogVal, ) where -import GHC.Wasm.Prim - -getElementById :: String -> IO (Maybe JSVal) -getElementById = fmap nullToNothing . js_document_getElementById . toJSString -foreign import javascript unsafe "document.getElementById($1)" - js_document_getElementById :: JSString -> IO JSVal - -documentQuerySelector :: String -> IO (Maybe JSVal) -documentQuerySelector = fmap nullToNothing . js_document_querySelector . toJSString -foreign import javascript unsafe "document.querySelector($1)" - js_document_querySelector :: JSString -> IO JSVal - -querySelector :: String -> JSVal -> IO (Maybe JSVal) -querySelector sel e = nullToNothing <$> js_querySelector e (toJSString sel) -foreign import javascript unsafe "$1.querySelector($2)" - js_querySelector :: JSVal -> JSString -> IO JSVal +import JavaScript.Element +import JavaScript.Event +import JavaScript.Val +import JavaScript.Window -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 @@ -43,10 +21,3 @@ foreign import javascript unsafe "console.log($1)" foreign import javascript unsafe "console.log($1)" consoleLogVal :: JSVal -> IO () - - -nullToNothing :: JSVal -> Maybe JSVal -nullToNothing val | isNull val = Nothing - | otherwise = Just val -foreign import javascript unsafe "$1 === null" - isNull :: JSVal -> Bool -- cgit v1.2.3