@@ -0,0 +1,87 @@
5+--------------------------------------------------------------------------------
7+--------------------------------------------------------------------------------
9+data Element : Type where
10+ MkElem : Ptr -> Element
12+setText : Element -> String -> IO ()
13+setText (MkElem p) s =
14+ mkForeign (FFun ".textContent=" [FPtr, FString] FUnit) p s
17+setOnClick : Element -> (Event -> IO Bool) -> IO ()
18+setOnClick (MkElem e) f =
20+ FFun "['onclick']=" [ FPtr
21+ , FFunction (FAny Event) (FAny (IO Bool))
23+--------------------------------------------------------------------------------
25+--------------------------------------------------------------------------------
27+data Event : Type where
28+ MkEvent : Ptr -> Event
30+--------------------------------------------------------------------------------
32+--------------------------------------------------------------------------------
34+data NodeList : Type where
35+ MkNodeList : Ptr -> NodeList
37+elemAt : NodeList -> Nat -> IO Element
38+elemAt (MkNodeList p) i = do
39+ i <- mkForeign (FFun ".item" [FPtr, FInt] FPtr) p (cast i)
41+--------------------------------------------------------------------------------
43+--------------------------------------------------------------------------------
45+data Interval : Type where
46+ MkInterval : Ptr -> Interval
48+setInterval : (() -> IO ()) -> Float -> IO Interval
51+ FFun "setInterval" [FFunction FUnit (FAny (IO ())), FFloat] FPtr) f t
52+ return (MkInterval e)
54+clearInterval : Interval -> IO ()
55+clearInterval (MkInterval p) =
56+ mkForeign (FFun "clearInterval" [FPtr] FUnit) p
58+--------------------------------------------------------------------------------
60+--------------------------------------------------------------------------------
61+data Timeout : Type where
62+ MkTimeout : Ptr -> Timeout
64+setTimeout : (() -> IO ()) -> Float -> IO Timeout
67+ FFun "setTimeout" [FFunction FUnit (FAny (IO ())), FFloat] FPtr) f t
70+clearTimeout : Timeout -> IO ()
71+clearTimeout (MkTimeout p) =
72+ mkForeign (FFun "clearTimeout" [FPtr] FUnit) p
74+--------------------------------------------------------------------------------
76+--------------------------------------------------------------------------------
77+alert : String -> IO ()
79+ mkForeign (FFun "alert" [FString] FUnit) msg
81+--------------------------------------------------------------------------------
83+--------------------------------------------------------------------------------
84+query : String -> IO NodeList
86+ e <- mkForeign (FFun "document.querySelectorAll" [FString] FPtr) q
87+ return (MkNodeList e)