A world-class math input for the web
1import { CaretNode, h, t, VNode } from "@caret-js/core";
2
3export class CommaListNode extends CaretNode {
4 constructor(public expressions: CaretNode[]) {
5 super();
6 }
7
8 static from(expressions: CaretNode[]): CommaListNode {
9 return new CommaListNode(
10 expressions.flatMap((node) =>
11 node instanceof CommaListNode ? node.expressions : [node]
12 )
13 ).mergeTagsFromNodes(
14 expressions.filter((node) => node instanceof CommaListNode)
15 );
16 }
17
18 toDebugMathML(): VNode {
19 return h(
20 "mrow",
21 {},
22 ...this.expressions.flatMap((expr, index) => [
23 expr.toDebugMathML(),
24 index < this.expressions.length - 1 ? h("mo", {}, t(",")) : null,
25 ])
26 );
27 }
28}