Skip to content

Commit eb1983c

Browse files
committed
feat: add latex-extension package
1 parent 3f27c6f commit eb1983c

14 files changed

Lines changed: 289 additions & 6 deletions

File tree

.github/workflows/publish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ on:
1414
default: 'packages/editor'
1515
options:
1616
- 'packages/editor'
17+
- 'packages/latex-extension'
1718
tag:
1819
description: 'Publish with tag'
1920
required: true

.release-please/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
{"type": "perf", "section": "Performance Improvements", "hidden": false}
1212
],
1313
"packages": {
14-
"packages/editor": {}
14+
"packages/editor": {},
15+
"packages/latex-extension": {}
1516
}
1617
}

.release-please/manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2-
"packages/editor": "15.38.1"
2+
"packages/editor": "15.38.1",
3+
"packages/latex-extension": "0.0.0"
34
}

demo/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"@diplodoc/transform": "catalog:peer-diplodoc",
3232
"@gravity-ui/components": "catalog:peer-gravity",
3333
"@gravity-ui/markdown-editor": "workspace:*",
34+
"@gravity-ui/markdown-editor-latex-extension": "workspace:*",
3435
"@gravity-ui/uikit": "catalog:peer-gravity",
3536
"markdown-it": "catalog:peers"
3637
},

demo/src/components/Playground.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,13 @@ import type {SettingItems} from '@gravity-ui/markdown-editor/_/bundle/settings/i
2525
import type {CodeEditor} from '@gravity-ui/markdown-editor/_/markup/index.js';
2626
import type {Extension} from '@gravity-ui/markdown-editor/cm/state';
2727
import {FoldingHeading} from '@gravity-ui/markdown-editor/extensions/additional/FoldingHeading/index.js';
28-
import {Math} from '@gravity-ui/markdown-editor/extensions/additional/Math/index.js';
2928
import {Mermaid} from '@gravity-ui/markdown-editor/extensions/additional/Mermaid/index.js';
3029
import {YfmHtmlBlock} from '@gravity-ui/markdown-editor/extensions/additional/YfmHtmlBlock/index.js';
30+
import {LatexExtension} from '@gravity-ui/markdown-editor-latex-extension';
31+
import {
32+
wLatexBlockItemData,
33+
wLatexInlineItemData,
34+
} from '@gravity-ui/markdown-editor-latex-extension/configs';
3135
import {Button, DropdownMenu} from '@gravity-ui/uikit';
3236

3337
import {getPlugins} from '../defaults/md-plugins';
@@ -47,8 +51,8 @@ const fileUploadHandler: FileUploadHandler = async (file) => {
4751
};
4852

4953
const wCommandMenuConfig = wysiwygToolbarConfigs.wCommandMenuConfig.concat(
50-
wysiwygToolbarConfigs.wMathInlineItemData,
51-
wysiwygToolbarConfigs.wMathBlockItemData,
54+
wLatexInlineItemData,
55+
wLatexBlockItemData,
5256
wysiwygToolbarConfigs.wMermaidItemData,
5357
wysiwygToolbarConfigs.wYfmHtmlBlockItemData,
5458
);
@@ -184,7 +188,7 @@ export const Playground = memo<PlaygroundProps>((props) => {
184188
disableMarkdownAttrs: disableMarkdownItAttrs,
185189
extensions: (builder) => {
186190
builder
187-
.use(Math, {
191+
.use(LatexExtension, {
188192
loadRuntimeScript: () => {
189193
import(
190194
/* webpackChunkName: "latex-runtime" */ '@diplodoc/latex-extension/runtime'
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

packages/latex-extension/README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# @gravity-ui/markdown-editor-latex-extension &middot; [![npm package](https://img.shields.io/npm/v/@gravity-ui/markdown-editor-latex-extension)](https://www.npmjs.com/package/@gravity-ui/markdown-editor-latex-extension)
2+
3+
LaTeX extension for [@gravity-ui/markdown-editor](https://github.com/gravity-ui/markdown-editor). Provides support for mathematical expressions using LaTeX/KaTeX syntax in both inline and block formats.
4+
5+
## Installation
6+
7+
```bash
8+
npm install @gravity-ui/markdown-editor @gravity-ui/markdown-editor-latex-extension @diplodoc/latex-extension
9+
```
10+
11+
## Usage
12+
13+
### Basic Setup
14+
15+
```typescript
16+
import {useMarkdownEditor} from '@gravity-ui/markdown-editor';
17+
import {LatexExtension} from '@gravity-ui/markdown-editor-latex-extension';
18+
19+
const editor = new useMarkdownEditor({
20+
wysiwygConfig: {
21+
extensions: (builder) => {
22+
builder
23+
.use(LatexExtension, {
24+
loadRuntimeScript: () => {
25+
import('@diplodoc/latex-extension/runtime');
26+
import('@diplodoc/latex-extension/runtime/styles');
27+
},
28+
});
29+
},
30+
},
31+
});
32+
```
33+
34+
## Peer Dependencies
35+
36+
- `@gravity-ui/markdown-editor` (^15.38.1)
37+
- `@gravity-ui/uikit` (^7.1.0)
38+
- `@diplodoc/latex-extension` (^1.0.3)
39+
- `katex` (^0.16.9)
40+
- `markdown-it` (^13.0.0)
41+
- `react` (^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0)
42+
- `react-dom` (^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0)
43+
44+
## License
45+
46+
MIT
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import {dirname, resolve} from 'node:path';
2+
import {fileURLToPath} from 'node:url';
3+
4+
import {series, task} from '@markdown-editor/gulp-tasks';
5+
import {registerBuildTasks} from '@markdown-editor/gulp-tasks/build';
6+
7+
import pkg from './package.json' with {type: 'json'};
8+
9+
const __dirname = dirname(fileURLToPath(import.meta.url));
10+
11+
const BUILD_DIR = resolve('build');
12+
const NODE_MODULES_DIR = resolve(__dirname, 'node_modules');
13+
14+
registerBuildTasks({
15+
version: pkg.version,
16+
buildDir: BUILD_DIR,
17+
nodeModulesDir: NODE_MODULES_DIR,
18+
});
19+
20+
task('default', series('clean', 'build'));
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
{
2+
"name": "@gravity-ui/markdown-editor-latex-extension",
3+
"version": "0.0.0",
4+
"description": "Latex extension for @gravity-ui/markdown-editor",
5+
"license": "MIT",
6+
"repository": {
7+
"type": "git",
8+
"url": "https://github.com/gravity-ui/markdown-editor"
9+
},
10+
"keywords": [
11+
"md",
12+
"yfm",
13+
"wysiwyg",
14+
"markdown",
15+
"codemirror",
16+
"prosemirror"
17+
],
18+
"scripts": {
19+
"clean": "gulp clean",
20+
"build": "gulp build",
21+
"typecheck": "tsc -p tsconfig.json --noEmit",
22+
"lint": "run-p -cs lint:*",
23+
"lint:js": "eslint './**/*.{js,jsx,mjs,ts,tsx}'",
24+
"lint:styles": "stylelint './**/*.{css,scss}' --allow-empty-input",
25+
"lint:prettier": "prettier --check './**/*.{js,jsx,mjs,ts,tsx,css,scss}'",
26+
"test": "exit 0",
27+
"prepublishOnly": "pnpm run lint && pnpm run clean && pnpm run build"
28+
},
29+
"exports": {
30+
".": {
31+
"import": {
32+
"types": "./build/esm/index.d.ts",
33+
"default": "./build/esm/index.js"
34+
},
35+
"require": {
36+
"types": "./build/cjs/index.d.ts",
37+
"default": "./build/cjs/index.js"
38+
}
39+
},
40+
"./configs": {
41+
"import": {
42+
"types": "./build/esm/configs.d.ts",
43+
"default": "./build/esm/configs.js"
44+
},
45+
"require": {
46+
"types": "./build/cjs/configs.d.ts",
47+
"default": "./build/cjs/configs.js"
48+
}
49+
},
50+
"./specs": {
51+
"import": {
52+
"types": "./build/esm/specs.d.ts",
53+
"default": "./build/esm/specs.js"
54+
},
55+
"require": {
56+
"types": "./build/cjs/specs.d.ts",
57+
"default": "./build/cjs/specs.js"
58+
}
59+
}
60+
},
61+
"main": "build/cjs/index.js",
62+
"module": "build/esm/index.js",
63+
"types": "build/esm/index.d.ts",
64+
"files": [
65+
"build",
66+
"README.md"
67+
],
68+
"dependencies": {
69+
"tslib": "catalog:ts"
70+
},
71+
"devDependencies": {
72+
"@markdown-editor/gulp-tasks": "workspace:*",
73+
"@markdown-editor/tsconfig": "workspace:*",
74+
"gulp-cli": "catalog:",
75+
"npm-run-all": "^4.1.5",
76+
"typescript": "catalog:ts"
77+
},
78+
"peerDependencies": {
79+
"@diplodoc/latex-extension": "^1.0.3",
80+
"@gravity-ui/markdown-editor": "workspace:^15.38.1",
81+
"@gravity-ui/uikit": "^7.1.0",
82+
"katex": "^0.16.9",
83+
"markdown-it": "^13.0.0",
84+
"react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
85+
"react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
86+
},
87+
"sideEffects": [
88+
"*.css",
89+
"*.scss"
90+
]
91+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import {
2+
mMathBlockItemData,
3+
mMathInlineItemData,
4+
mMathListConfig,
5+
mMathListItem,
6+
wMathBlockItemData,
7+
wMathInlineItemData,
8+
wMathListConfig,
9+
wMathListItem,
10+
} from '@gravity-ui/markdown-editor/_/bundle/config/index.js';
11+
import {
12+
mathBlockItemMarkup,
13+
mathBlockItemView,
14+
mathBlockItemWysiwyg,
15+
mathInlineItemMarkup,
16+
mathInlineItemView,
17+
mathInlineItemWysiwyg,
18+
mathListItemView,
19+
} from '@gravity-ui/markdown-editor/_/modules/toolbars/items.js';
20+
21+
export const mLatexBlockItemData = mMathBlockItemData;
22+
export const mLatexInlineItemData = mMathInlineItemData;
23+
export const mLatexListConfig = mMathListConfig;
24+
export const mLatexListItem = mMathListItem;
25+
export const wLatexBlockItemData = wMathBlockItemData;
26+
export const wLatexInlineItemData = wMathInlineItemData;
27+
export const wLatexListConfig = wMathListConfig;
28+
export const wLatexListItem = wMathListItem;
29+
30+
export const latexBlockItemMarkup = mathBlockItemMarkup;
31+
export const latexBlockItemView = mathBlockItemView;
32+
export const latexBlockItemWysiwyg = mathBlockItemWysiwyg;
33+
export const latexInlineItemMarkup = mathInlineItemMarkup;
34+
export const latexInlineItemView = mathInlineItemView;
35+
export const latexInlineItemWysiwyg = mathInlineItemWysiwyg;
36+
export const latexListItemView = mathListItemView;

0 commit comments

Comments
 (0)