@sciexpr/renderer 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +12 -3
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +12 -3
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -92,8 +92,13 @@ var LatexReverseRenderer = class {
|
|
|
92
92
|
switch (n.kind) {
|
|
93
93
|
case "root":
|
|
94
94
|
return n.children.map((c) => this.renderNode(c)).join("");
|
|
95
|
-
case "symbol":
|
|
96
|
-
|
|
95
|
+
case "symbol": {
|
|
96
|
+
const v = n.value;
|
|
97
|
+
if (v.startsWith("\\") && /[a-zA-Z]$/.test(v)) {
|
|
98
|
+
return v + " ";
|
|
99
|
+
}
|
|
100
|
+
return v;
|
|
101
|
+
}
|
|
97
102
|
case "frac":
|
|
98
103
|
return `\\frac{${this.renderNode(n.numerator)}}{${this.renderNode(n.denominator)}}`;
|
|
99
104
|
case "script": {
|
|
@@ -121,6 +126,7 @@ var LatexReverseRenderer = class {
|
|
|
121
126
|
return `\\begin{${type}}${cols}${rows}\\end{${type}}`;
|
|
122
127
|
}
|
|
123
128
|
case "text":
|
|
129
|
+
if (n.content === "&") return "&";
|
|
124
130
|
return `\\text{${n.content}}`;
|
|
125
131
|
case "space":
|
|
126
132
|
return n.width === 1 ? "\\," : "\\quad";
|
|
@@ -193,12 +199,15 @@ var KatexRenderer = class {
|
|
|
193
199
|
latexRenderer = new LatexReverseRenderer();
|
|
194
200
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
195
201
|
katexInstance = null;
|
|
202
|
+
/** Promise that resolves when KaTeX is loaded (or fails) */
|
|
203
|
+
ready;
|
|
196
204
|
constructor() {
|
|
197
|
-
this.loadKatex();
|
|
205
|
+
this.ready = this.loadKatex();
|
|
198
206
|
}
|
|
199
207
|
async loadKatex() {
|
|
200
208
|
try {
|
|
201
209
|
this.katexInstance = await import("katex");
|
|
210
|
+
await import("katex/contrib/mhchem");
|
|
202
211
|
} catch {
|
|
203
212
|
this.katexInstance = null;
|
|
204
213
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -109,6 +109,8 @@ declare class KatexRenderer implements IRenderer {
|
|
|
109
109
|
readonly outputFormat: "html";
|
|
110
110
|
private latexRenderer;
|
|
111
111
|
private katexInstance;
|
|
112
|
+
/** Promise that resolves when KaTeX is loaded (or fails) */
|
|
113
|
+
readonly ready: Promise<void>;
|
|
112
114
|
constructor();
|
|
113
115
|
private loadKatex;
|
|
114
116
|
/** 手动设置 KaTeX 实例 */
|
package/dist/index.d.ts
CHANGED
|
@@ -109,6 +109,8 @@ declare class KatexRenderer implements IRenderer {
|
|
|
109
109
|
readonly outputFormat: "html";
|
|
110
110
|
private latexRenderer;
|
|
111
111
|
private katexInstance;
|
|
112
|
+
/** Promise that resolves when KaTeX is loaded (or fails) */
|
|
113
|
+
readonly ready: Promise<void>;
|
|
112
114
|
constructor();
|
|
113
115
|
private loadKatex;
|
|
114
116
|
/** 手动设置 KaTeX 实例 */
|
package/dist/index.js
CHANGED
|
@@ -52,8 +52,13 @@ var LatexReverseRenderer = class {
|
|
|
52
52
|
switch (n.kind) {
|
|
53
53
|
case "root":
|
|
54
54
|
return n.children.map((c) => this.renderNode(c)).join("");
|
|
55
|
-
case "symbol":
|
|
56
|
-
|
|
55
|
+
case "symbol": {
|
|
56
|
+
const v = n.value;
|
|
57
|
+
if (v.startsWith("\\") && /[a-zA-Z]$/.test(v)) {
|
|
58
|
+
return v + " ";
|
|
59
|
+
}
|
|
60
|
+
return v;
|
|
61
|
+
}
|
|
57
62
|
case "frac":
|
|
58
63
|
return `\\frac{${this.renderNode(n.numerator)}}{${this.renderNode(n.denominator)}}`;
|
|
59
64
|
case "script": {
|
|
@@ -81,6 +86,7 @@ var LatexReverseRenderer = class {
|
|
|
81
86
|
return `\\begin{${type}}${cols}${rows}\\end{${type}}`;
|
|
82
87
|
}
|
|
83
88
|
case "text":
|
|
89
|
+
if (n.content === "&") return "&";
|
|
84
90
|
return `\\text{${n.content}}`;
|
|
85
91
|
case "space":
|
|
86
92
|
return n.width === 1 ? "\\," : "\\quad";
|
|
@@ -153,12 +159,15 @@ var KatexRenderer = class {
|
|
|
153
159
|
latexRenderer = new LatexReverseRenderer();
|
|
154
160
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
155
161
|
katexInstance = null;
|
|
162
|
+
/** Promise that resolves when KaTeX is loaded (or fails) */
|
|
163
|
+
ready;
|
|
156
164
|
constructor() {
|
|
157
|
-
this.loadKatex();
|
|
165
|
+
this.ready = this.loadKatex();
|
|
158
166
|
}
|
|
159
167
|
async loadKatex() {
|
|
160
168
|
try {
|
|
161
169
|
this.katexInstance = await import("katex");
|
|
170
|
+
await import("katex/contrib/mhchem");
|
|
162
171
|
} catch {
|
|
163
172
|
this.katexInstance = null;
|
|
164
173
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sciexpr/renderer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Scientific Expression Engine - Multi-format renderer (KaTeX, Unicode, MathML, LaTeX)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
7
|
-
"module": "./dist/index.
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
11
|
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/index.
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
13
|
"require": "./dist/index.cjs"
|
|
14
14
|
}
|
|
15
15
|
},
|