A world-class math input for the web
at main 28 lines 717 B view raw
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}