3 | import Text.HTML.Event
5 | import Web.Raw.UIEvents
9 | %foreign "browser:lambda:x=>x.target.value || x.target.innerHTML || ''"
10 | prim__input : Event -> PrimIO String
12 | %foreign "browser:lambda:x=>x.target.checked?1:0"
13 | prim__checked : Event -> PrimIO Bits8
15 | %foreign "browser:lambda:x=>x.target.files || []"
16 | prim__files : Event -> PrimIO FileList
18 | %foreign "browser:lambda:x=>x.length"
19 | prim__length : FileList -> PrimIO Bits32
21 | %foreign "browser:lambda:(x,y)=>x[y]"
22 | prim__item : FileList -> Bits32 -> File
24 | files : Event -> JSIO (List File)
26 | fs <- primIO (prim__files e)
27 | l <- primIO (prim__length fs)
30 | x => prim__item fs <$> [0..x-1]
33 | mouseInfo : MouseEvent -> JSIO MouseInfo
53 | keyInfo : KeyboardEvent -> JSIO KeyInfo
67 | changeInfo : Event -> JSIO InputInfo
70 | (primIO (prim__input e))
72 | ((1 ==) <$> primIO (prim__checked e)) |]
75 | inputInfo : InputEvent -> JSIO InputInfo
76 | inputInfo e = changeInfo $
up e
79 | elemScrollInfo : Element -> JSIO ScrollInfo
81 | [| MkScrollInfo (get x scrollTop) (scrollHeight x) (clientHeight x) |]
84 | scrollInfo : Event -> JSIO ScrollInfo
86 | Just et <- target e | Nothing => pure $
MkScrollInfo 0 0 0
87 | maybe (pure $
MkScrollInfo 0 0 0) elemScrollInfo (castTo Element et)
90 | wheelInfo : WheelEvent -> JSIO WheelInfo