From 8c7a4ef6f105c224142840c27c8f9ab63c138703 Mon Sep 17 00:00:00 2001 From: Dup4 Date: Sat, 4 Jun 2022 12:09:48 +0800 Subject: [PATCH] feat: impl simple MathJaxNode --- packages/mathjax-render-react/package.json | 13 ++++ .../mathjax-render-react/src/MathJaxNode.tsx | 29 ++++++++ packages/mathjax-render-react/src/index.ts | 0 packages/mathjax-render-react/src/index.tsx | 1 + packages/mathjax-render-react/tsconfig.json | 3 +- pnpm-lock.yaml | 71 +++++++++++++++++++ 6 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 packages/mathjax-render-react/src/MathJaxNode.tsx delete mode 100644 packages/mathjax-render-react/src/index.ts create mode 100644 packages/mathjax-render-react/src/index.tsx diff --git a/packages/mathjax-render-react/package.json b/packages/mathjax-render-react/package.json index 3390a1b..395a572 100644 --- a/packages/mathjax-render-react/package.json +++ b/packages/mathjax-render-react/package.json @@ -38,5 +38,18 @@ "test": "vitest", "lint:build": "tsc --noEmit", "prepublishOnly": "npm run build" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "dependencies": { + "mathjax-render": "workspace:*" + }, + "devDependencies": { + "@types/react": "^18.0.11", + "@types/react-dom": "^18.0.5", + "react": "^18.1.0", + "react-dom": "^18.1.0" } } diff --git a/packages/mathjax-render-react/src/MathJaxNode.tsx b/packages/mathjax-render-react/src/MathJaxNode.tsx new file mode 100644 index 0000000..4f9f5de --- /dev/null +++ b/packages/mathjax-render-react/src/MathJaxNode.tsx @@ -0,0 +1,29 @@ +import React from "react"; +import { Options, Tex2SVG } from "mathjax-render"; + +export interface MathJaxNodeProps extends Options { + tex: string; + display: boolean; +} + +export const MathJaxNode: React.FC = (props) => { + const { tex, display, ...options } = props; + + if (display) { + return ( +
+ ); + } + + return ( + + ); +}; diff --git a/packages/mathjax-render-react/src/index.ts b/packages/mathjax-render-react/src/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/mathjax-render-react/src/index.tsx b/packages/mathjax-render-react/src/index.tsx new file mode 100644 index 0000000..f61b44e --- /dev/null +++ b/packages/mathjax-render-react/src/index.tsx @@ -0,0 +1 @@ +export * from "./MathJaxNode"; diff --git a/packages/mathjax-render-react/tsconfig.json b/packages/mathjax-render-react/tsconfig.json index 3aa1ebd..3c3eb5b 100644 --- a/packages/mathjax-render-react/tsconfig.json +++ b/packages/mathjax-render-react/tsconfig.json @@ -5,13 +5,14 @@ ], "compilerOptions": { "allowSyntheticDefaultImports": true, + "jsx": "react-jsx", "baseUrl": ".", "paths": { "@/*": [ "src/*" ], "mathjax-render": [ - "../mathjax-render/src/index.ts" + "../mathjax-render/src/browser/index.ts" ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e58542..1ecab1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,6 +88,21 @@ importers: devDependencies: '@types/debug': 4.1.7 + packages/mathjax-render-react: + specifiers: + '@types/react': ^18.0.11 + '@types/react-dom': ^18.0.5 + mathjax-render: workspace:* + react: ^18.1.0 + react-dom: ^18.1.0 + dependencies: + mathjax-render: link:../mathjax-render + devDependencies: + '@types/react': 18.0.11 + '@types/react-dom': 18.0.5 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + packages: /@ampproject/remapping/2.2.0: @@ -563,12 +578,34 @@ packages: /@types/parse5/6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-dom/18.0.5: + resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} + dependencies: + '@types/react': 18.0.11 + dev: true + + /@types/react/18.0.11: + resolution: {integrity: sha512-JxSwm54IgMW4XTR+zFF5QpNx4JITmFbB4WHR2J0vg9RpjNeyqEMlODXsD2e64br6GX70TL0UYjZJETpyyC1WdA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.0 + dev: true + /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 17.0.35 dev: true + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: true + /@types/tough-cookie/4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} @@ -1027,6 +1064,10 @@ packages: cssom: 0.3.8 dev: false + /csstype/3.1.0: + resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} + dev: true + /data-uri-to-buffer/4.0.0: resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} engines: {node: '>= 12'} @@ -2401,6 +2442,13 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true + /loupe/2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: @@ -2848,6 +2896,23 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /react-dom/18.1.0_react@18.1.0: + resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} + peerDependencies: + react: ^18.1.0 + dependencies: + loose-envify: 1.4.0 + react: 18.1.0 + scheduler: 0.22.0 + dev: true + + /react/18.1.0: + resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: true + /read-pkg/3.0.0: resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} engines: {node: '>=4'} @@ -2958,6 +3023,12 @@ packages: xmlchars: 2.2.0 dev: false + /scheduler/0.22.0: + resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} + dependencies: + loose-envify: 1.4.0 + dev: true + /scule/0.2.1: resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} dev: true