on master help sign in
convert WebSocket.js and Window.js to the new module format
86d02e2evancz
libraries/Native/Signal/WebSocket.js+16−17
@@ -1,17 +1,17 @@
1−/*
2−import Signal
3−import JavaScript
4−import List
5−*/
6
1
7−(function() {
2+Elm.Native.WebSocket = function(elm) {
8 'use strict';
3 'use strict';
9
4
10− var JS = Elm.JavaScript;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.WebSocket) return elm.Native.WebSocket;
11
7
8+ var Signal = Elm.Signal(elm);
9+ var JS = Elm.JavaScript(elm);
10+ var List = Elm.Native.List(elm);
11+
12− function open(url) { return function(outgoing) {
12+ function open(url, outgoing) {
13− var incoming = Elm.Signal.constant(Elm.Native.List.Nil);
13+ var incoming = Signal.constant(List.Nil);
14− var ws = new window.WebSocket(JS.castStringToJSString(url));
14+ var ws = new WebSocket(JS.fromString(url));
15
15
16 var pending = [];
16 var pending = [];
17 var ready = false;
17 var ready = false;
@@ -22,18 +22,17 @@ import List
22 ready = true;
22 ready = true;
23 };
23 };
24 ws.onmessage = function(event) {
24 ws.onmessage = function(event) {
25− Dispatcher.notify(incoming.id, JS.castJSStringToString(event.data));
25+ elm.notify(incoming.id, JS.toString(event.data));
26 };
26 };
27
27
28 function send(msg) {
28 function send(msg) {
29− var s = JS.castStringToJSString(msg);
29+ var s = JS.fromString(msg);
30 ready ? ws.send(s) : pending.push(s);
30 ready ? ws.send(s) : pending.push(s);
31 }
31 }
32
32
33− function take1(x) { return function(y) { return x; } }
33+ function take1(x,y) { return x }
34− return Elm.Signal.lift2(take1)(incoming)(Elm.Signal.lift(send)(outgoing));
34+ return A3(Signal.lift2, F2(take1), incoming, A2(Signal.lift, send, outgoing));
35− };
36 }
35 }
37
36
38− Elm.Native.WebSocket = {open:open};
37+ return elm.Native.WebSocket = { open: F2(open) };
39−}());
38+};
libraries/Native/Signal/Window.js+25−19
@@ -1,29 +1,35 @@
1−/*
2−import Signal
3−import Native.Misc
4−*/
5
1
6−(function() {
2+Elm.Native.Window = function(elm) {
7 'use strict';
3 'use strict';
8
4
9− var Misc = Elm.Native.Misc;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.Window) return elm.Native.Window;
10
7
8+ var Signal = Elm.Signal(elm);
9+ var Misc = Elm.Native.Misc(elm);
10+
11− var dimensions = Elm.Signal.constant(Misc.Tuple(window.innerWidth,
11+ var dimensions = Signal.constant(Misc.Tuple2(window.innerWidth,window.innerHeight));
12− window.innerHeight));
13 dimensions.defaultNumberOfKids = 2;
12 dimensions.defaultNumberOfKids = 2;
14
13
15− var width = Elm.Signal.lift(function(p){return p._0;})(dimensions);
14+ var width = A2(Signal.lift, function(p){return p._0}, dimensions);
16 width.defaultNumberOfKids = 0;
15 width.defaultNumberOfKids = 0;
17
16
18− var height = Elm.Signal.lift(function(p){return p._1;})(dimensions);
17+ var height = A2(Signal.lift, function(p){return p._1}, dimensions);
19 height.defaultNumberOfKids = 0;
18 height.defaultNumberOfKids = 0;
20
19
21− Misc.addListener(window, 'resize', function(e) {
20+ function resize(e) {
22− var w = document.getElementById('widthChecker').offsetWidth;
21+ var w = elm.node.getElementById('widthChecker').offsetWidth;
23− var hasListener = Dispatcher.notify(dimensions.id,
22+ var hasListener = elm.notify(dimensions.id,
24− Misc.Tuple(w, window.innerHeight));
23+ Misc.Tuple2(w, window.innerHeight));
25− if (!hasListener)
24+ if (!hasListener)
26− this.removeEventListener('resize',arguments.callee,false);
25+ this.removeEventListener('resize',arguments.callee,false);
27− });
26+ }
27+ Misc.addListener(window, 'resize', resize);
28+
29+ return elm.Native.Window = {
28− Elm.Native.Window = {dimensions:dimensions,width:width,height:height};
30+ dimensions:dimensions,
31+ width:width,
32+ height:height
33+ };
34+
29−}());
35+};