on master help sign in
Ensure that standard JS objects `Date` and `JSON` do not get shadowed by the Elm libraries of the same name.
2c7fed1evancz
core-js/Date.js+1−1
@@ -2,7 +2,7 @@
2Elm.Date = function() {
2Elm.Date = function() {
3
3
4 function readDate(str) {
4 function readDate(str) {
5− var d = new Date(Elm.JavaScript.castStringToJSString(str));
5+ var d = new window.Date(Elm.JavaScript.castStringToJSString(str));
6 if (isNaN(d.getTime())) return ["Nothing"];
6 if (isNaN(d.getTime())) return ["Nothing"];
7 return ["Just",d];
7 return ["Just",d];
8 }
8 }
core-js/Signal/Time.js+14−5
@@ -1,10 +1,18 @@
1Elm.Time = function() {
1Elm.Time = function() {
2+ function timeNow() { return (new window.Date).getTime(); }
2 var now = function(t) {
3 var now = function(t) {
3− var clock = Elm.Signal.constant((new Date()).getTime());
4+ var clock = Elm.Signal.constant(timeNow());
4− function tellTime() { Dispatcher.notify(clock.id, (new Date()).getTime()); }
5+ function tellTime() { Dispatcher.notify(clock.id, timeNow()); }
5 setInterval(tellTime, t);
6 setInterval(tellTime, t);
6 return clock;
7 return clock;
7 };
8 };
9+ function fps(desiredFPS) {
10+ var msPerFrame = 1000 / desiredFPS;
11+ var ticker = Elm.Signal.constant(timeNow());
12+ function tick() { Dispatcher.notify(ticker.id, timeNow()); }
13+ function f(t) { setTimeout(tick, msPerFrame); return t; }
14+ return Elm.Signal.lift(f)(ticker);
15+ }
8 var every = function(t) {
16 var every = function(t) {
9 t *= 1000;
17 t *= 1000;
10 var clock = Elm.Signal.constant(0);
18 var clock = Elm.Signal.constant(0);
@@ -28,10 +36,11 @@ Elm.Time = function() {
28 return thread;
36 return thread;
29 };
37 };
30 function read(s) {
38 function read(s) {
31− var t = Date.parse(s);
39+ var t = window.Date.parse(s);
32− return isNaN(t) ? Nothing : Just(s);
40+ return isNaN(t) ? ["Nothing"] : ["Just",t];
33 }
41 }
34 return {now:now,
42 return {now:now,
43+ fps:fps,
35 every:every,
44 every:every,
36 after:after,
45 after:after,
37 before:before,
46 before:before,
@@ -43,7 +52,7 @@ Elm.Time = function() {
43 inMinutes : function(t) { return ~~(t / 60000); },
52 inMinutes : function(t) { return ~~(t / 60000); },
44 inSeconds : function(t) { return ~~(t / 1000); },
53 inSeconds : function(t) { return ~~(t / 1000); },
45 inMillis : function(t) { return t; },
54 inMillis : function(t) { return t; },
46− toDate : function(t) { return new Date(t); },
55+ toDate : function(t) { return new window.Date(t); },
47 read : read
56 read : read
48 };
57 };
49
58