From 9ab6df99b185680ef1a99ebb657a65a8313f8894 Mon Sep 17 00:00:00 2001 From: tvale1 Date: Sat, 8 Oct 2022 12:56:35 +1100 Subject: [PATCH] Add MathIntegral class --- demo/55-math.ts | 30 ++++++++++++++++++ src/file/paragraph/math/math-component.ts | 2 ++ src/file/paragraph/math/n-ary/index.ts | 1 + .../paragraph/math/n-ary/math-integral.ts | 31 +++++++++++++++++++ .../math/n-ary/math-n-ary-properties.ts | 4 ++- 5 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/file/paragraph/math/n-ary/math-integral.ts diff --git a/demo/55-math.ts b/demo/55-math.ts index e818d13e3b..887921900a 100644 --- a/demo/55-math.ts +++ b/demo/55-math.ts @@ -16,6 +16,7 @@ import { MathSubScript, MathSubSuperScript, MathSum, + MathIntegral, MathSuperScript, Packer, Paragraph, @@ -90,6 +91,35 @@ const doc = new Document({ }), ], }), + new Paragraph({ + children: [ + new Math({ + children: [ + new MathIntegral({ + children: [new MathRun("test")], + }), + new MathIntegral({ + children: [ + new MathSuperScript({ + children: [new MathRun("e")], + superScript: [new MathRun("2")], + }), + ], + subScript: [new MathRun("i")], + }), + new MathIntegral({ + children: [ + new MathRadical({ + children: [new MathRun("i")], + }), + ], + subScript: [new MathRun("i")], + superScript: [new MathRun("10")], + }), + ], + }), + ], + }), new Paragraph({ children: [ new Math({ diff --git a/src/file/paragraph/math/math-component.ts b/src/file/paragraph/math/math-component.ts index 8251235455..e38fdd36e3 100644 --- a/src/file/paragraph/math/math-component.ts +++ b/src/file/paragraph/math/math-component.ts @@ -3,6 +3,7 @@ import { MathFraction } from "./fraction"; import { MathFunction } from "./function"; import { MathRun } from "./math-run"; import { MathSum } from "./n-ary"; +import { MathIntegral } from "./n-ary"; import { MathRadical } from "./radical"; import { MathSubScript, MathSubSuperScript, MathSuperScript } from "./script"; @@ -10,6 +11,7 @@ export type MathComponent = | MathRun | MathFraction | MathSum + | MathIntegral | MathSuperScript | MathSubScript | MathSubSuperScript diff --git a/src/file/paragraph/math/n-ary/index.ts b/src/file/paragraph/math/n-ary/index.ts index 59df698e9c..920d08de74 100644 --- a/src/file/paragraph/math/n-ary/index.ts +++ b/src/file/paragraph/math/n-ary/index.ts @@ -4,4 +4,5 @@ export * from "./math-limit-location"; export * from "./math-n-ary-properties"; export * from "./math-sub-script"; export * from "./math-sum"; +export * from "./math-integral"; export * from "./math-super-script"; diff --git a/src/file/paragraph/math/n-ary/math-integral.ts b/src/file/paragraph/math/n-ary/math-integral.ts new file mode 100644 index 0000000000..3189d31c08 --- /dev/null +++ b/src/file/paragraph/math/n-ary/math-integral.ts @@ -0,0 +1,31 @@ +import { XmlComponent } from "@file/xml-components"; + +import { MathComponent } from "../math-component"; +import { MathBase } from "./math-base"; +import { MathNAryProperties } from "./math-n-ary-properties"; +import { MathSubScriptElement } from "./math-sub-script"; +import { MathSuperScriptElement } from "./math-super-script"; + +export interface IMathIntegralOptions { + readonly children: readonly MathComponent[]; + readonly subScript?: readonly MathComponent[]; + readonly superScript?: readonly MathComponent[]; +} + +export class MathIntegral extends XmlComponent { + public constructor(options: IMathIntegralOptions) { + super("m:nary"); + + this.root.push(new MathNAryProperties("", !!options.superScript, !!options.subScript)); + + if (!!options.subScript) { + this.root.push(new MathSubScriptElement(options.subScript)); + } + + if (!!options.superScript) { + this.root.push(new MathSuperScriptElement(options.superScript)); + } + + this.root.push(new MathBase(options.children)); + } +} diff --git a/src/file/paragraph/math/n-ary/math-n-ary-properties.ts b/src/file/paragraph/math/n-ary/math-n-ary-properties.ts index c3f9d42912..1163de7508 100644 --- a/src/file/paragraph/math/n-ary/math-n-ary-properties.ts +++ b/src/file/paragraph/math/n-ary/math-n-ary-properties.ts @@ -10,7 +10,9 @@ export class MathNAryProperties extends XmlComponent { public constructor(accent: string, hasSuperScript: boolean, hasSubScript: boolean) { super("m:naryPr"); - this.root.push(new MathAccentCharacter(accent)); + if (!!accent){ + this.root.push(new MathAccentCharacter(accent)); + } this.root.push(new MathLimitLocation()); if (!hasSuperScript) {