Skip to content

Commit d6960bc

Browse files
authored
Merge pull request #1 from purescript-web/compiler/0.12
Compiler/0.12
2 parents 8cc040c + 4d2dc1a commit d6960bc

File tree

103 files changed

+3665
-463
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+3665
-463
lines changed

.gitignore

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Dependencies
2-
.psci_modules
3-
bower_components
4-
node_modules
5-
6-
# Generated files
7-
.psci
8-
output
1+
/.*
2+
!/.gitignore
3+
!/.eslintrc.json
4+
!/.travis.yml
5+
package-lock.json
6+
/bower_components/
7+
/node_modules/
8+
/output/

.travis.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@ language: node_js
22
dist: trusty
33
sudo: required
44
node_js: stable
5+
env:
6+
- PATH=$HOME/purescript:$PATH
57
install:
8+
- TAG=$(wget -q -O - https://github.com/purescript/purescript/releases/latest --server-response --max-redirect 0 2>&1 | sed -n -e 's/.*Location:.*tag\///p')
9+
- wget -O $HOME/purescript.tar.gz https://github.com/purescript/purescript/releases/download/$TAG/linux64.tar.gz
10+
- tar -xvf $HOME/purescript.tar.gz -C $HOME/
11+
- chmod a+x $HOME/purescript
612
- npm install -g bower
713
- npm install
8-
- bower install
914
script:
15+
- bower install
1016
- npm run -s build
1117
after_success:
1218
- >-

bower.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
"package.json"
1616
],
1717
"dependencies": {
18-
"purescript-js-date": "#compiler/0.12",
19-
"purescript-web-dom": "#compiler/0.12",
20-
"purescript-web-file": "#compiler/0.12",
21-
"purescript-web-storage": "purescript-web/purescript-web-storage#compiler/0.12"
18+
"purescript-js-date": "^6.0.0",
19+
"purescript-web-dom": "^1.0.0",
20+
"purescript-web-file": "^1.0.0",
21+
"purescript-web-storage": "^2.0.0"
2222
}
2323
}

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
"eslint": "^4.19.1",
99
"pulp": "^12.2.0",
1010
"purescript-psa": "^0.6.0",
11-
"purescript": "^0.11.7",
1211
"rimraf": "^2.6.2"
1312
}
1413
}

src/Web/HTML.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/* global window */
2+
"use strict";
3+
4+
exports.window = function () {
5+
return window;
6+
};

src/Web/HTML.purs

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
module Web.HTML
2+
( window
3+
, module Exports
4+
) where
5+
6+
import Effect (Effect)
7+
import Web.HTML.Window (Window)
8+
import Web.HTML.History (History) as Exports
9+
import Web.HTML.HTMLAnchorElement (HTMLAnchorElement) as Exports
10+
import Web.HTML.HTMLAreaElement (HTMLAreaElement) as Exports
11+
import Web.HTML.HTMLAudioElement (HTMLAudioElement) as Exports
12+
import Web.HTML.HTMLBaseElement (HTMLBaseElement) as Exports
13+
import Web.HTML.HTMLBodyElement (HTMLBodyElement) as Exports
14+
import Web.HTML.HTMLBRElement (HTMLBRElement) as Exports
15+
import Web.HTML.HTMLButtonElement (HTMLButtonElement) as Exports
16+
import Web.HTML.HTMLCanvasElement (HTMLCanvasElement) as Exports
17+
import Web.HTML.HTMLDataElement (HTMLDataElement) as Exports
18+
import Web.HTML.HTMLDataListElement (HTMLDataListElement) as Exports
19+
import Web.HTML.HTMLDivElement (HTMLDivElement) as Exports
20+
import Web.HTML.HTMLDListElement (HTMLDListElement) as Exports
21+
import Web.HTML.HTMLDocument (HTMLDocument) as Exports
22+
import Web.HTML.HTMLElement (HTMLElement) as Exports
23+
import Web.HTML.HTMLEmbedElement (HTMLEmbedElement) as Exports
24+
import Web.HTML.HTMLFieldSetElement (HTMLFieldSetElement) as Exports
25+
import Web.HTML.HTMLFormElement (HTMLFormElement) as Exports
26+
import Web.HTML.HTMLHeadElement (HTMLHeadElement) as Exports
27+
import Web.HTML.HTMLHeadingElement (HTMLHeadingElement) as Exports
28+
import Web.HTML.HTMLHRElement (HTMLHRElement) as Exports
29+
import Web.HTML.HTMLIFrameElement (HTMLIFrameElement) as Exports
30+
import Web.HTML.HTMLImageElement (HTMLImageElement) as Exports
31+
import Web.HTML.HTMLInputElement (HTMLInputElement) as Exports
32+
import Web.HTML.HTMLKeygenElement (HTMLKeygenElement) as Exports
33+
import Web.HTML.HTMLLabelElement (HTMLLabelElement) as Exports
34+
import Web.HTML.HTMLLegendElement (HTMLLegendElement) as Exports
35+
import Web.HTML.HTMLLIElement (HTMLLIElement) as Exports
36+
import Web.HTML.HTMLLinkElement (HTMLLinkElement) as Exports
37+
import Web.HTML.HTMLMapElement (HTMLMapElement) as Exports
38+
import Web.HTML.HTMLMediaElement (HTMLMediaElement) as Exports
39+
import Web.HTML.HTMLMetaElement (HTMLMetaElement) as Exports
40+
import Web.HTML.HTMLMeterElement (HTMLMeterElement) as Exports
41+
import Web.HTML.HTMLModElement (HTMLModElement) as Exports
42+
import Web.HTML.HTMLObjectElement (HTMLObjectElement) as Exports
43+
import Web.HTML.HTMLOListElement (HTMLOListElement) as Exports
44+
import Web.HTML.HTMLOptGroupElement (HTMLOptGroupElement) as Exports
45+
import Web.HTML.HTMLOptionElement (HTMLOptionElement) as Exports
46+
import Web.HTML.HTMLOutputElement (HTMLOutputElement) as Exports
47+
import Web.HTML.HTMLParagraphElement (HTMLParagraphElement) as Exports
48+
import Web.HTML.HTMLParamElement (HTMLParamElement) as Exports
49+
import Web.HTML.HTMLPreElement (HTMLPreElement) as Exports
50+
import Web.HTML.HTMLProgressElement (HTMLProgressElement) as Exports
51+
import Web.HTML.HTMLQuoteElement (HTMLQuoteElement) as Exports
52+
import Web.HTML.HTMLScriptElement (HTMLScriptElement) as Exports
53+
import Web.HTML.HTMLSelectElement (HTMLSelectElement) as Exports
54+
import Web.HTML.HTMLSourceElement (HTMLSourceElement) as Exports
55+
import Web.HTML.HTMLSpanElement (HTMLSpanElement) as Exports
56+
import Web.HTML.HTMLStyleElement (HTMLStyleElement) as Exports
57+
import Web.HTML.HTMLTableCaptionElement (HTMLTableCaptionElement) as Exports
58+
import Web.HTML.HTMLTableCellElement (HTMLTableCellElement) as Exports
59+
import Web.HTML.HTMLTableColElement (HTMLTableColElement) as Exports
60+
import Web.HTML.HTMLTableDataCellElement (HTMLTableDataCellElement) as Exports
61+
import Web.HTML.HTMLTableElement (HTMLTableElement) as Exports
62+
import Web.HTML.HTMLTableHeaderCellElement (HTMLTableHeaderCellElement) as Exports
63+
import Web.HTML.HTMLTableRowElement (HTMLTableRowElement) as Exports
64+
import Web.HTML.HTMLTableSectionElement (HTMLTableSectionElement) as Exports
65+
import Web.HTML.HTMLTemplateElement (HTMLTemplateElement) as Exports
66+
import Web.HTML.HTMLTextAreaElement (HTMLTextAreaElement) as Exports
67+
import Web.HTML.HTMLTimeElement (HTMLTimeElement) as Exports
68+
import Web.HTML.HTMLTitleElement (HTMLTitleElement) as Exports
69+
import Web.HTML.HTMLTrackElement (HTMLTrackElement) as Exports
70+
import Web.HTML.HTMLUListElement (HTMLUListElement) as Exports
71+
import Web.HTML.HTMLVideoElement (HTMLVideoElement) as Exports
72+
import Web.HTML.Location (Location) as Exports
73+
import Web.HTML.Navigator (Navigator) as Exports
74+
import Web.HTML.Window (Window) as Exports
75+
76+
foreign import window :: Effect Window
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
3+
exports.returnValue = function (e) {
4+
return function () {
5+
return e.returnValue;
6+
};
7+
};
8+
9+
exports.setReturnValue = function (v) {
10+
return function (e) {
11+
return function () {
12+
e.returnValue = v;
13+
};
14+
};
15+
};
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module Web.HTML.Event.BeforeUnloadEvent where
2+
3+
import Prelude
4+
5+
import Data.Maybe (Maybe)
6+
import Effect (Effect)
7+
import Unsafe.Coerce (unsafeCoerce)
8+
import Web.Event.Event (Event)
9+
import Web.Internal.FFI (unsafeReadProtoTagged)
10+
11+
foreign import data BeforeUnloadEvent :: Type
12+
13+
fromEvent :: Event -> Maybe BeforeUnloadEvent
14+
fromEvent = unsafeReadProtoTagged "BeforeUnloadEvent"
15+
16+
toEvent :: BeforeUnloadEvent -> Event
17+
toEvent = unsafeCoerce
18+
19+
foreign import returnValue :: BeforeUnloadEvent -> Effect String
20+
21+
foreign import setReturnValue :: String -> BeforeUnloadEvent -> Effect Unit
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module Web.HTML.Event.BeforeUnloadEvent.EventTypes where
2+
3+
import Web.Event.Event (EventType(..))
4+
5+
beforeunload :: EventType
6+
beforeunload = EventType "beforeunload"

src/Web/HTML/Event/DataTransfer.js

+41
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

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

src/Web/HTML/Event/DragEvent.js

+5
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

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module Web.HTML.Event.DragEvent where
2+
3+
import Data.Maybe (Maybe)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.Event.Event (Event)
6+
import Web.HTML.Event.DataTransfer (DataTransfer)
7+
import Web.Internal.FFI (unsafeReadProtoTagged)
8+
9+
foreign import data DragEvent :: Type
10+
11+
fromEvent :: Event -> Maybe DragEvent
12+
fromEvent = unsafeReadProtoTagged "DragEvent"
13+
14+
toEvent :: DragEvent -> Event
15+
toEvent = unsafeCoerce
16+
17+
foreign import dataTransfer :: DragEvent -> DataTransfer
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

+17
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+
};

0 commit comments

Comments
 (0)