@webc.site/math 0.1.26 → 0.1.29
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/README.md +30 -38
- package/mathml.js +1 -1
- package/mathml.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -192,12 +192,10 @@ In January 2023, Chrome 109 reintroduced support for the MathML Core specificati
|
|
|
192
192
|
- [@webc.site/math : 全球最小最快的网页 Markdown 公式渲染器](#webcsitemath-全球最小最快的网页-markdown-公式渲染器)
|
|
193
193
|
- [1. 功能介绍](#1-功能介绍)
|
|
194
194
|
- [2. 使用演示](#2-使用演示)
|
|
195
|
-
- [
|
|
196
|
-
|
|
197
|
-
- [替换 Markdown 文本中的公式](#替换-markdown-文本中的公式)
|
|
195
|
+
- [直接渲染 TeX 公式](#直接渲染-tex-公式)
|
|
196
|
+
- [替换 Markdown 文本中的公式](#替换-markdown-文本中的公式)
|
|
198
197
|
- [字体与 CSS 配置](#字体与-css-配置)
|
|
199
|
-
|
|
200
|
-
- [3. 插件使用](#3-插件使用)
|
|
198
|
+
- [3. 插件](#3-插件)
|
|
201
199
|
- [3.1 markdown-it](#31-markdown-it)
|
|
202
200
|
- [3.2 marked](#32-marked)
|
|
203
201
|
- [3.3 remark](#33-remark)
|
|
@@ -210,19 +208,17 @@ In January 2023, Chrome 109 reintroduced support for the MathML Core specificati
|
|
|
210
208
|
|
|
211
209
|
本项目将 LaTeX 数学公式编译为浏览器原生支持的 MathML Core 标记。通过编译期转换,无需客户端排版引擎,实现零运行时开销的公式渲染。
|
|
212
210
|
|
|
213
|
-
|
|
211
|
+
核心特性:
|
|
214
212
|
|
|
215
|
-
- **高性能**:TeX 公式直接转换为原生 MathML
|
|
216
|
-
- **轻量化**:核心包体积 7.69 KB(Gzip 压缩后 3.56 KB
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
213
|
+
- **高性能**:TeX 公式直接转换为原生 MathML 标签,处理速度达每秒 300,000 次以上
|
|
214
|
+
- **轻量化**:核心包体积 7.69 KB(Gzip 压缩后 3.56 KB),无外部依赖
|
|
215
|
+
- **零运行开销**:完全依赖浏览器原生引擎排版与渲染
|
|
216
|
+
- **高容错性**:自动捕获语法错误,降级输出原始 TeX 字符串
|
|
217
|
+
- **强兼容性**:生成标准 MathML 标签,适配 SSR、SSG 和 CSR
|
|
220
218
|
|
|
221
219
|
## 2. 使用演示
|
|
222
220
|
|
|
223
|
-
###
|
|
224
|
-
|
|
225
|
-
#### 直接渲染 TeX 公式
|
|
221
|
+
### 直接渲染 TeX 公式
|
|
226
222
|
|
|
227
223
|
```javascript
|
|
228
224
|
import mathml from "@webc.site/math";
|
|
@@ -231,7 +227,7 @@ import mathml from "@webc.site/math";
|
|
|
231
227
|
const html = mathml("e^{i\\pi} + 1 = 0", true);
|
|
232
228
|
```
|
|
233
229
|
|
|
234
|
-
|
|
230
|
+
### 替换 Markdown 文本中的公式
|
|
235
231
|
|
|
236
232
|
```javascript
|
|
237
233
|
import mdMath from "@webc.site/math/md.js";
|
|
@@ -242,9 +238,7 @@ const html = mdMath("欧拉恒等式:$$e^{i\\pi} + 1 = 0$$", compile);
|
|
|
242
238
|
|
|
243
239
|
### 字体与 CSS 配置
|
|
244
240
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
#### CSS 样式配置
|
|
241
|
+
配置数学字体确保排版对齐:
|
|
248
242
|
|
|
249
243
|
```css
|
|
250
244
|
math {
|
|
@@ -252,9 +246,9 @@ math {
|
|
|
252
246
|
}
|
|
253
247
|
```
|
|
254
248
|
|
|
255
|
-
## 3.
|
|
249
|
+
## 3. 插件
|
|
256
250
|
|
|
257
|
-
|
|
251
|
+
本项目为各大主流 Markdown 解析器提供了扩展插件,可在编译/构建时直接将 TeX 公式渲染为原生 MathML 标记。
|
|
258
252
|
|
|
259
253
|
### 3.1 markdown-it
|
|
260
254
|
|
|
@@ -264,7 +258,7 @@ math {
|
|
|
264
258
|
npm install @webc.site/math-markdown-it
|
|
265
259
|
```
|
|
266
260
|
|
|
267
|
-
|
|
261
|
+
使用方法:
|
|
268
262
|
|
|
269
263
|
```javascript
|
|
270
264
|
import markdownit from "markdown-it";
|
|
@@ -284,7 +278,7 @@ console.log(html);
|
|
|
284
278
|
npm install @webc.site/math-marked
|
|
285
279
|
```
|
|
286
280
|
|
|
287
|
-
|
|
281
|
+
使用方法:
|
|
288
282
|
|
|
289
283
|
```javascript
|
|
290
284
|
import { marked } from "marked";
|
|
@@ -304,7 +298,7 @@ console.log(html);
|
|
|
304
298
|
npm install @webc.site/math-remark
|
|
305
299
|
```
|
|
306
300
|
|
|
307
|
-
|
|
301
|
+
使用方法:
|
|
308
302
|
|
|
309
303
|
```javascript
|
|
310
304
|
import { unified } from "unified";
|
|
@@ -325,41 +319,39 @@ console.log(String(html));
|
|
|
325
319
|
|
|
326
320
|
## 4. 设计思路
|
|
327
321
|
|
|
328
|
-
|
|
322
|
+
编译器从输入文本中提取 TeX 公式,依次通过扫描、词法分析、语法分析,最终生成语义化 MathML 标记。
|
|
329
323
|
|
|
330
|
-

|
|
331
325
|
|
|
332
326
|
## 5. 技术栈
|
|
333
327
|
|
|
334
|
-
- **运行环境**:
|
|
335
|
-
-
|
|
336
|
-
-
|
|
328
|
+
- **运行环境**:Node.js, Bun
|
|
329
|
+
- **构建工具**:Rolldown, Vite
|
|
330
|
+
- **样式处理**:Lightning CSS
|
|
331
|
+
- **代码质量**:oxlint, oxfmt
|
|
337
332
|
|
|
338
333
|
## 6. 代码结构
|
|
339
334
|
|
|
340
335
|
```
|
|
341
336
|
.
|
|
342
|
-
├── demo/ # 演示页面
|
|
343
|
-
├── extract/ # 测试用例提取脚本
|
|
344
337
|
├── lib/ # 编译产物目录
|
|
345
|
-
│ ├── mathml.js #
|
|
346
|
-
│ └── md.js # Markdown
|
|
338
|
+
│ ├── mathml.js # 核心编译器
|
|
339
|
+
│ └── md.js # Markdown 公式解析器
|
|
347
340
|
├── src/ # 源代码
|
|
348
341
|
│ ├── const/ # Token、AST 节点、符号和函数常量定义
|
|
349
342
|
│ ├── lex.js # LaTeX 词法分析器
|
|
350
343
|
│ ├── parse.js # LaTeX 语法分析器
|
|
351
344
|
│ ├── mathml.js # TeX 至 MathML 核心编译器
|
|
352
345
|
│ └── md.js # Markdown 公式解析入口
|
|
353
|
-
├──
|
|
354
|
-
|
|
346
|
+
├── demo/ # 演示页面
|
|
347
|
+
├── extract/ # 测试用例提取脚本
|
|
348
|
+
└── sh/ # 构建脚本
|
|
355
349
|
```
|
|
356
350
|
|
|
357
351
|
## 7. 历史故事
|
|
358
352
|
|
|
359
353
|
1998 年,W3C 发布 MathML 1.0 规范,旨在提供万维网数学公式的标准排版方案。由于早期规范复杂,给浏览器排版引擎带来维护负担。
|
|
360
354
|
|
|
361
|
-
2013 年,Chromium 团队因维护成本与安全漏洞考量,移除了 Blink 引擎中的 MathML 渲染代码。网页公式排版转为依赖第三方 JavaScript 库(如 MathJax、KaTeX
|
|
362
|
-
|
|
363
|
-
为了解决该困境,Igalia、Mozilla 等团队推动了规范的重构,形成聚焦核心、易于实现的 MathML Core 标准,并进行了 Web 平台测试。
|
|
355
|
+
2013 年,Chromium 团队因维护成本与安全漏洞考量,移除了 Blink 引擎中的 MathML 渲染代码。网页公式排版转为依赖第三方 JavaScript 库(如 MathJax、KaTeX)模拟公式布局。
|
|
364
356
|
|
|
365
|
-
2023 年 1 月,Chrome 109 重新支持 MathML Core 标准,Blink、Gecko 和 WebKit 三大主流浏览器引擎实现原生 MathML 渲染支持。本项目在此背景下开发,将 TeX 在构建期或服务端直接编译为原生 MathML
|
|
357
|
+
2023 年 1 月,Chrome 109 重新支持 MathML Core 标准,Blink、Gecko 和 WebKit 三大主流浏览器引擎实现原生 MathML 渲染支持。本项目在此背景下开发,将 TeX 在构建期或服务端直接编译为原生 MathML 标记。
|
package/mathml.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={_:5,"^":6,"{":7,"}":8,"(":9,")":10},t=e=>e>47&&e<58,n=e=>(e|32)-97>>>0<26,r=(e,t)=>{for(;e.charCodeAt(t)<=32;)++t;return t};var i=i=>{let a=[],o=i.length,s=0;for(;s<o&&(s=r(i,s),!(s>=o));){let c=i.charCodeAt(s);if(c===92){let e=s++;if(s<o)if(n(i.charCodeAt(s)))for(;n(i.charCodeAt(++s)););else++s;let t=i.slice(e,s);if(t===`\\text`){let e=r(i,s);if(i.charCodeAt(e)===123){let t=1,n=e+1,r=n;for(;r<o;){let e=i.charCodeAt(r);if(e===123)++t;else if(e===125&&!--t)break;++r}if(!t){a.push(4,`\\text`,7,`{`,2,i.slice(n,r),8,`}`),s=r+1;continue}}}a.push(4,t);continue}if(t(c)||c===46&&t(i.charCodeAt(s+1))){let e=s;if(c===46)s+=2;else{for(;t(i.charCodeAt(++s)););i.charCodeAt(s)===46&&t(i.charCodeAt(s+1))&&(s+=2)}for(;t(i.charCodeAt(s));)++s;a.push(1,i.slice(e,s));continue}if(n(c)){a.push(2,i[s]),++s;continue}let l=i[s];a.push(e[l]??3,l),++s}return a.push(0,``),a};const a=` stretchy="false"`,o=(e,t)=>` lspace="`+e+`px" rspace="`+t+`px"`,s=` mathvariant="normal"`,c=a,l=a+o(0,0),u=o(4,4),d=o(5,5),f={__proto__:null,matrix:1,pmatrix:1,bmatrix:1,vmatrix:1,Vmatrix:1,cases:1,array:1},p={__proto__:null,sin:1,cos:1,tan:1,cot:1,sec:1,csc:1,log:1,lg:1,ln:1,lim:1,exp:1,max:1,min:1,sup:1,inf:1,det:1,gcd:1,arcsin:1,arccos:1,arctan:1,sinh:1,cosh:1,tanh:1,coth:1,deg:1,arg:1},m=[3,`≤`],h=[3,`≥`],g=[3,`≠`,s],_=[3,`→`],v=[3,`←`],y=[3,`…`],b={__proto__:null,alpha:[1,`α`],beta:[1,`β`],gamma:[1,`γ`],theta:[1,`θ`],pi:[1,`π`],infty:[1,`∞`,s],le:m,leq:m,ge:h,geq:h,neq:g,ne:g,cdot:[3,`⋅`],times:[3,`×`],pm:[3,`±`],mp:[3,`∓`,u],div:[3,`÷`],sum:[3,`∑`],int:[3,`∫`],to:_,rightarrow:_,leftarrow:v,gets:v,leftrightarrow:[3,`↔`],Leftarrow:[3,`⇐`],Rightarrow:[3,`⇒`],Leftrightarrow:[3,`⇔`],dots:y,ldots:y,cdots:[3,`⋯`],Delta:[1,`Δ`,s],Gamma:[1,`Γ`,s],Theta:[1,`Θ`,s],Lambda:[1,`Λ`,s],Xi:[1,`Ξ`,s],Pi:[1,`Π`,s],Sigma:[1,`Σ`,s],Upsilon:[1,`Υ`,s],Phi:[1,`Φ`,s],Psi:[1,`Ψ`,s],Omega:[1,`Ω`,s],delta:[1,`δ`],epsilon:[1,`ϵ`],zeta:[1,`ζ`],eta:[1,`η`],iota:[1,`ι`],kappa:[1,`κ`],lambda:[1,`λ`],mu:[1,`μ`],nu:[1,`ν`],xi:[1,`ξ`],rho:[1,`ρ`],sigma:[1,`σ`],tau:[1,`τ`],upsilon:[1,`υ`],phi:[1,`ϕ`],chi:[1,`χ`],psi:[1,`ψ`],omega:[1,`ω`],nabla:[1,`∇`,s],partial:[1,`∂`,s],approx:[3,`≈`,d],sim:[3,`∼`,d],cong:[3,`≅`,d],propto:[3,`∝`,d],equiv:[3,`≡`,d],neg:[1,`¬`],lor:[3,`∨`,u],land:[3,`∧`,u],ni:[3,`∋`,d],perp:[3,`⟂`,d],parallel:[3,`∥`,d],ell:[1,`ℓ`],hbar:[1,`ℏ`],forall:[1,`∀`,s],exists:[1,`∃`,s],in:[3,`∈`],notin:[3,`∉`],subset:[3,`⊂`],supset:[3,`⊃`],subseteq:[3,`⊆`],supseteq:[3,`⊇`],cup:[3,`∪`],cap:[3,`∩`],emptyset:[1,`∅`,s]},x={"\\limits":1,"\\nolimits":2},ee={__proto__:null,boxed:1,cancel:2,sout:3},te={__proto__:null,quad:`16px`,qquad:`32px`},S={"-":[3,`−`],"*":[3,`∗`],"/":[3,`/`,s],"(":[3,`(`,c],")":[3,`)`,c],"[":[3,`[`,c],"]":[3,`]`,c],"|":[3,`|`,l],".":[3,`.`,s]},C={__proto__:null,"\\{":`{`,"\\}":`}`,"<":`⟨`,">":`⟩`},w=e=>[1,e],T=e=>[2,e],E=e=>S[e]??[3,e],D=()=>S[`(`],O=()=>S[`)`],k=(e,t)=>{let n=t[0];if(e[n]==null)return null;t[0]+=2;let r=e[n+1];return r===`.`?[3,``,` fence="true" stretchy="true" symmetric="true"`]:[3,C[r]??(r[0]===`\\`?r.slice(1):r)]},A=(e,t,n)=>{let r=t[0];if(e[r]===3&&e[r+1]===`[`&&(!n||e[r+2]===1)){for(r+=2;e[r]!==0&&(e[r]!==3||e[r+1]!==`]`);)r+=2;e[r]===3&&(r+=2),t[0]=r}},j=(e,t)=>{let n=t[0];if(e[n]===7){n+=2;let r=``;for(;e[n]!==0&&e[n]!==8;)r+=e[n+1],n+=2;return e[n]===8&&(n+=2),t[0]=n,r}return``},M=(e,t,n,r)=>{let i=[],a=[],o=[];for(;t[0]<e.length;){let s=e[t[0]],c=e[t[0]+1];if(s===0||!n&&s===8)break;if(n&&s===4&&c===`\\end`){let n=t[0];if(t[0]+=2,j(e,t)===r)break;t[0]=n}if(s===3&&c===`&`){t[0]+=2,a.push(o),o=[];continue}if(s===4&&c===`\\\\`){t[0]+=2,A(e,t,1),a.push(o),o=[],i.push(a),a=[];continue}let l=B(e,t);l&&o.push(l)}if((o.length||a.length)&&(a.push(o),i.push(a)),i.length){let e=i[i.length-1];!e[1]&&!e[0][0]&&i.pop()}return i},ne=(e,t,n)=>{if(e[t[0]]===7){t[0]+=2;let r=M(e,t,0,n);return e[t[0]]===8&&(t[0]+=2),[14,n,r]}let r=z(e,t,1);return r?[14,n,[[[r]]]]:null},re=(e,t)=>{if(e[t[0]]===7){let n=j(e,t);if(n===``)return[8,[]];let r=n.split(`\\\\`);if(r.length>1){let e=[];return r.forEach((t,n)=>{n>0&&e.push([15]),t&&e.push([16,t])}),[8,e]}return[16,n]}let n=z(e,t,1);if(n)return[16,n[1]];throw[3,`text`]},N=(e,t,n)=>{if(e[t[0]]===7){let n=j(e,t);return n===`array`&&(A(e,t),e[t[0]]===7?j(e,t):e[t[0]]!==0&&(t[0]+=2)),[14,n,M(e,t,1,n)]}return[1,n]},P=(e,t)=>{if(e[t[0]]===3&&e[t[0]+1]===`[`){t[0]+=2;let n=[];for(;e[t[0]]!==0&&(e[t[0]]!==3||e[t[0]+1]!==`]`);){let r=B(e,t);r&&n.push(r)}return e[t[0]]===3&&(t[0]+=2),[11,z(e,t,1),[8,n]]}return[10,z(e,t,1)]},F=(e,t)=>{let n=k(e,t),r=V(e,t);if(e[t[0]]===4&&e[t[0]+1]===`\\right`)return t[0]+=2,[12,[n,...r,k(e,t)].filter(Boolean)];throw[1,n]},I=(e,t)=>[13,z(e,t,1)],L={__proto__:null,"\\":(e,t)=>(e[t[0]]===3&&e[t[0]+1]===`*`&&(t[0]+=2),A(e,t,1),[15]),text:re,frac:(e,t)=>[7,z(e,t,1),z(e,t,1)],overline:I,bar:I,sqrt:P,left:F,phantom:(e,t)=>[19,z(e,t,1)],pmod:(e,t)=>[8,[[17,`8px`],[3,`(`,c],[16,`mod`],[17,`4px`],z(e,t,1),[3,`)`,c]]],begin:N,end:(e,t,n,r)=>{throw[0,r]},right:(e,t,n,r)=>{throw[2,r]}},R={2:w,3:E,9:D,10:O,1:T,7:(e,t,n)=>{let r=[8,V(t,n)];return t[n[0]]===8&&(n[0]+=2),r},4:(e,t,n)=>{let r=e.slice(1),i=L[r];if(i)return i(t,n,e,r);if(f[r])return ne(t,n,r)??w(e);let a=te[r];if(a)return[17,a];let o=ee[r];return o?[18,o,z(t,n,1)]:p[r]?[9,r]:b[r]??w(e)}},z=(e,t,n)=>{let r=t[0],i=e[r];if(i==null)return null;t[0]+=2;let a=e[r+1];return n&&i===1&&a[1]&&(e.splice(t[0],0,1,a.slice(1)),a=a[0]),R[i]?.(a,e,t)??null},B=(e,t)=>{let n=z(e,t);if(!n)return null;let r=0,i=t[0];if(e[i]===4){let n=x[e[i+1]];n&&(r=n,t[0]+=2)}let a=null,o=null,s;for(;(s=e[t[0]])!=null
|
|
1
|
+
const e={_:5,"^":6,"{":7,"}":8,"(":9,")":10},t=e=>e>47&&e<58,n=e=>(e|32)-97>>>0<26,r=(e,t)=>{for(;e.charCodeAt(t)<=32;)++t;return t};var i=i=>{let a=[],o=i.length,s=0;for(;s<o&&(s=r(i,s),!(s>=o));){let c=i.charCodeAt(s);if(c===92){let e=s++;if(s<o)if(n(i.charCodeAt(s)))for(;n(i.charCodeAt(++s)););else++s;let t=i.slice(e,s);if(t===`\\text`){let e=r(i,s);if(i.charCodeAt(e)===123){let t=1,n=e+1,r=n;for(;r<o;){let e=i.charCodeAt(r);if(e===123)++t;else if(e===125&&!--t)break;++r}if(!t){a.push(4,`\\text`,7,`{`,2,i.slice(n,r),8,`}`),s=r+1;continue}}}a.push(4,t);continue}if(t(c)||c===46&&t(i.charCodeAt(s+1))){let e=s;if(c===46)s+=2;else{for(;t(i.charCodeAt(++s)););i.charCodeAt(s)===46&&t(i.charCodeAt(s+1))&&(s+=2)}for(;t(i.charCodeAt(s));)++s;a.push(1,i.slice(e,s));continue}if(n(c)){a.push(2,i[s]),++s;continue}let l=i[s];a.push(e[l]??3,l),++s}return a.push(0,``),a};const a=` stretchy="false"`,o=(e,t)=>` lspace="`+e+`px" rspace="`+t+`px"`,s=` mathvariant="normal"`,c=a,l=a+o(0,0),u=o(4,4),d=o(5,5),f={__proto__:null,matrix:1,pmatrix:1,bmatrix:1,vmatrix:1,Vmatrix:1,cases:1,array:1},p={__proto__:null,sin:1,cos:1,tan:1,cot:1,sec:1,csc:1,log:1,lg:1,ln:1,lim:1,exp:1,max:1,min:1,sup:1,inf:1,det:1,gcd:1,arcsin:1,arccos:1,arctan:1,sinh:1,cosh:1,tanh:1,coth:1,deg:1,arg:1},m=[3,`≤`],h=[3,`≥`],g=[3,`≠`,s],_=[3,`→`],v=[3,`←`],y=[3,`…`],b={__proto__:null,alpha:[1,`α`],beta:[1,`β`],gamma:[1,`γ`],theta:[1,`θ`],pi:[1,`π`],infty:[1,`∞`,s],prime:[3,`′`],le:m,leq:m,ge:h,geq:h,neq:g,ne:g,cdot:[3,`⋅`],times:[3,`×`],pm:[3,`±`],mp:[3,`∓`,u],div:[3,`÷`],sum:[3,`∑`],int:[3,`∫`],to:_,rightarrow:_,leftarrow:v,gets:v,leftrightarrow:[3,`↔`],Leftarrow:[3,`⇐`],Rightarrow:[3,`⇒`],Leftrightarrow:[3,`⇔`],dots:y,ldots:y,cdots:[3,`⋯`],Delta:[1,`Δ`,s],Gamma:[1,`Γ`,s],Theta:[1,`Θ`,s],Lambda:[1,`Λ`,s],Xi:[1,`Ξ`,s],Pi:[1,`Π`,s],Sigma:[1,`Σ`,s],Upsilon:[1,`Υ`,s],Phi:[1,`Φ`,s],Psi:[1,`Ψ`,s],Omega:[1,`Ω`,s],delta:[1,`δ`],epsilon:[1,`ϵ`],zeta:[1,`ζ`],eta:[1,`η`],iota:[1,`ι`],kappa:[1,`κ`],lambda:[1,`λ`],mu:[1,`μ`],nu:[1,`ν`],xi:[1,`ξ`],rho:[1,`ρ`],sigma:[1,`σ`],tau:[1,`τ`],upsilon:[1,`υ`],phi:[1,`ϕ`],chi:[1,`χ`],psi:[1,`ψ`],omega:[1,`ω`],nabla:[1,`∇`,s],partial:[1,`∂`,s],approx:[3,`≈`,d],sim:[3,`∼`,d],cong:[3,`≅`,d],propto:[3,`∝`,d],equiv:[3,`≡`,d],neg:[1,`¬`],lor:[3,`∨`,u],land:[3,`∧`,u],ni:[3,`∋`,d],perp:[3,`⟂`,d],parallel:[3,`∥`,d],ell:[1,`ℓ`],hbar:[1,`ℏ`],forall:[1,`∀`,s],exists:[1,`∃`,s],in:[3,`∈`],notin:[3,`∉`],subset:[3,`⊂`],supset:[3,`⊃`],subseteq:[3,`⊆`],supseteq:[3,`⊇`],cup:[3,`∪`],cap:[3,`∩`],emptyset:[1,`∅`,s]},x={"\\limits":1,"\\nolimits":2},ee={__proto__:null,boxed:1,cancel:2,sout:3},te={__proto__:null,quad:`16px`,qquad:`32px`},S={"-":[3,`−`],"*":[3,`∗`],"/":[3,`/`,s],"(":[3,`(`,c],")":[3,`)`,c],"[":[3,`[`,c],"]":[3,`]`,c],"|":[3,`|`,l],".":[3,`.`,s],"'":[3,`′`]},C={__proto__:null,"\\{":`{`,"\\}":`}`,"<":`⟨`,">":`⟩`},w=e=>[1,e],T=e=>[2,e],E=e=>S[e]??[3,e],D=()=>S[`(`],O=()=>S[`)`],k=(e,t)=>{let n=t[0];if(e[n]==null)return null;t[0]+=2;let r=e[n+1];return r===`.`?[3,``,` fence="true" stretchy="true" symmetric="true"`]:[3,C[r]??(r[0]===`\\`?r.slice(1):r)]},A=(e,t,n)=>{let r=t[0];if(e[r]===3&&e[r+1]===`[`&&(!n||e[r+2]===1)){for(r+=2;e[r]!==0&&(e[r]!==3||e[r+1]!==`]`);)r+=2;e[r]===3&&(r+=2),t[0]=r}},j=(e,t)=>{let n=t[0];if(e[n]===7){n+=2;let r=``;for(;e[n]!==0&&e[n]!==8;)r+=e[n+1],n+=2;return e[n]===8&&(n+=2),t[0]=n,r}return``},M=(e,t,n,r)=>{let i=[],a=[],o=[];for(;t[0]<e.length;){let s=e[t[0]],c=e[t[0]+1];if(s===0||!n&&s===8)break;if(n&&s===4&&c===`\\end`){let n=t[0];if(t[0]+=2,j(e,t)===r)break;t[0]=n}if(s===3&&c===`&`){t[0]+=2,a.push(o),o=[];continue}if(s===4&&c===`\\\\`){t[0]+=2,A(e,t,1),a.push(o),o=[],i.push(a),a=[];continue}let l=B(e,t);l&&o.push(l)}if((o.length||a.length)&&(a.push(o),i.push(a)),i.length){let e=i[i.length-1];!e[1]&&!e[0][0]&&i.pop()}return i},ne=(e,t,n)=>{if(e[t[0]]===7){t[0]+=2;let r=M(e,t,0,n);return e[t[0]]===8&&(t[0]+=2),[14,n,r]}let r=z(e,t,1);return r?[14,n,[[[r]]]]:null},re=(e,t)=>{if(e[t[0]]===7){let n=j(e,t);if(n===``)return[8,[]];let r=n.split(`\\\\`);if(r.length>1){let e=[];return r.forEach((t,n)=>{n>0&&e.push([15]),t&&e.push([16,t])}),[8,e]}return[16,n]}let n=z(e,t,1);if(n)return[16,n[1]];throw[3,`text`]},N=(e,t,n)=>{if(e[t[0]]===7){let n=j(e,t);return n===`array`&&(A(e,t),e[t[0]]===7?j(e,t):e[t[0]]!==0&&(t[0]+=2)),[14,n,M(e,t,1,n)]}return[1,n]},P=(e,t)=>{if(e[t[0]]===3&&e[t[0]+1]===`[`){t[0]+=2;let n=[];for(;e[t[0]]!==0&&(e[t[0]]!==3||e[t[0]+1]!==`]`);){let r=B(e,t);r&&n.push(r)}return e[t[0]]===3&&(t[0]+=2),[11,z(e,t,1),[8,n]]}return[10,z(e,t,1)]},F=(e,t)=>{let n=k(e,t),r=V(e,t);if(e[t[0]]===4&&e[t[0]+1]===`\\right`)return t[0]+=2,[12,[n,...r,k(e,t)].filter(Boolean)];throw[1,n]},I=(e,t)=>[13,z(e,t,1)],L={__proto__:null,"\\":(e,t)=>(e[t[0]]===3&&e[t[0]+1]===`*`&&(t[0]+=2),A(e,t,1),[15]),text:re,frac:(e,t)=>[7,z(e,t,1),z(e,t,1)],overline:I,bar:I,sqrt:P,left:F,phantom:(e,t)=>[19,z(e,t,1)],pmod:(e,t)=>[8,[[17,`8px`],[3,`(`,c],[16,`mod`],[17,`4px`],z(e,t,1),[3,`)`,c]]],begin:N,end:(e,t,n,r)=>{throw[0,r]},right:(e,t,n,r)=>{throw[2,r]}},R={2:w,3:E,9:D,10:O,1:T,7:(e,t,n)=>{let r=[8,V(t,n)];return t[n[0]]===8&&(n[0]+=2),r},4:(e,t,n)=>{let r=e.slice(1),i=L[r];if(i)return i(t,n,e,r);if(f[r])return ne(t,n,r)??w(e);let a=te[r];if(a)return[17,a];let o=ee[r];return o?[18,o,z(t,n,1)]:p[r]?[9,r]:b[r]??w(e)}},z=(e,t,n)=>{let r=t[0],i=e[r];if(i==null)return null;t[0]+=2;let a=e[r+1];return n&&i===1&&a[1]&&(e.splice(t[0],0,1,a.slice(1)),a=a[0]),R[i]?.(a,e,t)??null},B=(e,t)=>{let n=z(e,t);if(!n)return null;let r=0,i=t[0];if(e[i]===4){let n=x[e[i+1]];n&&(r=n,t[0]+=2)}let a=null,o=null,s;for(;(s=e[t[0]])!=null;){if(s===3&&e[t[0]+1]===`'`){let n=0;for(;e[t[0]]===3&&e[t[0]+1]===`'`;)++n,t[0]+=2;o=[3,`′`.repeat(n)];continue}if(s!==5&&s!==6)break;t[0]+=2,s===5?a=z(e,t,1):o=z(e,t,1)}return a?o?[6,n,a,o,r]:[5,n,a,r]:o?[4,n,o,r]:n},V=(e,t)=>{let n=[],r;for(;(r=e[t[0]])!=null&&!(r===0||r===8||r===4&&e[t[0]+1]===`\\right`);){let r=B(e,t);r&&n.push(r)}return n},H={__proto__:null,pmatrix:[`(`,`)`],bmatrix:[`[`,`]`],vmatrix:[`|`,`|`],Vmatrix:[`‖`,`‖`],cases:[`{`,``]},U=`mrow`,W={1:` style="display:inline-block;border:1px solid;padding:2px 3px"`,2:` style="display:inline-block;background:linear-gradient(to top right,transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`,3:` style="display:inline-block;background:linear-gradient(transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`},G={__proto__:null,lim:1,max:1,min:1,sup:1,inf:1},K={"&":`&`,"<":`<`,">":`>`,'"':`"`},q=e=>e.replace(/[&<>"]/g,e=>K[e]),J=(e,t,n)=>`<`+e+(n??``)+`>`+t+`</`+e+`>`,Y=(e,t,n)=>J(e,q(t),n),X=(e,t,n,r)=>J(e,Z(t)+Z(n)+(r?Z(r):``)),Z=e=>{if(!e)return J(U,``);let[t,n]=e;return t===8?n[1]?J(U,n.map($).join(``)):Z(n[0]):t===9?J(U,$(e)):$(e)},Q=(e,t,n,r)=>t===1||t!==2&&(e[1]===`∑`||e[0]===9&&G[e[1]])?n:r,ie={1:e=>Y(`mi`,e[1],e[2]),2:e=>Y(`mn`,e[1]),3:e=>Y(`mo`,e[1],e[2]),9:e=>Y(`mi`,e[1])+`<mo></mo>`,8:e=>e[1].map($).join(``),7:e=>X(`mfrac`,e[1],e[2]),4:e=>X(Q(e[1],e[3],`mover`,`msup`),e[1],e[2]),5:e=>X(Q(e[1],e[3],`munder`,`msub`),e[1],e[2]),6:e=>X(Q(e[1],e[4],`munderover`,`msubsup`),e[1],e[2],e[3]),16:e=>Y(`mtext`,e[1].replace(/ /g,`\xA0`)),17:e=>`<mspace width="`+e[1]+`"></mspace>`,10:e=>J(`msqrt`,Z(e[1])),11:e=>X(`mroot`,e[1],e[2]),12:e=>J(U,e[1].map($).join(``)),13:e=>X(`mover`,e[1],[3,`¯`]),18:e=>{let t=W[e[1]];return t?`<mrow`+t+`>`+Z(e[2])+`</mrow>`:Z(e[2])},19:e=>J(`mphantom`,Z(e[1])),14:e=>{let t=J(`mtable`,e[2].map(e=>J(`mtr`,e.map(e=>{let t=e.map($).join(``);return J(`mtd`,e[1]?J(U,t):t)}).join(``))).join(``)),n=H[e[1]];if(n){let[e,r]=n;return J(U,(e?Y(`mo`,e):``)+t+(r?Y(`mo`,r):``))}return t},15:()=>`<mspace linebreak="newline"></mspace>`},$=e=>e?ie[e[0]](e):``;var ae=(e,t)=>{let n=e.includes(`
|
|
2
2
|
`)||e.includes(`\r`)?e.replace(/[\r\n]+/g,` `):e;return`<math xmlns="http://www.w3.org/1998/Math/MathML"`+(t?` display="block"`:``)+`><semantics><mrow>`+V(i(n),[0]).map($).join(``)+`</mrow><annotation encoding="application/x-tex">`+q(n)+`</annotation></semantics></math>`};export{ae as default};
|
package/mathml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathml.js","names":["lex"],"sources":["../src/const/STYL.js","../src/lex.js","../src/const/ATTR.js","../src/const/ENV.js","../src/const/FUNC.js","../src/const/SYM.js","../src/parse.js","../src/mathml.js"],"sourcesContent":["const STYLE_PREFIX = ' style=\"display:inline-block;',\n GRAD = \"background:linear-gradient(\",\n LINE = \"transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\";\n\nexport const STYLE_BOX = STYLE_PREFIX + 'border:1px solid;padding:2px 3px\"',\n STYLE_CANCEL = STYLE_PREFIX + GRAD + \"to top right,\" + LINE + '\"',\n STYLE_SOUT = STYLE_PREFIX + GRAD + LINE + '\"';\n","import {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\n\nconst CHAR_DOT = 46,\n CHAR_TOK = {\n _: TOK_SUB,\n \"^\": TOK_SUP,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n },\n isDigit = (c) => c > 47 && c < 58,\n isAlpha = (c) => ((c | 32) - 97) >>> 0 < 26,\n skip = (str, idx) => {\n while (str.charCodeAt(idx) <= 32) ++idx;\n return idx;\n };\n\nexport default (str) => {\n const res = [],\n len = str.length;\n let idx = 0;\n while (idx < len) {\n idx = skip(str, idx);\n if (idx >= len) break;\n\n const code = str.charCodeAt(idx);\n if (code === 92) {\n const start = idx++;\n if (idx < len) {\n if (isAlpha(str.charCodeAt(idx))) {\n while (isAlpha(str.charCodeAt(++idx)));\n } else {\n ++idx;\n }\n }\n const cmd = str.slice(start, idx);\n if (cmd === \"\\\\text\") {\n const pos = skip(str, idx);\n if (str.charCodeAt(pos) === 123) {\n let braces = 1,\n t_start = pos + 1,\n t_idx = t_start;\n while (t_idx < len) {\n const cc = str.charCodeAt(t_idx);\n if (cc === 123) ++braces;\n else if (cc === 125 && !--braces) break;\n ++t_idx;\n }\n if (!braces) {\n res.push(\n TOK_CMD,\n \"\\\\text\",\n TOK_LBRACE,\n \"{\",\n TOK_IDENT,\n str.slice(t_start, t_idx),\n TOK_RBRACE,\n \"}\",\n );\n idx = t_idx + 1;\n continue;\n }\n }\n }\n res.push(TOK_CMD, cmd);\n continue;\n }\n if (isDigit(code) || (code === CHAR_DOT && isDigit(str.charCodeAt(idx + 1)))) {\n const start = idx;\n if (code === CHAR_DOT) {\n idx += 2;\n } else {\n while (isDigit(str.charCodeAt(++idx)));\n if (str.charCodeAt(idx) === CHAR_DOT && isDigit(str.charCodeAt(idx + 1))) {\n idx += 2;\n }\n }\n while (isDigit(str.charCodeAt(idx))) ++idx;\n res.push(TOK_NUM, str.slice(start, idx));\n continue;\n }\n if (isAlpha(code)) {\n res.push(TOK_IDENT, str[idx]);\n ++idx;\n continue;\n }\n const char = str[idx];\n res.push(CHAR_TOK[char] ?? TOK_OP, char);\n ++idx;\n }\n res.push(TOK_EOF, \"\");\n return res;\n};\n","const FALSE = ' stretchy=\"false\"',\n space = (l, r) => ' lspace=\"' + l + 'px\" rspace=\"' + r + 'px\"';\n\nexport const ATTR_NORMAL = ' mathvariant=\"normal\"',\n ATTR_STRETCHY_FALSE = FALSE,\n ATTR_BAR = FALSE + space(0, 0),\n ATTR_BIN = space(4, 4),\n ATTR_REL = space(5, 5);\n","export const ENV_NAMES = {\n __proto__: null,\n matrix: 1,\n pmatrix: 1,\n bmatrix: 1,\n vmatrix: 1,\n Vmatrix: 1,\n cases: 1,\n array: 1,\n};\n","export const FUNC_NAMES = {\n __proto__: null,\n sin: 1,\n cos: 1,\n tan: 1,\n cot: 1,\n sec: 1,\n csc: 1,\n log: 1,\n lg: 1,\n ln: 1,\n lim: 1,\n exp: 1,\n max: 1,\n min: 1,\n sup: 1,\n inf: 1,\n det: 1,\n gcd: 1,\n arcsin: 1,\n arccos: 1,\n arctan: 1,\n sinh: 1,\n cosh: 1,\n tanh: 1,\n coth: 1,\n deg: 1,\n arg: 1,\n};\n","import { TYPE_IDENT, TYPE_OP } from \"./TYPE.js\";\nimport { ATTR_NORMAL, ATTR_BIN, ATTR_REL } from \"./ATTR.js\";\n\nconst LE = [TYPE_OP, \"≤\"],\n GE = [TYPE_OP, \"≥\"],\n NE = [TYPE_OP, \"≠\", ATTR_NORMAL],\n RIGHT_ARROW = [TYPE_OP, \"→\"],\n LEFT_ARROW = [TYPE_OP, \"←\"],\n L_DOTS = [TYPE_OP, \"…\"];\n\nexport const SYM_MAP = {\n __proto__: null,\n alpha: [TYPE_IDENT, \"α\"],\n beta: [TYPE_IDENT, \"β\"],\n gamma: [TYPE_IDENT, \"γ\"],\n theta: [TYPE_IDENT, \"θ\"],\n pi: [TYPE_IDENT, \"π\"],\n infty: [TYPE_IDENT, \"∞\", ATTR_NORMAL],\n le: LE,\n leq: LE,\n ge: GE,\n geq: GE,\n neq: NE,\n ne: NE,\n cdot: [TYPE_OP, \"⋅\"],\n times: [TYPE_OP, \"×\"],\n pm: [TYPE_OP, \"±\"],\n mp: [TYPE_OP, \"∓\", ATTR_BIN],\n div: [TYPE_OP, \"÷\"],\n sum: [TYPE_OP, \"∑\"],\n int: [TYPE_OP, \"∫\"],\n to: RIGHT_ARROW,\n rightarrow: RIGHT_ARROW,\n leftarrow: LEFT_ARROW,\n gets: LEFT_ARROW,\n leftrightarrow: [TYPE_OP, \"↔\"],\n Leftarrow: [TYPE_OP, \"⇐\"],\n Rightarrow: [TYPE_OP, \"⇒\"],\n Leftrightarrow: [TYPE_OP, \"⇔\"],\n dots: L_DOTS,\n ldots: L_DOTS,\n cdots: [TYPE_OP, \"⋯\"],\n Delta: [TYPE_IDENT, \"Δ\", ATTR_NORMAL],\n Gamma: [TYPE_IDENT, \"Γ\", ATTR_NORMAL],\n Theta: [TYPE_IDENT, \"Θ\", ATTR_NORMAL],\n Lambda: [TYPE_IDENT, \"Λ\", ATTR_NORMAL],\n Xi: [TYPE_IDENT, \"Ξ\", ATTR_NORMAL],\n Pi: [TYPE_IDENT, \"Π\", ATTR_NORMAL],\n Sigma: [TYPE_IDENT, \"Σ\", ATTR_NORMAL],\n Upsilon: [TYPE_IDENT, \"Υ\", ATTR_NORMAL],\n Phi: [TYPE_IDENT, \"Φ\", ATTR_NORMAL],\n Psi: [TYPE_IDENT, \"Ψ\", ATTR_NORMAL],\n Omega: [TYPE_IDENT, \"Ω\", ATTR_NORMAL],\n delta: [TYPE_IDENT, \"δ\"],\n epsilon: [TYPE_IDENT, \"ϵ\"],\n zeta: [TYPE_IDENT, \"ζ\"],\n eta: [TYPE_IDENT, \"η\"],\n iota: [TYPE_IDENT, \"ι\"],\n kappa: [TYPE_IDENT, \"κ\"],\n lambda: [TYPE_IDENT, \"λ\"],\n mu: [TYPE_IDENT, \"μ\"],\n nu: [TYPE_IDENT, \"ν\"],\n xi: [TYPE_IDENT, \"ξ\"],\n rho: [TYPE_IDENT, \"ρ\"],\n sigma: [TYPE_IDENT, \"σ\"],\n tau: [TYPE_IDENT, \"τ\"],\n upsilon: [TYPE_IDENT, \"υ\"],\n phi: [TYPE_IDENT, \"ϕ\"],\n chi: [TYPE_IDENT, \"χ\"],\n psi: [TYPE_IDENT, \"ψ\"],\n omega: [TYPE_IDENT, \"ω\"],\n nabla: [TYPE_IDENT, \"∇\", ATTR_NORMAL],\n partial: [TYPE_IDENT, \"∂\", ATTR_NORMAL],\n approx: [TYPE_OP, \"≈\", ATTR_REL],\n sim: [TYPE_OP, \"∼\", ATTR_REL],\n cong: [TYPE_OP, \"≅\", ATTR_REL],\n propto: [TYPE_OP, \"∝\", ATTR_REL],\n equiv: [TYPE_OP, \"≡\", ATTR_REL],\n neg: [TYPE_IDENT, \"¬\"],\n lor: [TYPE_OP, \"∨\", ATTR_BIN],\n land: [TYPE_OP, \"∧\", ATTR_BIN],\n ni: [TYPE_OP, \"∋\", ATTR_REL],\n perp: [TYPE_OP, \"⟂\", ATTR_REL],\n parallel: [TYPE_OP, \"∥\", ATTR_REL],\n ell: [TYPE_IDENT, \"ℓ\"],\n hbar: [TYPE_IDENT, \"ℏ\"],\n forall: [TYPE_IDENT, \"∀\", ATTR_NORMAL],\n exists: [TYPE_IDENT, \"∃\", ATTR_NORMAL],\n in: [TYPE_OP, \"∈\"],\n notin: [TYPE_OP, \"∉\"],\n subset: [TYPE_OP, \"⊂\"],\n supset: [TYPE_OP, \"⊃\"],\n subseteq: [TYPE_OP, \"⊆\"],\n supseteq: [TYPE_OP, \"⊇\"],\n cup: [TYPE_OP, \"∪\"],\n cap: [TYPE_OP, \"∩\"],\n emptyset: [TYPE_IDENT, \"∅\", ATTR_NORMAL],\n};\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport {\n ERR_EXTRA_END,\n ERR_MISSING_RIGHT,\n ERR_EXTRA_RIGHT,\n ERR_MISSING_BRACE,\n} from \"./const/ERR.js\";\nimport { ATTR_NORMAL, ATTR_STRETCHY_FALSE, ATTR_BAR } from \"./const/ATTR.js\";\nimport { ENV_NAMES } from \"./const/ENV.js\";\nimport { FUNC_NAMES } from \"./const/FUNC.js\";\nimport { SYM_MAP } from \"./const/SYM.js\";\nimport {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\nimport { NOTATION_BOX, NOTATION_CANCEL, NOTATION_SOUT } from \"./const/NOTATION.js\";\nimport { LIMITS_DEFAULT, LIMITS_DISPLAY, LIMITS_INLINE } from \"./const/LIMITS.js\";\n\nconst LIMITS_MAP = {\n \"\\\\limits\": LIMITS_DISPLAY,\n \"\\\\nolimits\": LIMITS_INLINE,\n },\n MENCLOSE_MAP = {\n __proto__: null,\n boxed: NOTATION_BOX,\n cancel: NOTATION_CANCEL,\n sout: NOTATION_SOUT,\n },\n SPACE_MAP = {\n __proto__: null,\n quad: \"16px\",\n qquad: \"32px\",\n },\n CHAR_MAP = {\n \"-\": [TYPE_OP, \"−\"],\n \"*\": [TYPE_OP, \"∗\"],\n \"/\": [TYPE_OP, \"/\", ATTR_NORMAL],\n \"(\": [TYPE_OP, \"(\", ATTR_STRETCHY_FALSE],\n \")\": [TYPE_OP, \")\", ATTR_STRETCHY_FALSE],\n \"[\": [TYPE_OP, \"[\", ATTR_STRETCHY_FALSE],\n \"]\": [TYPE_OP, \"]\", ATTR_STRETCHY_FALSE],\n \"|\": [TYPE_OP, \"|\", ATTR_BAR],\n \".\": [TYPE_OP, \".\", ATTR_NORMAL],\n },\n DELIM_MAP = {\n __proto__: null,\n \"\\\\{\": \"{\",\n \"\\\\}\": \"}\",\n \"<\": \"⟨\",\n \">\": \"⟩\",\n },\n ident = (val) => [TYPE_IDENT, val],\n num = (val) => [TYPE_NUM, val],\n op = (val) => CHAR_MAP[val] ?? [TYPE_OP, val],\n lparen = () => CHAR_MAP[\"(\"],\n rparen = () => CHAR_MAP[\")\"],\n delim = (tokens, ref) => {\n const idx = ref[0],\n type = tokens[idx];\n if (type == null) return null;\n ref[0] += 2;\n const val = tokens[idx + 1];\n if (val === \".\") return [TYPE_OP, \"\", ' fence=\"true\" stretchy=\"true\" symmetric=\"true\"'];\n return [TYPE_OP, DELIM_MAP[val] ?? (val[0] === \"\\\\\" ? val.slice(1) : val)];\n },\n opt = (tokens, ref, check_num) => {\n let idx = ref[0];\n if (tokens[idx] === TOK_OP && tokens[idx + 1] === \"[\") {\n if (!check_num || tokens[idx + 2] === TOK_NUM) {\n idx += 2;\n while (tokens[idx] !== TOK_EOF && (tokens[idx] !== TOK_OP || tokens[idx + 1] !== \"]\")) {\n idx += 2;\n }\n if (tokens[idx] === TOK_OP) idx += 2;\n ref[0] = idx;\n }\n }\n },\n brace = (tokens, ref) => {\n let idx = ref[0];\n if (tokens[idx] === TOK_LBRACE) {\n idx += 2;\n let str = \"\";\n while (tokens[idx] !== TOK_EOF && tokens[idx] !== TOK_RBRACE) {\n str += tokens[idx + 1];\n idx += 2;\n }\n if (tokens[idx] === TOK_RBRACE) idx += 2;\n ref[0] = idx;\n return str;\n }\n return \"\";\n },\n rows = (tokens, ref, end_check, env) => {\n const rows = [];\n let row = [],\n cell = [];\n while (ref[0] < tokens.length) {\n const type = tokens[ref[0]],\n val = tokens[ref[0] + 1];\n if (type === TOK_EOF) break;\n if (!end_check && type === TOK_RBRACE) break;\n if (end_check && type === TOK_CMD && val === \"\\\\end\") {\n const pos = ref[0];\n ref[0] += 2;\n const end = brace(tokens, ref);\n if (end === env) {\n break;\n }\n ref[0] = pos;\n }\n if (type === TOK_OP && val === \"&\") {\n ref[0] += 2;\n row.push(cell);\n cell = [];\n continue;\n }\n if (type === TOK_CMD && val === \"\\\\\\\\\") {\n ref[0] += 2;\n opt(tokens, ref, 1);\n row.push(cell);\n cell = [];\n rows.push(row);\n row = [];\n continue;\n }\n const node = grab(tokens, ref);\n if (node) cell.push(node);\n }\n if (cell.length || row.length) {\n row.push(cell);\n rows.push(row);\n }\n if (rows.length) {\n const last = rows[rows.length - 1];\n if (!last[1] && !last[0][0]) {\n rows.pop();\n }\n }\n return rows;\n },\n matrix = (tokens, ref, name) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n ref[0] += 2;\n const res = rows(tokens, ref, 0, name);\n if (tokens[ref[0]] === TOK_RBRACE) ref[0] += 2;\n return [TYPE_MATRIX, name, res];\n }\n const node = read(tokens, ref, 1);\n return node ? [TYPE_MATRIX, name, [[[node]]]] : null;\n },\n txt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const val = brace(tokens, ref);\n if (val === \"\") return [TYPE_GROUP, []];\n const parts = val.split(\"\\\\\\\\\");\n if (parts.length > 1) {\n const nodes = [];\n parts.forEach((p, i) => {\n if (i > 0) nodes.push([TYPE_LINEBREAK]);\n if (p) nodes.push([TYPE_TEXT, p]);\n });\n return [TYPE_GROUP, nodes];\n }\n return [TYPE_TEXT, val];\n }\n const node = read(tokens, ref, 1);\n if (node) {\n return [TYPE_TEXT, node[1]];\n }\n throw [ERR_MISSING_BRACE, \"text\"];\n },\n begin = (tokens, ref, val) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const env = brace(tokens, ref);\n if (env === \"array\") {\n opt(tokens, ref);\n if (tokens[ref[0]] === TOK_LBRACE) {\n brace(tokens, ref);\n } else if (tokens[ref[0]] !== TOK_EOF) {\n ref[0] += 2;\n }\n }\n const res = rows(tokens, ref, 1, env);\n return [TYPE_MATRIX, env, res];\n }\n return [TYPE_IDENT, val];\n },\n sqrt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"[\") {\n ref[0] += 2;\n const nodes = [];\n while (\n tokens[ref[0]] !== TOK_EOF &&\n (tokens[ref[0]] !== TOK_OP || tokens[ref[0] + 1] !== \"]\")\n ) {\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n if (tokens[ref[0]] === TOK_OP) ref[0] += 2;\n return [TYPE_MROOT, read(tokens, ref, 1), [TYPE_GROUP, nodes]];\n }\n return [TYPE_MSQRT, read(tokens, ref, 1)];\n },\n fence = (tokens, ref) => {\n const left = delim(tokens, ref),\n body = parse(tokens, ref);\n if (tokens[ref[0]] === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") {\n ref[0] += 2;\n return [TYPE_LEFT_RIGHT, [left, ...body, delim(tokens, ref)].filter(Boolean)];\n }\n throw [ERR_MISSING_RIGHT, left];\n },\n over = (tokens, ref) => [TYPE_OVERLINE, read(tokens, ref, 1)],\n frac = (tokens, ref) => [TYPE_FRAC, read(tokens, ref, 1), read(tokens, ref, 1)],\n phantom = (tokens, ref) => [TYPE_MPHANTOM, read(tokens, ref, 1)],\n pmod = (tokens, ref) => [\n TYPE_GROUP,\n [\n [TYPE_SPACE, \"8px\"],\n [TYPE_OP, \"(\", ATTR_STRETCHY_FALSE],\n [TYPE_TEXT, \"mod\"],\n [TYPE_SPACE, \"4px\"],\n read(tokens, ref, 1),\n [TYPE_OP, \")\", ATTR_STRETCHY_FALSE],\n ],\n ],\n CMD_MAP = {\n __proto__: null,\n \"\\\\\": (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"*\") {\n ref[0] += 2;\n }\n opt(tokens, ref, 1);\n return [TYPE_LINEBREAK];\n },\n text: txt,\n frac,\n overline: over,\n bar: over,\n sqrt,\n left: fence,\n phantom,\n pmod,\n begin,\n end: (tokens, ref, val, name) => {\n throw [ERR_EXTRA_END, name];\n },\n right: (tokens, ref, val, name) => {\n throw [ERR_EXTRA_RIGHT, name];\n },\n },\n TOK_MAP = {\n [TOK_IDENT]: ident,\n [TOK_OP]: op,\n [TOK_LPAREN]: lparen,\n [TOK_RPAREN]: rparen,\n [TOK_NUM]: num,\n [TOK_LBRACE]: (val, tokens, ref) => {\n const res = [TYPE_GROUP, parse(tokens, ref)];\n if (tokens[ref[0]] === TOK_RBRACE) ref[0] += 2;\n return res;\n },\n [TOK_CMD]: (val, tokens, ref) => {\n const name = val.slice(1),\n handler = CMD_MAP[name];\n if (handler) return handler(tokens, ref, val, name);\n if (ENV_NAMES[name]) return matrix(tokens, ref, name) ?? ident(val);\n const space = SPACE_MAP[name];\n if (space) return [TYPE_SPACE, space];\n const notation = MENCLOSE_MAP[name];\n return notation\n ? [TYPE_MENCLOSE, notation, read(tokens, ref, 1)]\n : FUNC_NAMES[name]\n ? [TYPE_FUNC, name]\n : (SYM_MAP[name] ?? ident(val));\n },\n },\n read = (tokens, ref, split_num) => {\n const idx = ref[0],\n type = tokens[idx];\n if (type == null) return null;\n ref[0] += 2;\n let val = tokens[idx + 1];\n if (split_num && type === TOK_NUM && val[1]) {\n tokens.splice(ref[0], 0, TOK_NUM, val.slice(1));\n val = val[0];\n }\n return TOK_MAP[type]?.(val, tokens, ref) ?? null;\n },\n grab = (tokens, ref) => {\n const base = read(tokens, ref);\n if (!base) return null;\n let limits = LIMITS_DEFAULT;\n const idx = ref[0];\n if (tokens[idx] === TOK_CMD) {\n const lim = LIMITS_MAP[tokens[idx + 1]];\n if (lim) {\n limits = lim;\n ref[0] += 2;\n }\n }\n let sub = null,\n sup = null,\n type;\n while ((type = tokens[ref[0]]) != null) {\n if (type !== TOK_SUB && type !== TOK_SUP) break;\n ref[0] += 2;\n if (type === TOK_SUB) sub = read(tokens, ref, 1);\n else sup = read(tokens, ref, 1);\n }\n return sub\n ? sup\n ? [TYPE_SUPSUB, base, sub, sup, limits]\n : [TYPE_SUB, base, sub, limits]\n : sup\n ? [TYPE_SUP, base, sup, limits]\n : base;\n },\n parse = (tokens, ref) => {\n const nodes = [];\n let type;\n while ((type = tokens[ref[0]]) != null) {\n if (type === TOK_EOF || type === TOK_RBRACE) break;\n if (type === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") break;\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n return nodes;\n };\n\nexport default parse;\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport { STYLE_BOX, STYLE_CANCEL, STYLE_SOUT } from \"./const/STYL.js\";\nimport { NOTATION_BOX, NOTATION_CANCEL, NOTATION_SOUT } from \"./const/NOTATION.js\";\nimport { LIMITS_DISPLAY, LIMITS_INLINE } from \"./const/LIMITS.js\";\nimport lex from \"./lex.js\";\nimport parse from \"./parse.js\";\n\nconst ENV_DELIMS = {\n __proto__: null,\n pmatrix: [\"(\", \")\"],\n bmatrix: [\"[\", \"]\"],\n vmatrix: [\"|\", \"|\"],\n Vmatrix: [\"‖\", \"‖\"],\n cases: [\"{\", \"\"],\n },\n MROW = \"mrow\",\n NOTATION_STYLE_MAP = {\n [NOTATION_BOX]: STYLE_BOX,\n [NOTATION_CANCEL]: STYLE_CANCEL,\n [NOTATION_SOUT]: STYLE_SOUT,\n },\n LIMITS_FUNCS = {\n __proto__: null,\n lim: 1,\n max: 1,\n min: 1,\n sup: 1,\n inf: 1,\n },\n ESC_MAP = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n },\n esc = (str) => str.replace(/[&<>\"]/g, (m) => ESC_MAP[m]),\n wrap = (tag_name, inner, attr) =>\n \"<\" + tag_name + (attr ?? \"\") + \">\" + inner + \"</\" + tag_name + \">\",\n tag = (name, val, attr) => wrap(name, esc(val), attr),\n nest = (name, n1, n2, n3) => wrap(name, row(n1) + row(n2) + (n3 ? row(n3) : \"\")),\n row = (n) => {\n if (!n) return wrap(MROW, \"\");\n const [type, val] = n;\n return type === TYPE_GROUP\n ? val[1]\n ? wrap(MROW, val.map(show).join(\"\"))\n : row(val[0])\n : type === TYPE_FUNC\n ? wrap(MROW, show(n))\n : show(n);\n },\n script = (n1, limits, display, inline) =>\n limits === LIMITS_DISPLAY ||\n (limits !== LIMITS_INLINE && (n1[1] === \"∑\" || (n1[0] === TYPE_FUNC && LIMITS_FUNCS[n1[1]])))\n ? display\n : inline,\n SHOW_MAP = {\n [TYPE_IDENT]: (n) => tag(\"mi\", n[1], n[2]),\n [TYPE_NUM]: (n) => tag(\"mn\", n[1]),\n [TYPE_OP]: (n) => tag(\"mo\", n[1], n[2]),\n [TYPE_FUNC]: (n) => tag(\"mi\", n[1]) + \"<mo>\\u2061</mo>\",\n [TYPE_GROUP]: (n) => n[1].map(show).join(\"\"),\n [TYPE_FRAC]: (n) => nest(\"mfrac\", n[1], n[2]),\n [TYPE_SUP]: (n) => nest(script(n[1], n[3], \"mover\", \"msup\"), n[1], n[2]),\n [TYPE_SUB]: (n) => nest(script(n[1], n[3], \"munder\", \"msub\"), n[1], n[2]),\n [TYPE_SUPSUB]: (n) => nest(script(n[1], n[4], \"munderover\", \"msubsup\"), n[1], n[2], n[3]),\n [TYPE_TEXT]: (n) => tag(\"mtext\", n[1].replace(/ /g, \"\\u00A0\")),\n [TYPE_SPACE]: (n) => '<mspace width=\"' + n[1] + '\"></mspace>',\n [TYPE_MSQRT]: (n) => wrap(\"msqrt\", row(n[1])),\n [TYPE_MROOT]: (n) => nest(\"mroot\", n[1], n[2]),\n [TYPE_LEFT_RIGHT]: (n) => wrap(MROW, n[1].map(show).join(\"\")),\n [TYPE_OVERLINE]: (n) => nest(\"mover\", n[1], [TYPE_OP, \"¯\"]),\n [TYPE_MENCLOSE]: (n) => {\n const style = NOTATION_STYLE_MAP[n[1]];\n return style ? \"<mrow\" + style + \">\" + row(n[2]) + \"</mrow>\" : row(n[2]);\n },\n [TYPE_MPHANTOM]: (n) => wrap(\"mphantom\", row(n[1])),\n [TYPE_MATRIX]: (n) => {\n const inner = n[2]\n .map((r) =>\n wrap(\n \"mtr\",\n r\n .map((c) => {\n const html = c.map(show).join(\"\");\n return wrap(\"mtd\", c[1] ? wrap(MROW, html) : html);\n })\n .join(\"\"),\n ),\n )\n .join(\"\"),\n tbl = wrap(\"mtable\", inner),\n del = ENV_DELIMS[n[1]];\n if (del) {\n const [d0, d1] = del;\n return wrap(MROW, (d0 ? tag(\"mo\", d0) : \"\") + tbl + (d1 ? tag(\"mo\", d1) : \"\"));\n }\n return tbl;\n },\n [TYPE_LINEBREAK]: () => '<mspace linebreak=\"newline\"></mspace>',\n },\n show = (n) => (n ? SHOW_MAP[n[0]](n) : \"\");\n\nexport default (tex, block) => {\n const clean = tex.includes(\"\\n\") || tex.includes(\"\\r\") ? tex.replace(/[\\r\\n]+/g, \" \") : tex;\n return (\n '<math xmlns=\"http://www.w3.org/1998/Math/MathML\"' +\n (block ? ' display=\"block\"' : \"\") +\n \"><semantics><mrow>\" +\n parse(lex(clean), [0]).map(show).join(\"\") +\n '</mrow><annotation encoding=\"application/x-tex\">' +\n esc(clean) +\n \"</annotation></semantics></math>\"\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mathml.js","names":["lex"],"sources":["../src/const/STYL.js","../src/lex.js","../src/const/ATTR.js","../src/const/ENV.js","../src/const/FUNC.js","../src/const/SYM.js","../src/parse.js","../src/mathml.js"],"sourcesContent":["const STYLE_PREFIX = ' style=\"display:inline-block;',\n GRAD = \"background:linear-gradient(\",\n LINE = \"transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\";\n\nexport const STYLE_BOX = STYLE_PREFIX + 'border:1px solid;padding:2px 3px\"',\n STYLE_CANCEL = STYLE_PREFIX + GRAD + \"to top right,\" + LINE + '\"',\n STYLE_SOUT = STYLE_PREFIX + GRAD + LINE + '\"';\n","import {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\n\nconst CHAR_DOT = 46,\n CHAR_TOK = {\n _: TOK_SUB,\n \"^\": TOK_SUP,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n },\n isDigit = (c) => c > 47 && c < 58,\n isAlpha = (c) => ((c | 32) - 97) >>> 0 < 26,\n skip = (str, idx) => {\n while (str.charCodeAt(idx) <= 32) ++idx;\n return idx;\n };\n\nexport default (str) => {\n const res = [],\n len = str.length;\n let idx = 0;\n while (idx < len) {\n idx = skip(str, idx);\n if (idx >= len) break;\n\n const code = str.charCodeAt(idx);\n if (code === 92) {\n const start = idx++;\n if (idx < len) {\n if (isAlpha(str.charCodeAt(idx))) {\n while (isAlpha(str.charCodeAt(++idx)));\n } else {\n ++idx;\n }\n }\n const cmd = str.slice(start, idx);\n if (cmd === \"\\\\text\") {\n const pos = skip(str, idx);\n if (str.charCodeAt(pos) === 123) {\n let braces = 1,\n t_start = pos + 1,\n t_idx = t_start;\n while (t_idx < len) {\n const cc = str.charCodeAt(t_idx);\n if (cc === 123) ++braces;\n else if (cc === 125 && !--braces) break;\n ++t_idx;\n }\n if (!braces) {\n res.push(\n TOK_CMD,\n \"\\\\text\",\n TOK_LBRACE,\n \"{\",\n TOK_IDENT,\n str.slice(t_start, t_idx),\n TOK_RBRACE,\n \"}\",\n );\n idx = t_idx + 1;\n continue;\n }\n }\n }\n res.push(TOK_CMD, cmd);\n continue;\n }\n if (isDigit(code) || (code === CHAR_DOT && isDigit(str.charCodeAt(idx + 1)))) {\n const start = idx;\n if (code === CHAR_DOT) {\n idx += 2;\n } else {\n while (isDigit(str.charCodeAt(++idx)));\n if (str.charCodeAt(idx) === CHAR_DOT && isDigit(str.charCodeAt(idx + 1))) {\n idx += 2;\n }\n }\n while (isDigit(str.charCodeAt(idx))) ++idx;\n res.push(TOK_NUM, str.slice(start, idx));\n continue;\n }\n if (isAlpha(code)) {\n res.push(TOK_IDENT, str[idx]);\n ++idx;\n continue;\n }\n const char = str[idx];\n res.push(CHAR_TOK[char] ?? TOK_OP, char);\n ++idx;\n }\n res.push(TOK_EOF, \"\");\n return res;\n};\n","const FALSE = ' stretchy=\"false\"',\n space = (l, r) => ' lspace=\"' + l + 'px\" rspace=\"' + r + 'px\"';\n\nexport const ATTR_NORMAL = ' mathvariant=\"normal\"',\n ATTR_STRETCHY_FALSE = FALSE,\n ATTR_BAR = FALSE + space(0, 0),\n ATTR_BIN = space(4, 4),\n ATTR_REL = space(5, 5);\n","export const ENV_NAMES = {\n __proto__: null,\n matrix: 1,\n pmatrix: 1,\n bmatrix: 1,\n vmatrix: 1,\n Vmatrix: 1,\n cases: 1,\n array: 1,\n};\n","export const FUNC_NAMES = {\n __proto__: null,\n sin: 1,\n cos: 1,\n tan: 1,\n cot: 1,\n sec: 1,\n csc: 1,\n log: 1,\n lg: 1,\n ln: 1,\n lim: 1,\n exp: 1,\n max: 1,\n min: 1,\n sup: 1,\n inf: 1,\n det: 1,\n gcd: 1,\n arcsin: 1,\n arccos: 1,\n arctan: 1,\n sinh: 1,\n cosh: 1,\n tanh: 1,\n coth: 1,\n deg: 1,\n arg: 1,\n};\n","import { TYPE_IDENT, TYPE_OP } from \"./TYPE.js\";\nimport { ATTR_NORMAL, ATTR_BIN, ATTR_REL } from \"./ATTR.js\";\n\nconst LE = [TYPE_OP, \"≤\"],\n GE = [TYPE_OP, \"≥\"],\n NE = [TYPE_OP, \"≠\", ATTR_NORMAL],\n RIGHT_ARROW = [TYPE_OP, \"→\"],\n LEFT_ARROW = [TYPE_OP, \"←\"],\n L_DOTS = [TYPE_OP, \"…\"];\n\nexport const SYM_MAP = {\n __proto__: null,\n alpha: [TYPE_IDENT, \"α\"],\n beta: [TYPE_IDENT, \"β\"],\n gamma: [TYPE_IDENT, \"γ\"],\n theta: [TYPE_IDENT, \"θ\"],\n pi: [TYPE_IDENT, \"π\"],\n infty: [TYPE_IDENT, \"∞\", ATTR_NORMAL],\n prime: [TYPE_OP, \"′\"],\n le: LE,\n leq: LE,\n ge: GE,\n geq: GE,\n neq: NE,\n ne: NE,\n cdot: [TYPE_OP, \"⋅\"],\n times: [TYPE_OP, \"×\"],\n pm: [TYPE_OP, \"±\"],\n mp: [TYPE_OP, \"∓\", ATTR_BIN],\n div: [TYPE_OP, \"÷\"],\n sum: [TYPE_OP, \"∑\"],\n int: [TYPE_OP, \"∫\"],\n to: RIGHT_ARROW,\n rightarrow: RIGHT_ARROW,\n leftarrow: LEFT_ARROW,\n gets: LEFT_ARROW,\n leftrightarrow: [TYPE_OP, \"↔\"],\n Leftarrow: [TYPE_OP, \"⇐\"],\n Rightarrow: [TYPE_OP, \"⇒\"],\n Leftrightarrow: [TYPE_OP, \"⇔\"],\n dots: L_DOTS,\n ldots: L_DOTS,\n cdots: [TYPE_OP, \"⋯\"],\n Delta: [TYPE_IDENT, \"Δ\", ATTR_NORMAL],\n Gamma: [TYPE_IDENT, \"Γ\", ATTR_NORMAL],\n Theta: [TYPE_IDENT, \"Θ\", ATTR_NORMAL],\n Lambda: [TYPE_IDENT, \"Λ\", ATTR_NORMAL],\n Xi: [TYPE_IDENT, \"Ξ\", ATTR_NORMAL],\n Pi: [TYPE_IDENT, \"Π\", ATTR_NORMAL],\n Sigma: [TYPE_IDENT, \"Σ\", ATTR_NORMAL],\n Upsilon: [TYPE_IDENT, \"Υ\", ATTR_NORMAL],\n Phi: [TYPE_IDENT, \"Φ\", ATTR_NORMAL],\n Psi: [TYPE_IDENT, \"Ψ\", ATTR_NORMAL],\n Omega: [TYPE_IDENT, \"Ω\", ATTR_NORMAL],\n delta: [TYPE_IDENT, \"δ\"],\n epsilon: [TYPE_IDENT, \"ϵ\"],\n zeta: [TYPE_IDENT, \"ζ\"],\n eta: [TYPE_IDENT, \"η\"],\n iota: [TYPE_IDENT, \"ι\"],\n kappa: [TYPE_IDENT, \"κ\"],\n lambda: [TYPE_IDENT, \"λ\"],\n mu: [TYPE_IDENT, \"μ\"],\n nu: [TYPE_IDENT, \"ν\"],\n xi: [TYPE_IDENT, \"ξ\"],\n rho: [TYPE_IDENT, \"ρ\"],\n sigma: [TYPE_IDENT, \"σ\"],\n tau: [TYPE_IDENT, \"τ\"],\n upsilon: [TYPE_IDENT, \"υ\"],\n phi: [TYPE_IDENT, \"ϕ\"],\n chi: [TYPE_IDENT, \"χ\"],\n psi: [TYPE_IDENT, \"ψ\"],\n omega: [TYPE_IDENT, \"ω\"],\n nabla: [TYPE_IDENT, \"∇\", ATTR_NORMAL],\n partial: [TYPE_IDENT, \"∂\", ATTR_NORMAL],\n approx: [TYPE_OP, \"≈\", ATTR_REL],\n sim: [TYPE_OP, \"∼\", ATTR_REL],\n cong: [TYPE_OP, \"≅\", ATTR_REL],\n propto: [TYPE_OP, \"∝\", ATTR_REL],\n equiv: [TYPE_OP, \"≡\", ATTR_REL],\n neg: [TYPE_IDENT, \"¬\"],\n lor: [TYPE_OP, \"∨\", ATTR_BIN],\n land: [TYPE_OP, \"∧\", ATTR_BIN],\n ni: [TYPE_OP, \"∋\", ATTR_REL],\n perp: [TYPE_OP, \"⟂\", ATTR_REL],\n parallel: [TYPE_OP, \"∥\", ATTR_REL],\n ell: [TYPE_IDENT, \"ℓ\"],\n hbar: [TYPE_IDENT, \"ℏ\"],\n forall: [TYPE_IDENT, \"∀\", ATTR_NORMAL],\n exists: [TYPE_IDENT, \"∃\", ATTR_NORMAL],\n in: [TYPE_OP, \"∈\"],\n notin: [TYPE_OP, \"∉\"],\n subset: [TYPE_OP, \"⊂\"],\n supset: [TYPE_OP, \"⊃\"],\n subseteq: [TYPE_OP, \"⊆\"],\n supseteq: [TYPE_OP, \"⊇\"],\n cup: [TYPE_OP, \"∪\"],\n cap: [TYPE_OP, \"∩\"],\n emptyset: [TYPE_IDENT, \"∅\", ATTR_NORMAL],\n};\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport {\n ERR_EXTRA_END,\n ERR_MISSING_RIGHT,\n ERR_EXTRA_RIGHT,\n ERR_MISSING_BRACE,\n} from \"./const/ERR.js\";\nimport { ATTR_NORMAL, ATTR_STRETCHY_FALSE, ATTR_BAR } from \"./const/ATTR.js\";\nimport { ENV_NAMES } from \"./const/ENV.js\";\nimport { FUNC_NAMES } from \"./const/FUNC.js\";\nimport { SYM_MAP } from \"./const/SYM.js\";\nimport {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\nimport { NOTATION_BOX, NOTATION_CANCEL, NOTATION_SOUT } from \"./const/NOTATION.js\";\nimport { LIMITS_DEFAULT, LIMITS_DISPLAY, LIMITS_INLINE } from \"./const/LIMITS.js\";\n\nconst LIMITS_MAP = {\n \"\\\\limits\": LIMITS_DISPLAY,\n \"\\\\nolimits\": LIMITS_INLINE,\n },\n MENCLOSE_MAP = {\n __proto__: null,\n boxed: NOTATION_BOX,\n cancel: NOTATION_CANCEL,\n sout: NOTATION_SOUT,\n },\n SPACE_MAP = {\n __proto__: null,\n quad: \"16px\",\n qquad: \"32px\",\n },\n CHAR_MAP = {\n \"-\": [TYPE_OP, \"−\"],\n \"*\": [TYPE_OP, \"∗\"],\n \"/\": [TYPE_OP, \"/\", ATTR_NORMAL],\n \"(\": [TYPE_OP, \"(\", ATTR_STRETCHY_FALSE],\n \")\": [TYPE_OP, \")\", ATTR_STRETCHY_FALSE],\n \"[\": [TYPE_OP, \"[\", ATTR_STRETCHY_FALSE],\n \"]\": [TYPE_OP, \"]\", ATTR_STRETCHY_FALSE],\n \"|\": [TYPE_OP, \"|\", ATTR_BAR],\n \".\": [TYPE_OP, \".\", ATTR_NORMAL],\n \"'\": [TYPE_OP, \"′\"],\n },\n DELIM_MAP = {\n __proto__: null,\n \"\\\\{\": \"{\",\n \"\\\\}\": \"}\",\n \"<\": \"⟨\",\n \">\": \"⟩\",\n },\n ident = (val) => [TYPE_IDENT, val],\n num = (val) => [TYPE_NUM, val],\n op = (val) => CHAR_MAP[val] ?? [TYPE_OP, val],\n lparen = () => CHAR_MAP[\"(\"],\n rparen = () => CHAR_MAP[\")\"],\n delim = (tokens, ref) => {\n const idx = ref[0],\n type = tokens[idx];\n if (type == null) return null;\n ref[0] += 2;\n const val = tokens[idx + 1];\n if (val === \".\") return [TYPE_OP, \"\", ' fence=\"true\" stretchy=\"true\" symmetric=\"true\"'];\n return [TYPE_OP, DELIM_MAP[val] ?? (val[0] === \"\\\\\" ? val.slice(1) : val)];\n },\n opt = (tokens, ref, check_num) => {\n let idx = ref[0];\n if (tokens[idx] === TOK_OP && tokens[idx + 1] === \"[\") {\n if (!check_num || tokens[idx + 2] === TOK_NUM) {\n idx += 2;\n while (tokens[idx] !== TOK_EOF && (tokens[idx] !== TOK_OP || tokens[idx + 1] !== \"]\")) {\n idx += 2;\n }\n if (tokens[idx] === TOK_OP) idx += 2;\n ref[0] = idx;\n }\n }\n },\n brace = (tokens, ref) => {\n let idx = ref[0];\n if (tokens[idx] === TOK_LBRACE) {\n idx += 2;\n let str = \"\";\n while (tokens[idx] !== TOK_EOF && tokens[idx] !== TOK_RBRACE) {\n str += tokens[idx + 1];\n idx += 2;\n }\n if (tokens[idx] === TOK_RBRACE) idx += 2;\n ref[0] = idx;\n return str;\n }\n return \"\";\n },\n rows = (tokens, ref, end_check, env) => {\n const rows = [];\n let row = [],\n cell = [];\n while (ref[0] < tokens.length) {\n const type = tokens[ref[0]],\n val = tokens[ref[0] + 1];\n if (type === TOK_EOF) break;\n if (!end_check && type === TOK_RBRACE) break;\n if (end_check && type === TOK_CMD && val === \"\\\\end\") {\n const pos = ref[0];\n ref[0] += 2;\n const end = brace(tokens, ref);\n if (end === env) {\n break;\n }\n ref[0] = pos;\n }\n if (type === TOK_OP && val === \"&\") {\n ref[0] += 2;\n row.push(cell);\n cell = [];\n continue;\n }\n if (type === TOK_CMD && val === \"\\\\\\\\\") {\n ref[0] += 2;\n opt(tokens, ref, 1);\n row.push(cell);\n cell = [];\n rows.push(row);\n row = [];\n continue;\n }\n const node = grab(tokens, ref);\n if (node) cell.push(node);\n }\n if (cell.length || row.length) {\n row.push(cell);\n rows.push(row);\n }\n if (rows.length) {\n const last = rows[rows.length - 1];\n if (!last[1] && !last[0][0]) {\n rows.pop();\n }\n }\n return rows;\n },\n matrix = (tokens, ref, name) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n ref[0] += 2;\n const res = rows(tokens, ref, 0, name);\n if (tokens[ref[0]] === TOK_RBRACE) ref[0] += 2;\n return [TYPE_MATRIX, name, res];\n }\n const node = read(tokens, ref, 1);\n return node ? [TYPE_MATRIX, name, [[[node]]]] : null;\n },\n txt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const val = brace(tokens, ref);\n if (val === \"\") return [TYPE_GROUP, []];\n const parts = val.split(\"\\\\\\\\\");\n if (parts.length > 1) {\n const nodes = [];\n parts.forEach((p, i) => {\n if (i > 0) nodes.push([TYPE_LINEBREAK]);\n if (p) nodes.push([TYPE_TEXT, p]);\n });\n return [TYPE_GROUP, nodes];\n }\n return [TYPE_TEXT, val];\n }\n const node = read(tokens, ref, 1);\n if (node) {\n return [TYPE_TEXT, node[1]];\n }\n throw [ERR_MISSING_BRACE, \"text\"];\n },\n begin = (tokens, ref, val) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const env = brace(tokens, ref);\n if (env === \"array\") {\n opt(tokens, ref);\n if (tokens[ref[0]] === TOK_LBRACE) {\n brace(tokens, ref);\n } else if (tokens[ref[0]] !== TOK_EOF) {\n ref[0] += 2;\n }\n }\n const res = rows(tokens, ref, 1, env);\n return [TYPE_MATRIX, env, res];\n }\n return [TYPE_IDENT, val];\n },\n sqrt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"[\") {\n ref[0] += 2;\n const nodes = [];\n while (\n tokens[ref[0]] !== TOK_EOF &&\n (tokens[ref[0]] !== TOK_OP || tokens[ref[0] + 1] !== \"]\")\n ) {\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n if (tokens[ref[0]] === TOK_OP) ref[0] += 2;\n return [TYPE_MROOT, read(tokens, ref, 1), [TYPE_GROUP, nodes]];\n }\n return [TYPE_MSQRT, read(tokens, ref, 1)];\n },\n fence = (tokens, ref) => {\n const left = delim(tokens, ref),\n body = parse(tokens, ref);\n if (tokens[ref[0]] === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") {\n ref[0] += 2;\n return [TYPE_LEFT_RIGHT, [left, ...body, delim(tokens, ref)].filter(Boolean)];\n }\n throw [ERR_MISSING_RIGHT, left];\n },\n over = (tokens, ref) => [TYPE_OVERLINE, read(tokens, ref, 1)],\n frac = (tokens, ref) => [TYPE_FRAC, read(tokens, ref, 1), read(tokens, ref, 1)],\n phantom = (tokens, ref) => [TYPE_MPHANTOM, read(tokens, ref, 1)],\n pmod = (tokens, ref) => [\n TYPE_GROUP,\n [\n [TYPE_SPACE, \"8px\"],\n [TYPE_OP, \"(\", ATTR_STRETCHY_FALSE],\n [TYPE_TEXT, \"mod\"],\n [TYPE_SPACE, \"4px\"],\n read(tokens, ref, 1),\n [TYPE_OP, \")\", ATTR_STRETCHY_FALSE],\n ],\n ],\n CMD_MAP = {\n __proto__: null,\n \"\\\\\": (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"*\") {\n ref[0] += 2;\n }\n opt(tokens, ref, 1);\n return [TYPE_LINEBREAK];\n },\n text: txt,\n frac,\n overline: over,\n bar: over,\n sqrt,\n left: fence,\n phantom,\n pmod,\n begin,\n end: (tokens, ref, val, name) => {\n throw [ERR_EXTRA_END, name];\n },\n right: (tokens, ref, val, name) => {\n throw [ERR_EXTRA_RIGHT, name];\n },\n },\n TOK_MAP = {\n [TOK_IDENT]: ident,\n [TOK_OP]: op,\n [TOK_LPAREN]: lparen,\n [TOK_RPAREN]: rparen,\n [TOK_NUM]: num,\n [TOK_LBRACE]: (val, tokens, ref) => {\n const res = [TYPE_GROUP, parse(tokens, ref)];\n if (tokens[ref[0]] === TOK_RBRACE) ref[0] += 2;\n return res;\n },\n [TOK_CMD]: (val, tokens, ref) => {\n const name = val.slice(1),\n handler = CMD_MAP[name];\n if (handler) return handler(tokens, ref, val, name);\n if (ENV_NAMES[name]) return matrix(tokens, ref, name) ?? ident(val);\n const space = SPACE_MAP[name];\n if (space) return [TYPE_SPACE, space];\n const notation = MENCLOSE_MAP[name];\n return notation\n ? [TYPE_MENCLOSE, notation, read(tokens, ref, 1)]\n : FUNC_NAMES[name]\n ? [TYPE_FUNC, name]\n : (SYM_MAP[name] ?? ident(val));\n },\n },\n read = (tokens, ref, split_num) => {\n const idx = ref[0],\n type = tokens[idx];\n if (type == null) return null;\n ref[0] += 2;\n let val = tokens[idx + 1];\n if (split_num && type === TOK_NUM && val[1]) {\n tokens.splice(ref[0], 0, TOK_NUM, val.slice(1));\n val = val[0];\n }\n return TOK_MAP[type]?.(val, tokens, ref) ?? null;\n },\n grab = (tokens, ref) => {\n const base = read(tokens, ref);\n if (!base) return null;\n let limits = LIMITS_DEFAULT;\n const idx = ref[0];\n if (tokens[idx] === TOK_CMD) {\n const lim = LIMITS_MAP[tokens[idx + 1]];\n if (lim) {\n limits = lim;\n ref[0] += 2;\n }\n }\n let sub = null,\n sup = null,\n type;\n while ((type = tokens[ref[0]]) != null) {\n if (type === TOK_OP && tokens[ref[0] + 1] === \"'\") {\n let count = 0;\n while (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"'\") {\n ++count;\n ref[0] += 2;\n }\n sup = [TYPE_OP, \"′\".repeat(count)];\n continue;\n }\n if (type !== TOK_SUB && type !== TOK_SUP) break;\n ref[0] += 2;\n if (type === TOK_SUB) sub = read(tokens, ref, 1);\n else sup = read(tokens, ref, 1);\n }\n return sub\n ? sup\n ? [TYPE_SUPSUB, base, sub, sup, limits]\n : [TYPE_SUB, base, sub, limits]\n : sup\n ? [TYPE_SUP, base, sup, limits]\n : base;\n },\n parse = (tokens, ref) => {\n const nodes = [];\n let type;\n while ((type = tokens[ref[0]]) != null) {\n if (type === TOK_EOF || type === TOK_RBRACE) break;\n if (type === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") break;\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n return nodes;\n };\n\nexport default parse;\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport { STYLE_BOX, STYLE_CANCEL, STYLE_SOUT } from \"./const/STYL.js\";\nimport { NOTATION_BOX, NOTATION_CANCEL, NOTATION_SOUT } from \"./const/NOTATION.js\";\nimport { LIMITS_DISPLAY, LIMITS_INLINE } from \"./const/LIMITS.js\";\nimport lex from \"./lex.js\";\nimport parse from \"./parse.js\";\n\nconst ENV_DELIMS = {\n __proto__: null,\n pmatrix: [\"(\", \")\"],\n bmatrix: [\"[\", \"]\"],\n vmatrix: [\"|\", \"|\"],\n Vmatrix: [\"‖\", \"‖\"],\n cases: [\"{\", \"\"],\n },\n MROW = \"mrow\",\n NOTATION_STYLE_MAP = {\n [NOTATION_BOX]: STYLE_BOX,\n [NOTATION_CANCEL]: STYLE_CANCEL,\n [NOTATION_SOUT]: STYLE_SOUT,\n },\n LIMITS_FUNCS = {\n __proto__: null,\n lim: 1,\n max: 1,\n min: 1,\n sup: 1,\n inf: 1,\n },\n ESC_MAP = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n },\n esc = (str) => str.replace(/[&<>\"]/g, (m) => ESC_MAP[m]),\n wrap = (tag_name, inner, attr) =>\n \"<\" + tag_name + (attr ?? \"\") + \">\" + inner + \"</\" + tag_name + \">\",\n tag = (name, val, attr) => wrap(name, esc(val), attr),\n nest = (name, n1, n2, n3) => wrap(name, row(n1) + row(n2) + (n3 ? row(n3) : \"\")),\n row = (n) => {\n if (!n) return wrap(MROW, \"\");\n const [type, val] = n;\n return type === TYPE_GROUP\n ? val[1]\n ? wrap(MROW, val.map(show).join(\"\"))\n : row(val[0])\n : type === TYPE_FUNC\n ? wrap(MROW, show(n))\n : show(n);\n },\n script = (n1, limits, display, inline) =>\n limits === LIMITS_DISPLAY ||\n (limits !== LIMITS_INLINE && (n1[1] === \"∑\" || (n1[0] === TYPE_FUNC && LIMITS_FUNCS[n1[1]])))\n ? display\n : inline,\n SHOW_MAP = {\n [TYPE_IDENT]: (n) => tag(\"mi\", n[1], n[2]),\n [TYPE_NUM]: (n) => tag(\"mn\", n[1]),\n [TYPE_OP]: (n) => tag(\"mo\", n[1], n[2]),\n [TYPE_FUNC]: (n) => tag(\"mi\", n[1]) + \"<mo>\\u2061</mo>\",\n [TYPE_GROUP]: (n) => n[1].map(show).join(\"\"),\n [TYPE_FRAC]: (n) => nest(\"mfrac\", n[1], n[2]),\n [TYPE_SUP]: (n) => nest(script(n[1], n[3], \"mover\", \"msup\"), n[1], n[2]),\n [TYPE_SUB]: (n) => nest(script(n[1], n[3], \"munder\", \"msub\"), n[1], n[2]),\n [TYPE_SUPSUB]: (n) => nest(script(n[1], n[4], \"munderover\", \"msubsup\"), n[1], n[2], n[3]),\n [TYPE_TEXT]: (n) => tag(\"mtext\", n[1].replace(/ /g, \"\\u00A0\")),\n [TYPE_SPACE]: (n) => '<mspace width=\"' + n[1] + '\"></mspace>',\n [TYPE_MSQRT]: (n) => wrap(\"msqrt\", row(n[1])),\n [TYPE_MROOT]: (n) => nest(\"mroot\", n[1], n[2]),\n [TYPE_LEFT_RIGHT]: (n) => wrap(MROW, n[1].map(show).join(\"\")),\n [TYPE_OVERLINE]: (n) => nest(\"mover\", n[1], [TYPE_OP, \"¯\"]),\n [TYPE_MENCLOSE]: (n) => {\n const style = NOTATION_STYLE_MAP[n[1]];\n return style ? \"<mrow\" + style + \">\" + row(n[2]) + \"</mrow>\" : row(n[2]);\n },\n [TYPE_MPHANTOM]: (n) => wrap(\"mphantom\", row(n[1])),\n [TYPE_MATRIX]: (n) => {\n const inner = n[2]\n .map((r) =>\n wrap(\n \"mtr\",\n r\n .map((c) => {\n const html = c.map(show).join(\"\");\n return wrap(\"mtd\", c[1] ? wrap(MROW, html) : html);\n })\n .join(\"\"),\n ),\n )\n .join(\"\"),\n tbl = wrap(\"mtable\", inner),\n del = ENV_DELIMS[n[1]];\n if (del) {\n const [d0, d1] = del;\n return wrap(MROW, (d0 ? tag(\"mo\", d0) : \"\") + tbl + (d1 ? tag(\"mo\", d1) : \"\"));\n }\n return tbl;\n },\n [TYPE_LINEBREAK]: () => '<mspace linebreak=\"newline\"></mspace>',\n },\n show = (n) => (n ? SHOW_MAP[n[0]](n) : \"\");\n\nexport default (tex, block) => {\n const clean = tex.includes(\"\\n\") || tex.includes(\"\\r\") ? tex.replace(/[\\r\\n]+/g, \" \") : tex;\n return (\n '<math xmlns=\"http://www.w3.org/1998/Math/MathML\"' +\n (block ? ' display=\"block\"' : \"\") +\n \"><semantics><mrow>\" +\n parse(lex(clean), [0]).map(show).join(\"\") +\n '</mrow><annotation encoding=\"application/x-tex\">' +\n esc(clean) +\n \"</annotation></semantics></math>\"\n );\n};\n"],"mappings":"AAIA,MCWE,EAAW,CACT,EAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACF,EACA,EAAW,GAAM,EAAI,IAAM,EAAI,GAC/B,EAAW,IAAQ,EAAI,IAAM,KAAQ,EAAI,GACzC,GAAQ,EAAK,IAAQ,CACnB,KAAO,EAAI,WAAW,CAAG,GAAK,IAAI,EAAE,EACpC,OAAO,CACT,EAEF,IAAA,EAAgB,GAAQ,CACtB,IAAM,EAAM,CAAC,EACX,EAAM,EAAI,OACR,EAAM,EACV,KAAO,EAAM,IACX,EAAM,EAAK,EAAK,CAAG,EACf,KAAO,KAFK,CAIhB,IAAM,EAAO,EAAI,WAAW,CAAG,EAC/B,GAAI,IAAS,GAAI,CACf,IAAM,EAAQ,IACd,GAAI,EAAM,EACR,GAAI,EAAQ,EAAI,WAAW,CAAG,CAAC,EAC7B,KAAO,EAAQ,EAAI,WAAW,EAAE,CAAG,CAAC,QAEpC,EAAE,EAGN,IAAM,EAAM,EAAI,MAAM,EAAO,CAAG,EAChC,GAAI,IAAQ,SAAU,CACpB,IAAM,EAAM,EAAK,EAAK,CAAG,EACzB,GAAI,EAAI,WAAW,CAAG,IAAM,IAAK,CAC/B,IAAI,EAAS,EACX,EAAU,EAAM,EAChB,EAAQ,EACV,KAAO,EAAQ,GAAK,CAClB,IAAM,EAAK,EAAI,WAAW,CAAK,EAC/B,GAAI,IAAO,IAAK,EAAE,OACb,GAAI,IAAO,KAAO,CAAC,EAAE,EAAQ,MAClC,EAAE,CACJ,CACA,GAAI,CAAC,EAAQ,CACX,EAAI,KAAA,EAEF,SAAA,EAEA,IAAA,EAEA,EAAI,MAAM,EAAS,CAAK,EAAA,EAExB,GACF,EACA,EAAM,EAAQ,EACd,QACF,CACF,CACF,CACA,EAAI,KAAA,EAAc,CAAG,EACrB,QACF,CACA,GAAI,EAAQ,CAAI,GAAM,IAAS,IAAY,EAAQ,EAAI,WAAW,EAAM,CAAC,CAAC,EAAI,CAC5E,IAAM,EAAQ,EACd,GAAI,IAAS,GACX,GAAO,MACF,CACL,KAAO,EAAQ,EAAI,WAAW,EAAE,CAAG,CAAC,IAChC,EAAI,WAAW,CAAG,IAAM,IAAY,EAAQ,EAAI,WAAW,EAAM,CAAC,CAAC,IACrE,GAAO,EAEX,CACA,KAAO,EAAQ,EAAI,WAAW,CAAG,CAAC,GAAG,EAAE,EACvC,EAAI,KAAA,EAAc,EAAI,MAAM,EAAO,CAAG,CAAC,EACvC,QACF,CACA,GAAI,EAAQ,CAAI,EAAG,CACjB,EAAI,KAAA,EAAgB,EAAI,EAAI,EAC5B,EAAE,EACF,QACF,CACA,IAAM,EAAO,EAAI,GACjB,EAAI,KAAK,EAAS,IAAA,EAAiB,CAAI,EACvC,EAAE,CACJ,CAEA,OADA,EAAI,KAAA,EAAc,EAAE,EACb,CACT,ECzGA,MAAM,EAAQ,oBACZ,GAAS,EAAG,IAAM,YAAc,EAAI,eAAiB,EAAI,MAE9C,EAAc,wBACzB,EAAsB,EACtB,EAAW,EAAQ,EAAM,EAAG,CAAC,EAC7B,EAAW,EAAM,EAAG,CAAC,EACrB,EAAW,EAAM,EAAG,CAAC,ECPV,EAAY,CACvB,UAAW,KACX,OAAQ,EACR,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,MAAO,EACP,MAAO,CACT,ECTa,EAAa,CACxB,UAAW,KACX,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,IAAK,EACL,IAAK,CACP,ECzBM,EAAK,CAAA,EAAU,GAAG,EACtB,EAAK,CAAA,EAAU,GAAG,EAClB,EAAK,GAAU,IAAK,CAAW,EAC/B,EAAc,CAAA,EAAU,GAAG,EAC3B,EAAa,CAAA,EAAU,GAAG,EAC1B,EAAS,CAAA,EAAU,GAAG,EAEX,EAAU,CACrB,UAAW,KACX,MAAO,CAAA,EAAa,GAAG,EACvB,KAAM,CAAA,EAAa,GAAG,EACtB,MAAO,CAAA,EAAa,GAAG,EACvB,MAAO,CAAA,EAAa,GAAG,EACvB,GAAI,CAAA,EAAa,GAAG,EACpB,MAAO,GAAa,IAAK,CAAW,EACpC,MAAO,CAAA,EAAU,GAAG,EACpB,GAAI,EACJ,IAAK,EACL,GAAI,EACJ,IAAK,EACL,IAAK,EACL,GAAI,EACJ,KAAM,CAAA,EAAU,GAAG,EACnB,MAAO,CAAA,EAAU,GAAG,EACpB,GAAI,CAAA,EAAU,GAAG,EACjB,GAAI,GAAU,IAAK,CAAQ,EAC3B,IAAK,CAAA,EAAU,GAAG,EAClB,IAAK,CAAA,EAAU,GAAG,EAClB,IAAK,CAAA,EAAU,GAAG,EAClB,GAAI,EACJ,WAAY,EACZ,UAAW,EACX,KAAM,EACN,eAAgB,CAAA,EAAU,GAAG,EAC7B,UAAW,CAAA,EAAU,GAAG,EACxB,WAAY,CAAA,EAAU,GAAG,EACzB,eAAgB,CAAA,EAAU,GAAG,EAC7B,KAAM,EACN,MAAO,EACP,MAAO,CAAA,EAAU,GAAG,EACpB,MAAO,GAAa,IAAK,CAAW,EACpC,MAAO,GAAa,IAAK,CAAW,EACpC,MAAO,GAAa,IAAK,CAAW,EACpC,OAAQ,GAAa,IAAK,CAAW,EACrC,GAAI,GAAa,IAAK,CAAW,EACjC,GAAI,GAAa,IAAK,CAAW,EACjC,MAAO,GAAa,IAAK,CAAW,EACpC,QAAS,GAAa,IAAK,CAAW,EACtC,IAAK,GAAa,IAAK,CAAW,EAClC,IAAK,GAAa,IAAK,CAAW,EAClC,MAAO,GAAa,IAAK,CAAW,EACpC,MAAO,CAAA,EAAa,GAAG,EACvB,QAAS,CAAA,EAAa,GAAG,EACzB,KAAM,CAAA,EAAa,GAAG,EACtB,IAAK,CAAA,EAAa,GAAG,EACrB,KAAM,CAAA,EAAa,GAAG,EACtB,MAAO,CAAA,EAAa,GAAG,EACvB,OAAQ,CAAA,EAAa,GAAG,EACxB,GAAI,CAAA,EAAa,GAAG,EACpB,GAAI,CAAA,EAAa,GAAG,EACpB,GAAI,CAAA,EAAa,GAAG,EACpB,IAAK,CAAA,EAAa,GAAG,EACrB,MAAO,CAAA,EAAa,GAAG,EACvB,IAAK,CAAA,EAAa,GAAG,EACrB,QAAS,CAAA,EAAa,GAAG,EACzB,IAAK,CAAA,EAAa,GAAG,EACrB,IAAK,CAAA,EAAa,GAAG,EACrB,IAAK,CAAA,EAAa,GAAG,EACrB,MAAO,CAAA,EAAa,GAAG,EACvB,MAAO,GAAa,IAAK,CAAW,EACpC,QAAS,GAAa,IAAK,CAAW,EACtC,OAAQ,GAAU,IAAK,CAAQ,EAC/B,IAAK,GAAU,IAAK,CAAQ,EAC5B,KAAM,GAAU,IAAK,CAAQ,EAC7B,OAAQ,GAAU,IAAK,CAAQ,EAC/B,MAAO,GAAU,IAAK,CAAQ,EAC9B,IAAK,CAAA,EAAa,GAAG,EACrB,IAAK,GAAU,IAAK,CAAQ,EAC5B,KAAM,GAAU,IAAK,CAAQ,EAC7B,GAAI,GAAU,IAAK,CAAQ,EAC3B,KAAM,GAAU,IAAK,CAAQ,EAC7B,SAAU,GAAU,IAAK,CAAQ,EACjC,IAAK,CAAA,EAAa,GAAG,EACrB,KAAM,CAAA,EAAa,GAAG,EACtB,OAAQ,GAAa,IAAK,CAAW,EACrC,OAAQ,GAAa,IAAK,CAAW,EACrC,GAAI,CAAA,EAAU,GAAG,EACjB,MAAO,CAAA,EAAU,GAAG,EACpB,OAAQ,CAAA,EAAU,GAAG,EACrB,OAAQ,CAAA,EAAU,GAAG,EACrB,SAAU,CAAA,EAAU,GAAG,EACvB,SAAU,CAAA,EAAU,GAAG,EACvB,IAAK,CAAA,EAAU,GAAG,EAClB,IAAK,CAAA,EAAU,GAAG,EAClB,SAAU,GAAa,IAAK,CAAW,CACzC,ECnDM,EAAa,CACf,WAAA,EACA,aAAA,CACF,EACA,GAAe,CACb,UAAW,KACX,MAAA,EACA,OAAA,EACA,KAAA,CACF,EACA,GAAY,CACV,UAAW,KACX,KAAM,OACN,MAAO,MACT,EACA,EAAW,CACT,IAAK,CAAA,EAAU,GAAG,EAClB,IAAK,CAAA,EAAU,GAAG,EAClB,IAAK,GAAU,IAAK,CAAW,EAC/B,IAAK,GAAU,IAAK,CAAmB,EACvC,IAAK,GAAU,IAAK,CAAmB,EACvC,IAAK,GAAU,IAAK,CAAmB,EACvC,IAAK,GAAU,IAAK,CAAmB,EACvC,IAAK,GAAU,IAAK,CAAQ,EAC5B,IAAK,GAAU,IAAK,CAAW,EAC/B,IAAK,CAAA,EAAU,GAAG,CACpB,EACA,EAAY,CACV,UAAW,KACX,MAAO,IACP,MAAO,IACP,IAAK,IACL,IAAK,GACP,EACA,EAAS,GAAQ,CAAA,EAAa,CAAG,EACjC,EAAO,GAAQ,CAAA,EAAW,CAAG,EAC7B,EAAM,GAAQ,EAAS,IAAQ,CAAA,EAAU,CAAG,EAC5C,MAAe,EAAS,KACxB,MAAe,EAAS,KACxB,GAAS,EAAQ,IAAQ,CACvB,IAAM,EAAM,EAAI,GAEhB,GADS,EAAO,IACJ,KAAM,OAAO,KACzB,EAAI,IAAM,EACV,IAAM,EAAM,EAAO,EAAM,GAEzB,OADI,IAAQ,IAAY,GAAU,GAAI,gDAAgD,EAC/E,CAAA,EAAU,EAAU,KAAS,EAAI,KAAO,KAAO,EAAI,MAAM,CAAC,EAAI,EAAI,CAC3E,EACA,GAAO,EAAQ,EAAK,IAAc,CAChC,IAAI,EAAM,EAAI,GACd,GAAI,EAAO,KAAA,GAAmB,EAAO,EAAM,KAAO,MAC5C,CAAC,GAAa,EAAO,EAAM,KAAA,GAAgB,CAE7C,IADA,GAAO,EACA,EAAO,KAAA,IAAqB,EAAO,KAAA,GAAmB,EAAO,EAAM,KAAO,MAC/E,GAAO,EAEL,EAAO,KAAA,IAAiB,GAAO,GACnC,EAAI,GAAK,CACX,CAEJ,EACA,GAAS,EAAQ,IAAQ,CACvB,IAAI,EAAM,EAAI,GACd,GAAI,EAAO,KAAA,EAAqB,CAC9B,GAAO,EACP,IAAI,EAAM,GACV,KAAO,EAAO,KAAA,GAAoB,EAAO,KAAA,GACvC,GAAO,EAAO,EAAM,GACpB,GAAO,EAIT,OAFI,EAAO,KAAA,IAAqB,GAAO,GACvC,EAAI,GAAK,EACF,CACT,CACA,MAAO,EACT,EACA,GAAQ,EAAQ,EAAK,EAAW,IAAQ,CACtC,IAAM,EAAO,CAAC,EACV,EAAM,CAAC,EACT,EAAO,CAAC,EACV,KAAO,EAAI,GAAK,EAAO,QAAQ,CAC7B,IAAM,EAAO,EAAO,EAAI,IACtB,EAAM,EAAO,EAAI,GAAK,GAExB,GADI,IAAA,GACA,CAAC,GAAa,IAAA,EAAqB,MACvC,GAAI,GAAa,IAAA,GAAoB,IAAQ,QAAS,CACpD,IAAM,EAAM,EAAI,GAGhB,GAFA,EAAI,IAAM,EACE,EAAM,EAAQ,CACpB,IAAM,EACV,MAEF,EAAI,GAAK,CACX,CACA,GAAI,IAAA,GAAmB,IAAQ,IAAK,CAClC,EAAI,IAAM,EACV,EAAI,KAAK,CAAI,EACb,EAAO,CAAC,EACR,QACF,CACA,GAAI,IAAA,GAAoB,IAAQ,OAAQ,CACtC,EAAI,IAAM,EACV,EAAI,EAAQ,EAAK,CAAC,EAClB,EAAI,KAAK,CAAI,EACb,EAAO,CAAC,EACR,EAAK,KAAK,CAAG,EACb,EAAM,CAAC,EACP,QACF,CACA,IAAM,EAAO,EAAK,EAAQ,CAAG,EACzB,GAAM,EAAK,KAAK,CAAI,CAC1B,CAKA,IAJI,EAAK,QAAU,EAAI,UACrB,EAAI,KAAK,CAAI,EACb,EAAK,KAAK,CAAG,GAEX,EAAK,OAAQ,CACf,IAAM,EAAO,EAAK,EAAK,OAAS,GAC5B,CAAC,EAAK,IAAM,CAAC,EAAK,EAAE,CAAC,IACvB,EAAK,IAAI,CAEb,CACA,OAAO,CACT,EACA,IAAU,EAAQ,EAAK,IAAS,CAC9B,GAAI,EAAO,EAAI,MAAA,EAAoB,CACjC,EAAI,IAAM,EACV,IAAM,EAAM,EAAK,EAAQ,EAAK,EAAG,CAAI,EAErC,OADI,EAAO,EAAI,MAAA,IAAoB,EAAI,IAAM,GACtC,IAAc,EAAM,CAAG,CAChC,CACA,IAAM,EAAO,EAAK,EAAQ,EAAK,CAAC,EAChC,OAAO,EAAO,IAAc,EAAM,CAAC,CAAC,CAAC,CAAI,CAAC,CAAC,CAAC,EAAI,IAClD,EACA,IAAO,EAAQ,IAAQ,CACrB,GAAI,EAAO,EAAI,MAAA,EAAoB,CACjC,IAAM,EAAM,EAAM,EAAQ,CAAG,EAC7B,GAAI,IAAQ,GAAI,MAAO,CAAA,EAAa,CAAC,CAAC,EACtC,IAAM,EAAQ,EAAI,MAAM,MAAM,EAC9B,GAAI,EAAM,OAAS,EAAG,CACpB,IAAM,EAAQ,CAAC,EAKf,OAJA,EAAM,SAAS,EAAG,IAAM,CAClB,EAAI,GAAG,EAAM,KAAK,CAAA,EAAe,CAAC,EAClC,GAAG,EAAM,KAAK,CAAA,GAAY,CAAC,CAAC,CAClC,CAAC,EACM,CAAA,EAAa,CAAK,CAC3B,CACA,MAAO,CAAA,GAAY,CAAG,CACxB,CACA,IAAM,EAAO,EAAK,EAAQ,EAAK,CAAC,EAChC,GAAI,EACF,MAAO,CAAA,GAAY,EAAK,EAAE,EAE5B,KAAM,CAAA,EAAoB,MAAM,CAClC,EACA,GAAS,EAAQ,EAAK,IAAQ,CAC5B,GAAI,EAAO,EAAI,MAAA,EAAoB,CACjC,IAAM,EAAM,EAAM,EAAQ,CAAG,EAU7B,OATI,IAAQ,UACV,EAAI,EAAQ,CAAG,EACX,EAAO,EAAI,MAAA,EACb,EAAM,EAAQ,CAAG,EACR,EAAO,EAAI,MAAA,IACpB,EAAI,IAAM,IAIP,IAAc,EADT,EAAK,EAAQ,EAAK,EAAG,CACL,CAAC,CAC/B,CACA,MAAO,CAAA,EAAa,CAAG,CACzB,EACA,GAAQ,EAAQ,IAAQ,CACtB,GAAI,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,IAAK,CAC3D,EAAI,IAAM,EACV,IAAM,EAAQ,CAAC,EACf,KACE,EAAO,EAAI,MAAA,IACV,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,MACrD,CACA,IAAM,EAAO,EAAK,EAAQ,CAAG,EACzB,GAAM,EAAM,KAAK,CAAI,CAC3B,CAEA,OADI,EAAO,EAAI,MAAA,IAAgB,EAAI,IAAM,GAClC,IAAa,EAAK,EAAQ,EAAK,CAAC,EAAG,CAAA,EAAa,CAAK,CAAC,CAC/D,CACA,MAAO,CAAA,GAAa,EAAK,EAAQ,EAAK,CAAC,CAAC,CAC1C,EACA,GAAS,EAAQ,IAAQ,CACvB,IAAM,EAAO,EAAM,EAAQ,CAAG,EAC5B,EAAO,EAAM,EAAQ,CAAG,EAC1B,GAAI,EAAO,EAAI,MAAA,GAAmB,EAAO,EAAI,GAAK,KAAO,UAEvD,MADA,GAAI,IAAM,EACH,CAAA,GAAkB,CAAC,EAAM,GAAG,EAAM,EAAM,EAAQ,CAAG,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,EAE9E,KAAM,CAAA,EAAoB,CAAI,CAChC,EACA,GAAQ,EAAQ,IAAQ,CAAA,GAAgB,EAAK,EAAQ,EAAK,CAAC,CAAC,EAc5D,EAAU,CACR,UAAW,KACX,MAAO,EAAQ,KACT,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,MACtD,EAAI,IAAM,GAEZ,EAAI,EAAQ,EAAK,CAAC,EACX,CAAA,EAAe,GAExB,KAAM,GACN,MAvBM,EAAQ,IAAQ,GAAY,EAAK,EAAQ,EAAK,CAAC,EAAG,EAAK,EAAQ,EAAK,CAAC,CAAC,EAwB5E,SAAU,EACV,IAAK,EACL,OACA,KAAM,EACN,SA3BS,EAAQ,IAAQ,CAAA,GAAgB,EAAK,EAAQ,EAAK,CAAC,CAAC,EA4B7D,MA3BM,EAAQ,IAAQ,CAAA,EAEtB,CACE,CAAA,GAAa,KAAK,EAClB,GAAU,IAAK,CAAmB,EAClC,CAAA,GAAY,KAAK,EACjB,CAAA,GAAa,KAAK,EAClB,EAAK,EAAQ,EAAK,CAAC,EACnB,GAAU,IAAK,CAAmB,CACpC,CACF,EAkBE,QACA,KAAM,EAAQ,EAAK,EAAK,IAAS,CAC/B,KAAM,CAAA,EAAgB,CAAI,CAC5B,EACA,OAAQ,EAAQ,EAAK,EAAK,IAAS,CACjC,KAAM,CAAA,EAAkB,CAAI,CAC9B,CACF,EACA,EAAU,GACK,IACH,IACI,KACA,IACH,KACI,EAAK,EAAQ,IAAQ,CAClC,IAAM,EAAM,CAAA,EAAa,EAAM,EAAQ,CAAG,CAAC,EAE3C,OADI,EAAO,EAAI,MAAA,IAAoB,EAAI,IAAM,GACtC,CACT,KACY,EAAK,EAAQ,IAAQ,CAC/B,IAAM,EAAO,EAAI,MAAM,CAAC,EACtB,EAAU,EAAQ,GACpB,GAAI,EAAS,OAAO,EAAQ,EAAQ,EAAK,EAAK,CAAI,EAClD,GAAI,EAAU,GAAO,OAAO,GAAO,EAAQ,EAAK,CAAI,GAAK,EAAM,CAAG,EAClE,IAAM,EAAQ,GAAU,GACxB,GAAI,EAAO,MAAO,CAAA,GAAa,CAAK,EACpC,IAAM,EAAW,GAAa,GAC9B,OAAO,EACH,IAAgB,EAAU,EAAK,EAAQ,EAAK,CAAC,CAAC,EAC9C,EAAW,GACT,CAAA,EAAY,CAAI,EACf,EAAQ,IAAS,EAAM,CAAG,CACnC,CACF,EACA,GAAQ,EAAQ,EAAK,IAAc,CACjC,IAAM,EAAM,EAAI,GACd,EAAO,EAAO,GAChB,GAAI,GAAQ,KAAM,OAAO,KACzB,EAAI,IAAM,EACV,IAAI,EAAM,EAAO,EAAM,GAKvB,OAJI,GAAa,IAAA,GAAoB,EAAI,KACvC,EAAO,OAAO,EAAI,GAAI,EAAA,EAAY,EAAI,MAAM,CAAC,CAAC,EAC9C,EAAM,EAAI,IAEL,EAAQ,EAAK,GAAG,EAAK,EAAQ,CAAG,GAAK,IAC9C,EACA,GAAQ,EAAQ,IAAQ,CACtB,IAAM,EAAO,EAAK,EAAQ,CAAG,EAC7B,GAAI,CAAC,EAAM,OAAO,KAClB,IAAI,EAAA,EACE,EAAM,EAAI,GAChB,GAAI,EAAO,KAAA,EAAkB,CAC3B,IAAM,EAAM,EAAW,EAAO,EAAM,IAChC,IACF,EAAS,EACT,EAAI,IAAM,EAEd,CACA,IAAI,EAAM,KACR,EAAM,KACN,EACF,MAAQ,EAAO,EAAO,EAAI,MAAQ,MAAM,CACtC,GAAI,IAAA,GAAmB,EAAO,EAAI,GAAK,KAAO,IAAK,CACjD,IAAI,EAAQ,EACZ,KAAO,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,KACzD,EAAE,EACF,EAAI,IAAM,EAEZ,EAAM,CAAA,EAAU,IAAI,OAAO,CAAK,CAAC,EACjC,QACF,CACA,GAAI,IAAA,GAAoB,IAAA,EAAkB,MAC1C,EAAI,IAAM,EACN,IAAA,EAAkB,EAAM,EAAK,EAAQ,EAAK,CAAC,EAC1C,EAAM,EAAK,EAAQ,EAAK,CAAC,CAChC,CACA,OAAO,EACH,EACE,GAAc,EAAM,EAAK,EAAK,CAAM,EACpC,GAAW,EAAM,EAAK,CAAM,EAC9B,EACE,GAAW,EAAM,EAAK,CAAM,EAC5B,CACR,EACA,GAAS,EAAQ,IAAQ,CACvB,IAAM,EAAQ,CAAC,EACX,EACJ,MAAQ,EAAO,EAAO,EAAI,MAAQ,MAE5B,EADA,IAAA,GAAoB,IAAA,GACpB,IAAA,GAAoB,EAAO,EAAI,GAAK,KAAO,YAFT,CAGtC,IAAM,EAAO,EAAK,EAAQ,CAAG,EACzB,GAAM,EAAM,KAAK,CAAI,CAC3B,CACA,OAAO,CACT,ECrVI,EAAa,CACf,UAAW,KACX,QAAS,CAAC,IAAK,GAAG,EAClB,QAAS,CAAC,IAAK,GAAG,EAClB,QAAS,CAAC,IAAK,GAAG,EAClB,QAAS,CAAC,IAAK,GAAG,EAClB,MAAO,CAAC,IAAK,EAAE,CACjB,EACA,EAAO,OACP,EAAqB,GACH,mEACG,6IACF,6HACnB,EACA,EAAe,CACb,UAAW,KACX,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,CACP,EACA,EAAU,CACR,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACP,EACA,EAAO,GAAQ,EAAI,QAAQ,UAAY,GAAM,EAAQ,EAAE,EACvD,GAAQ,EAAU,EAAO,IACvB,IAAM,GAAY,GAAQ,IAAM,IAAM,EAAQ,KAAO,EAAW,IAClE,GAAO,EAAM,EAAK,IAAS,EAAK,EAAM,EAAI,CAAG,EAAG,CAAI,EACpD,GAAQ,EAAM,EAAI,EAAI,IAAO,EAAK,EAAM,EAAI,CAAE,EAAI,EAAI,CAAE,GAAK,EAAK,EAAI,CAAE,EAAI,GAAG,EAC/E,EAAO,GAAM,CACX,GAAI,CAAC,EAAG,OAAO,EAAK,EAAM,EAAE,EAC5B,GAAM,CAAC,EAAM,GAAO,EACpB,OAAO,IAAA,EACH,EAAI,GACF,EAAK,EAAM,EAAI,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EACjC,EAAI,EAAI,EAAE,EACZ,IAAA,EACE,EAAK,EAAM,EAAK,CAAC,CAAC,EAClB,EAAK,CAAC,CACd,EACA,GAAU,EAAI,EAAQ,EAAS,IAC7B,IAAA,GACC,IAAA,IAA6B,EAAG,KAAO,KAAQ,EAAG,KAAA,GAAoB,EAAa,EAAG,KACnF,EACA,EACN,GAAW,GACM,GAAM,EAAI,KAAM,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAM,EAAI,KAAM,EAAE,EAAE,IACrB,GAAM,EAAI,KAAM,EAAE,GAAI,EAAE,EAAE,IACxB,GAAM,EAAI,KAAM,EAAE,EAAE,EAAI,eACvB,GAAM,EAAE,EAAE,CAAC,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,IAC7B,GAAM,EAAK,QAAS,EAAE,GAAI,EAAE,EAAE,IAC/B,GAAM,EAAK,EAAO,EAAE,GAAI,EAAE,GAAI,QAAS,MAAM,EAAG,EAAE,GAAI,EAAE,EAAE,IAC1D,GAAM,EAAK,EAAO,EAAE,GAAI,EAAE,GAAI,SAAU,MAAM,EAAG,EAAE,GAAI,EAAE,EAAE,IACxD,GAAM,EAAK,EAAO,EAAE,GAAI,EAAE,GAAI,aAAc,SAAS,EAAG,EAAE,GAAI,EAAE,GAAI,EAAE,EAAE,KAC1E,GAAM,EAAI,QAAS,EAAE,EAAE,CAAC,QAAQ,KAAM,MAAQ,CAAC,KAC9C,GAAM,kBAAoB,EAAE,GAAK,iBACjC,GAAM,EAAK,QAAS,EAAI,EAAE,EAAE,CAAC,KAC7B,GAAM,EAAK,QAAS,EAAE,GAAI,EAAE,EAAE,KACzB,GAAM,EAAK,EAAM,EAAE,EAAE,CAAC,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,CAAC,KAC1C,GAAM,EAAK,QAAS,EAAE,GAAI,CAAA,EAAU,GAAG,CAAC,KACxC,GAAM,CACtB,IAAM,EAAQ,EAAmB,EAAE,IACnC,OAAO,EAAQ,QAAU,EAAQ,IAAM,EAAI,EAAE,EAAE,EAAI,UAAY,EAAI,EAAE,EAAE,CACzE,KACkB,GAAM,EAAK,WAAY,EAAI,EAAE,EAAE,CAAC,KAClC,GAAM,CACpB,IAaE,EAAM,EAAK,SAbC,EAAE,EAAE,CACb,IAAK,GACJ,EACE,MACA,EACG,IAAK,GAAM,CACV,IAAM,EAAO,EAAE,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,EAChC,OAAO,EAAK,MAAO,EAAE,GAAK,EAAK,EAAM,CAAI,EAAI,CAAI,CACnD,CAAC,CAAC,CACD,KAAK,EAAE,CACZ,CACF,CAAC,CACA,KAAK,EACiB,CAAC,EAC1B,EAAM,EAAW,EAAE,IACrB,GAAI,EAAK,CACP,GAAM,CAAC,EAAI,GAAM,EACjB,OAAO,EAAK,GAAO,EAAK,EAAI,KAAM,CAAE,EAAI,IAAM,GAAO,EAAK,EAAI,KAAM,CAAE,EAAI,GAAG,CAC/E,CACA,OAAO,CACT,SACwB,uCAC1B,EACA,EAAQ,GAAO,EAAI,GAAS,EAAE,GAAG,CAAC,CAAC,EAAI,GAEzC,IAAA,IAAgB,EAAK,IAAU,CAC7B,IAAM,EAAQ,EAAI,SAAS;CAAI,GAAK,EAAI,SAAS,IAAI,EAAI,EAAI,QAAQ,WAAY,GAAG,EAAI,EACxF,MACE,oDACC,EAAQ,mBAAqB,IAC9B,qBACA,EAAMA,EAAI,CAAK,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,EACxC,mDACA,EAAI,CAAK,EACT,kCAEJ"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@webc.site/math","version":"0.1.
|
|
1
|
+
{"name":"@webc.site/math","version":"0.1.29","description":"The world's smallest and fastest web Markdown formula renderer / 全球最小最快的网页Markdown公式渲染器","keywords":["markdown","math","mathml","render","tex"],"homepage":"https://math.webc.site","license":"MulanPSL-2.0","author":"i18n.site@gmail.com","repository":{"type":"git","url":"git+https://github.com/webc-site/math.git"},"type":"module","exports":{".":{"types":"./mathml.d.ts","default":"./mathml.js"},"./md.js":{"types":"./md.d.ts","default":"./md.js"},"./*":"./*"},"dependencies":{}}
|