blob: 2eac8f2b2fc1d9599e4cd064f04c300ec48a5e39 (
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
34
35
36
37
38
|
module JavaScript.Element (
Element, IsElement(..),
getElementById,
documentQuerySelector,
querySelector,
) where
import JavaScript.Event
import JavaScript.Val
newtype Element = Element JSVal
deriving (ToJSVal, FromJSVal)
class IsElement a where
toElement :: a -> Element
instance IsElement Element where
toElement = id
instance IsEventTarget Element where
toEventTarget = fromJSValUnchecked . toJSVal
getElementById :: String -> IO (Maybe Element)
getElementById = fmap nullToNothing . js_document_getElementById . toJSString
foreign import javascript unsafe "document.getElementById($1)"
js_document_getElementById :: JSString -> IO JSVal
documentQuerySelector :: String -> IO (Maybe Element)
documentQuerySelector = fmap nullToNothing . js_document_querySelector . toJSString
foreign import javascript unsafe "document.querySelector($1)"
js_document_querySelector :: JSString -> IO JSVal
querySelector :: IsElement e => String -> e -> IO (Maybe Element)
querySelector sel e = nullToNothing <$> js_querySelector (toJSVal $ toElement e) (toJSString sel)
foreign import javascript unsafe "$1.querySelector($2)"
js_querySelector :: JSVal -> JSString -> IO JSVal
|