import { Checkbox } from "@mui/joy"; import clsx from "clsx"; import { useContext, useState } from "react"; import { markdownServiceClient } from "@/grpcweb"; import { useMemoStore } from "@/store/v1"; import { Node, TaskListItemNode } from "@/types/proto/api/v1/markdown_service"; import Renderer from "./Renderer"; import { RendererContext } from "./types"; interface Props { node: Node; index: string; symbol: string; indent: number; complete: boolean; children: Node[]; } const TaskListItem: React.FC = ({ node, 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; } (node.taskListItemNode as TaskListItemNode)!.complete = on; const { markdown } = await markdownServiceClient.restoreMarkdownNodes({ nodes: context.nodes }); await memoStore.updateMemo( { name: context.memoName, content: markdown, }, ["content"], ); }; return (
  • handleCheckboxChange(e.target.checked)} />

    {children.map((child, index) => ( ))}

  • ); }; export default TaskListItem;