on master help sign in
convert WebSocket.js and Window.js to the new module format
commit86d02e22d5567521f2d49860835b3766dc343dbb authorevancz <info@elm-lang.org> dateFri 8 Mar 2013, 23:12 (14 years ago) parentccf9917
2 files changed+41−36
libraries/Native/Signal/WebSocket.js+16−17 libraries/Native/Signal/Window.js+25−19
libraries/Native/Signal/WebSocket.js+16−17
@@ -1,17 +1,17 @@
1−/*
2−import Signal
3−import JavaScript
4−import List
5−*/
61
7−(function() {
2+Elm.Native.WebSocket = function(elm) {
83 'use strict';
94
10− var JS = Elm.JavaScript;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.WebSocket) return elm.Native.WebSocket;
117
12− function open(url) { return function(outgoing) {
13− var incoming = Elm.Signal.constant(Elm.Native.List.Nil);
14− var ws = new window.WebSocket(JS.castStringToJSString(url));
8+ var Signal = Elm.Signal(elm);
9+ var JS = Elm.JavaScript(elm);
10+ var List = Elm.Native.List(elm);
11+
12+ function open(url, outgoing) {
13+ var incoming = Signal.constant(List.Nil);
14+ var ws = new WebSocket(JS.fromString(url));
1515
1616 var pending = [];
1717 var ready = false;
@@ -22,18 +22,17 @@ import List
2222 ready = true;
2323 };
2424 ws.onmessage = function(event) {
25− Dispatcher.notify(incoming.id, JS.castJSStringToString(event.data));
25+ elm.notify(incoming.id, JS.toString(event.data));
2626 };
2727
2828 function send(msg) {
29− var s = JS.castStringToJSString(msg);
29+ var s = JS.fromString(msg);
3030 ready ? ws.send(s) : pending.push(s);
3131 }
3232
33− function take1(x) { return function(y) { return x; } }
34− return Elm.Signal.lift2(take1)(incoming)(Elm.Signal.lift(send)(outgoing));
35− };
33+ function take1(x,y) { return x }
34+ return A3(Signal.lift2, F2(take1), incoming, A2(Signal.lift, send, outgoing));
3635 }
3736
38− Elm.Native.WebSocket = {open:open};
39−}());
37+ return elm.Native.WebSocket = { open: F2(open) };
38+};
libraries/Native/Signal/Window.js+25−19
@@ -1,29 +1,35 @@
1−/*
2−import Signal
3−import Native.Misc
4−*/
51
6−(function() {
2+Elm.Native.Window = function(elm) {
73 'use strict';
84
9− var Misc = Elm.Native.Misc;
5+ elm.Native = elm.Native || {};
6+ if (elm.Native.Window) return elm.Native.Window;
107
11− var dimensions = Elm.Signal.constant(Misc.Tuple(window.innerWidth,
12− window.innerHeight));
8+ var Signal = Elm.Signal(elm);
9+ var Misc = Elm.Native.Misc(elm);
10+
11+ var dimensions = Signal.constant(Misc.Tuple2(window.innerWidth,window.innerHeight));
1312 dimensions.defaultNumberOfKids = 2;
1413
15− var width = Elm.Signal.lift(function(p){return p._0;})(dimensions);
14+ var width = A2(Signal.lift, function(p){return p._0}, dimensions);
1615 width.defaultNumberOfKids = 0;
1716
18− var height = Elm.Signal.lift(function(p){return p._1;})(dimensions);
17+ var height = A2(Signal.lift, function(p){return p._1}, dimensions);
1918 height.defaultNumberOfKids = 0;
2019
21− Misc.addListener(window, 'resize', function(e) {
22− var w = document.getElementById('widthChecker').offsetWidth;
23− var hasListener = Dispatcher.notify(dimensions.id,
24− Misc.Tuple(w, window.innerHeight));
25− if (!hasListener)
26− this.removeEventListener('resize',arguments.callee,false);
27− });
28− Elm.Native.Window = {dimensions:dimensions,width:width,height:height};
29−}());
20+ function resize(e) {
21+ var w = elm.node.getElementById('widthChecker').offsetWidth;
22+ var hasListener = elm.notify(dimensions.id,
23+ Misc.Tuple2(w, window.innerHeight));
24+ if (!hasListener)
25+ this.removeEventListener('resize',arguments.callee,false);
26+ }
27+ Misc.addListener(window, 'resize', resize);
28+
29+ return elm.Native.Window = {
30+ dimensions:dimensions,
31+ width:width,
32+ height:height
33+ };
34+
35+};