MdTpl.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { GrammarPopShell } from "../dict/GrammarPop";
  2. import Article from "./Article";
  3. import Exercise from "./Exercise";
  4. import GrammarTermLookup from "./GrammarTermLookup";
  5. import Mermaid from "./Mermaid";
  6. import Nissaya from "./Nissaya";
  7. import Note from "./Note";
  8. import ParaHandle from "./ParaHandle";
  9. import ParaShell from "./ParaShell";
  10. import Qa from "./Qa";
  11. import Quote from "./Quote";
  12. import QuoteLink from "./QuoteLink";
  13. import SentEdit from "./SentEdit";
  14. import SentRead from "./SentRead";
  15. import Term from "./Term";
  16. import Toggle from "./Toggle";
  17. import Video from "./Video";
  18. import WbwSent from "./WbwSent";
  19. import Wd from "./Wd";
  20. interface IWidgetMdTpl {
  21. tpl?: string;
  22. props?: string;
  23. children?: React.ReactNode | React.ReactNode[];
  24. }
  25. const Widget = ({ tpl, props, children }: IWidgetMdTpl) => {
  26. switch (tpl) {
  27. case "term":
  28. return <Term props={props ? props : ""} />;
  29. case "note":
  30. return <Note props={props ? props : ""}>{children}</Note>;
  31. case "sentread":
  32. return <SentRead props={props ? props : ""} />;
  33. case "sentedit":
  34. return <SentEdit props={props ? props : ""} />;
  35. case "wbw_sent":
  36. return <WbwSent props={props ? props : ""} />;
  37. case "wd":
  38. return <Wd props={props ? props : ""} />;
  39. case "quote":
  40. return <Quote props={props ? props : ""} />;
  41. case "exercise":
  42. return <Exercise props={props ? props : ""}>{children}</Exercise>;
  43. case "article":
  44. return <Article props={props ? props : ""} />;
  45. case "nissaya":
  46. return <Nissaya props={props ? props : ""}>{children}</Nissaya>;
  47. case "toggle":
  48. return <Toggle props={props ? props : undefined}>{children}</Toggle>;
  49. case "para":
  50. return <ParaHandle props={props ? props : ""} />;
  51. case "mermaid":
  52. return <Mermaid props={props ? props : ""} />;
  53. case "grammar-pop":
  54. return <GrammarPopShell props={props ? props : ""} />;
  55. case "quote-link":
  56. return <QuoteLink props={props ? props : ""} />;
  57. case "para-shell":
  58. return <ParaShell props={props ? props : ""}>{children}</ParaShell>;
  59. case "qa":
  60. return <Qa props={props ? props : ""} />;
  61. case "video":
  62. return <Video props={props ? props : ""} />;
  63. case "grammar":
  64. return <GrammarTermLookup props={props ? props : ""} />;
  65. default:
  66. return <>未定义模版({tpl})</>;
  67. }
  68. };
  69. export default Widget;