PaliTextToc.tsx 927 B

1234567891011121314151617181920212223242526272829303132
  1. import { useState, useEffect } from "react";
  2. import { get } from "../../request";
  3. import { IPaliTocListResponse } from "../api/Corpus";
  4. import { ListNodeData } from "./EditableTree";
  5. import TocTree from "./TocTree";
  6. interface IWidget {
  7. book?: number;
  8. para?: number;
  9. channel?: string;
  10. }
  11. const PaliTextTocWidget = ({ book, para, channel }: IWidget) => {
  12. const [tocList, setTocList] = useState<ListNodeData[]>([]);
  13. useEffect(() => {
  14. get<IPaliTocListResponse>(
  15. `/v2/palitext?view=book-toc&book=${book}&para=${para}`
  16. ).then((json) => {
  17. const toc = json.data.rows.map((item, id) => {
  18. return {
  19. key: `${item.book}-${item.paragraph}`,
  20. title: item.toc,
  21. level: parseInt(item.level),
  22. };
  23. });
  24. setTocList(toc);
  25. });
  26. }, [book, para]);
  27. return <TocTree treeData={tocList} expandedKey={[`${book}-${para}`]} />;
  28. };
  29. export default PaliTextTocWidget;