forked from VolodymyrBaydalka/docxjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocx-preview.js.map
1 lines (1 loc) · 260 KB
/
docx-preview.js.map
1
{"version":3,"file":"docx-preview.js","mappings":"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","sources":["webpack://docx/webpack/universalModuleDefinition","webpack://docx/./src/common/open-xml-package.ts","webpack://docx/./src/common/part.ts","webpack://docx/./src/common/relationship.ts","webpack://docx/./src/document-parser.ts","webpack://docx/./src/document-props/core-props-part.ts","webpack://docx/./src/document-props/core-props.ts","webpack://docx/./src/document-props/custom-props-part.ts","webpack://docx/./src/document-props/custom-props.ts","webpack://docx/./src/document-props/extended-props-part.ts","webpack://docx/./src/document-props/extended-props.ts","webpack://docx/./src/document/bookmarks.ts","webpack://docx/./src/document/border.ts","webpack://docx/./src/document/common.ts","webpack://docx/./src/document/document-part.ts","webpack://docx/./src/document/dom.ts","webpack://docx/./src/document/line-spacing.ts","webpack://docx/./src/document/paragraph.ts","webpack://docx/./src/document/run.ts","webpack://docx/./src/document/section.ts","webpack://docx/./src/docx-preview.ts","webpack://docx/./src/font-table/font-table.ts","webpack://docx/./src/font-table/fonts.ts","webpack://docx/./src/header-footer/elements.ts","webpack://docx/./src/header-footer/parts.ts","webpack://docx/./src/html-renderer.ts","webpack://docx/./src/javascript.ts","webpack://docx/./src/notes/elements.ts","webpack://docx/./src/notes/parts.ts","webpack://docx/./src/numbering/numbering-part.ts","webpack://docx/./src/numbering/numbering.ts","webpack://docx/./src/parser/xml-parser.ts","webpack://docx/./src/settings/settings-part.ts","webpack://docx/./src/settings/settings.ts","webpack://docx/./src/styles/styles-part.ts","webpack://docx/./src/theme/theme-part.ts","webpack://docx/./src/theme/theme.ts","webpack://docx/./src/utils.ts","webpack://docx/./src/word-document.ts","webpack://docx/external umd {\"root\":\"JSZip\",\"commonjs\":\"jszip\",\"commonjs2\":\"jszip\",\"amd\":\"jszip\"}","webpack://docx/webpack/bootstrap","webpack://docx/webpack/before-startup","webpack://docx/webpack/startup","webpack://docx/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jszip\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jszip\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"docx\"] = factory(require(\"jszip\"));\n\telse\n\t\troot[\"docx\"] = factory(root[\"JSZip\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE_jszip__) {\nreturn ","import * as JSZip from \"jszip\";\r\nimport { parseXmlString, XmlParser } from \"../parser/xml-parser\";\r\nimport { splitPath } from \"../utils\";\r\nimport { parseRelationships, Relationship } from \"./relationship\";\r\n\r\nexport interface OpenXmlPackageOptions {\r\n trimXmlDeclaration: boolean,\r\n keepOrigin: boolean,\r\n}\r\n\r\nexport class OpenXmlPackage {\r\n xmlParser: XmlParser = new XmlParser();\r\n\r\n constructor(private _zip: JSZip, public options: OpenXmlPackageOptions) {\r\n }\r\n\r\n get(path: string): any {\r\n return this._zip.files[normalizePath(path)];\r\n }\r\n\r\n update(path: string, content: any) {\r\n this._zip.file(path, content);\r\n }\r\n\r\n static load(input: Blob | any, options: OpenXmlPackageOptions): Promise<OpenXmlPackage> {\r\n return JSZip.loadAsync(input).then(zip => new OpenXmlPackage(zip, options));\r\n }\r\n\r\n save(type: any = \"blob\"): Promise<any> {\r\n return this._zip.generateAsync({ type });\r\n }\r\n\r\n load(path: string, type: JSZip.OutputType = \"string\"): Promise<any> {\r\n return this.get(path)?.async(type) ?? Promise.resolve(null);\r\n }\r\n\r\n loadRelationships(path: string = null): Promise<Relationship[]> {\r\n let relsPath = `_rels/.rels`;\r\n\r\n if (path != null) {\r\n const [f, fn] = splitPath(path);\r\n relsPath = `${f}_rels/${fn}.rels`;\r\n }\r\n\r\n return this.load(relsPath)\r\n .then(txt => txt ? parseRelationships(this.parseXmlDocument(txt).firstElementChild, this.xmlParser) : null);\r\n }\r\n\r\n /** @internal */\r\n parseXmlDocument(txt: string): Document {\r\n return parseXmlString(txt, this.options.trimXmlDeclaration);\r\n }\r\n}\r\n\r\nfunction normalizePath(path: string) {\r\n return path.startsWith('/') ? path.substr(1) : path;\r\n}","import { serializeXmlString } from \"../parser/xml-parser\";\r\nimport { OpenXmlPackage } from \"./open-xml-package\";\r\nimport { Relationship } from \"./relationship\";\r\n\r\nexport class Part {\r\n protected _xmlDocument: Document;\r\n\r\n rels: Relationship[];\r\n\r\n constructor(protected _package: OpenXmlPackage, public path: string) {\r\n }\r\n\r\n load(): Promise<any> {\r\n return Promise.all([\r\n this._package.loadRelationships(this.path).then(rels => {\r\n this.rels = rels;\r\n }),\r\n this._package.load(this.path).then(text => {\r\n const xmlDoc = this._package.parseXmlDocument(text);\r\n\r\n if (this._package.options.keepOrigin) {\r\n this._xmlDocument = xmlDoc;\r\n }\r\n\r\n this.parseXml(xmlDoc.firstElementChild);\r\n })\r\n ]);\r\n }\r\n\r\n save() {\r\n this._package.update(this.path, serializeXmlString(this._xmlDocument));\r\n }\r\n\r\n protected parseXml(root: Element) {\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface Relationship {\r\n id: string,\r\n type: RelationshipTypes | string,\r\n target: string\r\n targetMode: \"\" | string \r\n}\r\n\r\nexport enum RelationshipTypes {\r\n OfficeDocument = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\r\n FontTable = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable\",\r\n Image = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\r\n Numbering = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\",\r\n Styles = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\r\n StylesWithEffects = \"http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects\",\r\n Theme = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\r\n Settings = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\",\r\n WebSettings = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\",\r\n Hyperlink = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\r\n Footnotes = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes\",\r\n\tEndnotes = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes\",\r\n Footer = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer\",\r\n Header = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header\",\r\n ExtendedProperties = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\",\r\n CoreProperties = \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\r\n\tCustomProperties = \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties\",\r\n}\r\n\r\nexport function parseRelationships(root: Element, xml: XmlParser): Relationship[] {\r\n return xml.elements(root).map(e => <Relationship>{\r\n id: xml.attr(e, \"Id\"),\r\n type: xml.attr(e, \"Type\"),\r\n target: xml.attr(e, \"Target\"),\r\n targetMode: xml.attr(e, \"TargetMode\")\r\n });\r\n}","import {\r\n DomType, WmlTable, IDomNumbering,\r\n WmlHyperlink, IDomImage, OpenXmlElement, WmlTableColumn, WmlTableCell,\r\n WmlTableRow, NumberingPicBullet, WmlText, WmlSymbol, WmlBreak, WmlNoteReference\r\n} from './document/dom';\r\nimport { DocumentElement } from './document/document';\r\nimport { WmlParagraph, parseParagraphProperties, parseParagraphProperty } from './document/paragraph';\r\nimport { parseSectionProperties } from './document/section';\r\nimport xml from './parser/xml-parser';\r\nimport { parseRunProperties, WmlRun } from './document/run';\r\nimport { parseBookmarkEnd, parseBookmarkStart } from './document/bookmarks';\r\nimport { IDomStyle, IDomSubStyle } from './document/style';\r\nimport { WmlFieldChar, WmlFieldSimple, WmlInstructionText } from './document/fields';\r\nimport { convertLength, LengthUsage, LengthUsageType } from './document/common';\r\n\r\nexport var autos = {\r\n shd: \"white\",\r\n color: \"black\",\r\n\tborderColor: \"black\",\r\n highlight: \"transparent\"\r\n};\r\n\r\nexport interface DocumentParserOptions {\r\n ignoreWidth: boolean;\r\n debug: boolean;\r\n}\r\n\r\nexport class DocumentParser {\r\n options: DocumentParserOptions;\r\n\r\n constructor(options?: Partial<DocumentParserOptions>) {\r\n this.options = {\r\n ignoreWidth: false,\r\n debug: false,\r\n ...options \r\n };\r\n }\r\n\r\n parseNotes(xmlDoc: Element, elemName: string, elemClass: any): any[] {\r\n var result = [];\r\n\r\n for (let el of xml.elements(xmlDoc, elemName)) {\r\n const node = new elemClass();\r\n node.id = xml.attr(el, \"id\");\r\n node.noteType = xml.attr(el, \"type\");\r\n node.children = this.parseBodyElements(el);\r\n result.push(node);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n parseDocumentFile(xmlDoc: Element): DocumentElement {\r\n var xbody = xml.element(xmlDoc, \"body\");\r\n var background = xml.element(xmlDoc, \"background\");\r\n var sectPr = xml.element(xbody, \"sectPr\");\r\n\r\n return {\r\n type: DomType.Document,\r\n children: this.parseBodyElements(xbody),\r\n props: sectPr ? parseSectionProperties(sectPr, xml) : null,\r\n cssStyle: background ? this.parseBackground(background) : {},\r\n };\r\n }\r\n\r\n parseBackground(elem: Element): any {\r\n var result = {};\r\n var color = xmlUtil.colorAttr(elem, \"color\");\r\n\r\n if (color) {\r\n result[\"background-color\"] = color;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n parseBodyElements(element: Element): OpenXmlElement[] {\r\n var children = [];\r\n \r\n xmlUtil.foreach(element, elem => {\r\n switch (elem.localName) {\r\n case \"p\":\r\n children.push(this.parseParagraph(elem));\r\n break;\r\n\r\n case \"tbl\":\r\n children.push(this.parseTable(elem));\r\n break;\r\n\r\n\t\t\t\tcase \"sdt\":\r\n\t\t\t\t\tthis.parseSdt(elem).forEach(el => children.push(el));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n });\r\n\r\n return children;\r\n }\r\n\r\n parseStylesFile(xstyles: Element): IDomStyle[] {\r\n var result = [];\r\n\r\n xmlUtil.foreach(xstyles, n => {\r\n switch (n.localName) {\r\n case \"style\":\r\n result.push(this.parseStyle(n));\r\n break;\r\n\r\n case \"docDefaults\":\r\n result.push(this.parseDefaultStyles(n));\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseDefaultStyles(node: Element): IDomStyle {\r\n var result = <IDomStyle>{\r\n id: null,\r\n name: null,\r\n target: null,\r\n basedOn: null,\r\n styles: []\r\n };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"rPrDefault\":\r\n var rPr = xml.element(c, \"rPr\");\r\n\r\n if (rPr)\r\n result.styles.push({\r\n target: \"span\",\r\n values: this.parseDefaultProperties(rPr, {})\r\n });\r\n break;\r\n\r\n case \"pPrDefault\":\r\n var pPr = xml.element(c, \"pPr\");\r\n\r\n if (pPr)\r\n result.styles.push({\r\n target: \"p\",\r\n values: this.parseDefaultProperties(pPr, {})\r\n });\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseStyle(node: Element): IDomStyle {\r\n var result = <IDomStyle>{\r\n id: xml.attr(node, \"styleId\"),\r\n isDefault: xml.boolAttr(node, \"default\"),\r\n name: null,\r\n target: null,\r\n basedOn: null,\r\n styles: [],\r\n linked: null\r\n };\r\n\r\n switch (xml.attr(node, \"type\")) {\r\n case \"paragraph\": result.target = \"p\"; break;\r\n case \"table\": result.target = \"table\"; break;\r\n case \"character\": result.target = \"span\"; break;\r\n //case \"numbering\": result.target = \"p\"; break;\r\n }\r\n\r\n xmlUtil.foreach(node, n => {\r\n switch (n.localName) {\r\n case \"basedOn\":\r\n result.basedOn = xml.attr(n, \"val\");\r\n break;\r\n\r\n case \"name\":\r\n result.name = xml.attr(n, \"val\");\r\n break;\r\n\r\n case \"link\":\r\n result.linked = xml.attr(n, \"val\");\r\n break;\r\n \r\n case \"next\":\r\n result.next = xml.attr(n, \"val\");\r\n break;\r\n \r\n case \"aliases\":\r\n result.aliases = xml.attr(n, \"val\").split(\",\");\r\n break;\r\n\r\n case \"pPr\":\r\n result.styles.push({\r\n target: \"p\",\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n result.paragraphProps = parseParagraphProperties(n, xml);\r\n break;\r\n\r\n case \"rPr\":\r\n result.styles.push({\r\n target: \"span\",\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n result.runProps = parseRunProperties(n, xml);\r\n break;\r\n\r\n case \"tblPr\":\r\n case \"tcPr\":\r\n result.styles.push({\r\n target: \"td\", //TODO: maybe move to processor\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n break;\r\n\r\n case \"tblStylePr\":\r\n for (let s of this.parseTableStyle(n))\r\n result.styles.push(s);\r\n break;\r\n\r\n case \"rsid\":\r\n case \"qFormat\":\r\n case \"hidden\":\r\n case \"semiHidden\":\r\n case \"unhideWhenUsed\":\r\n case \"autoRedefine\":\r\n case \"uiPriority\":\r\n //TODO: ignore\r\n break;\r\n\r\n default:\r\n this.options.debug && console.warn(`DOCX: Unknown style element: ${n.localName}`);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseTableStyle(node: Element): IDomSubStyle[] {\r\n var result = [];\r\n\r\n var type = xml.attr(node, \"type\");\r\n var selector = \"\";\r\n\r\n switch (type) {\r\n case \"firstRow\": selector = \"tr.first-row td\"; break;\r\n case \"lastRow\": selector = \"tr.last-row td\"; break;\r\n case \"firstCol\": selector = \"td.first-col\"; break;\r\n case \"lastCol\": selector = \"td.last-col\"; break;\r\n case \"band1Vert\": selector = \"td.odd-col\"; break;\r\n case \"band2Vert\": selector = \"td.even-col\"; break;\r\n case \"band1Horz\": selector = \"tr.odd-row\"; break;\r\n case \"band2Horz\": selector = \"tr.even-row\"; break;\r\n default: return [];\r\n }\r\n\r\n xmlUtil.foreach(node, n => {\r\n switch (n.localName) {\r\n case \"pPr\":\r\n result.push({\r\n target: selector + \" p\",\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n break;\r\n\r\n case \"rPr\":\r\n result.push({\r\n target: selector + \" span\",\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n break;\r\n\r\n case \"tblPr\":\r\n case \"tcPr\":\r\n result.push({\r\n target: selector, //TODO: maybe move to processor\r\n values: this.parseDefaultProperties(n, {})\r\n });\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseNumberingFile(xnums: Element): IDomNumbering[] {\r\n var result = [];\r\n var mapping = {};\r\n var bullets = [];\r\n\r\n xmlUtil.foreach(xnums, n => {\r\n switch (n.localName) {\r\n case \"abstractNum\":\r\n this.parseAbstractNumbering(n, bullets)\r\n .forEach(x => result.push(x));\r\n break;\r\n\r\n case \"numPicBullet\":\r\n bullets.push(this.parseNumberingPicBullet(n));\r\n break;\r\n\r\n case \"num\":\r\n var numId = xml.attr(n, \"numId\");\r\n var abstractNumId = xml.elementAttr(n, \"abstractNumId\", \"val\");\r\n mapping[abstractNumId] = numId;\r\n break;\r\n }\r\n });\r\n\r\n result.forEach(x => x.id = mapping[x.id]);\r\n\r\n return result;\r\n }\r\n\r\n parseNumberingPicBullet(elem: Element): NumberingPicBullet {\r\n var pict = xml.element(elem, \"pict\");\r\n var shape = pict && xml.element(pict, \"shape\");\r\n var imagedata = shape && xml.element(shape, \"imagedata\");\r\n\r\n return imagedata ? {\r\n id: xml.intAttr(elem, \"numPicBulletId\"),\r\n src: xml.attr(imagedata, \"id\"),\r\n style: xml.attr(shape, \"style\")\r\n } : null;\r\n }\r\n\r\n parseAbstractNumbering(node: Element, bullets: any[]): IDomNumbering[] {\r\n var result = [];\r\n var id = xml.attr(node, \"abstractNumId\");\r\n\r\n xmlUtil.foreach(node, n => {\r\n switch (n.localName) {\r\n case \"lvl\":\r\n result.push(this.parseNumberingLevel(id, n, bullets));\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseNumberingLevel(id: string, node: Element, bullets: any[]): IDomNumbering {\r\n var result: IDomNumbering = {\r\n id: id,\r\n level: xml.intAttr(node, \"ilvl\"),\r\n pStyleName: undefined,\r\n pStyle: {},\r\n rStyle: {},\r\n suff: \"tab\"\r\n };\r\n\r\n xmlUtil.foreach(node, n => {\r\n switch (n.localName) {\r\n case \"pPr\":\r\n this.parseDefaultProperties(n, result.pStyle);\r\n break;\r\n\r\n case \"rPr\":\r\n this.parseDefaultProperties(n, result.rStyle);\r\n break;\r\n\r\n case \"lvlPicBulletId\":\r\n var id = xml.intAttr(n, \"val\");\r\n result.bullet = bullets.find(x => x.id == id);\r\n break;\r\n\r\n case \"lvlText\":\r\n result.levelText = xml.attr(n, \"val\");\r\n break;\r\n\r\n case \"pStyle\":\r\n result.pStyleName = xml.attr(n, \"val\");\r\n break;\r\n\r\n case \"numFmt\":\r\n result.format = xml.attr(n, \"val\");\r\n break;\r\n\r\n case \"suff\":\r\n result.suff = xml.attr(n, \"val\");\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n\tparseSdt(node: Element): OpenXmlElement[] {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? this.parseBodyElements(sdtContent) : [];\r\n\t}\r\n\r\n parseParagraph(node: Element): OpenXmlElement {\r\n var result = <WmlParagraph>{ type: DomType.Paragraph, children: [] };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"r\":\r\n result.children.push(this.parseRun(c, result));\r\n break;\r\n\r\n case \"hyperlink\":\r\n result.children.push(this.parseHyperlink(c, result));\r\n break;\r\n\r\n case \"bookmarkStart\":\r\n result.children.push(parseBookmarkStart(c, xml));\r\n break; \r\n\r\n case \"bookmarkEnd\":\r\n result.children.push(parseBookmarkEnd(c, xml));\r\n break;\r\n\r\n case \"pPr\":\r\n this.parseParagraphProperties(c, result);\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseParagraphProperties(elem: Element, paragraph: WmlParagraph) {\r\n this.parseDefaultProperties(elem, paragraph.cssStyle = {}, null, c => {\r\n if(parseParagraphProperty(c, paragraph, xml))\r\n return true;\r\n\r\n switch (c.localName) {\r\n case \"pStyle\":\r\n\t\t\t\t\tparagraph.styleName = xml.attr(c, \"val\");\r\n break;\r\n\r\n case \"cnfStyle\":\r\n paragraph.className = values.classNameOfCnfStyle(c);\r\n break;\r\n\r\n case \"framePr\":\r\n this.parseFrame(c, paragraph);\r\n break;\r\n\r\n case \"rPr\":\r\n //TODO ignore\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n parseFrame(node: Element, paragraph: WmlParagraph) {\r\n var dropCap = xml.attr(node, \"dropCap\");\r\n\r\n if (dropCap == \"drop\")\r\n paragraph.cssStyle[\"float\"] = \"left\";\r\n }\r\n\r\n parseHyperlink(node: Element, parent?: OpenXmlElement): WmlHyperlink {\r\n var result: WmlHyperlink = <WmlHyperlink>{ type: DomType.Hyperlink, parent: parent, children: [] };\r\n var anchor = xml.attr(node, \"anchor\");\r\n\r\n if (anchor)\r\n result.href = \"#\" + anchor;\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"r\":\r\n result.children.push(this.parseRun(c, result));\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseRun(node: Element, parent?: OpenXmlElement): WmlRun {\r\n var result: WmlRun = <WmlRun>{ type: DomType.Run, parent: parent, children: [] };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"t\":\r\n result.children.push(<WmlText>{ \r\n type: DomType.Text, \r\n text: c.textContent \r\n });//.replace(\" \", \"\\u00A0\"); // TODO\r\n break;\r\n \r\n case \"fldSimple\":\r\n result.children.push(<WmlFieldSimple>{\r\n type: DomType.SimpleField,\r\n instruction: xml.attr(c, \"instr\"),\r\n lock: xml.boolAttr(c, \"lock\", false),\r\n dirty: xml.boolAttr(c, \"dirty\", false)\r\n });\r\n break;\r\n\r\n case \"instrText\":\r\n\t\t\t\t\tresult.fieldRun = true;\r\n result.children.push(<WmlInstructionText>{\r\n type: DomType.Instruction,\r\n text: c.textContent\r\n });\r\n break;\r\n \r\n case \"fldChar\":\r\n\t\t\t\t\tresult.fieldRun = true;\r\n result.children.push(<WmlFieldChar>{\r\n type: DomType.ComplexField,\r\n charType: xml.attr(c, \"fldCharType\"),\r\n lock: xml.boolAttr(c, \"lock\", false),\r\n dirty: xml.boolAttr(c, \"dirty\", false)\r\n });\r\n break;\r\n\r\n case \"noBreakHyphen\":\r\n result.children.push({ type: DomType.NoBreakHyphen });\r\n break;\r\n\r\n case \"br\":\r\n result.children.push(<WmlBreak>{ \r\n type: DomType.Break, \r\n break: xml.attr(c, \"type\") || \"textWrapping\"\r\n });\r\n break;\r\n\r\n case \"lastRenderedPageBreak\":\r\n result.children.push(<WmlBreak>{ \r\n type: DomType.Break, \r\n break: \"lastRenderedPageBreak\"\r\n });\r\n break;\r\n \r\n case \"sym\":\r\n result.children.push(<WmlSymbol>{ \r\n type: DomType.Symbol, \r\n font: xml.attr(c, \"font\"),\r\n char: xml.attr(c, \"char\")\r\n });\r\n break;\r\n\r\n case \"tab\":\r\n result.children.push({ type: DomType.Tab });\r\n break;\r\n\r\n case \"footnoteReference\":\r\n result.children.push(<WmlNoteReference>{ \r\n type: DomType.FootnoteReference, \r\n id: xml.attr(c, \"id\")\r\n });\r\n break;\r\n\r\n\t\t\t\tcase \"endnoteReference\":\r\n\t\t\t\t\tresult.children.push(<WmlNoteReference>{ \r\n\t\t\t\t\t\ttype: DomType.EndnoteReference, \r\n\t\t\t\t\t\tid: xml.attr(c, \"id\")\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n case \"drawing\":\r\n let d = this.parseDrawing(c);\r\n\r\n if (d)\r\n result.children = [d];\r\n break;\r\n\r\n case \"rPr\":\r\n this.parseRunProperties(c, result);\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseRunProperties(elem: Element, run: WmlRun) {\r\n this.parseDefaultProperties(elem, run.cssStyle = {}, null, c => {\r\n switch (c.localName) {\r\n case \"rStyle\":\r\n run.styleName = xml.attr(c, \"val\");\r\n break;\r\n\r\n\t\t\t\tcase \"vertAlign\":\r\n\t\t\t\t\trun.verticalAlign = values.valueOfVertAlign(c, true);\r\n\t\t\t\t\tbreak;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n parseDrawing(node: Element): OpenXmlElement {\r\n for (var n of xml.elements(node)) {\r\n switch (n.localName) {\r\n case \"inline\":\r\n case \"anchor\":\r\n return this.parseDrawingWrapper(n);\r\n }\r\n }\r\n }\r\n\r\n parseDrawingWrapper(node: Element): OpenXmlElement {\r\n var result = <OpenXmlElement>{ type: DomType.Drawing, children: [], cssStyle: {} };\r\n var isAnchor = node.localName == \"anchor\";\r\n\r\n //TODO\r\n // result.style[\"margin-left\"] = xml.sizeAttr(node, \"distL\", SizeType.Emu);\r\n // result.style[\"margin-top\"] = xml.sizeAttr(node, \"distT\", SizeType.Emu);\r\n // result.style[\"margin-right\"] = xml.sizeAttr(node, \"distR\", SizeType.Emu);\r\n // result.style[\"margin-bottom\"] = xml.sizeAttr(node, \"distB\", SizeType.Emu);\r\n\r\n let wrapType: \"wrapTopAndBottom\" | \"wrapNone\" | null = null; \r\n let simplePos = xml.boolAttr(node, \"simplePos\");\r\n\r\n let posX = { relative: \"page\", align: \"left\", offset: \"0\" };\r\n let posY = { relative: \"page\", align: \"top\", offset: \"0\" };\r\n\r\n for (var n of xml.elements(node)) {\r\n switch (n.localName) {\r\n case \"simplePos\":\r\n if (simplePos) {\r\n posX.offset = xml.lengthAttr(n, \"x\", LengthUsage.Emu);\r\n posY.offset = xml.lengthAttr(n, \"y\", LengthUsage.Emu);\r\n }\r\n break;\r\n\r\n case \"extent\":\r\n result.cssStyle[\"width\"] = xml.lengthAttr(n, \"cx\", LengthUsage.Emu);\r\n result.cssStyle[\"height\"] = xml.lengthAttr(n, \"cy\", LengthUsage.Emu);\r\n break;\r\n\r\n case \"positionH\":\r\n case \"positionV\":\r\n if (!simplePos) {\r\n let pos = n.localName == \"positionH\" ? posX : posY;\r\n var alignNode = xml.element(n, \"align\");\r\n var offsetNode = xml.element(n, \"posOffset\");\r\n\r\n pos.relative = xml.attr(n, \"relativeFrom\") ?? pos.relative;\r\n\r\n if (alignNode)\r\n pos.align = alignNode.textContent;\r\n\r\n if (offsetNode)\r\n pos.offset = xmlUtil.sizeValue(offsetNode, LengthUsage.Emu);\r\n }\r\n break;\r\n\r\n case \"wrapTopAndBottom\":\r\n wrapType = \"wrapTopAndBottom\";\r\n break;\r\n \r\n case \"wrapNone\":\r\n wrapType = \"wrapNone\";\r\n break;\r\n\r\n case \"graphic\":\r\n var g = this.parseGraphic(n);\r\n\r\n if (g)\r\n result.children.push(g);\r\n break;\r\n }\r\n }\r\n\r\n if (wrapType == \"wrapTopAndBottom\") {\r\n result.cssStyle['display'] = 'block';\r\n\r\n if (posX.align) {\r\n result.cssStyle['text-align'] = posX.align;\r\n result.cssStyle['width'] = \"100%\";\r\n }\r\n }\r\n else if(wrapType == \"wrapNone\") {\r\n result.cssStyle['display'] = 'block';\r\n result.cssStyle['position'] = 'relative';\r\n result.cssStyle[\"width\"] = \"0px\";\r\n result.cssStyle[\"height\"] = \"0px\";\r\n\r\n if(posX.offset)\r\n result.cssStyle[\"left\"] = posX.offset;\r\n if(posY.offset)\r\n result.cssStyle[\"top\"] = posY.offset;\r\n }\r\n else if (isAnchor && (posX.align == 'left' || posX.align == 'right')) {\r\n result.cssStyle[\"float\"] = posX.align;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n parseGraphic(elem: Element): OpenXmlElement {\r\n var graphicData = xml.element(elem, \"graphicData\");\r\n\r\n for (let n of xml.elements(graphicData)) {\r\n switch (n.localName) {\r\n case \"pic\":\r\n return this.parsePicture(n);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n parsePicture(elem: Element): IDomImage {\r\n var result = <IDomImage>{ type: DomType.Image, src: \"\", cssStyle: {} };\r\n var blipFill = xml.element(elem, \"blipFill\");\r\n var blip = xml.element(blipFill, \"blip\");\r\n\r\n result.src = xml.attr(blip, \"embed\");\r\n\r\n var spPr = xml.element(elem, \"spPr\");\r\n var xfrm = xml.element(spPr, \"xfrm\");\r\n\r\n result.cssStyle[\"position\"] = \"relative\";\r\n\r\n for (var n of xml.elements(xfrm)) {\r\n switch (n.localName) {\r\n case \"ext\":\r\n result.cssStyle[\"width\"] = xml.lengthAttr(n, \"cx\", LengthUsage.Emu);\r\n result.cssStyle[\"height\"] = xml.lengthAttr(n, \"cy\", LengthUsage.Emu);\r\n break;\r\n\r\n case \"off\":\r\n result.cssStyle[\"left\"] = xml.lengthAttr(n, \"x\", LengthUsage.Emu);\r\n result.cssStyle[\"top\"] = xml.lengthAttr(n, \"y\", LengthUsage.Emu);\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n parseTable(node: Element): WmlTable {\r\n var result: WmlTable = { type: DomType.Table, children: [] };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"tr\":\r\n result.children.push(this.parseTableRow(c));\r\n break;\r\n\r\n case \"tblGrid\":\r\n result.columns = this.parseTableColumns(c);\r\n break;\r\n\r\n case \"tblPr\":\r\n this.parseTableProperties(c, result);\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseTableColumns(node: Element): WmlTableColumn[] {\r\n var result = [];\r\n\r\n xmlUtil.foreach(node, n => {\r\n switch (n.localName) {\r\n case \"gridCol\":\r\n result.push({ width: xml.lengthAttr(n, \"w\") });\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseTableProperties(elem: Element, table: WmlTable) {\r\n table.cssStyle = {};\r\n table.cellStyle = {};\r\n\r\n this.parseDefaultProperties(elem, table.cssStyle, table.cellStyle, c => {\r\n switch (c.localName) {\r\n case \"tblStyle\":\r\n table.styleName = xml.attr(c, \"val\");\r\n break;\r\n\r\n case \"tblLook\":\r\n\t\t\t\t\ttable.className = values.classNameOftblLook(c);\r\n break;\r\n\r\n case \"tblpPr\":\r\n this.parseTablePosition(c, table);\r\n break;\r\n\r\n\t\t\t\tcase \"tblStyleColBandSize\":\r\n\t\t\t\t\ttable.colBandSize = xml.intAttr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblStyleRowBandSize\":\r\n\t\t\t\t\ttable.rowBandSize = xml.intAttr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\t\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n switch (table.cssStyle[\"text-align\"]) {\r\n case \"center\":\r\n delete table.cssStyle[\"text-align\"];\r\n table.cssStyle[\"margin-left\"] = \"auto\";\r\n table.cssStyle[\"margin-right\"] = \"auto\";\r\n break;\r\n\r\n case \"right\":\r\n delete table.cssStyle[\"text-align\"];\r\n table.cssStyle[\"margin-left\"] = \"auto\";\r\n break;\r\n }\r\n }\r\n\r\n parseTablePosition(node: Element, table: WmlTable) {\r\n var topFromText = xml.lengthAttr(node, \"topFromText\");\r\n var bottomFromText = xml.lengthAttr(node, \"bottomFromText\");\r\n var rightFromText = xml.lengthAttr(node, \"rightFromText\");\r\n var leftFromText = xml.lengthAttr(node, \"leftFromText\");\r\n\r\n table.cssStyle[\"float\"] = 'left';\r\n table.cssStyle[\"margin-bottom\"] = values.addSize(table.cssStyle[\"margin-bottom\"], bottomFromText);\r\n table.cssStyle[\"margin-left\"] = values.addSize(table.cssStyle[\"margin-left\"], leftFromText);\r\n table.cssStyle[\"margin-right\"] = values.addSize(table.cssStyle[\"margin-right\"], rightFromText);\r\n table.cssStyle[\"margin-top\"] = values.addSize(table.cssStyle[\"margin-top\"], topFromText);\r\n }\r\n\r\n parseTableRow(node: Element): WmlTableRow {\r\n var result: WmlTableRow = { type: DomType.Row, children: [] };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"tc\":\r\n result.children.push(this.parseTableCell(c));\r\n break;\r\n\r\n case \"trPr\":\r\n this.parseTableRowProperties(c, result);\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseTableRowProperties(elem: Element, row: WmlTableRow) {\r\n row.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\r\n switch (c.localName) {\r\n case \"cnfStyle\":\r\n row.className = values.classNameOfCnfStyle(c);\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n parseTableCell(node: Element): OpenXmlElement {\r\n var result: WmlTableCell = { type: DomType.Cell, children: [] };\r\n\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"tbl\":\r\n result.children.push(this.parseTable(c));\r\n break;\r\n\r\n case \"p\":\r\n result.children.push(this.parseParagraph(c));\r\n break;\r\n\r\n case \"tcPr\":\r\n this.parseTableCellProperties(c, result);\r\n break;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n parseTableCellProperties(elem: Element, cell: WmlTableCell) {\r\n cell.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\r\n switch (c.localName) {\r\n case \"gridSpan\":\r\n cell.span = xml.intAttr(c, \"val\", null);\r\n break;\r\n\r\n case \"vMerge\": //TODO\r\n break;\r\n\r\n case \"cnfStyle\":\r\n cell.className = values.classNameOfCnfStyle(c);\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n parseDefaultProperties(elem: Element, style: Record<string, string> = null, childStyle: Record<string, string> = null, handler: (prop: Element) => boolean = null): Record<string, string> {\r\n style = style || {};\r\n\r\n xmlUtil.foreach(elem, c => {\r\n\t\t\tif (handler?.(c))\r\n\t\t\t\treturn;\r\n\r\n switch (c.localName) {\r\n case \"jc\":\r\n style[\"text-align\"] = values.valueOfJc(c);\r\n break;\r\n\r\n case \"textAlignment\":\r\n style[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n break;\r\n\r\n case \"color\":\r\n style[\"color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.color);\r\n break;\r\n\r\n case \"sz\":\r\n style[\"font-size\"] = style[\"min-height\"] = xml.lengthAttr(c, \"val\", LengthUsage.FontSize);\r\n break;\r\n\r\n case \"shd\":\r\n style[\"background-color\"] = xmlUtil.colorAttr(c, \"fill\", null, autos.shd);\r\n break;\r\n\r\n case \"highlight\":\r\n style[\"background-color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.highlight);\r\n break;\r\n\r\n case \"vertAlign\":\r\n\t\t\t\t\t//TODO\r\n // style.verticalAlign = values.valueOfVertAlign(c);\r\n break;\r\n\r\n\t\t\t\tcase \"position\":\r\n\t\t\t\t\tstyle.verticalAlign = xml.lengthAttr(c, \"val\", LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\t\r\n case \"tcW\":\r\n if (this.options.ignoreWidth)\r\n break;\r\n\r\n case \"tblW\":\r\n style[\"width\"] = values.valueOfSize(c, \"w\");\r\n break;\r\n\r\n case \"trHeight\":\r\n this.parseTrHeight(c, style);\r\n break;\r\n\r\n case \"strike\":\r\n style[\"text-decoration\"] = xml.boolAttr(c, \"val\", true) ? \"line-through\" : \"none\"\r\n break;\r\n\r\n case \"b\":\r\n style[\"font-weight\"] = xml.boolAttr(c, \"val\", true) ? \"bold\" : \"normal\";\r\n break;\r\n\r\n case \"i\":\r\n style[\"font-style\"] = xml.boolAttr(c, \"val\", true) ? \"italic\" : \"normal\";\r\n break;\r\n \r\n case \"caps\":\r\n style[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"uppercase\" : \"none\";\r\n break;\r\n\r\n case \"smallCaps\":\r\n style[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"lowercase\" : \"none\";\r\n break;\r\n \r\n case \"u\":\r\n this.parseUnderline(c, style);\r\n break;\r\n\r\n case \"ind\":\r\n case \"tblInd\":\r\n this.parseIndentation(c, style);\r\n break;\r\n\r\n case \"rFonts\":\r\n this.parseFont(c, style);\r\n break;\r\n\r\n case \"tblBorders\":\r\n this.parseBorderProperties(c, childStyle || style);\r\n break;\r\n\r\n case \"tblCellSpacing\":\r\n style[\"border-spacing\"] = values.valueOfMargin(c);\r\n style[\"border-collapse\"] = \"separate\";\r\n break;\r\n\r\n case \"pBdr\":\r\n this.parseBorderProperties(c, style);\r\n break;\r\n \r\n case \"bdr\":\r\n style[\"border\"] = values.valueOfBorder(c);\r\n break;\r\n\r\n case \"tcBorders\":\r\n this.parseBorderProperties(c, style);\r\n break;\r\n\r\n case \"vanish\":\r\n if (xml.boolAttr(c, \"val\", true))\r\n style[\"display\"] = \"none\";\r\n break;\r\n\r\n\t\t\t\tcase \"kern\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//style['letter-spacing'] = xml.lengthAttr(elem, 'val', LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\r\n case \"noWrap\":\r\n //TODO\r\n //style[\"white-space\"] = \"nowrap\";\r\n break;\r\n\r\n case \"tblCellMar\":\r\n case \"tcMar\":\r\n this.parseMarginProperties(c, childStyle || style);\r\n break;\r\n\r\n case \"tblLayout\":\r\n style[\"table-layout\"] = values.valueOfTblLayout(c);\r\n break;\r\n\r\n case \"vAlign\":\r\n style[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n break;\r\n\r\n case \"spacing\":\r\n if (elem.localName == \"pPr\")\r\n this.parseSpacing(c, style);\r\n break;\r\n\r\n\t\t\t\tcase \"wordWrap\":\r\n\t\t\t\t\tif (xml.boolAttr(c, \"val\")) //TODO: test with examples\r\n\t\t\t\t\t\tstyle[\"overflow-wrap\"] = \"break-word\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bCs\": \r\n\t\t\t\tcase \"iCs\":\r\n\t\t\t\tcase \"szCs\":\r\n\t\t\t\tcase \"tabs\": //ignore - tabs is parsed by other parser\r\n\t\t\t\tcase \"outlineLvl\": //TODO\r\n\t\t\t\tcase \"contextualSpacing\": //TODO\r\n\t\t\t\tcase \"tblStyleColBandSize\": //TODO\r\n\t\t\t\tcase \"tblStyleRowBandSize\": //TODO\r\n case \"webHidden\": //TODO - maybe web-hidden should be implemented\r\n\t\t\t\tcase \"pageBreakBefore\": //TODO - maybe ignore \r\n\t\t\t\tcase \"keepLines\": //TODO - maybe ignore\r\n\t\t\t\tcase \"keepNext\": //TODO - maybe ignore\r\n\t\t\t\tcase \"lang\":\r\n case \"noProof\": //ignore spellcheck\r\n //TODO ignore\r\n break;\r\n\r\n default:\r\n if (this.options.debug)\r\n console.warn(`DOCX: Unknown document element: ${elem.localName}.${c.localName}` );\r\n break;\r\n }\r\n });\r\n\r\n return style;\r\n }\r\n\r\n parseUnderline(node: Element, style: Record<string, string>) {\r\n var val = xml.attr(node, \"val\");\r\n\r\n if (val == null)\r\n return;\r\n\r\n switch (val) {\r\n case \"dash\":\r\n case \"dashDotDotHeavy\":\r\n case \"dashDotHeavy\":\r\n case \"dashedHeavy\":\r\n case \"dashLong\":\r\n case \"dashLongHeavy\":\r\n case \"dotDash\":\r\n case \"dotDotDash\":\r\n style[\"text-decoration-style\"] = \"dashed\";\r\n break;\r\n\r\n case \"dotted\":\r\n case \"dottedHeavy\":\r\n style[\"text-decoration-style\"] = \"dotted\";\r\n break;\r\n\r\n case \"double\":\r\n style[\"text-decoration-style\"] = \"double\";\r\n break;\r\n\r\n case \"single\":\r\n case \"thick\":\r\n style[\"text-decoration\"] = \"underline\";\r\n break;\r\n\r\n case \"wave\":\r\n case \"wavyDouble\":\r\n case \"wavyHeavy\":\r\n style[\"text-decoration-style\"] = \"wavy\";\r\n break;\r\n\r\n case \"words\":\r\n style[\"text-decoration\"] = \"underline\";\r\n break;\r\n\r\n case \"none\":\r\n style[\"text-decoration\"] = \"none\";\r\n break;\r\n }\r\n\r\n var col = xmlUtil.colorAttr(node, \"color\");\r\n\r\n if (col)\r\n style[\"text-decoration-color\"] = col;\r\n }\r\n\r\n parseFont(node: Element, style: Record<string, string>) {\r\n var ascii = xml.attr(node, \"ascii\");\r\n var asciiTheme = values.themeValue(node, \"asciiTheme\");\r\n\r\n var fonts = [ascii, asciiTheme].filter(x => x).join(', ');\r\n\r\n if (fonts.length > 0)\r\n style[\"font-family\"] = fonts;\r\n }\r\n\r\n parseIndentation(node: Element, style: Record<string, string>) {\r\n var firstLine = xml.lengthAttr(node, \"firstLine\");\r\n var hanging = xml.lengthAttr(node, \"hanging\");\r\n var left = xml.lengthAttr(node, \"left\");\r\n var start = xml.lengthAttr(node, \"start\");\r\n var right = xml.lengthAttr(node, \"right\");\r\n var end = xml.lengthAttr(node, \"end\");\r\n\r\n if (firstLine) style[\"text-indent\"] = firstLine;\r\n if (hanging) style[\"text-indent\"] = `-${hanging}`;\r\n if (left || start) style[\"margin-left\"] = left || start;\r\n if (right || end) style[\"margin-right\"] = right || end;\r\n }\r\n\r\n parseSpacing(node: Element, style: Record<string, string>) {\r\n var before = xml.lengthAttr(node, \"before\");\r\n var after = xml.lengthAttr(node, \"after\");\r\n var line = xml.intAttr(node, \"line\", null);\r\n var lineRule = xml.attr(node, \"lineRule\");\r\n\r\n if (before) style[\"margin-top\"] = before;\r\n if (after) style[\"margin-bottom\"] = after;\r\n \r\n if (line !== null) {\r\n switch(lineRule) {\r\n case \"auto\": \r\n style[\"line-height\"] = `${(line / 240).toFixed(2)}`;\r\n break;\r\n\r\n case \"atLeast\":\r\n style[\"line-height\"] = `calc(100% + ${line / 20}pt)`;\r\n break;\r\n\r\n default:\r\n style[\"line-height\"] = style[\"min-height\"] = `${line / 20}pt`\r\n break;\r\n }\r\n }\r\n }\r\n\r\n parseMarginProperties(node: Element, output: Record<string, string>) {\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"left\":\r\n output[\"padding-left\"] = values.valueOfMargin(c);\r\n break;\r\n\r\n case \"right\":\r\n output[\"padding-right\"] = values.valueOfMargin(c);\r\n break;\r\n\r\n case \"top\":\r\n output[\"padding-top\"] = values.valueOfMargin(c);\r\n break;\r\n\r\n case \"bottom\":\r\n output[\"padding-bottom\"] = values.valueOfMargin(c);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n parseTrHeight(node: Element, output: Record<string, string>) {\r\n switch (xml.attr(node, \"hRule\")) {\r\n case \"exact\":\r\n output[\"height\"] = xml.lengthAttr(node, \"val\");\r\n break;\r\n\r\n case \"atLeast\":\r\n default:\r\n output[\"height\"] = xml.lengthAttr(node, \"val\");\r\n // min-height doesn't work for tr\r\n //output[\"min-height\"] = xml.sizeAttr(node, \"val\"); \r\n break;\r\n }\r\n }\r\n\r\n parseBorderProperties(node: Element, output: Record<string, string>) {\r\n xmlUtil.foreach(node, c => {\r\n switch (c.localName) {\r\n case \"start\":\r\n case \"left\":\r\n output[\"border-left\"] = values.valueOfBorder(c);\r\n break;\r\n\r\n case \"end\":\r\n case \"right\":\r\n output[\"border-right\"] = values.valueOfBorder(c);\r\n break;\r\n\r\n case \"top\":\r\n output[\"border-top\"] = values.valueOfBorder(c);\r\n break;\r\n\r\n case \"bottom\":\r\n output[\"border-bottom\"] = values.valueOfBorder(c);\r\n break;\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst knownColors = ['black','blue','cyan','darkBlue','darkCyan','darkGray','darkGreen','darkMagenta','darkRed','darkYellow','green','lightGray','magenta','none','red','white','yellow'];\r\n\r\nclass xmlUtil {\r\n static foreach(node: Element, cb: (n: Element) => void) {\r\n for (var i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n\r\n if (n.nodeType == Node.ELEMENT_NODE)\r\n cb(<Element>n);\r\n }\r\n }\r\n\r\n static colorAttr(node: Element, attrName: string, defValue: string = null, autoColor: string = 'black') {\r\n var v = xml.attr(node, attrName);\r\n\r\n if (v) {\r\n if (v == \"auto\") {\r\n return autoColor;\r\n } else if (knownColors.includes(v)) {\r\n return v;\r\n }\r\n\r\n return `#${v}`;\r\n }\r\n\r\n var themeColor = xml.attr(node, \"themeColor\");\r\n\r\n return themeColor ? `var(--docx-${themeColor}-color)` : defValue;\r\n }\r\n\r\n static sizeValue(node: Element, type: LengthUsageType = LengthUsage.Dxa) {\r\n return convertLength(node.textContent, type);\r\n }\r\n}\r\n\r\nclass values {\r\n static themeValue(c: Element, attr: string) {\r\n var val = xml.attr(c, attr); \r\n return val ? `var(--docx-${val}-font)` : null;\r\n }\r\n\r\n static valueOfSize(c: Element, attr: string) {\r\n var type = LengthUsage.Dxa;\r\n\r\n switch (xml.attr(c, \"type\")) {\r\n case \"dxa\": break;\r\n case \"pct\": type = LengthUsage.Percent; break;\r\n case \"auto\": return \"auto\";\r\n }\r\n\r\n return xml.lengthAttr(c, attr, type);\r\n }\r\n\r\n static valueOfMargin(c: Element) {\r\n return xml.lengthAttr(c, \"w\");\r\n }\r\n\r\n static valueOfBorder(c: Element) {\r\n var type = xml.attr(c, \"val\");\r\n\r\n if (type == \"nil\")\r\n return \"none\";\r\n\r\n var color = xmlUtil.colorAttr(c, \"color\");\r\n var size = xml.lengthAttr(c, \"sz\", LengthUsage.Border);\r\n\r\n return `${size} solid ${color == \"auto\" ? autos.borderColor : color}`;\r\n }\r\n\r\n static valueOfTblLayout(c: Element) {\r\n var type = xml.attr(c, \"val\");\r\n return type == \"fixed\" ? \"fixed\" : \"auto\";\r\n }\r\n\r\n static classNameOfCnfStyle(c: Element) {\r\n const val = xml.attr(c, \"val\");\r\n\t\tconst classes = [\r\n\t\t\t'first-row', 'last-row', 'first-col', 'last-col', \r\n\t\t\t'odd-col', 'even-col', 'odd-row', 'even-row', \r\n\t\t\t'ne-cell', 'nw-cell', 'se-cell', 'sw-cell'\r\n\t\t];\r\n\r\n\t\treturn classes.filter((_, i) => val[i] == '1').join(' ');\r\n }\r\n\r\n static valueOfJc(c: Element) {\r\n var type = xml.attr(c, \"val\");\r\n\r\n switch (type) {\r\n case \"start\":\r\n case \"left\": return \"left\";\r\n case \"center\": return \"center\";\r\n case \"end\":\r\n case \"right\": return \"right\";\r\n case \"both\": return \"justify\";\r\n }\r\n\r\n return type;\r\n }\r\n\r\n static valueOfVertAlign(c: Element, asTagName: boolean = false) {\r\n var type = xml.attr(c, \"val\");\r\n\r\n switch (type) {\r\n case \"subscript\": return \"sub\";\r\n case \"superscript\": return asTagName ? \"sup\" : \"super\";\r\n }\r\n\r\n return asTagName ? null : type;\r\n }\r\n\r\n static valueOfTextAlignment(c: Element) {\r\n var type = xml.attr(c, \"val\");\r\n\r\n switch (type) {\r\n case \"auto\":\r\n case \"baseline\": return \"baseline\";\r\n case \"top\": return \"top\";\r\n case \"center\": return \"middle\";\r\n case \"bottom\": return \"bottom\";\r\n }\r\n\r\n return type;\r\n }\r\n\r\n static addSize(a: string, b: string): string {\r\n if (a == null) return b;\r\n if (b == null) return a;\r\n\r\n return `calc(${a} + ${b})`; //TODO\r\n }\r\n\r\n static classNameOftblLook(c: Element) {\r\n let className = \"\";\r\n\r\n if (xml.boolAttr(c, \"firstColumn\")) className += \" first-col\";\r\n if (xml.boolAttr(c, \"firstRow\")) className += \" first-row\";\r\n if (xml.boolAttr(c, \"lastColumn\")) className += \" lat-col\";\r\n if (xml.boolAttr(c, \"lastRow\")) className += \" last-row\";\r\n if (xml.boolAttr(c, \"noHBand\")) className += \" no-hband\";\r\n if (xml.boolAttr(c, \"noVBand\")) className += \" no-vband\";\r\n\r\n return className.trim();\r\n }\r\n}","import { Part } from \"../common/part\";\r\nimport { CorePropsDeclaration, parseCoreProps } from \"./core-props\";\r\n\r\nexport class CorePropsPart extends Part {\r\n props: CorePropsDeclaration;\r\n\r\n parseXml(root: Element) {\r\n this.props = parseCoreProps(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface CorePropsDeclaration {\r\n title: string,\r\n description: string,\r\n subject: string,\r\n creator: string,\r\n keywords: string,\r\n language: string,\r\n lastModifiedBy: string,\r\n revision: number,\r\n}\r\n\r\nexport function parseCoreProps(root: Element, xmlParser: XmlParser): CorePropsDeclaration {\r\n const result = <CorePropsDeclaration>{};\r\n\r\n for (let el of xmlParser.elements(root)) {\r\n switch (el.localName) {\r\n case \"title\": result.title = el.textContent; break;\r\n case \"description\": result.description = el.textContent; break;\r\n case \"subject\": result.subject = el.textContent; break;\r\n case \"creator\": result.creator = el.textContent; break;\r\n case \"keywords\": result.keywords = el.textContent; break;\r\n case \"language\": result.language = el.textContent; break;\r\n case \"lastModifiedBy\": result.lastModifiedBy = el.textContent; break;\r\n case \"revision\": el.textContent && (result.revision = parseInt(el.textContent)); break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { Part } from \"../common/part\";\r\nimport { CustomProperty, parseCustomProps } from \"./custom-props\";\r\n\r\nexport class CustomPropsPart extends Part {\r\n props: CustomProperty[];\r\n\r\n parseXml(root: Element) {\r\n this.props = parseCustomProps(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface CustomProperty {\r\n\tformatId: string;\r\n\tname: string;\r\n\ttype: string;\r\n\tvalue: string;\r\n}\r\n\r\nexport function parseCustomProps(root: Element, xml: XmlParser): CustomProperty[] {\r\n\treturn xml.elements(root, \"property\").map(e => {\r\n\t\tconst firstChild = e.firstChild;\r\n\r\n\t\treturn {\r\n\t\t\tformatId: xml.attr(e, \"fmtid\"),\r\n\t\t\tname: xml.attr(e, \"name\"),\r\n\t\t\ttype: firstChild.nodeName,\r\n\t\t\tvalue: firstChild.textContent\r\n\t\t};\r\n\t});\r\n}","import { Part } from \"../common/part\";\r\nimport { ExtendedPropsDeclaration, parseExtendedProps } from \"./extended-props\";\r\n\r\nexport class ExtendedPropsPart extends Part {\r\n props: ExtendedPropsDeclaration;\r\n\r\n parseXml(root: Element) {\r\n this.props = parseExtendedProps(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface ExtendedPropsDeclaration {\r\n template: string,\r\n totalTime: number,\r\n pages: number,\r\n words: number,\r\n characters: number,\r\n application: string,\r\n lines: number,\r\n paragraphs: number,\r\n company: string,\r\n appVersion: string\r\n}\r\n\r\nexport function parseExtendedProps(root: Element, xmlParser: XmlParser): ExtendedPropsDeclaration {\r\n const result = <ExtendedPropsDeclaration>{\r\n\r\n };\r\n\r\n for (let el of xmlParser.elements(root)) {\r\n switch (el.localName) {\r\n case \"Template\":\r\n result.template = el.textContent;\r\n break;\r\n case \"Pages\":\r\n result.pages = safeParseToInt(el.textContent);\r\n break;\r\n case \"Words\":\r\n result.words = safeParseToInt(el.textContent);\r\n break;\r\n case \"Characters\":\r\n result.characters = safeParseToInt(el.textContent);\r\n break;\r\n case \"Application\":\r\n result.application = el.textContent;\r\n break;\r\n case \"Lines\":\r\n result.lines = safeParseToInt(el.textContent);\r\n break;\r\n case \"Paragraphs\":\r\n result.paragraphs = safeParseToInt(el.textContent);\r\n break;\r\n case \"Company\":\r\n result.company = el.textContent;\r\n break;\r\n case \"AppVersion\":\r\n result.appVersion = el.textContent;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction safeParseToInt(value: string): number {\r\n if (typeof value === 'undefined')\r\n return;\r\n return parseInt(value);\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { DomType, OpenXmlElement } from \"./dom\";\r\n\r\nexport interface WmlBookmarkStart extends OpenXmlElement {\r\n id: string;\r\n name: string;\r\n colFirst: number;\r\n colLast: number;\r\n}\r\n\r\nexport interface WmlBookmarkEnd extends OpenXmlElement {\r\n id: string;\r\n}\r\n\r\nexport function parseBookmarkStart(elem: Element, xml: XmlParser): WmlBookmarkStart {\r\n return {\r\n type: DomType.BookmarkStart,\r\n id: xml.attr(elem, \"id\"),\r\n name: xml.attr(elem, \"name\"),\r\n colFirst: xml.intAttr(elem, \"colFirst\"),\r\n colLast: xml.intAttr(elem, \"colLast\")\r\n }\r\n}\r\n\r\nexport function parseBookmarkEnd(elem: Element, xml: XmlParser): WmlBookmarkEnd {\r\n return {\r\n type: DomType.BookmarkEnd,\r\n id: xml.attr(elem, \"id\")\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { Length, LengthUsage } from \"./common\";\r\n\r\nexport interface Border {\r\n color: string;\r\n type: string;\r\n size: Length;\r\n frame: boolean;\r\n shadow: boolean;\r\n offset: Length;\r\n}\r\n\r\nexport interface Borders {\r\n top: Border;\r\n left: Border;\r\n right: Border;\r\n bottom: Border;\r\n}\r\n\r\nexport function parseBorder(elem: Element, xml: XmlParser): Border {\r\n return {\r\n type: xml.attr(elem, \"val\"),\r\n color: xml.attr(elem, \"color\"),\r\n size: xml.lengthAttr(elem, \"sz\", LengthUsage.Border),\r\n offset: xml.lengthAttr(elem, \"space\", LengthUsage.Point),\r\n frame: xml.boolAttr(elem, 'frame'),\r\n shadow: xml.boolAttr(elem, 'shadow')\r\n };\r\n}\r\n\r\nexport function parseBorders(elem: Element, xml: XmlParser): Borders {\r\n var result = <Borders>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"left\": result.left = parseBorder(e, xml); break;\r\n case \"top\": result.top = parseBorder(e, xml); break;\r\n case \"right\": result.right = parseBorder(e, xml); break;\r\n case \"bottom\": result.bottom = parseBorder(e, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport const ns = {\r\n wordml: \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\r\n drawingml: \"http://schemas.openxmlformats.org/drawingml/2006/main\",\r\n picture: \"http://schemas.openxmlformats.org/drawingml/2006/picture\",\r\n\tcompatibility: \"http://schemas.openxmlformats.org/markup-compatibility/2006\"\r\n}\r\n\r\nexport type LengthType = \"px\" | \"pt\" | \"%\";\r\nexport type Length = string;\r\n\r\nexport interface Font {\r\n name: string;\r\n family: string;\r\n}\r\n\r\nexport interface CommonProperties {\r\n fontSize: Length;\r\n color: string;\r\n}\r\n\r\nexport type LengthUsageType = { mul: number, unit: LengthType };\r\n\r\nexport const LengthUsage: Record<string, LengthUsageType> = {\r\n Dxa: { mul: 0.05, unit: \"pt\" }, //twips\r\n Emu: { mul: 1 / 12700, unit: \"pt\" },\r\n FontSize: { mul: 0.5, unit: \"pt\" },\r\n Border: { mul: 0.125, unit: \"pt\" },\r\n Point: { mul: 1, unit: \"pt\" },\r\n Percent: { mul: 0.02, unit: \"%\" },\r\n LineHeight: { mul: 1 / 240, unit: null }\r\n}\r\n\r\nexport function convertLength(val: string, usage: LengthUsageType = LengthUsage.Dxa): string {\r\n //\"simplified\" docx documents use pt's as units\r\n if (val == null || /.+(p[xt]|[%])$/.test(val)) {\r\n return val;\r\n }\r\n\r\n\treturn `${(parseInt(val) * usage.mul).toFixed(2)}${usage.unit ?? ''}`;\r\n}\r\n\r\nexport function convertBoolean(v: string, defaultValue = false): boolean {\r\n switch (v) {\r\n case \"1\": return true;\r\n case \"0\": return false;\r\n case \"on\": return true;\r\n case \"off\": return false;\r\n case \"true\": return true;\r\n case \"false\": return false;\r\n default: return defaultValue;\r\n }\r\n}\r\n\r\nexport function convertPercentage(val: string): number {\r\n return val ? parseInt(val) / 100 : null;\r\n}\r\n\r\nexport function parseCommonProperty(elem: Element, props: CommonProperties, xml: XmlParser): boolean {\r\n if(elem.namespaceURI != ns.wordml)\r\n return false;\r\n\r\n switch(elem.localName) {\r\n case \"color\": \r\n props.color = xml.attr(elem, \"val\");\r\n break;\r\n\r\n case \"sz\":\r\n props.fontSize = xml.lengthAttr(elem, \"val\", LengthUsage.FontSize);\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { DocumentElement } from \"./document\";\r\n\r\nexport class DocumentPart extends Part {\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n \r\n body: DocumentElement\r\n\r\n parseXml(root: Element) {\r\n this.body = this._documentParser.parseDocumentFile(root);\r\n }\r\n}","export enum DomType {\r\n Document = \"document\",\r\n Paragraph = \"paragraph\",\r\n Run = \"run\",\r\n Break = \"break\",\r\n NoBreakHyphen = \"noBreakHyphen\",\r\n Table = \"table\",\r\n Row = \"row\",\r\n Cell = \"cell\",\r\n Hyperlink = \"hyperlink\",\r\n Drawing = \"drawing\",\r\n Image = \"image\",\r\n Text = \"text\",\r\n Tab = \"tab\",\r\n Symbol = \"symbol\",\r\n BookmarkStart = \"bookmarkStart\",\r\n BookmarkEnd = \"bookmarkEnd\",\r\n Footer = \"footer\",\r\n Header = \"header\",\r\n FootnoteReference = \"footnoteReference\", \r\n\tEndnoteReference = \"endnoteReference\",\r\n Footnote = \"footnote\",\r\n Endnote = \"endnote\",\r\n SimpleField = \"simpleField\",\r\n ComplexField = \"complexField\",\r\n Instruction = \"instruction\"\r\n}\r\n\r\nexport interface OpenXmlElement {\r\n type: DomType;\r\n children?: OpenXmlElement[];\r\n cssStyle?: Record<string, string>;\r\n \r\n\tstyleName?: string; //style name\r\n\tclassName?: string; //class mods\r\n\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport interface WmlHyperlink extends OpenXmlElement {\r\n href?: string;\r\n}\r\n\r\nexport interface WmlNoteReference extends OpenXmlElement {\r\n id: string;\r\n}\r\n\r\nexport interface WmlBreak extends OpenXmlElement{\r\n break: \"page\" | \"lastRenderedPageBreak\" | \"textWrapping\";\r\n}\r\n\r\nexport interface WmlText extends OpenXmlElement{\r\n text: string;\r\n}\r\n\r\nexport interface WmlSymbol extends OpenXmlElement {\r\n font: string;\r\n char: string;\r\n}\r\n\r\nexport interface WmlTable extends OpenXmlElement {\r\n columns?: WmlTableColumn[];\r\n cellStyle?: Record<string, string>;\r\n\r\n\tcolBandSize?: number;\r\n\trowBandSize?: number;\r\n}\r\n\r\nexport interface WmlTableRow extends OpenXmlElement {\r\n}\r\n\r\nexport interface WmlTableCell extends OpenXmlElement {\r\n span?: number;\r\n}\r\n\r\nexport interface IDomImage extends OpenXmlElement {\r\n src: string;\r\n}\r\n\r\nexport interface WmlTableColumn {\r\n width?: string;\r\n}\r\n\r\nexport interface IDomNumbering {\r\n id: string;\r\n level: number;\r\n pStyleName: string;\r\n pStyle: Record<string, string>;\r\n rStyle: Record<string, string>;\r\n levelText?: string;\r\n suff: string;\r\n format?: string;\r\n bullet?: NumberingPicBullet;\r\n}\r\n\r\nexport interface NumberingPicBullet {\r\n id: number;\r\n src: string;\r\n style?: string;\r\n}\r\n","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { Length } from \"./common\";\r\n\r\nexport interface LineSpacing {\r\n after: Length;\r\n before: Length;\r\n line: number;\r\n lineRule: \"atLeast\" | \"exactly\" | \"auto\";\r\n}\r\n\r\nexport function parseLineSpacing(elem: Element, xml: XmlParser): LineSpacing {\r\n return {\r\n before: xml.lengthAttr(elem, \"before\"),\r\n after: xml.lengthAttr(elem, \"after\"),\r\n line: xml.intAttr(elem, \"line\"),\r\n lineRule: xml.attr(elem, \"lineRule\")\r\n } as LineSpacing;\r\n}","import { OpenXmlElement } from \"./dom\";\r\nimport { CommonProperties, Length, ns, parseCommonProperty } from \"./common\";\r\nimport { Borders } from \"./border\";\r\nimport { parseSectionProperties, SectionProperties } from \"./section\";\r\nimport { LineSpacing, parseLineSpacing } from \"./line-spacing\";\r\nimport { XmlParser } from \"../parser/xml-parser\";\r\nimport { parseRunProperties, RunProperties } from \"./run\";\r\n\r\nexport interface WmlParagraph extends OpenXmlElement, ParagraphProperties {\r\n}\r\n\r\nexport interface ParagraphProperties extends CommonProperties {\r\n sectionProps: SectionProperties;\r\n tabs: ParagraphTab[];\r\n numbering: ParagraphNumbering;\r\n\r\n border: Borders;\r\n textAlignment: \"auto\" | \"baseline\" | \"bottom\" | \"center\" | \"top\" | string;\r\n lineSpacing: LineSpacing;\r\n keepLines: boolean;\r\n keepNext: boolean;\r\n pageBreakBefore: boolean;\r\n outlineLevel: number;\r\n\tstyleName?: string;\r\n\r\n runProps: RunProperties;\r\n}\r\n\r\nexport interface ParagraphTab {\r\n style: \"bar\" | \"center\" | \"clear\" | \"decimal\" | \"end\" | \"num\" | \"start\" | \"left\" | \"right\";\r\n leader: \"none\" | \"dot\" | \"heavy\" | \"hyphen\" | \"middleDot\" | \"underscore\";\r\n position: Length;\r\n}\r\n\r\nexport interface ParagraphNumbering {\r\n id: string;\r\n level: number;\r\n}\r\n\r\nexport function parseParagraphProperties(elem: Element, xml: XmlParser): ParagraphProperties {\r\n let result = <ParagraphProperties>{};\r\n\r\n for(let el of xml.elements(elem)) {\r\n parseParagraphProperty(el, result, xml);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseParagraphProperty(elem: Element, props: ParagraphProperties, xml: XmlParser) {\r\n if (elem.namespaceURI != ns.wordml)\r\n return false;\r\n\r\n if(parseCommonProperty(elem, props, xml))\r\n return true;\r\n\r\n switch (elem.localName) {\r\n case \"tabs\":\r\n props.tabs = parseTabs(elem, xml);\r\n break;\r\n\r\n case \"sectPr\":\r\n props.sectionProps = parseSectionProperties(elem, xml);\r\n break;\r\n\r\n case \"numPr\":\r\n props.numbering = parseNumbering(elem, xml);\r\n break;\r\n \r\n case \"spacing\":\r\n props.lineSpacing = parseLineSpacing(elem, xml);\r\n return false; // TODO\r\n break;\r\n\r\n case \"textAlignment\":\r\n props.textAlignment = xml.attr(elem, \"val\");\r\n return false; //TODO\r\n break;\r\n\r\n case \"keepNext\":\r\n props.keepLines = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"keepNext\":\r\n props.keepNext = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"pageBreakBefore\":\r\n props.pageBreakBefore = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"outlineLvl\":\r\n props.outlineLevel = xml.intAttr(elem, \"val\");\r\n break;\r\n\r\n case \"pStyle\":\r\n props.styleName = xml.attr(elem, \"val\");\r\n break;\r\n\r\n case \"rPr\":\r\n props.runProps = parseRunProperties(elem, xml);\r\n break;\r\n \r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function parseTabs(elem: Element, xml: XmlParser): ParagraphTab[] {\r\n return xml.elements(elem, \"tab\")\r\n .map(e => <ParagraphTab>{\r\n position: xml.lengthAttr(e, \"pos\"),\r\n leader: xml.attr(e, \"leader\"),\r\n style: xml.attr(e, \"val\")\r\n });\r\n}\r\n\r\nexport function parseNumbering(elem: Element, xml: XmlParser): ParagraphNumbering {\r\n var result = <ParagraphNumbering>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"numId\":\r\n result.id = xml.attr(e, \"val\");\r\n break;\r\n\r\n case \"ilvl\":\r\n result.level = xml.intAttr(e, \"val\");\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { CommonProperties, parseCommonProperty } from \"./common\";\r\nimport { OpenXmlElement } from \"./dom\";\r\n\r\nexport interface WmlRun extends OpenXmlElement, RunProperties {\r\n id?: string;\r\n verticalAlign?: string;\r\n\tfieldRun?: boolean; \r\n}\r\n\r\nexport interface RunProperties extends CommonProperties {\r\n\r\n}\r\n\r\nexport function parseRunProperties(elem: Element, xml: XmlParser): RunProperties {\r\n let result = <RunProperties>{};\r\n\r\n for(let el of xml.elements(elem)) {\r\n parseRunProperty(el, result, xml);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseRunProperty(elem: Element, props: RunProperties, xml: XmlParser) {\r\n if (parseCommonProperty(elem, props, xml))\r\n return true;\r\n\r\n return false;\r\n}","import globalXmlParser, { XmlParser } from \"../parser/xml-parser\";\r\nimport { Borders, parseBorders } from \"./border\";\r\nimport { Length } from \"./common\";\r\n\r\nexport interface Column {\r\n space: Length;\r\n width: Length;\r\n}\r\n\r\nexport interface Columns {\r\n space: Length;\r\n numberOfColumns: number;\r\n separator: boolean;\r\n equalWidth: boolean;\r\n columns: Column[];\r\n}\r\n\r\nexport interface PageSize {\r\n width: Length, \r\n height: Length, \r\n orientation: \"landscape\" | string \r\n}\r\n\r\nexport interface PageNumber {\r\n start: number;\r\n chapSep: \"colon\" | \"emDash\" | \"endash\" | \"hyphen\" | \"period\" | string;\r\n chapStyle: string;\r\n format: \"none\" | \"cardinalText\" | \"decimal\" | \"decimalEnclosedCircle\" | \"decimalEnclosedFullstop\" \r\n | \"decimalEnclosedParen\" | \"decimalZero\" | \"lowerLetter\" | \"lowerRoman\"\r\n | \"ordinalText\" | \"upperLetter\" | \"upperRoman\" | string;\r\n}\r\n\r\nexport interface PageMargins {\r\n top: Length;\r\n right: Length;\r\n bottom: Length;\r\n left: Length;\r\n header: Length;\r\n footer: Length;\r\n gutter: Length;\r\n}\r\n\r\nexport enum SectionType {\r\n Continuous = \"continuous\",\r\n NextPage = \"nextPage\", \r\n NextColumn = \"nextColumn\",\r\n EvenPage = \"evenPage\",\r\n OddPage = \"oddPage\",\r\n}\r\n\r\nexport interface FooterHeaderReference {\r\n id: string;\r\n type: string | \"first\" | \"even\" | \"default\";\r\n}\r\n\r\nexport interface SectionProperties {\r\n type: SectionType | string;\r\n pageSize: PageSize,\r\n pageMargins: PageMargins,\r\n pageBorders: Borders;\r\n pageNumber: PageNumber;\r\n columns: Columns;\r\n footerRefs: FooterHeaderReference[];\r\n headerRefs: FooterHeaderReference[];\r\n titlePage: boolean;\r\n}\r\n\r\nexport function parseSectionProperties(elem: Element, xml: XmlParser = globalXmlParser): SectionProperties {\r\n var section = <SectionProperties>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"pgSz\":\r\n section.pageSize = {\r\n width: xml.lengthAttr(e, \"w\"),\r\n height: xml.lengthAttr(e, \"h\"),\r\n orientation: xml.attr(e, \"orient\")\r\n }\r\n break;\r\n\r\n case \"type\":\r\n section.type = xml.attr(e, \"val\");\r\n break;\r\n\r\n case \"pgMar\":\r\n section.pageMargins = {\r\n left: xml.lengthAttr(e, \"left\"),\r\n right: xml.lengthAttr(e, \"right\"),\r\n top: xml.lengthAttr(e, \"top\"),\r\n bottom: xml.lengthAttr(e, \"bottom\"),\r\n header: xml.lengthAttr(e, \"header\"),\r\n footer: xml.lengthAttr(e, \"footer\"),\r\n gutter: xml.lengthAttr(e, \"gutter\"),\r\n };\r\n break;\r\n\r\n case \"cols\":\r\n section.columns = parseColumns(e, xml);\r\n break;\r\n\r\n case \"headerReference\":\r\n (section.headerRefs ?? (section.headerRefs = [])).push(parseFooterHeaderReference(e, xml)); \r\n break;\r\n \r\n case \"footerReference\":\r\n (section.footerRefs ?? (section.footerRefs = [])).push(parseFooterHeaderReference(e, xml)); \r\n break;\r\n\r\n case \"titlePg\":\r\n section.titlePage = xml.boolAttr(e, \"val\", true);\r\n break;\r\n\r\n case \"pgBorders\":\r\n section.pageBorders = parseBorders(e, xml);\r\n break;\r\n\r\n case \"pgNumType\":\r\n section.pageNumber = parsePageNumber(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return section;\r\n}\r\n\r\nfunction parseColumns(elem: Element, xml: XmlParser): Columns {\r\n return {\r\n numberOfColumns: xml.intAttr(elem, \"num\"),\r\n space: xml.lengthAttr(elem, \"space\"),\r\n separator: xml.boolAttr(elem, \"sep\"),\r\n equalWidth: xml.boolAttr(elem, \"equalWidth\", true),\r\n columns: xml.elements(elem, \"col\")\r\n .map(e => <Column>{\r\n width: xml.lengthAttr(e, \"w\"),\r\n space: xml.lengthAttr(e, \"space\")\r\n })\r\n };\r\n}\r\n\r\nfunction parsePageNumber(elem: Element, xml: XmlParser): PageNumber {\r\n return {\r\n chapSep: xml.attr(elem, \"chapSep\"),\r\n chapStyle: xml.attr(elem, \"chapStyle\"),\r\n format: xml.attr(elem, \"fmt\"),\r\n start: xml.intAttr(elem, \"start\")\r\n };\r\n}\r\n\r\nfunction parseFooterHeaderReference(elem: Element, xml: XmlParser): FooterHeaderReference {\r\n return {\r\n id: xml.attr(elem, \"id\"),\r\n type: xml.attr(elem, \"type\"),\r\n }\r\n}","import { WordDocument } from './word-document';\r\nimport { DocumentParser } from './document-parser';\r\nimport { HtmlRenderer } from './html-renderer';\r\n\r\nexport interface Options {\r\n inWrapper: boolean;\r\n ignoreWidth: boolean;\r\n ignoreHeight: boolean;\r\n ignoreFonts: boolean;\r\n breakPages: boolean;\r\n debug: boolean;\r\n experimental: boolean;\r\n className: string;\r\n trimXmlDeclaration: boolean;\r\n renderHeaders: boolean;\r\n renderFooters: boolean;\r\n renderFootnotes: boolean;\r\n\trenderEndnotes: boolean;\r\n ignoreLastRenderedPageBreak: boolean;\r\n\tuseBase64URL: boolean;\r\n}\r\n\r\nexport const defaultOptions: Options = {\r\n ignoreHeight: false,\r\n ignoreWidth: false,\r\n ignoreFonts: false,\r\n breakPages: true,\r\n debug: false,\r\n experimental: false,\r\n className: \"docx\",\r\n inWrapper: true,\r\n trimXmlDeclaration: true,\r\n ignoreLastRenderedPageBreak: true,\r\n renderHeaders: true,\r\n renderFooters: true,\r\n renderFootnotes: true,\r\n\trenderEndnotes: true,\r\n\tuseBase64URL: false\r\n}\r\n\r\nexport function praseAsync(data: Blob | any, userOptions: Partial<Options> = null): Promise<any> {\r\n const ops = { ...defaultOptions, ...userOptions };\r\n return WordDocument.load(data, new DocumentParser(ops), ops);\r\n}\r\n\r\nexport function renderAsync(data: Blob | any, bodyContainer: HTMLElement, styleContainer: HTMLElement = null, userOptions: Partial<Options> = null): Promise<any> {\r\n const ops = { ...defaultOptions, ...userOptions };\r\n const renderer = new HtmlRenderer(window.document);\r\n\r\n return WordDocument\r\n .load(data, new DocumentParser(ops), ops)\r\n .then(doc => {\r\n renderer.render(doc, bodyContainer, styleContainer, ops);\r\n return doc;\r\n });\r\n}","import { Part } from \"../common/part\";\r\nimport { FontDeclaration, parseFonts } from \"./fonts\";\r\n\r\nexport class FontTablePart extends Part {\r\n fonts: FontDeclaration[];\r\n\r\n parseXml(root: Element) {\r\n this.fonts = parseFonts(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nconst embedFontTypeMap = {\r\n embedRegular: 'regular',\r\n embedBold: 'bold',\r\n embedItalic: 'italic',\r\n embedBoldItalic: 'boldItalic',\r\n}\r\n\r\nexport interface FontDeclaration {\r\n name: string,\r\n altName: string,\r\n family: string,\r\n embedFontRefs: EmbedFontRef[];\r\n}\r\n\r\nexport interface EmbedFontRef {\r\n id: string;\r\n key: string;\r\n type: 'regular' | 'bold' | 'italic' | 'boldItalic';\r\n}\r\n\r\nexport function parseFonts(root: Element, xml: XmlParser): FontDeclaration[] {\r\n return xml.elements(root).map(el => parseFont(el, xml));\r\n}\r\n\r\nexport function parseFont(elem: Element, xml: XmlParser): FontDeclaration {\r\n let result = <FontDeclaration>{\r\n name: xml.attr(elem, \"name\"),\r\n embedFontRefs: []\r\n };\r\n\r\n for (let el of xml.elements(elem)) {\r\n switch (el.localName) {\r\n case \"family\":\r\n result.family = xml.attr(el, \"val\");\r\n break;\r\n\r\n case \"altName\":\r\n result.altName = xml.attr(el, \"val\");\r\n break;\r\n\r\n case \"embedRegular\":\r\n case \"embedBold\":\r\n case \"embedItalic\":\r\n case \"embedBoldItalic\":\r\n result.embedFontRefs.push(parseEmbedFontRef(el, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseEmbedFontRef(elem: Element, xml: XmlParser): EmbedFontRef {\r\n return { \r\n id: xml.attr(elem, \"id\"), \r\n key: xml.attr(elem, \"fontKey\"),\r\n type: embedFontTypeMap[elem.localName]\r\n };\r\n}","import { DomType, OpenXmlElement } from \"../document/dom\";\r\n\r\nexport class WmlHeader implements OpenXmlElement {\r\n type: DomType = DomType.Header;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport class WmlFooter implements OpenXmlElement {\r\n type: DomType = DomType.Footer;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { OpenXmlElement } from \"../document/dom\";\r\nimport { WmlHeader, WmlFooter } from \"./elements\";\r\n\r\nexport abstract class BaseHeaderFooterPart<T extends OpenXmlElement = OpenXmlElement> extends Part {\r\n rootElement: T;\r\n\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.rootElement = this.createRootElement();\r\n this.rootElement.children = this._documentParser.parseBodyElements(root);\r\n }\r\n\r\n protected abstract createRootElement(): T;\r\n}\r\n\r\nexport class HeaderPart extends BaseHeaderFooterPart<WmlHeader> {\r\n protected createRootElement(): WmlHeader {\r\n return new WmlHeader();\r\n }\r\n}\r\n\r\nexport class FooterPart extends BaseHeaderFooterPart<WmlFooter> {\r\n protected createRootElement(): WmlFooter {\r\n return new WmlFooter();\r\n }\r\n}","import { WordDocument } from './word-document';\r\nimport {\r\n DomType, WmlTable, IDomNumbering,\r\n WmlHyperlink, IDomImage, OpenXmlElement, WmlTableColumn, WmlTableCell, WmlText, WmlSymbol, WmlBreak, WmlNoteReference\r\n} from './document/dom';\r\nimport { Length, CommonProperties } from './document/common';\r\nimport { Options } from './docx-preview';\r\nimport { DocumentElement } from './document/document';\r\nimport { WmlParagraph } from './document/paragraph';\r\nimport { escapeClassName, keyBy, mergeDeep } from './utils';\r\nimport { computePixelToPoint, updateTabStop } from './javascript';\r\nimport { FontTablePart } from './font-table/font-table';\r\nimport { FooterHeaderReference, SectionProperties } from './document/section';\r\nimport { WmlRun, RunProperties } from './document/run';\r\nimport { WmlBookmarkStart } from './document/bookmarks';\r\nimport { IDomStyle } from './document/style';\r\nimport { WmlBaseNote, WmlFootnote } from './notes/elements';\r\nimport { ThemePart } from './theme/theme-part';\r\nimport { BaseHeaderFooterPart } from './header-footer/parts';\r\nimport { Part } from './common/part';\r\n\r\nexport class HtmlRenderer {\r\n\r\n className: string = \"docx\";\r\n document: WordDocument;\r\n options: Options;\r\n styleMap: Record<string, IDomStyle> = {};\r\n\tcurrentPart: Part = null;\r\n\r\n footnoteMap: Record<string, WmlFootnote> = {};\r\n\tendnoteMap: Record<string, WmlFootnote> = {};\r\n currentFootnoteIds: string[];\r\n currentEndnoteIds: string[] = [];\r\n usedHederFooterParts: any[] = [];\r\n\r\n\tdefaultTabSize: Length;\t\r\n\tcurrentTabs: any[] = [];\r\n\ttabsTimeout: any = 0;\r\n\r\n constructor(public htmlDocument: Document) {\r\n }\r\n\r\n render(document: WordDocument, bodyContainer: HTMLElement, styleContainer: HTMLElement = null, options: Options) {\r\n this.document = document;\r\n this.options = options;\r\n this.className = options.className;\r\n this.styleMap = null;\r\n\r\n styleContainer = styleContainer || bodyContainer;\r\n\r\n removeAllElements(styleContainer);\r\n removeAllElements(bodyContainer);\r\n\r\n appendComment(styleContainer, \"docxjs library predefined styles\");\r\n styleContainer.appendChild(this.renderDefaultStyle());\r\n\r\n if (document.themePart) {\r\n appendComment(styleContainer, \"docxjs document theme values\");\r\n this.renderTheme(document.themePart, styleContainer);\r\n }\r\n\r\n if (document.stylesPart != null) {\r\n this.styleMap = this.processStyles(document.stylesPart.styles);\r\n\r\n appendComment(styleContainer, \"docxjs document styles\");\r\n styleContainer.appendChild(this.renderStyles(document.stylesPart.styles));\r\n }\r\n\r\n if (document.numberingPart) {\r\n this.prodessNumberings(document.numberingPart.domNumberings);\r\n\r\n appendComment(styleContainer, \"docxjs document numbering styles\");\r\n styleContainer.appendChild(this.renderNumbering(document.numberingPart.domNumberings, styleContainer));\r\n //styleContainer.appendChild(this.renderNumbering2(document.numberingPart, styleContainer));\r\n }\r\n\r\n if (document.footnotesPart) {\r\n this.footnoteMap = keyBy(document.footnotesPart.notes, x => x.id);\r\n }\r\n\r\n\t\tif (document.endnotesPart) {\r\n this.endnoteMap = keyBy(document.endnotesPart.notes, x => x.id);\r\n }\r\n\r\n\t\tif (document.settingsPart) {\r\n\t\t\tthis.defaultTabSize = document.settingsPart.settings?.defaultTabStop;\r\n\t\t}\r\n\r\n if (!options.ignoreFonts && document.fontTablePart)\r\n this.renderFontTable(document.fontTablePart, styleContainer);\r\n\r\n var sectionElements = this.renderSections(document.documentPart.body);\r\n\r\n if (this.options.inWrapper) {\r\n bodyContainer.appendChild(this.renderWrapper(sectionElements));\r\n } else {\r\n appendChildren(bodyContainer, sectionElements);\r\n }\r\n\r\n\t\tthis.refreshTabStops();\r\n }\r\n\r\n renderTheme(themePart: ThemePart, styleContainer: HTMLElement) {\r\n const variables = {};\r\n const fontScheme = themePart.theme?.fontScheme;\r\n\r\n if (fontScheme) {\r\n if (fontScheme.majorFont) {\r\n variables['--docx-majorHAnsi-font'] = fontScheme.majorFont.latinTypeface;\r\n }\r\n\r\n if (fontScheme.minorFont) {\r\n variables['--docx-minorHAnsi-font'] = fontScheme.minorFont.latinTypeface;\r\n }\r\n }\r\n\r\n const colorScheme = themePart.theme?.colorScheme;\r\n\r\n if (colorScheme) {\r\n for (let [k, v] of Object.entries(colorScheme.colors)) {\r\n variables[`--docx-${k}-color`] = `#${v}`;\r\n }\r\n }\r\n\r\n const cssText = this.styleToString(`.${this.className}`, variables);\r\n styleContainer.appendChild(createStyleElement(cssText));\r\n }\r\n\r\n renderFontTable(fontsPart: FontTablePart, styleContainer: HTMLElement) {\r\n for (let f of fontsPart.fonts) {\r\n for (let ref of f.embedFontRefs) {\r\n this.document.loadFont(ref.id, ref.key).then(fontData => {\r\n const cssValues = {\r\n 'font-family': f.name,\r\n 'src': `url(${fontData})`\r\n };\r\n\r\n if (ref.type == \"bold\" || ref.type == \"boldItalic\") {\r\n cssValues['font-weight'] = 'bold';\r\n }\r\n\r\n if (ref.type == \"italic\" || ref.type == \"boldItalic\") {\r\n cssValues['font-style'] = 'italic';\r\n }\r\n\r\n appendComment(styleContainer, `docxjs ${f.name} font`);\r\n const cssText = this.styleToString(\"@font-face\", cssValues);\r\n styleContainer.appendChild(createStyleElement(cssText));\r\n\t\t\t\t\tthis.refreshTabStops();\r\n });\r\n }\r\n }\r\n }\r\n\r\n processStyleName(className: string): string {\r\n return className ? `${this.className}_${escapeClassName(className)}`: this.className;\r\n }\r\n\r\n processStyles(styles: IDomStyle[]) {\r\n const stylesMap = keyBy(styles.filter(x => x.id != null), x => x.id);\r\n\r\n for (const style of styles.filter(x => x.basedOn)) {\r\n var baseStyle = stylesMap[style.basedOn];\r\n\r\n if (baseStyle) {\r\n style.paragraphProps = mergeDeep(style.paragraphProps, baseStyle.paragraphProps);\r\n style.runProps = mergeDeep(style.runProps, baseStyle.runProps);\r\n\r\n for (const baseValues of baseStyle.styles) {\r\n const styleValues = style.styles.find(x => x.target == baseValues.target);\r\n\r\n\t\t\t\t\tif (styleValues) {\r\n this.copyStyleProperties(baseValues.values, styleValues.values);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstyle.styles.push({ target: baseValues.target, values: { ...baseValues.values } });\r\n }\r\n }\r\n }\r\n else if (this.options.debug)\r\n console.warn(`Can't find base style ${style.basedOn}`);\r\n }\r\n\r\n for (let style of styles) {\r\n style.cssName = this.processStyleName(style.id);\r\n }\r\n\r\n return stylesMap;\r\n }\r\n\r\n prodessNumberings(numberings: IDomNumbering[]) {\r\n for (let num of numberings.filter(n => n.pStyleName)) {\r\n const style = this.findStyle(num.pStyleName);\r\n\r\n if (style?.paragraphProps?.numbering) {\r\n style.paragraphProps.numbering.level = num.level;\r\n }\r\n }\r\n }\r\n\r\n processElement(element: OpenXmlElement) {\r\n if (element.children) {\r\n for (var e of element.children) {\r\n e.parent = element;\r\n\r\n if (e.type == DomType.Table) {\r\n this.processTable(e);\r\n }\r\n else {\r\n this.processElement(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n processTable(table: WmlTable) {\r\n for (var r of table.children) {\r\n for (var c of r.children) {\r\n c.cssStyle = this.copyStyleProperties(table.cellStyle, c.cssStyle, [\r\n \"border-left\", \"border-right\", \"border-top\", \"border-bottom\",\r\n \"padding-left\", \"padding-right\", \"padding-top\", \"padding-bottom\"\r\n ]);\r\n\r\n this.processElement(c);\r\n }\r\n }\r\n }\r\n\r\n copyStyleProperties(input: Record<string, string>, output: Record<string, string>, attrs: string[] = null): Record<string, string> {\r\n if (!input)\r\n return output;\r\n\r\n if (output == null) output = {};\r\n if (attrs == null) attrs = Object.getOwnPropertyNames(input);\r\n\r\n for (var key of attrs) {\r\n if (input.hasOwnProperty(key) && !output.hasOwnProperty(key))\r\n output[key] = input[key];\r\n }\r\n\r\n return output;\r\n }\r\n\r\n createSection(className: string, props: SectionProperties) {\r\n var elem = this.createElement(\"section\", { className });\r\n\r\n if (props) {\r\n if (props.pageMargins) {\r\n elem.style.paddingLeft = props.pageMargins.left;\r\n elem.style.paddingRight = props.pageMargins.right;\r\n elem.style.paddingTop = props.pageMargins.top;\r\n elem.style.paddingBottom = props.pageMargins.bottom;\r\n }\r\n\r\n if (props.pageSize) {\r\n if (!this.options.ignoreWidth)\r\n elem.style.width = props.pageSize.width;\r\n if (!this.options.ignoreHeight)\r\n elem.style.minHeight = props.pageSize.height;\r\n }\r\n\r\n if (props.columns && props.columns.numberOfColumns) {\r\n elem.style.columnCount = `${props.columns.numberOfColumns}`;\r\n elem.style.columnGap = props.columns.space;\r\n\r\n if (props.columns.separator) {\r\n elem.style.columnRule = \"1px solid black\";\r\n }\r\n }\r\n }\r\n\r\n return elem;\r\n }\r\n\r\n renderSections(document: DocumentElement): HTMLElement[] {\r\n const result = [];\r\n\r\n this.processElement(document);\r\n\t\tconst sections = this.splitBySection(document.children);\r\n\t\tlet prevProps = null;\r\n\r\n for (let i = 0, l = sections.length; i < l; i++) {\r\n this.currentFootnoteIds = [];\r\n\r\n\t\t\tconst section = sections[i];\r\n const props = section.sectProps || document.props;\r\n const sectionElement = this.createSection(this.className, props);\r\n this.renderStyleValues(document.cssStyle, sectionElement);\r\n\r\n this.options.renderHeaders && this.renderHeaderFooter(props.headerRefs, props, \r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n var contentElement = this.createElement(\"article\");\r\n this.renderElements(section.elements, contentElement);\r\n sectionElement.appendChild(contentElement);\r\n\r\n if (this.options.renderFootnotes) {\r\n this.renderNotes(this.currentFootnoteIds, this.footnoteMap, sectionElement);\r\n }\r\n\r\n\t\t\tif (this.options.renderEndnotes && i == l - 1) {\r\n this.renderNotes(this.currentEndnoteIds, this.endnoteMap, sectionElement);\r\n\t\t\t}\r\n\r\n this.options.renderFooters && this.renderHeaderFooter(props.footerRefs, props, \r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n result.push(sectionElement);\r\n\t\t\tprevProps = props;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n renderHeaderFooter(refs: FooterHeaderReference[], props: SectionProperties, page: number, firstOfSection: boolean, into: HTMLElement) {\r\n if (!refs) return;\r\n\r\n var ref = (props.titlePage && firstOfSection ? refs.find(x => x.type == \"first\") : null)\r\n ?? (page % 2 == 1 ? refs.find(x => x.type == \"even\") : null)\r\n ?? refs.find(x => x.type == \"default\");\r\n\r\n var part = ref && this.document.findPartByRelId(ref.id, this.document.documentPart) as BaseHeaderFooterPart;\r\n\r\n if (part) {\r\n\t\t\tthis.currentPart = part;\r\n if (!this.usedHederFooterParts.includes(part.path)) {\r\n this.processElement(part.rootElement);\r\n this.usedHederFooterParts.push(part.path);\r\n }\r\n this.renderElements([part.rootElement], into);\r\n\t\t\tthis.currentPart = null;\r\n }\r\n }\r\n\r\n isPageBreakElement(elem: OpenXmlElement): boolean {\r\n if (elem.type != DomType.Break)\r\n return false;\r\n\r\n if ((elem as WmlBreak).break == \"lastRenderedPageBreak\")\r\n return !this.options.ignoreLastRenderedPageBreak;\r\n\r\n return (elem as WmlBreak).break == \"page\";\r\n }\r\n\r\n splitBySection(elements: OpenXmlElement[]): { sectProps: SectionProperties, elements: OpenXmlElement[] }[] {\r\n var current = { sectProps: null, elements: [] };\r\n var result = [current];\r\n\r\n for (let elem of elements) {\r\n if (elem.type == DomType.Paragraph) {\r\n const s = this.findStyle((elem as WmlParagraph).styleName);\r\n\r\n if (s?.paragraphProps?.pageBreakBefore) {\r\n current.sectProps = sectProps;\r\n current = { sectProps: null, elements: [] };\r\n result.push(current);\r\n }\r\n }\r\n\r\n current.elements.push(elem);\r\n\r\n if (elem.type == DomType.Paragraph) {\r\n const p = elem as WmlParagraph;\r\n\r\n var sectProps = p.sectionProps;\r\n var pBreakIndex = -1;\r\n var rBreakIndex = -1;\r\n\r\n if (this.options.breakPages && p.children) {\r\n pBreakIndex = p.children.findIndex(r => {\r\n rBreakIndex = r.children?.findIndex(this.isPageBreakElement.bind(this)) ?? -1;\r\n return rBreakIndex != -1;\r\n });\r\n }\r\n\r\n if (sectProps || pBreakIndex != -1) {\r\n current.sectProps = sectProps;\r\n current = { sectProps: null, elements: [] };\r\n result.push(current);\r\n }\r\n\r\n if (pBreakIndex != -1) {\r\n let breakRun = p.children[pBreakIndex];\r\n let splitRun = rBreakIndex < breakRun.children.length - 1;\r\n\r\n if (pBreakIndex < p.children.length - 1 || splitRun) {\r\n var children = elem.children;\r\n var newParagraph = { ...elem, children: children.slice(pBreakIndex) };\r\n elem.children = children.slice(0, pBreakIndex);\r\n current.elements.push(newParagraph);\r\n\r\n if (splitRun) {\r\n let runChildren = breakRun.children;\r\n let newRun = { ...breakRun, children: runChildren.slice(0, rBreakIndex) };\r\n elem.children.push(newRun);\r\n breakRun.children = runChildren.slice(rBreakIndex);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let currentSectProps = null;\r\n\r\n for (let i = result.length - 1; i >= 0; i--) {\r\n if (result[i].sectProps == null) {\r\n result[i].sectProps = currentSectProps;\r\n } else {\r\n currentSectProps = result[i].sectProps\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n renderWrapper(children: HTMLElement[]) {\r\n return this.createElement(\"div\", { className: `${this.className}-wrapper` }, children);\r\n }\r\n\r\n renderDefaultStyle() {\r\n var c = this.className;\r\n var styleText = `\r\n.${c}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } \r\n.${c}-wrapper>section.${c} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; }\r\n.${c} { color: black; }\r\nsection.${c} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\r\nsection.${c}>article { margin-bottom: auto; }\r\n.${c} table { border-collapse: collapse; }\r\n.${c} table td, .${c} table th { vertical-align: top; }\r\n.${c} p { margin: 0pt; min-height: 1em; }\r\n.${c} span { white-space: pre-wrap; overflow-wrap: break-word; }\r\n.${c} a { color: inherit; text-decoration: inherit; }\r\n`;\r\n\r\n return createStyleElement(styleText);\r\n }\r\n\r\n // renderNumbering2(numberingPart: NumberingPartProperties, container: HTMLElement): HTMLElement {\r\n // let css = \"\";\r\n // const numberingMap = keyBy(numberingPart.abstractNumberings, x => x.id);\r\n // const bulletMap = keyBy(numberingPart.bulletPictures, x => x.id);\r\n // const topCounters = [];\r\n\r\n // for(let num of numberingPart.numberings) {\r\n // const absNum = numberingMap[num.abstractId];\r\n\r\n // for(let lvl of absNum.levels) {\r\n // const className = this.numberingClass(num.id, lvl.level);\r\n // let listStyleType = \"none\";\r\n\r\n // if(lvl.text && lvl.format == 'decimal') {\r\n // const counter = this.numberingCounter(num.id, lvl.level);\r\n\r\n // if (lvl.level > 0) {\r\n // css += this.styleToString(`p.${this.numberingClass(num.id, lvl.level - 1)}`, {\r\n // \"counter-reset\": counter\r\n // });\r\n // } else {\r\n // topCounters.push(counter);\r\n // }\r\n\r\n // css += this.styleToString(`p.${className}:before`, {\r\n // \"content\": this.levelTextToContent(lvl.text, num.id),\r\n // \"counter-increment\": counter\r\n // });\r\n // } else if(lvl.bulletPictureId) {\r\n // let pict = bulletMap[lvl.bulletPictureId];\r\n // let variable = `--${this.className}-${pict.referenceId}`.toLowerCase();\r\n\r\n // css += this.styleToString(`p.${className}:before`, {\r\n // \"content\": \"' '\",\r\n // \"display\": \"inline-block\",\r\n // \"background\": `var(${variable})`\r\n // }, pict.style);\r\n\r\n // this.document.loadNumberingImage(pict.referenceId).then(data => {\r\n // var text = `.${this.className}-wrapper { ${variable}: url(${data}) }`;\r\n // container.appendChild(createStyleElement(text));\r\n // });\r\n // } else {\r\n // listStyleType = this.numFormatToCssValue(lvl.format);\r\n // }\r\n\r\n // css += this.styleToString(`p.${className}`, {\r\n // \"display\": \"list-item\",\r\n // \"list-style-position\": \"inside\",\r\n // \"list-style-type\": listStyleType,\r\n // //TODO\r\n // //...num.style\r\n // });\r\n // }\r\n // }\r\n\r\n // if (topCounters.length > 0) {\r\n // css += this.styleToString(`.${this.className}-wrapper`, {\r\n // \"counter-reset\": topCounters.join(\" \")\r\n // });\r\n // }\r\n\r\n // return createStyleElement(css);\r\n // }\r\n\r\n renderNumbering(numberings: IDomNumbering[], styleContainer: HTMLElement) {\r\n var styleText = \"\";\r\n var rootCounters = [];\r\n\r\n for (var num of numberings) {\r\n var selector = `p.${this.numberingClass(num.id, num.level)}`;\r\n var listStyleType = \"none\";\r\n\r\n if (num.bullet) {\r\n let valiable = `--${this.className}-${num.bullet.src}`.toLowerCase();\r\n\r\n styleText += this.styleToString(`${selector}:before`, {\r\n \"content\": \"' '\",\r\n \"display\": \"inline-block\",\r\n \"background\": `var(${valiable})`\r\n }, num.bullet.style);\r\n\r\n this.document.loadNumberingImage(num.bullet.src).then(data => {\r\n var text = `.${this.className}-wrapper { ${valiable}: url(${data}) }`;\r\n styleContainer.appendChild(createStyleElement(text));\r\n });\r\n }\r\n else if (num.levelText) {\r\n let counter = this.numberingCounter(num.id, num.level);\r\n\r\n if (num.level > 0) {\r\n styleText += this.styleToString(`p.${this.numberingClass(num.id, num.level - 1)}`, {\r\n \"counter-reset\": counter\r\n });\r\n }\r\n else {\r\n rootCounters.push(counter);\r\n }\r\n\r\n styleText += this.styleToString(`${selector}:before`, {\r\n \"content\": this.levelTextToContent(num.levelText, num.suff, num.id, this.numFormatToCssValue(num.format)),\r\n \"counter-increment\": counter,\r\n ...num.rStyle,\r\n });\r\n }\r\n else {\r\n listStyleType = this.numFormatToCssValue(num.format);\r\n }\r\n\r\n styleText += this.styleToString(selector, {\r\n \"display\": \"list-item\",\r\n \"list-style-position\": \"inside\",\r\n \"list-style-type\": listStyleType,\r\n ...num.pStyle\r\n });\r\n }\r\n\r\n if (rootCounters.length > 0) {\r\n styleText += this.styleToString(`.${this.className}-wrapper`, {\r\n \"counter-reset\": rootCounters.join(\" \")\r\n });\r\n }\r\n\r\n return createStyleElement(styleText);\r\n }\r\n\r\n renderStyles(styles: IDomStyle[]): HTMLElement {\r\n var styleText = \"\";\r\n const stylesMap = this.styleMap;\r\n const defautStyles = keyBy(styles.filter(s => s.isDefault), s => s.target);\r\n\r\n for (const style of styles) {\r\n var subStyles = style.styles;\r\n\r\n if (style.linked) {\r\n var linkedStyle = style.linked && stylesMap[style.linked];\r\n\r\n if (linkedStyle)\r\n subStyles = subStyles.concat(linkedStyle.styles);\r\n else if (this.options.debug)\r\n console.warn(`Can't find linked style ${style.linked}`);\r\n }\r\n\r\n for (const subStyle of subStyles) {\r\n var selector = \"\";\r\n\r\n if (style.target == subStyle.target)\r\n selector += `${style.target}.${style.cssName}`;\r\n else if (style.target)\r\n selector += `${style.target}.${style.cssName} ${subStyle.target}`;\r\n else\r\n selector += `.${style.cssName} ${subStyle.target}`;\r\n\r\n if (defautStyles[style.target] == style)\r\n selector = `.${this.className} ${style.target}, ` + selector;\r\n\r\n styleText += this.styleToString(selector, subStyle.values);\r\n }\r\n }\r\n\r\n return createStyleElement(styleText);\r\n }\r\n\r\n renderNotes(noteIds: string[], notesMap: Record<string, WmlBaseNote>, into: HTMLElement) {\r\n var notes = noteIds.map(id => notesMap[id]).filter(x => x);\r\n\r\n if (notes.length > 0) {\r\n var result = this.createElement(\"ol\", null, this.renderElements(notes));\r\n into.appendChild(result);\r\n }\r\n }\r\n\r\n renderElement(elem: OpenXmlElement): Node {\r\n switch (elem.type) {\r\n case DomType.Paragraph:\r\n return this.renderParagraph(elem as WmlParagraph);\r\n\r\n case DomType.BookmarkStart:\r\n return this.renderBookmarkStart(elem as WmlBookmarkStart);\r\n\r\n case DomType.BookmarkEnd:\r\n return null; //ignore bookmark end\r\n\r\n case DomType.Run:\r\n return this.renderRun(elem as WmlRun);\r\n\r\n case DomType.Table:\r\n return this.renderTable(elem);\r\n\r\n case DomType.Row:\r\n return this.renderTableRow(elem);\r\n\r\n case DomType.Cell:\r\n return this.renderTableCell(elem);\r\n\r\n case DomType.Hyperlink:\r\n return this.renderHyperlink(elem);\r\n\r\n case DomType.Drawing:\r\n return this.renderDrawing(elem);\r\n\r\n case DomType.Image:\r\n return this.renderImage(elem as IDomImage);\r\n\r\n case DomType.Text:\r\n return this.renderText(elem as WmlText);\r\n\r\n case DomType.Tab:\r\n return this.renderTab(elem);\r\n\r\n case DomType.Symbol:\r\n return this.renderSymbol(elem as WmlSymbol);\r\n\r\n case DomType.Break:\r\n return this.renderBreak(elem as WmlBreak);\r\n\r\n case DomType.Footer:\r\n return this.renderContainer(elem, \"footer\");\r\n\r\n case DomType.Header:\r\n return this.renderContainer(elem, \"header\");\r\n\r\n case DomType.Footnote:\r\n\t\t\tcase DomType.Endnote:\r\n\t\t\t\treturn this.renderContainer(elem, \"li\");\r\n\r\n case DomType.FootnoteReference:\r\n return this.renderFootnoteReference(elem as WmlNoteReference);\r\n\r\n\t\t\tcase DomType.EndnoteReference:\r\n\t\t\t\treturn this.renderEndnoteReference(elem as WmlNoteReference);\r\n\t\r\n\t\t\tcase DomType.NoBreakHyphen:\r\n return this.createElement(\"wbr\");\r\n\t\t}\r\n\r\n return null;\r\n }\r\n\r\n renderChildren(elem: OpenXmlElement, into?: HTMLElement): Node[] {\r\n return this.renderElements(elem.children, into);\r\n }\r\n\r\n renderElements(elems: OpenXmlElement[], into?: HTMLElement): Node[] {\r\n if (elems == null)\r\n return null;\r\n\r\n var result = elems.map(e => this.renderElement(e)).filter(e => e != null);\r\n\r\n if (into)\r\n\t\t\tappendChildren(into, result);\r\n\r\n return result;\r\n }\r\n\r\n renderContainer(elem: OpenXmlElement, tagName: keyof HTMLElementTagNameMap) {\r\n return this.createElement(tagName, null, this.renderChildren(elem));\r\n }\r\n\r\n renderParagraph(elem: WmlParagraph) {\r\n var result = this.createElement(\"p\");\r\n\r\n const style = this.findStyle(elem.styleName);\r\n\t\telem.tabs ??= style?.paragraphProps?.tabs; //TODO\r\n\r\n this.renderClass(elem, result);\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n this.renderCommonProperties(result.style, elem);\r\n\r\n const numbering = elem.numbering ?? style?.paragraphProps?.numbering;\r\n\r\n if (numbering) {\r\n result.classList.add(this.numberingClass(numbering.id, numbering.level));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n renderRunProperties(style: any, props: RunProperties) {\r\n this.renderCommonProperties(style, props);\r\n }\r\n\r\n renderCommonProperties(style: any, props: CommonProperties) {\r\n if (props == null)\r\n return;\r\n\r\n if (props.color) {\r\n style[\"color\"] = props.color;\r\n }\r\n\r\n if (props.fontSize) {\r\n style[\"font-size\"] = props.fontSize;\r\n }\r\n }\r\n\r\n renderHyperlink(elem: WmlHyperlink) {\r\n var result = this.createElement(\"a\");\r\n\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n if (elem.href)\r\n result.href = elem.href\r\n\r\n return result;\r\n }\r\n\r\n renderDrawing(elem: OpenXmlElement) {\r\n var result = this.createElement(\"div\");\r\n\r\n result.style.display = \"inline-block\";\r\n result.style.position = \"relative\";\r\n result.style.textIndent = \"0px\";\r\n\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n return result;\r\n }\r\n\r\n renderImage(elem: IDomImage) {\r\n let result = this.createElement(\"img\");\r\n\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n if (this.document) {\r\n this.document.loadDocumentImage(elem.src, this.currentPart).then(x => {\r\n result.src = x;\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n renderText(elem: WmlText) {\r\n return this.htmlDocument.createTextNode(elem.text);\r\n }\r\n\r\n renderBreak(elem: WmlBreak) {\r\n if (elem.break == \"textWrapping\") {\r\n return this.createElement(\"br\");\r\n }\r\n\r\n return null;\r\n }\r\n\r\n renderSymbol(elem: WmlSymbol) {\r\n var span = this.createElement(\"span\");\r\n span.style.fontFamily = elem.font;\r\n span.innerHTML = `&#x${elem.char};`\r\n return span;\r\n }\r\n\r\n renderFootnoteReference(elem: WmlNoteReference) {\r\n var result = this.createElement(\"sup\");\r\n this.currentFootnoteIds.push(elem.id);\r\n result.textContent = `${this.currentFootnoteIds.length}`;\r\n return result;\r\n }\r\n\r\n\trenderEndnoteReference(elem: WmlNoteReference) {\r\n var result = this.createElement(\"sup\");\r\n this.currentEndnoteIds.push(elem.id);\r\n result.textContent = `${this.currentEndnoteIds.length}`;\r\n return result;\r\n }\r\n\r\n renderTab(elem: OpenXmlElement) {\r\n var tabSpan = this.createElement(\"span\");\r\n\r\n tabSpan.innerHTML = \" \";//\" \";\r\n\r\n if (this.options.experimental) {\r\n\t\t\ttabSpan.className = this.tabStopClass();\r\n\t\t\tvar stops = findParent<WmlParagraph>(elem, DomType.Paragraph)?.tabs;\r\n\t\t\tthis.currentTabs.push({ stops, span: tabSpan });\r\n }\r\n\r\n return tabSpan;\r\n }\r\n\r\n renderBookmarkStart(elem: WmlBookmarkStart): HTMLElement {\r\n var result = this.createElement(\"span\");\r\n result.id = elem.name;\r\n return result;\r\n }\r\n\r\n renderRun(elem: WmlRun) {\r\n\t\tif (elem.fieldRun)\r\n\t\t\treturn null;\r\n\r\n const result = this.createElement(\"span\");\r\n\r\n if (elem.id)\r\n result.id = elem.id;\r\n\r\n this.renderClass(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tif (elem.verticalAlign) {\r\n\t\t\tconst wrapper = this.createElement(elem.verticalAlign as any);\r\n\t\t\tthis.renderChildren(elem, wrapper);\r\n\t\t\tresult.appendChild(wrapper);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.renderChildren(elem, result);\r\n\t\t}\r\n\r\n return result;\r\n }\r\n\r\n renderTable(elem: WmlTable) {\r\n let result = this.createElement(\"table\");\r\n\r\n if (elem.columns)\r\n result.appendChild(this.renderTableColumns(elem.columns));\r\n\r\n this.renderClass(elem, result);\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n return result;\r\n }\r\n\r\n renderTableColumns(columns: WmlTableColumn[]) {\r\n let result = this.createElement(\"colgroup\");\r\n\r\n for (let col of columns) {\r\n let colElem = this.createElement(\"col\");\r\n\r\n if (col.width)\r\n colElem.style.width = col.width;\r\n\r\n result.appendChild(colElem);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n renderTableRow(elem: OpenXmlElement) {\r\n let result = this.createElement(\"tr\");\r\n\r\n this.renderClass(elem, result);\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n return result;\r\n }\r\n\r\n renderTableCell(elem: WmlTableCell) {\r\n let result = this.createElement(\"td\");\r\n\r\n this.renderClass(elem, result);\r\n this.renderChildren(elem, result);\r\n this.renderStyleValues(elem.cssStyle, result);\r\n\r\n if (elem.span) result.colSpan = elem.span;\r\n\r\n return result;\r\n }\r\n\r\n renderStyleValues(style: Record<string, string>, ouput: HTMLElement) {\r\n\t\tObject.assign(ouput.style, style);\r\n }\r\n\r\n\trenderClass(input: OpenXmlElement, ouput: HTMLElement) {\r\n\t\tif (input.className) \r\n\t\t\touput.className = input.className;\r\n\t\t\r\n\t\tif (input.styleName)\r\n\t\t\touput.classList.add(this.processStyleName(input.styleName));\r\n\t}\r\n\r\n\tfindStyle(styleName: string) {\r\n\t\treturn styleName && this.styleMap?.[styleName];\r\n\t}\r\n\r\n numberingClass(id: string, lvl: number) {\r\n return `${this.className}-num-${id}-${lvl}`;\r\n }\r\n\r\n\ttabStopClass() {\r\n return `${this.className}-tab-stop`;\r\n\t}\r\n\r\n styleToString(selectors: string, values: Record<string, string>, cssText: string = null) {\r\n let result = `${selectors} {\\r\\n`;\r\n\r\n for (const key in values) {\r\n result += ` ${key}: ${values[key]};\\r\\n`;\r\n }\r\n\r\n if (cssText)\r\n result += cssText;\r\n\r\n return result + \"}\\r\\n\";\r\n }\r\n\r\n numberingCounter(id: string, lvl: number) {\r\n return `${this.className}-num-${id}-${lvl}`;\r\n }\r\n\r\n levelTextToContent(text: string, suff: string, id: string, numformat: string) {\r\n const suffMap = {\r\n \"tab\": \"\\\\9\",\r\n \"space\": \"\\\\a0\",\r\n };\r\n\r\n var result = text.replace(/%\\d*/g, s => {\r\n let lvl = parseInt(s.substring(1), 10) - 1;\r\n return `\"counter(${this.numberingCounter(id, lvl)}, ${numformat})\"`;\r\n });\r\n\r\n return `\"${result}${suffMap[suff] ?? \"\"}\"`;\r\n }\r\n\r\n numFormatToCssValue(format: string) {\r\n var mapping = {\r\n \"none\": \"none\",\r\n \"bullet\": \"disc\",\r\n \"decimal\": \"decimal\",\r\n \"lowerLetter\": \"lower-alpha\",\r\n \"upperLetter\": \"upper-alpha\",\r\n \"lowerRoman\": \"lower-roman\",\r\n \"upperRoman\": \"upper-roman\",\r\n };\r\n\r\n return mapping[format] || format;\r\n }\r\n\r\n\trefreshTabStops() {\r\n\t\tif (!this.options.experimental) \r\n\t\t\treturn;\r\n\r\n\t\tclearTimeout(this.tabsTimeout);\r\n\r\n\t\tthis.tabsTimeout = setTimeout(() => {\r\n\t\t\tconst pixelToPoint = computePixelToPoint();\r\n\r\n\t\t\tfor (let tab of this.currentTabs) {\r\n\t\t\t\tupdateTabStop(tab.span, tab.stops, this.defaultTabSize, pixelToPoint);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\r\n createElement = createElement;\r\n}\r\n\r\nfunction createElement<T extends keyof HTMLElementTagNameMap>(\r\n tagName: T,\r\n props: Partial<Record<keyof HTMLElementTagNameMap[T], any>> = undefined,\r\n children: Node[] = undefined\r\n): HTMLElementTagNameMap[T] {\r\n var result = Object.assign(document.createElement(tagName), props);\r\n children && appendChildren(result, children);\r\n return result;\r\n}\r\n\r\nfunction removeAllElements(elem: HTMLElement) {\r\n elem.innerHTML = '';\r\n}\r\n\r\nfunction appendChildren(elem: HTMLElement, children: Node[]) {\r\n children.forEach(c => elem.appendChild(c));\r\n}\r\n\r\nfunction createStyleElement(cssText: string) {\r\n return createElement(\"style\", { innerHTML: cssText });\r\n}\r\n\r\nfunction appendComment(elem: HTMLElement, comment: string) {\r\n elem.appendChild(document.createComment(comment));\r\n}\r\n\r\nfunction findParent<T extends OpenXmlElement>(elem: OpenXmlElement, type: DomType): T {\r\n var parent = elem.parent;\r\n\r\n while (parent != null && parent.type != type)\r\n parent = parent.parent;\r\n\r\n return <T>parent;\r\n}","import { Length } from \"./document/common\";\r\nimport { ParagraphTab } from \"./document/paragraph\";\r\n\r\ninterface TabStop {\r\n\tpos: number;\r\n\tleader: string;\r\n\tstyle: string;\r\n}\r\n\r\nconst defaultTab: TabStop = { pos: 0, leader: \"none\", style: \"left\" };\r\nconst maxTabs = 50;\r\n\r\nexport function computePixelToPoint(container: HTMLElement = document.body) {\r\n\tconst temp = document.createElement(\"div\");\r\n\ttemp.style.width = '100pt';\r\n\t\r\n\tcontainer.appendChild(temp);\r\n\tconst result = 100 / temp.offsetWidth;\r\n\tcontainer.removeChild(temp);\r\n\r\n\treturn result\r\n}\r\n\r\nexport function updateTabStop(elem: HTMLElement, tabs: ParagraphTab[], defaultTabSize: Length, pixelToPoint: number = 72 / 96) {\r\n const p = elem.closest(\"p\");\r\n\r\n const ebb = elem.getBoundingClientRect();\r\n const pbb = p.getBoundingClientRect();\r\n const pcs = getComputedStyle(p);\r\n\r\n\tconst tabStops = tabs?.length > 0 ? tabs.map(t => ({\r\n\t\tpos: lengthToPoint(t.position),\r\n\t\tleader: t.leader,\r\n\t\tstyle: t.style\r\n\t})).sort((a, b) => a.pos - b.pos) : [defaultTab];\r\n\r\n\tconst lastTab = tabStops[tabStops.length - 1];\r\n\tconst pWidthPt = pbb.width * pixelToPoint;\r\n\tconst size = lengthToPoint(defaultTabSize);\r\n let pos = lastTab.pos + size;\r\n\r\n if (pos < pWidthPt) {\r\n for (; pos < pWidthPt && tabStops.length < maxTabs; pos += size) {\r\n tabStops.push({ ...defaultTab, pos: pos });\r\n }\r\n }\r\n\r\n const marginLeft = parseFloat(pcs.marginLeft);\r\n const pOffset = pbb.left + marginLeft;\r\n const left = (ebb.left - pOffset) * pixelToPoint;\r\n const tab = tabStops.find(t => t.style != \"clear\" && t.pos > left);\r\n\r\n if(tab == null)\r\n return;\r\n\r\n let width: number = 1;\r\n\r\n if (tab.style == \"right\" || tab.style == \"center\") {\r\n\t\tconst tabStops = Array.from(p.querySelectorAll(`.${elem.className}`));\r\n\t\tconst nextIdx = tabStops.indexOf(elem) + 1;\r\n const range = document.createRange();\r\n range.setStart(elem, 1);\r\n\r\n\t\tif (nextIdx < tabStops.length) {\r\n\t\t\trange.setEndBefore(tabStops[nextIdx]);\r\n\t\t} else {\r\n\t\t\trange.setEndAfter(p);\r\n\t\t}\r\n\r\n\t\tconst mul = tab.style == \"center\" ? 0.5 : 1;\r\n const nextBB = range.getBoundingClientRect();\r\n\t\tconst offset = nextBB.left + mul * nextBB.width - (pbb.left - marginLeft);\r\n\r\n\t\twidth = tab.pos - offset * pixelToPoint;\r\n } else {\r\n width = tab.pos - left;\r\n }\r\n\r\n elem.innerHTML = \" \";\r\n elem.style.textDecoration = \"inherit\";\r\n elem.style.wordSpacing = `${width.toFixed(0)}pt`;\r\n\r\n switch (tab.leader) {\r\n case \"dot\":\r\n case \"middleDot\":\r\n elem.style.textDecoration = \"underline\";\r\n elem.style.textDecorationStyle = \"dotted\";\r\n break;\r\n\r\n case \"hyphen\":\r\n case \"heavy\":\r\n case \"underscore\":\r\n elem.style.textDecoration = \"underline\";\r\n break;\r\n }\r\n}\r\n\r\nfunction lengthToPoint(length: Length): number {\r\n\treturn parseFloat(length);\r\n}","import { DomType, OpenXmlElement } from \"../document/dom\";\r\n\r\nexport abstract class WmlBaseNote implements OpenXmlElement {\r\n id: string;\r\n\ttype: DomType;\r\n\tnoteType: string;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport class WmlFootnote extends WmlBaseNote {\r\n\ttype = DomType.Footnote\r\n}\r\n\r\nexport class WmlEndnote extends WmlBaseNote {\r\n\ttype = DomType.Endnote\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { WmlBaseNote, WmlEndnote, WmlFootnote } from \"./elements\";\r\n\r\nexport class BaseNotePart<T extends WmlBaseNote> extends Part {\r\n protected _documentParser: DocumentParser;\r\n\r\n notes: T[]\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n}\r\n\r\nexport class FootnotesPart extends BaseNotePart<WmlFootnote> {\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path, parser);\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.notes = this._documentParser.parseNotes(root, \"footnote\", WmlFootnote);\r\n }\r\n}\r\n\r\nexport class EndnotesPart extends BaseNotePart<WmlEndnote> {\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path, parser);\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.notes = this._documentParser.parseNotes(root, \"endnote\", WmlEndnote);\r\n }\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { IDomNumbering } from \"../document/dom\";\r\nimport { AbstractNumbering, Numbering, NumberingBulletPicture, NumberingPartProperties, parseNumberingPart } from \"./numbering\";\r\n\r\nexport class NumberingPart extends Part implements NumberingPartProperties {\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n\r\n numberings: Numbering[];\r\n abstractNumberings: AbstractNumbering[];\r\n bulletPictures: NumberingBulletPicture[];\r\n \r\n domNumberings: IDomNumbering[];\r\n\r\n parseXml(root: Element) {\r\n Object.assign(this, parseNumberingPart(root, this._package.xmlParser));\r\n this.domNumberings = this._documentParser.parseNumberingFile(root); \r\n }\r\n}","import { NumberingPicBullet } from \"../document/dom\";\r\nimport { ParagraphProperties, parseParagraphProperties } from \"../document/paragraph\";\r\nimport { parseRunProperties, RunProperties } from \"../document/run\";\r\nimport { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface NumberingPartProperties {\r\n numberings: Numbering[];\r\n abstractNumberings: AbstractNumbering[];\r\n bulletPictures: NumberingBulletPicture[];\r\n}\r\n\r\nexport interface Numbering {\r\n id: string;\r\n abstractId: string;\r\n overrides: NumberingLevelOverride[];\r\n}\r\n\r\nexport interface NumberingLevelOverride {\r\n level: number;\r\n start: number;\r\n numberingLevel: NumberingLevel;\r\n}\r\n\r\nexport interface AbstractNumbering {\r\n id: string;\r\n name: string;\r\n multiLevelType: \"singleLevel\" | \"multiLevel\" | \"hybridMultilevel\" | string;\r\n levels: NumberingLevel[];\r\n numberingStyleLink: string;\r\n styleLink: string;\r\n}\r\n\r\nexport interface NumberingLevel {\r\n level: number;\r\n start: string;\r\n restart: number;\r\n format: 'lowerRoman' | 'lowerLetter' | string;\r\n text: string;\r\n justification: string;\r\n bulletPictureId: string;\r\n paragraphStyle: string;\r\n paragraphProps: ParagraphProperties;\r\n runProps: RunProperties;\r\n}\r\n\r\nexport interface NumberingBulletPicture {\r\n id: string;\r\n referenceId: string;\r\n style: string;\r\n}\r\n\r\nexport function parseNumberingPart(elem: Element, xml: XmlParser): NumberingPartProperties {\r\n let result: NumberingPartProperties = {\r\n numberings: [],\r\n abstractNumberings: [],\r\n bulletPictures: []\r\n }\r\n \r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"num\":\r\n result.numberings.push(parseNumbering(e, xml));\r\n break;\r\n case \"abstractNum\":\r\n result.abstractNumberings.push(parseAbstractNumbering(e, xml));\r\n break;\r\n case \"numPicBullet\":\r\n result.bulletPictures.push(parseNumberingBulletPicture(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumbering(elem: Element, xml: XmlParser): Numbering {\r\n let result = <Numbering>{\r\n id: xml.attr(elem, 'numId'),\r\n overrides: []\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"abstractNumId\":\r\n result.abstractId = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlOverride\":\r\n result.overrides.push(parseNumberingLevelOverrride(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseAbstractNumbering(elem: Element, xml: XmlParser): AbstractNumbering {\r\n let result = <AbstractNumbering>{\r\n id: xml.attr(elem, 'abstractNumId'),\r\n levels: []\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"name\":\r\n result.name = xml.attr(e, \"val\");\r\n break;\r\n case \"multiLevelType\":\r\n result.multiLevelType = xml.attr(e, \"val\");\r\n break;\r\n case \"numStyleLink\":\r\n result.numberingStyleLink = xml.attr(e, \"val\");\r\n break;\r\n case \"styleLink\":\r\n result.styleLink = xml.attr(e, \"val\");\r\n break;\r\n case \"lvl\":\r\n result.levels.push(parseNumberingLevel(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingLevel(elem: Element, xml: XmlParser): NumberingLevel {\r\n let result = <NumberingLevel>{\r\n level: xml.intAttr(elem, 'ilvl')\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"start\":\r\n result.start = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlRestart\":\r\n result.restart = xml.intAttr(e, \"val\");\r\n break;\r\n case \"numFmt\":\r\n result.format = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlText\":\r\n result.text = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlJc\":\r\n result.justification = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlPicBulletId\":\r\n result.bulletPictureId = xml.attr(e, \"val\");\r\n break;\r\n case \"pStyle\":\r\n result.paragraphStyle = xml.attr(e, \"val\");\r\n break;\r\n case \"pPr\":\r\n result.paragraphProps = parseParagraphProperties(e, xml);\r\n break;\r\n case \"rPr\":\r\n result.runProps = parseRunProperties(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingLevelOverrride(elem: Element, xml: XmlParser): NumberingLevelOverride {\r\n let result = <NumberingLevelOverride>{\r\n level: xml.intAttr(elem, 'ilvl')\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"startOverride\":\r\n result.start = xml.intAttr(e, \"val\");\r\n break;\r\n case \"lvl\":\r\n result.numberingLevel = parseNumberingLevel(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingBulletPicture(elem: Element, xml: XmlParser): NumberingBulletPicture {\r\n //TODO\r\n var pict = xml.element(elem, \"pict\");\r\n var shape = pict && xml.element(pict, \"shape\");\r\n var imagedata = shape && xml.element(shape, \"imagedata\");\r\n\r\n return imagedata ? {\r\n id: xml.attr(elem, \"numPicBulletId\"),\r\n referenceId: xml.attr(imagedata, \"id\"),\r\n style: xml.attr(shape, \"style\")\r\n } : null;\r\n}","import { Length, LengthUsage, LengthUsageType, convertLength, convertBoolean } from \"../document/common\";\r\n\r\nexport function parseXmlString(xmlString: string, trimXmlDeclaration: boolean = false): Document {\r\n if (trimXmlDeclaration)\r\n xmlString = xmlString.replace(/<[?].*[?]>/, \"\");\r\n \r\n const result = new DOMParser().parseFromString(xmlString, \"application/xml\"); \r\n const errorText = hasXmlParserError(result);\r\n\r\n if (errorText)\r\n throw new Error(errorText);\r\n\r\n return result;\r\n}\r\n\r\nfunction hasXmlParserError(doc: Document) {\r\n return doc.getElementsByTagName(\"parsererror\")[0]?.textContent;\r\n}\r\n\r\nexport function serializeXmlString(elem: Node): string {\r\n return new XMLSerializer().serializeToString(elem);\r\n}\r\n\r\nexport class XmlParser {\r\n elements(elem: Element, localName: string = null): Element[] {\r\n const result = [];\r\n\r\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\r\n let c = elem.childNodes.item(i);\r\n\r\n if (c.nodeType == 1 && (localName == null || (c as Element).localName == localName))\r\n result.push(c);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n element(elem: Element, localName: string): Element {\r\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\r\n let c = elem.childNodes.item(i);\r\n\r\n if (c.nodeType == 1 && (c as Element).localName == localName)\r\n return c as Element;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n elementAttr(elem: Element, localName: string, attrLocalName: string): string {\r\n var el = this.element(elem, localName);\r\n return el ? this.attr(el, attrLocalName) : undefined;\r\n }\r\n\r\n attr(elem: Element, localName: string): string {\r\n for (let i = 0, l = elem.attributes.length; i < l; i++) {\r\n let a = elem.attributes.item(i);\r\n\r\n if (a.localName == localName)\r\n return a.value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n intAttr(node: Element, attrName: string, defaultValue: number = null): number {\r\n var val = this.attr(node, attrName);\r\n return val ? parseInt(val) : defaultValue;\r\n }\r\n\r\n floatAttr(node: Element, attrName: string, defaultValue: number = null): number {\r\n var val = this.attr(node, attrName);\r\n return val ? parseFloat(val) : defaultValue;\r\n }\r\n\r\n boolAttr(node: Element, attrName: string, defaultValue: boolean = null) {\r\n return convertBoolean(this.attr(node, attrName), defaultValue);\r\n }\r\n\r\n lengthAttr(node: Element, attrName: string, usage: LengthUsageType = LengthUsage.Dxa): Length {\r\n return convertLength(this.attr(node, attrName), usage);\r\n }\r\n}\r\n\r\nconst globalXmlParser = new XmlParser();\r\n\r\nexport default globalXmlParser;","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { WmlSettings, parseSettings } from \"./settings\";\r\n\r\nexport class SettingsPart extends Part {\r\n\tsettings: WmlSettings;\r\n\r\n\tconstructor(pkg: OpenXmlPackage, path: string) {\r\n\t\tsuper(pkg, path);\r\n\t}\r\n\r\n\tparseXml(root: Element) {\r\n\t\tthis.settings = parseSettings(root, this._package.xmlParser);\r\n\t}\r\n}","import { DocumentParser } from \"../document-parser\";\r\nimport { Length } from \"../document/common\";\r\nimport { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface WmlSettings {\r\n\tdefaultTabStop: Length;\r\n\tfootnoteProps: NoteProperties;\r\n\tendnoteProps: NoteProperties;\r\n\tautoHyphenation: boolean;\r\n}\r\n\r\nexport interface NoteProperties {\r\n\tnummeringFormat: string;\r\n\tdefaultNoteIds: string[];\r\n}\r\n\r\nexport function parseSettings(elem: Element, xml: XmlParser) {\r\n\tvar result = {} as WmlSettings; \r\n\r\n\tfor (let el of xml.elements(elem)) {\r\n\t\tswitch(el.localName) {\r\n\t\t\tcase \"defaultTabStop\": result.defaultTabStop = xml.lengthAttr(el, \"val\"); break;\r\n\t\t\tcase \"footnotePr\": result.footnoteProps = parseNoteProperties(el, xml); break;\r\n\t\t\tcase \"endnotePr\": result.endnoteProps = parseNoteProperties(el, xml); break;\r\n\t\t\tcase \"autoHyphenation\": result.autoHyphenation = xml.boolAttr(el, \"val\"); break;\r\n\t\t}\r\n\t}\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNoteProperties(elem: Element, xml: XmlParser) {\r\n\tvar result = {\r\n\t\tdefaultNoteIds: []\r\n\t} as NoteProperties; \r\n\r\n\tfor (let el of xml.elements(elem)) {\r\n\t\tswitch(el.localName) {\r\n\t\t\tcase \"numFmt\": \r\n\t\t\t\tresult.nummeringFormat = xml.attr(el, \"val\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"footnote\": \r\n\t\t\tcase \"endnote\": \r\n\t\t\t\tresult.defaultNoteIds.push(xml.attr(el, \"id\"));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n return result;\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { IDomStyle } from \"../document/style\";\r\n\r\nexport class StylesPart extends Part {\r\n styles: IDomStyle[];\r\n\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.styles = this._documentParser.parseStylesFile(root); \r\n }\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DmlTheme, parseTheme } from \"./theme\";\r\n\r\nexport class ThemePart extends Part {\r\n theme: DmlTheme;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string) {\r\n super(pkg, path);\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.theme = parseTheme(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport class DmlTheme {\r\n colorScheme: DmlColorScheme;\r\n fontScheme: DmlFontScheme;\r\n}\r\n\r\nexport interface DmlColorScheme {\r\n name: string;\r\n colors: Record<string, string>;\r\n}\r\n\r\nexport interface DmlFontScheme {\r\n name: string;\r\n majorFont: DmlFormInfo,\r\n minorFont: DmlFormInfo\r\n}\r\n\r\nexport interface DmlFormInfo {\r\n latinTypeface: string;\r\n eaTypeface: string;\r\n csTypeface: string;\r\n}\r\n\r\nexport function parseTheme(elem: Element, xml: XmlParser) {\r\n var result = new DmlTheme();\r\n var themeElements = xml.element(elem, \"themeElements\");\r\n\r\n for (let el of xml.elements(themeElements)) {\r\n switch(el.localName) {\r\n case \"clrScheme\": result.colorScheme = parseColorScheme(el, xml); break;\r\n case \"fontScheme\": result.fontScheme = parseFontScheme(el, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseColorScheme(elem: Element, xml: XmlParser) {\r\n var result: DmlColorScheme = { \r\n name: xml.attr(elem, \"name\"),\r\n colors: {}\r\n };\r\n\r\n for (let el of xml.elements(elem)) {\r\n var srgbClr = xml.element(el, \"srgbClr\");\r\n var sysClr = xml.element(el, \"sysClr\");\r\n\r\n if (srgbClr) {\r\n result.colors[el.localName] = xml.attr(srgbClr, \"val\");\r\n }\r\n else if (sysClr) {\r\n result.colors[el.localName] = xml.attr(sysClr, \"lastClr\");\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseFontScheme(elem: Element, xml: XmlParser) {\r\n var result: DmlFontScheme = { \r\n name: xml.attr(elem, \"name\"),\r\n } as DmlFontScheme;\r\n\r\n for (let el of xml.elements(elem)) {\r\n switch (el.localName) {\r\n case \"majorFont\": result.majorFont = parseFontInfo(el, xml); break;\r\n case \"minorFont\": result.minorFont = parseFontInfo(el, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseFontInfo(elem: Element, xml: XmlParser): DmlFormInfo {\r\n return {\r\n latinTypeface: xml.elementAttr(elem, \"latin\", \"typeface\"),\r\n eaTypeface: xml.elementAttr(elem, \"ea\", \"typeface\"),\r\n csTypeface: xml.elementAttr(elem, \"cs\", \"typeface\"),\r\n };\r\n}","export function escapeClassName(className: string) {\r\n\treturn className?.replace(/[ .]+/g, '-').replace(/[&]+/g, 'and').toLowerCase();\r\n}\r\n\r\nexport function splitPath(path: string): [string, string] {\r\n let si = path.lastIndexOf('/') + 1;\r\n let folder = si == 0 ? \"\" : path.substring(0, si);\r\n let fileName = si == 0 ? path : path.substring(si);\r\n\r\n return [folder, fileName];\r\n}\r\n\r\nexport function resolvePath(path: string, base: string): string {\r\n try {\r\n const prefix = \"http://docx/\";\r\n const url = new URL(path, prefix + base).toString();\r\n return url.substring(prefix.length);\r\n } catch {\r\n return `${base}${path}`;\r\n }\r\n}\r\n\r\nexport function keyBy<T = any>(array: T[], by: (x: T) => any): Record<any, T> {\r\n return array.reduce((a, x) => {\r\n a[by(x)] = x;\r\n return a;\r\n }, {});\r\n}\r\n\r\nexport function blobToBase64(blob: Blob): any {\r\n\treturn new Promise((resolve, _) => {\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onloadend = () => resolve(reader.result);\r\n\t\treader.readAsDataURL(blob);\r\n\t});\r\n}\r\n\r\nexport function isObject(item) {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n}\r\n\r\nexport function mergeDeep(target, ...sources) {\r\n if (!sources.length) \r\n return target;\r\n \r\n const source = sources.shift();\r\n\r\n if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n const val = target[key] ?? (target[key] = {});\r\n mergeDeep(val, source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return mergeDeep(target, ...sources);\r\n}","import { OutputType } from \"jszip\";\r\n\r\nimport { DocumentParser } from './document-parser';\r\nimport { Relationship, RelationshipTypes } from './common/relationship';\r\nimport { Part } from './common/part';\r\nimport { FontTablePart } from './font-table/font-table';\r\nimport { OpenXmlPackage } from './common/open-xml-package';\r\nimport { DocumentPart } from './document/document-part';\r\nimport { blobToBase64, resolvePath, splitPath } from './utils';\r\nimport { NumberingPart } from './numbering/numbering-part';\r\nimport { StylesPart } from './styles/styles-part';\r\nimport { FooterPart, HeaderPart } from \"./header-footer/parts\";\r\nimport { ExtendedPropsPart } from \"./document-props/extended-props-part\";\r\nimport { CorePropsPart } from \"./document-props/core-props-part\";\r\nimport { ThemePart } from \"./theme/theme-part\";\r\nimport { EndnotesPart, FootnotesPart } from \"./notes/parts\";\r\nimport { SettingsPart } from \"./settings/settings-part\";\r\nimport { CustomPropsPart } from \"./document-props/custom-props-part\";\r\n\r\nconst topLevelRels = [\r\n\t{ type: RelationshipTypes.OfficeDocument, target: \"word/document.xml\" },\r\n\t{ type: RelationshipTypes.ExtendedProperties, target: \"docProps/app.xml\" },\r\n\t{ type: RelationshipTypes.CoreProperties, target: \"docProps/core.xml\" },\r\n\t{ type: RelationshipTypes.CustomProperties, target: \"docProps/custom.xml\" },\r\n];\r\n\r\nexport class WordDocument {\r\n\tprivate _package: OpenXmlPackage;\r\n\tprivate _parser: DocumentParser;\r\n\tprivate _options: any;\r\n\r\n\trels: Relationship[];\r\n\tparts: Part[] = [];\r\n\tpartsMap: Record<string, Part> = {};\r\n\r\n\tdocumentPart: DocumentPart;\r\n\tfontTablePart: FontTablePart;\r\n\tnumberingPart: NumberingPart;\r\n\tstylesPart: StylesPart;\r\n\tfootnotesPart: FootnotesPart;\r\n\tendnotesPart: EndnotesPart;\r\n\tthemePart: ThemePart;\r\n\tcorePropsPart: CorePropsPart;\r\n\textendedPropsPart: ExtendedPropsPart;\r\n\tsettingsPart: SettingsPart;\r\n\r\n\tstatic load(blob, parser: DocumentParser, options: any): Promise<WordDocument> {\r\n\t\tvar d = new WordDocument();\r\n\r\n\t\td._options = options;\r\n\t\td._parser = parser;\r\n\r\n\t\treturn OpenXmlPackage.load(blob, options)\r\n\t\t\t.then(pkg => {\r\n\t\t\t\td._package = pkg;\r\n\r\n\t\t\t\treturn d._package.loadRelationships();\r\n\t\t\t}).then(rels => {\r\n\t\t\t\td.rels = rels;\r\n\r\n\t\t\t\tconst tasks = topLevelRels.map(rel => {\r\n\t\t\t\t\tconst r = rels.find(x => x.type === rel.type) ?? rel; //fallback \r\n\t\t\t\t\treturn d.loadRelationshipPart(r.target, r.type);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn Promise.all(tasks);\r\n\t\t\t}).then(() => d);\r\n\t}\r\n\r\n\tsave(type = \"blob\"): Promise<any> {\r\n\t\treturn this._package.save(type);\r\n\t}\r\n\r\n\tprivate loadRelationshipPart(path: string, type: string): Promise<Part> {\r\n\t\tif (this.partsMap[path])\r\n\t\t\treturn Promise.resolve(this.partsMap[path]);\r\n\r\n\t\tif (!this._package.get(path))\r\n\t\t\treturn Promise.resolve(null);\r\n\r\n\t\tlet part: Part = null;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase RelationshipTypes.OfficeDocument:\r\n\t\t\t\tthis.documentPart = part = new DocumentPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.FontTable:\r\n\t\t\t\tthis.fontTablePart = part = new FontTablePart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Numbering:\r\n\t\t\t\tthis.numberingPart = part = new NumberingPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Styles:\r\n\t\t\t\tthis.stylesPart = part = new StylesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Theme:\r\n\t\t\t\tthis.themePart = part = new ThemePart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Footnotes:\r\n\t\t\t\tthis.footnotesPart = part = new FootnotesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Endnotes:\r\n\t\t\t\tthis.endnotesPart = part = new EndnotesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Footer:\r\n\t\t\t\tpart = new FooterPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Header:\r\n\t\t\t\tpart = new HeaderPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.CoreProperties:\r\n\t\t\t\tthis.corePropsPart = part = new CorePropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.ExtendedProperties:\r\n\t\t\t\tthis.extendedPropsPart = part = new ExtendedPropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.CustomProperties:\r\n\t\t\t\tpart = new CustomPropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\t\r\n\t\t\tcase RelationshipTypes.Settings:\r\n\t\t\t\tthis.settingsPart = part = new SettingsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (part == null)\r\n\t\t\treturn Promise.resolve(null);\r\n\r\n\t\tthis.partsMap[path] = part;\r\n\t\tthis.parts.push(part);\r\n\r\n\t\treturn part.load().then(() => {\r\n\t\t\tif (part.rels == null || part.rels.length == 0)\r\n\t\t\t\treturn part;\r\n\r\n\t\t\tconst [folder] = splitPath(part.path);\r\n\t\t\tconst rels = part.rels.map(rel => {\r\n\t\t\t\treturn this.loadRelationshipPart(resolvePath(rel.target, folder), rel.type)\r\n\t\t\t});\r\n\r\n\t\t\treturn Promise.all(rels).then(() => part);\r\n\t\t});\r\n\t}\r\n\r\n\tloadDocumentImage(id: string, part?: Part): PromiseLike<string> {\r\n\t\treturn this.loadResource(part ?? this.documentPart, id, \"blob\")\r\n\t\t\t.then(x => this.blobToURL(x));\r\n\t}\r\n\r\n\tloadNumberingImage(id: string): PromiseLike<string> {\r\n\t\treturn this.loadResource(this.numberingPart, id, \"blob\")\r\n\t\t\t.then(x => this.blobToURL(x));\r\n\t}\r\n\r\n\tloadFont(id: string, key: string): PromiseLike<string> {\r\n\t\treturn this.loadResource(this.fontTablePart, id, \"uint8array\")\r\n\t\t\t.then(x => x ? this.blobToURL(new Blob([deobfuscate(x, key)])) : x);\r\n\t}\r\n\r\n\tprivate blobToURL(blob: Blob): string | PromiseLike<string> {\r\n\t\tif (!blob)\r\n\t\t\treturn null;\r\n\r\n\t\tif (this._options.useBase64URL) {\r\n\t\t\treturn blobToBase64(blob);\r\n\t\t}\r\n\r\n\t\treturn URL.createObjectURL(blob);\r\n\t}\r\n\r\n\tfindPartByRelId(id: string, basePart: Part = null) {\r\n\t\tvar rel = (basePart.rels ?? this.rels).find(r => r.id == id);\r\n\t\tconst folder = basePart ? splitPath(basePart.path)[0] : '';\r\n\t\treturn rel ? this.partsMap[resolvePath(rel.target, folder)] : null;\r\n\t}\r\n\r\n\tgetPathById(part: Part, id: string): string {\r\n\t\tconst rel = part.rels.find(x => x.id == id);\r\n\t\tconst [folder] = splitPath(part.path);\r\n\t\treturn rel ? resolvePath(rel.target, folder) : null;\r\n\t}\r\n\r\n\tprivate loadResource(part: Part, id: string, outputType: OutputType) {\r\n\t\tconst path = this.getPathById(part, id);\r\n\t\treturn path ? this._package.load(path, outputType) : Promise.resolve(null);\r\n\t}\r\n}\r\n\r\nexport function deobfuscate(data: Uint8Array, guidKey: string): Uint8Array {\r\n\tconst len = 16;\r\n\tconst trimmed = guidKey.replace(/{|}|-/g, \"\");\r\n\tconst numbers = new Array(len);\r\n\r\n\tfor (let i = 0; i < len; i++)\r\n\t\tnumbers[len - i - 1] = parseInt(trimmed.substr(i * 2, 2), 16);\r\n\r\n\tfor (let i = 0; i < 32; i++)\r\n\t\tdata[i] = data[i] ^ numbers[i % len]\r\n\r\n\treturn data;\r\n}","module.exports = __WEBPACK_EXTERNAL_MODULE_jszip__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/docx-preview.ts\");\n",""],"names":[],"sourceRoot":""}