Files
komp-todo/web/js/kotlin/komp-todo.js
2017-04-29 13:28:46 +02:00

399 lines
16 KiB
JavaScript

if (typeof kotlin === 'undefined') {
throw new Error("Error loading module 'komp-todo'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'komp-todo'.");
}
if (typeof komp === 'undefined') {
throw new Error("Error loading module 'komp-todo'. Its dependency 'komp' was not found. Please, check whether 'komp' is loaded prior to 'komp-todo'.");
}
if (typeof this['kotlinx-html-js'] === 'undefined') {
throw new Error("Error loading module 'komp-todo'. Its dependency 'kotlinx-html-js' was not found. Please, check whether 'kotlinx-html-js' is loaded prior to 'komp-todo'.");
}
this['komp-todo'] = function (_, Kotlin, $module$komp, $module$kotlinx_html_js) {
'use strict';
var Enum = Kotlin.kotlin.Enum;
var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_mqih57$;
var HtmlComponent = $module$komp.nl.astraeus.komp.HtmlComponent;
var h1 = $module$kotlinx_html_js.kotlinx.html.h1_vmej1w$;
var set_id = $module$kotlinx_html_js.kotlinx.html.set_id_ueiko3$;
var set_onKeyPressFunction = $module$kotlinx_html_js.kotlinx.html.js.set_onKeyPressFunction_pszlq2$;
var input = $module$kotlinx_html_js.kotlinx.html.input_e1g74z$;
var header = $module$kotlinx_html_js.kotlinx.html.header_8btlf7$;
var InputType = $module$kotlinx_html_js.kotlinx.html.InputType;
var label = $module$kotlinx_html_js.kotlinx.html.label_yd75js$;
var get_classes = $module$kotlinx_html_js.kotlinx.html.get_classes_fxodxh$;
var plus = Kotlin.kotlin.collections.plus_xfiyik$;
var set_classes = $module$kotlinx_html_js.kotlinx.html.set_classes_njy09m$;
var set_onClickFunction = $module$kotlinx_html_js.kotlinx.html.js.set_onClickFunction_pszlq2$;
var set_onDoubleClickFunction = $module$kotlinx_html_js.kotlinx.html.js.set_onDoubleClickFunction_pszlq2$;
var button = $module$kotlinx_html_js.kotlinx.html.button_whohl6$;
var div = $module$kotlinx_html_js.kotlinx.html.div_ri36nr$;
var li = $module$kotlinx_html_js.kotlinx.html.li_yzv5uh$;
var ul = $module$kotlinx_html_js.kotlinx.html.ul_pzlyaf$;
var section = $module$kotlinx_html_js.kotlinx.html.section_ac1jhf$;
var strong = $module$kotlinx_html_js.kotlinx.html.strong_okpg28$;
var span = $module$kotlinx_html_js.kotlinx.html.span_6djfml$;
var a = $module$kotlinx_html_js.kotlinx.html.a_gu26kr$;
var footer = $module$kotlinx_html_js.kotlinx.html.footer_780ap1$;
var section_0 = $module$kotlinx_html_js.kotlinx.html.js.section_ceckl$;
var ArrayList_init_0 = Kotlin.kotlin.collections.ArrayList_init_ww73n8$;
var komp_0 = $module$komp.nl.astraeus.komp;
Selection.prototype = Object.create(Enum.prototype);
Selection.prototype.constructor = Selection;
TodoApp.prototype = Object.create(HtmlComponent.prototype);
TodoApp.prototype.constructor = TodoApp;
function Todo(dataId, title, completed, editing) {
if (completed === void 0)
completed = false;
if (editing === void 0)
editing = false;
this.dataId = dataId;
this.title = title;
this.completed = completed;
this.editing = editing;
}
Todo.$metadata$ = {
kind: Kotlin.Kind.CLASS,
simpleName: 'Todo',
interfaces: []
};
function Selection(name, ordinal, title) {
Enum.call(this);
this.title = title;
this.name$ = name;
this.ordinal$ = ordinal;
}
function Selection_initFields() {
Selection_initFields = function () {
};
Selection$ALL_instance = new Selection('ALL', 0, 'All');
Selection$ACTIVE_instance = new Selection('ACTIVE', 1, 'Active');
Selection$COMPLETED_instance = new Selection('COMPLETED', 2, 'Completed');
}
var Selection$ALL_instance;
function Selection$ALL_getInstance() {
Selection_initFields();
return Selection$ALL_instance;
}
var Selection$ACTIVE_instance;
function Selection$ACTIVE_getInstance() {
Selection_initFields();
return Selection$ACTIVE_instance;
}
var Selection$COMPLETED_instance;
function Selection$COMPLETED_getInstance() {
Selection_initFields();
return Selection$COMPLETED_instance;
}
Selection.$metadata$ = {
kind: Kotlin.Kind.CLASS,
simpleName: 'Selection',
interfaces: [Enum]
};
function Selection$values() {
return [Selection$ALL_getInstance(), Selection$ACTIVE_getInstance(), Selection$COMPLETED_getInstance()];
}
Selection.values = Selection$values;
function Selection$valueOf(name) {
switch (name) {
case 'ALL':
return Selection$ALL_getInstance();
case 'ACTIVE':
return Selection$ACTIVE_getInstance();
case 'COMPLETED':
return Selection$COMPLETED_getInstance();
default:Kotlin.throwISE('No enum constant nl.astraeus.komp.todo.Selection.' + name);
}
}
Selection.valueOf_61zpoe$ = Selection$valueOf;
function TodoApp() {
HtmlComponent.call(this);
this.todoList = ArrayList_init_0();
this.selected = Selection$ALL_getInstance();
}
TodoApp.prototype.addTodo_9ojx7i$ = function (e) {
var target = e.target;
if (Kotlin.isType(target, HTMLInputElement)) {
this.todoList.add_11rb$(new Todo((new Date()).getTime().toString(), target.value));
this.refresh();
}
};
TodoApp.prototype.editTodo_y98rgd$ = function (e, todo) {
var target = e.target;
if (Kotlin.isType(target, HTMLInputElement)) {
todo.title = target.value;
todo.editing = false;
this.refresh();
}
};
TodoApp.prototype.destroyTodo_bcvlxp$ = function (todo) {
this.todoList.remove_11rb$(todo);
this.refresh();
};
TodoApp.prototype.selectSelection_uh5ef5$ = function (selection) {
this.selected = selection;
this.refresh();
};
TodoApp.prototype.clearCompleted = function () {
var tmp$;
tmp$ = ArrayList_init(this.todoList).iterator();
while (tmp$.hasNext()) {
var todo = tmp$.next();
if (todo.completed) {
this.todoList.remove_11rb$(todo);
}
}
this.refresh();
};
TodoApp.prototype.todoClicked_bcvlxp$ = function (todo) {
todo.completed = !todo.completed;
this.refresh();
};
TodoApp.prototype.getItemsLeft = function () {
var tmp$;
var result = 0;
tmp$ = this.todoList.iterator();
while (tmp$.hasNext()) {
var todo = tmp$.next();
if (!todo.completed) {
result = result + 1 | 0;
}
}
return result;
};
TodoApp.prototype.setEditing_bcvlxp$ = function (editTodo) {
var tmp$;
tmp$ = this.todoList.iterator();
while (tmp$.hasNext()) {
var todo = tmp$.next();
todo.editing = Kotlin.equals(todo, editTodo);
}
this.refresh();
};
TodoApp.prototype.refresh = function () {
HtmlComponent.prototype.refresh.call(this);
var inputBox = document.getElementById('todo_input');
if (Kotlin.isType(inputBox, HTMLInputElement)) {
inputBox.focus();
}
};
function TodoApp$render$lambda$lambda$lambda($receiver) {
$receiver.unaryPlus_pdl1vz$('todos');
}
function TodoApp$render$lambda$lambda$lambda$lambda(this$TodoApp) {
return function (e) {
if (Kotlin.isType(e, KeyboardEvent) && e.keyCode === 13) {
this$TodoApp.addTodo_9ojx7i$(e);
}
};
}
function TodoApp$render$lambda$lambda$lambda_0(this$TodoApp) {
return function ($receiver) {
set_id($receiver, 'todo_input');
$receiver.placeholder = 'What needs to be done?';
$receiver.autoFocus = true;
set_onKeyPressFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda(this$TodoApp));
};
}
function TodoApp$render$lambda$lambda(this$TodoApp) {
return function ($receiver) {
h1($receiver, void 0, TodoApp$render$lambda$lambda$lambda);
input($receiver, void 0, void 0, void 0, void 0, 'new-todo', TodoApp$render$lambda$lambda$lambda_0(this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda_1($receiver) {
$receiver.type = InputType.checkBox;
}
function TodoApp$render$lambda$lambda$lambda_2($receiver) {
$receiver.for_ = 'toggle-all';
$receiver.unaryPlus_pdl1vz$('Mark all as complete');
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp) {
return function (e) {
if (Kotlin.isType(e, KeyboardEvent) && e.keyCode === 13) {
this$TodoApp.editTodo_y98rgd$(e, closure$todo);
}
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp) {
return function ($receiver) {
$receiver.value = closure$todo.title;
set_onKeyPressFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp) {
return function (it) {
this$TodoApp.todoClicked_bcvlxp$(closure$todo);
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp) {
return function ($receiver) {
$receiver.type = InputType.checkBox;
$receiver.checked = closure$todo.completed;
set_onClickFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp) {
return function (it) {
this$TodoApp.setEditing_bcvlxp$(closure$todo);
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_1(closure$todo, this$TodoApp) {
return function ($receiver) {
$receiver.unaryPlus_pdl1vz$(closure$todo.title);
set_onDoubleClickFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda_1(closure$todo, this$TodoApp) {
return function (it) {
this$TodoApp.destroyTodo_bcvlxp$(closure$todo);
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_2(closure$todo, this$TodoApp) {
return function ($receiver) {
set_onClickFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda$lambda_1(closure$todo, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp) {
return function ($receiver) {
input($receiver, void 0, void 0, void 0, void 0, 'toggle', TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp));
label($receiver, 'todo-content', TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_1(closure$todo, this$TodoApp));
button($receiver, void 0, void 0, void 0, 'destroy', TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_2(closure$todo, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp) {
return function ($receiver) {
if (closure$todo.editing) {
set_classes($receiver, plus(get_classes($receiver), 'editing'));
input($receiver, void 0, void 0, void 0, void 0, 'edit', TodoApp$render$lambda$lambda$lambda$lambda$lambda(closure$todo, this$TodoApp));
}
else {
if (closure$todo.completed) {
set_classes($receiver, plus(get_classes($receiver), 'completed'));
}
var $receiver_0 = $receiver.attributes;
var value = closure$todo.dataId;
$receiver_0.put_xwzc9p$('data-id', value);
div($receiver, 'view', TodoApp$render$lambda$lambda$lambda$lambda$lambda_0(closure$todo, this$TodoApp));
}
};
}
function TodoApp$render$lambda$lambda$lambda_3(this$TodoApp) {
return function ($receiver) {
var tmp$;
tmp$ = this$TodoApp.todoList.iterator();
while (tmp$.hasNext()) {
var todo = tmp$.next();
if (this$TodoApp.selected === Selection$ALL_getInstance() || (todo.completed && this$TodoApp.selected === Selection$COMPLETED_getInstance()) || (!todo.completed && this$TodoApp.selected === Selection$ACTIVE_getInstance())) {
li($receiver, void 0, TodoApp$render$lambda$lambda$lambda$lambda_0(todo, this$TodoApp));
}
}
};
}
function TodoApp$render$lambda$lambda_0(this$TodoApp) {
return function ($receiver) {
input($receiver, void 0, void 0, void 0, void 0, 'toggle-all', TodoApp$render$lambda$lambda$lambda_1);
label($receiver, void 0, TodoApp$render$lambda$lambda$lambda_2);
ul($receiver, 'todo-list', TodoApp$render$lambda$lambda$lambda_3(this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda_1(this$TodoApp) {
return function ($receiver) {
$receiver.unaryPlus_pdl1vz$(this$TodoApp.getItemsLeft().toString());
};
}
function TodoApp$render$lambda$lambda$lambda_4(this$TodoApp) {
return function ($receiver) {
strong($receiver, void 0, TodoApp$render$lambda$lambda$lambda$lambda_1(this$TodoApp));
$receiver.unaryPlus_pdl1vz$(' item left');
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_3(closure$selection, this$TodoApp) {
return function (it) {
this$TodoApp.selectSelection_uh5ef5$(closure$selection);
};
}
function TodoApp$render$lambda$lambda$lambda$lambda$lambda_1(closure$selection, this$TodoApp) {
return function ($receiver) {
if (closure$selection === this$TodoApp.selected) {
set_classes($receiver, plus(get_classes($receiver), 'selected'));
}
$receiver.href = '#';
$receiver.unaryPlus_pdl1vz$(closure$selection.title);
set_onClickFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda$lambda$lambda_3(closure$selection, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda$lambda_2(closure$selection, this$TodoApp) {
return function ($receiver) {
a($receiver, void 0, void 0, void 0, TodoApp$render$lambda$lambda$lambda$lambda$lambda_1(closure$selection, this$TodoApp));
};
}
function TodoApp$render$lambda$lambda$lambda_5(this$TodoApp) {
return function ($receiver) {
var tmp$, tmp$_0;
tmp$ = Selection$values();
for (tmp$_0 = 0; tmp$_0 !== tmp$.length; ++tmp$_0) {
var selection = tmp$[tmp$_0];
li($receiver, void 0, TodoApp$render$lambda$lambda$lambda$lambda_2(selection, this$TodoApp));
}
};
}
function TodoApp$render$lambda$lambda$lambda$lambda_3(this$TodoApp) {
return function (it) {
this$TodoApp.clearCompleted();
};
}
function TodoApp$render$lambda$lambda$lambda_6(this$TodoApp) {
return function ($receiver) {
$receiver.unaryPlus_pdl1vz$('Clear completed');
set_onClickFunction($receiver, TodoApp$render$lambda$lambda$lambda$lambda_3(this$TodoApp));
};
}
function TodoApp$render$lambda$lambda_1(this$TodoApp) {
return function ($receiver) {
span($receiver, 'todo-count', TodoApp$render$lambda$lambda$lambda_4(this$TodoApp));
ul($receiver, 'filters', TodoApp$render$lambda$lambda$lambda_5(this$TodoApp));
button($receiver, void 0, void 0, void 0, 'clear-completed', TodoApp$render$lambda$lambda$lambda_6(this$TodoApp));
};
}
function TodoApp$render$lambda(this$TodoApp) {
return function ($receiver) {
header($receiver, 'header', TodoApp$render$lambda$lambda(this$TodoApp));
section($receiver, 'main', TodoApp$render$lambda$lambda_0(this$TodoApp));
footer($receiver, 'footer', TodoApp$render$lambda$lambda_1(this$TodoApp));
};
}
TodoApp.prototype.render_q0cphf$ = function (consumer) {
return section_0(consumer, 'todoapp', TodoApp$render$lambda(this));
};
TodoApp.$metadata$ = {
kind: Kotlin.Kind.CLASS,
simpleName: 'TodoApp',
interfaces: [HtmlComponent]
};
function main(args) {
var tmp$;
komp_0.Komp.create_og2ns8$((tmp$ = document.body) != null ? tmp$ : Kotlin.throwNPE(), new TodoApp(), true);
}
var package$nl = _.nl || (_.nl = {});
var package$astraeus = package$nl.astraeus || (package$nl.astraeus = {});
var package$komp = package$astraeus.komp || (package$astraeus.komp = {});
var package$todo = package$komp.todo || (package$komp.todo = {});
package$todo.Todo = Todo;
Object.defineProperty(Selection, 'ALL', {
get: Selection$ALL_getInstance
});
Object.defineProperty(Selection, 'ACTIVE', {
get: Selection$ACTIVE_getInstance
});
Object.defineProperty(Selection, 'COMPLETED', {
get: Selection$COMPLETED_getInstance
});
package$todo.Selection = Selection;
package$todo.TodoApp = TodoApp;
package$todo.main_kand9s$ = main;
Kotlin.defineModule('komp-todo', _);
main([]);
return _;
}(typeof this['komp-todo'] === 'undefined' ? {} : this['komp-todo'], kotlin, komp, this['kotlinx-html-js']);
//@ sourceMappingURL=komp-todo.js.map