import { CaretNode, h, t, VNode } from "@caret-js/core"; import { MathExpressionTag } from "../tags/mathExpression"; export class AddNode extends CaretNode { constructor(public addends: CaretNode[]) { super(); this.addTag(new MathExpressionTag()); } static from(addends: CaretNode[]): AddNode { return new AddNode( addends.flatMap((node) => node instanceof AddNode ? node.addends : [node] ) ).mergeTagsFromNodes(addends.filter((node) => node instanceof AddNode)); } toDebugMathML(): VNode { return h( "mrow", {}, ...this.addends.flatMap((addend, index) => [ addend.toDebugMathML(), index < this.addends.length - 1 ? h("mo", {}, t("+")) : null, ]) ); } }