2Elm.Native.Time = function(elm) {
5 var Signal = Elm.Signal(elm);
6 var Maybe = Elm.Maybe(elm);
8 function fpsWhen(desiredFPS, isOn) {
9 var msPerFrame = 1000 / desiredFPS;
10 var prev = Date.now(), curr = prev, diff = 0, wasOn = true;
11 var ticker = Signal.constant(diff);
12 function tick(zero) { return function() {
14 diff = zero ? 0 : curr - prev;
16 elm.notify(ticker.id, diff);
22 timeoutID = setTimeout(tick(!wasOn && isOn), msPerFrame);
24 clearTimeout(timeoutID);
29 return A3( Signal.lift2, F2(f), isOn, ticker );
32 function everyWhen(t, isOn) {
33 var clock = Signal.constant(Date.now());
34 function tellTime() { elm.notify(clock.id, Date.now()); }
35 setInterval(tellTime, t);
39 function since(t, s) {
40 function cmp(a,b) { return !Value.eq(a,b) }
41 var dcount = Signal.count(Signal.delay(t)(s));
42 return A3( Signal.lift2, F2(cmp), Signal.count(s), dcount );
46 var thread = Signal.constant(false);
47 setTimeout(function() { elm.notify(thread.id, true); }, t);
52 var thread = Signal.constant(true);
53 setTimeout(function() { elm.notify(thread.id, false); }, t);
57 var t = Date.parse(s);
58 return isNaN(t) ? Maybe.Nothing : Maybe.Just(t);
60 return elm.Native.Time = {
61 fpsWhen : F2(fpsWhen),
62 fps : function(t) { return fpsWhen(t, Signal.constant(true)); },
63 every : function(t) { return everyWhen(t, Signal.constant(true)) },
68 toDate : function(t) { return new window.Date(t); },
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list