kmap-term-tree 0.9.21 → 0.9.22

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.
@@ -1 +1,3 @@
1
1
  export { KmapTermTree } from './KmapTermTree.js';
2
+ export { parseAsciiMath } from './asciimath-parser.js';
3
+ export * from './model.js';
package/dist/src/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { KmapTermTree } from './KmapTermTree.js';
2
+ export { parseAsciiMath } from './asciimath-parser.js';
3
+ export * from './model.js';
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { KmapTermTree } from './KmapTermTree.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,cAAc,YAAY,CAAC","sourcesContent":["export { KmapTermTree } from './KmapTermTree.js';\nexport { parseAsciiMath } from './asciimath-parser.js';\nexport * from './model.js';\n"]}
@@ -0,0 +1,2 @@
1
+ import { CSSResult } from 'lit';
2
+ export declare const katexStyles: CSSResult;
@@ -0,0 +1,7 @@
1
+ import { css } from 'lit';
2
+ // language=CSS
3
+ export const katexStyles = css `
4
+ @font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.19.1"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
5
+
6
+ `;
7
+ //# sourceMappingURL=katex-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"katex-css.js","sourceRoot":"","sources":["../../src/katex-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,MAAM,KAAK,CAAC;AAErC,eAAe;AACf,MAAM,CAAC,MAAM,WAAW,GAAc,GAAG,CAAA;;;CAGxC,CAAC","sourcesContent":["import { css, CSSResult } from 'lit';\n\n// language=CSS\nexport const katexStyles: CSSResult = css`\n @font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_AMS-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Caligraphic-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Fraktur-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-BoldItalic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Main-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-BoldItalic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Math-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:normal;font-weight:700;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Bold.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:italic;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Italic.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:\"KaTeX_SansSerif\";font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_SansSerif-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Script-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size1-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size2-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size3-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Size4-Regular.ttf) format(\"truetype\")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.woff2) format(\"woff2\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.woff) format(\"woff\"),url(https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/fonts/KaTeX_Typewriter-Regular.ttf) format(\"truetype\")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:\"0.19.1\"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:\"\"}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:\"(\" counter(katexEqnNo) \")\";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:\"(\" counter(mmlEqnNo) \")\";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}\n\n`;\n"]}
@@ -0,0 +1,30 @@
1
+ export type NodeType = 'literal' | 'variable' | 'operator' | 'function';
2
+ export interface TermNode {
3
+ id: string;
4
+ type: NodeType;
5
+ op?: string;
6
+ symbol: string;
7
+ label: string;
8
+ raw?: string;
9
+ value?: number;
10
+ isUnary?: boolean;
11
+ isParenthesized?: boolean;
12
+ implicit?: boolean;
13
+ mathJson: any;
14
+ children: TermNode[];
15
+ depth: number;
16
+ x?: number;
17
+ y?: number;
18
+ width?: number;
19
+ height?: number;
20
+ }
21
+ export interface TreeEdge {
22
+ fromNodeId: string;
23
+ toNodeId: string;
24
+ fromX: number;
25
+ fromY: number;
26
+ toX: number;
27
+ toY: number;
28
+ }
29
+ export declare const GERMAN_LABELS: Record<string, string>;
30
+ export declare const OPERATOR_SYMBOLS: Record<string, string>;
@@ -0,0 +1,26 @@
1
+ export const GERMAN_LABELS = {
2
+ Add: 'Summe',
3
+ Subtract: 'Differenz',
4
+ Multiply: 'Produkt',
5
+ Divide: 'Quotient',
6
+ Power: 'Potenz',
7
+ Negate: 'Gegenzahl (Negation)',
8
+ Sqrt: 'Quadratwurzel',
9
+ Sin: 'Sinus',
10
+ Cos: 'Kosinus',
11
+ Tan: 'Tangens',
12
+ Cot: 'Kotangens',
13
+ Ln: 'Natürlicher Logarithmus',
14
+ Log: 'Logarithmus',
15
+ Abs: 'Betrag',
16
+ Exp: 'Exponentialfunktion',
17
+ };
18
+ export const OPERATOR_SYMBOLS = {
19
+ Add: '+',
20
+ Subtract: '−',
21
+ Multiply: '·',
22
+ Divide: ':',
23
+ Power: '^',
24
+ Negate: '−',
25
+ };
26
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,GAAG,EAAE,OAAO;IACZ,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,sBAAsB;IAC9B,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,WAAW;IAChB,EAAE,EAAE,yBAAyB;IAC7B,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,qBAAqB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,GAAG,EAAE,GAAG;IACR,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;CACZ,CAAC","sourcesContent":["export type NodeType = 'literal' | 'variable' | 'operator' | 'function';\n\nexport interface TermNode {\n id: string;\n type: NodeType;\n op?: string;\n symbol: string;\n label: string;\n raw?: string;\n value?: number;\n isUnary?: boolean;\n isParenthesized?: boolean;\n implicit?: boolean;\n mathJson: any;\n children: TermNode[];\n depth: number;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n}\n\nexport interface TreeEdge {\n fromNodeId: string;\n toNodeId: string;\n fromX: number;\n fromY: number;\n toX: number;\n toY: number;\n}\n\nexport const GERMAN_LABELS: Record<string, string> = {\n Add: 'Summe',\n Subtract: 'Differenz',\n Multiply: 'Produkt',\n Divide: 'Quotient',\n Power: 'Potenz',\n Negate: 'Gegenzahl (Negation)',\n Sqrt: 'Quadratwurzel',\n Sin: 'Sinus',\n Cos: 'Kosinus',\n Tan: 'Tangens',\n Cot: 'Kotangens',\n Ln: 'Natürlicher Logarithmus',\n Log: 'Logarithmus',\n Abs: 'Betrag',\n Exp: 'Exponentialfunktion',\n};\n\nexport const OPERATOR_SYMBOLS: Record<string, string> = {\n Add: '+',\n Subtract: '−',\n Multiply: '·',\n Divide: ':',\n Power: '^',\n Negate: '−',\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { Token } from \"./tokenizer.js\";\n\nexport class TermNode {\n readonly token: Token;\n readonly leftChildNode?: TermNode;\n readonly rightChildNode?: TermNode;\n\n constructor(token: Token, leftChildNode?: TermNode, rightChildNode?: TermNode) {\n this.token = token;\n this.leftChildNode = leftChildNode;\n this.rightChildNode = rightChildNode;\n }\n\n public breadthFirst(callback: (n: TermNode, d: number) => void): void {\n var queue: TermNode[] = [this];\n var depth = [0];\n var n: TermNode | undefined;\n var d: number | undefined;\n\n while(queue.length > 0) {\n n = queue.shift();\n d = depth.shift();\n if (n === undefined || d === undefined)\n throw new Error(\"nonsense\");\n\n callback(n, d);\n\n if (n.rightChildNode) {\n queue.push(n.rightChildNode);\n depth.push(d + 1);\n }\n if (n.leftChildNode) {\n queue.push(n.leftChildNode);\n depth.push(d + 1);\n }\n }\n }\n\n public toString = () : string => { return this.token.value; }\n}\n\nclass Stack<T> {\n private array: T[] = [];\n\n push(o: T) { this.array.push(o) };\n pop(): T { return this.array.pop() as T; };\n peek(): T { return this.array.slice(-1)[0]; };\n isEmpty(): boolean { return this.array.length === 0 };\n clear(): void { this.array = [] }\n}\nexport class Parser {\n private opStack: Stack<Token> = new Stack<Token>();\n private outStack: Stack<TermNode> = new Stack<TermNode>();\n\n outOperator(operatorToken: Token) {\n const rightChildNode: TermNode | undefined = this.outStack.pop();\n const leftChildNode: TermNode | undefined = this.outStack.pop();\n this.outStack.push(new TermNode(operatorToken, leftChildNode, rightChildNode));\n }\n outFunction(operatorToken: Token) {\n const leftChildNode: TermNode | undefined = this.outStack.pop();\n this.outStack.push(new TermNode(operatorToken, leftChildNode));\n }\n // https://de.wikipedia.org/wiki/Shunting-yard-Algorithmus\n public parse(tokens: Token[]): TermNode {\n this.opStack.clear();\n this.outStack.clear();\n\n tokens.forEach((t) => {\n if (t.type === \"Literal\" || t.type === \"Variable\") {\n this.outStack.push(new TermNode(t));\n }\n else if (t.type === \"Function\") {\n this.opStack.push(t);\n }\n else if (t.type === \"Comma\") {\n }\n else if (t.type === \"Operator\") {\n while (!this.opStack.isEmpty()\n && this.opStack.peek().type === \"Operator\"\n && t.associativity() === \"left\"\n && t.precedence() <= this.opStack.peek().precedence()) {\n this.outOperator(this.opStack.pop());\n }\n this.opStack.push(t);\n }\n else if (t.type === \"Left Parenthesis\") {\n this.opStack.push(t);\n }\n else if (t.type === \"Right Parenthesis\") {\n while (!this.opStack.isEmpty() && this.opStack.peek().type !== \"Left Parenthesis\")\n this.outOperator(this.opStack.pop());\n this.opStack.pop();\n if (!this.opStack.isEmpty() && this.opStack.peek().type === \"Function\")\n this.outFunction(this.opStack.pop());\n }\n });\n while (!this.opStack.isEmpty())\n this.outOperator(this.opStack.pop());\n\n return this.outStack.pop();\n }\n}\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { Token } from \"./tokenizer.js\";\n\nexport class TermNode {\n readonly token: Token;\n readonly leftChildNode?: TermNode;\n readonly rightChildNode?: TermNode;\n\n constructor(token: Token, leftChildNode?: TermNode, rightChildNode?: TermNode) {\n this.token = token;\n this.leftChildNode = leftChildNode;\n this.rightChildNode = rightChildNode;\n }\n\n public breadthFirst(callback: (n: TermNode, d: number) => void): void {\n var queue: TermNode[] = [this];\n var depth = [0];\n var n: TermNode | undefined;\n var d: number | undefined;\n\n while(queue.length > 0) {\n n = queue.shift();\n d = depth.shift();\n if (n === undefined || d === undefined)\n throw new Error(\"nonsense\");\n\n callback(n, d);\n\n if (n.rightChildNode) {\n queue.push(n.rightChildNode);\n depth.push(d + 1);\n }\n if (n.leftChildNode) {\n queue.push(n.leftChildNode);\n depth.push(d + 1);\n }\n }\n }\n\n public toString = () : string => { return this.token.value; }\n}\n\nclass Stack<T> {\n private array: T[] = [];\n\n push(o: T) { this.array.push(o) };\n pop(): T { return this.array.pop() as T; };\n peek(): T { return this.array.slice(-1)[0]; };\n isEmpty(): boolean { return this.array.length === 0 };\n clear(): void { this.array = [] }\n}\nexport class Parser {\n private opStack: Stack<Token> = new Stack<Token>();\n private outStack: Stack<TermNode> = new Stack<TermNode>();\n\n outOperator(operatorToken: Token) {\n const rightChildNode: TermNode | undefined = this.outStack.pop();\n const leftChildNode: TermNode | undefined = this.outStack.pop();\n this.outStack.push(new TermNode(operatorToken, leftChildNode, rightChildNode));\n }\n outFunction(operatorToken: Token) {\n const leftChildNode: TermNode | undefined = this.outStack.pop();\n this.outStack.push(new TermNode(operatorToken, leftChildNode));\n }\n // https://de.wikipedia.org/wiki/Shunting-yard-Algorithmus\n public parse(tokens: Token[]): TermNode {\n this.opStack.clear();\n this.outStack.clear();\n\n tokens.forEach((t) => {\n if (t.type === \"Literal\" || t.type === \"Variable\") {\n this.outStack.push(new TermNode(t));\n }\n else if (t.type === \"Function\") {\n this.opStack.push(t);\n }\n else if (t.type === \"Comma\") {\n }\n else if (t.type === \"Operator\") {\n while (!this.opStack.isEmpty()\n && this.opStack.peek().type === \"Operator\"\n && t.associativity() === \"left\"\n && t.precedence() <= this.opStack.peek().precedence()) {\n this.outOperator(this.opStack.pop());\n }\n this.opStack.push(t);\n }\n else if (t.type === \"Left Parenthesis\") {\n this.opStack.push(t);\n }\n else if (t.type === \"Right Parenthesis\") {\n while (!this.opStack.isEmpty() && this.opStack.peek().type !== \"Left Parenthesis\")\n this.outOperator(this.opStack.pop());\n this.opStack.pop();\n if (!this.opStack.isEmpty() && this.opStack.peek().type === \"Function\")\n this.outFunction(this.opStack.pop());\n }\n });\n while (!this.opStack.isEmpty())\n this.outOperator(this.opStack.pop());\n\n return this.outStack.pop();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/tokenizer.ts"],"names":[],"mappings":"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","sourcesContent":["export type Type = \"Literal\" | \"Variable\" | \"Operator\" | \"Function\" | \"Left Parenthesis\" | \"Right Parenthesis\" | \"Comma\";\nexport type Associativity = \"left\" | \"right\";\n\nexport class Token {\n static __ID: number = 1;\n\n readonly id: number = Token.__ID++;\n\n readonly type: Type;\n readonly value: string;\n\n constructor(type: Type, value: string) {\n this.type = type;\n this.value = value;\n }\n\n // read 4 => numberBuffer read 5 => numberBuffer read 6 => numberBuffer read . => numberBuffer read 7 => numberBuffer\n // x is a letter, so put all the contents of numberbuffer together as a Literal 456.7 => result\n // read x => letterBuffer read y => letterBuffer\n // + is an Operator, so remove all the contents of letterbuffer separately as Variables x => result, y => result + => result\n // read 6 => numberBuffer\n // s is a letter, so put all the contents of numberbuffer together as a Literal 6 => result\n // read s => letterBuffer read i => letterBuffer read n => letterBuffer\n // ( is a Left Parenthesis, so put all the contents of letterbuffer together as a function sin => result\n // read 7 => numberBuffer read . => numberBuffer read 0 => numberBuffer read 4 => numberBuffer\n // x is a letter, so put all the contents of numberbuffer together as a Literal 7.04 => result\n // read x => letterBuffer\n // ) is a Right Parenthesis, so remove all the contents of letterbuffer separately as Variables x => result\n // - is an Operator, but both buffers are empty, so there's nothing to remove\n // read m => letterBuffer read i => letterBuffer read n => letterBuffer\n // ( is a Left Parenthesis, so put all the contents of letterbuffer together as a function min => result\n // read a => letterBuffer\n // , is a comma, so put all the contents of letterbuffer together as a Variable a => result\n // then push , as a Function Arg Separator => result\n // read 7=> numberBuffer\n // ) is a Right Parenthesis, so put all the contents of numberbuffer together as a Literal 7 => result\n\n // digit => push ch to NB\n // decimal point => push ch to NB\n // letter => join NB contents as one Literal and push to result, then push ch to LB\n // operator => join NB contents as one Literal and push to result OR push LB contents separately as Variables, then push ch to result\n // LP => join LB contents as one Function and push to result OR (join NB contents as one Literal and push to result, push Operator * to result), then push ch to result\n // RP => join NB contents as one Literal and push to result, push LB contents separately as Variables, then push ch to result\n // comma => join NB contents as one Literal and push to result, push LB contents separately as Variables, then push ch to result\n\n\n public static tokenize(string: string): Token[] {\n\n var result: Token[] = [];\n string = string.replace(/·/g, \"*\").replace(/:/g, \"/\");\n var array = string.replace(/\\s+/g, \"\").split(\"\");\n\n var lbuf = \"\";\n var nbuf = \"\";\n\n function flush(result: Token[]) {\n if (lbuf.length !== 0) {\n [...lbuf].forEach((l, i) => {\n result.push(new Token(\"Variable\", l));\n if (i !== lbuf.length - 1)\n result.push(new Token(\"Operator\", \"*\"));\n });\n lbuf = \"\";\n }\n else if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n nbuf = \"\";\n }\n }\n\n let lchar: string | undefined;\n array.forEach((char) => {\n if (Token.isDigit(char)) {\n nbuf += char;\n if (lbuf.length !== 0) {\n [...lbuf].forEach(l => {\n result.push(new Token(\"Variable\", l));\n result.push(new Token(\"Operator\", \"*\"));\n });\n lbuf = \"\";\n }\n }\n else if (Token.isLetter(char)) {\n lbuf += char;\n if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n result.push(new Token(\"Operator\", \"*\"));\n nbuf = \"\";\n }\n }\n else if (Token.isOperator(char)) {\n flush(result);\n result.push(new Token(\"Operator\", char));\n }\n else if (Token.isLeftParenthesis(char)) {\n if (lbuf.length !== 0) {\n result.push(new Token(\"Function\", lbuf));\n lbuf = \"\";\n }\n else if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n result.push(new Token(\"Operator\", \"*\"));\n nbuf = \"\";\n }\n else if (lchar === \")\") {\n result.push(new Token(\"Operator\", \"*\"));\n }\n result.push(new Token(\"Left Parenthesis\", char));\n }\n else if (Token.isRightParenthesis(char)) {\n flush(result);\n result.push(new Token(\"Right Parenthesis\", char));\n }\n else if (Token.isComma(char)) {\n flush(result);\n result.push(new Token(\"Comma\", char));\n }\n lchar = char;\n });\n flush(result);\n\n return result;\n }\n\n\n static isComma(ch: string): boolean {\n return (ch === \",\");\n }\n\n static isDigit(ch: string): boolean {\n return /\\d|\\./.test(ch);\n }\n\n static isLetter(ch: string): boolean {\n return /[a-z]/i.test(ch);\n }\n\n static isOperator(ch: string): boolean {\n return /\\+|-|\\*|\\/|\\^/.test(ch);\n }\n\n static isLeftParenthesis(ch: string): boolean {\n return (ch === \"(\");\n }\n\n static isRightParenthesis(ch: string): boolean {\n return (ch == \")\");\n }\n\n public precedence(): number {\n return Token.prec[this.value];\n }\n\n public associativity(): Associativity {\n return Token.assoc[this.value];\n }\n\n static assoc: { [key: string]: Associativity } = { \"^\" : \"right\", \"*\" : \"left\", \"/\" : \"left\", \"+\" : \"left\", \"-\" : \"left\" };\n static prec: { [key: string]: number } = { \"^\" : 4, \"*\" : 3, \"/\" : 3, \"+\" : 2, \"-\" : 2 };\n}\n"]}
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/tokenizer.ts"],"names":[],"mappings":"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","sourcesContent":["export type Type = \"Literal\" | \"Variable\" | \"Operator\" | \"Function\" | \"Left Parenthesis\" | \"Right Parenthesis\" | \"Comma\";\nexport type Associativity = \"left\" | \"right\";\n\nexport class Token {\n static __ID: number = 1;\n\n readonly id: number = Token.__ID++;\n\n readonly type: Type;\n readonly value: string;\n\n constructor(type: Type, value: string) {\n this.type = type;\n this.value = value;\n }\n\n // read 4 => numberBuffer read 5 => numberBuffer read 6 => numberBuffer read . => numberBuffer read 7 => numberBuffer\n // x is a letter, so put all the contents of numberbuffer together as a Literal 456.7 => result\n // read x => letterBuffer read y => letterBuffer\n // + is an Operator, so remove all the contents of letterbuffer separately as Variables x => result, y => result + => result\n // read 6 => numberBuffer\n // s is a letter, so put all the contents of numberbuffer together as a Literal 6 => result\n // read s => letterBuffer read i => letterBuffer read n => letterBuffer\n // ( is a Left Parenthesis, so put all the contents of letterbuffer together as a function sin => result\n // read 7 => numberBuffer read . => numberBuffer read 0 => numberBuffer read 4 => numberBuffer\n // x is a letter, so put all the contents of numberbuffer together as a Literal 7.04 => result\n // read x => letterBuffer\n // ) is a Right Parenthesis, so remove all the contents of letterbuffer separately as Variables x => result\n // - is an Operator, but both buffers are empty, so there's nothing to remove\n // read m => letterBuffer read i => letterBuffer read n => letterBuffer\n // ( is a Left Parenthesis, so put all the contents of letterbuffer together as a function min => result\n // read a => letterBuffer\n // , is a comma, so put all the contents of letterbuffer together as a Variable a => result\n // then push , as a Function Arg Separator => result\n // read 7=> numberBuffer\n // ) is a Right Parenthesis, so put all the contents of numberbuffer together as a Literal 7 => result\n\n // digit => push ch to NB\n // decimal point => push ch to NB\n // letter => join NB contents as one Literal and push to result, then push ch to LB\n // operator => join NB contents as one Literal and push to result OR push LB contents separately as Variables, then push ch to result\n // LP => join LB contents as one Function and push to result OR (join NB contents as one Literal and push to result, push Operator * to result), then push ch to result\n // RP => join NB contents as one Literal and push to result, push LB contents separately as Variables, then push ch to result\n // comma => join NB contents as one Literal and push to result, push LB contents separately as Variables, then push ch to result\n\n\n public static tokenize(string: string): Token[] {\n\n var result: Token[] = [];\n string = string.replace(/·/g, \"*\").replace(/:/g, \"/\");\n var array = string.replace(/\\s+/g, \"\").split(\"\");\n\n var lbuf = \"\";\n var nbuf = \"\";\n\n function flush(result: Token[]) {\n if (lbuf.length !== 0) {\n [...lbuf].forEach((l, i) => {\n result.push(new Token(\"Variable\", l));\n if (i !== lbuf.length - 1)\n result.push(new Token(\"Operator\", \"*\"));\n });\n lbuf = \"\";\n }\n else if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n nbuf = \"\";\n }\n }\n\n let lchar: string | undefined;\n array.forEach((char) => {\n if (Token.isDigit(char)) {\n nbuf += char;\n if (lbuf.length !== 0) {\n [...lbuf].forEach(l => {\n result.push(new Token(\"Variable\", l));\n result.push(new Token(\"Operator\", \"*\"));\n });\n lbuf = \"\";\n }\n }\n else if (Token.isLetter(char)) {\n lbuf += char;\n if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n result.push(new Token(\"Operator\", \"*\"));\n nbuf = \"\";\n }\n }\n else if (Token.isOperator(char)) {\n flush(result);\n result.push(new Token(\"Operator\", char));\n }\n else if (Token.isLeftParenthesis(char)) {\n if (lbuf.length !== 0) {\n result.push(new Token(\"Function\", lbuf));\n lbuf = \"\";\n }\n else if (nbuf.length !== 0) {\n result.push(new Token(\"Literal\", nbuf));\n result.push(new Token(\"Operator\", \"*\"));\n nbuf = \"\";\n }\n else if (lchar === \")\") {\n result.push(new Token(\"Operator\", \"*\"));\n }\n result.push(new Token(\"Left Parenthesis\", char));\n }\n else if (Token.isRightParenthesis(char)) {\n flush(result);\n result.push(new Token(\"Right Parenthesis\", char));\n }\n else if (Token.isComma(char)) {\n flush(result);\n result.push(new Token(\"Comma\", char));\n }\n lchar = char;\n });\n flush(result);\n\n return result;\n }\n\n\n static isComma(ch: string): boolean {\n return (ch === \",\");\n }\n\n static isDigit(ch: string): boolean {\n return /\\d|\\./.test(ch);\n }\n\n static isLetter(ch: string): boolean {\n return /[a-z]/i.test(ch);\n }\n\n static isOperator(ch: string): boolean {\n return /\\+|-|\\*|\\/|\\^/.test(ch);\n }\n\n static isLeftParenthesis(ch: string): boolean {\n return (ch === \"(\");\n }\n\n static isRightParenthesis(ch: string): boolean {\n return (ch == \")\");\n }\n\n public precedence(): number {\n return Token.prec[this.value];\n }\n\n public associativity(): Associativity {\n return Token.assoc[this.value];\n }\n\n static assoc: { [key: string]: Associativity } = { \"^\" : \"right\", \"*\" : \"left\", \"/\" : \"left\", \"+\" : \"left\", \"-\" : \"left\" };\n static prec: { [key: string]: number } = { \"^\" : 4, \"*\" : 3, \"/\" : 3, \"+\" : 2, \"-\" : 2 };\n}\n"]}
@@ -7,6 +7,20 @@ declare const _default: {
7
7
  term: {
8
8
  control: string;
9
9
  };
10
+ showLabels: {
11
+ control: string;
12
+ };
13
+ showDetails: {
14
+ control: string;
15
+ };
16
+ tension: {
17
+ control: {
18
+ type: string;
19
+ min: number;
20
+ max: number;
21
+ step: number;
22
+ };
23
+ };
10
24
  textColor: {
11
25
  control: string;
12
26
  };
@@ -29,9 +43,15 @@ interface Story<T> {
29
43
  }
30
44
  interface ArgTypes {
31
45
  term?: string;
46
+ showLabels?: boolean;
47
+ showDetails?: boolean;
48
+ tension?: number;
32
49
  textColor?: string;
33
50
  backgroundColor?: string;
34
51
  borderColor?: string;
35
52
  edgeColor?: string;
36
53
  }
37
54
  export declare const Regular: Story<ArgTypes>;
55
+ export declare const Fraction: Story<ArgTypes>;
56
+ export declare const Trigonometry: Story<ArgTypes>;
57
+ export declare const Mitternachtsformel: Story<ArgTypes>;
@@ -5,18 +5,42 @@ export default {
5
5
  component: 'kmap-term-tree',
6
6
  argTypes: {
7
7
  term: { control: 'text' },
8
+ showLabels: { control: 'boolean' },
9
+ showDetails: { control: 'boolean' },
10
+ tension: { control: { type: 'range', min: 0, max: 1, step: 0.05 } },
8
11
  textColor: { control: 'color' },
9
12
  backgroundColor: { control: 'color' },
10
13
  borderColor: { control: 'color' },
11
14
  edgeColor: { control: 'color' },
12
15
  },
13
16
  };
14
- const Template = ({ term = '2a+sin(3b)', textColor, backgroundColor, borderColor, edgeColor, }) => html `
17
+ const Template = ({ term = '(2+a)(3-b)', showLabels = false, showDetails = true, tension = 0.5, textColor, backgroundColor, borderColor, edgeColor, }) => html `
15
18
  <kmap-term-tree
16
- style="--kmap-term-tree-text-color: ${textColor || 'black'}; --kmap-term-tree-background-color: ${backgroundColor || 'white'}; --kmap-term-tree-border-color: ${borderColor || '#005b9f'}; --kmap-term-tree-edge-color: ${edgeColor || '#fbc02d'};"
19
+ style="--kmap-term-tree-text-color: ${textColor ||
20
+ '#1f2937'}; --kmap-term-tree-background-color: ${backgroundColor ||
21
+ '#ffffff'}; --kmap-term-tree-border-color: ${borderColor ||
22
+ '#005b9f'}; --kmap-term-tree-edge-color: ${edgeColor || '#cbd5e1'};"
17
23
  .term=${term}
24
+ .showLabels=${showLabels}
25
+ .showDetails=${showDetails}
26
+ .tension=${tension}
18
27
  >
19
28
  </kmap-term-tree>
20
29
  `;
21
30
  export const Regular = Template.bind({});
31
+ Regular.args = {
32
+ term: '(2+a)(3-b)',
33
+ };
34
+ export const Fraction = Template.bind({});
35
+ Fraction.args = {
36
+ term: '(a+b)/(c+d)',
37
+ };
38
+ export const Trigonometry = Template.bind({});
39
+ Trigonometry.args = {
40
+ term: '2a + sin(3b)',
41
+ };
42
+ export const Mitternachtsformel = Template.bind({});
43
+ Mitternachtsformel.args = {
44
+ term: 'sqrt(b^2 - 4ac)',
45
+ };
22
46
  //# sourceMappingURL=index.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.stories.js","sourceRoot":"","sources":["../../stories/index.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAChD,OAAO,0BAA0B,CAAC;AAElC,eAAe;IACb,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACzB,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/B,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QACrC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QACjC,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAChC;CACF,CAAC;AAgBF,MAAM,QAAQ,GAAoB,CAAC,EACjC,IAAI,GAAG,YAAY,EACnB,SAAS,EACT,eAAe,EACf,WAAW,EACX,SAAS,GACA,EAAE,EAAE,CAAC,IAAI,CAAA;;0CAEsB,SAAS,IAAI,OAAO,wCAAwC,eAAe,IAAI,OAAO,oCAAoC,WAAW,IAAI,SAAS,kCAAkC,SAAS,IAAI,SAAS;YACxO,IAAI;;;CAGf,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { html, TemplateResult } from 'lit-html';\nimport '../src/kmap-term-tree.js';\n\nexport default {\n title: 'KmapTermTree',\n component: 'kmap-term-tree',\n argTypes: {\n term: { control: 'text' },\n textColor: { control: 'color' },\n backgroundColor: { control: 'color' },\n borderColor: { control: 'color' },\n edgeColor: { control: 'color' },\n },\n};\n\ninterface Story<T> {\n (args: T): TemplateResult;\n args?: Partial<T>;\n argTypes?: Record<string, unknown>;\n}\n\ninterface ArgTypes {\n term?: string;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n edgeColor?: string;\n}\n\nconst Template: Story<ArgTypes> = ({\n term = '2a+sin(3b)',\n textColor,\n backgroundColor,\n borderColor,\n edgeColor,\n}: ArgTypes) => html`\n <kmap-term-tree\n style=\"--kmap-term-tree-text-color: ${textColor || 'black'}; --kmap-term-tree-background-color: ${backgroundColor || 'white'}; --kmap-term-tree-border-color: ${borderColor || '#005b9f'}; --kmap-term-tree-edge-color: ${edgeColor || '#fbc02d'};\"\n .term=${term}\n >\n </kmap-term-tree>\n`;\n\nexport const Regular = Template.bind({});\n"]}
1
+ {"version":3,"file":"index.stories.js","sourceRoot":"","sources":["../../stories/index.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAChD,OAAO,0BAA0B,CAAC;AAElC,eAAe;IACb,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACzB,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QAClC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QACnC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QAC/B,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QACrC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QACjC,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAChC;CACF,CAAC;AAmBF,MAAM,QAAQ,GAAoB,CAAC,EACjC,IAAI,GAAG,YAAY,EACnB,UAAU,GAAG,KAAK,EAClB,WAAW,GAAG,IAAI,EAClB,OAAO,GAAG,GAAG,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACX,SAAS,GACA,EAAE,EAAE,CAAC,IAAI,CAAA;;0CAEsB,SAAS;IAC/C,SAAS,wCAAwC,eAAe;IAChE,SAAS,oCAAoC,WAAW;IACxD,SAAS,kCAAkC,SAAS,IAAI,SAAS;YACzD,IAAI;kBACE,UAAU;mBACT,WAAW;eACf,OAAO;;;CAGrB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,OAAO,CAAC,IAAI,GAAG;IACb,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAQ,CAAC,IAAI,GAAG;IACd,IAAI,EAAE,aAAa;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,GAAG;IAClB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpD,kBAAkB,CAAC,IAAI,GAAG;IACxB,IAAI,EAAE,iBAAiB;CACxB,CAAC","sourcesContent":["import { html, TemplateResult } from 'lit-html';\nimport '../src/kmap-term-tree.js';\n\nexport default {\n title: 'KmapTermTree',\n component: 'kmap-term-tree',\n argTypes: {\n term: { control: 'text' },\n showLabels: { control: 'boolean' },\n showDetails: { control: 'boolean' },\n tension: { control: { type: 'range', min: 0, max: 1, step: 0.05 } },\n textColor: { control: 'color' },\n backgroundColor: { control: 'color' },\n borderColor: { control: 'color' },\n edgeColor: { control: 'color' },\n },\n};\n\ninterface Story<T> {\n (args: T): TemplateResult;\n args?: Partial<T>;\n argTypes?: Record<string, unknown>;\n}\n\ninterface ArgTypes {\n term?: string;\n showLabels?: boolean;\n showDetails?: boolean;\n tension?: number;\n textColor?: string;\n backgroundColor?: string;\n borderColor?: string;\n edgeColor?: string;\n}\n\nconst Template: Story<ArgTypes> = ({\n term = '(2+a)(3-b)',\n showLabels = false,\n showDetails = true,\n tension = 0.5,\n textColor,\n backgroundColor,\n borderColor,\n edgeColor,\n}: ArgTypes) => html`\n <kmap-term-tree\n style=\"--kmap-term-tree-text-color: ${textColor ||\n '#1f2937'}; --kmap-term-tree-background-color: ${backgroundColor ||\n '#ffffff'}; --kmap-term-tree-border-color: ${borderColor ||\n '#005b9f'}; --kmap-term-tree-edge-color: ${edgeColor || '#cbd5e1'};\"\n .term=${term}\n .showLabels=${showLabels}\n .showDetails=${showDetails}\n .tension=${tension}\n >\n </kmap-term-tree>\n`;\n\nexport const Regular = Template.bind({});\nRegular.args = {\n term: '(2+a)(3-b)',\n};\n\nexport const Fraction = Template.bind({});\nFraction.args = {\n term: '(a+b)/(c+d)',\n};\n\nexport const Trigonometry = Template.bind({});\nTrigonometry.args = {\n term: '2a + sin(3b)',\n};\n\nexport const Mitternachtsformel = Template.bind({});\nMitternachtsformel.args = {\n term: 'sqrt(b^2 - 4ac)',\n};\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ import { expect } from '@open-wc/testing';
2
+ import { parseAsciiMath } from '../src/asciimath-parser.js';
3
+ describe('asciimath-parser', () => {
4
+ it('parses addition and variables', () => {
5
+ const ast = parseAsciiMath('2a + 3b');
6
+ expect(ast.op).to.equal('Add');
7
+ expect(ast.mathJson).to.deep.equal([
8
+ 'Add',
9
+ ['Multiply', 2, 'a'],
10
+ ['Multiply', 3, 'b'],
11
+ ]);
12
+ expect(ast.depth).to.equal(2);
13
+ });
14
+ it('handles implicit multiplication with parentheses', () => {
15
+ const ast = parseAsciiMath('(2+a)(3-b)');
16
+ expect(ast.op).to.equal('Multiply');
17
+ expect(ast.mathJson).to.deep.equal([
18
+ 'Multiply',
19
+ ['Add', 2, 'a'],
20
+ ['Subtract', 3, 'b'],
21
+ ]);
22
+ expect(ast.depth).to.equal(2);
23
+ });
24
+ it('handles unary minus and double minus', () => {
25
+ const ast1 = parseAsciiMath('-3 * x');
26
+ expect(ast1.op).to.equal('Multiply');
27
+ expect(ast1.mathJson).to.deep.equal(['Multiply', ['Negate', 3], 'x']);
28
+ const ast2 = parseAsciiMath('5 - -2');
29
+ expect(ast2.op).to.equal('Subtract');
30
+ expect(ast2.mathJson).to.deep.equal(['Subtract', 5, ['Negate', 2]]);
31
+ });
32
+ it('handles powers and functions', () => {
33
+ const ast = parseAsciiMath('x^2 + sin(3x)');
34
+ expect(ast.op).to.equal('Add');
35
+ expect(ast.children[0].op).to.equal('Power');
36
+ expect(ast.children[1].op).to.equal('Sin');
37
+ });
38
+ it('handles division / fraction', () => {
39
+ const ast = parseAsciiMath('(a + b) / (c + d)');
40
+ expect(ast.op).to.equal('Divide');
41
+ expect(ast.children[0].op).to.equal('Add');
42
+ expect(ast.children[1].op).to.equal('Add');
43
+ });
44
+ });
45
+ //# sourceMappingURL=asciimath-parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asciimath-parser.test.js","sourceRoot":"","sources":["../../test/asciimath-parser.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { parseAsciiMath } from '../src/asciimath-parser.js';\n\ndescribe('asciimath-parser', () => {\n it('parses addition and variables', () => {\n const ast = parseAsciiMath('2a + 3b');\n expect(ast.op).to.equal('Add');\n expect(ast.mathJson).to.deep.equal([\n 'Add',\n ['Multiply', 2, 'a'],\n ['Multiply', 3, 'b'],\n ]);\n expect(ast.depth).to.equal(2);\n });\n\n it('handles implicit multiplication with parentheses', () => {\n const ast = parseAsciiMath('(2+a)(3-b)');\n expect(ast.op).to.equal('Multiply');\n expect(ast.mathJson).to.deep.equal([\n 'Multiply',\n ['Add', 2, 'a'],\n ['Subtract', 3, 'b'],\n ]);\n expect(ast.depth).to.equal(2);\n });\n\n it('handles unary minus and double minus', () => {\n const ast1 = parseAsciiMath('-3 * x');\n expect(ast1.op).to.equal('Multiply');\n expect(ast1.mathJson).to.deep.equal(['Multiply', ['Negate', 3], 'x']);\n\n const ast2 = parseAsciiMath('5 - -2');\n expect(ast2.op).to.equal('Subtract');\n expect(ast2.mathJson).to.deep.equal(['Subtract', 5, ['Negate', 2]]);\n });\n\n it('handles powers and functions', () => {\n const ast = parseAsciiMath('x^2 + sin(3x)');\n expect(ast.op).to.equal('Add');\n expect(ast.children[0].op).to.equal('Power');\n expect(ast.children[1].op).to.equal('Sin');\n });\n\n it('handles division / fraction', () => {\n const ast = parseAsciiMath('(a + b) / (c + d)');\n expect(ast.op).to.equal('Divide');\n expect(ast.children[0].op).to.equal('Add');\n expect(ast.children[1].op).to.equal('Add');\n });\n});\n"]}
@@ -1,14 +1,37 @@
1
1
  import { html, fixture, expect } from '@open-wc/testing';
2
2
  import '../src/kmap-term-tree.js';
3
3
  describe('KmapTermTree', () => {
4
- it('has a default title "Hey there" and counter 5', async () => {
5
- const el = await fixture(html `<kmap-term-tree></kmap-term-tree>`);
6
- expect(el.title).to.equal('Hey there');
7
- //expect(el.counter).to.equal(5);
4
+ it('renders a term with KaTeX and tree nodes', async () => {
5
+ const el = await fixture(html `<kmap-term-tree term="2a+3b"></kmap-term-tree>`);
6
+ await el.updateComplete;
7
+ const formula = el.shadowRoot.querySelector('#formula');
8
+ expect(formula).to.exist;
9
+ expect(formula.innerHTML).to.contain('katex');
10
+ const nodes = el.shadowRoot.querySelectorAll('.tree-node');
11
+ // For 2a + 3b: nodes are +, and two implicit multiplications (3 operations)
12
+ expect(nodes.length).to.be.greaterThan(0);
8
13
  });
9
- it('passes the a11y audit', async () => {
10
- const el = await fixture(html `<kmap-term-tree></kmap-term-tree>`);
11
- await expect(el).shadowDom.to.be.accessible();
14
+ it('supports slot content', async () => {
15
+ const el = await fixture(html `<kmap-term-tree>(2+a)(3-b)</kmap-term-tree>`);
16
+ await el.updateComplete;
17
+ expect(el.term).to.equal('(2+a)(3-b)');
18
+ const formula = el.shadowRoot.querySelector('#formula');
19
+ expect(formula.innerHTML).to.contain('katex');
20
+ });
21
+ it('highlights full height for fractions and roots', async () => {
22
+ const el = await fixture(html `<kmap-term-tree term="sqrt(2/3)"></kmap-term-tree>`);
23
+ await el.updateComplete;
24
+ const overlay = el.shadowRoot.querySelector('.highlight-overlay');
25
+ expect(overlay).to.exist;
26
+ const overlayRect = overlay.getBoundingClientRect();
27
+ const n1 = el.shadowRoot.getElementById('n1'); // numerator 2
28
+ const n2 = el.shadowRoot.getElementById('n2'); // denominator 3
29
+ const r1 = n1.getBoundingClientRect();
30
+ const r2 = n2.getBoundingClientRect();
31
+ // The overlay top must be at or above the numerator top
32
+ expect(overlayRect.top).to.be.at.most(r1.top);
33
+ // The overlay bottom must be at or below the denominator bottom
34
+ expect(overlayRect.bottom).to.be.at.least(r2.bottom);
12
35
  });
13
36
  });
14
37
  //# sourceMappingURL=kmap-term-tree.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kmap-term-tree.test.js","sourceRoot":"","sources":["../../test/kmap-term-tree.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAElC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,IAAI,CAAA,mCAAmC,CAAC,CAAC;QAEhF,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,iCAAiC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,IAAI,CAAA,mCAAmC,CAAC,CAAC;QAEhF,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport { KmapTermTree } from '../src/KmapTermTree.js';\nimport '../src/kmap-term-tree.js';\n\ndescribe('KmapTermTree', () => {\n it('has a default title \"Hey there\" and counter 5', async () => {\n const el = await fixture<KmapTermTree>(html`<kmap-term-tree></kmap-term-tree>`);\n\n expect(el.title).to.equal('Hey there');\n //expect(el.counter).to.equal(5);\n });\n\n it('passes the a11y audit', async () => {\n const el = await fixture<KmapTermTree>(html`<kmap-term-tree></kmap-term-tree>`);\n\n await expect(el).shadowDom.to.be.accessible();\n });\n});\n"]}
1
+ {"version":3,"file":"kmap-term-tree.test.js","sourceRoot":"","sources":["../../test/kmap-term-tree.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,0BAA0B,CAAC;AAElC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,gDAAgD,CACrD,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,OAAO,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACzB,MAAM,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,EAAE,CAAC,UAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC5D,4EAA4E;QAC5E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,6CAA6C,CAClD,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,oDAAoD,CACzD,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,OAAO,GAAG,EAAE,CAAC,UAAW,CAAC,aAAa,CAC1C,oBAAoB,CACN,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAEzB,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAW,CAAC,cAAc,CAAC,IAAI,CAAE,CAAC,CAAC,cAAc;QAC/D,MAAM,EAAE,GAAG,EAAE,CAAC,UAAW,CAAC,cAAc,CAAC,IAAI,CAAE,CAAC,CAAC,gBAAgB;QAEjE,MAAM,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAEtC,wDAAwD;QACxD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,gEAAgE;QAChE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport { KmapTermTree } from '../src/KmapTermTree.js';\nimport '../src/kmap-term-tree.js';\n\ndescribe('KmapTermTree', () => {\n it('renders a term with KaTeX and tree nodes', async () => {\n const el = await fixture<KmapTermTree>(\n html`<kmap-term-tree term=\"2a+3b\"></kmap-term-tree>`\n );\n await el.updateComplete;\n\n const formula = el.shadowRoot!.querySelector('#formula');\n expect(formula).to.exist;\n expect(formula!.innerHTML).to.contain('katex');\n\n const nodes = el.shadowRoot!.querySelectorAll('.tree-node');\n // For 2a + 3b: nodes are +, and two implicit multiplications (3 operations)\n expect(nodes.length).to.be.greaterThan(0);\n });\n\n it('supports slot content', async () => {\n const el = await fixture<KmapTermTree>(\n html`<kmap-term-tree>(2+a)(3-b)</kmap-term-tree>`\n );\n await el.updateComplete;\n\n expect(el.term).to.equal('(2+a)(3-b)');\n const formula = el.shadowRoot!.querySelector('#formula');\n expect(formula!.innerHTML).to.contain('katex');\n });\n\n it('highlights full height for fractions and roots', async () => {\n const el = await fixture<KmapTermTree>(\n html`<kmap-term-tree term=\"sqrt(2/3)\"></kmap-term-tree>`\n );\n await el.updateComplete;\n\n const overlay = el.shadowRoot!.querySelector(\n '.highlight-overlay'\n ) as HTMLElement;\n expect(overlay).to.exist;\n\n const overlayRect = overlay.getBoundingClientRect();\n const n1 = el.shadowRoot!.getElementById('n1')!; // numerator 2\n const n2 = el.shadowRoot!.getElementById('n2')!; // denominator 3\n\n const r1 = n1.getBoundingClientRect();\n const r2 = n2.getBoundingClientRect();\n\n // The overlay top must be at or above the numerator top\n expect(overlayRect.top).to.be.at.most(r1.top);\n // The overlay bottom must be at or below the denominator bottom\n expect(overlayRect.bottom).to.be.at.least(r2.bottom);\n });\n});\n"]}