import { Checkbox } from "@mui/joy"; import clsx from "clsx"; import { repeat } from "lodash-es"; import { useContext, useState } from "react"; import { markdownServiceClient } from "@/grpcweb"; import { useMemoStore } from "@/store/v1"; import { Node, NodeType, TaskListNode } from "@/types/proto/api/v1/markdown_service"; import Renderer from "./Renderer"; import { RendererContext } from "./types"; interface Props { index: string; symbol: string; indent: number; complete: boolean; children: Node[]; } const TaskList: React.FC = ({ index, indent, complete, children }: Props) => { const context = useContext(RendererContext); const memoStore = useMemoStore(); const [checked] = useState(complete); const handleCheckboxChange = async (on: boolean) => { if (context.readonly || !context.memoName) { return; } const nodeIndex = Number(index); if (isNaN(nodeIndex)) { return; } const node = context.nodes[nodeIndex]; if (node.type !== NodeType.TASK_LIST) { return; } (node.taskListNode as TaskListNode)!.complete = on; const { markdown } = await markdownServiceClient.restoreMarkdownNodes({ nodes: context.nodes }); await memoStore.updateMemo( { name: context.memoName, content: markdown, }, ["content"], ); }; return ( ); }; export default TaskList;