bucklescript-tea
Version:
TEA for Bucklescript
135 lines (122 loc) • 3.64 kB
JavaScript
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE
;
var List = require("bs-platform/lib/js/list.js");
var Vdom = require("../src-ocaml/vdom.js");
var Block = require("bs-platform/lib/js/block.js");
var Tea_app = require("../src-ocaml/tea_app.js");
var Tea_html = require("../src-ocaml/tea_html.js");
var Caml_option = require("bs-platform/lib/js/caml_option.js");
function select(param_0) {
return /* Select */[param_0];
}
function render_selected(param) {
if (param !== undefined) {
return Tea_html.div(undefined, undefined, /* [] */0, /* :: */[
/* Text */Block.__(1, ["you selected " + param]),
/* :: */[
Tea_html.div(undefined, undefined, /* :: */[
Vdom.onMsg("click", /* Delete */0),
/* [] */0
], /* :: */[
/* Text */Block.__(1, ["delete selection"]),
/* [] */0
]),
/* [] */0
]
]);
} else {
return Tea_html.div(undefined, undefined, /* [] */0, /* :: */[
/* Text */Block.__(1, ["Nothing selected"]),
/* [] */0
]);
}
}
function lang(l, is_selected) {
var msg = /* Select */[l];
return Tea_html.li(undefined, undefined, /* :: */[
Vdom.onMsg("click", msg),
/* :: */[
Vdom.style("color", "blue"),
/* :: */[
is_selected ? Vdom.style("border", "1px solid black") : Tea_html.noProp,
/* :: */[
is_selected ? /* Attribute */Block.__(1, [
"",
"lang",
l
]) : Tea_html.noProp,
/* [] */0
]
]
]
], /* :: */[
/* Text */Block.__(1, [l]),
/* [] */0
]);
}
function render_languages(selected, languages) {
var is_selected = function (selected, language) {
if (selected !== undefined) {
return language === Caml_option.valFromOption(selected);
} else {
return false;
}
};
var rendered = List.map((function (l) {
return lang(l, is_selected(selected, l));
}), languages);
return Tea_html.ul(undefined, undefined, /* [] */0, rendered);
}
function update(state, param) {
if (param) {
return {
selected: param[0],
languages: state.languages
};
} else {
return {
selected: undefined,
languages: state.languages
};
}
}
function view(state) {
return Tea_html.div(undefined, undefined, /* [] */0, /* :: */[
render_selected(state.selected),
/* :: */[
render_languages(state.selected, state.languages),
/* [] */0
]
]);
}
var partial_arg_model = {
selected: "Erlang",
languages: /* :: */[
"Erlang",
/* :: */[
"Ocaml",
/* :: */[
"Clojure",
/* [] */0
]
]
]
};
var partial_arg = {
model: partial_arg_model,
update: update,
view: view
};
function main(param, param$1) {
return Tea_app.beginnerProgram(partial_arg, param, param$1);
}
var $$delete = /* Delete */0;
exports.select = select;
exports.$$delete = $$delete;
exports.render_selected = render_selected;
exports.lang = lang;
exports.render_languages = render_languages;
exports.update = update;
exports.view = view;
exports.main = main;
/* Tea_html Not a pure module */