bucklescript-tea
Version:
TEA for Bucklescript
72 lines (63 loc) • 2.17 kB
JavaScript
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
;
var Vdom = require("./vdom.js");
var Block = require("bs-platform/lib/js/block.js");
var Curry = require("bs-platform/lib/js/curry.js");
var Tea_sub = require("./tea_sub.js");
var Tea_json = require("./tea_json.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
var position = Tea_json.Decoder.map2((function (x, y) {
return {
x: x,
y: y
};
}), Tea_json.Decoder.field("pageX", Tea_json.Decoder.$$int), Tea_json.Decoder.field("pageY", Tea_json.Decoder.$$int));
function registerGlobal(name, key, tagger) {
var enableCall = function (callbacks_base) {
var callbacks = {
contents: callbacks_base
};
var fn = function (ev) {
var match = Tea_json.Decoder.decodeEvent(position, ev);
if (match.tag) {
return ;
} else {
return Caml_option.some(Curry._1(tagger, match[0]));
}
};
var handler = /* EventHandlerCallback */Block.__(0, [
key,
fn
]);
var elem = document;
var cache = Vdom.eventHandler_Register(callbacks, elem, name, handler);
return (function (param) {
Vdom.eventHandler_Unregister(elem, name, cache);
return /* () */0;
});
};
return Tea_sub.registration(key, enableCall);
}
function clicks($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return registerGlobal("click", key, tagger);
}
function moves($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return registerGlobal("mousemove", key, tagger);
}
function downs($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return registerGlobal("mousedown", key, tagger);
}
function ups($staropt$star, tagger) {
var key = $staropt$star !== undefined ? $staropt$star : "";
return registerGlobal("mouseup", key, tagger);
}
exports.position = position;
exports.registerGlobal = registerGlobal;
exports.clicks = clicks;
exports.moves = moves;
exports.downs = downs;
exports.ups = ups;
/* position Not a pure module */