pptx-automizer
Version:
A template based pptx generator
160 lines • 5.47 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
const modify_color_helper_1 = __importDefault(require("./modify-color-helper"));
const modify_xml_helper_1 = __importDefault(require("./modify-xml-helper"));
const xml_elements_1 = __importDefault(require("./xml-elements"));
const multitext_helper_1 = require("./multitext-helper");
const html_to_multitext_helper_1 = require("./html-to-multitext-helper");
const xml_helper_1 = require("./xml-helper");
class ModifyTextHelper {
}
_a = ModifyTextHelper;
/**
* Set text content of first paragraph and remove remaining block/paragraph elements.
*/
ModifyTextHelper.setText = (text) => (element) => {
const paragraphs = element.getElementsByTagName('a:p');
const length = paragraphs.length;
for (let i = 0; i < length; i++) {
const paragraph = paragraphs[i];
if (i === 0) {
const blocks = element.getElementsByTagName('a:r');
const length = blocks.length;
for (let j = 0; j < length; j++) {
const block = blocks[j];
if (j === 0) {
const textNode = block.getElementsByTagName('a:t')[0];
_a.content(text)(textNode);
}
else {
block.parentNode.removeChild(block);
}
}
}
else {
paragraph.parentNode.removeChild(paragraph);
}
}
};
ModifyTextHelper.setMultiText = (paragraphs) => (element, relation) => {
new multitext_helper_1.MultiTextHelper(element, relation).run(paragraphs);
};
ModifyTextHelper.htmlToMultiText = (html) => {
const paragraphs = new html_to_multitext_helper_1.HtmlToMultiTextHelper().run(html);
return (element, relation) => {
_a.setMultiText(paragraphs)(element, relation);
};
};
ModifyTextHelper.setBulletList = (list) => (element) => {
const xmlElements = new xml_elements_1.default(element);
xmlElements.addBulletList(list);
};
ModifyTextHelper.content = (label) => (element) => {
if (label !== undefined && element.firstChild) {
element.firstChild.textContent = xml_helper_1.XmlHelper.sanitizeText(label);
}
};
/**
* Set text style inside an <a:rPr> element
*/
ModifyTextHelper.style = (style) => (element) => {
if (!style)
return;
if (style.color !== undefined) {
_a.setColor(style.color)(element);
}
if (style.size !== undefined) {
_a.setSize(style.size)(element);
}
if (style.isBold !== undefined) {
_a.setBold(style.isBold)(element);
}
if (style.isItalics !== undefined) {
_a.setItalics(style.isItalics)(element);
}
if (style.isUnderlined !== undefined) {
_a.setUnderlined(style.isUnderlined)(element);
}
if (style.isSuperscript !== undefined) {
_a.setSuperscript(style.isSuperscript)(element);
}
if (style.isSubscript !== undefined) {
_a.setSubscript(style.isSubscript)(element);
}
};
/**
* Set color of text insinde an <a:rPr> element
*/
ModifyTextHelper.setColor = (color) => (element) => {
modify_color_helper_1.default.solidFill(color)(element);
};
/**
* Set size of text inside an <a:rPr> element
*/
ModifyTextHelper.setSize = (size) => (element) => {
if (!size)
return;
element.setAttribute('sz', String(Math.round(size)));
};
/**
* Set bold attribute on text
*/
ModifyTextHelper.setBold = (isBold) => (element) => {
modify_xml_helper_1.default.booleanAttribute('b', isBold)(element);
};
/**
* Set italics attribute on text
*/
ModifyTextHelper.setItalics = (isItalics) => (element) => {
modify_xml_helper_1.default.booleanAttribute('i', isItalics)(element);
};
/**
* Set underlined attribute on text
*/
ModifyTextHelper.setUnderlined = (isUnderlined) => (element) => {
if (isUnderlined) {
element.setAttribute('u', 'sng');
}
};
/**
* Set superscript attribute on text
*/
ModifyTextHelper.setSuperscript = (isSuperscript) => (element) => {
modify_xml_helper_1.default.attribute('baseline', isSuperscript ? '30000' : '0')(element);
};
/**
* Set subscript attribute on text
*/
ModifyTextHelper.setSubscript = (isSubscript) => (element) => {
modify_xml_helper_1.default.attribute('baseline', isSubscript ? '-25000' : '0')(element);
};
/**
* Set bullet type (font and character) for bullet points
*/
ModifyTextHelper.setBulletType = (font, character) => (element) => {
const paragraphs = element.getElementsByTagName('a:p');
xml_helper_1.XmlHelper.modifyCollection(paragraphs, (paragraph) => {
const pPr = paragraph.getElementsByTagName('a:pPr')[0];
if (!pPr) {
return;
}
const existingBuFont = pPr.getElementsByTagName('a:buFont')[0];
if (existingBuFont) {
existingBuFont.setAttribute('typeface', font);
}
const existingBuChar = pPr.getElementsByTagName('a:buChar')[0];
if (existingBuChar) {
existingBuChar.setAttribute('char', character);
}
const existingBuBlip = pPr.getElementsByTagName('a:buBlip')[0];
if (existingBuBlip) {
xml_helper_1.XmlHelper.remove(existingBuBlip);
}
});
};
exports.default = ModifyTextHelper;
//# sourceMappingURL=modify-text-helper.js.map