@@ -28,6 +28,10 @@ Elm.Native.Touch = function(elm) {
28 this.values.splice(i,1);
28 this.values.splice(i,1);
31+ this.clear = function() {
33 var root = Signal.constant([]),
37 var root = Signal.constant([]),
@@ -48,6 +52,8 @@ Elm.Native.Touch = function(elm) {
55+ var node = elm.node === document.body ? document : elm.node;
51 function start(e) {
57 function start(e) {
52 dict.insert(e.identifier,{x:e.pageX,y:e.pageY,t:Date.now()});
58 dict.insert(e.identifier,{x:e.pageX,y:e.pageY,t:Date.now()});
@@ -65,10 +71,10 @@ Elm.Native.Touch = function(elm) {
65 var ts = new Array(e.touches.length);
71 var ts = new Array(e.touches.length);
66 for (var i = e.touches.length; i--; ) { ts[i] = touch(e.touches[i]); }
72 for (var i = e.touches.length; i--; ) { ts[i] = touch(e.touches[i]); }
67 var hasListener = elm.notify(root.id, ts);
73 var hasListener = elm.notify(root.id, ts);
68− if (!hasListener) return elm.node.removeEventListener(name, update);
74+ if (!hasListener) return node.removeEventListener(name, update);
69 e.preventDefault();
75 e.preventDefault();
71− elm.node.addEventListener(name, update);
77+ node.addEventListener(name, update);
74 listen("touchstart", start);
80 listen("touchstart", start);
@@ -77,6 +83,40 @@ Elm.Native.Touch = function(elm) {
77 listen("touchcancel", end);
83 listen("touchcancel", end);
78 listen("touchleave", end);
84 listen("touchleave", end);
87+ for (var i = root.value.length; i--; ) {
88+ if (root.value[i].id === 0) {
89+ root.value[i].x = e.pageX;
90+ root.value[i].y = e.pageY;
91+ elm.notify(root.id, root.value);
96+ node.addEventListener("mousedown", function(e) {
97+ node.addEventListener("mousemove", move);
99+ root.value.push(touch(e));
101+ elm.notify(root.id, root.value);
103+ node.addEventListener("mouseup", function(e) {
104+ node.removeEventListener("mousemove", move);
107+ for (var i = root.value.length; i--; ) {
108+ if (root.value[i].id === 0) {
109+ root.value.splice(i, 1);
113+ elm.notify(root.id, root.value);
115+ node.addEventListener("blur", function() {
116+ node.removeEventListener("mousemove", move);
80 function dependency(f) {
120 function dependency(f) {
81 var sig = A2( Signal.lift, f, root );
121 var sig = A2( Signal.lift, f, root );
82 root.defaultNumberOfKids += 1;
122 root.defaultNumberOfKids += 1;
@@ -84,7 +124,7 @@ Elm.Native.Touch = function(elm) {
84 return sig;
124 return sig;
87− var touches = dependency(JS.fromList);
127+ var touches = dependency(JS.toList);
89 var taps = function() {
129 var taps = function() {
90 var sig = dependency(function(_) { return tap; });
130 var sig = dependency(function(_) { return tap; });