From 1432733610d669c15a79787d2b47c876e2ff1999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 23 Feb 2026 23:10:57 +0100 Subject: Keep selected conversation in URL hash --- src/JavaScript.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/JavaScript.hs') diff --git a/src/JavaScript.hs b/src/JavaScript.hs index 21571ea..bc27818 100644 --- a/src/JavaScript.hs +++ b/src/JavaScript.hs @@ -1,5 +1,7 @@ module JavaScript ( getElementById, + documentQuerySelector, + querySelector, asEventListener, addEventListener, @@ -15,6 +17,16 @@ getElementById = 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 + foreign import javascript "wrapper" asEventListener :: (JSVal -> IO ()) -> IO JSVal @@ -31,3 +43,10 @@ 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