import%20marimo%0A%0A__generated_with%20%3D%20%220.9.34%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%23%20Task%20List%22).left()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(dataclass)%3A%0A%20%20%20%20%40dataclass%0A%20%20%20%20class%20Task%3A%0A%20%20%20%20%20%20%20%20name%3A%20str%0A%20%20%20%20%20%20%20%20done%3A%20bool%20%3D%20False%0A%20%20%20%20return%20(Task%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20get_tasks%2C%20set_tasks%20%3D%20mo.state(%5B%5D)%0A%20%20%20%20mutation_signal%2C%20set_mutation_signal%20%3D%20mo.state(False)%0A%20%20%20%20return%20get_tasks%2C%20mutation_signal%2C%20set_mutation_signal%2C%20set_tasks%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20mutation_signal)%3A%0A%20%20%20%20mutation_signal%0A%0A%20%20%20%20task_entry_box%20%3D%20mo.ui.text(placeholder%3D%22a%20task%20...%22)%0A%20%20%20%20return%20(task_entry_box%2C)%0A%0A%0A%40app.cell%0Adef%20__(Task%2C%20mo%2C%20set_mutation_signal%2C%20set_tasks%2C%20task_entry_box)%3A%0A%20%20%20%20def%20add_task()%3A%0A%20%20%20%20%20%20%20%20if%20task_entry_box.value%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20set_tasks(lambda%20v%3A%20v%20%2B%20%5BTask(task_entry_box.value)%5D)%0A%20%20%20%20%20%20%20%20set_mutation_signal(True)%0A%0A%0A%20%20%20%20add_task_button%20%3D%20mo.ui.button(%0A%20%20%20%20%20%20%20%20label%3D%22add%20task%22%2C%0A%20%20%20%20%20%20%20%20on_change%3Dlambda%20_%3A%20add_task()%2C%0A%20%20%20%20)%0A%0A%20%20%20%20clear_tasks_button%20%3D%20mo.ui.button(%0A%20%20%20%20%20%20%20%20label%3D%22clear%20completed%20tasks%22%2C%0A%20%20%20%20%20%20%20%20on_change%3Dlambda%20_%3A%20set_tasks(%0A%20%20%20%20%20%20%20%20%20%20%20%20lambda%20v%3A%20%5Btask%20for%20task%20in%20v%20if%20not%20task.done%5D%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20)%0A%20%20%20%20return%20add_task%2C%20add_task_button%2C%20clear_tasks_button%0A%0A%0A%40app.cell%0Adef%20__(add_task_button%2C%20clear_tasks_button%2C%20mo%2C%20task_entry_box)%3A%0A%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%5Btask_entry_box%2C%20add_task_button%2C%20clear_tasks_button%5D%2C%20justify%3D%22start%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(Task%2C%20get_tasks%2C%20mo%2C%20set_tasks)%3A%0A%20%20%20%20task_list%20%3D%20mo.ui.array(%0A%20%20%20%20%20%20%20%20%5Bmo.ui.checkbox(value%3Dtask.done%2C%20label%3Dtask.name)%20for%20task%20in%20get_tasks()%5D%2C%0A%20%20%20%20%20%20%20%20label%3D%22tasks%22%2C%0A%20%20%20%20%20%20%20%20on_change%3Dlambda%20v%3A%20set_tasks(%0A%20%20%20%20%20%20%20%20%20%20%20%20%5BTask(task.name%2C%20done%3Dv%5Bi%5D)%20for%20i%2C%20task%20in%20enumerate(get_tasks())%5D%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20)%0A%20%20%20%20return%20(task_list%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20task_list)%3A%0A%20%20%20%20mo.as_html(task_list)%20if%20task_list.value%20else%20mo.md(%22No%20tasks!%20%F0%9F%8E%89%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20from%20dataclasses%20import%20dataclass%0A%20%20%20%20return%20(dataclass%2C)%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
c1af70bf7c92edc47cfdf47a25c0edaae1ed8103a6d0f8452d7469cd9db6f84f