summaryrefslogtreecommitdiff
path: root/src/JavaScript.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-02-23 23:10:57 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-02-24 20:25:36 +0100
commit1432733610d669c15a79787d2b47c876e2ff1999 (patch)
tree16ad4153492a4d18cdddc7055996b42e767cf8ae /src/JavaScript.hs
parente6a50d2f7f638a2806a7ab43784f68b06df64151 (diff)
Keep selected conversation in URL hash
Diffstat (limited to 'src/JavaScript.hs')
-rw-r--r--src/JavaScript.hs19
1 files changed, 19 insertions, 0 deletions
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