@webc.site/math 0.1.26 → 0.1.30

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 CHANGED
@@ -183,21 +183,19 @@ To resolve this issue, organizations like Igalia and Mozilla refactored the spec
183
183
 
184
184
  In January 2023, Chrome 109 reintroduced support for the MathML Core specification. With Blink, Gecko, and WebKit all natively supporting this subset, web browsers achieved consistent native MathML rendering. This project compiles TeX directly to native MathML markup at compile time, eliminating client-side layout engines and avoiding client-side rendering overhead.
185
185
 
186
+
186
187
  ---
187
188
 
188
189
  <a id="zh"></a>
189
-
190
190
  # @webc.site/math : 全球最小最快的网页 Markdown 公式渲染器
191
191
 
192
192
  - [@webc.site/math : 全球最小最快的网页 Markdown 公式渲染器](#webcsitemath-全球最小最快的网页-markdown-公式渲染器)
193
193
  - [1. 功能介绍](#1-功能介绍)
194
194
  - [2. 使用演示](#2-使用演示)
195
- - [编译示例](#编译示例)
196
- - [直接渲染 TeX 公式](#直接渲染-tex-公式)
197
- - [替换 Markdown 文本中的公式](#替换-markdown-文本中的公式)
195
+ - [直接渲染 TeX 公式](#直接渲染-tex-公式)
196
+ - [替换 Markdown 文本中的公式](#替换-markdown-文本中的公式)
198
197
  - [字体与 CSS 配置](#字体与-css-配置)
199
- - [CSS 样式配置](#css-样式配置)
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 标签。处理速度达每秒 300,000 次以上,为 KaTeX 的 3 倍以上,MathJax 的 40 倍以上。
216
- - **轻量化**:核心包体积 7.69 KB(Gzip 压缩后 3.56 KB),无外部依赖。
217
- - **零运行开销**:完全依赖浏览器原生引擎排版与渲染,无需加载客户端 JavaScript 排版库。
218
- - **高容错性**:自动捕获语法错误(例如未闭合括号),降级输出原始 TeX 字符串,保证应用运行稳定。
219
- - **强兼容性**:生成的 MathML 标签符合标准,适配服务端渲染(SSR)、静态网站生成(SSG)和客户端渲染(CSR)。
213
+ - **高性能**:TeX 公式直接转换为原生 MathML 标签,处理速度达每秒 300,000 次以上
214
+ - **轻量化**:核心包体积 7.69 KB(Gzip 压缩后 3.56 KB),无外部依赖
215
+ - **零运行开销**:完全依赖浏览器原生引擎排版与渲染
216
+ - **高容错性**:自动捕获语法错误,降级输出原始 TeX 字符串
217
+ - **强兼容性**:生成标准 MathML 标签,适配 SSRSSGCSR
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
- #### 替换 Markdown 文本中的公式
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
- 配置数学字体以确保排版对齐。推荐使用 `18s` 字体包中的 Latin Modern Math 字体。
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
- 本项目为主流 Markdown 解析器提供了扩展插件,在编译/构建时直接将 TeX 公式渲染为 MathML 标签。
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";
@@ -319,47 +313,47 @@ const processor = unified()
319
313
  .use(mathRemark)
320
314
  .use(remarkHtml, { sanitize: false });
321
315
 
322
- const html = await processor.process("行内公式: $E = mc^2$ 和 块级公式: \n$$\n\\frac{a}{b}\n$$");
316
+ const html = await processor.process(
317
+ "行内公式: $E = mc^2$ 和 块级公式: \n$$\n\\frac{a}{b}\n$$",
318
+ );
323
319
  console.log(String(html));
324
320
  ```
325
321
 
326
322
  ## 4. 设计思路
327
323
 
328
- 编译器从输入的 Markdown 文本中提取 TeX 公式,依次通过扫描、词法分析、语法分析,最终生成对应的语义化 MathML 标记。
324
+ 编译器从输入文本中提取 TeX 公式,依次通过扫描、词法分析、语法分析,最终生成语义化 MathML 标记。
329
325
 
330
- ![](https://fastly.jsdelivr.net/gh/webc-fs/-@GG/MT3SwQ2cp0w8_G8cxZsQ.svg)
326
+ ![](https://fastly.jsdelivr.net/gh/webc-fs/-@gq/L4enESoVQsPqCvjpDYmA.svg)
331
327
 
332
328
  ## 5. 技术栈
333
329
 
334
- - **运行环境**:Bun, Node.js
335
- - **语法检查与格式化**:oxlint, oxfmt
336
- - **构建工具**:Vite, Rolldown, Lightning CSS
330
+ - **运行环境**:Node.js, Bun
331
+ - **构建工具**:Rolldown, Vite
332
+ - **样式处理**:Lightning CSS
333
+ - **代码质量**:oxlint, oxfmt
337
334
 
338
335
  ## 6. 代码结构
339
336
 
340
337
  ```
341
338
  .
342
- ├── demo/ # 演示页面
343
- ├── extract/ # 测试用例提取脚本
344
339
  ├── lib/ # 编译产物目录
345
- │ ├── mathml.js # 核心编译器(压缩版)
346
- │ └── md.js # Markdown 公式解析器(压缩版)
340
+ │ ├── mathml.js # 核心编译器
341
+ │ └── md.js # Markdown 公式解析器
347
342
  ├── src/ # 源代码
348
343
  │ ├── const/ # Token、AST 节点、符号和函数常量定义
349
344
  │ ├── lex.js # LaTeX 词法分析器
350
345
  │ ├── parse.js # LaTeX 语法分析器
351
346
  │ ├── mathml.js # TeX 至 MathML 核心编译器
352
347
  │ └── md.js # Markdown 公式解析入口
353
- ├── sh/ # 脚本目录
354
- └── test.sh # 代码规范与测试运行脚本
348
+ ├── demo/ # 演示页面
349
+ ├── extract/ # 测试用例提取脚本
350
+ └── sh/ # 构建脚本
355
351
  ```
356
352
 
357
353
  ## 7. 历史故事
358
354
 
359
355
  1998 年,W3C 发布 MathML 1.0 规范,旨在提供万维网数学公式的标准排版方案。由于早期规范复杂,给浏览器排版引擎带来维护负担。
360
356
 
361
- 2013 年,Chromium 团队因维护成本与安全漏洞考量,移除了 Blink 引擎中的 MathML 渲染代码。网页公式排版转为依赖第三方 JavaScript 库(如 MathJax、KaTeX)模拟公式布局。这增加了网页资源体积,并消耗客户端 CPU 资源,影响页面加载与渲染速度。
362
-
363
- 为了解决该困境,Igalia、Mozilla 等团队推动了规范的重构,形成聚焦核心、易于实现的 MathML Core 标准,并进行了 Web 平台测试。
357
+ 2013 年,Chromium 团队因维护成本与安全漏洞考量,移除了 Blink 引擎中的 MathML 渲染代码。网页公式排版转为依赖第三方 JavaScript 库(如 MathJax、KaTeX)模拟公式布局。
364
358
 
365
- 2023 年 1 月,Chrome 109 重新支持 MathML Core 标准,Blink、Gecko 和 WebKit 三大主流浏览器引擎实现原生 MathML 渲染支持。本项目在此背景下开发,将 TeX 在构建期或服务端直接编译为原生 MathML 标记,消除客户端排版计算开销。
359
+ 2023 年 1 月,Chrome 109 重新支持 MathML Core 标准,Blink、Gecko 和 WebKit 三大主流浏览器引擎实现原生 MathML 渲染支持。本项目在此背景下开发,将 TeX 在构建期或服务端直接编译为原生 MathML 标记。
package/mathml.js CHANGED
@@ -1,2 +1 @@
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&&!(s!==5&&s!==6);)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={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`},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
- `)||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};
1
+ const e={_:5,"^":6,"{":7,"}":8,"(":9,")":10},t=e=>(e|32)-97>>>0<26,n=(e,t)=>e.charCodeAt(t)<=32?n(e,t+1):t,r=/\d+(?:\.\d+)?|\.\d+/y,i=/\\(?:[a-zA-Z]+|.)/y;var a=a=>{let o=[],s=a.length,c=0;for(;c<s&&(c=n(a,c),!(c>=s));){i.lastIndex=c;let l=i.exec(a);if(l){let e=l[0];if(c+=e.length,e===`\\text`){let e=n(a,c);if(a.charCodeAt(e)===123){let t=1,n=e;for(;n<s&&t;){let e=a.charCodeAt(++n);e===123?++t:e===125&&--t}if(!t){o.push(4,`\\text`,7,`{`,2,a.slice(e+1,n),8,`}`),c=n+1;continue}}}o.push(4,e);continue}if(r.lastIndex=c,l=r.exec(a),l){let e=l[0];o.push(1,e),c+=e.length;continue}if(t(a.charCodeAt(c))){o.push(2,a[c]),++c;continue}let u=a[c];o.push(e[u]??3,u),++c}return o.push(0,``),o};const o=` stretchy="false"`,s=e=>` lspace="`+e+`px" rspace="`+e+`px"`,c=` mathvariant="normal"`,l=o,u=o+s(0),d=s(4),f=s(5),p={__proto__:null},m=(e,t,n)=>{e.replace(/([a-zA-Z]+)([^a-zA-Z]+)/g,(e,r,i)=>{p[r]=n?[t,i,n]:[t,i]})};m(`alphaαbetaβgammaγthetaθpiπdeltaδepsilonϵzetaζetaηiotaιkappaκlambdaλmuμnuνxiξrhoρsigmaσtauτupsilonυphiϕchiχpsiψomegaωellℓhbarℏneg¬`,1),m(`DeltaΔGammaΓThetaΘLambdaΛXiΞPiΠSigmaΣUpsilonΥPhiΦPsiΨOmegaΩinfty∞nablapartial∂forall∀exists∃emptyset∅`,1,c),m(`prime′cdot⋅times×pm±div÷sum∑int∫leftrightarrow↔Leftarrow⇐Rightarrow⇒Leftrightarrow⇔cdots⋯in∈notin∉subset⊂supset⊃subseteq⊆supseteq⊇cup∪cap∩to→rightarrow→leftarrow←gets←dots…ldots…le≤leq≤ge≥geq≥`,3),m(`neq≠ne≠`,3,c),m(`mp∓lorland∧`,3,d),m(`approx≈sim∼cong≅propto∝equiv≡ni∋perpparallel∥`,3,f),`sin cos tan cot sec csc log lg ln lim exp max min sup inf det gcd arcsin arccos arctan sinh cosh tanh coth deg arg`.replace(/\w+/g,e=>p[e]=[9,e]),p.quad=[17,`16px`],p.qquad=[17,`32px`];const h={"\\limits":1,"\\nolimits":2},g={__proto__:null,boxed:1,cancel:2,sout:3},_={"-":[3,`−`],"*":[3,`∗`],"/":[3,`/`,c],"(":[3,`(`,l],")":[3,`)`,l],"[":[3,`[`,l],"]":[3,`]`,l],"|":[3,`|`,u],".":[3,`.`,c],"'":[3,`′`]},v=(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,r===`<`?`⟨`:r===`>`?`⟩`:r[0]===`\\`?r.slice(1):r]},y=(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}},b=(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``},x=(e,t,n,r)=>{let i=[],a=[],o=[];for(;e[t[0]]>0;){let s=e[t[0]],c=e[t[0]+1];if(!n&&s===8)break;if(n&&s===4&&c===`\\end`){let n=t[0];if(t[0]+=2,b(e,t)===r)break;t[0]=n}if(s===3&&c===`&`||s===4&&c===`\\\\`){t[0]+=2,a.push(o),o=[],c===`\\\\`&&(y(e,t,1),i.push(a),a=[]);continue}let l=j(e,t);l&&o.push(l)}return(o.length||a.length)&&(a.push(o),i.push(a)),i.length&&!i[i.length-1][1]&&!i[i.length-1][0][0]&&i.pop(),i},S=(e,t,n)=>{if(e[t[0]]===7){t[0]+=2;let r=x(e,t,0,n);return e[t[0]]===8&&(t[0]+=2),[14,n,r]}let r=A(e,t,1);return r?[14,n,[[[r]]]]:null},C=(e,t)=>{if(e[t[0]]===7){let n=b(e,t);if(n===``)return[8,[]];let r=n.split(`\\\\`);return r.length>1?[8,r.flatMap((e,t)=>[...t?[[15]]:[],...e?[[16,e]]:[]])]:[16,n]}let n=A(e,t,1);if(n)return[16,n[1]];throw[3,`text`]},w=(e,t,n)=>{if(e[t[0]]===7){let n=b(e,t);return n===`array`&&(y(e,t),e[t[0]]===7?b(e,t):e[t[0]]>0&&(t[0]+=2)),[14,n,x(e,t,1,n)]}return[1,n]},T=(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=j(e,t);r&&n.push(r)}return e[t[0]]===3&&(t[0]+=2),[11,A(e,t,1),[8,n]]}return[10,A(e,t,1)]},E=(e,t)=>{let n=v(e,t),r=M(e,t);if(e[t[0]]===4&&e[t[0]+1]===`\\right`)return t[0]+=2,[12,[n,...r,v(e,t)].filter(Boolean)];throw[1,n]},D=(e,t)=>[13,A(e,t,1)],O={__proto__:null,"\\":(e,t)=>(e[t[0]]===3&&e[t[0]+1]===`*`&&(t[0]+=2),y(e,t,1),[15]),text:C,frac:(e,t)=>[7,A(e,t,1),A(e,t,1)],overline:D,bar:D,sqrt:T,left:E,phantom:(e,t)=>[19,A(e,t,1)],pmod:(e,t)=>[8,[[17,`8px`],_[`(`],[16,`mod`],[17,`4px`],A(e,t,1),_[`)`]]],begin:w,end:(e,t,n,r)=>{throw[0,r]},right:(e,t,n,r)=>{throw[2,r]}},k={2:e=>[1,e],3:e=>_[e]??[3,e],9:()=>_[`(`],10:()=>_[`)`],1:e=>[2,e],7:(e,t,n)=>{let r=[8,M(t,n)];return t[n[0]]===8&&(n[0]+=2),r},4:(e,t,n)=>{let r=e.slice(1),i=O[r];return i?i(t,n,e,r):/^(?:[pbvV]?matrix|cases|array)$/.test(r)?S(t,n,r)??[1,e]:g[r]?[18,g[r],A(t,n,1)]:p[r]??[1,e]}},A=(e,t,n)=>{let r=t[0],i=e[r];if(!i)return null;let a=e[r+1],o=t[1];return o&&(a=a.slice(o)),n&&i===1&&a[1]?(t[1]=(o||0)+1,a=a[0]):(t[0]+=2,t[1]=0),k[i]?.(a,e,t)??null},j=(e,t)=>{let n=A(e,t);if(!n)return null;let r=0,i=t[0];if(e[i]===4){let n=h[e[i+1]];n&&(r=n,t[0]+=2)}let a=null,o=null,s;for(;(s=e[t[0]])>0;){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=A(e,t,1):o=A(e,t,1)}return a?o?[6,n,a,o,r]:[5,n,a,r]:o?[4,n,o,r]:n},M=(e,t)=>{let n=[],r;for(;(r=e[t[0]])>0&&!(r===8||r===4&&e[t[0]+1]===`\\right`);){let r=j(e,t);r&&n.push(r)}return n},N=`mrow`,P=[null,` style="display:inline-block;border:1px solid;padding:2px 3px"`,` style="display:inline-block;background:linear-gradient(to top right,transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`,` style="display:inline-block;background:linear-gradient(transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`],F={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`},I=e=>e.replace(/[&<>"]/g,e=>F[e]),L=(e,t,n)=>`<`+e+(n||``)+`>`+t+`</`+e+`>`,R=(e,t,n)=>L(e,I(t),n),z=(e,...t)=>L(e,t.map(B).join(``)),B=e=>{if(!e)return L(N,``);let[t,n]=e;return t===8&&!n[1]?B(n[0]):t===8||t===9?L(N,U(e)):U(e)},V=(e,t,n,r)=>t===1||!t&&(e[1]===`∑`||e[0]===9&&/^(lim|max|min|sup|inf)$/.test(e[1]))?n:r,H={1:e=>R(`mi`,e[1],e[2]),2:e=>R(`mn`,e[1]),3:e=>R(`mo`,e[1],e[2]),9:e=>R(`mi`,e[1])+`<mo>⁡</mo>`,8:e=>e[1].map(U).join(``),7:e=>z(`mfrac`,e[1],e[2]),4:e=>z(V(e[1],e[3],`mover`,`msup`),e[1],e[2]),5:e=>z(V(e[1],e[3],`munder`,`msub`),e[1],e[2]),6:e=>z(V(e[1],e[4],`munderover`,`msubsup`),e[1],e[2],e[3]),16:e=>R(`mtext`,e[1].replace(/ /g,`\xA0`)),17:e=>`<mspace width="`+e[1]+`"></mspace>`,10:e=>L(`msqrt`,B(e[1])),11:e=>z(`mroot`,e[1],e[2]),12:e=>L(N,e[1].map(U).join(``)),13:e=>z(`mover`,e[1],[3,`¯`]),18:e=>{let t=P[e[1]];return t?`<mrow`+t+`>`+B(e[2])+`</mrow>`:B(e[2])},19:e=>L(`mphantom`,B(e[1])),14:e=>{let t=e[1]===`cases`,n=t&&e[2].every(e=>{let t=e[1]?.[0];return!t||t[0]===3&&`=<≤≥≠≈≡∝>`.includes(t[1])}),r=L(`mtable`,e[2].map(e=>L(`mtr`,e.map((e,r)=>{let i=e.map(U).join(``);return L(`mtd`,e[1]?L(N,i):i,t?` style="text-align:left`+(n?r?`;padding-left:0`:`;padding-right:0`:``)+`"`:``)}).join(``))).join(``),t?` columnalign="left" rowspacing=".2em" columnspacing="`+(n?`0`:`1em`)+`"`:``),i=`pbvVc`.indexOf(e[1][0]);if(i>=0){let e=`([|‖{`[i],t=`)]‖‖`[i]||``;return L(N,(e?R(`mo`,e):``)+r+(t?R(`mo`,t):``))}return r},15:()=>`<mspace linebreak="newline"></mspace>`},U=e=>e?H[e[0]](e):``;var W=(e,t)=>{let n=e.replace(/[\r\n]+/g,` `);return`<math xmlns="http://www.w3.org/1998/Math/MathML"`+(t?` display="block"`:``)+`><semantics><mrow>`+M(a(n),[0]).map(U).join(``)+`</mrow><annotation encoding="application/x-tex">`+I(n)+`</annotation></semantics></math>`};export{W 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 \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\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/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_TOK = {\n _: TOK_SUB,\n \"^\": TOK_SUP,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n },\n isAlpha = (c) => ((c | 32) - 97) >>> 0 < 26,\n skip = (str, idx) => (str.charCodeAt(idx) <= 32 ? skip(str, idx + 1) : idx),\n NUM_RE = /\\d+(?:\\.\\d+)?|\\.\\d+/y,\n CMD_RE = /\\\\(?:[a-zA-Z]+|.)/y;\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 CMD_RE.lastIndex = idx;\n let m = CMD_RE.exec(str);\n if (m) {\n const cmd = m[0];\n idx += cmd.length;\n if (cmd === \"\\\\text\") {\n const pos = skip(str, idx);\n if (str.charCodeAt(pos) === 123) {\n let braces = 1,\n t_idx = pos;\n while (t_idx < len && braces) {\n const cc = str.charCodeAt(++t_idx);\n cc === 123 ? ++braces : cc === 125 && --braces;\n }\n if (!braces) {\n res.push(\n TOK_CMD,\n \"\\\\text\",\n TOK_LBRACE,\n \"{\",\n TOK_IDENT,\n str.slice(pos + 1, 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\n NUM_RE.lastIndex = idx;\n m = NUM_RE.exec(str);\n if (m) {\n const num = m[0];\n res.push(TOK_NUM, num);\n idx += num.length;\n continue;\n }\n\n const code = str.charCodeAt(idx);\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 = (n) => ' lspace=\"' + n + 'px\" rspace=\"' + n + 'px\"';\n\nexport const ATTR_NORMAL = ' mathvariant=\"normal\"',\n ATTR_STRETCHY_FALSE = FALSE,\n ATTR_BAR = FALSE + space(0),\n ATTR_BIN = space(4),\n ATTR_REL = space(5);\n","import { TYPE_IDENT, TYPE_OP, TYPE_FUNC, TYPE_SPACE } from \"./TYPE.js\";\nimport { ATTR_NORMAL, ATTR_BIN, ATTR_REL } from \"./ATTR.js\";\n\nexport const SYM_MAP = { __proto__: null };\n\nconst parseSymbols = (str, type, attr) => {\n str.replace(/([a-zA-Z]+)([^a-zA-Z]+)/g, (m, k, v) => {\n SYM_MAP[k] = attr ? [type, v, attr] : [type, v];\n });\n};\n\nparseSymbols(\n \"alphaαbetaβgammaγthetaθpiπdeltaδepsilonϵzetaζetaηiotaιkappaκlambdaλmuμnuνxiξrhoρsigmaσtauτupsilonυphiϕchiχpsiψomegaωellℓhbarℏneg¬\",\n TYPE_IDENT,\n);\nparseSymbols(\n \"DeltaΔGammaΓThetaΘLambdaΛXiΞPiΠSigmaΣUpsilonΥPhiΦPsiΨOmegaΩinfty∞nabla∇partial∂forall∀exists∃emptyset∅\",\n TYPE_IDENT,\n ATTR_NORMAL,\n);\nparseSymbols(\n \"prime′cdot⋅times×pm±div÷sum∑int∫leftrightarrow↔Leftarrow⇐Rightarrow⇒Leftrightarrow⇔cdots⋯in∈notin∉subset⊂supset⊃subseteq⊆supseteq⊇cup∪cap∩to→rightarrow→leftarrow←gets←dots…ldots…le≤leq≤ge≥geq≥\",\n TYPE_OP,\n);\nparseSymbols(\"neq≠ne≠\", TYPE_OP, ATTR_NORMAL);\nparseSymbols(\"mp∓lor∨land∧\", TYPE_OP, ATTR_BIN);\nparseSymbols(\"approx≈sim∼cong≅propto∝equiv≡ni∋perp⟂parallel∥\", TYPE_OP, ATTR_REL);\n\n// 函数名直接并入 SYM_MAP,消除 FUNC_NAMES\n\"sin cos tan cot sec csc log lg ln lim exp max min sup inf det gcd arcsin arccos arctan sinh cosh tanh coth deg arg\".replace(\n /\\w+/g,\n (e) => (SYM_MAP[e] = [TYPE_FUNC, e]),\n);\n\n// 空格命令直接并入 SYM_MAP,消除 SPACE_MAP\nSYM_MAP.quad = [TYPE_SPACE, \"16px\"];\nSYM_MAP.qquad = [TYPE_SPACE, \"32px\"];\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_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\";\n\nimport { ATTR_NORMAL, ATTR_STRETCHY_FALSE, ATTR_BAR } from \"./const/ATTR.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\";\nconst LIMITS_MAP = {\n \"\\\\limits\": 1,\n \"\\\\nolimits\": 2,\n },\n MENCLOSE_MAP = {\n __proto__: null,\n boxed: 1,\n cancel: 2,\n sout: 3,\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 = (tokens, ref) => {\n const idx = ref[0];\n if (tokens[idx] == 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, val === \"<\" ? \"⟨\" : val === \">\" ? \"⟩\" : val[0] === \"\\\\\" ? val.slice(1) : val];\n },\n opt = (tokens, ref, check_num) => {\n let idx = ref[0];\n if (\n tokens[idx] === TOK_OP &&\n tokens[idx + 1] === \"[\" &&\n (!check_num || tokens[idx + 2] === TOK_NUM)\n ) {\n idx += 2;\n while (tokens[idx] > 0 && (tokens[idx] !== TOK_OP || tokens[idx + 1] !== \"]\")) {\n idx += 2;\n }\n tokens[idx] === TOK_OP && (idx += 2);\n ref[0] = idx;\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] > 0 && tokens[idx] !== TOK_RBRACE) {\n str += tokens[idx + 1];\n idx += 2;\n }\n 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 (tokens[ref[0]] > 0) {\n const type = tokens[ref[0]],\n val = tokens[ref[0] + 1];\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 === \"&\") || (type === TOK_CMD && val === \"\\\\\\\\\")) {\n ref[0] += 2;\n row.push(cell);\n cell = [];\n if (val === \"\\\\\\\\\") {\n opt(tokens, ref, 1);\n rows.push(row);\n row = [];\n }\n continue;\n }\n const node = grab(tokens, ref);\n if (node) cell.push(node);\n }\n (cell.length || row.length) && (row.push(cell), rows.push(row));\n if (rows.length && !rows[rows.length - 1][1] && !rows[rows.length - 1][0][0]) {\n rows.pop();\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 return [\n TYPE_GROUP,\n parts.flatMap((p, i) => [\n ...(i ? [[TYPE_LINEBREAK]] : []),\n ...(p ? [[TYPE_TEXT, p]] : []),\n ]),\n ];\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 [3, \"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 tokens[ref[0]] === TOK_LBRACE ? brace(tokens, ref) : tokens[ref[0]] > 0 && (ref[0] += 2);\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 (tokens[ref[0]] > 0 && (tokens[ref[0]] !== TOK_OP || tokens[ref[0] + 1] !== \"]\")) {\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 [1, 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 CHAR_MAP[\"(\"],\n [TYPE_TEXT, \"mod\"],\n [TYPE_SPACE, \"4px\"],\n read(tokens, ref, 1),\n CHAR_MAP[\")\"],\n ],\n ],\n CMD_MAP = {\n __proto__: null,\n \"\\\\\": (tokens, ref) => {\n tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"*\" && (ref[0] += 2);\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 [0, name];\n },\n right: (tokens, ref, val, name) => {\n throw [2, name];\n },\n },\n TOK_MAP = {\n [TOK_IDENT]: (val) => [TYPE_IDENT, val],\n [TOK_OP]: (val) => CHAR_MAP[val] ?? [TYPE_OP, val],\n [TOK_LPAREN]: () => CHAR_MAP[\"(\"],\n [TOK_RPAREN]: () => CHAR_MAP[\")\"],\n [TOK_NUM]: (val) => [TYPE_NUM, val],\n [TOK_LBRACE]: (val, tokens, ref) => {\n const res = [TYPE_GROUP, parse(tokens, ref)];\n 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 return handler\n ? handler(tokens, ref, val, name)\n : /^(?:[pbvV]?matrix|cases|array)$/.test(name)\n ? (matrix(tokens, ref, name) ?? [TYPE_IDENT, val])\n : MENCLOSE_MAP[name]\n ? [TYPE_MENCLOSE, MENCLOSE_MAP[name], read(tokens, ref, 1)]\n : (SYM_MAP[name] ?? [TYPE_IDENT, val]);\n },\n },\n read = (tokens, ref, split_num) => {\n const idx = ref[0],\n type = tokens[idx];\n if (!type) return null;\n let val = tokens[idx + 1];\n const offset = ref[1];\n offset && (val = val.slice(offset));\n if (split_num && type === TOK_NUM && val[1]) {\n ref[1] = (offset || 0) + 1;\n val = val[0];\n } else {\n ref[0] += 2;\n ref[1] = 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 = 0;\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]]) > 0) {\n if (type === TOK_OP && tokens[ref[0] + 1] === \"'\") {\n let count = 0;\n while (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"'\") (count++, (ref[0] += 2));\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]]) > 0) {\n if (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 lex from \"./lex.js\";\nimport parse from \"./parse.js\";\n\nconst MROW = \"mrow\",\n STYLES = [null, STYLE_BOX, STYLE_CANCEL, STYLE_SOUT],\n ESC_MAP = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\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, ...ns) => wrap(name, ns.map(row).join(\"\")),\n row = (n) => {\n if (!n) return wrap(MROW, \"\");\n const [type, val] = n;\n return type === TYPE_GROUP && !val[1]\n ? row(val[0])\n : type === TYPE_GROUP || type === TYPE_FUNC\n ? wrap(MROW, show(n))\n : show(n);\n },\n script = (n1, limits, display, inline) =>\n limits === 1 ||\n (!limits && (n1[1] === \"∑\" || (n1[0] === TYPE_FUNC && /^(lim|max|min|sup|inf)$/.test(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 = STYLES[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 is_cases = n[1] === \"cases\",\n has_rel =\n is_cases &&\n n[2].every((r) => {\n const node = r[1]?.[0];\n return !node || (node[0] === TYPE_OP && \"=<≤≥≠≈≡∝>\".includes(node[1]));\n }),\n inner = n[2]\n .map((r) =>\n wrap(\n \"mtr\",\n r\n .map((c, i) => {\n const html = c.map(show).join(\"\");\n return wrap(\n \"mtd\",\n c[1] ? wrap(MROW, html) : html,\n is_cases\n ? ' style=\"text-align:left' +\n (has_rel ? (i ? \";padding-left:0\" : \";padding-right:0\") : \"\") +\n '\"'\n : \"\",\n );\n })\n .join(\"\"),\n ),\n )\n .join(\"\"),\n tbl = wrap(\n \"mtable\",\n inner,\n is_cases\n ? ' columnalign=\"left\" rowspacing=\".2em\" columnspacing=\"' +\n (has_rel ? \"0\" : \"1em\") +\n '\"'\n : \"\",\n ),\n idx = \"pbvVc\".indexOf(n[1][0]);\n if (idx >= 0) {\n const d0 = \"([|‖{\"[idx],\n d1 = \")]‖‖\"[idx] || \"\";\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.replace(/[\\r\\n]+/g, \" \");\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,MCUM,EAAW,CACb,EAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACF,EACA,EAAW,IAAQ,EAAI,IAAM,KAAQ,EAAI,GACzC,GAAQ,EAAK,IAAS,EAAI,WAAW,CAAG,GAAK,GAAK,EAAK,EAAK,EAAM,CAAC,EAAI,EACvE,EAAS,uBACT,EAAS,qBAEX,IAAA,EAAgB,GAAQ,CACtB,IAAM,EAAM,CAAC,EACX,EAAM,EAAI,OACR,EAAM,EACV,KAAO,EAAM,IACX,EAAM,EAAK,EAAK,CAAG,EACf,KAAO,KAFK,CAIhB,EAAO,UAAY,EACnB,IAAI,EAAI,EAAO,KAAK,CAAG,EACvB,GAAI,EAAG,CACL,IAAM,EAAM,EAAE,GAEd,GADA,GAAO,EAAI,OACP,IAAQ,SAAU,CACpB,IAAM,EAAM,EAAK,EAAK,CAAG,EACzB,GAAI,EAAI,WAAW,CAAG,IAAM,IAAK,CAC/B,IAAI,EAAS,EACX,EAAQ,EACV,KAAO,EAAQ,GAAO,GAAQ,CAC5B,IAAM,EAAK,EAAI,WAAW,EAAE,CAAK,EACjC,IAAO,IAAM,EAAE,EAAS,IAAO,KAAO,EAAE,CAC1C,CACA,GAAI,CAAC,EAAQ,CACX,EAAI,KAAA,EAEF,SAAA,EAEA,IAAA,EAEA,EAAI,MAAM,EAAM,EAAG,CAAK,EAAA,EAExB,GACF,EACA,EAAM,EAAQ,EACd,QACF,CACF,CACF,CACA,EAAI,KAAA,EAAc,CAAG,EACrB,QACF,CAIA,GAFA,EAAO,UAAY,EACnB,EAAI,EAAO,KAAK,CAAG,EACf,EAAG,CACL,IAAM,EAAM,EAAE,GACd,EAAI,KAAA,EAAc,CAAG,EACrB,GAAO,EAAI,OACX,QACF,CAGA,GAAI,EADS,EAAI,WAAW,CACb,CAAC,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,EC1FA,MAAM,EAAQ,oBACZ,EAAS,GAAM,YAAc,EAAI,eAAiB,EAAI,MAE3C,EAAc,wBACzB,EAAsB,EACtB,EAAW,EAAQ,EAAM,CAAC,EAC1B,EAAW,EAAM,CAAC,EAClB,EAAW,EAAM,CAAC,ECJP,EAAU,CAAE,UAAW,IAAK,EAEnC,GAAgB,EAAK,EAAM,IAAS,CACxC,EAAI,QAAQ,4BAA6B,EAAG,EAAG,IAAM,CACnD,EAAQ,GAAK,EAAO,CAAC,EAAM,EAAG,CAAI,EAAI,CAAC,EAAM,CAAC,CAChD,CAAC,CACH,EAEA,EACE,oIAAA,CAEF,EACA,EACE,yGAAA,EAEA,CACF,EACA,EACE,mMAAA,CAEF,EACA,EAAa,UAAA,EAAoB,CAAW,EAC5C,EAAa,eAAA,EAAyB,CAAQ,EAC9C,EAAa,iDAAA,EAA2D,CAAQ,EAGhF,qHAAqH,QACnH,OACC,GAAO,EAAQ,GAAK,CAAA,EAAY,CAAC,CACpC,EAGA,EAAQ,KAAO,CAAA,GAAa,MAAM,EAClC,EAAQ,MAAQ,CAAA,GAAa,MAAM,ECAnC,MAAM,EAAa,CACf,WAAY,EACZ,aAAc,CAChB,EACA,EAAe,CACb,UAAW,KACX,MAAO,EACP,OAAQ,EACR,KAAM,CACR,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,GAAS,EAAQ,IAAQ,CACvB,IAAM,EAAM,EAAI,GAChB,GAAI,EAAO,IAAQ,KAAM,OAAO,KAChC,EAAI,IAAM,EACV,IAAM,EAAM,EAAO,EAAM,GAEzB,OADI,IAAQ,IAAY,GAAU,GAAI,gDAAgD,EAC/E,CAAA,EAAU,IAAQ,IAAM,IAAM,IAAQ,IAAM,IAAM,EAAI,KAAO,KAAO,EAAI,MAAM,CAAC,EAAI,CAAG,CAC/F,EACA,GAAO,EAAQ,EAAK,IAAc,CAChC,IAAI,EAAM,EAAI,GACd,GACE,EAAO,KAAA,GACP,EAAO,EAAM,KAAO,MACnB,CAAC,GAAa,EAAO,EAAM,KAAA,GAC5B,CAEA,IADA,GAAO,EACA,EAAO,GAAO,IAAM,EAAO,KAAA,GAAmB,EAAO,EAAM,KAAO,MACvE,GAAO,EAET,EAAO,KAAA,IAAoB,GAAO,GAClC,EAAI,GAAK,CACX,CACF,EACA,GAAS,EAAQ,IAAQ,CACvB,IAAI,EAAM,EAAI,GACd,GAAI,EAAO,KAAA,EAAqB,CAC9B,GAAO,EACP,IAAI,EAAM,GACV,KAAO,EAAO,GAAO,GAAK,EAAO,KAAA,GAC/B,GAAO,EAAO,EAAM,GACpB,GAAO,EAIT,OAFA,EAAO,KAAA,IAAwB,GAAO,GACtC,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,EAAO,EAAI,IAAM,GAAG,CACzB,IAAM,EAAO,EAAO,EAAI,IACtB,EAAM,EAAO,EAAI,GAAK,GACxB,GAAI,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,GAAK,IAAA,GAAmB,IAAQ,KAAS,IAAA,GAAoB,IAAQ,OAAS,CAC5E,EAAI,IAAM,EACV,EAAI,KAAK,CAAI,EACb,EAAO,CAAC,EACJ,IAAQ,SACV,EAAI,EAAQ,EAAK,CAAC,EAClB,EAAK,KAAK,CAAG,EACb,EAAM,CAAC,GAET,QACF,CACA,IAAM,EAAO,EAAK,EAAQ,CAAG,EACzB,GAAM,EAAK,KAAK,CAAI,CAC1B,CAKA,OAJC,EAAK,QAAU,EAAI,UAAY,EAAI,KAAK,CAAI,EAAG,EAAK,KAAK,CAAG,GACzD,EAAK,QAAU,CAAC,EAAK,EAAK,OAAS,EAAE,CAAC,IAAM,CAAC,EAAK,EAAK,OAAS,EAAE,CAAC,EAAE,CAAC,IACxE,EAAK,IAAI,EAEJ,CACT,EACA,GAAU,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,GAAO,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,EAU9B,OATI,EAAM,OAAS,EACV,CAAA,EAEL,EAAM,SAAS,EAAG,IAAM,CACtB,GAAI,EAAI,CAAC,CAAA,EAAe,CAAC,EAAI,CAAC,EAC9B,GAAI,EAAI,CAAC,CAAA,GAAY,CAAC,CAAC,EAAI,CAAC,CAC9B,CAAC,CACH,EAEK,CAAA,GAAY,CAAG,CACxB,CACA,IAAM,EAAO,EAAK,EAAQ,EAAK,CAAC,EAChC,GAAI,EACF,MAAO,CAAA,GAAY,EAAK,EAAE,EAE5B,KAAM,CAAC,EAAG,MAAM,CAClB,EACA,GAAS,EAAQ,EAAK,IAAQ,CAC5B,GAAI,EAAO,EAAI,MAAA,EAAoB,CACjC,IAAM,EAAM,EAAM,EAAQ,CAAG,EAM7B,OALI,IAAQ,UACV,EAAI,EAAQ,CAAG,EACf,EAAO,EAAI,MAAA,EAAqB,EAAM,EAAQ,CAAG,EAAI,EAAO,EAAI,IAAM,IAAM,EAAI,IAAM,IAGjF,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,KAAO,EAAO,EAAI,IAAM,IAAM,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,MAAM,CACtF,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,CAAC,EAAG,CAAI,CAChB,EACA,GAAQ,EAAQ,IAAQ,CAAA,GAAgB,EAAK,EAAQ,EAAK,CAAC,CAAC,EAc5D,EAAU,CACR,UAAW,KACX,MAAO,EAAQ,KACb,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,MAAQ,EAAI,IAAM,GACtE,EAAI,EAAQ,EAAK,CAAC,EACX,CAAA,EAAe,GAExB,KAAM,EACN,MArBM,EAAQ,IAAQ,GAAY,EAAK,EAAQ,EAAK,CAAC,EAAG,EAAK,EAAQ,EAAK,CAAC,CAAC,EAsB5E,SAAU,EACV,IAAK,EACL,OACA,KAAM,EACN,SAzBS,EAAQ,IAAQ,CAAA,GAAgB,EAAK,EAAQ,EAAK,CAAC,CAAC,EA0B7D,MAzBM,EAAQ,IAAQ,CAAA,EAEtB,CACE,CAAA,GAAa,KAAK,EAClB,EAAS,KACT,CAAA,GAAY,KAAK,EACjB,CAAA,GAAa,KAAK,EAClB,EAAK,EAAQ,EAAK,CAAC,EACnB,EAAS,IACX,CACF,EAgBE,QACA,KAAM,EAAQ,EAAK,EAAK,IAAS,CAC/B,KAAM,CAAC,EAAG,CAAI,CAChB,EACA,OAAQ,EAAQ,EAAK,EAAK,IAAS,CACjC,KAAM,CAAC,EAAG,CAAI,CAChB,CACF,EACA,EAAU,GACM,GAAQ,CAAA,EAAa,CAAG,IAC3B,GAAQ,EAAS,IAAQ,CAAA,EAAU,CAAG,QAC7B,EAAS,YACT,EAAS,OACjB,GAAQ,CAAA,EAAW,CAAG,KACnB,EAAK,EAAQ,IAAQ,CAClC,IAAM,EAAM,CAAA,EAAa,EAAM,EAAQ,CAAG,CAAC,EAE3C,OADA,EAAO,EAAI,MAAA,IAAuB,EAAI,IAAM,GACrC,CACT,KACY,EAAK,EAAQ,IAAQ,CAC/B,IAAM,EAAO,EAAI,MAAM,CAAC,EACtB,EAAU,EAAQ,GACpB,OAAO,EACH,EAAQ,EAAQ,EAAK,EAAK,CAAI,EAC9B,kCAAkC,KAAK,CAAI,EACxC,EAAO,EAAQ,EAAK,CAAI,GAAK,CAAA,EAAa,CAAG,EAC9C,EAAa,GACX,IAAgB,EAAa,GAAO,EAAK,EAAQ,EAAK,CAAC,CAAC,EACvD,EAAQ,IAAS,CAAA,EAAa,CAAG,CAC5C,CACF,EACA,GAAQ,EAAQ,EAAK,IAAc,CACjC,IAAM,EAAM,EAAI,GACd,EAAO,EAAO,GAChB,GAAI,CAAC,EAAM,OAAO,KAClB,IAAI,EAAM,EAAO,EAAM,GACjB,EAAS,EAAI,GASnB,OARA,IAAW,EAAM,EAAI,MAAM,CAAM,GAC7B,GAAa,IAAA,GAAoB,EAAI,IACvC,EAAI,IAAM,GAAU,GAAK,EACzB,EAAM,EAAI,KAEV,EAAI,IAAM,EACV,EAAI,GAAK,GAEJ,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,EAAS,EACP,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,KAAO,GAAG,CAClC,GAAI,IAAA,GAAmB,EAAO,EAAI,GAAK,KAAO,IAAK,CACjD,IAAI,EAAQ,EACZ,KAAO,EAAO,EAAI,MAAA,GAAkB,EAAO,EAAI,GAAK,KAAO,KAAK,IAAW,EAAI,IAAM,EACrF,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,KAAO,GAE3B,EADA,IAAA,GACA,IAAA,GAAoB,EAAO,EAAI,GAAK,KAAO,YAFb,CAGlC,IAAM,EAAO,EAAK,EAAQ,CAAG,EACzB,GAAM,EAAM,KAAK,CAAI,CAC3B,CACA,OAAO,CACT,ECvSI,EAAO,OACX,EAAS,CAAC,KAAM,iEAAW,2IAAc,6HAAU,EACnD,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,GAAG,IAAO,EAAK,EAAM,EAAG,IAAI,CAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EACvD,EAAO,GAAM,CACX,GAAI,CAAC,EAAG,OAAO,EAAK,EAAM,EAAE,EAC5B,GAAM,CAAC,EAAM,GAAO,EACpB,OAAO,IAAA,GAAuB,CAAC,EAAI,GAC/B,EAAI,EAAI,EAAE,EACV,IAAA,GAAuB,IAAA,EACrB,EAAK,EAAM,EAAK,CAAC,CAAC,EAClB,EAAK,CAAC,CACd,EACA,GAAU,EAAI,EAAQ,EAAS,IAC7B,IAAW,GACV,CAAC,IAAW,EAAG,KAAO,KAAQ,EAAG,KAAA,GAAoB,0BAA0B,KAAK,EAAG,EAAE,GACtF,EACA,EACN,EAAW,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,EAAO,EAAE,IACvB,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,IAAM,EAAW,EAAE,KAAO,QACxB,EACE,GACA,EAAE,EAAE,CAAC,MAAO,GAAM,CAChB,IAAM,EAAO,EAAE,EAAE,GAAG,GACpB,MAAO,CAAC,GAAS,EAAK,KAAA,GAAkB,YAAY,SAAS,EAAK,EAAE,CACtE,CAAC,EAsBH,EAAM,EACJ,SAtBM,EAAE,EAAE,CACT,IAAK,GACJ,EACE,MACA,EACG,KAAK,EAAG,IAAM,CACb,IAAM,EAAO,EAAE,IAAI,CAAI,CAAC,CAAC,KAAK,EAAE,EAChC,OAAO,EACL,MACA,EAAE,GAAK,EAAK,EAAM,CAAI,EAAI,EAC1B,EACI,2BACG,EAAW,EAAI,kBAAoB,mBAAsB,IAC1D,IACF,EACN,CACF,CAAC,CAAC,CACD,KAAK,EAAE,CACZ,CACF,CAAC,CACA,KAAK,EAGF,EACJ,EACI,yDACG,EAAU,IAAM,OACjB,IACF,EACN,EACA,EAAM,QAAQ,QAAQ,EAAE,EAAE,CAAC,EAAE,EAC/B,GAAI,GAAO,EAAG,CACZ,IAAM,EAAK,QAAQ,GACjB,EAAK,OAAO,IAAQ,GACtB,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,EAAS,EAAE,GAAG,CAAC,CAAC,EAAI,GAEzC,IAAA,GAAgB,EAAK,IAAU,CAC7B,IAAM,EAAQ,EAAI,QAAQ,WAAY,GAAG,EACzC,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/md.js CHANGED
@@ -1 +1 @@
1
- const e=/[\$`\\]/g,t=/[\$\\]/g,n=(n,r,i)=>{let a=i?e:t;return a.lastIndex=r,a.exec(n)?.index??-1};var r=(e,t)=>{let r=e.length,i=``,a=0,o=0,s=0;for(;a<r;)if(o===0){let t=n(e,a,1);if(t===-1){i+=e.slice(a);break}i+=e.slice(a,t);let r=e[t];if(r===`\\`){let n=e[t+1]===`$`;i+=n?`$`:`\\`,a=t+(n?2:1)}else if(r===`$`){let n=e[t+1]===`$`;o=n?4:3,a=t+(n?2:1),s=a}else{let n=e[t+1]==="`"&&e[t+2]==="`";i+=n?"```":"`",o=n?2:1,a=t+(n?3:1)}}else if(o>=3){let c=n(e,a,0);if(c===-1){a=r;break}if(e[c]===`\\`)a=c+(e[c+1]?2:1);else{let n=o===3;if(n||e[c+1]===`$`){let r=e.slice(s,c),l=n?`$`:`$$`;try{i+=t(r,!n)}catch{i+=l+r+l}o=0,a=c+(n?1:2)}else a=c+1}}else{let t=o===1?"`":"```",n=e.indexOf(t,a);if(n===-1){i+=e.slice(a);break}i+=e.slice(a,n)+t,o=0,a=n+t.length}return o>=3?i+(o===3?`$`:`$$`)+e.slice(s):i};export{r as default};
1
+ var e=(e,t)=>{let n=e.length,r=``,i=0;for(;i<n;){let a=e[i];if(a==="`"){let t=e.startsWith("```",i)?"```":"`",n=t.length,a=e.indexOf(t,i+n);if(a===-1){r+=e.slice(i);break}r+=e.slice(i,a+n),i=a+n}else if(a===`$`){let a=e[i+1]===`$`,o=a?`$$`:`$`,s=a?2:1,c=i+s;for(;c<n;)if(e[c]===`\\`)c+=2;else if(e.startsWith(o,c))break;else++c;if(c>=n){r+=e.slice(i);break}let l=e.slice(i+s,c);try{r+=t(l,a)}catch{r+=o+l+o}i=c+s}else a===`\\`&&e[i+1]===`$`?(r+=`$`,i+=2):(r+=a,++i)}return r};export{e as default};
package/md.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"md.js","names":[],"sources":["../src/md.js"],"sourcesContent":["const DOLLAR = \"$\",\n STATE_TEXT = 0,\n STATE_INLINE_CODE = 1,\n STATE_BLOCK_CODE = 2,\n STATE_INLINE_MATH = 3,\n STATE_BLOCK_MATH = 4,\n REG_MD = /[\\$`\\\\]/g,\n REG_MATH = /[\\$\\\\]/g,\n find = (str, start, is_md) => {\n const reg = is_md ? REG_MD : REG_MATH;\n reg.lastIndex = start;\n return reg.exec(str)?.index ?? -1;\n };\n\nexport default (md, compile) => {\n const len = md.length;\n let res = \"\",\n idx = 0,\n state = STATE_TEXT,\n start = 0;\n\n while (idx < len) {\n if (state === STATE_TEXT) {\n const pos = find(md, idx, 1);\n if (pos === -1) {\n res += md.slice(idx);\n break;\n }\n res += md.slice(idx, pos);\n const char = md[pos];\n if (char === \"\\\\\") {\n const esc = md[pos + 1] === DOLLAR;\n res += esc ? DOLLAR : \"\\\\\";\n idx = pos + (esc ? 2 : 1);\n } else if (char === DOLLAR) {\n const block = md[pos + 1] === DOLLAR;\n state = block ? STATE_BLOCK_MATH : STATE_INLINE_MATH;\n idx = pos + (block ? 2 : 1);\n start = idx;\n } else {\n const block = md[pos + 1] === \"`\" && md[pos + 2] === \"`\";\n res += block ? \"```\" : \"`\";\n state = block ? STATE_BLOCK_CODE : STATE_INLINE_CODE;\n idx = pos + (block ? 3 : 1);\n }\n } else if (state >= STATE_INLINE_MATH) {\n const pos = find(md, idx, 0);\n if (pos === -1) {\n idx = len;\n break;\n }\n if (md[pos] === \"\\\\\") {\n idx = pos + (md[pos + 1] ? 2 : 1);\n } else {\n const inline = state === STATE_INLINE_MATH;\n if (inline || md[pos + 1] === DOLLAR) {\n const content = md.slice(start, pos),\n delim = inline ? DOLLAR : DOLLAR + DOLLAR;\n try {\n res += compile(content, !inline);\n } catch {\n res += delim + content + delim;\n }\n state = STATE_TEXT;\n idx = pos + (inline ? 1 : 2);\n } else {\n idx = pos + 1;\n }\n }\n } else {\n const inline = state === STATE_INLINE_CODE,\n delim = inline ? \"`\" : \"```\",\n pos = md.indexOf(delim, idx);\n if (pos === -1) {\n res += md.slice(idx);\n break;\n }\n res += md.slice(idx, pos) + delim;\n state = STATE_TEXT;\n idx = pos + delim.length;\n }\n }\n\n return state >= STATE_INLINE_MATH\n ? res + (state === STATE_INLINE_MATH ? DOLLAR : DOLLAR + DOLLAR) + md.slice(start)\n : res;\n};\n"],"mappings":"AAAA,MAME,EAAS,WACT,EAAW,UACX,GAAQ,EAAK,EAAO,IAAU,CAC5B,IAAM,EAAM,EAAQ,EAAS,EAE7B,MADA,GAAI,UAAY,EACT,EAAI,KAAK,CAAG,CAAC,EAAE,OAAS,EACjC,EAEF,IAAA,GAAgB,EAAI,IAAY,CAC9B,IAAM,EAAM,EAAG,OACX,EAAM,GACR,EAAM,EACN,EAAQ,EACR,EAAQ,EAEV,KAAO,EAAM,GACX,GAAI,IAAU,EAAY,CACxB,IAAM,EAAM,EAAK,EAAI,EAAK,CAAC,EAC3B,GAAI,IAAQ,GAAI,CACd,GAAO,EAAG,MAAM,CAAG,EACnB,KACF,CACA,GAAO,EAAG,MAAM,EAAK,CAAG,EACxB,IAAM,EAAO,EAAG,GAChB,GAAI,IAAS,KAAM,CACjB,IAAM,EAAM,EAAG,EAAM,KAAO,IAC5B,GAAO,EAAM,IAAS,KACtB,EAAM,GAAO,EAAM,EAAI,EACzB,MAAO,GAAI,IAAS,IAAQ,CAC1B,IAAM,EAAQ,EAAG,EAAM,KAAO,IAC9B,EAAQ,EAAQ,EAAmB,EACnC,EAAM,GAAO,EAAQ,EAAI,GACzB,EAAQ,CACV,KAAO,CACL,IAAM,EAAQ,EAAG,EAAM,KAAO,KAAO,EAAG,EAAM,KAAO,IACrD,GAAO,EAAQ,MAAQ,IACvB,EAAQ,EAAQ,EAAmB,EACnC,EAAM,GAAO,EAAQ,EAAI,EAC3B,CACF,MAAO,GAAI,GAAS,EAAmB,CACrC,IAAM,EAAM,EAAK,EAAI,EAAK,CAAC,EAC3B,GAAI,IAAQ,GAAI,CACd,EAAM,EACN,KACF,CACA,GAAI,EAAG,KAAS,KACd,EAAM,GAAO,EAAG,EAAM,GAAK,EAAI,OAC1B,CACL,IAAM,EAAS,IAAU,EACzB,GAAI,GAAU,EAAG,EAAM,KAAO,IAAQ,CACpC,IAAM,EAAU,EAAG,MAAM,EAAO,CAAG,EACjC,EAAQ,EAAS,IAAS,KAC5B,GAAI,CACF,GAAO,EAAQ,EAAS,CAAC,CAAM,CACjC,MAAQ,CACN,GAAO,EAAQ,EAAU,CAC3B,CACA,EAAQ,EACR,EAAM,GAAO,EAAS,EAAI,EAC5B,KACE,GAAM,EAAM,CAEhB,CACF,KAAO,CACL,IACE,EADa,IAAU,EACN,IAAM,MACvB,EAAM,EAAG,QAAQ,EAAO,CAAG,EAC7B,GAAI,IAAQ,GAAI,CACd,GAAO,EAAG,MAAM,CAAG,EACnB,KACF,CACA,GAAO,EAAG,MAAM,EAAK,CAAG,EAAI,EAC5B,EAAQ,EACR,EAAM,EAAM,EAAM,MACpB,CAGF,OAAO,GAAS,EACZ,GAAO,IAAU,EAAoB,IAAS,MAAmB,EAAG,MAAM,CAAK,EAC/E,CACN"}
1
+ {"version":3,"file":"md.js","names":[],"sources":["../src/md.js"],"sourcesContent":["export default (md, compile) => {\n const len = md.length;\n let res = \"\",\n idx = 0;\n\n while (idx < len) {\n const char = md[idx];\n\n if (char === \"`\") {\n const delim = md.startsWith(\"```\", idx) ? \"```\" : \"`\",\n step = delim.length,\n end = md.indexOf(delim, idx + step);\n if (end === -1) {\n res += md.slice(idx);\n break;\n }\n res += md.slice(idx, end + step);\n idx = end + step;\n } else if (char === \"$\") {\n const block = md[idx + 1] === \"$\",\n delim = block ? \"$$\" : \"$\",\n step = block ? 2 : 1;\n let pos = idx + step;\n\n while (pos < len) {\n const cc = md[pos];\n if (cc === \"\\\\\") pos += 2;\n else if (md.startsWith(delim, pos)) break;\n else ++pos;\n }\n\n if (pos >= len) {\n res += md.slice(idx);\n break;\n }\n\n const content = md.slice(idx + step, pos);\n try {\n res += compile(content, block);\n } catch {\n res += delim + content + delim;\n }\n idx = pos + step;\n } else if (char === \"\\\\\" && md[idx + 1] === \"$\") {\n res += \"$\";\n idx += 2;\n } else {\n res += char;\n ++idx;\n }\n }\n\n return res;\n};\n"],"mappings":"AAAA,IAAA,GAAgB,EAAI,IAAY,CAC9B,IAAM,EAAM,EAAG,OACX,EAAM,GACR,EAAM,EAER,KAAO,EAAM,GAAK,CAChB,IAAM,EAAO,EAAG,GAEhB,GAAI,IAAS,IAAK,CAChB,IAAM,EAAQ,EAAG,WAAW,MAAO,CAAG,EAAI,MAAQ,IAChD,EAAO,EAAM,OACb,EAAM,EAAG,QAAQ,EAAO,EAAM,CAAI,EACpC,GAAI,IAAQ,GAAI,CACd,GAAO,EAAG,MAAM,CAAG,EACnB,KACF,CACA,GAAO,EAAG,MAAM,EAAK,EAAM,CAAI,EAC/B,EAAM,EAAM,CACd,MAAO,GAAI,IAAS,IAAK,CACvB,IAAM,EAAQ,EAAG,EAAM,KAAO,IAC5B,EAAQ,EAAQ,KAAO,IACvB,EAAO,EAAQ,EAAI,EACjB,EAAM,EAAM,EAEhB,KAAO,EAAM,GAEX,GADW,EAAG,KACH,KAAM,GAAO,OACnB,GAAI,EAAG,WAAW,EAAO,CAAG,EAAG,UAC/B,EAAE,EAGT,GAAI,GAAO,EAAK,CACd,GAAO,EAAG,MAAM,CAAG,EACnB,KACF,CAEA,IAAM,EAAU,EAAG,MAAM,EAAM,EAAM,CAAG,EACxC,GAAI,CACF,GAAO,EAAQ,EAAS,CAAK,CAC/B,MAAQ,CACN,GAAO,EAAQ,EAAU,CAC3B,CACA,EAAM,EAAM,CACd,MAAW,IAAS,MAAQ,EAAG,EAAM,KAAO,KAC1C,GAAO,IACP,GAAO,IAEP,GAAO,EACP,EAAE,EAEN,CAEA,OAAO,CACT"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@webc.site/math","version":"0.1.26","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":{}}
1
+ {"name":"@webc.site/math","version":"0.1.30","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":{}}