435 lines
18 KiB
JavaScript
435 lines
18 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 Komponent = $module$komp.nl.astraeus.komp.Komponent;
|
|
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 get_create = $module$kotlinx_html_js.kotlinx.html.dom.get_create_4wc2mh$;
|
|
var div_0 = $module$kotlinx_html_js.kotlinx.html.js.div_wkomt5$;
|
|
var komp = $module$komp.nl.astraeus.komp;
|
|
Selection.prototype = Object.create(Enum.prototype);
|
|
Selection.prototype.constructor = Selection;
|
|
TodoApp.prototype = Object.create(Komponent.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() {
|
|
Komponent.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 () {
|
|
Komponent.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: [Komponent]
|
|
};
|
|
function main$lambda$lambda$lambda$lambda($receiver) {
|
|
$receiver.unaryPlus_pdl1vz$('Test');
|
|
}
|
|
function main$lambda$lambda$lambda($receiver) {
|
|
set_id($receiver, 'id1');
|
|
span($receiver, void 0, main$lambda$lambda$lambda$lambda);
|
|
}
|
|
function main$lambda$lambda($receiver) {
|
|
div($receiver, void 0, main$lambda$lambda$lambda);
|
|
}
|
|
function main$lambda($receiver) {
|
|
div($receiver, void 0, main$lambda$lambda);
|
|
}
|
|
function main$lambda$lambda$lambda_0($receiver) {
|
|
$receiver.unaryPlus_pdl1vz$('Test');
|
|
}
|
|
function main$lambda$lambda$lambda_1($receiver) {
|
|
$receiver.name = 'bla';
|
|
}
|
|
function main$lambda$lambda_0($receiver) {
|
|
set_id($receiver, 'id1');
|
|
span($receiver, void 0, main$lambda$lambda$lambda_0);
|
|
input($receiver, void 0, void 0, void 0, void 0, void 0, main$lambda$lambda$lambda_1);
|
|
}
|
|
function main$lambda_0($receiver) {
|
|
div($receiver, void 0, main$lambda$lambda_0);
|
|
}
|
|
function main(args) {
|
|
var tmp$;
|
|
Komponent.Companion.create_nkol39$((tmp$ = document.body) != null ? tmp$ : Kotlin.throwNPE(), new TodoApp(), true);
|
|
var el1 = div_0(get_create(document), void 0, main$lambda);
|
|
var el2 = div_0(get_create(document), void 0, main$lambda_0);
|
|
console.log('OLD', el1);
|
|
console.log('NEW', el2);
|
|
komp.DomDiffer.replaceDiff_aifv3w$(el2, el1);
|
|
console.log('OLD', el1);
|
|
console.log('NEW', el2);
|
|
}
|
|
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;
|
|
main([]);
|
|
Kotlin.defineModule('komp-todo', _);
|
|
return _;
|
|
}(typeof this['komp-todo'] === 'undefined' ? {} : this['komp-todo'], kotlin, komp, this['kotlinx-html-js']);
|
|
|
|
//# sourceMappingURL=komp-todo.js.map
|