Skip to content

Commit b4fa3e9

Browse files
committed
Add events and types
1 parent 8cc040c commit b4fa3e9

File tree

18 files changed

+401
-0
lines changed

18 files changed

+401
-0
lines changed

src/Web/HTML/Event/DataTransfer.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use strict";
2+
3+
exports._files = function (dataTransfer) {
4+
return dataTransfer.files;
5+
};
6+
7+
exports.types = function (dataTransfer) {
8+
return dataTransfer.types;
9+
};
10+
11+
exports._getData = function (format) {
12+
return function (dataTransfer) {
13+
return function () {
14+
return dataTransfer.getData(format);
15+
};
16+
};
17+
};
18+
19+
exports._setData = function (format) {
20+
return function (data) {
21+
return function (dataTransfer) {
22+
return function () {
23+
return dataTransfer.setData(format, data);
24+
};
25+
};
26+
};
27+
};
28+
29+
exports._dropEffect = function (dataTransfer) {
30+
return function () {
31+
return dataTransfer.dropEffect;
32+
};
33+
};
34+
35+
exports._setDropEffect = function (e) {
36+
return function (dataTransfer) {
37+
return function () {
38+
dataTransfer.dropEffect = e;
39+
};
40+
};
41+
};

src/Web/HTML/Event/DataTransfer.purs

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
module Web.HTML.Event.DataTransfer
2+
( DataTransfer
3+
, files
4+
, types
5+
, getData
6+
, setData
7+
, DropEffect(..)
8+
, dropEffect
9+
, setDropEffect
10+
) where
11+
12+
import Prelude
13+
14+
import Data.Maybe (Maybe)
15+
import Data.MediaType (MediaType(..))
16+
import Data.Nullable (Nullable, toMaybe)
17+
import Effect (Effect)
18+
import Partial.Unsafe (unsafeCrashWith)
19+
import Web.File.FileList (FileList)
20+
21+
foreign import data DataTransfer :: Type
22+
23+
-- | Contains a list of all the local files available on the data transfer.
24+
-- | Empty if the drag operation doesn't involve dragging files.
25+
-- |
26+
-- | It's possible that a drag operation may have null files, instead of an
27+
-- | empty file list. In these cases Nothing is returned.
28+
files :: DataTransfer -> Maybe FileList
29+
files = toMaybe <$> _files
30+
31+
foreign import _files :: DataTransfer -> Nullable FileList
32+
33+
-- | Returns an array of data formats used in the drag operation.
34+
-- | If the drag operation included no data, then the array is empty.
35+
foreign import types :: DataTransfer -> Array String
36+
37+
foreign import _getData
38+
:: String
39+
-> DataTransfer
40+
-> Effect String
41+
42+
-- | Retrieves the data for a given media type, or an empty string if data for
43+
-- | that type does not exist or the data transfer object contains no data.
44+
getData :: MediaType -> DataTransfer -> Effect String
45+
getData (MediaType format) dt = _getData format dt
46+
47+
foreign import _setData
48+
:: String
49+
-> String
50+
-> DataTransfer
51+
-> Effect Unit
52+
53+
-- | Sets the data transfer object's data for a given media format.
54+
setData
55+
:: MediaType
56+
-> String
57+
-> DataTransfer
58+
-> Effect Unit
59+
setData (MediaType format) dat dt = _setData format dat dt
60+
61+
foreign import _dropEffect :: DataTransfer -> Effect String
62+
63+
data DropEffect = Copy | Link | Move | None
64+
65+
derive instance eqDropEffect :: Eq DropEffect
66+
derive instance ordDropEffect :: Ord DropEffect
67+
68+
-- | Gets the data transfer object's drop effect.
69+
dropEffect :: DataTransfer -> Effect DropEffect
70+
dropEffect dt =
71+
_dropEffect dt <#> case _ of
72+
"copy" -> Copy
73+
"link" -> Link
74+
"move" -> Move
75+
"none" -> None
76+
de -> unsafeCrashWith ("Found unexpected 'dropEffect' value: " <> de)
77+
78+
foreign import _setDropEffect :: String -> DataTransfer -> Effect Unit
79+
80+
-- | Sets the data transfer object's drop effect.
81+
setDropEffect :: DropEffect -> DataTransfer -> Effect Unit
82+
setDropEffect de = _setDropEffect case de of
83+
Copy -> "copy"
84+
Link -> "link"
85+
Move -> "move"
86+
None -> "none"

src/Web/HTML/Event/DragEvent.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"use strict";
2+
3+
exports.dataTransfer = function (e) {
4+
return e.dataTransfer;
5+
};

src/Web/HTML/Event/DragEvent.purs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Web.HTML.Event.DragEvent where
2+
3+
import Foreign (Foreign, F, unsafeReadTagged)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.Event.Types (Event)
6+
import Web.HTML.Event.DataTransfer (DataTransfer)
7+
8+
foreign import data DragEvent :: Type
9+
10+
dragEventToEvent :: DragEvent -> Event
11+
dragEventToEvent = unsafeCoerce
12+
13+
readDragEvent :: Foreign -> F DragEvent
14+
readDragEvent = unsafeReadTagged "DragEvent"
15+
16+
foreign import dataTransfer :: DragEvent -> DataTransfer
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
module Web.HTML.Event.DragEvent.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
dragstart :: EventType
6+
dragstart = EventType "dragstart"
7+
8+
drag :: EventType
9+
drag = EventType "drag"
10+
11+
dragenter :: EventType
12+
dragenter = EventType "dragenter"
13+
14+
dragexit :: EventType
15+
dragexit = EventType "dragexit"
16+
17+
dragleave :: EventType
18+
dragleave = EventType "dragleave"
19+
20+
dragover :: EventType
21+
dragover = EventType "dragover"
22+
23+
drop :: EventType
24+
drop = EventType "drop"
25+
26+
dragend :: EventType
27+
dragend = EventType "dragend"

src/Web/HTML/Event/ErrorEvent.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"use strict";
2+
3+
exports.message = function (e) {
4+
return e.message;
5+
};
6+
7+
exports.fileName = function (e) {
8+
return e.filename;
9+
};
10+
11+
exports.lineNo = function (e) {
12+
return e.lineno;
13+
};
14+
15+
exports.colNo = function (e) {
16+
return e.colno;
17+
};

src/Web/HTML/Event/ErrorEvent.purs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module Web.HTML.Event.ErrorEvent where
2+
3+
import Foreign (F, Foreign, unsafeReadTagged)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.Event.Types (Event)
6+
7+
foreign import data ErrorEvent :: Type
8+
9+
toEvent :: ErrorEvent -> Event
10+
toEvent = unsafeCoerce
11+
12+
read :: Foreign -> F ErrorEvent
13+
read = unsafeReadTagged "ErrorEvent"
14+
15+
foreign import message :: ErrorEvent -> String
16+
17+
foreign import fileName :: ErrorEvent -> String
18+
19+
foreign import lineNo :: ErrorEvent -> Int
20+
21+
foreign import colNo :: ErrorEvent -> Int

src/Web/HTML/Event/EventTypes.purs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
module Web.HTML.Event.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
blur :: EventType
6+
blur = EventType "blur"
7+
8+
change :: EventType
9+
change = EventType "change"
10+
11+
click :: EventType
12+
click = EventType "click"
13+
14+
copy :: EventType
15+
copy = EventType "copy"
16+
17+
cut :: EventType
18+
cut = EventType "cut"
19+
20+
error :: EventType
21+
error = EventType "error"
22+
23+
focus :: EventType
24+
focus = EventType "focus"
25+
26+
input :: EventType
27+
input = EventType "input"
28+
29+
invalid :: EventType
30+
invalid = EventType "invalid"
31+
32+
languagechange :: EventType
33+
languagechange = EventType "languagechange"
34+
35+
load :: EventType
36+
load = EventType "load"
37+
38+
offline :: EventType
39+
offline = EventType "offline"
40+
41+
online :: EventType
42+
online = EventType "online"
43+
44+
paste :: EventType
45+
paste = EventType "paste"
46+
47+
select :: EventType
48+
select = EventType "select"

src/Web/HTML/Event/HashChangeEvent.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use strict";
2+
3+
exports.oldURL = function (e) {
4+
return e.oldURL;
5+
};
6+
7+
exports.newURL = function (e) {
8+
return e.newURL;
9+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module Web.HTML.Event.HashChangeEvent where
2+
3+
import Foreign (F, Foreign, unsafeReadTagged)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.Event.Types (Event)
6+
7+
foreign import data HashChangeEvent :: Type
8+
9+
toEvent :: HashChangeEvent -> Event
10+
toEvent = unsafeCoerce
11+
12+
read :: Foreign -> F HashChangeEvent
13+
read = unsafeReadTagged "HashChangeEvent"
14+
15+
foreign import oldURL :: HashChangeEvent -> String
16+
17+
foreign import newURL :: HashChangeEvent -> String

src/Web/HTML/Event/TrackEvent.purs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module Web.HTML.Event.TrackEvent where
2+
3+
import Foreign (Foreign, F, unsafeReadTagged)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.Event.Event (Event)
6+
7+
foreign import data TrackEvent :: Type
8+
9+
toEvent :: TrackEvent -> Event
10+
toEvent = unsafeCoerce
11+
12+
read :: Foreign -> F TrackEvent
13+
read = unsafeReadTagged "TrackEvent"
14+
15+
-- readonly attribute (VideoTrack or AudioTrack or TextTrack)? track;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Web.HTML.HTMLDetailsElement.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
toggle :: EventType
6+
toggle = EventType "toggle"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Web.HTML.HTMLDialogElement.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
cancel :: EventType
6+
cancel = EventType "cancel"
7+
8+
close :: EventType
9+
close = EventType "close"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Web.HTML.HTMLDocument.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
domContentLoaded :: EventType
6+
domContentLoaded = EventType "DOMContentLoaded"
7+
8+
readyStateChange :: EventType
9+
readyStateChange = EventType "readystatechange"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Web.HTML.HTMLFormElement.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
reset :: EventType
6+
reset = EventType "reset"
7+
8+
submit :: EventType
9+
submit = EventType "submit"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module Web.HTML.HTMLImageElement.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
loadend :: EventType
6+
loadend = EventType "loadend"
7+
8+
loadstart :: EventType
9+
loadstart = EventType "loadstart"
10+
11+
progress :: EventType
12+
progress = EventType "progress"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Web.HTML.HTMLScriptElement.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
afterscriptexecute :: EventType
6+
afterscriptexecute = EventType "afterscriptexecute"
7+
8+
beforescriptexecute :: EventType
9+
beforescriptexecute = EventType "beforescriptexecute"

0 commit comments

Comments
 (0)