diff --git a/examples/mathjax-render-react-example/package.json b/examples/mathjax-render-react-example/package.json index 2cfbea8..2d53576 100644 --- a/examples/mathjax-render-react-example/package.json +++ b/examples/mathjax-render-react-example/package.json @@ -15,7 +15,7 @@ "clsx": "^1.2.1", "lucide-react": "^0.258.0", "mathjax-render": "workspace:*", - "mathjax-render-react": "workspace:*", + "mathjax-render-nextjs": "workspace:*", "next": "^13.4.9", "next-themes": "^0.2.1", "nextjs-toploader": "^1.4.2", diff --git a/examples/mathjax-render-react-example/src/app/page.tsx b/examples/mathjax-render-react-example/src/app/page.tsx index db85dad..cef3613 100644 --- a/examples/mathjax-render-react-example/src/app/page.tsx +++ b/examples/mathjax-render-react-example/src/app/page.tsx @@ -2,9 +2,10 @@ import React, { ChangeEventHandler, useState, useCallback } from "react"; +import { MathJaxNode } from "mathjax-render-nextjs"; + import { Textarea } from "@/components/ui/textarea"; import { Container } from "@/components/container"; -import { MathJaxNode } from "@/components/mathjax-node"; export default function Page() { const [texValue, setTexValue] = useState(""); diff --git a/examples/mathjax-render-react-example/src/app/reference/page.tsx b/examples/mathjax-render-react-example/src/app/reference/page.tsx index e19cfc7..d7f3216 100644 --- a/examples/mathjax-render-react-example/src/app/reference/page.tsx +++ b/examples/mathjax-render-react-example/src/app/reference/page.tsx @@ -1,5 +1,6 @@ +import { MathJaxNode } from "mathjax-render-nextjs"; + import { Container } from "@/components/container"; -import { MathJaxNode } from "@components/mathjax-node"; import { getTexList } from "@/lib/tex-list"; diff --git a/examples/mathjax-render-react-example/tsconfig.json b/examples/mathjax-render-react-example/tsconfig.json index 793f1e5..cd51ac8 100644 --- a/examples/mathjax-render-react-example/tsconfig.json +++ b/examples/mathjax-render-react-example/tsconfig.json @@ -26,6 +26,9 @@ "mathjax-render": [ "../../packages/mathjax-render/src/node/index.ts" ], + "mathjax-render-nextjs": [ + "../../packages/mathjax-render-nextjs/src/index.ts", + ] }, "plugins": [ { diff --git a/packages/mathjax-render-nextjs/build.config.ts b/packages/mathjax-render-nextjs/build.config.ts new file mode 100644 index 0000000..36d5149 --- /dev/null +++ b/packages/mathjax-render-nextjs/build.config.ts @@ -0,0 +1,27 @@ +import { BuildContext, defineBuildConfig } from "unbuild"; +import { RollupOptions } from "rollup"; + +import postcss from "rollup-plugin-postcss"; +import camelcase from "camelcase"; + +export default defineBuildConfig({ + entries: ["src/index"], + declaration: true, + clean: true, + rollup: { + emitCJS: true, + }, + hooks: { + "rollup:options": (ctx: BuildContext, options: RollupOptions): void => { + options.plugins?.push( + postcss({ + inject: true, + use: ["less"], + namedExports(name) { + return camelcase(name); + }, + }), + ); + }, + }, +}); diff --git a/packages/mathjax-render-nextjs/package.json b/packages/mathjax-render-nextjs/package.json new file mode 100644 index 0000000..ea6cef2 --- /dev/null +++ b/packages/mathjax-render-nextjs/package.json @@ -0,0 +1,61 @@ +{ + "name": "mathjax-render-nextjs", + "version": "0.0.19", + "license": "MIT", + "author": "Dup4 ", + "repository": { + "type": "git", + "url": "git+https://github.com/Dup4/mathjax-render.git", + "directory": "packages/mathjax-render-nextjs" + }, + "bugs": { + "url": "https://github.com/Dup4/mathjax-render/issues" + }, + "homepage": "https://github.com/Dup4/mathjax-render/tree/main/packages/mathjax-render-nextjs#readme", + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "require": "./dist/index.cjs", + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts" + } + }, + "typesVersions": { + "*": { + "*": [ + "./dist/index.d.ts" + ] + } + }, + "files": [ + "src", + "dist" + ], + "scripts": { + "build": "unbuild", + "dev": "unbuild --stub", + "test": "vitest", + "lint:build": "tsc --noEmit", + "prepublishOnly": "npm run build" + }, + "peerDependencies": { + "next": "^13.4.9", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "dependencies": { + "mathjax-render-react": "workspace:*" + }, + "devDependencies": { + "@types/react": "^18.2.14", + "@types/react-dom": "^18.2.6", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "next": "^13.4.9", + "rollup": "^2.79.1", + "rollup-plugin-postcss": "^4.0.2", + "typescript": "4.7.3" + } +} diff --git a/packages/mathjax-render-nextjs/src/index.ts b/packages/mathjax-render-nextjs/src/index.ts new file mode 100644 index 0000000..c6afe55 --- /dev/null +++ b/packages/mathjax-render-nextjs/src/index.ts @@ -0,0 +1 @@ +export * from "./mathjax-node"; diff --git a/examples/mathjax-render-react-example/src/components/mathjax-node.tsx b/packages/mathjax-render-nextjs/src/mathjax-node.tsx similarity index 100% rename from examples/mathjax-render-react-example/src/components/mathjax-node.tsx rename to packages/mathjax-render-nextjs/src/mathjax-node.tsx diff --git a/packages/mathjax-render-nextjs/tsconfig.json b/packages/mathjax-render-nextjs/tsconfig.json new file mode 100644 index 0000000..dce2535 --- /dev/null +++ b/packages/mathjax-render-nextjs/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [ + "src", + "typings.d.ts", + ], + "compilerOptions": { + "jsx": "react", + "lib": [ + "DOM" + ], + "baseUrl": ".", + "paths": { + "@/*": [ + "src/*" + ], + }, + } +} diff --git a/packages/mathjax-render-nextjs/typings.d.ts b/packages/mathjax-render-nextjs/typings.d.ts new file mode 100644 index 0000000..c72afde --- /dev/null +++ b/packages/mathjax-render-nextjs/typings.d.ts @@ -0,0 +1 @@ +declare module "*.module.less"; diff --git a/packages/mathjax-render-react/src/index.ts b/packages/mathjax-render-react/src/index.ts index 89c4f59..c6afe55 100644 --- a/packages/mathjax-render-react/src/index.ts +++ b/packages/mathjax-render-react/src/index.ts @@ -1 +1 @@ -export * from "./mathjaxNode"; +export * from "./mathjax-node"; diff --git a/packages/mathjax-render-react/src/mathjaxNode.module.less b/packages/mathjax-render-react/src/mathjax-node.module.less similarity index 100% rename from packages/mathjax-render-react/src/mathjaxNode.module.less rename to packages/mathjax-render-react/src/mathjax-node.module.less diff --git a/packages/mathjax-render-react/src/mathjaxNode.tsx b/packages/mathjax-render-react/src/mathjax-node.tsx similarity index 95% rename from packages/mathjax-render-react/src/mathjaxNode.tsx rename to packages/mathjax-render-react/src/mathjax-node.tsx index a26104d..17bd662 100644 --- a/packages/mathjax-render-react/src/mathjaxNode.tsx +++ b/packages/mathjax-render-react/src/mathjax-node.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Options, Tex2SVG } from "mathjax-render/browser"; -import style from "./mathjaxNode.module.less"; +import style from "./mathjax-node.module.less"; export interface MathJaxNodeProps extends Options { tex: string; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e897cd4..1d6eca0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -92,9 +92,9 @@ importers: mathjax-render: specifier: workspace:* version: link:../../packages/mathjax-render - mathjax-render-react: + mathjax-render-nextjs: specifier: workspace:* - version: link:../../packages/mathjax-render-react + version: link:../../packages/mathjax-render-nextjs next: specifier: ^13.4.9 version: 13.4.9(@babel/core@7.22.8)(react-dom@18.2.0)(react@18.2.0) @@ -225,6 +225,37 @@ importers: specifier: ^4.1.8 version: 4.1.8 + packages/mathjax-render-nextjs: + dependencies: + mathjax-render-react: + specifier: workspace:* + version: link:../mathjax-render-react + devDependencies: + '@types/react': + specifier: ^18.2.14 + version: 18.2.14 + '@types/react-dom': + specifier: ^18.2.6 + version: 18.2.6 + next: + specifier: ^13.4.9 + version: 13.4.9(@babel/core@7.22.8)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + rollup: + specifier: ^2.79.1 + version: 2.79.1 + rollup-plugin-postcss: + specifier: ^4.0.2 + version: 4.0.2(postcss@8.4.25) + typescript: + specifier: 4.7.3 + version: 4.7.3 + packages/mathjax-render-react: dependencies: mathjax-render: @@ -1967,7 +1998,6 @@ packages: /@next/env@13.4.9: resolution: {integrity: sha512-vuDRK05BOKfmoBYLNi2cujG2jrYbEod/ubSSyqgmEx9n/W3eZaJQdRNhTfumO+qmq/QTzLurW487n/PM/fHOkw==} - dev: false /@next/eslint-plugin-next@13.0.0: resolution: {integrity: sha512-z+gnX4Zizatqatc6f4CQrcC9oN8Us3Vrq/OLyc98h7K/eWctrnV91zFZodmJHUjx0cITY8uYM7LXD7IdYkg3kg==} @@ -1981,7 +2011,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false optional: true /@next/swc-darwin-x64@13.4.9: @@ -1990,7 +2019,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false optional: true /@next/swc-linux-arm64-gnu@13.4.9: @@ -1999,7 +2027,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@next/swc-linux-arm64-musl@13.4.9: @@ -2008,7 +2035,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false optional: true /@next/swc-linux-x64-gnu@13.4.9: @@ -2017,7 +2043,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true /@next/swc-linux-x64-musl@13.4.9: @@ -2026,7 +2051,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false optional: true /@next/swc-win32-arm64-msvc@13.4.9: @@ -2035,7 +2059,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false optional: true /@next/swc-win32-ia32-msvc@13.4.9: @@ -2044,7 +2067,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false optional: true /@next/swc-win32-x64-msvc@13.4.9: @@ -2053,7 +2075,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true /@nicolo-ribaudo/semver-v6@6.3.3: @@ -2274,7 +2295,6 @@ packages: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.6.0 - dev: false /@tailwindcss/typography@0.5.9(tailwindcss@3.3.2): resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} @@ -3071,7 +3091,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001425 + caniuse-lite: 1.0.30001513 electron-to-chromium: 1.4.137 escalade: 3.1.1 node-releases: 2.0.4 @@ -3134,7 +3154,6 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 - dev: false /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -3223,15 +3242,11 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.20.3 - caniuse-lite: 1.0.30001425 + caniuse-lite: 1.0.30001513 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-lite@1.0.30001425: - resolution: {integrity: sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==} - dev: true - /caniuse-lite@1.0.30001513: resolution: {integrity: sha512-pnjGJo7SOOjAGytZZ203Em95MRM8Cr6jhCXNF/FAXTpCTRTECnqQWLpiTRqrFtdYcth8hf4WECUpkezuYsMVww==} @@ -3388,7 +3403,6 @@ packages: /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -3676,7 +3690,7 @@ packages: postcss: ^8.2.15 dependencies: cssnano-preset-default: 5.2.11(postcss@8.4.25) - lilconfig: 2.0.5 + lilconfig: 2.1.0 postcss: 8.4.25 yaml: 1.10.2 dev: true @@ -5194,7 +5208,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false /glob@10.3.2: resolution: {integrity: sha512-vsuLzB3c/uyDLLEdBZtT8vGnN0z57rwOxHV2oYZib/7HWmBspUaja/McYIobBjC4qaUTuNpUyFO2IdqM4DZIJA==} @@ -5700,12 +5713,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: @@ -6216,20 +6223,9 @@ packages: type-check: 0.4.0 dev: true - /lilconfig@2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} - engines: {node: '>=10'} - dev: true - - /lilconfig@2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - dev: true - /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: false /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -6873,7 +6869,6 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false /nextjs-toploader@1.4.2(next@13.4.9)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-FS5+zCdNHLq0YA+SijkbDifOMFNayKfxkCLTiM6TIrvSaf6kAzCGlNjwgVpoG3zpampVMQSVf5L/jrWFJgs23g==} @@ -7626,7 +7621,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.20.3 + browserslist: 4.21.9 caniuse-api: 3.0.0 colord: 2.9.2 postcss: 8.4.25 @@ -7714,7 +7709,7 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 + lilconfig: 2.1.0 postcss: 8.4.25 yaml: 1.10.2 dev: true @@ -7753,11 +7748,11 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.20.3 + browserslist: 4.21.9 caniuse-api: 3.0.0 cssnano-utils: 3.1.0(postcss@8.4.25) postcss: 8.4.25 - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.13 dev: true /postcss-minify-font-values@5.1.0(postcss@8.4.25): @@ -7821,7 +7816,7 @@ packages: dependencies: icss-utils: 5.1.0(postcss@8.4.25) postcss: 8.4.25 - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true @@ -8007,7 +8002,6 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false /postcss-svgo@5.1.0(postcss@8.4.25): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} @@ -8040,7 +8034,6 @@ packages: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false /postcss@8.4.25: resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==} @@ -8366,15 +8359,6 @@ packages: deprecated: https://github.com/lydell/resolve-url#deprecated dev: true - /resolve@1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -8484,7 +8468,7 @@ packages: postcss-load-config: 3.1.4(postcss@8.4.25) postcss-modules: 4.3.1(postcss@8.4.25) promise.series: 0.2.0 - resolve: 1.22.0 + resolve: 1.22.2 rollup-pluginutils: 2.8.2 safe-identifier: 0.4.2 style-inject: 0.3.0 @@ -8895,7 +8879,6 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - dev: false /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -9043,7 +9026,6 @@ packages: '@babel/core': 7.22.8 client-only: 0.0.1 react: 18.2.0 - dev: false /stylehacks@5.1.0(postcss@8.4.25): resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==} @@ -9685,7 +9667,6 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}