bucklescript-tea
Version:
TEA for Bucklescript
71 lines (65 loc) • 1.99 kB
JavaScript
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
;
var Curry = require("bs-platform/lib/js/curry.js");
var Tea_sub = require("./tea_sub.js");
function every($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
var enableCall = function (callbacks) {
var lastTime = {
contents: Date.now()
};
var id = {
contents: undefined
};
var onFrame = function (_time) {
var time = Date.now();
var match = id.contents;
if (match !== undefined) {
var ret_delta = time < lastTime.contents ? 0.0 : time - lastTime.contents;
var ret = {
time: time,
delta: ret_delta
};
lastTime.contents = time;
Curry._1(callbacks.enqueue, Curry._1(tagger, ret));
var match$1 = id.contents;
if (match$1 !== undefined) {
id.contents = window.requestAnimationFrame(onFrame);
return /* () */0;
} else {
return /* () */0;
}
} else {
return /* () */0;
}
};
id.contents = window.requestAnimationFrame(onFrame);
return (function (param) {
var match = id.contents;
if (match !== undefined) {
window.cancelAnimationFrame(match);
id.contents = undefined;
return /* () */0;
} else {
return /* () */0;
}
});
};
return Tea_sub.registration(key, enableCall);
}
function times($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return every(undefined, (function (ev) {
return Curry._2(tagger, key, ev.time);
}));
}
function diffs($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return every(undefined, (function (ev) {
return Curry._2(tagger, key, ev.delta);
}));
}
exports.every = every;
exports.times = times;
exports.diffs = diffs;
/* No side effect */