import vdom, karax, karaxdsl, jdict, jstrutils type Filter = enum all, active, completed var entries: seq[(cstring, bool)] selectedEntry = -1 filter: Filter proc onTodoEnter(ev: Event; n: VNode) = entries.add((n.value, false)) n.value = "" proc removeHandler(ev: Event; n: VNode) = let id = suffixAsInt(n.id, "remove:") entries[id] = (cstring(nil), false) proc editHandler(ev: Event; n: VNode) = let id = suffixAsInt(n.id, "edit:") selectedEntry = id when defined(usecache): var entryCache = newJDict[int, VNode]() proc focusLost(ev: Event; n: VNode) = selectedEntry = -1 proc editEntry(ev: Event; n: VNode) = let id = suffixAsInt(n.id, "todo-edit:") entries[id][0] = n.value selectedEntry = -1 proc toggleEntry(ev: Event; n: VNode) = let id = suffixAsInt(n.id, "toggle:") entries[id][1] = not entries[id][1] proc onAllDone(ev: Event; n: VNode) = entries = @[] selectedEntry = -1 proc clearCompleted(ev: Event, n: VNode) = for i in 0..