Skip to content

Commit

Permalink
Merge pull request purescript-web#1 from purescript-web/compiler/0.12
Browse files Browse the repository at this point in the history
Compiler/0.12
  • Loading branch information
garyb committed May 25, 2018
2 parents 8cc040c + 4d2dc1a commit d6960bc
Show file tree
Hide file tree
Showing 103 changed files with 3,665 additions and 463 deletions.
16 changes: 8 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Dependencies
.psci_modules
bower_components
node_modules

# Generated files
.psci
output
/.*
!/.gitignore
!/.eslintrc.json
!/.travis.yml
package-lock.json
/bower_components/
/node_modules/
/output/
8 changes: 7 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@ language: node_js
dist: trusty
sudo: required
node_js: stable
env:
- PATH=$HOME/purescript:$PATH
install:
- 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')
- wget -O $HOME/purescript.tar.gz https://github.com/purescript/purescript/releases/download/$TAG/linux64.tar.gz
- tar -xvf $HOME/purescript.tar.gz -C $HOME/
- chmod a+x $HOME/purescript
- npm install -g bower
- npm install
- bower install
script:
- bower install
- npm run -s build
after_success:
- >-
Expand Down
8 changes: 4 additions & 4 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
"package.json"
],
"dependencies": {
"purescript-js-date": "#compiler/0.12",
"purescript-web-dom": "#compiler/0.12",
"purescript-web-file": "#compiler/0.12",
"purescript-web-storage": "purescript-web/purescript-web-storage#compiler/0.12"
"purescript-js-date": "^6.0.0",
"purescript-web-dom": "^1.0.0",
"purescript-web-file": "^1.0.0",
"purescript-web-storage": "^2.0.0"
}
}
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"eslint": "^4.19.1",
"pulp": "^12.2.0",
"purescript-psa": "^0.6.0",
"purescript": "^0.11.7",
"rimraf": "^2.6.2"
}
}
6 changes: 6 additions & 0 deletions src/Web/HTML.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* global window */
"use strict";

exports.window = function () {
return window;
};
76 changes: 76 additions & 0 deletions src/Web/HTML.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
module Web.HTML
( window
, module Exports
) where

import Effect (Effect)
import Web.HTML.Window (Window)
import Web.HTML.History (History) as Exports
import Web.HTML.HTMLAnchorElement (HTMLAnchorElement) as Exports
import Web.HTML.HTMLAreaElement (HTMLAreaElement) as Exports
import Web.HTML.HTMLAudioElement (HTMLAudioElement) as Exports
import Web.HTML.HTMLBaseElement (HTMLBaseElement) as Exports
import Web.HTML.HTMLBodyElement (HTMLBodyElement) as Exports
import Web.HTML.HTMLBRElement (HTMLBRElement) as Exports
import Web.HTML.HTMLButtonElement (HTMLButtonElement) as Exports
import Web.HTML.HTMLCanvasElement (HTMLCanvasElement) as Exports
import Web.HTML.HTMLDataElement (HTMLDataElement) as Exports
import Web.HTML.HTMLDataListElement (HTMLDataListElement) as Exports
import Web.HTML.HTMLDivElement (HTMLDivElement) as Exports
import Web.HTML.HTMLDListElement (HTMLDListElement) as Exports
import Web.HTML.HTMLDocument (HTMLDocument) as Exports
import Web.HTML.HTMLElement (HTMLElement) as Exports
import Web.HTML.HTMLEmbedElement (HTMLEmbedElement) as Exports
import Web.HTML.HTMLFieldSetElement (HTMLFieldSetElement) as Exports
import Web.HTML.HTMLFormElement (HTMLFormElement) as Exports
import Web.HTML.HTMLHeadElement (HTMLHeadElement) as Exports
import Web.HTML.HTMLHeadingElement (HTMLHeadingElement) as Exports
import Web.HTML.HTMLHRElement (HTMLHRElement) as Exports
import Web.HTML.HTMLIFrameElement (HTMLIFrameElement) as Exports
import Web.HTML.HTMLImageElement (HTMLImageElement) as Exports
import Web.HTML.HTMLInputElement (HTMLInputElement) as Exports
import Web.HTML.HTMLKeygenElement (HTMLKeygenElement) as Exports
import Web.HTML.HTMLLabelElement (HTMLLabelElement) as Exports
import Web.HTML.HTMLLegendElement (HTMLLegendElement) as Exports
import Web.HTML.HTMLLIElement (HTMLLIElement) as Exports
import Web.HTML.HTMLLinkElement (HTMLLinkElement) as Exports
import Web.HTML.HTMLMapElement (HTMLMapElement) as Exports
import Web.HTML.HTMLMediaElement (HTMLMediaElement) as Exports
import Web.HTML.HTMLMetaElement (HTMLMetaElement) as Exports
import Web.HTML.HTMLMeterElement (HTMLMeterElement) as Exports
import Web.HTML.HTMLModElement (HTMLModElement) as Exports
import Web.HTML.HTMLObjectElement (HTMLObjectElement) as Exports
import Web.HTML.HTMLOListElement (HTMLOListElement) as Exports
import Web.HTML.HTMLOptGroupElement (HTMLOptGroupElement) as Exports
import Web.HTML.HTMLOptionElement (HTMLOptionElement) as Exports
import Web.HTML.HTMLOutputElement (HTMLOutputElement) as Exports
import Web.HTML.HTMLParagraphElement (HTMLParagraphElement) as Exports
import Web.HTML.HTMLParamElement (HTMLParamElement) as Exports
import Web.HTML.HTMLPreElement (HTMLPreElement) as Exports
import Web.HTML.HTMLProgressElement (HTMLProgressElement) as Exports
import Web.HTML.HTMLQuoteElement (HTMLQuoteElement) as Exports
import Web.HTML.HTMLScriptElement (HTMLScriptElement) as Exports
import Web.HTML.HTMLSelectElement (HTMLSelectElement) as Exports
import Web.HTML.HTMLSourceElement (HTMLSourceElement) as Exports
import Web.HTML.HTMLSpanElement (HTMLSpanElement) as Exports
import Web.HTML.HTMLStyleElement (HTMLStyleElement) as Exports
import Web.HTML.HTMLTableCaptionElement (HTMLTableCaptionElement) as Exports
import Web.HTML.HTMLTableCellElement (HTMLTableCellElement) as Exports
import Web.HTML.HTMLTableColElement (HTMLTableColElement) as Exports
import Web.HTML.HTMLTableDataCellElement (HTMLTableDataCellElement) as Exports
import Web.HTML.HTMLTableElement (HTMLTableElement) as Exports
import Web.HTML.HTMLTableHeaderCellElement (HTMLTableHeaderCellElement) as Exports
import Web.HTML.HTMLTableRowElement (HTMLTableRowElement) as Exports
import Web.HTML.HTMLTableSectionElement (HTMLTableSectionElement) as Exports
import Web.HTML.HTMLTemplateElement (HTMLTemplateElement) as Exports
import Web.HTML.HTMLTextAreaElement (HTMLTextAreaElement) as Exports
import Web.HTML.HTMLTimeElement (HTMLTimeElement) as Exports
import Web.HTML.HTMLTitleElement (HTMLTitleElement) as Exports
import Web.HTML.HTMLTrackElement (HTMLTrackElement) as Exports
import Web.HTML.HTMLUListElement (HTMLUListElement) as Exports
import Web.HTML.HTMLVideoElement (HTMLVideoElement) as Exports
import Web.HTML.Location (Location) as Exports
import Web.HTML.Navigator (Navigator) as Exports
import Web.HTML.Window (Window) as Exports

foreign import window :: Effect Window
15 changes: 15 additions & 0 deletions src/Web/HTML/Event/BeforeUnloadEvent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"use strict";

exports.returnValue = function (e) {
return function () {
return e.returnValue;
};
};

exports.setReturnValue = function (v) {
return function (e) {
return function () {
e.returnValue = v;
};
};
};
21 changes: 21 additions & 0 deletions src/Web/HTML/Event/BeforeUnloadEvent.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
module Web.HTML.Event.BeforeUnloadEvent where

import Prelude

import Data.Maybe (Maybe)
import Effect (Effect)
import Unsafe.Coerce (unsafeCoerce)
import Web.Event.Event (Event)
import Web.Internal.FFI (unsafeReadProtoTagged)

foreign import data BeforeUnloadEvent :: Type

fromEvent :: Event -> Maybe BeforeUnloadEvent
fromEvent = unsafeReadProtoTagged "BeforeUnloadEvent"

toEvent :: BeforeUnloadEvent -> Event
toEvent = unsafeCoerce

foreign import returnValue :: BeforeUnloadEvent -> Effect String

foreign import setReturnValue :: String -> BeforeUnloadEvent -> Effect Unit
6 changes: 6 additions & 0 deletions src/Web/HTML/Event/BeforeUnloadEvent/EventTypes.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module Web.HTML.Event.BeforeUnloadEvent.EventTypes where

import Web.Event.Event (EventType(..))

beforeunload :: EventType
beforeunload = EventType "beforeunload"
41 changes: 41 additions & 0 deletions src/Web/HTML/Event/DataTransfer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"use strict";

exports._files = function (dataTransfer) {
return dataTransfer.files;
};

exports.types = function (dataTransfer) {
return dataTransfer.types;
};

exports._getData = function (format) {
return function (dataTransfer) {
return function () {
return dataTransfer.getData(format);
};
};
};

exports._setData = function (format) {
return function (data) {
return function (dataTransfer) {
return function () {
return dataTransfer.setData(format, data);
};
};
};
};

exports._dropEffect = function (dataTransfer) {
return function () {
return dataTransfer.dropEffect;
};
};

exports._setDropEffect = function (e) {
return function (dataTransfer) {
return function () {
dataTransfer.dropEffect = e;
};
};
};
85 changes: 85 additions & 0 deletions src/Web/HTML/Event/DataTransfer.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
module Web.HTML.Event.DataTransfer
( DataTransfer
, files
, types
, getData
, setData
, DropEffect(..)
, dropEffect
, setDropEffect
) where

import Prelude

import Data.Maybe (Maybe)
import Data.MediaType (MediaType(..))
import Data.Nullable (Nullable, toMaybe)
import Effect (Effect)
import Web.File.FileList (FileList)

foreign import data DataTransfer :: Type

-- | Contains a list of all the local files available on the data transfer.
-- | Empty if the drag operation doesn't involve dragging files.
-- |
-- | It's possible that a drag operation may have null files, instead of an
-- | empty file list. In these cases Nothing is returned.
files :: DataTransfer -> Maybe FileList
files = toMaybe <$> _files

foreign import _files :: DataTransfer -> Nullable FileList

-- | Returns an array of data formats used in the drag operation.
-- | If the drag operation included no data, then the array is empty.
foreign import types :: DataTransfer -> Array String

foreign import _getData
:: String
-> DataTransfer
-> Effect String

-- | Retrieves the data for a given media type, or an empty string if data for
-- | that type does not exist or the data transfer object contains no data.
getData :: MediaType -> DataTransfer -> Effect String
getData (MediaType format) dt = _getData format dt

foreign import _setData
:: String
-> String
-> DataTransfer
-> Effect Unit

-- | Sets the data transfer object's data for a given media format.
setData
:: MediaType
-> String
-> DataTransfer
-> Effect Unit
setData (MediaType format) dat dt = _setData format dat dt

foreign import _dropEffect :: DataTransfer -> Effect String

data DropEffect = Copy | Link | Move | None

derive instance eqDropEffect :: Eq DropEffect
derive instance ordDropEffect :: Ord DropEffect

-- | Gets the data transfer object's drop effect.
dropEffect :: DataTransfer -> Effect DropEffect
dropEffect dt =
_dropEffect dt <#> case _ of
"copy" -> Copy
"link" -> Link
"move" -> Move
"none" -> None
_ -> None

foreign import _setDropEffect :: String -> DataTransfer -> Effect Unit

-- | Sets the data transfer object's drop effect.
setDropEffect :: DropEffect -> DataTransfer -> Effect Unit
setDropEffect de = _setDropEffect case de of
Copy -> "copy"
Link -> "link"
Move -> "move"
None -> "none"
5 changes: 5 additions & 0 deletions src/Web/HTML/Event/DragEvent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"use strict";

exports.dataTransfer = function (e) {
return e.dataTransfer;
};
17 changes: 17 additions & 0 deletions src/Web/HTML/Event/DragEvent.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module Web.HTML.Event.DragEvent where

import Data.Maybe (Maybe)
import Unsafe.Coerce (unsafeCoerce)
import Web.Event.Event (Event)
import Web.HTML.Event.DataTransfer (DataTransfer)
import Web.Internal.FFI (unsafeReadProtoTagged)

foreign import data DragEvent :: Type

fromEvent :: Event -> Maybe DragEvent
fromEvent = unsafeReadProtoTagged "DragEvent"

toEvent :: DragEvent -> Event
toEvent = unsafeCoerce

foreign import dataTransfer :: DragEvent -> DataTransfer
27 changes: 27 additions & 0 deletions src/Web/HTML/Event/DragEvent/EventTypes.purs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module Web.HTML.Event.DragEvent.EventTypes where

import Web.Event.Event (EventType(..))

dragstart :: EventType
dragstart = EventType "dragstart"

drag :: EventType
drag = EventType "drag"

dragenter :: EventType
dragenter = EventType "dragenter"

dragexit :: EventType
dragexit = EventType "dragexit"

dragleave :: EventType
dragleave = EventType "dragleave"

dragover :: EventType
dragover = EventType "dragover"

drop :: EventType
drop = EventType "drop"

dragend :: EventType
dragend = EventType "dragend"
17 changes: 17 additions & 0 deletions src/Web/HTML/Event/ErrorEvent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";

exports.message = function (e) {
return e.message;
};

exports.fileName = function (e) {
return e.filename;
};

exports.lineNo = function (e) {
return e.lineno;
};

exports.colNo = function (e) {
return e.colno;
};
Loading

0 comments on commit d6960bc

Please sign in to comment.