UNPKG

pptx-automizer

Version:

A template based pptx generator

160 lines 5.47 kB
"use strict"; 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