Skip to content

Commit d3bc762

Browse files
committed
feature(master): add modifier for slide master background color #86
1 parent b4b7b21 commit d3bc762

File tree

4 files changed

+59
-5
lines changed

4 files changed

+59
-5
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import Automizer from '../src/automizer';
2+
import { ModifyTextHelper } from '../src';
3+
import ModifyBackgroundHelper from '../src/helper/modify-background-helper';
4+
5+
test('Auto-import source slideLayout and -master and modify background color', async () => {
6+
const automizer = new Automizer({
7+
templateDir: `${__dirname}/pptx-templates`,
8+
outputDir: `${__dirname}/pptx-output`,
9+
autoImportSlideMasters: true,
10+
});
11+
12+
const pres = await automizer
13+
.loadRoot(`EmptyTemplate.pptx`)
14+
.load('SlideMasterBackgrounds.pptx')
15+
.addMaster(`SlideMasterBackgrounds.pptx`, 1, async (master) => {
16+
master.modify(
17+
ModifyBackgroundHelper.setSolidFill({
18+
type: 'srgbClr',
19+
value: 'aaccbb',
20+
}),
21+
);
22+
})
23+
.addSlide(`SlideMasterBackgrounds.pptx`, 3)
24+
.write(`modify-master-background-color.test.pptx`);
25+
26+
expect(pres.masters).toBe(2);
27+
});

src/dev.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Automizer from './index';
2-
import { vd } from './helper/general-helper';
2+
import ModifyBackgroundHelper from './helper/modify-background-helper';
33

44
const run = async () => {
55
const automizer = new Automizer({
@@ -12,7 +12,16 @@ const run = async () => {
1212
.loadRoot(`RootTemplate.pptx`)
1313
.load(`SlideMasterBackgrounds.pptx`);
1414

15-
pres.addSlide(`SlideMasterBackgrounds.pptx`, 2, async (slide) => {
15+
pres.addMaster(`SlideMasterBackgrounds.pptx`, 1, async (master) => {
16+
master.modify(
17+
ModifyBackgroundHelper.setSolidFill({
18+
type: 'srgbClr',
19+
value: 'aaccbb',
20+
}),
21+
);
22+
});
23+
24+
pres.addSlide(`SlideMasterBackgrounds.pptx`, 3, async (slide) => {
1625
console.log('test');
1726
});
1827

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { XmlDocument } from '../types/xml-types';
2+
import ModifyColorHelper from './modify-color-helper';
3+
import { Color } from '../types/modify-types';
4+
5+
export default class ModifyBackgroundHelper {
6+
/**
7+
* Set solid fill of modified shape
8+
*/
9+
static setSolidFill =
10+
(color: Color) =>
11+
(slideMasterXml: XmlDocument): void => {
12+
const bgPr = slideMasterXml.getElementsByTagName('p:bgPr')?.item(0);
13+
if (bgPr) {
14+
ModifyColorHelper.solidFill(color)(bgPr);
15+
} else {
16+
throw 'No background properties for slideMaster';
17+
}
18+
};
19+
}

src/helper/modify-shape-helper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { ReplaceText, ReplaceTextOptions } from '../types/modify-types';
22
import { ShapeCoordinates } from '../types/shape-types';
3-
import { GeneralHelper, vd } from './general-helper';
3+
import { GeneralHelper } from './general-helper';
44
import TextReplaceHelper from './text-replace-helper';
55
import ModifyTextHelper from './modify-text-helper';
6-
import { HelperElement, XmlDocument, XmlElement } from '../types/xml-types';
7-
import { XmlHelper } from './xml-helper';
6+
import { XmlElement } from '../types/xml-types';
87

98
const map = {
109
x: { tag: 'a:off', attribute: 'x' },

0 commit comments

Comments
 (0)