@webc.site/math 0.1.30 → 0.1.32
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/mathml.js +1 -1
- package/mathml.js.map +1 -1
- package/package.json +1 -1
package/mathml.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=
|
|
1
|
+
const e=(t,n)=>t.charCodeAt(n)<=32?e(t,n+1):n,t=/\d+(?:\.\d+)?|\.\d+/y,n=/\\(?:[a-zA-Z]+|.)/y;var r=r=>{let i=[],a=r.length,o=0;for(;o<a&&(o=e(r,o),!(o>=a));){n.lastIndex=o;let s=n.exec(r);if(s){let t=s[0];if(o+=t.length,i.push(4,t),t===`\\text`){let t=e(r,o);if(r.charCodeAt(t)===123){let e=1,n=t;for(;n<a&&e;){let t=r.charCodeAt(++n);t===123?++e:t===125&&--e}e||(i.push(7,`{`,2,r.slice(t+1,n),8,`}`),o=n+1)}}continue}if(t.lastIndex=o,s=t.exec(r),s){let e=s[0];i.push(1,e),o+=e.length;continue}let c=r[o],l=`_^{}`.indexOf(c);i.push((c.charCodeAt(0)|32)-97>>>0<26?2:l>=0?l+5:3,c),++o}return i.push(0,``),i};const i=e=>` lspace="`+e+`px" rspace="`+e+`px"`,a=` mathvariant="normal"`,o=` stretchy="false"`+i(0),s=i(4),c=i(5),l={__proto__:null},u=(e,t,n)=>{e.replace(/([a-zA-Z]+)([^a-zA-Z]+)/g,(e,r,i)=>{l[r]=n?[t,i,n]:[t,i]})};u(`alphaαbetaβgammaγthetaθpiπdeltaδepsilonϵzetaζetaηiotaιkappaκlambdaλmuμnuνxiξrhoρsigmaσtauτupsilonυphiϕchiχpsiψomegaωellℓhbarℏneg¬`,1),u(`DeltaΔGammaΓThetaΘLambdaΛXiΞPiΠSigmaΣUpsilonΥPhiΦPsiΨOmegaΩinfty∞nabla∇partial∂forall∀exists∃emptyset∅`,1,a),u(`prime′cdot⋅times×pm±div÷sum∑int∫leftrightarrow↔Leftarrow⇐Rightarrow⇒Leftrightarrow⇔cdots⋯in∈notin∉subset⊂supset⊃subseteq⊆supseteq⊇cup∪cap∩to→rightarrow→leftarrow←gets←dots…ldots…le≤leq≤ge≥geq≥`,3),u(`neq≠ne≠`,3,a),u(`mp∓lor∨land∧`,3,s),u(`approx≈sim∼cong≅propto∝equiv≡ni∋perp⟂parallel∥`,3,c),`sin cos tan cot sec csc log lg ln lim exp max min sup inf det gcd arcsin arccos arctan sinh cosh tanh coth deg arg`.replace(/\w+/g,e=>l[e]=[9,e]),l.quad=[17,`16px`],l.qquad=[17,`32px`];const d={__proto__:null,boxed:1,cancel:2,sout:3},f={"-":[3,`−`],"*":[3,`∗`],"/":[3,`/`,a],"|":[3,`|`,o],".":[3,`.`,a],"'":[3,`′`]},p=(e,t)=>{let n=t[0];if(e[n]==null)return null;t[0]+=2;let r=e[n+1];return r===`.`?[3,``,` fence="true" stretchy="true" symmetric="true"`]:[3,r===`<`?`⟨`:r===`>`?`⟩`:r[0]===`\\`?r.slice(1):r]},m=(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]>0&&(r+=2),t[0]=r}},h=(e,t)=>{let n=t[0],r=``;if(e[n]===7){for(n+=2;e[n]>0&&e[n]!==8;n+=2)r+=e[n+1];e[n]>0&&(n+=2),t[0]=n}return r},g=(e,t,n,r)=>{let i=[],a=[],o=[];for(;e[t[0]]>0;){let s=e[t[0]],c=e[t[0]+1];if(!n&&s===8)break;if(n&&s===4&&c===`\\end`){let n=t[0];if(t[0]+=2,h(e,t)===r)break;t[0]=n}if(c===`&`||c===`\\\\`){t[0]+=2,a.push(o),o=[],c===`\\\\`&&(m(e,t,1),i.push(a),a=[]);continue}let l=E(e,t);l&&o.push(l)}return o.length&&a.push(o),a.length&&i.push(a),i.length&&!i[i.length-1][1]&&!i[i.length-1][0][0]&&i.pop(),i},_=(e,t,n)=>{if(e[t[0]]===7){t[0]+=2;let r=g(e,t,0,n);return e[t[0]]>0&&(t[0]+=2),[14,n,r]}let r=T(e,t,1);return r?[14,n,[[[r]]]]:null},v=(e,t)=>{if(e[t[0]]===7){let n=h(e,t);if(n===``)return[8,[]];let r=n.split(`\\\\`);return r.length>1?[8,r.flatMap((e,t)=>[...t?[[15]]:[],...e?[[16,e]]:[]])]:[16,n]}let n=T(e,t,1);if(n)return[16,n[1]];throw[3,`text`]},y=(e,t,n)=>{if(e[t[0]]===7){let n=h(e,t);return n===`array`&&(m(e,t),e[t[0]]===7?h(e,t):T(e,t)),[14,n,g(e,t,1,n)]}return[1,n]},b=(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=E(e,t);r&&n.push(r)}return e[t[0]]===3&&(t[0]+=2),[11,T(e,t,1),[8,n]]}return[10,T(e,t,1)]},x=(e,t)=>{let n=p(e,t),r=D(e,t);if(e[t[0]]===4&&e[t[0]+1]===`\\right`)return t[0]+=2,[12,[n,...r,p(e,t)].filter(Boolean)];throw[1,n]},S=(e,t)=>[13,T(e,t,1)],C={__proto__:null,"\\":(e,t)=>(e[t[0]]===3&&e[t[0]+1]===`*`&&(t[0]+=2),m(e,t,1),[15]),text:v,frac:(e,t)=>[7,T(e,t,1),T(e,t,1)],overline:S,bar:S,sqrt:b,left:x,phantom:(e,t)=>[19,T(e,t,1)],pmod:(e,t)=>[8,[[17,`8px`],f[`(`],[16,`mod`],[17,`4px`],T(e,t,1),f[`)`]]],begin:y,end:(e,t,n,r)=>{throw[0,r]},right:(e,t,n,r)=>{throw[2,r]}},w={2:e=>[1,e],3:e=>f[e]??[3,e],1:e=>[2,e],7:(e,t,n)=>{let r=[8,D(t,n)];return t[n[0]]>0&&(n[0]+=2),r},4:(e,t,n)=>{let r=e.slice(1),i=C[r];return i?i(t,n,e,r):/^(?:[pbvV]?matrix|cases|array)$/.test(r)?_(t,n,r)??[1,e]:d[r]?[18,d[r],T(t,n,1)]:l[r]??[1,e]}},T=(e,t,n)=>{let r=t[0],i=e[r],a=t[1];if(!i)return null;let o=e[r+1];return a&&(o=o.slice(a)),n&&i===1&&o[1]?(t[1]=a+1,o=o[0]):(t[0]+=2,t[1]=0),w[i](o,e,t)},E=(e,t)=>{let n=T(e,t),r=t[0];if(!n)return null;let i=e[r+1]===`\\limits`?1:e[r+1]===`\\nolimits`?2:0,a,o,s;for(i&&(t[0]+=2);(s=e[t[0]])>0;){let n=0;for(;e[t[0]+1]===`'`;t[0]+=2)++n;if(n){o=[3,`′`.repeat(n)];continue}if(s!==5&&s!==6)break;t[0]+=2,s===5?a=T(e,t,1):o=T(e,t,1)}return a?o?[6,n,a,o,i]:[5,n,a,i]:o?[4,n,o,i]:n},D=(e,t)=>{let n=[],r;for(;(r=e[t[0]])>0&&!(r===8||r===4&&e[t[0]+1]===`\\right`);){let r=E(e,t);r&&n.push(r)}return n};[...`()[]`].map(e=>f[e]=[3,e,` stretchy="false"`]);const O=`mrow`,k=`left`,A=[null,` style="display:inline-block;border:1px solid;padding:2px 3px"`,` style="display:inline-block;background:linear-gradient(to top right,transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`,` style="display:inline-block;background:linear-gradient(transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)"`],j=[`right`,k],M=[`;padding-right:0`,`;padding-left:0`],N=[null,`mi`,`mn`,`mo`],P=e=>e.replace(/[&<>"]/g,e=>e===`&`?`&`:e===`<`?`<`:e===`>`?`>`:`"`),F=(e,t,n)=>`<`+e+(n||``)+`>`+t+`</`+e+`>`,I=(e,t,n)=>F(e,P(t),n),L=(e,t)=>` columnalign="`+e+`" rowspacing=".2em" columnspacing="`+t+`"`,R=(e,t)=>` style="text-align:`+e+t+`"`,z=(e,...t)=>F(e,t.map(V).join(``)),B=(e,t,n,r,[,i]=e[1],a=e[t])=>z(a===1||!a&&(i===`∑`||/^(lim|max|min|sup|inf)$/.test(i))?n:r,...e.slice(1,t)),V=e=>{if(!e)return F(O,``);let[t,n]=e;return t===8&&!n[1]?V(n[0]):t===8||t===9?F(O,U(e)):U(e)},H={9:([,e])=>I(`mi`,e)+F(`mo`,``),8:([,e])=>e.map(U).join(``),7:([,e,t])=>z(`mfrac`,e,t),4:e=>B(e,3,`mover`,`msup`),5:e=>B(e,3,`munder`,`msub`),6:e=>B(e,4,`munderover`,`msubsup`),16:([,e])=>I(`mtext`,e.replace(/ /g,`\xA0`)),17:([,e])=>F(`mspace`,``,` width="`+e+`"`),10:([,e])=>F(`msqrt`,V(e)),11:([,e,t])=>z(`mroot`,e,t),12:([,e])=>F(O,e.map(U).join(``)),13:([,e])=>z(`mover`,e,[3,`¯`]),18:([,e,t])=>A[e]?F(O,V(t),A[e]):V(t),19:([,e])=>F(`mphantom`,V(e)),14:e=>{let[,t,n]=e,r=t===`cases`,i=/^align|split/.test(t),a=r&&n.every(e=>{let[t,n]=e[1]?.[0]||[];return!t||t===3&&`=<≤≥≠≈≡∝>`.includes(n)}),o=n[0]||[],s=o.map((e,t)=>r?R(k,a?M[t%2]:``):i?R(j[t%2],M[t%2]):``),c=F(`mtable`,n.map(e=>F(`mtr`,e.map((e,t)=>{let n=e.map(U).join(``);return F(`mtd`,e[1]?F(O,n):n,s[t]||``)}).join(``))).join(``),r?L(k,a?`0`:`1em`):i?L(o.map((e,t)=>j[t%2]).join(` `),o.slice(1).map((e,t)=>t%2?`2em`:`0`).join(` `)):``),l=`pbvVc`.indexOf(t[0]);if(l>=0){let e=`([|‖{`[l],t=`)]‖‖`[l]||``;return F(O,I(`mo`,e)+c+(t&&I(`mo`,t)))}return c},15:()=>F(`mspace`,``,` linebreak="newline"`)},U=e=>e?e[0]<=3?I(N[e[0]],e[1],e[2]):H[e[0]](e):``;var W=(e,t)=>{let n=e.replace(/[\r\n]+/g,` `);return F(`math`,F(`semantics`,F(O,D(r(n),[0,0]).map(U).join(``))+F(`annotation`,P(n),` encoding="application/x-tex"`)),` xmlns="http://www.w3.org/1998/Math/MathML"`+(t?` display="block"`:``))};export{W as default};
|
package/mathml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mathml.js","names":["lex"],"sources":["../src/const/STYL.js","../src/lex.js","../src/const/ATTR.js","../src/const/SYM.js","../src/parse.js","../src/mathml.js"],"sourcesContent":["const STYLE_PREFIX = ' style=\"display:inline-block;',\n GRAD = \"background:linear-gradient(\",\n LINE = \"transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\";\n\nexport const STYLE_BOX = STYLE_PREFIX + 'border:1px solid;padding:2px 3px\"',\n STYLE_CANCEL = STYLE_PREFIX + GRAD + \"to top right,\" + LINE + '\"',\n STYLE_SOUT = STYLE_PREFIX + GRAD + LINE + '\"';\n","import {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\n\nconst CHAR_TOK = {\n _: TOK_SUB,\n \"^\": TOK_SUP,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n },\n isAlpha = (c) => ((c | 32) - 97) >>> 0 < 26,\n skip = (str, idx) => (str.charCodeAt(idx) <= 32 ? skip(str, idx + 1) : idx),\n NUM_RE = /\\d+(?:\\.\\d+)?|\\.\\d+/y,\n CMD_RE = /\\\\(?:[a-zA-Z]+|.)/y;\n\nexport default (str) => {\n const res = [],\n len = str.length;\n let idx = 0;\n while (idx < len) {\n idx = skip(str, idx);\n if (idx >= len) break;\n\n CMD_RE.lastIndex = idx;\n let m = CMD_RE.exec(str);\n if (m) {\n const cmd = m[0];\n idx += cmd.length;\n if (cmd === \"\\\\text\") {\n const pos = skip(str, idx);\n if (str.charCodeAt(pos) === 123) {\n let braces = 1,\n t_idx = pos;\n while (t_idx < len && braces) {\n const cc = str.charCodeAt(++t_idx);\n cc === 123 ? ++braces : cc === 125 && --braces;\n }\n if (!braces) {\n res.push(\n TOK_CMD,\n \"\\\\text\",\n TOK_LBRACE,\n \"{\",\n TOK_IDENT,\n str.slice(pos + 1, t_idx),\n TOK_RBRACE,\n \"}\",\n );\n idx = t_idx + 1;\n continue;\n }\n }\n }\n res.push(TOK_CMD, cmd);\n continue;\n }\n\n NUM_RE.lastIndex = idx;\n m = NUM_RE.exec(str);\n if (m) {\n const num = m[0];\n res.push(TOK_NUM, num);\n idx += num.length;\n continue;\n }\n\n const code = str.charCodeAt(idx);\n if (isAlpha(code)) {\n res.push(TOK_IDENT, str[idx]);\n ++idx;\n continue;\n }\n const char = str[idx];\n res.push(CHAR_TOK[char] ?? TOK_OP, char);\n ++idx;\n }\n res.push(TOK_EOF, \"\");\n return res;\n};\n","const FALSE = ' stretchy=\"false\"',\n space = (n) => ' lspace=\"' + n + 'px\" rspace=\"' + n + 'px\"';\n\nexport const ATTR_NORMAL = ' mathvariant=\"normal\"',\n ATTR_STRETCHY_FALSE = FALSE,\n ATTR_BAR = FALSE + space(0),\n ATTR_BIN = space(4),\n ATTR_REL = space(5);\n","import { TYPE_IDENT, TYPE_OP, TYPE_FUNC, TYPE_SPACE } from \"./TYPE.js\";\nimport { ATTR_NORMAL, ATTR_BIN, ATTR_REL } from \"./ATTR.js\";\n\nexport const SYM_MAP = { __proto__: null };\n\nconst parseSymbols = (str, type, attr) => {\n str.replace(/([a-zA-Z]+)([^a-zA-Z]+)/g, (m, k, v) => {\n SYM_MAP[k] = attr ? [type, v, attr] : [type, v];\n });\n};\n\nparseSymbols(\n \"alphaαbetaβgammaγthetaθpiπdeltaδepsilonϵzetaζetaηiotaιkappaκlambdaλmuμnuνxiξrhoρsigmaσtauτupsilonυphiϕchiχpsiψomegaωellℓhbarℏneg¬\",\n TYPE_IDENT,\n);\nparseSymbols(\n \"DeltaΔGammaΓThetaΘLambdaΛXiΞPiΠSigmaΣUpsilonΥPhiΦPsiΨOmegaΩinfty∞nabla∇partial∂forall∀exists∃emptyset∅\",\n TYPE_IDENT,\n ATTR_NORMAL,\n);\nparseSymbols(\n \"prime′cdot⋅times×pm±div÷sum∑int∫leftrightarrow↔Leftarrow⇐Rightarrow⇒Leftrightarrow⇔cdots⋯in∈notin∉subset⊂supset⊃subseteq⊆supseteq⊇cup∪cap∩to→rightarrow→leftarrow←gets←dots…ldots…le≤leq≤ge≥geq≥\",\n TYPE_OP,\n);\nparseSymbols(\"neq≠ne≠\", TYPE_OP, ATTR_NORMAL);\nparseSymbols(\"mp∓lor∨land∧\", TYPE_OP, ATTR_BIN);\nparseSymbols(\"approx≈sim∼cong≅propto∝equiv≡ni∋perp⟂parallel∥\", TYPE_OP, ATTR_REL);\n\n// 函数名直接并入 SYM_MAP,消除 FUNC_NAMES\n\"sin cos tan cot sec csc log lg ln lim exp max min sup inf det gcd arcsin arccos arctan sinh cosh tanh coth deg arg\".replace(\n /\\w+/g,\n (e) => (SYM_MAP[e] = [TYPE_FUNC, e]),\n);\n\n// 空格命令直接并入 SYM_MAP,消除 SPACE_MAP\nSYM_MAP.quad = [TYPE_SPACE, \"16px\"];\nSYM_MAP.qquad = [TYPE_SPACE, \"32px\"];\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\n\nimport { ATTR_NORMAL, ATTR_STRETCHY_FALSE, ATTR_BAR } from \"./const/ATTR.js\";\nimport { SYM_MAP } from \"./const/SYM.js\";\nimport {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n TOK_LPAREN,\n TOK_RPAREN,\n} from \"./const/TOK.js\";\nconst LIMITS_MAP = {\n \"\\\\limits\": 1,\n \"\\\\nolimits\": 2,\n },\n MENCLOSE_MAP = {\n __proto__: null,\n boxed: 1,\n cancel: 2,\n sout: 3,\n },\n CHAR_MAP = {\n \"-\": [TYPE_OP, \"−\"],\n \"*\": [TYPE_OP, \"∗\"],\n \"/\": [TYPE_OP, \"/\", ATTR_NORMAL],\n \"(\": [TYPE_OP, \"(\", ATTR_STRETCHY_FALSE],\n \")\": [TYPE_OP, \")\", ATTR_STRETCHY_FALSE],\n \"[\": [TYPE_OP, \"[\", ATTR_STRETCHY_FALSE],\n \"]\": [TYPE_OP, \"]\", ATTR_STRETCHY_FALSE],\n \"|\": [TYPE_OP, \"|\", ATTR_BAR],\n \".\": [TYPE_OP, \".\", ATTR_NORMAL],\n \"'\": [TYPE_OP, \"′\"],\n },\n delim = (tokens, ref) => {\n const idx = ref[0];\n if (tokens[idx] == null) return null;\n ref[0] += 2;\n const val = tokens[idx + 1];\n if (val === \".\") return [TYPE_OP, \"\", ' fence=\"true\" stretchy=\"true\" symmetric=\"true\"'];\n return [TYPE_OP, val === \"<\" ? \"⟨\" : val === \">\" ? \"⟩\" : val[0] === \"\\\\\" ? val.slice(1) : val];\n },\n opt = (tokens, ref, check_num) => {\n let idx = ref[0];\n if (\n tokens[idx] === TOK_OP &&\n tokens[idx + 1] === \"[\" &&\n (!check_num || tokens[idx + 2] === TOK_NUM)\n ) {\n idx += 2;\n while (tokens[idx] > 0 && (tokens[idx] !== TOK_OP || tokens[idx + 1] !== \"]\")) {\n idx += 2;\n }\n tokens[idx] === TOK_OP && (idx += 2);\n ref[0] = idx;\n }\n },\n brace = (tokens, ref) => {\n let idx = ref[0];\n if (tokens[idx] === TOK_LBRACE) {\n idx += 2;\n let str = \"\";\n while (tokens[idx] > 0 && tokens[idx] !== TOK_RBRACE) {\n str += tokens[idx + 1];\n idx += 2;\n }\n tokens[idx] === TOK_RBRACE && (idx += 2);\n ref[0] = idx;\n return str;\n }\n return \"\";\n },\n rows = (tokens, ref, end_check, env) => {\n const rows = [];\n let row = [],\n cell = [];\n while (tokens[ref[0]] > 0) {\n const type = tokens[ref[0]],\n val = tokens[ref[0] + 1];\n if (!end_check && type === TOK_RBRACE) break;\n if (end_check && type === TOK_CMD && val === \"\\\\end\") {\n const pos = ref[0];\n ref[0] += 2;\n const end = brace(tokens, ref);\n if (end === env) {\n break;\n }\n ref[0] = pos;\n }\n if ((type === TOK_OP && val === \"&\") || (type === TOK_CMD && val === \"\\\\\\\\\")) {\n ref[0] += 2;\n row.push(cell);\n cell = [];\n if (val === \"\\\\\\\\\") {\n opt(tokens, ref, 1);\n rows.push(row);\n row = [];\n }\n continue;\n }\n const node = grab(tokens, ref);\n if (node) cell.push(node);\n }\n (cell.length || row.length) && (row.push(cell), rows.push(row));\n if (rows.length && !rows[rows.length - 1][1] && !rows[rows.length - 1][0][0]) {\n rows.pop();\n }\n return rows;\n },\n matrix = (tokens, ref, name) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n ref[0] += 2;\n const res = rows(tokens, ref, 0, name);\n if (tokens[ref[0]] === TOK_RBRACE) ref[0] += 2;\n return [TYPE_MATRIX, name, res];\n }\n const node = read(tokens, ref, 1);\n return node ? [TYPE_MATRIX, name, [[[node]]]] : null;\n },\n txt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const val = brace(tokens, ref);\n if (val === \"\") return [TYPE_GROUP, []];\n const parts = val.split(\"\\\\\\\\\");\n if (parts.length > 1) {\n return [\n TYPE_GROUP,\n parts.flatMap((p, i) => [\n ...(i ? [[TYPE_LINEBREAK]] : []),\n ...(p ? [[TYPE_TEXT, p]] : []),\n ]),\n ];\n }\n return [TYPE_TEXT, val];\n }\n const node = read(tokens, ref, 1);\n if (node) {\n return [TYPE_TEXT, node[1]];\n }\n throw [3, \"text\"];\n },\n begin = (tokens, ref, val) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const env = brace(tokens, ref);\n if (env === \"array\") {\n opt(tokens, ref);\n tokens[ref[0]] === TOK_LBRACE ? brace(tokens, ref) : tokens[ref[0]] > 0 && (ref[0] += 2);\n }\n const res = rows(tokens, ref, 1, env);\n return [TYPE_MATRIX, env, res];\n }\n return [TYPE_IDENT, val];\n },\n sqrt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"[\") {\n ref[0] += 2;\n const nodes = [];\n while (tokens[ref[0]] > 0 && (tokens[ref[0]] !== TOK_OP || tokens[ref[0] + 1] !== \"]\")) {\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n if (tokens[ref[0]] === TOK_OP) ref[0] += 2;\n return [TYPE_MROOT, read(tokens, ref, 1), [TYPE_GROUP, nodes]];\n }\n return [TYPE_MSQRT, read(tokens, ref, 1)];\n },\n fence = (tokens, ref) => {\n const left = delim(tokens, ref),\n body = parse(tokens, ref);\n if (tokens[ref[0]] === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") {\n ref[0] += 2;\n return [TYPE_LEFT_RIGHT, [left, ...body, delim(tokens, ref)].filter(Boolean)];\n }\n throw [1, left];\n },\n over = (tokens, ref) => [TYPE_OVERLINE, read(tokens, ref, 1)],\n frac = (tokens, ref) => [TYPE_FRAC, read(tokens, ref, 1), read(tokens, ref, 1)],\n phantom = (tokens, ref) => [TYPE_MPHANTOM, read(tokens, ref, 1)],\n pmod = (tokens, ref) => [\n TYPE_GROUP,\n [\n [TYPE_SPACE, \"8px\"],\n CHAR_MAP[\"(\"],\n [TYPE_TEXT, \"mod\"],\n [TYPE_SPACE, \"4px\"],\n read(tokens, ref, 1),\n CHAR_MAP[\")\"],\n ],\n ],\n CMD_MAP = {\n __proto__: null,\n \"\\\\\": (tokens, ref) => {\n tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"*\" && (ref[0] += 2);\n opt(tokens, ref, 1);\n return [TYPE_LINEBREAK];\n },\n text: txt,\n frac,\n overline: over,\n bar: over,\n sqrt,\n left: fence,\n phantom,\n pmod,\n begin,\n end: (tokens, ref, val, name) => {\n throw [0, name];\n },\n right: (tokens, ref, val, name) => {\n throw [2, name];\n },\n },\n TOK_MAP = {\n [TOK_IDENT]: (val) => [TYPE_IDENT, val],\n [TOK_OP]: (val) => CHAR_MAP[val] ?? [TYPE_OP, val],\n [TOK_LPAREN]: () => CHAR_MAP[\"(\"],\n [TOK_RPAREN]: () => CHAR_MAP[\")\"],\n [TOK_NUM]: (val) => [TYPE_NUM, val],\n [TOK_LBRACE]: (val, tokens, ref) => {\n const res = [TYPE_GROUP, parse(tokens, ref)];\n tokens[ref[0]] === TOK_RBRACE && (ref[0] += 2);\n return res;\n },\n [TOK_CMD]: (val, tokens, ref) => {\n const name = val.slice(1),\n handler = CMD_MAP[name];\n return handler\n ? handler(tokens, ref, val, name)\n : /^(?:[pbvV]?matrix|cases|array)$/.test(name)\n ? (matrix(tokens, ref, name) ?? [TYPE_IDENT, val])\n : MENCLOSE_MAP[name]\n ? [TYPE_MENCLOSE, MENCLOSE_MAP[name], read(tokens, ref, 1)]\n : (SYM_MAP[name] ?? [TYPE_IDENT, val]);\n },\n },\n read = (tokens, ref, split_num) => {\n const idx = ref[0],\n type = tokens[idx];\n if (!type) return null;\n let val = tokens[idx + 1];\n const offset = ref[1];\n offset && (val = val.slice(offset));\n if (split_num && type === TOK_NUM && val[1]) {\n ref[1] = (offset || 0) + 1;\n val = val[0];\n } else {\n ref[0] += 2;\n ref[1] = 0;\n }\n return TOK_MAP[type]?.(val, tokens, ref) ?? null;\n },\n grab = (tokens, ref) => {\n const base = read(tokens, ref);\n if (!base) return null;\n let limits = 0;\n const idx = ref[0];\n if (tokens[idx] === TOK_CMD) {\n const lim = LIMITS_MAP[tokens[idx + 1]];\n if (lim) {\n limits = lim;\n ref[0] += 2;\n }\n }\n let sub = null,\n sup = null,\n type;\n while ((type = tokens[ref[0]]) > 0) {\n if (type === TOK_OP && tokens[ref[0] + 1] === \"'\") {\n let count = 0;\n while (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"'\") (count++, (ref[0] += 2));\n sup = [TYPE_OP, \"′\".repeat(count)];\n continue;\n }\n if (type !== TOK_SUB && type !== TOK_SUP) break;\n ref[0] += 2;\n if (type === TOK_SUB) sub = read(tokens, ref, 1);\n else sup = read(tokens, ref, 1);\n }\n return sub\n ? sup\n ? [TYPE_SUPSUB, base, sub, sup, limits]\n : [TYPE_SUB, base, sub, limits]\n : sup\n ? [TYPE_SUP, base, sup, limits]\n : base;\n },\n parse = (tokens, ref) => {\n const nodes = [];\n let type;\n while ((type = tokens[ref[0]]) > 0) {\n if (type === TOK_RBRACE) break;\n if (type === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") break;\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n return nodes;\n };\n\nexport default parse;\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport { STYLE_BOX, STYLE_CANCEL, STYLE_SOUT } from \"./const/STYL.js\";\nimport lex from \"./lex.js\";\nimport parse from \"./parse.js\";\n\nconst MROW = \"mrow\",\n STYLES = [null, STYLE_BOX, STYLE_CANCEL, STYLE_SOUT],\n ESC_MAP = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n },\n esc = (str) => str.replace(/[&<>\"]/g, (m) => ESC_MAP[m]),\n wrap = (tag_name, inner, attr) =>\n \"<\" + tag_name + (attr || \"\") + \">\" + inner + \"</\" + tag_name + \">\",\n tag = (name, val, attr) => wrap(name, esc(val), attr),\n nest = (name, ...ns) => wrap(name, ns.map(row).join(\"\")),\n row = (n) => {\n if (!n) return wrap(MROW, \"\");\n const [type, val] = n;\n return type === TYPE_GROUP && !val[1]\n ? row(val[0])\n : type === TYPE_GROUP || type === TYPE_FUNC\n ? wrap(MROW, show(n))\n : show(n);\n },\n script = (n1, limits, display, inline) =>\n limits === 1 ||\n (!limits && (n1[1] === \"∑\" || (n1[0] === TYPE_FUNC && /^(lim|max|min|sup|inf)$/.test(n1[1]))))\n ? display\n : inline,\n SHOW_MAP = {\n [TYPE_IDENT]: (n) => tag(\"mi\", n[1], n[2]),\n [TYPE_NUM]: (n) => tag(\"mn\", n[1]),\n [TYPE_OP]: (n) => tag(\"mo\", n[1], n[2]),\n [TYPE_FUNC]: (n) => tag(\"mi\", n[1]) + \"<mo>\\u2061</mo>\",\n [TYPE_GROUP]: (n) => n[1].map(show).join(\"\"),\n [TYPE_FRAC]: (n) => nest(\"mfrac\", n[1], n[2]),\n [TYPE_SUP]: (n) => nest(script(n[1], n[3], \"mover\", \"msup\"), n[1], n[2]),\n [TYPE_SUB]: (n) => nest(script(n[1], n[3], \"munder\", \"msub\"), n[1], n[2]),\n [TYPE_SUPSUB]: (n) => nest(script(n[1], n[4], \"munderover\", \"msubsup\"), n[1], n[2], n[3]),\n [TYPE_TEXT]: (n) => tag(\"mtext\", n[1].replace(/ /g, \"\\u00A0\")),\n [TYPE_SPACE]: (n) => '<mspace width=\"' + n[1] + '\"></mspace>',\n [TYPE_MSQRT]: (n) => wrap(\"msqrt\", row(n[1])),\n [TYPE_MROOT]: (n) => nest(\"mroot\", n[1], n[2]),\n [TYPE_LEFT_RIGHT]: (n) => wrap(MROW, n[1].map(show).join(\"\")),\n [TYPE_OVERLINE]: (n) => nest(\"mover\", n[1], [TYPE_OP, \"¯\"]),\n [TYPE_MENCLOSE]: (n) => {\n const style = STYLES[n[1]];\n return style ? \"<mrow\" + style + \">\" + row(n[2]) + \"</mrow>\" : row(n[2]);\n },\n [TYPE_MPHANTOM]: (n) => wrap(\"mphantom\", row(n[1])),\n [TYPE_MATRIX]: (n) => {\n const is_cases = n[1] === \"cases\",\n has_rel =\n is_cases &&\n n[2].every((r) => {\n const node = r[1]?.[0];\n return !node || (node[0] === TYPE_OP && \"=<≤≥≠≈≡∝>\".includes(node[1]));\n }),\n inner = n[2]\n .map((r) =>\n wrap(\n \"mtr\",\n r\n .map((c, i) => {\n const html = c.map(show).join(\"\");\n return wrap(\n \"mtd\",\n c[1] ? wrap(MROW, html) : html,\n is_cases\n ? ' style=\"text-align:left' +\n (has_rel ? (i ? \";padding-left:0\" : \";padding-right:0\") : \"\") +\n '\"'\n : \"\",\n );\n })\n .join(\"\"),\n ),\n )\n .join(\"\"),\n tbl = wrap(\n \"mtable\",\n inner,\n is_cases\n ? ' columnalign=\"left\" rowspacing=\".2em\" columnspacing=\"' +\n (has_rel ? \"0\" : \"1em\") +\n '\"'\n : \"\",\n ),\n idx = \"pbvVc\".indexOf(n[1][0]);\n if (idx >= 0) {\n const d0 = \"([|‖{\"[idx],\n d1 = \")]‖‖\"[idx] || \"\";\n return wrap(MROW, (d0 ? tag(\"mo\", d0) : \"\") + tbl + (d1 ? tag(\"mo\", d1) : \"\"));\n }\n return tbl;\n },\n [TYPE_LINEBREAK]: () => '<mspace linebreak=\"newline\"></mspace>',\n },\n show = (n) => (n ? SHOW_MAP[n[0]](n) : \"\");\n\nexport default (tex, block) => {\n const clean = tex.replace(/[\\r\\n]+/g, \" \");\n return (\n '<math xmlns=\"http://www.w3.org/1998/Math/MathML\"' +\n (block ? ' display=\"block\"' : \"\") +\n \"><semantics><mrow>\" +\n parse(lex(clean), [0]).map(show).join(\"\") +\n '</mrow><annotation encoding=\"application/x-tex\">' +\n esc(clean) +\n \"</annotation></semantics></math>\"\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mathml.js","names":["lex"],"sources":["../src/const/STYL.js","../src/lex.js","../src/const/ATTR.js","../src/const/SYM.js","../src/parse.js","../src/mathml.js"],"sourcesContent":["const STYLE_PREFIX = ' style=\"display:inline-block;',\n GRAD = \"background:linear-gradient(\",\n LINE = \"transparent 47%,currentColor 47%,currentColor 53%,transparent 53%)\";\n\nexport const STYLE_BOX = STYLE_PREFIX + 'border:1px solid;padding:2px 3px\"',\n STYLE_CANCEL = STYLE_PREFIX + GRAD + \"to top right,\" + LINE + '\"',\n STYLE_SOUT = STYLE_PREFIX + GRAD + LINE + '\"';\n","import {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_LBRACE,\n TOK_RBRACE,\n} from \"./const/TOK.js\";\n\nconst skip = (str, idx) => (str.charCodeAt(idx) <= 32 ? skip(str, idx + 1) : idx),\n NUM_RE = /\\d+(?:\\.\\d+)?|\\.\\d+/y,\n CMD_RE = /\\\\(?:[a-zA-Z]+|.)/y;\n\nexport default (str) => {\n const res = [],\n len = str.length;\n let idx = 0;\n while (idx < len) {\n idx = skip(str, idx);\n if (idx >= len) break;\n\n CMD_RE.lastIndex = idx;\n let m = CMD_RE.exec(str);\n if (m) {\n const cmd = m[0];\n idx += cmd.length;\n res.push(TOK_CMD, cmd);\n if (cmd === \"\\\\text\") {\n const pos = skip(str, idx);\n if (str.charCodeAt(pos) === 123) {\n let braces = 1,\n t_idx = pos;\n while (t_idx < len && braces) {\n const cc = str.charCodeAt(++t_idx);\n if (cc === 123) ++braces;\n else if (cc === 125) --braces;\n }\n if (!braces) {\n res.push(TOK_LBRACE, \"{\", TOK_IDENT, str.slice(pos + 1, t_idx), TOK_RBRACE, \"}\");\n idx = t_idx + 1;\n }\n }\n }\n continue;\n }\n\n NUM_RE.lastIndex = idx;\n m = NUM_RE.exec(str);\n if (m) {\n const num = m[0];\n res.push(TOK_NUM, num);\n idx += num.length;\n continue;\n }\n\n const char = str[idx],\n pos = \"_^{}\".indexOf(char);\n res.push(\n ((char.charCodeAt(0) | 32) - 97) >>> 0 < 26 ? TOK_IDENT : pos >= 0 ? pos + TOK_SUB : TOK_OP,\n char,\n );\n ++idx;\n }\n res.push(TOK_EOF, \"\");\n return res;\n};\n","const FALSE = ' stretchy=\"false\"',\n space = (n) => ' lspace=\"' + n + 'px\" rspace=\"' + n + 'px\"';\n\nexport const ATTR_NORMAL = ' mathvariant=\"normal\"',\n ATTR_STRETCHY_FALSE = FALSE,\n ATTR_BAR = FALSE + space(0),\n ATTR_BIN = space(4),\n ATTR_REL = space(5);\n","import { TYPE_IDENT, TYPE_OP, TYPE_FUNC, TYPE_SPACE } from \"./TYPE.js\";\nimport { ATTR_NORMAL, ATTR_BIN, ATTR_REL } from \"./ATTR.js\";\n\nexport const SYM_MAP = { __proto__: null };\n\nconst parseSymbols = (str, type, attr) => {\n str.replace(/([a-zA-Z]+)([^a-zA-Z]+)/g, (m, k, v) => {\n SYM_MAP[k] = attr ? [type, v, attr] : [type, v];\n });\n};\n\nparseSymbols(\n \"alphaαbetaβgammaγthetaθpiπdeltaδepsilonϵzetaζetaηiotaιkappaκlambdaλmuμnuνxiξrhoρsigmaσtauτupsilonυphiϕchiχpsiψomegaωellℓhbarℏneg¬\",\n TYPE_IDENT,\n);\nparseSymbols(\n \"DeltaΔGammaΓThetaΘLambdaΛXiΞPiΠSigmaΣUpsilonΥPhiΦPsiΨOmegaΩinfty∞nabla∇partial∂forall∀exists∃emptyset∅\",\n TYPE_IDENT,\n ATTR_NORMAL,\n);\nparseSymbols(\n \"prime′cdot⋅times×pm±div÷sum∑int∫leftrightarrow↔Leftarrow⇐Rightarrow⇒Leftrightarrow⇔cdots⋯in∈notin∉subset⊂supset⊃subseteq⊆supseteq⊇cup∪cap∩to→rightarrow→leftarrow←gets←dots…ldots…le≤leq≤ge≥geq≥\",\n TYPE_OP,\n);\nparseSymbols(\"neq≠ne≠\", TYPE_OP, ATTR_NORMAL);\nparseSymbols(\"mp∓lor∨land∧\", TYPE_OP, ATTR_BIN);\nparseSymbols(\"approx≈sim∼cong≅propto∝equiv≡ni∋perp⟂parallel∥\", TYPE_OP, ATTR_REL);\n\n// 函数名直接并入 SYM_MAP,消除 FUNC_NAMES\n\"sin cos tan cot sec csc log lg ln lim exp max min sup inf det gcd arcsin arccos arctan sinh cosh tanh coth deg arg\".replace(\n /\\w+/g,\n (e) => (SYM_MAP[e] = [TYPE_FUNC, e]),\n);\n\n// 空格命令直接并入 SYM_MAP,消除 SPACE_MAP\nSYM_MAP.quad = [TYPE_SPACE, \"16px\"];\nSYM_MAP.qquad = [TYPE_SPACE, \"32px\"];\n","import {\n ERR_EXTRA_END,\n ERR_MISSING_RIGHT,\n ERR_EXTRA_RIGHT,\n ERR_MISSING_BRACE,\n} from \"./const/ERR.js\";\nimport {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\n\nimport { ATTR_NORMAL, ATTR_STRETCHY_FALSE, ATTR_BAR } from \"./const/ATTR.js\";\nimport { SYM_MAP } from \"./const/SYM.js\";\nimport {\n TOK_EOF,\n TOK_NUM,\n TOK_IDENT,\n TOK_OP,\n TOK_CMD,\n TOK_SUB,\n TOK_SUP,\n TOK_LBRACE,\n TOK_RBRACE,\n} from \"./const/TOK.js\";\nconst MENCLOSE_MAP = {\n __proto__: null,\n boxed: 1,\n cancel: 2,\n sout: 3,\n },\n CHAR_MAP = {\n \"-\": [TYPE_OP, \"−\"],\n \"*\": [TYPE_OP, \"∗\"],\n \"/\": [TYPE_OP, \"/\", ATTR_NORMAL],\n \"|\": [TYPE_OP, \"|\", ATTR_BAR],\n \".\": [TYPE_OP, \".\", ATTR_NORMAL],\n \"'\": [TYPE_OP, \"′\"],\n },\n delim = (tokens, ref) => {\n const idx = ref[0];\n if (tokens[idx] == null) return null;\n ref[0] += 2;\n const val = tokens[idx + 1];\n if (val === \".\") return [TYPE_OP, \"\", ' fence=\"true\" stretchy=\"true\" symmetric=\"true\"'];\n return [TYPE_OP, val === \"<\" ? \"⟨\" : val === \">\" ? \"⟩\" : val[0] === \"\\\\\" ? val.slice(1) : val];\n },\n opt = (tokens, ref, check_num) => {\n let idx = ref[0];\n if (\n tokens[idx] === TOK_OP &&\n tokens[idx + 1] === \"[\" &&\n (!check_num || tokens[idx + 2] === TOK_NUM)\n ) {\n idx += 2;\n while (tokens[idx] > 0 && (tokens[idx] !== TOK_OP || tokens[idx + 1] !== \"]\")) {\n idx += 2;\n }\n tokens[idx] > 0 && (idx += 2);\n ref[0] = idx;\n }\n },\n brace = (tokens, ref) => {\n let idx = ref[0],\n str = \"\";\n if (tokens[idx] === TOK_LBRACE) {\n idx += 2;\n for (; tokens[idx] > 0 && tokens[idx] !== TOK_RBRACE; idx += 2) {\n str += tokens[idx + 1];\n }\n tokens[idx] > 0 && (idx += 2);\n ref[0] = idx;\n }\n return str;\n },\n rows = (tokens, ref, end_check, env) => {\n const rows = [];\n let row = [],\n cell = [];\n while (tokens[ref[0]] > 0) {\n const type = tokens[ref[0]],\n val = tokens[ref[0] + 1];\n if (!end_check && type === TOK_RBRACE) break;\n if (end_check && type === TOK_CMD && val === \"\\\\end\") {\n const pos = ref[0];\n ref[0] += 2;\n const end = brace(tokens, ref);\n if (end === env) {\n break;\n }\n ref[0] = pos;\n }\n if (val === \"&\" || val === \"\\\\\\\\\") {\n ref[0] += 2;\n row.push(cell);\n cell = [];\n if (val === \"\\\\\\\\\") {\n opt(tokens, ref, 1);\n rows.push(row);\n row = [];\n }\n continue;\n }\n const node = grab(tokens, ref);\n if (node) cell.push(node);\n }\n cell.length && row.push(cell);\n row.length && rows.push(row);\n if (rows.length && !rows[rows.length - 1][1] && !rows[rows.length - 1][0][0]) {\n rows.pop();\n }\n return rows;\n },\n matrix = (tokens, ref, name) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n ref[0] += 2;\n const res = rows(tokens, ref, 0, name);\n tokens[ref[0]] > 0 && (ref[0] += 2);\n return [TYPE_MATRIX, name, res];\n }\n const node = read(tokens, ref, 1);\n return node ? [TYPE_MATRIX, name, [[[node]]]] : null;\n },\n txt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_LBRACE) {\n const val = brace(tokens, ref);\n if (val === \"\") return [TYPE_GROUP, []];\n const parts = val.split(\"\\\\\\\\\");\n if (parts.length > 1) {\n return [\n TYPE_GROUP,\n parts.flatMap((p, i) => [\n ...(i ? [[TYPE_LINEBREAK]] : []),\n ...(p ? [[TYPE_TEXT, p]] : []),\n ]),\n ];\n }\n return [TYPE_TEXT, val];\n }\n const node = read(tokens, ref, 1);\n if (node) {\n return [TYPE_TEXT, node[1]];\n }\n throw [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) brace(tokens, ref);\n else read(tokens, ref);\n }\n const res = rows(tokens, ref, 1, env);\n return [TYPE_MATRIX, env, res];\n }\n return [TYPE_IDENT, val];\n },\n sqrt = (tokens, ref) => {\n if (tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"[\") {\n ref[0] += 2;\n const nodes = [];\n while (tokens[ref[0]] > 0 && (tokens[ref[0]] !== TOK_OP || tokens[ref[0] + 1] !== \"]\")) {\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n if (tokens[ref[0]] === TOK_OP) ref[0] += 2;\n return [TYPE_MROOT, read(tokens, ref, 1), [TYPE_GROUP, nodes]];\n }\n return [TYPE_MSQRT, read(tokens, ref, 1)];\n },\n fence = (tokens, ref) => {\n const left = delim(tokens, ref),\n body = parse(tokens, ref);\n if (tokens[ref[0]] === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") {\n ref[0] += 2;\n return [TYPE_LEFT_RIGHT, [left, ...body, delim(tokens, ref)].filter(Boolean)];\n }\n throw [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 CHAR_MAP[\"(\"],\n [TYPE_TEXT, \"mod\"],\n [TYPE_SPACE, \"4px\"],\n read(tokens, ref, 1),\n CHAR_MAP[\")\"],\n ],\n ],\n CMD_MAP = {\n __proto__: null,\n \"\\\\\": (tokens, ref) => {\n tokens[ref[0]] === TOK_OP && tokens[ref[0] + 1] === \"*\" && (ref[0] += 2);\n opt(tokens, ref, 1);\n return [TYPE_LINEBREAK];\n },\n text: txt,\n frac,\n overline: over,\n bar: over,\n sqrt,\n left: fence,\n phantom,\n pmod,\n begin,\n end: (tokens, ref, val, name) => {\n throw [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]: (val) => [TYPE_IDENT, val],\n [TOK_OP]: (val) => CHAR_MAP[val] ?? [TYPE_OP, val],\n [TOK_NUM]: (val) => [TYPE_NUM, val],\n [TOK_LBRACE]: (val, tokens, ref) => {\n const res = [TYPE_GROUP, parse(tokens, ref)];\n tokens[ref[0]] > 0 && (ref[0] += 2);\n return res;\n },\n [TOK_CMD]: (val, tokens, ref) => {\n const name = val.slice(1),\n handler = CMD_MAP[name];\n return handler\n ? handler(tokens, ref, val, name)\n : /^(?:[pbvV]?matrix|cases|array)$/.test(name)\n ? (matrix(tokens, ref, name) ?? [TYPE_IDENT, val])\n : MENCLOSE_MAP[name]\n ? [TYPE_MENCLOSE, MENCLOSE_MAP[name], read(tokens, ref, 1)]\n : (SYM_MAP[name] ?? [TYPE_IDENT, val]);\n },\n },\n read = (tokens, ref, split_num) => {\n const idx = ref[0],\n type = tokens[idx],\n offset = ref[1];\n if (!type) return null;\n let val = tokens[idx + 1];\n offset && (val = val.slice(offset));\n if (split_num && type === TOK_NUM && val[1]) {\n ref[1] = offset + 1;\n val = val[0];\n } else {\n ref[0] += 2;\n ref[1] = 0;\n }\n return TOK_MAP[type](val, tokens, ref);\n },\n grab = (tokens, ref) => {\n const base = read(tokens, ref),\n idx = ref[0];\n if (!base) return null;\n let limits = tokens[idx + 1] === \"\\\\limits\" ? 1 : tokens[idx + 1] === \"\\\\nolimits\" ? 2 : 0,\n sub,\n sup,\n type;\n limits && (ref[0] += 2);\n while ((type = tokens[ref[0]]) > 0) {\n let count = 0;\n for (; tokens[ref[0] + 1] === \"'\"; ref[0] += 2) ++count;\n if (count) {\n sup = [TYPE_OP, \"′\".repeat(count)];\n continue;\n }\n if (type !== TOK_SUB && type !== TOK_SUP) break;\n ref[0] += 2;\n if (type === TOK_SUB) sub = read(tokens, ref, 1);\n else sup = read(tokens, ref, 1);\n }\n return sub\n ? sup\n ? [TYPE_SUPSUB, base, sub, sup, limits]\n : [TYPE_SUB, base, sub, limits]\n : sup\n ? [TYPE_SUP, base, sup, limits]\n : base;\n },\n parse = (tokens, ref) => {\n const nodes = [];\n let type;\n while ((type = tokens[ref[0]]) > 0) {\n if (type === TOK_RBRACE) break;\n if (type === TOK_CMD && tokens[ref[0] + 1] === \"\\\\right\") break;\n const node = grab(tokens, ref);\n if (node) nodes.push(node);\n }\n return nodes;\n };\n\n[...\"()[]\"].map((c) => (CHAR_MAP[c] = [TYPE_OP, c, ATTR_STRETCHY_FALSE]));\n\nexport default parse;\n","import {\n TYPE_IDENT,\n TYPE_NUM,\n TYPE_OP,\n TYPE_SUP,\n TYPE_SUB,\n TYPE_SUPSUB,\n TYPE_FRAC,\n TYPE_GROUP,\n TYPE_FUNC,\n TYPE_MSQRT,\n TYPE_MROOT,\n TYPE_LEFT_RIGHT,\n TYPE_OVERLINE,\n TYPE_MATRIX,\n TYPE_LINEBREAK,\n TYPE_TEXT,\n TYPE_SPACE,\n TYPE_MENCLOSE,\n TYPE_MPHANTOM,\n} from \"./const/TYPE.js\";\nimport { STYLE_BOX, STYLE_CANCEL, STYLE_SOUT } from \"./const/STYL.js\";\nimport lex from \"./lex.js\";\nimport parse from \"./parse.js\";\n\nconst MROW = \"mrow\",\n LEFT = \"left\",\n STYLES = [null, STYLE_BOX, STYLE_CANCEL, STYLE_SOUT],\n ALIGN_RL = [\"right\", LEFT],\n PAD_RL = [\";padding-right:0\", \";padding-left:0\"],\n TAGS = [null, \"mi\", \"mn\", \"mo\"],\n esc = (str) =>\n str.replace(/[&<>\"]/g, (m) =>\n m === \"&\" ? \"&\" : m === \"<\" ? \"<\" : m === \">\" ? \">\" : \""\",\n ),\n wrap = (tag_name, inner, attr) =>\n \"<\" + tag_name + (attr || \"\") + \">\" + inner + \"</\" + tag_name + \">\",\n tag = (name, val, attr) => wrap(name, esc(val), attr),\n tblAttr = (align, space) =>\n ' columnalign=\"' + align + '\" rowspacing=\".2em\" columnspacing=\"' + space + '\"',\n cellStyle = (align, pad) => ' style=\"text-align:' + align + pad + '\"',\n nest = (name, ...ns) => wrap(name, ns.map(row).join(\"\")),\n scr = (n, idx, display, inline, [, v] = n[1], limits = n[idx]) =>\n nest(\n limits === 1 || (!limits && (v === \"∑\" || /^(lim|max|min|sup|inf)$/.test(v)))\n ? display\n : inline,\n ...n.slice(1, idx),\n ),\n row = (n) => {\n if (!n) return wrap(MROW, \"\");\n const [type, val] = n;\n return type === TYPE_GROUP && !val[1]\n ? row(val[0])\n : type === TYPE_GROUP || type === TYPE_FUNC\n ? wrap(MROW, show(n))\n : show(n);\n },\n SHOW_MAP = {\n [TYPE_FUNC]: ([, val]) => tag(\"mi\", val) + wrap(\"mo\", \"\\u2061\"),\n [TYPE_GROUP]: ([, ns]) => ns.map(show).join(\"\"),\n [TYPE_FRAC]: ([, n_1, n_2]) => nest(\"mfrac\", n_1, n_2),\n [TYPE_SUP]: (n) => scr(n, 3, \"mover\", \"msup\"),\n [TYPE_SUB]: (n) => scr(n, 3, \"munder\", \"msub\"),\n [TYPE_SUPSUB]: (n) => scr(n, 4, \"munderover\", \"msubsup\"),\n [TYPE_TEXT]: ([, val]) => tag(\"mtext\", val.replace(/ /g, \"\\u00A0\")),\n [TYPE_SPACE]: ([, val]) => wrap(\"mspace\", \"\", ' width=\"' + val + '\"'),\n [TYPE_MSQRT]: ([, n_1]) => wrap(\"msqrt\", row(n_1)),\n [TYPE_MROOT]: ([, n_1, n_2]) => nest(\"mroot\", n_1, n_2),\n [TYPE_LEFT_RIGHT]: ([, ns]) => wrap(MROW, ns.map(show).join(\"\")),\n [TYPE_OVERLINE]: ([, n_1]) => nest(\"mover\", n_1, [TYPE_OP, \"¯\"]),\n [TYPE_MENCLOSE]: ([, style_id, node]) =>\n STYLES[style_id] ? wrap(MROW, row(node), STYLES[style_id]) : row(node),\n [TYPE_MPHANTOM]: ([, n_1]) => wrap(\"mphantom\", row(n_1)),\n [TYPE_MATRIX]: (n) => {\n const [, env, rows] = n,\n is_cases = env === \"cases\",\n is_align = /^align|split/.test(env),\n has_rel =\n is_cases &&\n rows.every((r) => {\n const [t, v] = r[1]?.[0] || [];\n return !t || (t === TYPE_OP && \"=<≤≥≠≈≡∝>\".includes(v));\n }),\n row_0 = rows[0] || [],\n col_styles = row_0.map((_, i) =>\n is_cases\n ? cellStyle(LEFT, has_rel ? PAD_RL[i % 2] : \"\")\n : is_align\n ? cellStyle(ALIGN_RL[i % 2], PAD_RL[i % 2])\n : \"\",\n ),\n inner = rows\n .map((r) =>\n wrap(\n \"mtr\",\n r\n .map((c, i) => {\n const html = c.map(show).join(\"\");\n return wrap(\"mtd\", c[1] ? wrap(MROW, html) : html, col_styles[i] || \"\");\n })\n .join(\"\"),\n ),\n )\n .join(\"\"),\n tbl_attr = is_cases\n ? tblAttr(LEFT, has_rel ? \"0\" : \"1em\")\n : is_align\n ? tblAttr(\n row_0.map((_, i) => ALIGN_RL[i % 2]).join(\" \"),\n row_0\n .slice(1)\n .map((_, i) => (i % 2 ? \"2em\" : \"0\"))\n .join(\" \"),\n )\n : \"\",\n tbl = wrap(\"mtable\", inner, tbl_attr),\n idx = \"pbvVc\".indexOf(env[0]);\n\n if (idx >= 0) {\n const d_0 = \"([|‖{\"[idx],\n d_1 = \")]‖‖\"[idx] || \"\";\n return wrap(MROW, tag(\"mo\", d_0) + tbl + (d_1 && tag(\"mo\", d_1)));\n }\n return tbl;\n },\n [TYPE_LINEBREAK]: () => wrap(\"mspace\", \"\", ' linebreak=\"newline\"'),\n },\n show = (n) => (n ? (n[0] <= 3 ? tag(TAGS[n[0]], n[1], n[2]) : SHOW_MAP[n[0]](n)) : \"\");\n\nexport default (tex, block) => {\n const clean = tex.replace(/[\\r\\n]+/g, \" \");\n return wrap(\n \"math\",\n wrap(\n \"semantics\",\n wrap(MROW, parse(lex(clean), [0, 0]).map(show).join(\"\")) +\n wrap(\"annotation\", esc(clean), ' encoding=\"application/x-tex\"'),\n ),\n ' xmlns=\"http://www.w3.org/1998/Math/MathML\"' + (block ? ' display=\"block\"' : \"\"),\n );\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@webc.site/math","version":"0.1.
|
|
1
|
+
{"name":"@webc.site/math","version":"0.1.32","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":{}}
|