@webc.site/math 0.1.5 → 0.1.12

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
@@ -16,13 +16,26 @@
16
16
  Say goodbye to hundreds of KB of KaTeX/MathJax and bloated CSS/fonts! With an ultra-lightweight size of just ~4KB (Gzipped), it instantly compiles LaTeX equations into native MathML supported by all modern browsers, delivering zero-overhead, lightning-fast rendering.
17
17
 
18
18
  - [Usage](#usage)
19
+ - [JavaScript Example](#javascript-example)
20
+ - [Markdown Parser Plugins](#markdown-parser-plugins)
21
+ - [CSS and Math Font Configuration](#css-and-math-font-configuration)
19
22
  - [Features](#features)
20
23
  - [Supported Syntax List](#supported-syntax-list)
24
+ - [Unsupported Syntax (Non-Goals)](#unsupported-syntax-non-goals)
25
+ - [Error Handling and Fault Tolerance](#error-handling-and-fault-tolerance)
26
+ - [Internal Error Codes](#internal-error-codes)
21
27
  - [What is MathML?](#what-is-mathml)
22
28
  - [Why Compile TeX Formulas to MathML?](#why-compile-tex-formulas-to-mathml)
23
29
  - [Benchmark](#benchmark)
30
+ - [1. Size Comparison (Gzipped)](#1-size-comparison-gzipped)
31
+ - [2. Generation Speed (Ops/sec)](#2-generation-speed-opssec)
24
32
  - [Design and Calling Process](#design-and-calling-process)
33
+ - [Module Flow](#module-flow)
25
34
  - [How to Add Syntax Support](#how-to-add-syntax-support)
35
+ - [1. Constants](#1-constants)
36
+ - [2. Lexer](#2-lexer)
37
+ - [3. Parser](#3-parser)
38
+ - [4. Renderer](#4-renderer)
26
39
  - [Tech Stack](#tech-stack)
27
40
  - [Directory Structure](#directory-structure)
28
41
  - [History and Background](#history-and-background)
@@ -31,29 +44,77 @@ Say goodbye to hundreds of KB of KaTeX/MathJax and bloated CSS/fonts! With an ul
31
44
 
32
45
  ### JavaScript Example
33
46
 
34
- #### 1. Replace Formulas in Markdown (using `@webc.site/math/md.js`)
47
+ #### 1. Render TeX Formulas Directly
35
48
 
36
- Parses Markdown text, automatically identifying and replacing inline/block equations with MathML.
49
+ Using `@webc.site/math`. Compiles TeX formulas directly to MathML. Useful for implementing math rendering plugins for Markdown parsers (e.g., markdown-it, marked).
50
+
51
+ ```javascript
52
+ import mathml from "@webc.site/math";
53
+
54
+ const tex = "e^{i\\pi} + 1 = 0";
55
+ const html = mathml(tex, true); // true for block math, false/empty for inline math
56
+ ```
57
+
58
+ #### 2. Replace Formulas in Markdown
59
+
60
+ Using `@webc.site/math/md.js`. Parses Markdown text, automatically identifying and replacing inline/block equations with MathML. Pass the formula compiler (e.g. `@webc.site/math`) as the second argument.
37
61
 
38
62
  ```javascript
39
63
  import mdMath from "@webc.site/math/md.js";
64
+ import compile from "@webc.site/math";
40
65
 
41
66
  const markdown = "Euler's identity: $$e^{i\\pi} + 1 = 0$$";
42
- const html = mdMath(markdown);
67
+ const html = mdMath(markdown, compile);
43
68
 
44
69
  console.log(html);
45
70
  // Output: Euler's identity: <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>e</mi><mrow><mi>i</mi><mi>π</mi></mrow></msup><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">e^{i\pi} + 1 = 0</annotation></semantics></math>
46
71
  ```
47
72
 
48
- #### 2. Render TeX Formulas Directly (using `@webc.site/math`)
73
+ ### Markdown Parser Plugins
74
+
75
+ #### 1. Marked Extension
49
76
 
50
- Compiles TeX formulas directly to MathML. Useful for implementing math rendering plugins for Markdown parsers (e.g., markdown-it, marked).
77
+ Using [`@webc.site/math-marked`](https://www.npmjs.com/package/@webc.site/math-marked). Automatically parses and compiles inline math (`$...$`) and block math (`$$...$$`) inside markdown parsed with `marked`.
51
78
 
52
79
  ```javascript
53
- import mathml from "@webc.site/math";
80
+ import { marked } from "marked";
81
+ import mathMarked from "@webc.site/math-marked";
54
82
 
55
- const tex = "e^{i\\pi} + 1 = 0";
56
- const html = mathml(tex, true); // true for block math, false/empty for inline math
83
+ marked.use(mathMarked());
84
+
85
+ const html = marked.parse("Euler's identity: $$e^{i\\pi} + 1 = 0$$");
86
+ ```
87
+
88
+ #### 2. Remark Plugin
89
+
90
+ Using [`@webc.site/math-remark`](https://www.npmjs.com/package/@webc.site/math-remark). A `unified` / `remark` plugin to transform math nodes (`inlineMath` and `math`) in the AST into native MathML HTML.
91
+
92
+ ```javascript
93
+ import { unified } from "unified";
94
+ import remarkParse from "remark-parse";
95
+ import remarkMath from "remark-math";
96
+ import mathRemark from "@webc.site/math-remark";
97
+ import remarkHtml from "remark-html";
98
+
99
+ const html = await unified()
100
+ .use(remarkParse)
101
+ .use(remarkMath)
102
+ .use(mathRemark)
103
+ .use(remarkHtml, { sanitize: false })
104
+ .process("Euler's identity: $$e^{i\\pi} + 1 = 0$$");
105
+ ```
106
+
107
+ #### 3. Markdown-it Plugin
108
+
109
+ Using [`@webc.site/math-markdown-it`](https://www.npmjs.com/package/@webc.site/math-markdown-it). A `markdown-it` plugin to automatically parse and compile inline math (`$...$`) and block math (`$$...$$`) into native MathML HTML.
110
+
111
+ ```javascript
112
+ import markdownit from "markdown-it";
113
+ import mathMarkdownIt from "@webc.site/math-markdown-it";
114
+
115
+ const md = markdownit().use(mathMarkdownIt);
116
+
117
+ const html = md.render("Euler's identity: $$e^{i\\pi} + 1 = 0$$");
57
118
  ```
58
119
 
59
120
  ### CSS and Math Font Configuration
@@ -270,9 +331,9 @@ Since KaTeX and MathJax are pure TeX compilers (without Markdown parsing feature
270
331
 
271
332
  ![](demo/size.svg)
272
333
 
273
- ### 2. Compilation Speed (Ops/sec)
334
+ ### 2. Generation Speed (Ops/sec)
274
335
 
275
- Based on compiling standard test equations (measured using [sh/benchmark.js](https://github.com/webc-site/math/blob/dev/sh/benchmark.js)):
336
+ Based on compiling standard test equations (measured using [sh/bench/pk.js](https://github.com/webc-site/math/blob/dev/sh/bench/pk.js)):
276
337
 
277
338
  - **@webc.site/math (Ours)**: ~329, 000 ops/s (1.0 ⭐️)
278
339
  - **[KaTeX](https://github.com/KaTeX/KaTeX)**: ~92, 000 ops/s (~3.6x slower)
@@ -367,7 +428,12 @@ The `SHOW_MAP` dictionary converts AST nodes into standard MathML markup strings
367
428
  │ ├── mathml.js # TeX-to-MathML compiler
368
429
  │ └── md.js # Markdown math formula parser entry point
369
430
  ├── sh/ # Shell scripts
370
- │ ├── benchmark.js # Size comparison benchmark & SVG generation script
431
+ │ ├── bench/ # Benchmark scripts, shared utilities & history
432
+ │ │ ├── pk.js # Size/speed comparison benchmark & SVG generator
433
+ │ │ ├── self.js # Performance & size regression test runner
434
+ │ │ ├── util.js # Shared benchmark utilities
435
+ │ │ ├── chart.js # SVG chart renderer
436
+ │ │ └── history.yml # YAML baseline history data
371
437
  │ └── check.js # Language file validation script
372
438
  ├── dev.js # Programmatic Vite development server launcher
373
439
  ├── dist.js # Build & distribution helper script (bumps version, compiles templates)
@@ -402,13 +468,26 @@ The `18s` project provides a optimized math font `m` (Latin Modern Math, derived
402
468
  告别数百 KB 的 KaTeX/MathJax 与臃肿的 CSS 字体包!仅约 4KB (Gzip) 的极致体积,将 LaTeX 公式瞬间编译为现代浏览器原生支持的 MathML,带来零运行开销、零延迟的完美渲染体验。
403
469
 
404
470
  - [使用方法](#使用方法)
471
+ - [JavaScript 示例](#javascript-示例)
472
+ - [Markdown 解析器插件](#markdown-解析器插件)
473
+ - [CSS 与数学字体配置](#css-与数学字体配置)
405
474
  - [功能特性](#功能特性)
406
475
  - [支持的语法清单](#支持的语法清单)
476
+ - [不支持的语法 (非本库设计目标)](#不支持的语法-非本库设计目标)
477
+ - [错误处理与容错机制](#错误处理与容错机制)
478
+ - [内部错误码](#内部错误码)
407
479
  - [什么是 MathML?](#什么是-mathml)
408
480
  - [为什么需要 TeX 公式转 MathML?](#为什么需要-tex-公式转-mathml)
409
481
  - [性能对比](#性能对比)
482
+ - [1. 体积对比(Gzip 压缩后)](#1-体积对比gzip-压缩后)
483
+ - [2. 生成速度对比 (Ops/sec)](#2-生成速度对比-opssec)
410
484
  - [设计思路与调用流程](#设计思路与调用流程)
485
+ - [模块运行流程](#模块运行流程)
411
486
  - [如何添加新的语法支持](#如何添加新的语法支持)
487
+ - [1. 常量定义 (Constants)](#1-常量定义-constants)
488
+ - [2. 词法分析 (Lexer)](#2-词法分析-lexer)
489
+ - [3. 语法分析 (Parser)](#3-语法分析-parser)
490
+ - [4. 代码渲染 (Renderer)](#4-代码渲染-renderer)
412
491
  - [技术堆栈](#技术堆栈)
413
492
  - [目录结构](#目录结构)
414
493
  - [历史背景](#历史背景)
@@ -417,29 +496,77 @@ The `18s` project provides a optimized math font `m` (Latin Modern Math, derived
417
496
 
418
497
  ### JavaScript 示例
419
498
 
420
- #### 1. 替换 Markdown 中的公式(使用 `@webc.site/math/md.js`)
499
+ #### 1. 直接渲染 TeX 公式
421
500
 
422
- 输入 Markdown 文本,自动识别其中的行内/块级公式并替换为 MathML。
501
+ 使用 `@webc.site/math`。直接将 TeX 公式编译为 MathML。适合配合 Markdown 解析器(如 markdown-it、marked)实现公式渲染插件。
502
+
503
+ ```javascript
504
+ import mathml from "@webc.site/math";
505
+
506
+ const tex = "e^{i\\pi} + 1 = 0";
507
+ const html = mathml(tex, true); // 第二个参数传 true 表示块级公式,传 false 或不传表示行内公式
508
+ ```
509
+
510
+ #### 2. 替换 Markdown 中的公式
511
+
512
+ 使用 `@webc.site/math/md.js`。输入 Markdown 文本,自动识别其中的行内/块级公式并替换为 MathML。需将公式编译器(如 `@webc.site/math`)作为第二个参数传入。
423
513
 
424
514
  ```javascript
425
515
  import mdMath from "@webc.site/math/md.js";
516
+ import compile from "@webc.site/math";
426
517
 
427
518
  const markdown = "欧拉恒等式:$$e^{i\\pi} + 1 = 0$$";
428
- const html = mdMath(markdown);
519
+ const html = mdMath(markdown, compile);
429
520
 
430
521
  console.log(html);
431
522
  // 输出: 欧拉恒等式:<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msup><mi>e</mi><mrow><mi>i</mi><mi>π</mi></mrow></msup><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">e^{i\pi} + 1 = 0</annotation></semantics></math>
432
523
  ```
433
524
 
434
- #### 2. 直接渲染 TeX 公式(使用 `@webc.site/math`)
525
+ ### Markdown 解析器插件
526
+
527
+ #### 1. Marked 插件
435
528
 
436
- 直接将 TeX 公式编译为 MathML。适合配合 Markdown 解析器(如 markdown-it、marked)实现公式渲染插件。
529
+ 使用 [`@webc.site/math-marked`](https://www.npmjs.com/package/@webc.site/math-marked)。自动解析并编译使用 `marked` 渲染时的行内公式(`$...$`)和块级公式(`$$...$$`)。
437
530
 
438
531
  ```javascript
439
- import mathml from "@webc.site/math";
532
+ import { marked } from "marked";
533
+ import mathMarked from "@webc.site/math-marked";
440
534
 
441
- const tex = "e^{i\\pi} + 1 = 0";
442
- const html = mathml(tex, true); // 第二个参数传 true 表示块级公式,传 false 或不传表示行内公式
535
+ marked.use(mathMarked());
536
+
537
+ const html = marked.parse("欧拉恒等式:$$e^{i\\pi} + 1 = 0$$");
538
+ ```
539
+
540
+ #### 2. Remark 插件
541
+
542
+ 使用 [`@webc.site/math-remark`](https://www.npmjs.com/package/@webc.site/math-remark)。用于 Unified / Remark 抽象语法树(AST)转换的插件,无缝将 AST 中的 `inlineMath` 与 `math` 节点替换为原生 MathML HTML。
543
+
544
+ ```javascript
545
+ import { unified } from "unified";
546
+ import remarkParse from "remark-parse";
547
+ import remarkMath from "remark-math";
548
+ import mathRemark from "@webc.site/math-remark";
549
+ import remarkHtml from "remark-html";
550
+
551
+ const html = await unified()
552
+ .use(remarkParse)
553
+ .use(remarkMath)
554
+ .use(mathRemark)
555
+ .use(remarkHtml, { sanitize: false })
556
+ .process("欧拉恒等式:$$e^{i\\pi} + 1 = 0$$");
557
+ ```
558
+
559
+ #### 3. Markdown-it 插件
560
+
561
+ 使用 [`@webc.site/math-markdown-it`](https://www.npmjs.com/package/@webc.site/math-markdown-it)。用于 `markdown-it` 的数学公式渲染插件,在解析时自动将行内公式(`$...$`)和块级公式(`$$...$$`)编译为原生 MathML HTML。
562
+
563
+ ```javascript
564
+ import markdownit from "markdown-it";
565
+ import mathMarkdownIt from "@webc.site/math-markdown-it";
566
+
567
+ const md = markdownit().use(mathMarkdownIt);
568
+
569
+ const html = md.render("欧拉恒等式:$$e^{i\\pi} + 1 = 0$$");
443
570
  ```
444
571
 
445
572
  ### CSS 与数学字体配置
@@ -655,9 +782,9 @@ MathML(Mathematical Markup Language,数学标记语言)是一种基于 XML
655
782
 
656
783
  ![](demo/size.svg)
657
784
 
658
- ### 2. 编译速度对比 (Ops/sec)
785
+ ### 2. 生成速度对比 (Ops/sec)
659
786
 
660
- 基于经典公式循环编译测试(使用 [sh/benchmark.js](https://github.com/webc-site/math/blob/dev/sh/benchmark.js) 测得):
787
+ 基于经典公式循环编译测试(使用 [sh/bench/pk.js](https://github.com/webc-site/math/blob/dev/sh/bench/pk.js) 测得):
661
788
 
662
789
  - **@webc.site/math (本库)**: ~329, 000 ops/s (1.0 ⭐️)
663
790
  - **[KaTeX](https://github.com/KaTeX/KaTeX)**: ~92, 000 ops/s (约 3.6x 较慢)
@@ -752,7 +879,12 @@ graph TD
752
879
  │ ├── mathml.js # TeX-to-MathML 编译器
753
880
  │ └── md.js # Markdown 数学公式解析入口
754
881
  ├── sh/ # 脚本目录
755
- │ ├── benchmark.js # 体积对比评测与 SVG 生成脚本
882
+ │ ├── bench/ # 评测脚本、共享工具库与历史数据
883
+ │ │ ├── pk.js # 体积/性能对比评测与 SVG 生成脚本
884
+ │ │ ├── self.js # 体积/性能回归测试脚本
885
+ │ │ ├── util.js # 评测共享工具库
886
+ │ │ ├── chart.js # SVG 柱状图生成组件
887
+ │ │ └── history.yml # YAML 格式历史基准数据
756
888
  │ └── check.js # 语言文件校验脚本
757
889
  ├── dev.js # 启动 Vite 开发服务器脚本
758
890
  ├── dist.js # 打包发布辅助脚本(自动递增版本、渲染模板)
package/mathml.js CHANGED
@@ -1 +1,2 @@
1
- var t={_:5,"^":6,"{":7,"}":8,"(":9,")":10},e=t=>t>=48&&t<=57,r=t=>(32|t)-97>>>0<26,l=(t,e,r)=>{for(;e<r;){let r=t.charCodeAt(e);if(r<=32&&(32===r||1<<r&9728))++e;else break}return e},n=' stretchy="false"',a=(t,e)=>' lspace="'+t+'px" rspace="'+e+'px"',i=' mathvariant="normal"',o=n+a(0,0),s=a(4,4),u=a(5,5),p=new Set(["matrix","pmatrix","bmatrix","vmatrix","Vmatrix","cases","array"]),m=new Set(["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"]),c=[3,"≤"],h=[3,"≥"],f=[3,"≠",i],d=[3,"→"],g=[3,"←"],x=[3,"…"],b={__proto__:null,alpha:[1,"α"],beta:[1,"β"],gamma:[1,"γ"],theta:[1,"θ"],pi:[1,"π"],infty:[1,"∞",i],le:c,leq:c,ge:h,geq:h,neq:f,ne:f,cdot:[3,"⋅"],times:[3,"\xd7"],pm:[3,"\xb1"],mp:[3,"∓",s],div:[3,"\xf7"],sum:[3,"∑"],int:[3,"∫"],to:d,rightarrow:d,leftarrow:g,gets:g,leftrightarrow:[3,"↔"],Leftarrow:[3,"⇐"],Rightarrow:[3,"⇒"],Leftrightarrow:[3,"⇔"],dots:x,ldots:x,cdots:[3,"⋯"],Delta:[1,"Δ",i],Gamma:[1,"Γ",i],Theta:[1,"Θ",i],Lambda:[1,"Λ",i],Xi:[1,"Ξ",i],Pi:[1,"Π",i],Sigma:[1,"Σ",i],Upsilon:[1,"Υ",i],Phi:[1,"Φ",i],Psi:[1,"Ψ",i],Omega:[1,"Ω",i],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,"∇",i],partial:[1,"∂",i],approx:[3,"≈",u],sim:[3,"∼",u],cong:[3,"≅",u],propto:[3,"∝",u],equiv:[3,"≡",u],neg:[1,"\xac"],lor:[3,"∨",s],land:[3,"∧",s],ni:[3,"∋",u],perp:[3,"⟂",u],parallel:[3,"∥",u],ell:[1,"ℓ"],hbar:[1,"ℏ"],forall:[1,"∀",i],exists:[1,"∃",i],in:[3,"∈"],notin:[3,"∉"],subset:[3,"⊂"],supset:[3,"⊃"],subseteq:[3,"⊆"],supseteq:[3,"⊇"],cup:[3,"∪"],cap:[3,"∩"],emptyset:[1,"∅",i]},_={"\\limits":1,"\\nolimits":2},w={__proto__:null,boxed:1,cancel:2,sout:3},C={__proto__:null,quad:"16px",qquad:"32px"},y={"-":[3,"−"],"*":[3,"∗"],"/":[3,"/",i],"(":[3,"(",n],")":[3,")",n],"[":[3,"[",n],"]":[3,"]",n],"|":[3,"|",o],".":[3,".",i]},q={__proto__:null,"\\{":"{","\\}":"}","<":"⟨",">":"⟩"},k=t=>[1,t],v=(t,e)=>{let r=e[0];if(null==t[r])return null;e[0]+=2;let l=t[r+1];return"."===l?[3,"",' fence="true" stretchy="true" symmetric="true"']:[3,q[l]??(l?.startsWith("\\")?l.slice(1):l)]},A=(t,e,r)=>{if(3===t[e[0]]&&"["===t[e[0]+1]&&(!r||1===t[e[0]+2])){for(e[0]+=2;0!==t[e[0]]&&(3!==t[e[0]]||"]"!==t[e[0]+1]);)e[0]+=2;3===t[e[0]]&&(e[0]+=2)}},j=(t,e)=>{if(7===t[e[0]]){e[0]+=2;let r="";for(;0!==t[e[0]]&&8!==t[e[0]];)r+=t[e[0]+1],e[0]+=2;return 8===t[e[0]]&&(e[0]+=2),r}return""},L=(t,e,r,l)=>{let n=[],a=[],i=[];for(;e[0]<t.length;){let o=t[e[0]],s=t[e[0]+1];if(0===o||!r&&8===o)break;if(r&&4===o&&"\\end"===s){let r=e[0];if(e[0]+=2,j(t,e)===l)break;e[0]=r}if(3===o&&"&"===s){e[0]+=2,a.push(i),i=[];continue}if(4===o&&"\\\\"===s){e[0]+=2,A(t,e,1),a.push(i),i=[],n.push(a),a=[];continue}let u=z(t,e);u&&i.push(u)}if((i.length||a.length)&&(a.push(i),n.push(a)),n.length){let t=n[n.length-1];t[1]||t[0][0]||n.pop()}return n},M=(t,e)=>[13,V(t,e,1)],P={__proto__:null,"\\":(t,e)=>(3===t[e[0]]&&"*"===t[e[0]+1]&&(e[0]+=2),A(t,e,1),[15]),text:(t,e)=>{if(7===t[e[0]]){let r=j(t,e);if(""===r)return[8,[]];let l=r.split("\\\\");if(l.length>1){let t=[];return l.forEach((e,r)=>{r>0&&t.push([15]),e&&t.push([16,e])}),[8,t]}return[16,r]}let r=V(t,e,1);if(r)return[16,r[1]];throw[3,"text"]},frac:(t,e)=>[7,V(t,e,1),V(t,e,1)],overline:M,bar:M,sqrt:(t,e)=>{if(3===t[e[0]]&&"["===t[e[0]+1]){e[0]+=2;let r=[];for(;0!==t[e[0]]&&(3!==t[e[0]]||"]"!==t[e[0]+1]);){let l=z(t,e);l&&r.push(l)}return 3===t[e[0]]&&(e[0]+=2),[11,V(t,e,1),[8,r]]}return[10,V(t,e,1)]},left:(t,e)=>{let r=v(t,e),l=B(t,e);if(4===t[e[0]]&&"\\right"===t[e[0]+1])return e[0]+=2,[12,[r,...l,v(t,e)].filter(Boolean)];throw[1,r]},phantom:(t,e)=>[19,V(t,e,1)],pmod:(t,e)=>[8,[[17,"8px"],[3,"(",n],[16,"mod"],[17,"4px"],V(t,e,1),[3,")",n]]],begin:(t,e,r)=>{if(7===t[e[0]]){let r=j(t,e);return"array"===r&&(A(t,e),7===t[e[0]]?j(t,e):0!==t[e[0]]&&(e[0]+=2)),[14,r,L(t,e,1,r)]}return[1,r]},end:(t,e,r,l)=>{throw[0,l]},right:(t,e,r,l)=>{throw[2,l]}},S={2:k,3:t=>y[t]??[3,t],9:()=>y["("],10:()=>y[")"],1:t=>[2,t],7:(t,e,r)=>{let l=[8,B(e,r)];return 8===e[r[0]]&&(r[0]+=2),l},4:(t,e,r)=>{let l=t.slice(1),n=P[l];if(n)return n(e,r,t,l);if(p.has(l))return((t,e,r)=>{if(7===t[e[0]]){e[0]+=2;let l=L(t,e,0,r);return 8===t[e[0]]&&(e[0]+=2),[14,r,l]}let l=V(t,e,1);return l?[14,r,[[[l]]]]:null})(e,r,l)??k(t);let a=C[l];if(a)return[17,a];let i=w[l];return i?[18,i,V(e,r,1)]:m.has(l)?[9,l]:b[l]??k(t)}},V=(t,e,r)=>{let l=e[0],n=t[l];if(null==n)return null;e[0]+=2;let a=t[l+1];return r&&1===n&&a[1]&&(t.splice(e[0],0,1,a.slice(1)),a=a[0]),S[n]?.(a,t,e)??null},z=(t,e)=>{let r=V(t,e);if(!r)return null;let l=0;if(4===t[e[0]]){let r=_[t[e[0]+1]];void 0!==r&&(l=r,e[0]+=2)}let n=null,a=null,i;for(;null!=(i=t[e[0]])&&(5===i||6===i);){e[0]+=2;let r=V(t,e,1);5===i?n=r:a=r}return n&&a?[6,r,n,a,l]:n?[5,r,n,l]:a?[4,r,a,l]:r},B=(t,e)=>{let r,l=[];for(;null!=(r=t[e[0]])&&0!==r&&8!==r&&(4!==r||"\\right"!==t[e[0]+1]);){let r=z(t,e);r&&l.push(r)}return l},D={__proto__:null,pmatrix:["(",")"],bmatrix:["[","]"],vmatrix:["|","|"],Vmatrix:["‖","‖"],cases:["{",""]},E="mrow",G={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%)"'},O={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"},R=t=>/[&<>"]/.test(t)?t.replace(/[&<>"]/g,t=>O[t]):t,T=(t,e,r)=>"<"+t+(r??"")+">"+e+"</"+t+">",U=(t,e,r)=>T(t,R(e),r),W=(t,e,r,l)=>T(t,X(e)+X(r)+(l?X(l):"")),X=t=>{if(!t)return T(E,"");let[e,r]=t;return 8===e?r[1]?T(E,r.map(I).join("")):X(r[0]):9===e?T(E,I(t)):I(t)},F=([t,e],r,l,n)=>1===r||2!==r&&("∑"===e||9===t&&("lim"===e||"max"===e||"min"===e||"sup"===e||"inf"===e))?l:n,H={1:([t,e,r])=>U("mi",e,r),2:([t,e])=>U("mn",e),3:([t,e,r])=>U("mo",e,r),9:([t,e])=>U("mi",e)+"<mo>⁡</mo>",8:([t,e])=>e.map(I).join(""),7:([t,e,r])=>W("mfrac",e,r),4:([t,e,r,l])=>W(F(e,l,"mover","msup"),e,r),5:([t,e,r,l])=>W(F(e,l,"munder","msub"),e,r),6:([t,e,r,l,n])=>W(F(e,n,"munderover","msubsup"),e,r,l),16:([t,e])=>U("mtext",e.replace(/ /g,"\xa0")),17:([t,e])=>'<mspace width="'+e+'"></mspace>',10:([t,e])=>T("msqrt",X(e)),11:([t,e,r])=>W("mroot",e,r),12:([t,e])=>T(E,e.map(I).join("")),13:([t,e])=>W("mover",e,[3,"\xaf"]),18:([t,e,r])=>{let l=G[e];return l?"<mrow"+l+">"+X(r)+"</mrow>":X(r)},19:([t,e])=>T("mphantom",X(e)),14:([t,e,r])=>{let l=T("mtable",r.map(t=>T("mtr",t.map(t=>{let e=t.map(I).join("");return T("mtd",t[1]?T(E,e):e)}).join(""))).join("")),n=D[e];return n?T(E,(n[0]?U("mo",n[0]):"")+l+(n[1]?U("mo",n[1]):"")):l},15:()=>'<mspace linebreak="newline"></mspace>'},I=t=>t?H[t[0]](t):"",J=(n,a)=>{let i=n.includes("\n")||n.includes("\r")?n.replace(/[\r\n]+/g," "):n;return'<math xmlns="http://www.w3.org/1998/Math/MathML"'+(a?' display="block"':"")+"><semantics><mrow>"+B((n=>{let a=[],i=n.length,o=0;for(;o<i&&!((o=l(n,o,i))>=i);){let s=n.charCodeAt(o);if(92===s){let t=o;if(++o<i)if(r(n.charCodeAt(o)))for(;++o<i&&r(n.charCodeAt(o)););else++o;let e=n.slice(t,o);if("\\text"===e){let t=l(n,o,i);if(123===n.charCodeAt(t)){let e=1,r=t+1,l=r;for(;l<i&&e;){let t=n.charCodeAt(l);123===t?++e:125===t&&--e,e&&++l}if(!e){a.push(4,"\\text",7,"{",2,n.slice(r,l),8,"}"),o=l+1;continue}}}a.push(4,e);continue}if(e(s)||46===s&&e(n.charCodeAt(o+1))){let t=o;if(46===s)o+=2;else{for(;++o<i&&e(n.charCodeAt(o)););46===n.charCodeAt(o)&&e(n.charCodeAt(o+1))&&(o+=2)}for(;o<i&&e(n.charCodeAt(o));)++o;a.push(1,n.slice(t,o));continue}if(r(s)){a.push(2,n[o]),++o;continue}let u=n[o];a.push(t[u]??3,u),++o}return a.push(0,""),a})(i),[0]).map(I).join("")+'</mrow><annotation encoding="application/x-tex">'+R(i)+"</annotation></semantics></math>"};export{J as default};
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};
package/mathml.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mathml.js"],"sourcesContent":["//#region src/const/STYL.js\nvar STYLE_BOX = \" style=\\\"display:inline-block;border:1px solid;padding:2px 3px\\\"\";\nvar STYLE_CANCEL = \" style=\\\"display:inline-block;background:linear-gradient(to top right,transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\\\"\";\nvar STYLE_SOUT = \" style=\\\"display:inline-block;background:linear-gradient(transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\\\"\";\n//#endregion\n//#region src/lex.js\nvar MASK_WHITESPACE = 9728, CHAR_DOT = 46, CHAR_TOK = {\n\t_: 5,\n\t\"^\": 6,\n\t\"{\": 7,\n\t\"}\": 8,\n\t\"(\": 9,\n\t\")\": 10\n}, digit = (c) => c >= 48 && c <= 57, alpha = (c) => (c | 32) - 97 >>> 0 < 26, skip = (str, idx, len) => {\n\twhile (idx < len) {\n\t\tconst code = str.charCodeAt(idx);\n\t\tif (code <= 32 && (code === 32 || 1 << code & MASK_WHITESPACE)) ++idx;\n\t\telse break;\n\t}\n\treturn idx;\n};\nvar lex_default = (str) => {\n\tconst tokens = [], len = str.length;\n\tlet idx = 0;\n\twhile (idx < len) {\n\t\tidx = skip(str, idx, len);\n\t\tif (idx >= len) break;\n\t\tconst code = str.charCodeAt(idx);\n\t\tif (code === 92) {\n\t\t\tconst start = idx;\n\t\t\t++idx;\n\t\t\tif (idx < len) if (alpha(str.charCodeAt(idx))) while (++idx < len && alpha(str.charCodeAt(idx)));\n\t\t\telse ++idx;\n\t\t\tconst cmd = str.slice(start, idx);\n\t\t\tif (cmd === \"\\\\text\") {\n\t\t\t\tconst temp_idx = skip(str, idx, len);\n\t\t\t\tif (str.charCodeAt(temp_idx) === 123) {\n\t\t\t\t\tlet brace_count = 1, text_start = temp_idx + 1, text_idx = text_start;\n\t\t\t\t\twhile (text_idx < len && brace_count) {\n\t\t\t\t\t\tconst c_code = str.charCodeAt(text_idx);\n\t\t\t\t\t\tif (c_code === 123) ++brace_count;\n\t\t\t\t\t\telse if (c_code === 125) --brace_count;\n\t\t\t\t\t\tif (brace_count) ++text_idx;\n\t\t\t\t\t}\n\t\t\t\t\tif (!brace_count) {\n\t\t\t\t\t\ttokens.push(4, \"\\\\text\", 7, \"{\", 2, str.slice(text_start, text_idx), 8, \"}\");\n\t\t\t\t\t\tidx = text_idx + 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttokens.push(4, cmd);\n\t\t\tcontinue;\n\t\t}\n\t\tif (digit(code) || code === CHAR_DOT && digit(str.charCodeAt(idx + 1))) {\n\t\t\tconst start = idx;\n\t\t\tif (code === CHAR_DOT) idx += 2;\n\t\t\telse {\n\t\t\t\twhile (++idx < len && digit(str.charCodeAt(idx)));\n\t\t\t\tif (str.charCodeAt(idx) === CHAR_DOT && digit(str.charCodeAt(idx + 1))) idx += 2;\n\t\t\t}\n\t\t\twhile (idx < len && digit(str.charCodeAt(idx))) ++idx;\n\t\t\ttokens.push(1, str.slice(start, idx));\n\t\t\tcontinue;\n\t\t}\n\t\tif (alpha(code)) {\n\t\t\ttokens.push(2, str[idx]);\n\t\t\t++idx;\n\t\t\tcontinue;\n\t\t}\n\t\tconst char = str[idx];\n\t\ttokens.push(CHAR_TOK[char] ?? 3, char);\n\t\t++idx;\n\t}\n\ttokens.push(0, \"\");\n\treturn tokens;\n};\n//#endregion\n//#region src/const/ATTR.js\nvar FALSE = \" stretchy=\\\"false\\\"\", space = (l, r) => \" lspace=\\\"\" + l + \"px\\\" rspace=\\\"\" + r + \"px\\\"\";\nvar ATTR_NORMAL = \" mathvariant=\\\"normal\\\"\";\nvar ATTR_STRETCHY_FALSE = FALSE;\nvar ATTR_BAR = FALSE + space(0, 0);\nvar ATTR_BIN = space(4, 4);\nvar ATTR_REL = space(5, 5);\n//#endregion\n//#region src/const/ENV.js\nvar ENV_NAMES = new Set([\n\t\"matrix\",\n\t\"pmatrix\",\n\t\"bmatrix\",\n\t\"vmatrix\",\n\t\"Vmatrix\",\n\t\"cases\",\n\t\"array\"\n]);\n//#endregion\n//#region src/const/FUNC.js\nvar FUNC_NAMES = new Set([\n\t\"sin\",\n\t\"cos\",\n\t\"tan\",\n\t\"cot\",\n\t\"sec\",\n\t\"csc\",\n\t\"log\",\n\t\"lg\",\n\t\"ln\",\n\t\"lim\",\n\t\"exp\",\n\t\"max\",\n\t\"min\",\n\t\"sup\",\n\t\"inf\",\n\t\"det\",\n\t\"gcd\",\n\t\"arcsin\",\n\t\"arccos\",\n\t\"arctan\",\n\t\"sinh\",\n\t\"cosh\",\n\t\"tanh\",\n\t\"coth\",\n\t\"deg\",\n\t\"arg\"\n]);\n//#endregion\n//#region src/const/SYM.js\nvar LE = [3, \"≤\"], GE = [3, \"≥\"], NE = [\n\t3,\n\t\"≠\",\n\tATTR_NORMAL\n], RIGHT_ARROW = [3, \"→\"], LEFT_ARROW = [3, \"←\"], L_DOTS = [3, \"…\"];\nvar SYM_MAP = {\n\t__proto__: null,\n\talpha: [1, \"α\"],\n\tbeta: [1, \"β\"],\n\tgamma: [1, \"γ\"],\n\ttheta: [1, \"θ\"],\n\tpi: [1, \"π\"],\n\tinfty: [\n\t\t1,\n\t\t\"∞\",\n\t\tATTR_NORMAL\n\t],\n\tle: LE,\n\tleq: LE,\n\tge: GE,\n\tgeq: GE,\n\tneq: NE,\n\tne: NE,\n\tcdot: [3, \"⋅\"],\n\ttimes: [3, \"×\"],\n\tpm: [3, \"±\"],\n\tmp: [\n\t\t3,\n\t\t\"∓\",\n\t\tATTR_BIN\n\t],\n\tdiv: [3, \"÷\"],\n\tsum: [3, \"∑\"],\n\tint: [3, \"∫\"],\n\tto: RIGHT_ARROW,\n\trightarrow: RIGHT_ARROW,\n\tleftarrow: LEFT_ARROW,\n\tgets: LEFT_ARROW,\n\tleftrightarrow: [3, \"↔\"],\n\tLeftarrow: [3, \"⇐\"],\n\tRightarrow: [3, \"⇒\"],\n\tLeftrightarrow: [3, \"⇔\"],\n\tdots: L_DOTS,\n\tldots: L_DOTS,\n\tcdots: [3, \"⋯\"],\n\tDelta: [\n\t\t1,\n\t\t\"Δ\",\n\t\tATTR_NORMAL\n\t],\n\tGamma: [\n\t\t1,\n\t\t\"Γ\",\n\t\tATTR_NORMAL\n\t],\n\tTheta: [\n\t\t1,\n\t\t\"Θ\",\n\t\tATTR_NORMAL\n\t],\n\tLambda: [\n\t\t1,\n\t\t\"Λ\",\n\t\tATTR_NORMAL\n\t],\n\tXi: [\n\t\t1,\n\t\t\"Ξ\",\n\t\tATTR_NORMAL\n\t],\n\tPi: [\n\t\t1,\n\t\t\"Π\",\n\t\tATTR_NORMAL\n\t],\n\tSigma: [\n\t\t1,\n\t\t\"Σ\",\n\t\tATTR_NORMAL\n\t],\n\tUpsilon: [\n\t\t1,\n\t\t\"Υ\",\n\t\tATTR_NORMAL\n\t],\n\tPhi: [\n\t\t1,\n\t\t\"Φ\",\n\t\tATTR_NORMAL\n\t],\n\tPsi: [\n\t\t1,\n\t\t\"Ψ\",\n\t\tATTR_NORMAL\n\t],\n\tOmega: [\n\t\t1,\n\t\t\"Ω\",\n\t\tATTR_NORMAL\n\t],\n\tdelta: [1, \"δ\"],\n\tepsilon: [1, \"ϵ\"],\n\tzeta: [1, \"ζ\"],\n\teta: [1, \"η\"],\n\tiota: [1, \"ι\"],\n\tkappa: [1, \"κ\"],\n\tlambda: [1, \"λ\"],\n\tmu: [1, \"μ\"],\n\tnu: [1, \"ν\"],\n\txi: [1, \"ξ\"],\n\trho: [1, \"ρ\"],\n\tsigma: [1, \"σ\"],\n\ttau: [1, \"τ\"],\n\tupsilon: [1, \"υ\"],\n\tphi: [1, \"ϕ\"],\n\tchi: [1, \"χ\"],\n\tpsi: [1, \"ψ\"],\n\tomega: [1, \"ω\"],\n\tnabla: [\n\t\t1,\n\t\t\"∇\",\n\t\tATTR_NORMAL\n\t],\n\tpartial: [\n\t\t1,\n\t\t\"∂\",\n\t\tATTR_NORMAL\n\t],\n\tapprox: [\n\t\t3,\n\t\t\"≈\",\n\t\tATTR_REL\n\t],\n\tsim: [\n\t\t3,\n\t\t\"∼\",\n\t\tATTR_REL\n\t],\n\tcong: [\n\t\t3,\n\t\t\"≅\",\n\t\tATTR_REL\n\t],\n\tpropto: [\n\t\t3,\n\t\t\"∝\",\n\t\tATTR_REL\n\t],\n\tequiv: [\n\t\t3,\n\t\t\"≡\",\n\t\tATTR_REL\n\t],\n\tneg: [1, \"¬\"],\n\tlor: [\n\t\t3,\n\t\t\"∨\",\n\t\tATTR_BIN\n\t],\n\tland: [\n\t\t3,\n\t\t\"∧\",\n\t\tATTR_BIN\n\t],\n\tni: [\n\t\t3,\n\t\t\"∋\",\n\t\tATTR_REL\n\t],\n\tperp: [\n\t\t3,\n\t\t\"⟂\",\n\t\tATTR_REL\n\t],\n\tparallel: [\n\t\t3,\n\t\t\"∥\",\n\t\tATTR_REL\n\t],\n\tell: [1, \"ℓ\"],\n\thbar: [1, \"ℏ\"],\n\tforall: [\n\t\t1,\n\t\t\"∀\",\n\t\tATTR_NORMAL\n\t],\n\texists: [\n\t\t1,\n\t\t\"∃\",\n\t\tATTR_NORMAL\n\t],\n\tin: [3, \"∈\"],\n\tnotin: [3, \"∉\"],\n\tsubset: [3, \"⊂\"],\n\tsupset: [3, \"⊃\"],\n\tsubseteq: [3, \"⊆\"],\n\tsupseteq: [3, \"⊇\"],\n\tcup: [3, \"∪\"],\n\tcap: [3, \"∩\"],\n\temptyset: [\n\t\t1,\n\t\t\"∅\",\n\t\tATTR_NORMAL\n\t]\n};\n//#endregion\n//#region src/parse.js\nvar LIMITS_MAP = {\n\t\"\\\\limits\": 1,\n\t\"\\\\nolimits\": 2\n}, MENCLOSE_MAP = {\n\t__proto__: null,\n\tboxed: 1,\n\tcancel: 2,\n\tsout: 3\n}, SPACE_MAP = {\n\t__proto__: null,\n\tquad: \"16px\",\n\tqquad: \"32px\"\n}, CHAR_MAP = {\n\t\"-\": [3, \"−\"],\n\t\"*\": [3, \"∗\"],\n\t\"/\": [\n\t\t3,\n\t\t\"/\",\n\t\tATTR_NORMAL\n\t],\n\t\"(\": [\n\t\t3,\n\t\t\"(\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\")\": [\n\t\t3,\n\t\t\")\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"[\": [\n\t\t3,\n\t\t\"[\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"]\": [\n\t\t3,\n\t\t\"]\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"|\": [\n\t\t3,\n\t\t\"|\",\n\t\tATTR_BAR\n\t],\n\t\".\": [\n\t\t3,\n\t\t\".\",\n\t\tATTR_NORMAL\n\t]\n}, DELIM_MAP = {\n\t__proto__: null,\n\t\"\\\\{\": \"{\",\n\t\"\\\\}\": \"}\",\n\t\"<\": \"⟨\",\n\t\">\": \"⟩\"\n}, ident = (val) => [1, val], num = (val) => [2, val], op = (val) => CHAR_MAP[val] ?? [3, val], lparen = () => CHAR_MAP[\"(\"], rparen = () => CHAR_MAP[\")\"], delim = (tokens, state_ref) => {\n\tconst idx = state_ref[0];\n\tif (tokens[idx] == null) return null;\n\tstate_ref[0] += 2;\n\tconst val = tokens[idx + 1];\n\tif (val === \".\") return [\n\t\t3,\n\t\t\"\",\n\t\t\" fence=\\\"true\\\" stretchy=\\\"true\\\" symmetric=\\\"true\\\"\"\n\t];\n\treturn [3, DELIM_MAP[val] ?? (val?.startsWith(\"\\\\\") ? val.slice(1) : val)];\n}, opt = (tokens, state_ref, check_num) => {\n\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"[\") {\n\t\tif (!check_num || tokens[state_ref[0] + 2] === 1) {\n\t\t\tstate_ref[0] += 2;\n\t\t\twhile (tokens[state_ref[0]] !== 0 && !(tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"]\")) state_ref[0] += 2;\n\t\t\tif (tokens[state_ref[0]] === 3) state_ref[0] += 2;\n\t\t}\n\t}\n}, brace = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tstate_ref[0] += 2;\n\t\tlet str = \"\";\n\t\twhile (tokens[state_ref[0]] !== 0 && tokens[state_ref[0]] !== 8) {\n\t\t\tstr += tokens[state_ref[0] + 1];\n\t\t\tstate_ref[0] += 2;\n\t\t}\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn str;\n\t}\n\treturn \"\";\n}, rows = (tokens, state_ref, is_end_check, env_name) => {\n\tconst rows = [];\n\tlet current_row = [], current_cell = [];\n\twhile (state_ref[0] < tokens.length) {\n\t\tconst next_type = tokens[state_ref[0]], next_val = tokens[state_ref[0] + 1];\n\t\tif (next_type === 0) break;\n\t\tif (!is_end_check && next_type === 8) break;\n\t\tif (is_end_check && next_type === 4 && next_val === \"\\\\end\") {\n\t\t\tconst saved_idx = state_ref[0];\n\t\t\tstate_ref[0] += 2;\n\t\t\tif (brace(tokens, state_ref) === env_name) break;\n\t\t\tstate_ref[0] = saved_idx;\n\t\t}\n\t\tif (next_type === 3 && next_val === \"&\") {\n\t\t\tstate_ref[0] += 2;\n\t\t\tcurrent_row.push(current_cell);\n\t\t\tcurrent_cell = [];\n\t\t\tcontinue;\n\t\t}\n\t\tif (next_type === 4 && next_val === \"\\\\\\\\\") {\n\t\t\tstate_ref[0] += 2;\n\t\t\topt(tokens, state_ref, 1);\n\t\t\tcurrent_row.push(current_cell);\n\t\t\tcurrent_cell = [];\n\t\t\trows.push(current_row);\n\t\t\tcurrent_row = [];\n\t\t\tcontinue;\n\t\t}\n\t\tconst node = grab(tokens, state_ref);\n\t\tif (node) current_cell.push(node);\n\t}\n\tif (current_cell.length || current_row.length) {\n\t\tcurrent_row.push(current_cell);\n\t\trows.push(current_row);\n\t}\n\tif (rows.length) {\n\t\tconst last_row = rows[rows.length - 1];\n\t\tif (!last_row[1] && !last_row[0][0]) rows.pop();\n\t}\n\treturn rows;\n}, matrix = (tokens, state_ref, name) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tstate_ref[0] += 2;\n\t\tconst matrix_rows = rows(tokens, state_ref, 0, name);\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn [\n\t\t\t14,\n\t\t\tname,\n\t\t\tmatrix_rows\n\t\t];\n\t}\n\tconst node = read(tokens, state_ref, 1);\n\treturn node ? [\n\t\t14,\n\t\tname,\n\t\t[[[node]]]\n\t] : null;\n}, txt = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tconst text_val = brace(tokens, state_ref);\n\t\tif (text_val === \"\") return [8, []];\n\t\tconst parts = text_val.split(\"\\\\\\\\\");\n\t\tif (parts.length > 1) {\n\t\t\tconst nodes = [];\n\t\t\tparts.forEach((p, i) => {\n\t\t\t\tif (i > 0) nodes.push([15]);\n\t\t\t\tif (p) nodes.push([16, p]);\n\t\t\t});\n\t\t\treturn [8, nodes];\n\t\t}\n\t\treturn [16, text_val];\n\t}\n\tconst next_node = read(tokens, state_ref, 1);\n\tif (next_node) return [16, next_node[1]];\n\tthrow [3, \"text\"];\n}, parseBegin = (tokens, state_ref, val) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tconst env_name = brace(tokens, state_ref);\n\t\tif (env_name === \"array\") {\n\t\t\topt(tokens, state_ref);\n\t\t\tif (tokens[state_ref[0]] === 7) brace(tokens, state_ref);\n\t\t\telse if (tokens[state_ref[0]] !== 0) state_ref[0] += 2;\n\t\t}\n\t\treturn [\n\t\t\t14,\n\t\t\tenv_name,\n\t\t\trows(tokens, state_ref, 1, env_name)\n\t\t];\n\t}\n\treturn [1, val];\n}, sqrt = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"[\") {\n\t\tstate_ref[0] += 2;\n\t\tconst index_nodes = [];\n\t\twhile (tokens[state_ref[0]] !== 0 && !(tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"]\")) {\n\t\t\tconst node = grab(tokens, state_ref);\n\t\t\tif (node) index_nodes.push(node);\n\t\t}\n\t\tif (tokens[state_ref[0]] === 3) state_ref[0] += 2;\n\t\treturn [\n\t\t\t11,\n\t\t\tread(tokens, state_ref, 1),\n\t\t\t[8, index_nodes]\n\t\t];\n\t}\n\treturn [10, read(tokens, state_ref, 1)];\n}, fence = (tokens, state_ref) => {\n\tconst left_delim = delim(tokens, state_ref), body = parse(tokens, state_ref);\n\tif (tokens[state_ref[0]] === 4 && tokens[state_ref[0] + 1] === \"\\\\right\") {\n\t\tstate_ref[0] += 2;\n\t\treturn [12, [\n\t\t\tleft_delim,\n\t\t\t...body,\n\t\t\tdelim(tokens, state_ref)\n\t\t].filter(Boolean)];\n\t}\n\tthrow [1, left_delim];\n}, over = (tokens, state_ref) => [13, read(tokens, state_ref, 1)], frac = (tokens, state_ref) => [\n\t7,\n\tread(tokens, state_ref, 1),\n\tread(tokens, state_ref, 1)\n], phantom = (tokens, state_ref) => [19, read(tokens, state_ref, 1)], pmod = (tokens, state_ref) => [8, [\n\t[17, \"8px\"],\n\t[\n\t\t3,\n\t\t\"(\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t[16, \"mod\"],\n\t[17, \"4px\"],\n\tread(tokens, state_ref, 1),\n\t[\n\t\t3,\n\t\t\")\",\n\t\tATTR_STRETCHY_FALSE\n\t]\n]], CMD_MAP = {\n\t__proto__: null,\n\t\"\\\\\": (tokens, state_ref) => {\n\t\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"*\") state_ref[0] += 2;\n\t\topt(tokens, state_ref, 1);\n\t\treturn [15];\n\t},\n\ttext: txt,\n\tfrac,\n\toverline: over,\n\tbar: over,\n\tsqrt,\n\tleft: fence,\n\tphantom,\n\tpmod,\n\tbegin: parseBegin,\n\tend: (tokens, state_ref, val, name) => {\n\t\tthrow [0, name];\n\t},\n\tright: (tokens, state_ref, val, name) => {\n\t\tthrow [2, name];\n\t}\n}, TOK_MAP = {\n\t[2]: ident,\n\t[3]: op,\n\t[9]: lparen,\n\t[10]: rparen,\n\t[1]: num,\n\t[7]: (val, tokens, state_ref) => {\n\t\tconst res = [8, parse(tokens, state_ref)];\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn res;\n\t},\n\t[4]: (val, tokens, state_ref) => {\n\t\tconst name = val.slice(1), handler = CMD_MAP[name];\n\t\tif (handler) return handler(tokens, state_ref, val, name);\n\t\tif (ENV_NAMES.has(name)) return matrix(tokens, state_ref, name) ?? ident(val);\n\t\tconst space = SPACE_MAP[name];\n\t\tif (space) return [17, space];\n\t\tconst notation = MENCLOSE_MAP[name];\n\t\tif (notation) return [\n\t\t\t18,\n\t\t\tnotation,\n\t\t\tread(tokens, state_ref, 1)\n\t\t];\n\t\tif (FUNC_NAMES.has(name)) return [9, name];\n\t\treturn SYM_MAP[name] ?? ident(val);\n\t}\n}, read = (tokens, state_ref, split_num) => {\n\tconst idx = state_ref[0], type = tokens[idx];\n\tif (type == null) return null;\n\tstate_ref[0] += 2;\n\tlet val = tokens[idx + 1];\n\tif (split_num && type === 1 && val[1]) {\n\t\ttokens.splice(state_ref[0], 0, 1, val.slice(1));\n\t\tval = val[0];\n\t}\n\treturn TOK_MAP[type]?.(val, tokens, state_ref) ?? null;\n}, grab = (tokens, state_ref) => {\n\tconst base = read(tokens, state_ref);\n\tif (!base) return null;\n\tlet limits = 0;\n\tif (tokens[state_ref[0]] === 4) {\n\t\tconst limits_val = LIMITS_MAP[tokens[state_ref[0] + 1]];\n\t\tif (limits_val !== void 0) {\n\t\t\tlimits = limits_val;\n\t\t\tstate_ref[0] += 2;\n\t\t}\n\t}\n\tlet sub = null, sup = null, type;\n\twhile ((type = tokens[state_ref[0]]) != null) {\n\t\tif (type !== 5 && type !== 6) break;\n\t\tstate_ref[0] += 2;\n\t\tconst val = read(tokens, state_ref, 1);\n\t\tif (type === 5) sub = val;\n\t\telse sup = val;\n\t}\n\treturn sub && sup ? [\n\t\t6,\n\t\tbase,\n\t\tsub,\n\t\tsup,\n\t\tlimits\n\t] : sub ? [\n\t\t5,\n\t\tbase,\n\t\tsub,\n\t\tlimits\n\t] : sup ? [\n\t\t4,\n\t\tbase,\n\t\tsup,\n\t\tlimits\n\t] : base;\n}, parse = (tokens, state_ref) => {\n\tconst nodes = [];\n\tlet type;\n\twhile ((type = tokens[state_ref[0]]) != null) {\n\t\tif (type === 0 || type === 8) break;\n\t\tif (type === 4 && tokens[state_ref[0] + 1] === \"\\\\right\") break;\n\t\tconst node = grab(tokens, state_ref);\n\t\tif (node) nodes.push(node);\n\t}\n\treturn nodes;\n};\n//#endregion\n//#region src/mathml.js\nvar ENV_DELIMS = {\n\t__proto__: null,\n\tpmatrix: [\"(\", \")\"],\n\tbmatrix: [\"[\", \"]\"],\n\tvmatrix: [\"|\", \"|\"],\n\tVmatrix: [\"‖\", \"‖\"],\n\tcases: [\"{\", \"\"]\n}, MROW = \"mrow\", NOTATION_STYLE_MAP = {\n\t[1]: STYLE_BOX,\n\t[2]: STYLE_CANCEL,\n\t[3]: STYLE_SOUT\n}, ESC_MAP = {\n\t\"&\": \"&amp;\",\n\t\"<\": \"&lt;\",\n\t\">\": \"&gt;\",\n\t\"\\\"\": \"&quot;\"\n}, esc = (str) => /[&<>\"]/.test(str) ? str.replace(/[&<>\"]/g, (m) => ESC_MAP[m]) : str, wrap = (tag_name, inner, attr) => \"<\" + tag_name + (attr ?? \"\") + \">\" + inner + \"</\" + tag_name + \">\", tag = (name, val, attr) => wrap(name, esc(val), attr), nest = (name, n1, n2, n3) => wrap(name, row(n1) + row(n2) + (n3 ? row(n3) : \"\")), row = (n) => {\n\tif (!n) return wrap(MROW, \"\");\n\tconst [type, val] = n;\n\treturn type === 8 ? val[1] ? wrap(MROW, val.map(show).join(\"\")) : row(val[0]) : type === 9 ? wrap(MROW, show(n)) : show(n);\n}, scriptTag = ([type, val], limits, display, inline) => limits === 1 || limits !== 2 && (val === \"∑\" || type === 9 && (val === \"lim\" || val === \"max\" || val === \"min\" || val === \"sup\" || val === \"inf\")) ? display : inline, SHOW_MAP = {\n\t[1]: ([_, val, attr]) => tag(\"mi\", val, attr),\n\t[2]: ([_, val]) => tag(\"mn\", val),\n\t[3]: ([_, val, attr]) => tag(\"mo\", val, attr),\n\t[9]: ([_, val]) => tag(\"mi\", val) + \"<mo>⁡</mo>\",\n\t[8]: ([_, val]) => val.map(show).join(\"\"),\n\t[7]: ([_, n1, n2]) => nest(\"mfrac\", n1, n2),\n\t[4]: ([_, n1, n2, limits]) => nest(scriptTag(n1, limits, \"mover\", \"msup\"), n1, n2),\n\t[5]: ([_, n1, n2, limits]) => nest(scriptTag(n1, limits, \"munder\", \"msub\"), n1, n2),\n\t[6]: ([_, n1, n2, n3, limits]) => nest(scriptTag(n1, limits, \"munderover\", \"msubsup\"), n1, n2, n3),\n\t[16]: ([_, val]) => tag(\"mtext\", val.replace(/ /g, \"\\xA0\")),\n\t[17]: ([_, val]) => \"<mspace width=\\\"\" + val + \"\\\"></mspace>\",\n\t[10]: ([_, n1]) => wrap(\"msqrt\", row(n1)),\n\t[11]: ([_, n1, n2]) => nest(\"mroot\", n1, n2),\n\t[12]: ([_, val]) => wrap(MROW, val.map(show).join(\"\")),\n\t[13]: ([_, n1]) => nest(\"mover\", n1, [3, \"¯\"]),\n\t[18]: ([_, notation, n1]) => {\n\t\tconst style = NOTATION_STYLE_MAP[notation];\n\t\treturn style ? \"<mrow\" + style + \">\" + row(n1) + \"</mrow>\" : row(n1);\n\t},\n\t[19]: ([_, n1]) => wrap(\"mphantom\", row(n1)),\n\t[14]: ([_, env_name, rows_cells]) => {\n\t\tconst m_table = wrap(\"mtable\", rows_cells.map((row_cells) => wrap(\"mtr\", row_cells.map((cell_nodes) => {\n\t\t\tconst inner_html = cell_nodes.map(show).join(\"\");\n\t\t\treturn wrap(\"mtd\", cell_nodes[1] ? wrap(MROW, inner_html) : inner_html);\n\t\t}).join(\"\"))).join(\"\")), delims = ENV_DELIMS[env_name];\n\t\treturn delims ? wrap(MROW, (delims[0] ? tag(\"mo\", delims[0]) : \"\") + m_table + (delims[1] ? tag(\"mo\", delims[1]) : \"\")) : m_table;\n\t},\n\t[15]: () => \"<mspace linebreak=\\\"newline\\\"></mspace>\"\n}, show = (n) => n ? SHOW_MAP[n[0]](n) : \"\";\nvar mathml_default = (tex, block) => {\n\tconst clean = tex.includes(\"\\n\") || tex.includes(\"\\r\") ? tex.replace(/[\\r\\n]+/g, \" \") : tex;\n\treturn \"<math xmlns=\\\"http://www.w3.org/1998/Math/MathML\\\"\" + (block ? \" display=\\\"block\\\"\" : \"\") + \"><semantics><mrow>\" + parse(lex_default(clean), [0]).map(show).join(\"\") + \"</mrow><annotation encoding=\\\"application/x-tex\\\">\" + esc(clean) + \"</annotation></semantics></math>\";\n};\n//#endregion\nexport { mathml_default as default };\n"],"names":["CHAR_TOK","_","digit","c","alpha","skip","str","idx","len","code","charCodeAt","FALSE","space","l","r","ATTR_NORMAL","ATTR_BAR","ATTR_BIN","ATTR_REL","ENV_NAMES","Set","FUNC_NAMES","LE","GE","NE","RIGHT_ARROW","LEFT_ARROW","L_DOTS","SYM_MAP","__proto__","beta","gamma","theta","pi","infty","le","leq","ge","geq","neq","ne","cdot","times","pm","mp","div","sum","int","to","rightarrow","leftarrow","gets","leftrightarrow","Leftarrow","Rightarrow","Leftrightarrow","dots","ldots","cdots","Delta","Gamma","Theta","Lambda","Xi","Pi","Sigma","Upsilon","Phi","Psi","Omega","delta","epsilon","zeta","eta","iota","kappa","lambda","mu","nu","xi","rho","sigma","tau","upsilon","phi","chi","psi","omega","nabla","partial","approx","sim","cong","propto","equiv","neg","lor","land","ni","perp","parallel","ell","hbar","forall","exists","in","notin","subset","supset","subseteq","supseteq","cup","cap","emptyset","LIMITS_MAP","MENCLOSE_MAP","boxed","cancel","sout","SPACE_MAP","quad","qquad","CHAR_MAP","DELIM_MAP","ident","val","delim","tokens","state_ref","startsWith","slice","opt","check_num","brace","rows","is_end_check","env_name","current_row","current_cell","length","next_type","next_val","saved_idx","push","node","grab","last_row","pop","over","read","CMD_MAP","text","text_val","parts","split","nodes","forEach","p","i","next_node","frac","overline","bar","sqrt","index_nodes","left","left_delim","body","parse","filter","Boolean","phantom","pmod","begin","end","name","right","TOK_MAP","res","handler","has","matrix","matrix_rows","notation","split_num","type","splice","base","limits","limits_val","sub","sup","ENV_DELIMS","pmatrix","bmatrix","vmatrix","Vmatrix","cases","MROW","NOTATION_STYLE_MAP","ESC_MAP","esc","test","replace","m","wrap","tag_name","inner","attr","tag","nest","n1","n2","n3","row","n","map","show","join","scriptTag","display","inline","SHOW_MAP","style","rows_cells","m_table","row_cells","cell_nodes","inner_html","delims","mathml_default","tex","block","clean","includes","lex_default","start","cmd","temp_idx","brace_count","text_start","text_idx","c_code","char","default"],"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 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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"}
package/md.d.ts CHANGED
@@ -1 +1,4 @@
1
- export default function mdMath(md: string): string;
1
+ export default function mdMath(
2
+ md: string,
3
+ compile: (tex: string, block?: boolean) => string,
4
+ ): string;
package/md.js CHANGED
@@ -1 +1 @@
1
- var e={_:5,"^":6,"{":7,"}":8,"(":9,")":10},t=e=>e>=48&&e<=57,r=e=>(32|e)-97>>>0<26,l=(e,t,r)=>{for(;t<r;){let r=e.charCodeAt(t);if(r<=32&&(32===r||1<<r&9728))++t;else break}return t},n=' stretchy="false"',i=(e,t)=>' lspace="'+e+'px" rspace="'+t+'px"',a=' mathvariant="normal"',o=n+i(0,0),s=i(4,4),u=i(5,5),p=new Set(["matrix","pmatrix","bmatrix","vmatrix","Vmatrix","cases","array"]),m=new Set(["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"]),c=[3,"≤"],h=[3,"≥"],f=[3,"≠",a],d=[3,"→"],g=[3,"←"],x=[3,"…"],b={__proto__:null,alpha:[1,"α"],beta:[1,"β"],gamma:[1,"γ"],theta:[1,"θ"],pi:[1,"π"],infty:[1,"∞",a],le:c,leq:c,ge:h,geq:h,neq:f,ne:f,cdot:[3,"⋅"],times:[3,"\xd7"],pm:[3,"\xb1"],mp:[3,"∓",s],div:[3,"\xf7"],sum:[3,"∑"],int:[3,"∫"],to:d,rightarrow:d,leftarrow:g,gets:g,leftrightarrow:[3,"↔"],Leftarrow:[3,"⇐"],Rightarrow:[3,"⇒"],Leftrightarrow:[3,"⇔"],dots:x,ldots:x,cdots:[3,"⋯"],Delta:[1,"Δ",a],Gamma:[1,"Γ",a],Theta:[1,"Θ",a],Lambda:[1,"Λ",a],Xi:[1,"Ξ",a],Pi:[1,"Π",a],Sigma:[1,"Σ",a],Upsilon:[1,"Υ",a],Phi:[1,"Φ",a],Psi:[1,"Ψ",a],Omega:[1,"Ω",a],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,"∇",a],partial:[1,"∂",a],approx:[3,"≈",u],sim:[3,"∼",u],cong:[3,"≅",u],propto:[3,"∝",u],equiv:[3,"≡",u],neg:[1,"\xac"],lor:[3,"∨",s],land:[3,"∧",s],ni:[3,"∋",u],perp:[3,"⟂",u],parallel:[3,"∥",u],ell:[1,"ℓ"],hbar:[1,"ℏ"],forall:[1,"∀",a],exists:[1,"∃",a],in:[3,"∈"],notin:[3,"∉"],subset:[3,"⊂"],supset:[3,"⊃"],subseteq:[3,"⊆"],supseteq:[3,"⊇"],cup:[3,"∪"],cap:[3,"∩"],emptyset:[1,"∅",a]},_={"\\limits":1,"\\nolimits":2},w={__proto__:null,boxed:1,cancel:2,sout:3},y={__proto__:null,quad:"16px",qquad:"32px"},C={"-":[3,"−"],"*":[3,"∗"],"/":[3,"/",a],"(":[3,"(",n],")":[3,")",n],"[":[3,"[",n],"]":[3,"]",n],"|":[3,"|",o],".":[3,".",a]},k={__proto__:null,"\\{":"{","\\}":"}","<":"⟨",">":"⟩"},q=e=>[1,e],$=(e,t)=>{let r=t[0];if(null==e[r])return null;t[0]+=2;let l=e[r+1];return"."===l?[3,"",' fence="true" stretchy="true" symmetric="true"']:[3,k[l]??(l?.startsWith("\\")?l.slice(1):l)]},v=(e,t,r)=>{if(3===e[t[0]]&&"["===e[t[0]+1]&&(!r||1===e[t[0]+2])){for(t[0]+=2;0!==e[t[0]]&&(3!==e[t[0]]||"]"!==e[t[0]+1]);)t[0]+=2;3===e[t[0]]&&(t[0]+=2)}},A=(e,t)=>{if(7===e[t[0]]){t[0]+=2;let r="";for(;0!==e[t[0]]&&8!==e[t[0]];)r+=e[t[0]+1],t[0]+=2;return 8===e[t[0]]&&(t[0]+=2),r}return""},j=(e,t,r,l)=>{let n=[],i=[],a=[];for(;t[0]<e.length;){let o=e[t[0]],s=e[t[0]+1];if(0===o||!r&&8===o)break;if(r&&4===o&&"\\end"===s){let r=t[0];if(t[0]+=2,A(e,t)===l)break;t[0]=r}if(3===o&&"&"===s){t[0]+=2,i.push(a),a=[];continue}if(4===o&&"\\\\"===s){t[0]+=2,v(e,t,1),i.push(a),a=[],n.push(i),i=[];continue}let u=O(e,t);u&&a.push(u)}if((a.length||i.length)&&(i.push(a),n.push(i)),n.length){let e=n[n.length-1];e[1]||e[0][0]||n.pop()}return n},L=(e,t)=>[13,S(e,t,1)],M={__proto__:null,"\\":(e,t)=>(3===e[t[0]]&&"*"===e[t[0]+1]&&(t[0]+=2),v(e,t,1),[15]),text:(e,t)=>{if(7===e[t[0]]){let r=A(e,t);if(""===r)return[8,[]];let l=r.split("\\\\");if(l.length>1){let e=[];return l.forEach((t,r)=>{r>0&&e.push([15]),t&&e.push([16,t])}),[8,e]}return[16,r]}let r=S(e,t,1);if(r)return[16,r[1]];throw[3,"text"]},frac:(e,t)=>[7,S(e,t,1),S(e,t,1)],overline:L,bar:L,sqrt:(e,t)=>{if(3===e[t[0]]&&"["===e[t[0]+1]){t[0]+=2;let r=[];for(;0!==e[t[0]]&&(3!==e[t[0]]||"]"!==e[t[0]+1]);){let l=O(e,t);l&&r.push(l)}return 3===e[t[0]]&&(t[0]+=2),[11,S(e,t,1),[8,r]]}return[10,S(e,t,1)]},left:(e,t)=>{let r=$(e,t),l=V(e,t);if(4===e[t[0]]&&"\\right"===e[t[0]+1])return t[0]+=2,[12,[r,...l,$(e,t)].filter(Boolean)];throw[1,r]},phantom:(e,t)=>[19,S(e,t,1)],pmod:(e,t)=>[8,[[17,"8px"],[3,"(",n],[16,"mod"],[17,"4px"],S(e,t,1),[3,")",n]]],begin:(e,t,r)=>{if(7===e[t[0]]){let r=A(e,t);return"array"===r&&(v(e,t),7===e[t[0]]?A(e,t):0!==e[t[0]]&&(t[0]+=2)),[14,r,j(e,t,1,r)]}return[1,r]},end:(e,t,r,l)=>{throw[0,l]},right:(e,t,r,l)=>{throw[2,l]}},P={2:q,3:e=>C[e]??[3,e],9:()=>C["("],10:()=>C[")"],1:e=>[2,e],7:(e,t,r)=>{let l=[8,V(t,r)];return 8===t[r[0]]&&(r[0]+=2),l},4:(e,t,r)=>{let l=e.slice(1),n=M[l];if(n)return n(t,r,e,l);if(p.has(l))return((e,t,r)=>{if(7===e[t[0]]){t[0]+=2;let l=j(e,t,0,r);return 8===e[t[0]]&&(t[0]+=2),[14,r,l]}let l=S(e,t,1);return l?[14,r,[[[l]]]]:null})(t,r,l)??q(e);let i=y[l];if(i)return[17,i];let a=w[l];return a?[18,a,S(t,r,1)]:m.has(l)?[9,l]:b[l]??q(e)}},S=(e,t,r)=>{let l=t[0],n=e[l];if(null==n)return null;t[0]+=2;let i=e[l+1];return r&&1===n&&i[1]&&(e.splice(t[0],0,1,i.slice(1)),i=i[0]),P[n]?.(i,e,t)??null},O=(e,t)=>{let r=S(e,t);if(!r)return null;let l=0;if(4===e[t[0]]){let r=_[e[t[0]+1]];void 0!==r&&(l=r,t[0]+=2)}let n=null,i=null,a;for(;null!=(a=e[t[0]])&&(5===a||6===a);){t[0]+=2;let r=S(e,t,1);5===a?n=r:i=r}return n&&i?[6,r,n,i,l]:n?[5,r,n,l]:i?[4,r,i,l]:r},V=(e,t)=>{let r,l=[];for(;null!=(r=e[t[0]])&&0!==r&&8!==r&&(4!==r||"\\right"!==e[t[0]+1]);){let r=O(e,t);r&&l.push(r)}return l},z={__proto__:null,pmatrix:["(",")"],bmatrix:["[","]"],vmatrix:["|","|"],Vmatrix:["‖","‖"],cases:["{",""]},B="mrow",D={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%)"'},E={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"},G=e=>/[&<>"]/.test(e)?e.replace(/[&<>"]/g,e=>E[e]):e,R=(e,t,r)=>"<"+e+(r??"")+">"+t+"</"+e+">",T=(e,t,r)=>R(e,G(t),r),U=(e,t,r,l)=>R(e,W(t)+W(r)+(l?W(l):"")),W=e=>{if(!e)return R(B,"");let[t,r]=e;return 8===t?r[1]?R(B,r.map(H).join("")):W(r[0]):9===t?R(B,H(e)):H(e)},X=([e,t],r,l,n)=>1===r||2!==r&&("∑"===t||9===e&&("lim"===t||"max"===t||"min"===t||"sup"===t||"inf"===t))?l:n,F={1:([e,t,r])=>T("mi",t,r),2:([e,t])=>T("mn",t),3:([e,t,r])=>T("mo",t,r),9:([e,t])=>T("mi",t)+"<mo>⁡</mo>",8:([e,t])=>t.map(H).join(""),7:([e,t,r])=>U("mfrac",t,r),4:([e,t,r,l])=>U(X(t,l,"mover","msup"),t,r),5:([e,t,r,l])=>U(X(t,l,"munder","msub"),t,r),6:([e,t,r,l,n])=>U(X(t,n,"munderover","msubsup"),t,r,l),16:([e,t])=>T("mtext",t.replace(/ /g,"\xa0")),17:([e,t])=>'<mspace width="'+t+'"></mspace>',10:([e,t])=>R("msqrt",W(t)),11:([e,t,r])=>U("mroot",t,r),12:([e,t])=>R(B,t.map(H).join("")),13:([e,t])=>U("mover",t,[3,"\xaf"]),18:([e,t,r])=>{let l=D[t];return l?"<mrow"+l+">"+W(r)+"</mrow>":W(r)},19:([e,t])=>R("mphantom",W(t)),14:([e,t,r])=>{let l=R("mtable",r.map(e=>R("mtr",e.map(e=>{let t=e.map(H).join("");return R("mtd",e[1]?R(B,t):t)}).join(""))).join("")),n=z[t];return n?R(B,(n[0]?T("mo",n[0]):"")+l+(n[1]?T("mo",n[1]):"")):l},15:()=>'<mspace linebreak="newline"></mspace>'},H=e=>e?F[e[0]](e):"",I=(n,i)=>{let a=n.includes("\n")||n.includes("\r")?n.replace(/[\r\n]+/g," "):n;return'<math xmlns="http://www.w3.org/1998/Math/MathML"'+(i?' display="block"':"")+"><semantics><mrow>"+V((n=>{let i=[],a=n.length,o=0;for(;o<a&&!((o=l(n,o,a))>=a);){let s=n.charCodeAt(o);if(92===s){let e=o;if(++o<a)if(r(n.charCodeAt(o)))for(;++o<a&&r(n.charCodeAt(o)););else++o;let t=n.slice(e,o);if("\\text"===t){let e=l(n,o,a);if(123===n.charCodeAt(e)){let t=1,r=e+1,l=r;for(;l<a&&t;){let e=n.charCodeAt(l);123===e?++t:125===e&&--t,t&&++l}if(!t){i.push(4,"\\text",7,"{",2,n.slice(r,l),8,"}"),o=l+1;continue}}}i.push(4,t);continue}if(t(s)||46===s&&t(n.charCodeAt(o+1))){let e=o;if(46===s)o+=2;else{for(;++o<a&&t(n.charCodeAt(o)););46===n.charCodeAt(o)&&t(n.charCodeAt(o+1))&&(o+=2)}for(;o<a&&t(n.charCodeAt(o));)++o;i.push(1,n.slice(e,o));continue}if(r(s)){i.push(2,n[o]),++o;continue}let u=n[o];i.push(e[u]??3,u),++o}return i.push(0,""),i})(a),[0]).map(H).join("")+'</mrow><annotation encoding="application/x-tex">'+G(a)+"</annotation></semantics></math>"},J=(e,t,r)=>{let l=e.length;for(let n=t;n<l;++n){let t=e[n];if("\\"===t||"$"===t||r&&"`"===t)return n}return -1},K=e=>{let t="",r=0,l=0,n=0,i=e.length;for(;r<i;)if(0===l){let i=J(e,r,1);if(-1===i){t+=e.slice(r);break}t+=e.slice(r,i);let a=e[i];if("\\"===a){let l="$"===e[i+1];t+=l?"$":"\\",r=i+(l?2:1)}else if("$"===a){let t="$"===e[i+1];l=t?4:3,n=r=i+(t?2:1)}else{let n="`"===e[i+1]&&"`"===e[i+2];t+=n?"```":"`",l=n?2:1,r=i+(n?3:1)}}else if(l>=3){let a=J(e,r,0);if(-1===a){r=i;break}if("\\"===e[a])r=a+(e[a+1]?2:1);else{let i=3===l;if(i||"$"===e[a+1]){let o=e.slice(n,a),s=i?"$":"$$";try{t+=I(o,!i)}catch{t+=s+o+s}l=0,r=a+(i?1:2)}else r=a+1}}else{let n=1===l?"`":"```",i=e.indexOf(n,r);if(-1===i){t+=e.slice(r);break}t+=e.slice(r,i)+n,l=0,r=i+n.length}return l>=3?t+(3===l?"$":"$$")+e.slice(n):t};export{K as default};
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};
package/md.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/md.js"],"sourcesContent":["//#region src/const/STYL.js\nvar STYLE_BOX = \" style=\\\"display:inline-block;border:1px solid;padding:2px 3px\\\"\";\nvar STYLE_CANCEL = \" style=\\\"display:inline-block;background:linear-gradient(to top right,transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\\\"\";\nvar STYLE_SOUT = \" style=\\\"display:inline-block;background:linear-gradient(transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\\\"\";\n//#endregion\n//#region src/lex.js\nvar MASK_WHITESPACE = 9728, CHAR_DOT = 46, CHAR_TOK = {\n\t_: 5,\n\t\"^\": 6,\n\t\"{\": 7,\n\t\"}\": 8,\n\t\"(\": 9,\n\t\")\": 10\n}, digit = (c) => c >= 48 && c <= 57, alpha = (c) => (c | 32) - 97 >>> 0 < 26, skip = (str, idx, len) => {\n\twhile (idx < len) {\n\t\tconst code = str.charCodeAt(idx);\n\t\tif (code <= 32 && (code === 32 || 1 << code & MASK_WHITESPACE)) ++idx;\n\t\telse break;\n\t}\n\treturn idx;\n};\nvar lex_default = (str) => {\n\tconst tokens = [], len = str.length;\n\tlet idx = 0;\n\twhile (idx < len) {\n\t\tidx = skip(str, idx, len);\n\t\tif (idx >= len) break;\n\t\tconst code = str.charCodeAt(idx);\n\t\tif (code === 92) {\n\t\t\tconst start = idx;\n\t\t\t++idx;\n\t\t\tif (idx < len) if (alpha(str.charCodeAt(idx))) while (++idx < len && alpha(str.charCodeAt(idx)));\n\t\t\telse ++idx;\n\t\t\tconst cmd = str.slice(start, idx);\n\t\t\tif (cmd === \"\\\\text\") {\n\t\t\t\tconst temp_idx = skip(str, idx, len);\n\t\t\t\tif (str.charCodeAt(temp_idx) === 123) {\n\t\t\t\t\tlet brace_count = 1, text_start = temp_idx + 1, text_idx = text_start;\n\t\t\t\t\twhile (text_idx < len && brace_count) {\n\t\t\t\t\t\tconst c_code = str.charCodeAt(text_idx);\n\t\t\t\t\t\tif (c_code === 123) ++brace_count;\n\t\t\t\t\t\telse if (c_code === 125) --brace_count;\n\t\t\t\t\t\tif (brace_count) ++text_idx;\n\t\t\t\t\t}\n\t\t\t\t\tif (!brace_count) {\n\t\t\t\t\t\ttokens.push(4, \"\\\\text\", 7, \"{\", 2, str.slice(text_start, text_idx), 8, \"}\");\n\t\t\t\t\t\tidx = text_idx + 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttokens.push(4, cmd);\n\t\t\tcontinue;\n\t\t}\n\t\tif (digit(code) || code === CHAR_DOT && digit(str.charCodeAt(idx + 1))) {\n\t\t\tconst start = idx;\n\t\t\tif (code === CHAR_DOT) idx += 2;\n\t\t\telse {\n\t\t\t\twhile (++idx < len && digit(str.charCodeAt(idx)));\n\t\t\t\tif (str.charCodeAt(idx) === CHAR_DOT && digit(str.charCodeAt(idx + 1))) idx += 2;\n\t\t\t}\n\t\t\twhile (idx < len && digit(str.charCodeAt(idx))) ++idx;\n\t\t\ttokens.push(1, str.slice(start, idx));\n\t\t\tcontinue;\n\t\t}\n\t\tif (alpha(code)) {\n\t\t\ttokens.push(2, str[idx]);\n\t\t\t++idx;\n\t\t\tcontinue;\n\t\t}\n\t\tconst char = str[idx];\n\t\ttokens.push(CHAR_TOK[char] ?? 3, char);\n\t\t++idx;\n\t}\n\ttokens.push(0, \"\");\n\treturn tokens;\n};\n//#endregion\n//#region src/const/ATTR.js\nvar FALSE = \" stretchy=\\\"false\\\"\", space = (l, r) => \" lspace=\\\"\" + l + \"px\\\" rspace=\\\"\" + r + \"px\\\"\";\nvar ATTR_NORMAL = \" mathvariant=\\\"normal\\\"\";\nvar ATTR_STRETCHY_FALSE = FALSE;\nvar ATTR_BAR = FALSE + space(0, 0);\nvar ATTR_BIN = space(4, 4);\nvar ATTR_REL = space(5, 5);\n//#endregion\n//#region src/const/ENV.js\nvar ENV_NAMES = new Set([\n\t\"matrix\",\n\t\"pmatrix\",\n\t\"bmatrix\",\n\t\"vmatrix\",\n\t\"Vmatrix\",\n\t\"cases\",\n\t\"array\"\n]);\n//#endregion\n//#region src/const/FUNC.js\nvar FUNC_NAMES = new Set([\n\t\"sin\",\n\t\"cos\",\n\t\"tan\",\n\t\"cot\",\n\t\"sec\",\n\t\"csc\",\n\t\"log\",\n\t\"lg\",\n\t\"ln\",\n\t\"lim\",\n\t\"exp\",\n\t\"max\",\n\t\"min\",\n\t\"sup\",\n\t\"inf\",\n\t\"det\",\n\t\"gcd\",\n\t\"arcsin\",\n\t\"arccos\",\n\t\"arctan\",\n\t\"sinh\",\n\t\"cosh\",\n\t\"tanh\",\n\t\"coth\",\n\t\"deg\",\n\t\"arg\"\n]);\n//#endregion\n//#region src/const/SYM.js\nvar LE = [3, \"≤\"], GE = [3, \"≥\"], NE = [\n\t3,\n\t\"≠\",\n\tATTR_NORMAL\n], RIGHT_ARROW = [3, \"→\"], LEFT_ARROW = [3, \"←\"], L_DOTS = [3, \"…\"];\nvar SYM_MAP = {\n\t__proto__: null,\n\talpha: [1, \"α\"],\n\tbeta: [1, \"β\"],\n\tgamma: [1, \"γ\"],\n\ttheta: [1, \"θ\"],\n\tpi: [1, \"π\"],\n\tinfty: [\n\t\t1,\n\t\t\"∞\",\n\t\tATTR_NORMAL\n\t],\n\tle: LE,\n\tleq: LE,\n\tge: GE,\n\tgeq: GE,\n\tneq: NE,\n\tne: NE,\n\tcdot: [3, \"⋅\"],\n\ttimes: [3, \"×\"],\n\tpm: [3, \"±\"],\n\tmp: [\n\t\t3,\n\t\t\"∓\",\n\t\tATTR_BIN\n\t],\n\tdiv: [3, \"÷\"],\n\tsum: [3, \"∑\"],\n\tint: [3, \"∫\"],\n\tto: RIGHT_ARROW,\n\trightarrow: RIGHT_ARROW,\n\tleftarrow: LEFT_ARROW,\n\tgets: LEFT_ARROW,\n\tleftrightarrow: [3, \"↔\"],\n\tLeftarrow: [3, \"⇐\"],\n\tRightarrow: [3, \"⇒\"],\n\tLeftrightarrow: [3, \"⇔\"],\n\tdots: L_DOTS,\n\tldots: L_DOTS,\n\tcdots: [3, \"⋯\"],\n\tDelta: [\n\t\t1,\n\t\t\"Δ\",\n\t\tATTR_NORMAL\n\t],\n\tGamma: [\n\t\t1,\n\t\t\"Γ\",\n\t\tATTR_NORMAL\n\t],\n\tTheta: [\n\t\t1,\n\t\t\"Θ\",\n\t\tATTR_NORMAL\n\t],\n\tLambda: [\n\t\t1,\n\t\t\"Λ\",\n\t\tATTR_NORMAL\n\t],\n\tXi: [\n\t\t1,\n\t\t\"Ξ\",\n\t\tATTR_NORMAL\n\t],\n\tPi: [\n\t\t1,\n\t\t\"Π\",\n\t\tATTR_NORMAL\n\t],\n\tSigma: [\n\t\t1,\n\t\t\"Σ\",\n\t\tATTR_NORMAL\n\t],\n\tUpsilon: [\n\t\t1,\n\t\t\"Υ\",\n\t\tATTR_NORMAL\n\t],\n\tPhi: [\n\t\t1,\n\t\t\"Φ\",\n\t\tATTR_NORMAL\n\t],\n\tPsi: [\n\t\t1,\n\t\t\"Ψ\",\n\t\tATTR_NORMAL\n\t],\n\tOmega: [\n\t\t1,\n\t\t\"Ω\",\n\t\tATTR_NORMAL\n\t],\n\tdelta: [1, \"δ\"],\n\tepsilon: [1, \"ϵ\"],\n\tzeta: [1, \"ζ\"],\n\teta: [1, \"η\"],\n\tiota: [1, \"ι\"],\n\tkappa: [1, \"κ\"],\n\tlambda: [1, \"λ\"],\n\tmu: [1, \"μ\"],\n\tnu: [1, \"ν\"],\n\txi: [1, \"ξ\"],\n\trho: [1, \"ρ\"],\n\tsigma: [1, \"σ\"],\n\ttau: [1, \"τ\"],\n\tupsilon: [1, \"υ\"],\n\tphi: [1, \"ϕ\"],\n\tchi: [1, \"χ\"],\n\tpsi: [1, \"ψ\"],\n\tomega: [1, \"ω\"],\n\tnabla: [\n\t\t1,\n\t\t\"∇\",\n\t\tATTR_NORMAL\n\t],\n\tpartial: [\n\t\t1,\n\t\t\"∂\",\n\t\tATTR_NORMAL\n\t],\n\tapprox: [\n\t\t3,\n\t\t\"≈\",\n\t\tATTR_REL\n\t],\n\tsim: [\n\t\t3,\n\t\t\"∼\",\n\t\tATTR_REL\n\t],\n\tcong: [\n\t\t3,\n\t\t\"≅\",\n\t\tATTR_REL\n\t],\n\tpropto: [\n\t\t3,\n\t\t\"∝\",\n\t\tATTR_REL\n\t],\n\tequiv: [\n\t\t3,\n\t\t\"≡\",\n\t\tATTR_REL\n\t],\n\tneg: [1, \"¬\"],\n\tlor: [\n\t\t3,\n\t\t\"∨\",\n\t\tATTR_BIN\n\t],\n\tland: [\n\t\t3,\n\t\t\"∧\",\n\t\tATTR_BIN\n\t],\n\tni: [\n\t\t3,\n\t\t\"∋\",\n\t\tATTR_REL\n\t],\n\tperp: [\n\t\t3,\n\t\t\"⟂\",\n\t\tATTR_REL\n\t],\n\tparallel: [\n\t\t3,\n\t\t\"∥\",\n\t\tATTR_REL\n\t],\n\tell: [1, \"ℓ\"],\n\thbar: [1, \"ℏ\"],\n\tforall: [\n\t\t1,\n\t\t\"∀\",\n\t\tATTR_NORMAL\n\t],\n\texists: [\n\t\t1,\n\t\t\"∃\",\n\t\tATTR_NORMAL\n\t],\n\tin: [3, \"∈\"],\n\tnotin: [3, \"∉\"],\n\tsubset: [3, \"⊂\"],\n\tsupset: [3, \"⊃\"],\n\tsubseteq: [3, \"⊆\"],\n\tsupseteq: [3, \"⊇\"],\n\tcup: [3, \"∪\"],\n\tcap: [3, \"∩\"],\n\temptyset: [\n\t\t1,\n\t\t\"∅\",\n\t\tATTR_NORMAL\n\t]\n};\n//#endregion\n//#region src/parse.js\nvar LIMITS_MAP = {\n\t\"\\\\limits\": 1,\n\t\"\\\\nolimits\": 2\n}, MENCLOSE_MAP = {\n\t__proto__: null,\n\tboxed: 1,\n\tcancel: 2,\n\tsout: 3\n}, SPACE_MAP = {\n\t__proto__: null,\n\tquad: \"16px\",\n\tqquad: \"32px\"\n}, CHAR_MAP = {\n\t\"-\": [3, \"−\"],\n\t\"*\": [3, \"∗\"],\n\t\"/\": [\n\t\t3,\n\t\t\"/\",\n\t\tATTR_NORMAL\n\t],\n\t\"(\": [\n\t\t3,\n\t\t\"(\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\")\": [\n\t\t3,\n\t\t\")\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"[\": [\n\t\t3,\n\t\t\"[\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"]\": [\n\t\t3,\n\t\t\"]\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t\"|\": [\n\t\t3,\n\t\t\"|\",\n\t\tATTR_BAR\n\t],\n\t\".\": [\n\t\t3,\n\t\t\".\",\n\t\tATTR_NORMAL\n\t]\n}, DELIM_MAP = {\n\t__proto__: null,\n\t\"\\\\{\": \"{\",\n\t\"\\\\}\": \"}\",\n\t\"<\": \"⟨\",\n\t\">\": \"⟩\"\n}, ident = (val) => [1, val], num = (val) => [2, val], op = (val) => CHAR_MAP[val] ?? [3, val], lparen = () => CHAR_MAP[\"(\"], rparen = () => CHAR_MAP[\")\"], delim = (tokens, state_ref) => {\n\tconst idx = state_ref[0];\n\tif (tokens[idx] == null) return null;\n\tstate_ref[0] += 2;\n\tconst val = tokens[idx + 1];\n\tif (val === \".\") return [\n\t\t3,\n\t\t\"\",\n\t\t\" fence=\\\"true\\\" stretchy=\\\"true\\\" symmetric=\\\"true\\\"\"\n\t];\n\treturn [3, DELIM_MAP[val] ?? (val?.startsWith(\"\\\\\") ? val.slice(1) : val)];\n}, opt = (tokens, state_ref, check_num) => {\n\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"[\") {\n\t\tif (!check_num || tokens[state_ref[0] + 2] === 1) {\n\t\t\tstate_ref[0] += 2;\n\t\t\twhile (tokens[state_ref[0]] !== 0 && !(tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"]\")) state_ref[0] += 2;\n\t\t\tif (tokens[state_ref[0]] === 3) state_ref[0] += 2;\n\t\t}\n\t}\n}, brace = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tstate_ref[0] += 2;\n\t\tlet str = \"\";\n\t\twhile (tokens[state_ref[0]] !== 0 && tokens[state_ref[0]] !== 8) {\n\t\t\tstr += tokens[state_ref[0] + 1];\n\t\t\tstate_ref[0] += 2;\n\t\t}\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn str;\n\t}\n\treturn \"\";\n}, rows = (tokens, state_ref, is_end_check, env_name) => {\n\tconst rows = [];\n\tlet current_row = [], current_cell = [];\n\twhile (state_ref[0] < tokens.length) {\n\t\tconst next_type = tokens[state_ref[0]], next_val = tokens[state_ref[0] + 1];\n\t\tif (next_type === 0) break;\n\t\tif (!is_end_check && next_type === 8) break;\n\t\tif (is_end_check && next_type === 4 && next_val === \"\\\\end\") {\n\t\t\tconst saved_idx = state_ref[0];\n\t\t\tstate_ref[0] += 2;\n\t\t\tif (brace(tokens, state_ref) === env_name) break;\n\t\t\tstate_ref[0] = saved_idx;\n\t\t}\n\t\tif (next_type === 3 && next_val === \"&\") {\n\t\t\tstate_ref[0] += 2;\n\t\t\tcurrent_row.push(current_cell);\n\t\t\tcurrent_cell = [];\n\t\t\tcontinue;\n\t\t}\n\t\tif (next_type === 4 && next_val === \"\\\\\\\\\") {\n\t\t\tstate_ref[0] += 2;\n\t\t\topt(tokens, state_ref, 1);\n\t\t\tcurrent_row.push(current_cell);\n\t\t\tcurrent_cell = [];\n\t\t\trows.push(current_row);\n\t\t\tcurrent_row = [];\n\t\t\tcontinue;\n\t\t}\n\t\tconst node = grab(tokens, state_ref);\n\t\tif (node) current_cell.push(node);\n\t}\n\tif (current_cell.length || current_row.length) {\n\t\tcurrent_row.push(current_cell);\n\t\trows.push(current_row);\n\t}\n\tif (rows.length) {\n\t\tconst last_row = rows[rows.length - 1];\n\t\tif (!last_row[1] && !last_row[0][0]) rows.pop();\n\t}\n\treturn rows;\n}, matrix = (tokens, state_ref, name) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tstate_ref[0] += 2;\n\t\tconst matrix_rows = rows(tokens, state_ref, 0, name);\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn [\n\t\t\t14,\n\t\t\tname,\n\t\t\tmatrix_rows\n\t\t];\n\t}\n\tconst node = read(tokens, state_ref, 1);\n\treturn node ? [\n\t\t14,\n\t\tname,\n\t\t[[[node]]]\n\t] : null;\n}, txt = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tconst text_val = brace(tokens, state_ref);\n\t\tif (text_val === \"\") return [8, []];\n\t\tconst parts = text_val.split(\"\\\\\\\\\");\n\t\tif (parts.length > 1) {\n\t\t\tconst nodes = [];\n\t\t\tparts.forEach((p, i) => {\n\t\t\t\tif (i > 0) nodes.push([15]);\n\t\t\t\tif (p) nodes.push([16, p]);\n\t\t\t});\n\t\t\treturn [8, nodes];\n\t\t}\n\t\treturn [16, text_val];\n\t}\n\tconst next_node = read(tokens, state_ref, 1);\n\tif (next_node) return [16, next_node[1]];\n\tthrow [3, \"text\"];\n}, parseBegin = (tokens, state_ref, val) => {\n\tif (tokens[state_ref[0]] === 7) {\n\t\tconst env_name = brace(tokens, state_ref);\n\t\tif (env_name === \"array\") {\n\t\t\topt(tokens, state_ref);\n\t\t\tif (tokens[state_ref[0]] === 7) brace(tokens, state_ref);\n\t\t\telse if (tokens[state_ref[0]] !== 0) state_ref[0] += 2;\n\t\t}\n\t\treturn [\n\t\t\t14,\n\t\t\tenv_name,\n\t\t\trows(tokens, state_ref, 1, env_name)\n\t\t];\n\t}\n\treturn [1, val];\n}, sqrt = (tokens, state_ref) => {\n\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"[\") {\n\t\tstate_ref[0] += 2;\n\t\tconst index_nodes = [];\n\t\twhile (tokens[state_ref[0]] !== 0 && !(tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"]\")) {\n\t\t\tconst node = grab(tokens, state_ref);\n\t\t\tif (node) index_nodes.push(node);\n\t\t}\n\t\tif (tokens[state_ref[0]] === 3) state_ref[0] += 2;\n\t\treturn [\n\t\t\t11,\n\t\t\tread(tokens, state_ref, 1),\n\t\t\t[8, index_nodes]\n\t\t];\n\t}\n\treturn [10, read(tokens, state_ref, 1)];\n}, fence = (tokens, state_ref) => {\n\tconst left_delim = delim(tokens, state_ref), body = parse(tokens, state_ref);\n\tif (tokens[state_ref[0]] === 4 && tokens[state_ref[0] + 1] === \"\\\\right\") {\n\t\tstate_ref[0] += 2;\n\t\treturn [12, [\n\t\t\tleft_delim,\n\t\t\t...body,\n\t\t\tdelim(tokens, state_ref)\n\t\t].filter(Boolean)];\n\t}\n\tthrow [1, left_delim];\n}, over = (tokens, state_ref) => [13, read(tokens, state_ref, 1)], frac = (tokens, state_ref) => [\n\t7,\n\tread(tokens, state_ref, 1),\n\tread(tokens, state_ref, 1)\n], phantom = (tokens, state_ref) => [19, read(tokens, state_ref, 1)], pmod = (tokens, state_ref) => [8, [\n\t[17, \"8px\"],\n\t[\n\t\t3,\n\t\t\"(\",\n\t\tATTR_STRETCHY_FALSE\n\t],\n\t[16, \"mod\"],\n\t[17, \"4px\"],\n\tread(tokens, state_ref, 1),\n\t[\n\t\t3,\n\t\t\")\",\n\t\tATTR_STRETCHY_FALSE\n\t]\n]], CMD_MAP = {\n\t__proto__: null,\n\t\"\\\\\": (tokens, state_ref) => {\n\t\tif (tokens[state_ref[0]] === 3 && tokens[state_ref[0] + 1] === \"*\") state_ref[0] += 2;\n\t\topt(tokens, state_ref, 1);\n\t\treturn [15];\n\t},\n\ttext: txt,\n\tfrac,\n\toverline: over,\n\tbar: over,\n\tsqrt,\n\tleft: fence,\n\tphantom,\n\tpmod,\n\tbegin: parseBegin,\n\tend: (tokens, state_ref, val, name) => {\n\t\tthrow [0, name];\n\t},\n\tright: (tokens, state_ref, val, name) => {\n\t\tthrow [2, name];\n\t}\n}, TOK_MAP = {\n\t[2]: ident,\n\t[3]: op,\n\t[9]: lparen,\n\t[10]: rparen,\n\t[1]: num,\n\t[7]: (val, tokens, state_ref) => {\n\t\tconst res = [8, parse(tokens, state_ref)];\n\t\tif (tokens[state_ref[0]] === 8) state_ref[0] += 2;\n\t\treturn res;\n\t},\n\t[4]: (val, tokens, state_ref) => {\n\t\tconst name = val.slice(1), handler = CMD_MAP[name];\n\t\tif (handler) return handler(tokens, state_ref, val, name);\n\t\tif (ENV_NAMES.has(name)) return matrix(tokens, state_ref, name) ?? ident(val);\n\t\tconst space = SPACE_MAP[name];\n\t\tif (space) return [17, space];\n\t\tconst notation = MENCLOSE_MAP[name];\n\t\tif (notation) return [\n\t\t\t18,\n\t\t\tnotation,\n\t\t\tread(tokens, state_ref, 1)\n\t\t];\n\t\tif (FUNC_NAMES.has(name)) return [9, name];\n\t\treturn SYM_MAP[name] ?? ident(val);\n\t}\n}, read = (tokens, state_ref, split_num) => {\n\tconst idx = state_ref[0], type = tokens[idx];\n\tif (type == null) return null;\n\tstate_ref[0] += 2;\n\tlet val = tokens[idx + 1];\n\tif (split_num && type === 1 && val[1]) {\n\t\ttokens.splice(state_ref[0], 0, 1, val.slice(1));\n\t\tval = val[0];\n\t}\n\treturn TOK_MAP[type]?.(val, tokens, state_ref) ?? null;\n}, grab = (tokens, state_ref) => {\n\tconst base = read(tokens, state_ref);\n\tif (!base) return null;\n\tlet limits = 0;\n\tif (tokens[state_ref[0]] === 4) {\n\t\tconst limits_val = LIMITS_MAP[tokens[state_ref[0] + 1]];\n\t\tif (limits_val !== void 0) {\n\t\t\tlimits = limits_val;\n\t\t\tstate_ref[0] += 2;\n\t\t}\n\t}\n\tlet sub = null, sup = null, type;\n\twhile ((type = tokens[state_ref[0]]) != null) {\n\t\tif (type !== 5 && type !== 6) break;\n\t\tstate_ref[0] += 2;\n\t\tconst val = read(tokens, state_ref, 1);\n\t\tif (type === 5) sub = val;\n\t\telse sup = val;\n\t}\n\treturn sub && sup ? [\n\t\t6,\n\t\tbase,\n\t\tsub,\n\t\tsup,\n\t\tlimits\n\t] : sub ? [\n\t\t5,\n\t\tbase,\n\t\tsub,\n\t\tlimits\n\t] : sup ? [\n\t\t4,\n\t\tbase,\n\t\tsup,\n\t\tlimits\n\t] : base;\n}, parse = (tokens, state_ref) => {\n\tconst nodes = [];\n\tlet type;\n\twhile ((type = tokens[state_ref[0]]) != null) {\n\t\tif (type === 0 || type === 8) break;\n\t\tif (type === 4 && tokens[state_ref[0] + 1] === \"\\\\right\") break;\n\t\tconst node = grab(tokens, state_ref);\n\t\tif (node) nodes.push(node);\n\t}\n\treturn nodes;\n};\n//#endregion\n//#region src/mathml.js\nvar ENV_DELIMS = {\n\t__proto__: null,\n\tpmatrix: [\"(\", \")\"],\n\tbmatrix: [\"[\", \"]\"],\n\tvmatrix: [\"|\", \"|\"],\n\tVmatrix: [\"‖\", \"‖\"],\n\tcases: [\"{\", \"\"]\n}, MROW = \"mrow\", NOTATION_STYLE_MAP = {\n\t[1]: STYLE_BOX,\n\t[2]: STYLE_CANCEL,\n\t[3]: STYLE_SOUT\n}, ESC_MAP = {\n\t\"&\": \"&amp;\",\n\t\"<\": \"&lt;\",\n\t\">\": \"&gt;\",\n\t\"\\\"\": \"&quot;\"\n}, esc = (str) => /[&<>\"]/.test(str) ? str.replace(/[&<>\"]/g, (m) => ESC_MAP[m]) : str, wrap = (tag_name, inner, attr) => \"<\" + tag_name + (attr ?? \"\") + \">\" + inner + \"</\" + tag_name + \">\", tag = (name, val, attr) => wrap(name, esc(val), attr), nest = (name, n1, n2, n3) => wrap(name, row(n1) + row(n2) + (n3 ? row(n3) : \"\")), row = (n) => {\n\tif (!n) return wrap(MROW, \"\");\n\tconst [type, val] = n;\n\treturn type === 8 ? val[1] ? wrap(MROW, val.map(show).join(\"\")) : row(val[0]) : type === 9 ? wrap(MROW, show(n)) : show(n);\n}, scriptTag = ([type, val], limits, display, inline) => limits === 1 || limits !== 2 && (val === \"∑\" || type === 9 && (val === \"lim\" || val === \"max\" || val === \"min\" || val === \"sup\" || val === \"inf\")) ? display : inline, SHOW_MAP = {\n\t[1]: ([_, val, attr]) => tag(\"mi\", val, attr),\n\t[2]: ([_, val]) => tag(\"mn\", val),\n\t[3]: ([_, val, attr]) => tag(\"mo\", val, attr),\n\t[9]: ([_, val]) => tag(\"mi\", val) + \"<mo>⁡</mo>\",\n\t[8]: ([_, val]) => val.map(show).join(\"\"),\n\t[7]: ([_, n1, n2]) => nest(\"mfrac\", n1, n2),\n\t[4]: ([_, n1, n2, limits]) => nest(scriptTag(n1, limits, \"mover\", \"msup\"), n1, n2),\n\t[5]: ([_, n1, n2, limits]) => nest(scriptTag(n1, limits, \"munder\", \"msub\"), n1, n2),\n\t[6]: ([_, n1, n2, n3, limits]) => nest(scriptTag(n1, limits, \"munderover\", \"msubsup\"), n1, n2, n3),\n\t[16]: ([_, val]) => tag(\"mtext\", val.replace(/ /g, \"\\xA0\")),\n\t[17]: ([_, val]) => \"<mspace width=\\\"\" + val + \"\\\"></mspace>\",\n\t[10]: ([_, n1]) => wrap(\"msqrt\", row(n1)),\n\t[11]: ([_, n1, n2]) => nest(\"mroot\", n1, n2),\n\t[12]: ([_, val]) => wrap(MROW, val.map(show).join(\"\")),\n\t[13]: ([_, n1]) => nest(\"mover\", n1, [3, \"¯\"]),\n\t[18]: ([_, notation, n1]) => {\n\t\tconst style = NOTATION_STYLE_MAP[notation];\n\t\treturn style ? \"<mrow\" + style + \">\" + row(n1) + \"</mrow>\" : row(n1);\n\t},\n\t[19]: ([_, n1]) => wrap(\"mphantom\", row(n1)),\n\t[14]: ([_, env_name, rows_cells]) => {\n\t\tconst m_table = wrap(\"mtable\", rows_cells.map((row_cells) => wrap(\"mtr\", row_cells.map((cell_nodes) => {\n\t\t\tconst inner_html = cell_nodes.map(show).join(\"\");\n\t\t\treturn wrap(\"mtd\", cell_nodes[1] ? wrap(MROW, inner_html) : inner_html);\n\t\t}).join(\"\"))).join(\"\")), delims = ENV_DELIMS[env_name];\n\t\treturn delims ? wrap(MROW, (delims[0] ? tag(\"mo\", delims[0]) : \"\") + m_table + (delims[1] ? tag(\"mo\", delims[1]) : \"\")) : m_table;\n\t},\n\t[15]: () => \"<mspace linebreak=\\\"newline\\\"></mspace>\"\n}, show = (n) => n ? SHOW_MAP[n[0]](n) : \"\";\nvar mathml_default = (tex, block) => {\n\tconst clean = tex.includes(\"\\n\") || tex.includes(\"\\r\") ? tex.replace(/[\\r\\n]+/g, \" \") : tex;\n\treturn \"<math xmlns=\\\"http://www.w3.org/1998/Math/MathML\\\"\" + (block ? \" display=\\\"block\\\"\" : \"\") + \"><semantics><mrow>\" + parse(lex_default(clean), [0]).map(show).join(\"\") + \"</mrow><annotation encoding=\\\"application/x-tex\\\">\" + esc(clean) + \"</annotation></semantics></math>\";\n};\n//#endregion\n//#region src/md.js\nvar DOLLAR = \"$\", STATE_TEXT = 0, STATE_INLINE_CODE = 1, STATE_BLOCK_CODE = 2, STATE_INLINE_MATH = 3, STATE_BLOCK_MATH = 4, find = (str, start, is_md) => {\n\tconst len = str.length;\n\tfor (let i = start; i < len; ++i) {\n\t\tconst c = str[i];\n\t\tif (c === \"\\\\\" || c === DOLLAR || is_md && c === \"`\") return i;\n\t}\n\treturn -1;\n};\nvar md_default = (md) => {\n\tlet result = \"\", idx = 0, state = STATE_TEXT, math_start = 0;\n\tconst len = md.length;\n\twhile (idx < len) if (state === STATE_TEXT) {\n\t\tconst match_idx = find(md, idx, 1);\n\t\tif (match_idx === -1) {\n\t\t\tresult += md.slice(idx);\n\t\t\tbreak;\n\t\t}\n\t\tresult += md.slice(idx, match_idx);\n\t\tconst char = md[match_idx];\n\t\tif (char === \"\\\\\") {\n\t\t\tconst is_esc = md[match_idx + 1] === DOLLAR;\n\t\t\tresult += is_esc ? DOLLAR : \"\\\\\";\n\t\t\tidx = match_idx + (is_esc ? 2 : 1);\n\t\t} else if (char === DOLLAR) {\n\t\t\tconst block = md[match_idx + 1] === DOLLAR;\n\t\t\tstate = block ? STATE_BLOCK_MATH : STATE_INLINE_MATH;\n\t\t\tidx = match_idx + (block ? 2 : 1);\n\t\t\tmath_start = idx;\n\t\t} else {\n\t\t\tconst block = md[match_idx + 1] === \"`\" && md[match_idx + 2] === \"`\";\n\t\t\tresult += block ? \"```\" : \"`\";\n\t\t\tstate = block ? STATE_BLOCK_CODE : STATE_INLINE_CODE;\n\t\t\tidx = match_idx + (block ? 3 : 1);\n\t\t}\n\t} else if (state >= STATE_INLINE_MATH) {\n\t\tconst match_idx = find(md, idx, 0);\n\t\tif (match_idx === -1) {\n\t\t\tidx = len;\n\t\t\tbreak;\n\t\t}\n\t\tif (md[match_idx] === \"\\\\\") idx = match_idx + (md[match_idx + 1] ? 2 : 1);\n\t\telse {\n\t\t\tconst is_inline = state === STATE_INLINE_MATH;\n\t\t\tif (is_inline || md[match_idx + 1] === DOLLAR) {\n\t\t\t\tconst content = md.slice(math_start, match_idx), delim = is_inline ? DOLLAR : \"$$\";\n\t\t\t\ttry {\n\t\t\t\t\tresult += mathml_default(content, !is_inline);\n\t\t\t\t} catch {\n\t\t\t\t\tresult += delim + content + delim;\n\t\t\t\t}\n\t\t\t\tstate = STATE_TEXT;\n\t\t\t\tidx = match_idx + (is_inline ? 1 : 2);\n\t\t\t} else idx = match_idx + 1;\n\t\t}\n\t} else {\n\t\tconst delim = state === STATE_INLINE_CODE ? \"`\" : \"```\", match_idx = md.indexOf(delim, idx);\n\t\tif (match_idx === -1) {\n\t\t\tresult += md.slice(idx);\n\t\t\tbreak;\n\t\t}\n\t\tresult += md.slice(idx, match_idx) + delim;\n\t\tstate = STATE_TEXT;\n\t\tidx = match_idx + delim.length;\n\t}\n\treturn state >= STATE_INLINE_MATH ? result + (state === STATE_INLINE_MATH ? DOLLAR : \"$$\") + md.slice(math_start) : result;\n};\n//#endregion\nexport { md_default as default };\n"],"names":["CHAR_TOK","_","digit","c","alpha","skip","str","idx","len","code","charCodeAt","FALSE","space","l","r","ATTR_NORMAL","ATTR_BAR","ATTR_BIN","ATTR_REL","ENV_NAMES","Set","FUNC_NAMES","LE","GE","NE","RIGHT_ARROW","LEFT_ARROW","L_DOTS","SYM_MAP","__proto__","beta","gamma","theta","pi","infty","le","leq","ge","geq","neq","ne","cdot","times","pm","mp","div","sum","int","to","rightarrow","leftarrow","gets","leftrightarrow","Leftarrow","Rightarrow","Leftrightarrow","dots","ldots","cdots","Delta","Gamma","Theta","Lambda","Xi","Pi","Sigma","Upsilon","Phi","Psi","Omega","delta","epsilon","zeta","eta","iota","kappa","lambda","mu","nu","xi","rho","sigma","tau","upsilon","phi","chi","psi","omega","nabla","partial","approx","sim","cong","propto","equiv","neg","lor","land","ni","perp","parallel","ell","hbar","forall","exists","in","notin","subset","supset","subseteq","supseteq","cup","cap","emptyset","LIMITS_MAP","MENCLOSE_MAP","boxed","cancel","sout","SPACE_MAP","quad","qquad","CHAR_MAP","DELIM_MAP","ident","val","delim","tokens","state_ref","startsWith","slice","opt","check_num","brace","rows","is_end_check","env_name","current_row","current_cell","length","next_type","next_val","saved_idx","push","node","grab","last_row","pop","over","read","CMD_MAP","text","text_val","parts","split","nodes","forEach","p","i","next_node","frac","overline","bar","sqrt","index_nodes","left","left_delim","body","parse","filter","Boolean","phantom","pmod","begin","end","name","right","TOK_MAP","res","handler","has","matrix","matrix_rows","notation","split_num","type","splice","base","limits","limits_val","sub","sup","ENV_DELIMS","pmatrix","bmatrix","vmatrix","Vmatrix","cases","MROW","NOTATION_STYLE_MAP","ESC_MAP","esc","test","replace","m","wrap","tag_name","inner","attr","tag","nest","n1","n2","n3","row","n","map","show","join","scriptTag","display","inline","SHOW_MAP","style","rows_cells","m_table","row_cells","cell_nodes","inner_html","delims","mathml_default","tex","block","clean","includes","lex_default","start","cmd","temp_idx","brace_count","text_start","text_idx","c_code","char","find","is_md","md_default","md","result","state","math_start","match_idx","is_esc","is_inline","content","indexOf","default"],"mappings":"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"}
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,MACE,EAAM,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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@webc.site/math","version":"0.1.5","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.12","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":{}}