{"version":3,"file":"docx-preview.min.js","mappings":"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","sources":["webpack://docx/webpack/universalModuleDefinition","webpack://docx/./src/mathml.scss","webpack://docx/./node_modules/css-loader/dist/runtime/api.js","webpack://docx/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://docx/./node_modules/css-loader/dist/runtime/sourceMaps.js","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/vml/vml.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/runtime/compat get default export","webpack://docx/webpack/runtime/define property getters","webpack://docx/webpack/runtime/hasOwnProperty shorthand","webpack://docx/webpack/runtime/make namespace object","webpack://docx/webpack/runtime/jsonp chunk loading","webpack://docx/webpack/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})(globalThis, (__WEBPACK_EXTERNAL_MODULE__626__) => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@namespace \\\"http://www.w3.org/1998/Math/MathML\\\";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:\\\"\\\";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mathml.scss\"],\"names\":[],\"mappings\":\"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA\",\"sourcesContent\":[\"@namespace \\\"http://www.w3.org/1998/Math/MathML\\\";\\r\\n\\r\\nmath {\\r\\n display: inline-block;\\r\\n line-height: initial;\\r\\n}\\r\\n\\r\\nmfrac {\\r\\n display: inline-block;\\r\\n vertical-align: -50%;\\r\\n text-align: center;\\r\\n\\r\\n &>:first-child {\\r\\n border-bottom: solid thin currentColor;\\r\\n }\\r\\n\\r\\n &>* {\\r\\n display: block;\\r\\n }\\r\\n}\\r\\n\\r\\nmsub {\\r\\n &>:nth-child(2) {\\r\\n font-size: smaller;\\r\\n vertical-align: sub;\\r\\n }\\r\\n}\\r\\n\\r\\nmsup {\\r\\n &>:nth-child(2) {\\r\\n font-size: smaller;\\r\\n vertical-align: super;\\r\\n }\\r\\n}\\r\\n\\r\\nmunder, mover, munderover {\\r\\n display: inline-flex;\\r\\n flex-flow: column nowrap;\\r\\n vertical-align: middle;\\r\\n text-align: center;\\r\\n\\r\\n &>:not(:first-child) {\\r\\n font-size: smaller;\\r\\n }\\r\\n}\\r\\n\\r\\nmunderover {\\r\\n &>:last-child { order: -1; }\\r\\n}\\r\\n\\r\\nmroot, msqrt {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n border-top: solid thin currentColor; \\r\\n margin-top: 0.5px;\\r\\n vertical-align: middle; \\r\\n margin-left: 1ch; \\r\\n\\r\\n &:before {\\r\\n content: \\\"\\\";\\r\\n display: inline-block;\\r\\n position: absolute;\\r\\n width: 1ch;\\r\\n left: -1ch;\\r\\n top: -1px;\\r\\n bottom: 0;\\r\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 100' preserveAspectRatio='none'%3E%3Cpath d='m0,75 l5,0 l5,25 l10,-100' stroke='black' fill='none' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E\\\");\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n\n if (!url) {\n return url;\n }\n\n url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them\n\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","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 {\r\n return JSZip.loadAsync(input).then(zip => new OpenXmlPackage(zip, options));\r\n }\r\n\r\n save(type: any = \"blob\"): Promise {\r\n return this._zip.generateAsync({ type });\r\n }\r\n\r\n load(path: string, type: JSZip.OutputType = \"string\"): Promise {\r\n return this.get(path)?.async(type) ?? Promise.resolve(null);\r\n }\r\n\r\n loadRelationships(path: string = null): Promise {\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 {\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: \"\" | \"External\" | 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 => {\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\tDomType, WmlTable, IDomNumbering,\r\n\tWmlHyperlink, IDomImage, OpenXmlElement, WmlTableColumn, WmlTableCell,\r\n\tWmlTableRow, 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\nimport { parseVmlElement } from './vml/vml';\r\n\r\nexport var autos = {\r\n\tshd: \"inherit\",\r\n\tcolor: \"black\",\r\n\tborderColor: \"black\",\r\n\thighlight: \"transparent\"\r\n};\r\n\r\nconst supportedNamespaceURIs = [];\r\n\r\nconst mmlTagMap = {\r\n\t\"oMath\": DomType.MmlMath,\r\n\t\"oMathPara\": DomType.MmlMathParagraph,\r\n\t\"f\": DomType.MmlFraction,\r\n\t\"num\": DomType.MmlNumerator,\r\n\t\"den\": DomType.MmlDenominator,\r\n\t\"rad\": DomType.MmlRadical,\r\n\t\"deg\": DomType.MmlDegree,\r\n\t\"e\": DomType.MmlBase,\r\n\t\"sSup\": DomType.MmlSuperscript,\r\n\t\"sSub\": DomType.MmlSubscript,\r\n\t\"sup\": DomType.MmlSuperArgument,\r\n\t\"sub\": DomType.MmlSubArgument,\r\n\t\"d\": DomType.MmlDelimiter,\r\n\t\"nary\": DomType.MmlNary\r\n}\r\n\r\nexport interface DocumentParserOptions {\r\n\tignoreWidth: boolean;\r\n\tdebug: boolean;\r\n}\r\n\r\nexport class DocumentParser {\r\n\toptions: DocumentParserOptions;\r\n\r\n\tconstructor(options?: Partial) {\r\n\t\tthis.options = {\r\n\t\t\tignoreWidth: false,\r\n\t\t\tdebug: false,\r\n\t\t\t...options\r\n\t\t};\r\n\t}\r\n\r\n\tparseNotes(xmlDoc: Element, elemName: string, elemClass: any): any[] {\r\n\t\tvar result = [];\r\n\r\n\t\tfor (let el of xml.elements(xmlDoc, elemName)) {\r\n\t\t\tconst node = new elemClass();\r\n\t\t\tnode.id = xml.attr(el, \"id\");\r\n\t\t\tnode.noteType = xml.attr(el, \"type\");\r\n\t\t\tnode.children = this.parseBodyElements(el);\r\n\t\t\tresult.push(node);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseDocumentFile(xmlDoc: Element): DocumentElement {\r\n\t\tvar xbody = xml.element(xmlDoc, \"body\");\r\n\t\tvar background = xml.element(xmlDoc, \"background\");\r\n\t\tvar sectPr = xml.element(xbody, \"sectPr\");\r\n\r\n\t\treturn {\r\n\t\t\ttype: DomType.Document,\r\n\t\t\tchildren: this.parseBodyElements(xbody),\r\n\t\t\tprops: sectPr ? parseSectionProperties(sectPr, xml) : null,\r\n\t\t\tcssStyle: background ? this.parseBackground(background) : {},\r\n\t\t};\r\n\t}\r\n\r\n\tparseBackground(elem: Element): any {\r\n\t\tvar result = {};\r\n\t\tvar color = xmlUtil.colorAttr(elem, \"color\");\r\n\r\n\t\tif (color) {\r\n\t\t\tresult[\"background-color\"] = color;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseBodyElements(element: Element): OpenXmlElement[] {\r\n\t\tvar children = [];\r\n\r\n\t\txmlUtil.foreach(element, elem => {\r\n\t\t\tswitch (elem.localName) {\r\n\t\t\t\tcase \"p\":\r\n\t\t\t\t\tchildren.push(this.parseParagraph(elem));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tbl\":\r\n\t\t\t\t\tchildren.push(this.parseTable(elem));\r\n\t\t\t\t\tbreak;\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\t\t});\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tparseStylesFile(xstyles: Element): IDomStyle[] {\r\n\t\tvar result = [];\r\n\r\n\t\txmlUtil.foreach(xstyles, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"style\":\r\n\t\t\t\t\tresult.push(this.parseStyle(n));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"docDefaults\":\r\n\t\t\t\t\tresult.push(this.parseDefaultStyles(n));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseDefaultStyles(node: Element): IDomStyle {\r\n\t\tvar result = {\r\n\t\t\tid: null,\r\n\t\t\tname: null,\r\n\t\t\ttarget: null,\r\n\t\t\tbasedOn: null,\r\n\t\t\tstyles: []\r\n\t\t};\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"rPrDefault\":\r\n\t\t\t\t\tvar rPr = xml.element(c, \"rPr\");\r\n\r\n\t\t\t\t\tif (rPr)\r\n\t\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\t\ttarget: \"span\",\r\n\t\t\t\t\t\t\tvalues: this.parseDefaultProperties(rPr, {})\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pPrDefault\":\r\n\t\t\t\t\tvar pPr = xml.element(c, \"pPr\");\r\n\r\n\t\t\t\t\tif (pPr)\r\n\t\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\t\ttarget: \"p\",\r\n\t\t\t\t\t\t\tvalues: this.parseDefaultProperties(pPr, {})\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseStyle(node: Element): IDomStyle {\r\n\t\tvar result = {\r\n\t\t\tid: xml.attr(node, \"styleId\"),\r\n\t\t\tisDefault: xml.boolAttr(node, \"default\"),\r\n\t\t\tname: null,\r\n\t\t\ttarget: null,\r\n\t\t\tbasedOn: null,\r\n\t\t\tstyles: [],\r\n\t\t\tlinked: null\r\n\t\t};\r\n\r\n\t\tswitch (xml.attr(node, \"type\")) {\r\n\t\t\tcase \"paragraph\": result.target = \"p\"; break;\r\n\t\t\tcase \"table\": result.target = \"table\"; break;\r\n\t\t\tcase \"character\": result.target = \"span\"; break;\r\n\t\t\t//case \"numbering\": result.target = \"p\"; break;\r\n\t\t}\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"basedOn\":\r\n\t\t\t\t\tresult.basedOn = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"name\":\r\n\t\t\t\t\tresult.name = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"link\":\r\n\t\t\t\t\tresult.linked = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"next\":\r\n\t\t\t\t\tresult.next = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"aliases\":\r\n\t\t\t\t\tresult.aliases = xml.attr(n, \"val\").split(\",\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"p\",\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresult.paragraphProps = parseParagraphProperties(n, xml);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"span\",\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresult.runProps = parseRunProperties(n, xml);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblPr\":\r\n\t\t\t\tcase \"tcPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"td\", //TODO: maybe move to processor\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblStylePr\":\r\n\t\t\t\t\tfor (let s of this.parseTableStyle(n))\r\n\t\t\t\t\t\tresult.styles.push(s);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rsid\":\r\n\t\t\t\tcase \"qFormat\":\r\n\t\t\t\tcase \"hidden\":\r\n\t\t\t\tcase \"semiHidden\":\r\n\t\t\t\tcase \"unhideWhenUsed\":\r\n\t\t\t\tcase \"autoRedefine\":\r\n\t\t\t\tcase \"uiPriority\":\r\n\t\t\t\t\t//TODO: ignore\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.options.debug && console.warn(`DOCX: Unknown style element: ${n.localName}`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableStyle(node: Element): IDomSubStyle[] {\r\n\t\tvar result = [];\r\n\r\n\t\tvar type = xml.attr(node, \"type\");\r\n\t\tvar selector = \"\";\r\n\t\tvar modificator = \"\";\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"firstRow\":\r\n\t\t\t\tmodificator = \".first-row\";\r\n\t\t\t\tselector = \"tr.first-row td\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lastRow\":\r\n\t\t\t\tmodificator = \".last-row\";\r\n\t\t\t\tselector = \"tr.last-row td\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"firstCol\":\r\n\t\t\t\tmodificator = \".first-col\";\r\n\t\t\t\tselector = \"td.first-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lastCol\":\r\n\t\t\t\tmodificator = \".last-col\";\r\n\t\t\t\tselector = \"td.last-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band1Vert\":\r\n\t\t\t\tmodificator = \":not(.no-vband)\";\r\n\t\t\t\tselector = \"td.odd-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band2Vert\":\r\n\t\t\t\tmodificator = \":not(.no-vband)\";\r\n\t\t\t\tselector = \"td.even-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band1Horz\":\r\n\t\t\t\tmodificator = \":not(.no-hband)\";\r\n\t\t\t\tselector = \"tr.odd-row\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band2Horz\":\r\n\t\t\t\tmodificator = \":not(.no-hband)\";\r\n\t\t\t\tselector = \"tr.even-row\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault: return [];\r\n\t\t}\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: `${selector} p`,\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: `${selector} span`,\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblPr\":\r\n\t\t\t\tcase \"tcPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: selector, //TODO: maybe move to processor\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingFile(xnums: Element): IDomNumbering[] {\r\n\t\tvar result = [];\r\n\t\tvar mapping = {};\r\n\t\tvar bullets = [];\r\n\r\n\t\txmlUtil.foreach(xnums, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"abstractNum\":\r\n\t\t\t\t\tthis.parseAbstractNumbering(n, bullets)\r\n\t\t\t\t\t\t.forEach(x => result.push(x));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"numPicBullet\":\r\n\t\t\t\t\tbullets.push(this.parseNumberingPicBullet(n));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"num\":\r\n\t\t\t\t\tvar numId = xml.attr(n, \"numId\");\r\n\t\t\t\t\tvar abstractNumId = xml.elementAttr(n, \"abstractNumId\", \"val\");\r\n\t\t\t\t\tmapping[abstractNumId] = numId;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.forEach(x => x.id = mapping[x.id]);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingPicBullet(elem: Element): NumberingPicBullet {\r\n\t\tvar pict = xml.element(elem, \"pict\");\r\n\t\tvar shape = pict && xml.element(pict, \"shape\");\r\n\t\tvar imagedata = shape && xml.element(shape, \"imagedata\");\r\n\r\n\t\treturn imagedata ? {\r\n\t\t\tid: xml.intAttr(elem, \"numPicBulletId\"),\r\n\t\t\tsrc: xml.attr(imagedata, \"id\"),\r\n\t\t\tstyle: xml.attr(shape, \"style\")\r\n\t\t} : null;\r\n\t}\r\n\r\n\tparseAbstractNumbering(node: Element, bullets: any[]): IDomNumbering[] {\r\n\t\tvar result = [];\r\n\t\tvar id = xml.attr(node, \"abstractNumId\");\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"lvl\":\r\n\t\t\t\t\tresult.push(this.parseNumberingLevel(id, n, bullets));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingLevel(id: string, node: Element, bullets: any[]): IDomNumbering {\r\n\t\tvar result: IDomNumbering = {\r\n\t\t\tid: id,\r\n\t\t\tlevel: xml.intAttr(node, \"ilvl\"),\r\n\t\t\tpStyleName: undefined,\r\n\t\t\tpStyle: {},\r\n\t\t\trStyle: {},\r\n\t\t\tsuff: \"tab\"\r\n\t\t};\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseDefaultProperties(n, result.pStyle);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tthis.parseDefaultProperties(n, result.rStyle);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lvlPicBulletId\":\r\n\t\t\t\t\tvar id = xml.intAttr(n, \"val\");\r\n\t\t\t\t\tresult.bullet = bullets.find(x => x.id == id);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lvlText\":\r\n\t\t\t\t\tresult.levelText = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pStyle\":\r\n\t\t\t\t\tresult.pStyleName = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"numFmt\":\r\n\t\t\t\t\tresult.format = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"suff\":\r\n\t\t\t\t\tresult.suff = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\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\tparseParagraph(node: Element): OpenXmlElement {\r\n\t\tvar result = { type: DomType.Paragraph, children: [] };\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(c, result));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"hyperlink\":\r\n\t\t\t\t\tresult.children.push(this.parseHyperlink(c, result));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bookmarkStart\":\r\n\t\t\t\t\tresult.children.push(parseBookmarkStart(c, xml));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bookmarkEnd\":\r\n\t\t\t\t\tresult.children.push(parseBookmarkEnd(c, xml));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"oMath\":\r\n\t\t\t\tcase \"oMathPara\":\r\n\t\t\t\t\tresult.children.push(this.parseMathElement(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseParagraphProperties(c, result);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseParagraphProperties(elem: Element, paragraph: WmlParagraph) {\r\n\t\tthis.parseDefaultProperties(elem, paragraph.cssStyle = {}, null, c => {\r\n\t\t\tif (parseParagraphProperty(c, paragraph, xml))\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"pStyle\":\r\n\t\t\t\t\tparagraph.styleName = xml.attr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"cnfStyle\":\r\n\t\t\t\t\tparagraph.className = values.classNameOfCnfStyle(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"framePr\":\r\n\t\t\t\t\tthis.parseFrame(c, paragraph);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\t//TODO ignore\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tparseFrame(node: Element, paragraph: WmlParagraph) {\r\n\t\tvar dropCap = xml.attr(node, \"dropCap\");\r\n\r\n\t\tif (dropCap == \"drop\")\r\n\t\t\tparagraph.cssStyle[\"float\"] = \"left\";\r\n\t}\r\n\r\n\tparseHyperlink(node: Element, parent?: OpenXmlElement): WmlHyperlink {\r\n\t\tvar result: WmlHyperlink = { type: DomType.Hyperlink, parent: parent, children: [] };\r\n\t\tvar anchor = xml.attr(node, \"anchor\");\r\n\t\tvar relId = xml.attr(node, \"id\");\r\n\r\n\t\tif (anchor)\r\n\t\t\tresult.href = \"#\" + anchor;\r\n\r\n\t\tif (relId)\r\n\t\t\tresult.id = relId;\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(c, result));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseRun(node: Element, parent?: OpenXmlElement): WmlRun {\r\n\t\tvar result: WmlRun = { type: DomType.Run, parent: parent, children: [] };\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tc = this.checkAlternateContent(c);\r\n\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"t\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.Text,\r\n\t\t\t\t\t\ttext: c.textContent\r\n\t\t\t\t\t});//.replace(\" \", \"\\u00A0\"); // TODO\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"fldSimple\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.SimpleField,\r\n\t\t\t\t\t\tinstruction: xml.attr(c, \"instr\"),\r\n\t\t\t\t\t\tlock: xml.boolAttr(c, \"lock\", false),\r\n\t\t\t\t\t\tdirty: xml.boolAttr(c, \"dirty\", false)\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"instrText\":\r\n\t\t\t\t\tresult.fieldRun = true;\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.Instruction,\r\n\t\t\t\t\t\ttext: c.textContent\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"fldChar\":\r\n\t\t\t\t\tresult.fieldRun = true;\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.ComplexField,\r\n\t\t\t\t\t\tcharType: xml.attr(c, \"fldCharType\"),\r\n\t\t\t\t\t\tlock: xml.boolAttr(c, \"lock\", false),\r\n\t\t\t\t\t\tdirty: xml.boolAttr(c, \"dirty\", false)\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"noBreakHyphen\":\r\n\t\t\t\t\tresult.children.push({ type: DomType.NoBreakHyphen });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"br\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.Break,\r\n\t\t\t\t\t\tbreak: xml.attr(c, \"type\") || \"textWrapping\"\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lastRenderedPageBreak\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.Break,\r\n\t\t\t\t\t\tbreak: \"lastRenderedPageBreak\"\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sym\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.Symbol,\r\n\t\t\t\t\t\tfont: xml.attr(c, \"font\"),\r\n\t\t\t\t\t\tchar: xml.attr(c, \"char\")\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tab\":\r\n\t\t\t\t\tresult.children.push({ type: DomType.Tab });\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"footnoteReference\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.FootnoteReference,\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\t\t\t\tcase \"endnoteReference\":\r\n\t\t\t\t\tresult.children.push({\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\t\t\t\tcase \"drawing\":\r\n\t\t\t\t\tlet d = this.parseDrawing(c);\r\n\r\n\t\t\t\t\tif (d)\r\n\t\t\t\t\t\tresult.children = [d];\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pict\":\r\n\t\t\t\t\tresult.children.push(this.parseVmlPicture(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tthis.parseRunProperties(c, result);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseMathElement(elem: Element): OpenXmlElement {\r\n\t\tconst propsTag = `${elem.localName}Pr`;\r\n\t\tconst result = { type: mmlTagMap[elem.localName], children: [] } as OpenXmlElement;\r\n\r\n\t\tfor (const el of xml.elements(elem)) {\r\n\t\t\tconst childType = mmlTagMap[el.localName];\r\n\r\n\t\t\tif (childType) {\r\n\t\t\t\tresult.children.push(this.parseMathElement(el));\r\n\t\t\t} else if (el.localName == \"r\") {\r\n\t\t\t\tresult.children.push(this.parseRun(el));\r\n\t\t\t} else if (el.localName == propsTag) {\r\n\t\t\t\tresult.props = this.parseMathProperies(el);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseMathProperies(elem: Element): Record {\r\n\t\tconst result: Record = {};\r\n\r\n\t\tfor (const el of xml.elements(elem)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"chr\": result.char = xml.attr(el, \"val\"); break;\r\n\t\t\t\tcase \"degHide\": result.hideDegree = xml.boolAttr(el, \"val\"); break;\r\n\t\t\t\tcase \"begChr\": result.beginChar = xml.attr(el, \"val\"); break;\r\n\t\t\t\tcase \"endChr\": result.endChar = xml.attr(el, \"val\"); break;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseRunProperties(elem: Element, run: WmlRun) {\r\n\t\tthis.parseDefaultProperties(elem, run.cssStyle = {}, null, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"rStyle\":\r\n\t\t\t\t\trun.styleName = xml.attr(c, \"val\");\r\n\t\t\t\t\tbreak;\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\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tparseVmlPicture(elem: Element): OpenXmlElement {\r\n\t\tconst result = { type: DomType.VmlPicture, children: [] };\r\n\r\n\t\tfor (const el of xml.elements(elem)) {\r\n\t\t\tconst child = parseVmlElement(el);\r\n\t\t\tchild && result.children.push(child);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tcheckAlternateContent(elem: Element): Element {\r\n\t\tif (elem.localName != 'AlternateContent')\r\n\t\t\treturn elem;\r\n\r\n\t\tvar choice = xml.element(elem, \"Choice\");\r\n\r\n\t\tif (choice) {\r\n\t\t\tvar requires = xml.attr(choice, \"Requires\");\r\n\t\t\tvar namespaceURI = elem.lookupNamespaceURI(requires);\r\n\r\n\t\t\tif (supportedNamespaceURIs.includes(namespaceURI))\r\n\t\t\t\treturn choice.firstElementChild;\r\n\t\t}\r\n\r\n\t\treturn xml.element(elem, \"Fallback\")?.firstElementChild;\r\n\t}\r\n\r\n\tparseDrawing(node: Element): OpenXmlElement {\r\n\t\tfor (var n of xml.elements(node)) {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"inline\":\r\n\t\t\t\tcase \"anchor\":\r\n\t\t\t\t\treturn this.parseDrawingWrapper(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseDrawingWrapper(node: Element): OpenXmlElement {\r\n\t\tvar result = { type: DomType.Drawing, children: [], cssStyle: {} };\r\n\t\tvar isAnchor = node.localName == \"anchor\";\r\n\r\n\t\t//TODO\r\n\t\t// result.style[\"margin-left\"] = xml.sizeAttr(node, \"distL\", SizeType.Emu);\r\n\t\t// result.style[\"margin-top\"] = xml.sizeAttr(node, \"distT\", SizeType.Emu);\r\n\t\t// result.style[\"margin-right\"] = xml.sizeAttr(node, \"distR\", SizeType.Emu);\r\n\t\t// result.style[\"margin-bottom\"] = xml.sizeAttr(node, \"distB\", SizeType.Emu);\r\n\r\n\t\tlet wrapType: \"wrapTopAndBottom\" | \"wrapNone\" | null = null;\r\n\t\tlet simplePos = xml.boolAttr(node, \"simplePos\");\r\n\r\n\t\tlet posX = { relative: \"page\", align: \"left\", offset: \"0\" };\r\n\t\tlet posY = { relative: \"page\", align: \"top\", offset: \"0\" };\r\n\r\n\t\tfor (var n of xml.elements(node)) {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"simplePos\":\r\n\t\t\t\t\tif (simplePos) {\r\n\t\t\t\t\t\tposX.offset = xml.lengthAttr(n, \"x\", LengthUsage.Emu);\r\n\t\t\t\t\t\tposY.offset = xml.lengthAttr(n, \"y\", LengthUsage.Emu);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"extent\":\r\n\t\t\t\t\tresult.cssStyle[\"width\"] = xml.lengthAttr(n, \"cx\", LengthUsage.Emu);\r\n\t\t\t\t\tresult.cssStyle[\"height\"] = xml.lengthAttr(n, \"cy\", LengthUsage.Emu);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"positionH\":\r\n\t\t\t\tcase \"positionV\":\r\n\t\t\t\t\tif (!simplePos) {\r\n\t\t\t\t\t\tlet pos = n.localName == \"positionH\" ? posX : posY;\r\n\t\t\t\t\t\tvar alignNode = xml.element(n, \"align\");\r\n\t\t\t\t\t\tvar offsetNode = xml.element(n, \"posOffset\");\r\n\r\n\t\t\t\t\t\tpos.relative = xml.attr(n, \"relativeFrom\") ?? pos.relative;\r\n\r\n\t\t\t\t\t\tif (alignNode)\r\n\t\t\t\t\t\t\tpos.align = alignNode.textContent;\r\n\r\n\t\t\t\t\t\tif (offsetNode)\r\n\t\t\t\t\t\t\tpos.offset = xmlUtil.sizeValue(offsetNode, LengthUsage.Emu);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"wrapTopAndBottom\":\r\n\t\t\t\t\twrapType = \"wrapTopAndBottom\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"wrapNone\":\r\n\t\t\t\t\twrapType = \"wrapNone\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"graphic\":\r\n\t\t\t\t\tvar g = this.parseGraphic(n);\r\n\r\n\t\t\t\t\tif (g)\r\n\t\t\t\t\t\tresult.children.push(g);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (wrapType == \"wrapTopAndBottom\") {\r\n\t\t\tresult.cssStyle['display'] = 'block';\r\n\r\n\t\t\tif (posX.align) {\r\n\t\t\t\tresult.cssStyle['text-align'] = posX.align;\r\n\t\t\t\tresult.cssStyle['width'] = \"100%\";\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (wrapType == \"wrapNone\") {\r\n\t\t\tresult.cssStyle['display'] = 'block';\r\n\t\t\tresult.cssStyle['position'] = 'relative';\r\n\t\t\tresult.cssStyle[\"width\"] = \"0px\";\r\n\t\t\tresult.cssStyle[\"height\"] = \"0px\";\r\n\r\n\t\t\tif (posX.offset)\r\n\t\t\t\tresult.cssStyle[\"left\"] = posX.offset;\r\n\t\t\tif (posY.offset)\r\n\t\t\t\tresult.cssStyle[\"top\"] = posY.offset;\r\n\t\t}\r\n\t\telse if (isAnchor && (posX.align == 'left' || posX.align == 'right')) {\r\n\t\t\tresult.cssStyle[\"float\"] = posX.align;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseGraphic(elem: Element): OpenXmlElement {\r\n\t\tvar graphicData = xml.element(elem, \"graphicData\");\r\n\r\n\t\tfor (let n of xml.elements(graphicData)) {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"pic\":\r\n\t\t\t\t\treturn this.parsePicture(n);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tparsePicture(elem: Element): IDomImage {\r\n\t\tvar result = { type: DomType.Image, src: \"\", cssStyle: {} };\r\n\t\tvar blipFill = xml.element(elem, \"blipFill\");\r\n\t\tvar blip = xml.element(blipFill, \"blip\");\r\n\r\n\t\tresult.src = xml.attr(blip, \"embed\");\r\n\r\n\t\tvar spPr = xml.element(elem, \"spPr\");\r\n\t\tvar xfrm = xml.element(spPr, \"xfrm\");\r\n\r\n\t\tresult.cssStyle[\"position\"] = \"relative\";\r\n\r\n\t\tfor (var n of xml.elements(xfrm)) {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"ext\":\r\n\t\t\t\t\tresult.cssStyle[\"width\"] = xml.lengthAttr(n, \"cx\", LengthUsage.Emu);\r\n\t\t\t\t\tresult.cssStyle[\"height\"] = xml.lengthAttr(n, \"cy\", LengthUsage.Emu);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"off\":\r\n\t\t\t\t\tresult.cssStyle[\"left\"] = xml.lengthAttr(n, \"x\", LengthUsage.Emu);\r\n\t\t\t\t\tresult.cssStyle[\"top\"] = xml.lengthAttr(n, \"y\", LengthUsage.Emu);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTable(node: Element): WmlTable {\r\n\t\tvar result: WmlTable = { type: DomType.Table, children: [] };\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"tr\":\r\n\t\t\t\t\tresult.children.push(this.parseTableRow(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblGrid\":\r\n\t\t\t\t\tresult.columns = this.parseTableColumns(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblPr\":\r\n\t\t\t\t\tthis.parseTableProperties(c, result);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableColumns(node: Element): WmlTableColumn[] {\r\n\t\tvar result = [];\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"gridCol\":\r\n\t\t\t\t\tresult.push({ width: xml.lengthAttr(n, \"w\") });\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableProperties(elem: Element, table: WmlTable) {\r\n\t\ttable.cssStyle = {};\r\n\t\ttable.cellStyle = {};\r\n\r\n\t\tthis.parseDefaultProperties(elem, table.cssStyle, table.cellStyle, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"tblStyle\":\r\n\t\t\t\t\ttable.styleName = xml.attr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblLook\":\r\n\t\t\t\t\ttable.className = values.classNameOftblLook(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblpPr\":\r\n\t\t\t\t\tthis.parseTablePosition(c, table);\r\n\t\t\t\t\tbreak;\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\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tswitch (table.cssStyle[\"text-align\"]) {\r\n\t\t\tcase \"center\":\r\n\t\t\t\tdelete table.cssStyle[\"text-align\"];\r\n\t\t\t\ttable.cssStyle[\"margin-left\"] = \"auto\";\r\n\t\t\t\ttable.cssStyle[\"margin-right\"] = \"auto\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"right\":\r\n\t\t\t\tdelete table.cssStyle[\"text-align\"];\r\n\t\t\t\ttable.cssStyle[\"margin-left\"] = \"auto\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tparseTablePosition(node: Element, table: WmlTable) {\r\n\t\tvar topFromText = xml.lengthAttr(node, \"topFromText\");\r\n\t\tvar bottomFromText = xml.lengthAttr(node, \"bottomFromText\");\r\n\t\tvar rightFromText = xml.lengthAttr(node, \"rightFromText\");\r\n\t\tvar leftFromText = xml.lengthAttr(node, \"leftFromText\");\r\n\r\n\t\ttable.cssStyle[\"float\"] = 'left';\r\n\t\ttable.cssStyle[\"margin-bottom\"] = values.addSize(table.cssStyle[\"margin-bottom\"], bottomFromText);\r\n\t\ttable.cssStyle[\"margin-left\"] = values.addSize(table.cssStyle[\"margin-left\"], leftFromText);\r\n\t\ttable.cssStyle[\"margin-right\"] = values.addSize(table.cssStyle[\"margin-right\"], rightFromText);\r\n\t\ttable.cssStyle[\"margin-top\"] = values.addSize(table.cssStyle[\"margin-top\"], topFromText);\r\n\t}\r\n\r\n\tparseTableRow(node: Element): WmlTableRow {\r\n\t\tvar result: WmlTableRow = { type: DomType.Row, children: [] };\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"tc\":\r\n\t\t\t\t\tresult.children.push(this.parseTableCell(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"trPr\":\r\n\t\t\t\t\tthis.parseTableRowProperties(c, result);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableRowProperties(elem: Element, row: WmlTableRow) {\r\n\t\trow.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"cnfStyle\":\r\n\t\t\t\t\trow.className = values.classNameOfCnfStyle(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblHeader\":\r\n\t\t\t\t\trow.isHeader = xml.boolAttr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tparseTableCell(node: Element): OpenXmlElement {\r\n\t\tvar result: WmlTableCell = { type: DomType.Cell, children: [] };\r\n\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"tbl\":\r\n\t\t\t\t\tresult.children.push(this.parseTable(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"p\":\r\n\t\t\t\t\tresult.children.push(this.parseParagraph(c));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tcPr\":\r\n\t\t\t\t\tthis.parseTableCellProperties(c, result);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableCellProperties(elem: Element, cell: WmlTableCell) {\r\n\t\tcell.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"gridSpan\":\r\n\t\t\t\t\tcell.span = xml.intAttr(c, \"val\", null);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vMerge\":\r\n\t\t\t\t\tcell.verticalMerge = xml.attr(c, \"val\") ?? \"continue\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"cnfStyle\":\r\n\t\t\t\t\tcell.className = values.classNameOfCnfStyle(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tparseDefaultProperties(elem: Element, style: Record = null, childStyle: Record = null, handler: (prop: Element) => boolean = null): Record {\r\n\t\tstyle = style || {};\r\n\r\n\t\txmlUtil.foreach(elem, c => {\r\n\t\t\tif (handler?.(c))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"jc\":\r\n\t\t\t\t\tstyle[\"text-align\"] = values.valueOfJc(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"textAlignment\":\r\n\t\t\t\t\tstyle[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"color\":\r\n\t\t\t\t\tstyle[\"color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.color);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sz\":\r\n\t\t\t\t\tstyle[\"font-size\"] = style[\"min-height\"] = xml.lengthAttr(c, \"val\", LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shd\":\r\n\t\t\t\t\tstyle[\"background-color\"] = xmlUtil.colorAttr(c, \"fill\", null, autos.shd);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"highlight\":\r\n\t\t\t\t\tstyle[\"background-color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.highlight);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vertAlign\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t// style.verticalAlign = values.valueOfVertAlign(c);\r\n\t\t\t\t\tbreak;\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\r\n\t\t\t\tcase \"tcW\":\r\n\t\t\t\t\tif (this.options.ignoreWidth)\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblW\":\r\n\t\t\t\t\tstyle[\"width\"] = values.valueOfSize(c, \"w\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"trHeight\":\r\n\t\t\t\t\tthis.parseTrHeight(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"strike\":\r\n\t\t\t\t\tstyle[\"text-decoration\"] = xml.boolAttr(c, \"val\", true) ? \"line-through\" : \"none\"\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"b\":\r\n\t\t\t\t\tstyle[\"font-weight\"] = xml.boolAttr(c, \"val\", true) ? \"bold\" : \"normal\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"i\":\r\n\t\t\t\t\tstyle[\"font-style\"] = xml.boolAttr(c, \"val\", true) ? \"italic\" : \"normal\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"caps\":\r\n\t\t\t\t\tstyle[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"uppercase\" : \"none\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"smallCaps\":\r\n\t\t\t\t\tstyle[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"lowercase\" : \"none\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"u\":\r\n\t\t\t\t\tthis.parseUnderline(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ind\":\r\n\t\t\t\tcase \"tblInd\":\r\n\t\t\t\t\tthis.parseIndentation(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rFonts\":\r\n\t\t\t\t\tthis.parseFont(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblBorders\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, childStyle || style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblCellSpacing\":\r\n\t\t\t\t\tstyle[\"border-spacing\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tstyle[\"border-collapse\"] = \"separate\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pBdr\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bdr\":\r\n\t\t\t\t\tstyle[\"border\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tcBorders\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vanish\":\r\n\t\t\t\t\tif (xml.boolAttr(c, \"val\", true))\r\n\t\t\t\t\t\tstyle[\"display\"] = \"none\";\r\n\t\t\t\t\tbreak;\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\t\t\t\tcase \"noWrap\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//style[\"white-space\"] = \"nowrap\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblCellMar\":\r\n\t\t\t\tcase \"tcMar\":\r\n\t\t\t\t\tthis.parseMarginProperties(c, childStyle || style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblLayout\":\r\n\t\t\t\t\tstyle[\"table-layout\"] = values.valueOfTblLayout(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vAlign\":\r\n\t\t\t\t\tstyle[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"spacing\":\r\n\t\t\t\t\tif (elem.localName == \"pPr\")\r\n\t\t\t\t\t\tthis.parseSpacing(c, style);\r\n\t\t\t\t\tbreak;\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\t\t\t\tcase \"webHidden\": //TODO - maybe web-hidden should be implemented\r\n\t\t\t\tcase \"pageBreakBefore\": //TODO - maybe ignore \r\n\t\t\t\tcase \"suppressLineNumbers\": //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\t\t\t\tcase \"widowControl\": //TODO - maybe ignore \r\n\t\t\t\tcase \"bidi\": //TODO - maybe ignore\r\n\t\t\t\tcase \"rtl\": //TODO - maybe ignore\r\n\t\t\t\tcase \"noProof\": //ignore spellcheck\r\n\t\t\t\t\t//TODO ignore\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (this.options.debug)\r\n\t\t\t\t\t\tconsole.warn(`DOCX: Unknown document element: ${elem.localName}.${c.localName}`);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn style;\r\n\t}\r\n\r\n\tparseUnderline(node: Element, style: Record) {\r\n\t\tvar val = xml.attr(node, \"val\");\r\n\r\n\t\tif (val == null)\r\n\t\t\treturn;\r\n\r\n\t\tswitch (val) {\r\n\t\t\tcase \"dash\":\r\n\t\t\tcase \"dashDotDotHeavy\":\r\n\t\t\tcase \"dashDotHeavy\":\r\n\t\t\tcase \"dashedHeavy\":\r\n\t\t\tcase \"dashLong\":\r\n\t\t\tcase \"dashLongHeavy\":\r\n\t\t\tcase \"dotDash\":\r\n\t\t\tcase \"dotDotDash\":\r\n\t\t\t\tstyle[\"text-decoration-style\"] = \"dashed\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"dotted\":\r\n\t\t\tcase \"dottedHeavy\":\r\n\t\t\t\tstyle[\"text-decoration-style\"] = \"dotted\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"double\":\r\n\t\t\t\tstyle[\"text-decoration-style\"] = \"double\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"single\":\r\n\t\t\tcase \"thick\":\r\n\t\t\t\tstyle[\"text-decoration\"] = \"underline\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"wave\":\r\n\t\t\tcase \"wavyDouble\":\r\n\t\t\tcase \"wavyHeavy\":\r\n\t\t\t\tstyle[\"text-decoration-style\"] = \"wavy\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"words\":\r\n\t\t\t\tstyle[\"text-decoration\"] = \"underline\";\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"none\":\r\n\t\t\t\tstyle[\"text-decoration\"] = \"none\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tvar col = xmlUtil.colorAttr(node, \"color\");\r\n\r\n\t\tif (col)\r\n\t\t\tstyle[\"text-decoration-color\"] = col;\r\n\t}\r\n\r\n\tparseFont(node: Element, style: Record) {\r\n\t\tvar ascii = xml.attr(node, \"ascii\");\r\n\t\tvar asciiTheme = values.themeValue(node, \"asciiTheme\");\r\n\r\n\t\tvar fonts = [ascii, asciiTheme].filter(x => x).join(', ');\r\n\r\n\t\tif (fonts.length > 0)\r\n\t\t\tstyle[\"font-family\"] = fonts;\r\n\t}\r\n\r\n\tparseIndentation(node: Element, style: Record) {\r\n\t\tvar firstLine = xml.lengthAttr(node, \"firstLine\");\r\n\t\tvar hanging = xml.lengthAttr(node, \"hanging\");\r\n\t\tvar left = xml.lengthAttr(node, \"left\");\r\n\t\tvar start = xml.lengthAttr(node, \"start\");\r\n\t\tvar right = xml.lengthAttr(node, \"right\");\r\n\t\tvar end = xml.lengthAttr(node, \"end\");\r\n\r\n\t\tif (firstLine) style[\"text-indent\"] = firstLine;\r\n\t\tif (hanging) style[\"text-indent\"] = `-${hanging}`;\r\n\t\tif (left || start) style[\"margin-left\"] = left || start;\r\n\t\tif (right || end) style[\"margin-right\"] = right || end;\r\n\t}\r\n\r\n\tparseSpacing(node: Element, style: Record) {\r\n\t\tvar before = xml.lengthAttr(node, \"before\");\r\n\t\tvar after = xml.lengthAttr(node, \"after\");\r\n\t\tvar line = xml.intAttr(node, \"line\", null);\r\n\t\tvar lineRule = xml.attr(node, \"lineRule\");\r\n\r\n\t\tif (before) style[\"margin-top\"] = before;\r\n\t\tif (after) style[\"margin-bottom\"] = after;\r\n\r\n\t\tif (line !== null) {\r\n\t\t\tswitch (lineRule) {\r\n\t\t\t\tcase \"auto\":\r\n\t\t\t\t\tstyle[\"line-height\"] = `${(line / 240).toFixed(2)}`;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"atLeast\":\r\n\t\t\t\t\tstyle[\"line-height\"] = `calc(100% + ${line / 20}pt)`;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstyle[\"line-height\"] = style[\"min-height\"] = `${line / 20}pt`\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseMarginProperties(node: Element, output: Record) {\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\toutput[\"padding-left\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\toutput[\"padding-right\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"top\":\r\n\t\t\t\t\toutput[\"padding-top\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\toutput[\"padding-bottom\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tparseTrHeight(node: Element, output: Record) {\r\n\t\tswitch (xml.attr(node, \"hRule\")) {\r\n\t\t\tcase \"exact\":\r\n\t\t\t\toutput[\"height\"] = xml.lengthAttr(node, \"val\");\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"atLeast\":\r\n\t\t\tdefault:\r\n\t\t\t\toutput[\"height\"] = xml.lengthAttr(node, \"val\");\r\n\t\t\t\t// min-height doesn't work for tr\r\n\t\t\t\t//output[\"min-height\"] = xml.sizeAttr(node, \"val\"); \r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tparseBorderProperties(node: Element, output: Record) {\r\n\t\txmlUtil.foreach(node, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"start\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\toutput[\"border-left\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"end\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\toutput[\"border-right\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"top\":\r\n\t\t\t\t\toutput[\"border-top\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\toutput[\"border-bottom\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\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\tstatic foreach(node: Element, cb: (n: Element) => void) {\r\n\t\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\t\tlet n = node.childNodes[i];\r\n\r\n\t\t\tif (n.nodeType == Node.ELEMENT_NODE)\r\n\t\t\t\tcb(n);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic colorAttr(node: Element, attrName: string, defValue: string = null, autoColor: string = 'black') {\r\n\t\tvar v = xml.attr(node, attrName);\r\n\r\n\t\tif (v) {\r\n\t\t\tif (v == \"auto\") {\r\n\t\t\t\treturn autoColor;\r\n\t\t\t} else if (knownColors.includes(v)) {\r\n\t\t\t\treturn v;\r\n\t\t\t}\r\n\r\n\t\t\treturn `#${v}`;\r\n\t\t}\r\n\r\n\t\tvar themeColor = xml.attr(node, \"themeColor\");\r\n\r\n\t\treturn themeColor ? `var(--docx-${themeColor}-color)` : defValue;\r\n\t}\r\n\r\n\tstatic sizeValue(node: Element, type: LengthUsageType = LengthUsage.Dxa) {\r\n\t\treturn convertLength(node.textContent, type);\r\n\t}\r\n}\r\n\r\nclass values {\r\n\tstatic themeValue(c: Element, attr: string) {\r\n\t\tvar val = xml.attr(c, attr);\r\n\t\treturn val ? `var(--docx-${val}-font)` : null;\r\n\t}\r\n\r\n\tstatic valueOfSize(c: Element, attr: string) {\r\n\t\tvar type = LengthUsage.Dxa;\r\n\r\n\t\tswitch (xml.attr(c, \"type\")) {\r\n\t\t\tcase \"dxa\": break;\r\n\t\t\tcase \"pct\": type = LengthUsage.Percent; break;\r\n\t\t\tcase \"auto\": return \"auto\";\r\n\t\t}\r\n\r\n\t\treturn xml.lengthAttr(c, attr, type);\r\n\t}\r\n\r\n\tstatic valueOfMargin(c: Element) {\r\n\t\treturn xml.lengthAttr(c, \"w\");\r\n\t}\r\n\r\n\tstatic valueOfBorder(c: Element) {\r\n\t\tvar type = xml.attr(c, \"val\");\r\n\r\n\t\tif (type == \"nil\")\r\n\t\t\treturn \"none\";\r\n\r\n\t\tvar color = xmlUtil.colorAttr(c, \"color\");\r\n\t\tvar size = xml.lengthAttr(c, \"sz\", LengthUsage.Border);\r\n\r\n\t\treturn `${size} solid ${color == \"auto\" ? autos.borderColor : color}`;\r\n\t}\r\n\r\n\tstatic valueOfTblLayout(c: Element) {\r\n\t\tvar type = xml.attr(c, \"val\");\r\n\t\treturn type == \"fixed\" ? \"fixed\" : \"auto\";\r\n\t}\r\n\r\n\tstatic classNameOfCnfStyle(c: Element) {\r\n\t\tconst 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\t}\r\n\r\n\tstatic valueOfJc(c: Element) {\r\n\t\tvar type = xml.attr(c, \"val\");\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"start\":\r\n\t\t\tcase \"left\": return \"left\";\r\n\t\t\tcase \"center\": return \"center\";\r\n\t\t\tcase \"end\":\r\n\t\t\tcase \"right\": return \"right\";\r\n\t\t\tcase \"both\": return \"justify\";\r\n\t\t}\r\n\r\n\t\treturn type;\r\n\t}\r\n\r\n\tstatic valueOfVertAlign(c: Element, asTagName: boolean = false) {\r\n\t\tvar type = xml.attr(c, \"val\");\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"subscript\": return \"sub\";\r\n\t\t\tcase \"superscript\": return asTagName ? \"sup\" : \"super\";\r\n\t\t}\r\n\r\n\t\treturn asTagName ? null : type;\r\n\t}\r\n\r\n\tstatic valueOfTextAlignment(c: Element) {\r\n\t\tvar type = xml.attr(c, \"val\");\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"auto\":\r\n\t\t\tcase \"baseline\": return \"baseline\";\r\n\t\t\tcase \"top\": return \"top\";\r\n\t\t\tcase \"center\": return \"middle\";\r\n\t\t\tcase \"bottom\": return \"bottom\";\r\n\t\t}\r\n\r\n\t\treturn type;\r\n\t}\r\n\r\n\tstatic addSize(a: string, b: string): string {\r\n\t\tif (a == null) return b;\r\n\t\tif (b == null) return a;\r\n\r\n\t\treturn `calc(${a} + ${b})`; //TODO\r\n\t}\r\n\r\n\tstatic classNameOftblLook(c: Element) {\r\n\t\tconst val = xml.hexAttr(c, \"val\", 0);\r\n\t\tlet className = \"\";\r\n\r\n\t\tif (xml.boolAttr(c, \"firstRow\") || (val & 0x0020)) className += \" first-row\";\r\n\t\tif (xml.boolAttr(c, \"lastRow\") || (val & 0x0040)) className += \" last-row\";\r\n\t\tif (xml.boolAttr(c, \"firstColumn\") || (val & 0x0080)) className += \" first-col\";\r\n\t\tif (xml.boolAttr(c, \"lastColumn\") || (val & 0x0100)) className += \" last-col\";\r\n\t\tif (xml.boolAttr(c, \"noHBand\") || (val & 0x0200)) className += \" no-hband\";\r\n\t\tif (xml.boolAttr(c, \"noVBand\") || (val & 0x0400)) className += \" no-vband\";\r\n\r\n\t\treturn className.trim();\r\n\t}\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 = {};\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 = {\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 = {};\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\tmath: \"http://schemas.openxmlformats.org/officeDocument/2006/math\"\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 = {\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: \"\" },\r\n VmlEmu: { mul: 1 / 12700, unit: \"\" },\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\tVmlPicture = \"vmlPicture\",\r\n\tMmlMath = \"mmlMath\",\r\n\tMmlMathParagraph = \"mmlMathParagraph\",\r\n\tMmlFraction = \"mmlFraction\",\r\n\tMmlNumerator = \"mmlNumerator\",\r\n\tMmlDenominator = \"mmlDenominator\",\r\n\tMmlRadical = \"mmlRadical\",\r\n\tMmlBase = \"mmlBase\",\r\n\tMmlDegree = \"mmlDegree\",\r\n\tMmlSuperscript = \"mmlSuperscript\",\r\n\tMmlSubscript = \"mmlSubscript\",\r\n\tMmlSubArgument = \"mmlSubArgument\",\r\n\tMmlSuperArgument = \"mmlSuperArgument\",\r\n\tMmlNary = \"mmlNary\",\r\n\tMmlDelimiter = \"mmlDelimiter\",\r\n\tVmlElement = \"vmlElement\"\r\n}\r\n\r\nexport interface OpenXmlElement {\r\n type: DomType;\r\n children?: OpenXmlElement[];\r\n cssStyle?: Record;\r\n props?: Record;\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\tid?: string;\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;\r\n\r\n\tcolBandSize?: number;\r\n\trowBandSize?: number;\r\n}\r\n\r\nexport interface WmlTableRow extends OpenXmlElement {\r\n\tisHeader?: boolean;\r\n}\r\n\r\nexport interface WmlTableCell extends OpenXmlElement {\r\n\tverticalMerge?: 'restart' | 'continue' | string;\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;\r\n rStyle: Record;\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 = {};\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 => {\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 = {};\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 = {};\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 = {};\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 => {\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\tuseMathMLPolyfill: 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\tuseMathMLPolyfill: false\r\n}\r\n\r\nexport function praseAsync(data: Blob | any, userOptions: Partial = null): Promise {\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 = null): Promise {\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 = {\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 = {};\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 = {};\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 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 {\r\n protected createRootElement(): WmlHeader {\r\n return new WmlHeader();\r\n }\r\n}\r\n\r\nexport class FooterPart extends BaseHeaderFooterPart {\r\n protected createRootElement(): WmlFooter {\r\n return new WmlFooter();\r\n }\r\n}","import { WordDocument } from './word-document';\r\nimport {\r\n\tDomType, WmlTable, IDomNumbering,\r\n\tWmlHyperlink, IDomImage, OpenXmlElement, WmlTableColumn, WmlTableCell, WmlText, WmlSymbol, WmlBreak, WmlNoteReference\r\n} from './document/dom';\r\nimport { 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, isString, 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\nimport mathMLCSS from \"./mathml.scss\";\r\nimport { VmlElement } from './vml/vml';\r\n\r\nconst ns = {\r\n\tsvg: \"http://www.w3.org/2000/svg\",\r\n\tmathML: \"http://www.w3.org/1998/Math/MathML\"\r\n}\r\n\r\ninterface CellPos {\r\n\tcol: number;\r\n\trow: number;\r\n}\r\n\r\ntype CellVerticalMergeType = Record;\r\n\r\nexport class HtmlRenderer {\r\n\r\n\tclassName: string = \"docx\";\r\n\tdocument: WordDocument;\r\n\toptions: Options;\r\n\tstyleMap: Record = {};\r\n\tcurrentPart: Part = null;\r\n\r\n\ttableVerticalMerges: CellVerticalMergeType[] = [];\r\n\tcurrentVerticalMerge: CellVerticalMergeType = null;\r\n\ttableCellPositions: CellPos[] = [];\r\n\tcurrentCellPosition: CellPos = null;\r\n\r\n\tfootnoteMap: Record = {};\r\n\tendnoteMap: Record = {};\r\n\tcurrentFootnoteIds: string[];\r\n\tcurrentEndnoteIds: string[] = [];\r\n\tusedHederFooterParts: any[] = [];\r\n\r\n\tdefaultTabSize: string;\r\n\tcurrentTabs: any[] = [];\r\n\ttabsTimeout: any = 0;\r\n\r\n\tconstructor(public htmlDocument: Document) {\r\n\t}\r\n\r\n\trender(document: WordDocument, bodyContainer: HTMLElement, styleContainer: HTMLElement = null, options: Options) {\r\n\t\tthis.document = document;\r\n\t\tthis.options = options;\r\n\t\tthis.className = options.className;\r\n\t\tthis.styleMap = null;\r\n\r\n\t\tstyleContainer = styleContainer || bodyContainer;\r\n\r\n\t\tremoveAllElements(styleContainer);\r\n\t\tremoveAllElements(bodyContainer);\r\n\r\n\t\tappendComment(styleContainer, \"docxjs library predefined styles\");\r\n\t\tstyleContainer.appendChild(this.renderDefaultStyle());\r\n\r\n\t\tif (!window.MathMLElement && options.useMathMLPolyfill) {\r\n\t\t\tappendComment(styleContainer, \"docxjs mathml polyfill styles\");\r\n\t\t\tstyleContainer.appendChild(createStyleElement(mathMLCSS));\r\n\t\t} \r\n\r\n\t\tif (document.themePart) {\r\n\t\t\tappendComment(styleContainer, \"docxjs document theme values\");\r\n\t\t\tthis.renderTheme(document.themePart, styleContainer);\r\n\t\t}\r\n\r\n\t\tif (document.stylesPart != null) {\r\n\t\t\tthis.styleMap = this.processStyles(document.stylesPart.styles);\r\n\r\n\t\t\tappendComment(styleContainer, \"docxjs document styles\");\r\n\t\t\tstyleContainer.appendChild(this.renderStyles(document.stylesPart.styles));\r\n\t\t}\r\n\r\n\t\tif (document.numberingPart) {\r\n\t\t\tthis.prodessNumberings(document.numberingPart.domNumberings);\r\n\r\n\t\t\tappendComment(styleContainer, \"docxjs document numbering styles\");\r\n\t\t\tstyleContainer.appendChild(this.renderNumbering(document.numberingPart.domNumberings, styleContainer));\r\n\t\t\t//styleContainer.appendChild(this.renderNumbering2(document.numberingPart, styleContainer));\r\n\t\t}\r\n\r\n\t\tif (document.footnotesPart) {\r\n\t\t\tthis.footnoteMap = keyBy(document.footnotesPart.notes, x => x.id);\r\n\t\t}\r\n\r\n\t\tif (document.endnotesPart) {\r\n\t\t\tthis.endnoteMap = keyBy(document.endnotesPart.notes, x => x.id);\r\n\t\t}\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\t\tif (!options.ignoreFonts && document.fontTablePart)\r\n\t\t\tthis.renderFontTable(document.fontTablePart, styleContainer);\r\n\r\n\t\tvar sectionElements = this.renderSections(document.documentPart.body);\r\n\r\n\t\tif (this.options.inWrapper) {\r\n\t\t\tbodyContainer.appendChild(this.renderWrapper(sectionElements));\r\n\t\t} else {\r\n\t\t\tappendChildren(bodyContainer, sectionElements);\r\n\t\t}\r\n\r\n\t\tthis.refreshTabStops();\r\n\t}\r\n\r\n\trenderTheme(themePart: ThemePart, styleContainer: HTMLElement) {\r\n\t\tconst variables = {};\r\n\t\tconst fontScheme = themePart.theme?.fontScheme;\r\n\r\n\t\tif (fontScheme) {\r\n\t\t\tif (fontScheme.majorFont) {\r\n\t\t\t\tvariables['--docx-majorHAnsi-font'] = fontScheme.majorFont.latinTypeface;\r\n\t\t\t}\r\n\r\n\t\t\tif (fontScheme.minorFont) {\r\n\t\t\t\tvariables['--docx-minorHAnsi-font'] = fontScheme.minorFont.latinTypeface;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst colorScheme = themePart.theme?.colorScheme;\r\n\r\n\t\tif (colorScheme) {\r\n\t\t\tfor (let [k, v] of Object.entries(colorScheme.colors)) {\r\n\t\t\t\tvariables[`--docx-${k}-color`] = `#${v}`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst cssText = this.styleToString(`.${this.className}`, variables);\r\n\t\tstyleContainer.appendChild(createStyleElement(cssText));\r\n\t}\r\n\r\n\trenderFontTable(fontsPart: FontTablePart, styleContainer: HTMLElement) {\r\n\t\tfor (let f of fontsPart.fonts) {\r\n\t\t\tfor (let ref of f.embedFontRefs) {\r\n\t\t\t\tthis.document.loadFont(ref.id, ref.key).then(fontData => {\r\n\t\t\t\t\tconst cssValues = {\r\n\t\t\t\t\t\t'font-family': f.name,\r\n\t\t\t\t\t\t'src': `url(${fontData})`\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (ref.type == \"bold\" || ref.type == \"boldItalic\") {\r\n\t\t\t\t\t\tcssValues['font-weight'] = 'bold';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (ref.type == \"italic\" || ref.type == \"boldItalic\") {\r\n\t\t\t\t\t\tcssValues['font-style'] = 'italic';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tappendComment(styleContainer, `docxjs ${f.name} font`);\r\n\t\t\t\t\tconst cssText = this.styleToString(\"@font-face\", cssValues);\r\n\t\t\t\t\tstyleContainer.appendChild(createStyleElement(cssText));\r\n\t\t\t\t\tthis.refreshTabStops();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprocessStyleName(className: string): string {\r\n\t\treturn className ? `${this.className}_${escapeClassName(className)}` : this.className;\r\n\t}\r\n\r\n\tprocessStyles(styles: IDomStyle[]) {\r\n\t\tconst stylesMap = keyBy(styles.filter(x => x.id != null), x => x.id);\r\n\r\n\t\tfor (const style of styles.filter(x => x.basedOn)) {\r\n\t\t\tvar baseStyle = stylesMap[style.basedOn];\r\n\r\n\t\t\tif (baseStyle) {\r\n\t\t\t\tstyle.paragraphProps = mergeDeep(style.paragraphProps, baseStyle.paragraphProps);\r\n\t\t\t\tstyle.runProps = mergeDeep(style.runProps, baseStyle.runProps);\r\n\r\n\t\t\t\tfor (const baseValues of baseStyle.styles) {\r\n\t\t\t\t\tconst styleValues = style.styles.find(x => x.target == baseValues.target);\r\n\r\n\t\t\t\t\tif (styleValues) {\r\n\t\t\t\t\t\tthis.copyStyleProperties(baseValues.values, styleValues.values);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstyle.styles.push({ ...baseValues, values: { ...baseValues.values } });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (this.options.debug)\r\n\t\t\t\tconsole.warn(`Can't find base style ${style.basedOn}`);\r\n\t\t}\r\n\r\n\t\tfor (let style of styles) {\r\n\t\t\tstyle.cssName = this.processStyleName(style.id);\r\n\t\t}\r\n\r\n\t\treturn stylesMap;\r\n\t}\r\n\r\n\tprodessNumberings(numberings: IDomNumbering[]) {\r\n\t\tfor (let num of numberings.filter(n => n.pStyleName)) {\r\n\t\t\tconst style = this.findStyle(num.pStyleName);\r\n\r\n\t\t\tif (style?.paragraphProps?.numbering) {\r\n\t\t\t\tstyle.paragraphProps.numbering.level = num.level;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprocessElement(element: OpenXmlElement) {\r\n\t\tif (element.children) {\r\n\t\t\tfor (var e of element.children) {\r\n\t\t\t\te.parent = element;\r\n\r\n\t\t\t\tif (e.type == DomType.Table) {\r\n\t\t\t\t\tthis.processTable(e);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processElement(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprocessTable(table: WmlTable) {\r\n\t\tfor (var r of table.children) {\r\n\t\t\tfor (var c of r.children) {\r\n\t\t\t\tc.cssStyle = this.copyStyleProperties(table.cellStyle, c.cssStyle, [\r\n\t\t\t\t\t\"border-left\", \"border-right\", \"border-top\", \"border-bottom\",\r\n\t\t\t\t\t\"padding-left\", \"padding-right\", \"padding-top\", \"padding-bottom\"\r\n\t\t\t\t]);\r\n\r\n\t\t\t\tthis.processElement(c);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcopyStyleProperties(input: Record, output: Record, attrs: string[] = null): Record {\r\n\t\tif (!input)\r\n\t\t\treturn output;\r\n\r\n\t\tif (output == null) output = {};\r\n\t\tif (attrs == null) attrs = Object.getOwnPropertyNames(input);\r\n\r\n\t\tfor (var key of attrs) {\r\n\t\t\tif (input.hasOwnProperty(key) && !output.hasOwnProperty(key))\r\n\t\t\t\toutput[key] = input[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcreateSection(className: string, props: SectionProperties) {\r\n\t\tvar elem = this.createElement(\"section\", { className });\r\n\r\n\t\tif (props) {\r\n\t\t\tif (props.pageMargins) {\r\n\t\t\t\telem.style.paddingLeft = props.pageMargins.left;\r\n\t\t\t\telem.style.paddingRight = props.pageMargins.right;\r\n\t\t\t\telem.style.paddingTop = props.pageMargins.top;\r\n\t\t\t\telem.style.paddingBottom = props.pageMargins.bottom;\r\n\t\t\t}\r\n\r\n\t\t\tif (props.pageSize) {\r\n\t\t\t\tif (!this.options.ignoreWidth)\r\n\t\t\t\t\telem.style.width = props.pageSize.width;\r\n\t\t\t\tif (!this.options.ignoreHeight)\r\n\t\t\t\t\telem.style.minHeight = props.pageSize.height;\r\n\t\t\t}\r\n\r\n\t\t\tif (props.columns && props.columns.numberOfColumns) {\r\n\t\t\t\telem.style.columnCount = `${props.columns.numberOfColumns}`;\r\n\t\t\t\telem.style.columnGap = props.columns.space;\r\n\r\n\t\t\t\tif (props.columns.separator) {\r\n\t\t\t\t\telem.style.columnRule = \"1px solid black\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn elem;\r\n\t}\r\n\r\n\trenderSections(document: DocumentElement): HTMLElement[] {\r\n\t\tconst result = [];\r\n\r\n\t\tthis.processElement(document);\r\n\t\tconst sections = this.splitBySection(document.children);\r\n\t\tlet prevProps = null;\r\n\r\n\t\tfor (let i = 0, l = sections.length; i < l; i++) {\r\n\t\t\tthis.currentFootnoteIds = [];\r\n\r\n\t\t\tconst section = sections[i];\r\n\t\t\tconst props = section.sectProps || document.props;\r\n\t\t\tconst sectionElement = this.createSection(this.className, props);\r\n\t\t\tthis.renderStyleValues(document.cssStyle, sectionElement);\r\n\r\n\t\t\tthis.options.renderHeaders && this.renderHeaderFooter(props.headerRefs, props,\r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n\t\t\tvar contentElement = this.createElement(\"article\");\r\n\t\t\tthis.renderElements(section.elements, contentElement);\r\n\t\t\tsectionElement.appendChild(contentElement);\r\n\r\n\t\t\tif (this.options.renderFootnotes) {\r\n\t\t\t\tthis.renderNotes(this.currentFootnoteIds, this.footnoteMap, sectionElement);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.renderEndnotes && i == l - 1) {\r\n\t\t\t\tthis.renderNotes(this.currentEndnoteIds, this.endnoteMap, sectionElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.options.renderFooters && this.renderHeaderFooter(props.footerRefs, props,\r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n\t\t\tresult.push(sectionElement);\r\n\t\t\tprevProps = props;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderHeaderFooter(refs: FooterHeaderReference[], props: SectionProperties, page: number, firstOfSection: boolean, into: HTMLElement) {\r\n\t\tif (!refs) return;\r\n\r\n\t\tvar ref = (props.titlePage && firstOfSection ? refs.find(x => x.type == \"first\") : null)\r\n\t\t\t?? (page % 2 == 1 ? refs.find(x => x.type == \"even\") : null)\r\n\t\t\t?? refs.find(x => x.type == \"default\");\r\n\r\n\t\tvar part = ref && this.document.findPartByRelId(ref.id, this.document.documentPart) as BaseHeaderFooterPart;\r\n\r\n\t\tif (part) {\r\n\t\t\tthis.currentPart = part;\r\n\t\t\tif (!this.usedHederFooterParts.includes(part.path)) {\r\n\t\t\t\tthis.processElement(part.rootElement);\r\n\t\t\t\tthis.usedHederFooterParts.push(part.path);\r\n\t\t\t}\r\n\t\t\tthis.renderElements([part.rootElement], into);\r\n\t\t\tthis.currentPart = null;\r\n\t\t}\r\n\t}\r\n\r\n\tisPageBreakElement(elem: OpenXmlElement): boolean {\r\n\t\tif (elem.type != DomType.Break)\r\n\t\t\treturn false;\r\n\r\n\t\tif ((elem as WmlBreak).break == \"lastRenderedPageBreak\")\r\n\t\t\treturn !this.options.ignoreLastRenderedPageBreak;\r\n\r\n\t\treturn (elem as WmlBreak).break == \"page\";\r\n\t}\r\n\r\n\tsplitBySection(elements: OpenXmlElement[]): { sectProps: SectionProperties, elements: OpenXmlElement[] }[] {\r\n\t\tvar current = { sectProps: null, elements: [] };\r\n\t\tvar result = [current];\r\n\r\n\t\tfor (let elem of elements) {\r\n\t\t\tif (elem.type == DomType.Paragraph) {\r\n\t\t\t\tconst s = this.findStyle((elem as WmlParagraph).styleName);\r\n\r\n\t\t\t\tif (s?.paragraphProps?.pageBreakBefore) {\r\n\t\t\t\t\tcurrent.sectProps = sectProps;\r\n\t\t\t\t\tcurrent = { sectProps: null, elements: [] };\r\n\t\t\t\t\tresult.push(current);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcurrent.elements.push(elem);\r\n\r\n\t\t\tif (elem.type == DomType.Paragraph) {\r\n\t\t\t\tconst p = elem as WmlParagraph;\r\n\r\n\t\t\t\tvar sectProps = p.sectionProps;\r\n\t\t\t\tvar pBreakIndex = -1;\r\n\t\t\t\tvar rBreakIndex = -1;\r\n\r\n\t\t\t\tif (this.options.breakPages && p.children) {\r\n\t\t\t\t\tpBreakIndex = p.children.findIndex(r => {\r\n\t\t\t\t\t\trBreakIndex = r.children?.findIndex(this.isPageBreakElement.bind(this)) ?? -1;\r\n\t\t\t\t\t\treturn rBreakIndex != -1;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (sectProps || pBreakIndex != -1) {\r\n\t\t\t\t\tcurrent.sectProps = sectProps;\r\n\t\t\t\t\tcurrent = { sectProps: null, elements: [] };\r\n\t\t\t\t\tresult.push(current);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (pBreakIndex != -1) {\r\n\t\t\t\t\tlet breakRun = p.children[pBreakIndex];\r\n\t\t\t\t\tlet splitRun = rBreakIndex < breakRun.children.length - 1;\r\n\r\n\t\t\t\t\tif (pBreakIndex < p.children.length - 1 || splitRun) {\r\n\t\t\t\t\t\tvar children = elem.children;\r\n\t\t\t\t\t\tvar newParagraph = { ...elem, children: children.slice(pBreakIndex) };\r\n\t\t\t\t\t\telem.children = children.slice(0, pBreakIndex);\r\n\t\t\t\t\t\tcurrent.elements.push(newParagraph);\r\n\r\n\t\t\t\t\t\tif (splitRun) {\r\n\t\t\t\t\t\t\tlet runChildren = breakRun.children;\r\n\t\t\t\t\t\t\tlet newRun = { ...breakRun, children: runChildren.slice(0, rBreakIndex) };\r\n\t\t\t\t\t\t\telem.children.push(newRun);\r\n\t\t\t\t\t\t\tbreakRun.children = runChildren.slice(rBreakIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet currentSectProps = null;\r\n\r\n\t\tfor (let i = result.length - 1; i >= 0; i--) {\r\n\t\t\tif (result[i].sectProps == null) {\r\n\t\t\t\tresult[i].sectProps = currentSectProps;\r\n\t\t\t} else {\r\n\t\t\t\tcurrentSectProps = result[i].sectProps\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderWrapper(children: HTMLElement[]) {\r\n\t\treturn this.createElement(\"div\", { className: `${this.className}-wrapper` }, children);\r\n\t}\r\n\r\n\trenderDefaultStyle() {\r\n\t\tvar c = this.className;\r\n\t\tvar 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\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\t// renderNumbering2(numberingPart: NumberingPartProperties, container: HTMLElement): HTMLElement {\r\n\t// let css = \"\";\r\n\t// const numberingMap = keyBy(numberingPart.abstractNumberings, x => x.id);\r\n\t// const bulletMap = keyBy(numberingPart.bulletPictures, x => x.id);\r\n\t// const topCounters = [];\r\n\r\n\t// for(let num of numberingPart.numberings) {\r\n\t// const absNum = numberingMap[num.abstractId];\r\n\r\n\t// for(let lvl of absNum.levels) {\r\n\t// const className = this.numberingClass(num.id, lvl.level);\r\n\t// let listStyleType = \"none\";\r\n\r\n\t// if(lvl.text && lvl.format == 'decimal') {\r\n\t// const counter = this.numberingCounter(num.id, lvl.level);\r\n\r\n\t// if (lvl.level > 0) {\r\n\t// css += this.styleToString(`p.${this.numberingClass(num.id, lvl.level - 1)}`, {\r\n\t// \"counter-reset\": counter\r\n\t// });\r\n\t// } else {\r\n\t// topCounters.push(counter);\r\n\t// }\r\n\r\n\t// css += this.styleToString(`p.${className}:before`, {\r\n\t// \"content\": this.levelTextToContent(lvl.text, num.id),\r\n\t// \"counter-increment\": counter\r\n\t// });\r\n\t// } else if(lvl.bulletPictureId) {\r\n\t// let pict = bulletMap[lvl.bulletPictureId];\r\n\t// let variable = `--${this.className}-${pict.referenceId}`.toLowerCase();\r\n\r\n\t// css += this.styleToString(`p.${className}:before`, {\r\n\t// \"content\": \"' '\",\r\n\t// \"display\": \"inline-block\",\r\n\t// \"background\": `var(${variable})`\r\n\t// }, pict.style);\r\n\r\n\t// this.document.loadNumberingImage(pict.referenceId).then(data => {\r\n\t// var text = `.${this.className}-wrapper { ${variable}: url(${data}) }`;\r\n\t// container.appendChild(createStyleElement(text));\r\n\t// });\r\n\t// } else {\r\n\t// listStyleType = this.numFormatToCssValue(lvl.format);\r\n\t// }\r\n\r\n\t// css += this.styleToString(`p.${className}`, {\r\n\t// \"display\": \"list-item\",\r\n\t// \"list-style-position\": \"inside\",\r\n\t// \"list-style-type\": listStyleType,\r\n\t// //TODO\r\n\t// //...num.style\r\n\t// });\r\n\t// }\r\n\t// }\r\n\r\n\t// if (topCounters.length > 0) {\r\n\t// css += this.styleToString(`.${this.className}-wrapper`, {\r\n\t// \"counter-reset\": topCounters.join(\" \")\r\n\t// });\r\n\t// }\r\n\r\n\t// return createStyleElement(css);\r\n\t// }\r\n\r\n\trenderNumbering(numberings: IDomNumbering[], styleContainer: HTMLElement) {\r\n\t\tvar styleText = \"\";\r\n\t\tvar rootCounters = [];\r\n\r\n\t\tfor (var num of numberings) {\r\n\t\t\tvar selector = `p.${this.numberingClass(num.id, num.level)}`;\r\n\t\t\tvar listStyleType = \"none\";\r\n\r\n\t\t\tif (num.bullet) {\r\n\t\t\t\tlet valiable = `--${this.className}-${num.bullet.src}`.toLowerCase();\r\n\r\n\t\t\t\tstyleText += this.styleToString(`${selector}:before`, {\r\n\t\t\t\t\t\"content\": \"' '\",\r\n\t\t\t\t\t\"display\": \"inline-block\",\r\n\t\t\t\t\t\"background\": `var(${valiable})`\r\n\t\t\t\t}, num.bullet.style);\r\n\r\n\t\t\t\tthis.document.loadNumberingImage(num.bullet.src).then(data => {\r\n\t\t\t\t\tvar text = `.${this.className}-wrapper { ${valiable}: url(${data}) }`;\r\n\t\t\t\t\tstyleContainer.appendChild(createStyleElement(text));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (num.levelText) {\r\n\t\t\t\tlet counter = this.numberingCounter(num.id, num.level);\r\n\r\n\t\t\t\tif (num.level > 0) {\r\n\t\t\t\t\tstyleText += this.styleToString(`p.${this.numberingClass(num.id, num.level - 1)}`, {\r\n\t\t\t\t\t\t\"counter-reset\": counter\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\trootCounters.push(counter);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstyleText += this.styleToString(`${selector}:before`, {\r\n\t\t\t\t\t\"content\": this.levelTextToContent(num.levelText, num.suff, num.id, this.numFormatToCssValue(num.format)),\r\n\t\t\t\t\t\"counter-increment\": counter,\r\n\t\t\t\t\t...num.rStyle,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlistStyleType = this.numFormatToCssValue(num.format);\r\n\t\t\t}\r\n\r\n\t\t\tstyleText += this.styleToString(selector, {\r\n\t\t\t\t\"display\": \"list-item\",\r\n\t\t\t\t\"list-style-position\": \"inside\",\r\n\t\t\t\t\"list-style-type\": listStyleType,\r\n\t\t\t\t...num.pStyle\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (rootCounters.length > 0) {\r\n\t\t\tstyleText += this.styleToString(`.${this.className}-wrapper`, {\r\n\t\t\t\t\"counter-reset\": rootCounters.join(\" \")\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\trenderStyles(styles: IDomStyle[]): HTMLElement {\r\n\t\tvar styleText = \"\";\r\n\t\tconst stylesMap = this.styleMap;\r\n\t\tconst defautStyles = keyBy(styles.filter(s => s.isDefault), s => s.target);\r\n\r\n\t\tfor (const style of styles) {\r\n\t\t\tvar subStyles = style.styles;\r\n\r\n\t\t\tif (style.linked) {\r\n\t\t\t\tvar linkedStyle = style.linked && stylesMap[style.linked];\r\n\r\n\t\t\t\tif (linkedStyle)\r\n\t\t\t\t\tsubStyles = subStyles.concat(linkedStyle.styles);\r\n\t\t\t\telse if (this.options.debug)\r\n\t\t\t\t\tconsole.warn(`Can't find linked style ${style.linked}`);\r\n\t\t\t}\r\n\r\n\t\t\tfor (const subStyle of subStyles) {\r\n\t\t\t\t//TODO temporary disable modificators until test it well\r\n\t\t\t\tvar selector = `${style.target ?? ''}.${style.cssName}`; //${subStyle.mod ?? ''} \r\n\r\n\t\t\t\tif (style.target != subStyle.target)\r\n\t\t\t\t\tselector += ` ${subStyle.target}`;\r\n\r\n\t\t\t\tif (defautStyles[style.target] == style)\r\n\t\t\t\t\tselector = `.${this.className} ${style.target}, ` + selector;\r\n\r\n\t\t\t\tstyleText += this.styleToString(selector, subStyle.values);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\trenderNotes(noteIds: string[], notesMap: Record, into: HTMLElement) {\r\n\t\tvar notes = noteIds.map(id => notesMap[id]).filter(x => x);\r\n\r\n\t\tif (notes.length > 0) {\r\n\t\t\tvar result = this.createElement(\"ol\", null, this.renderElements(notes));\r\n\t\t\tinto.appendChild(result);\r\n\t\t}\r\n\t}\r\n\r\n\trenderElement(elem: OpenXmlElement): Node {\r\n\t\tswitch (elem.type) {\r\n\t\t\tcase DomType.Paragraph:\r\n\t\t\t\treturn this.renderParagraph(elem as WmlParagraph);\r\n\r\n\t\t\tcase DomType.BookmarkStart:\r\n\t\t\t\treturn this.renderBookmarkStart(elem as WmlBookmarkStart);\r\n\r\n\t\t\tcase DomType.BookmarkEnd:\r\n\t\t\t\treturn null; //ignore bookmark end\r\n\r\n\t\t\tcase DomType.Run:\r\n\t\t\t\treturn this.renderRun(elem as WmlRun);\r\n\r\n\t\t\tcase DomType.Table:\r\n\t\t\t\treturn this.renderTable(elem);\r\n\r\n\t\t\tcase DomType.Row:\r\n\t\t\t\treturn this.renderTableRow(elem);\r\n\r\n\t\t\tcase DomType.Cell:\r\n\t\t\t\treturn this.renderTableCell(elem);\r\n\r\n\t\t\tcase DomType.Hyperlink:\r\n\t\t\t\treturn this.renderHyperlink(elem);\r\n\r\n\t\t\tcase DomType.Drawing:\r\n\t\t\t\treturn this.renderDrawing(elem);\r\n\r\n\t\t\tcase DomType.Image:\r\n\t\t\t\treturn this.renderImage(elem as IDomImage);\r\n\r\n\t\t\tcase DomType.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.Tab:\r\n\t\t\t\treturn this.renderTab(elem);\r\n\r\n\t\t\tcase DomType.Symbol:\r\n\t\t\t\treturn this.renderSymbol(elem as WmlSymbol);\r\n\r\n\t\t\tcase DomType.Break:\r\n\t\t\t\treturn this.renderBreak(elem as WmlBreak);\r\n\r\n\t\t\tcase DomType.Footer:\r\n\t\t\t\treturn this.renderContainer(elem, \"footer\");\r\n\r\n\t\t\tcase DomType.Header:\r\n\t\t\t\treturn this.renderContainer(elem, \"header\");\r\n\r\n\t\t\tcase DomType.Footnote:\r\n\t\t\tcase DomType.Endnote:\r\n\t\t\t\treturn this.renderContainer(elem, \"li\");\r\n\r\n\t\t\tcase DomType.FootnoteReference:\r\n\t\t\t\treturn 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\r\n\t\t\tcase DomType.NoBreakHyphen:\r\n\t\t\t\treturn this.createElement(\"wbr\");\r\n\r\n\t\t\tcase DomType.VmlPicture:\r\n\t\t\t\treturn this.renderVmlPicture(elem);\r\n\r\n\t\t\tcase DomType.VmlElement:\r\n\t\t\t\treturn this.renderVmlElement(elem as VmlElement);\r\n\t\r\n\t\t\tcase DomType.MmlMath:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"math\", { xmlns: ns.mathML });\r\n\t\r\n\t\t\tcase DomType.MmlMathParagraph:\r\n\t\t\t\treturn this.renderContainer(elem, \"span\");\r\n\r\n\t\t\tcase DomType.MmlFraction:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mfrac\");\r\n\r\n\t\t\tcase DomType.MmlNumerator:\r\n\t\t\tcase DomType.MmlDenominator:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlRadical:\r\n\t\t\t\treturn this.renderMmlRadical(elem);\r\n\r\n\t\t\tcase DomType.MmlDegree:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlSuperscript:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"msup\");\r\n\r\n\t\t\tcase DomType.MmlSubscript:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"msub\");\r\n\t\r\n\t\t\tcase DomType.MmlBase:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlSuperArgument:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlSubArgument:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlDelimiter:\r\n\t\t\t\treturn this.renderMmlDelimiter(elem);\r\n\r\n\t\t\tcase DomType.MmlNary:\r\n\t\t\t\treturn this.renderMmlNary(elem);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\trenderChildren(elem: OpenXmlElement, into?: Element): Node[] {\r\n\t\treturn this.renderElements(elem.children, into);\r\n\t}\r\n\r\n\trenderElements(elems: OpenXmlElement[], into?: Element): Node[] {\r\n\t\tif (elems == null)\r\n\t\t\treturn null;\r\n\r\n\t\tvar result = elems.map(e => this.renderElement(e)).filter(e => e != null);\r\n\r\n\t\tif (into)\r\n\t\t\tappendChildren(into, result);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderContainer(elem: OpenXmlElement, tagName: keyof HTMLElementTagNameMap, props?: Record) {\r\n\t\treturn this.createElement(tagName, props, this.renderChildren(elem));\r\n\t}\r\n\r\n\trenderContainerNS(elem: OpenXmlElement, ns: string, tagName: string, props?: Record) {\r\n\t\treturn createElementNS(ns, tagName, props, this.renderChildren(elem));\r\n\t}\r\n\r\n\trenderParagraph(elem: WmlParagraph) {\r\n\t\tvar result = this.createElement(\"p\");\r\n\r\n\t\tconst style = this.findStyle(elem.styleName);\r\n\t\telem.tabs ??= style?.paragraphProps?.tabs; //TODO\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\t\tthis.renderCommonProperties(result.style, elem);\r\n\r\n\t\tconst numbering = elem.numbering ?? style?.paragraphProps?.numbering;\r\n\r\n\t\tif (numbering) {\r\n\t\t\tresult.classList.add(this.numberingClass(numbering.id, numbering.level));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderRunProperties(style: any, props: RunProperties) {\r\n\t\tthis.renderCommonProperties(style, props);\r\n\t}\r\n\r\n\trenderCommonProperties(style: any, props: CommonProperties) {\r\n\t\tif (props == null)\r\n\t\t\treturn;\r\n\r\n\t\tif (props.color) {\r\n\t\t\tstyle[\"color\"] = props.color;\r\n\t\t}\r\n\r\n\t\tif (props.fontSize) {\r\n\t\t\tstyle[\"font-size\"] = props.fontSize;\r\n\t\t}\r\n\t}\r\n\r\n\trenderHyperlink(elem: WmlHyperlink) {\r\n\t\tvar result = this.createElement(\"a\");\r\n\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tif (elem.href) {\r\n\t\t\tresult.href = elem.href;\r\n\t\t} else if(elem.id) {\r\n\t\t\tconst rel = this.document.documentPart.rels\r\n\t\t\t\t.find(it => it.id == elem.id && it.targetMode === \"External\");\r\n\t\t\tresult.href = rel?.target;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderDrawing(elem: OpenXmlElement) {\r\n\t\tvar result = this.createElement(\"div\");\r\n\r\n\t\tresult.style.display = \"inline-block\";\r\n\t\tresult.style.position = \"relative\";\r\n\t\tresult.style.textIndent = \"0px\";\r\n\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderImage(elem: IDomImage) {\r\n\t\tlet result = this.createElement(\"img\");\r\n\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tif (this.document) {\r\n\t\t\tthis.document.loadDocumentImage(elem.src, this.currentPart).then(x => {\r\n\t\t\t\tresult.src = x;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderText(elem: WmlText) {\r\n\t\treturn this.htmlDocument.createTextNode(elem.text);\r\n\t}\r\n\r\n\trenderBreak(elem: WmlBreak) {\r\n\t\tif (elem.break == \"textWrapping\") {\r\n\t\t\treturn this.createElement(\"br\");\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\trenderSymbol(elem: WmlSymbol) {\r\n\t\tvar span = this.createElement(\"span\");\r\n\t\tspan.style.fontFamily = elem.font;\r\n\t\tspan.innerHTML = `&#x${elem.char};`\r\n\t\treturn span;\r\n\t}\r\n\r\n\trenderFootnoteReference(elem: WmlNoteReference) {\r\n\t\tvar result = this.createElement(\"sup\");\r\n\t\tthis.currentFootnoteIds.push(elem.id);\r\n\t\tresult.textContent = `${this.currentFootnoteIds.length}`;\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderEndnoteReference(elem: WmlNoteReference) {\r\n\t\tvar result = this.createElement(\"sup\");\r\n\t\tthis.currentEndnoteIds.push(elem.id);\r\n\t\tresult.textContent = `${this.currentEndnoteIds.length}`;\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderTab(elem: OpenXmlElement) {\r\n\t\tvar tabSpan = this.createElement(\"span\");\r\n\r\n\t\ttabSpan.innerHTML = \" \";//\" \";\r\n\r\n\t\tif (this.options.experimental) {\r\n\t\t\ttabSpan.className = this.tabStopClass();\r\n\t\t\tvar stops = findParent(elem, DomType.Paragraph)?.tabs;\r\n\t\t\tthis.currentTabs.push({ stops, span: tabSpan });\r\n\t\t}\r\n\r\n\t\treturn tabSpan;\r\n\t}\r\n\r\n\trenderBookmarkStart(elem: WmlBookmarkStart): HTMLElement {\r\n\t\tvar result = this.createElement(\"span\");\r\n\t\tresult.id = elem.name;\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderRun(elem: WmlRun) {\r\n\t\tif (elem.fieldRun)\r\n\t\t\treturn null;\r\n\r\n\t\tconst result = this.createElement(\"span\");\r\n\r\n\t\tif (elem.id)\r\n\t\t\tresult.id = elem.id;\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.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\t\treturn result;\r\n\t}\r\n\r\n\trenderTable(elem: WmlTable) {\r\n\t\tlet result = this.createElement(\"table\");\r\n\r\n\t\tthis.tableCellPositions.push(this.currentCellPosition);\r\n\t\tthis.tableVerticalMerges.push(this.currentVerticalMerge);\r\n\t\tthis.currentVerticalMerge = {};\r\n\t\tthis.currentCellPosition = { col: 0, row: 0 };\r\n\r\n\t\tif (elem.columns)\r\n\t\t\tresult.appendChild(this.renderTableColumns(elem.columns));\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tthis.currentVerticalMerge = this.tableVerticalMerges.pop();\r\n\t\tthis.currentCellPosition = this.tableCellPositions.pop();\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderTableColumns(columns: WmlTableColumn[]) {\r\n\t\tlet result = this.createElement(\"colgroup\");\r\n\r\n\t\tfor (let col of columns) {\r\n\t\t\tlet colElem = this.createElement(\"col\");\r\n\r\n\t\t\tif (col.width)\r\n\t\t\t\tcolElem.style.width = col.width;\r\n\r\n\t\t\tresult.appendChild(colElem);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderTableRow(elem: OpenXmlElement) {\r\n\t\tlet result = this.createElement(\"tr\");\r\n\r\n\t\tthis.currentCellPosition.col = 0;\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tthis.currentCellPosition.row++;\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderTableCell(elem: WmlTableCell) {\r\n\t\tlet result = this.createElement(\"td\");\r\n\r\n\t\tif (elem.verticalMerge) {\r\n\t\t\tconst key = this.currentCellPosition.col;\r\n\r\n\t\t\tif (elem.verticalMerge == \"restart\") {\r\n\t\t\t\tthis.currentVerticalMerge[key] = result;\r\n\t\t\t\tresult.rowSpan = 1;\r\n\t\t\t} else if (this.currentVerticalMerge[key]) {\r\n\t\t\t\tthis.currentVerticalMerge[key].rowSpan += 1;\r\n\t\t\t\tresult.style.display = \"none\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderChildren(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tif (elem.span)\r\n\t\t\tresult.colSpan = elem.span;\r\n\r\n\t\tthis.currentCellPosition.col++;\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderVmlPicture(elem: OpenXmlElement) {\r\n\t\tvar result = createElement(\"div\");\r\n\t\tthis.renderChildren(elem, result);\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderVmlElement(elem: VmlElement): SVGElement {\r\n\t\tvar container = createSvgElement(\"svg\");\r\n\r\n\t\tcontainer.setAttribute(\"style\", elem.cssStyleText);\r\n\r\n\t\tconst result = createSvgElement(elem.tagName as any);\r\n\t\tObject.entries(elem.attrs).forEach(([k, v]) => result.setAttribute(k, v));\r\n\r\n\t\tif (elem.imageHref?.id) {\r\n\t\t\tthis.document?.loadDocumentImage(elem.imageHref.id, this.currentPart)\r\n\t\t\t\t.then(x => result.setAttribute(\"href\", x));\r\n\t\t}\r\n\t\t\r\n\t\tcontainer.appendChild(result);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst bb = (container.firstElementChild as any).getBBox();\r\n\r\n\t\t\tcontainer.setAttribute(\"width\", `${Math.ceil(bb.x + bb.width)}`);\r\n\t\t\tcontainer.setAttribute(\"height\", `${Math.ceil(bb.y + bb.height)}`);\r\n\t\t}, 0);\r\n\r\n\t\treturn container;\r\n\t}\r\n\r\n\trenderMmlRadical(elem: OpenXmlElement): HTMLElement {\r\n\t\tconst base = elem.children.find(el => el.type == DomType.MmlBase);\r\n\r\n\t\tif (elem.props?.hideDegree) {\r\n\t\t\treturn createElementNS(ns.mathML, \"msqrt\", null, this.renderElements([base]));\r\n\t\t}\r\n\r\n\t\tconst degree = elem.children.find(el => el.type == DomType.MmlDegree);\r\n\t\treturn createElementNS(ns.mathML, \"mroot\", null, this.renderElements([base, degree]));\r\n\t}\r\n\r\n\trenderMmlDelimiter(elem: OpenXmlElement): HTMLElement {\t\t\r\n\t\tconst children = [];\r\n\r\n\t\tchildren.push(createElementNS(ns.mathML, \"mo\", null, [elem.props.beginChar ?? '(']));\r\n\t\tchildren.push(...this.renderElements(elem.children));\r\n\t\tchildren.push(createElementNS(ns.mathML, \"mo\", null, [elem.props.endChar ?? ')']));\r\n\r\n\t\treturn createElementNS(ns.mathML, \"mrow\", null, children);\r\n\t}\r\n\r\n\trenderMmlNary(elem: OpenXmlElement): HTMLElement {\t\t\r\n\t\tconst children = [];\r\n\t\tconst grouped = keyBy(elem.children, x => x.type);\r\n\r\n\t\tconst sup = grouped[DomType.MmlSuperArgument];\r\n\t\tconst sub = grouped[DomType.MmlSubArgument];\r\n\t\tconst supElem = sup ? createElementNS(ns.mathML, \"mo\", null, [this.renderElement(sup)]) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, [this.renderElement(sub)]) : null;\r\n\r\n\t\tif (elem.props?.char) {\r\n\t\t\tconst charElem = createElementNS(ns.mathML, \"mo\", null, [elem.props.char]);\r\n\r\n\t\t\tif (supElem || subElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"munderover\", null, [charElem, subElem, supElem]));\r\n\t\t\t} else if(supElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"mover\", null, [charElem, supElem]));\r\n\t\t\t} else if(subElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"munder\", null, [charElem, subElem]));\r\n\t\t\t} else {\r\n\t\t\t\tchildren.push(charElem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tchildren.push(...this.renderElements(grouped[DomType.MmlBase].children));\r\n\r\n\t\treturn createElementNS(ns.mathML, \"mrow\", null, children);\r\n\t}\r\n\r\n\trenderStyleValues(style: Record, ouput: HTMLElement) {\r\n\t\tObject.assign(ouput.style, style);\r\n\t}\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\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\tnumberingClass(id: string, lvl: number) {\r\n\t\treturn `${this.className}-num-${id}-${lvl}`;\r\n\t}\r\n\r\n\ttabStopClass() {\r\n\t\treturn `${this.className}-tab-stop`;\r\n\t}\r\n\r\n\tstyleToString(selectors: string, values: Record, cssText: string = null) {\r\n\t\tlet result = `${selectors} {\\r\\n`;\r\n\r\n\t\tfor (const key in values) {\r\n\t\t\tresult += ` ${key}: ${values[key]};\\r\\n`;\r\n\t\t}\r\n\r\n\t\tif (cssText)\r\n\t\t\tresult += cssText;\r\n\r\n\t\treturn result + \"}\\r\\n\";\r\n\t}\r\n\r\n\tnumberingCounter(id: string, lvl: number) {\r\n\t\treturn `${this.className}-num-${id}-${lvl}`;\r\n\t}\r\n\r\n\tlevelTextToContent(text: string, suff: string, id: string, numformat: string) {\r\n\t\tconst suffMap = {\r\n\t\t\t\"tab\": \"\\\\9\",\r\n\t\t\t\"space\": \"\\\\a0\",\r\n\t\t};\r\n\r\n\t\tvar result = text.replace(/%\\d*/g, s => {\r\n\t\t\tlet lvl = parseInt(s.substring(1), 10) - 1;\r\n\t\t\treturn `\"counter(${this.numberingCounter(id, lvl)}, ${numformat})\"`;\r\n\t\t});\r\n\r\n\t\treturn `\"${result}${suffMap[suff] ?? \"\"}\"`;\r\n\t}\r\n\r\n\tnumFormatToCssValue(format: string) {\r\n\t\tvar mapping = {\r\n\t\t\t\"none\": \"none\",\r\n\t\t\t\"bullet\": \"disc\",\r\n\t\t\t\"decimal\": \"decimal\",\r\n\t\t\t\"lowerLetter\": \"lower-alpha\",\r\n\t\t\t\"upperLetter\": \"upper-alpha\",\r\n\t\t\t\"lowerRoman\": \"lower-roman\",\r\n\t\t\t\"upperRoman\": \"upper-roman\",\r\n\t\t};\r\n\r\n\t\treturn mapping[format] || format;\r\n\t}\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\tcreateElement = createElement;\r\n}\r\n\r\ntype ChildType = Node | string;\r\n\r\nfunction createElement(\r\n\ttagName: T,\r\n\tprops?: Partial>,\r\n\tchildren?: ChildType[]\r\n): HTMLElementTagNameMap[T] {\r\n\treturn createElementNS(undefined, tagName, props, children);\r\n}\r\n\r\nfunction createSvgElement(\r\n\ttagName: T,\r\n\tprops?: Partial>,\r\n\tchildren?: ChildType[]\r\n): SVGElementTagNameMap[T] {\r\n\treturn createElementNS(ns.svg, tagName, props, children);\r\n}\r\n\r\nfunction createElementNS(ns: string, tagName: string, props?: Partial>, children?: ChildType[]): any {\r\n\tvar result = ns ? document.createElementNS(ns, tagName) : document.createElement(tagName);\r\n\tObject.assign(result, props);\r\n\tchildren && appendChildren(result, children);\r\n\treturn result;\r\n}\r\n\r\nfunction removeAllElements(elem: HTMLElement) {\r\n\telem.innerHTML = '';\r\n}\r\n\r\nfunction appendChildren(elem: Element, children: (Node | string)[]) {\r\n\tchildren.forEach(c => elem.appendChild(isString(c) ? document.createTextNode(c) : c));\r\n}\r\n\r\nfunction createStyleElement(cssText: string) {\r\n\treturn createElement(\"style\", { innerHTML: cssText });\r\n}\r\n\r\nfunction appendComment(elem: HTMLElement, comment: string) {\r\n\telem.appendChild(document.createComment(comment));\r\n}\r\n\r\nfunction findParent(elem: OpenXmlElement, type: DomType): T {\r\n\tvar parent = elem.parent;\r\n\r\n\twhile (parent != null && parent.type != type)\r\n\t\tparent = parent.parent;\r\n\r\n\treturn parent;\r\n}\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 = {};\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 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 {\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 {\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 = {\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 = {\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 = {\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 = {\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\tattrs(elem: Element) {\r\n\t\treturn Array.from(elem.attributes);\r\n\t}\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\thexAttr(node: Element, attrName: string, defaultValue: number = null): number {\r\n var val = this.attr(node, attrName);\r\n return val ? parseInt(val, 16) : 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;\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(array: T[], by: (x: T) => any): Record {\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 isString(item: unknown): item is string {\r\n return item && typeof item === 'string' || item instanceof String;\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}\r\n\r\nexport function parseCssRules(text: string): Record {\r\n\tconst result: Record = {};\r\n\r\n\tfor (const rule of text.split(';')) {\r\n\t\tconst [key, val] = rule.split(':');\r\n\t\tresult[key] = val;\r\n\t}\r\n\r\n\treturn result\r\n}\r\n\r\nexport function formatCssRules(style: Record): string {\r\n\treturn Object.entries(style).map((k, v) => `${k}: ${v}`).join(';');\r\n}\r\n","import { convertLength, LengthUsage } from '../document/common';\r\nimport { DomType, OpenXmlElement } from '../document/dom';\r\nimport xml from '../parser/xml-parser';\r\nimport { formatCssRules, parseCssRules } from '../utils';\r\n\r\nexport class VmlElement implements OpenXmlElement {\r\n\ttype: DomType = DomType.VmlElement;\r\n\ttagName: string;\r\n\tcssStyleText?: string;\r\n\tattrs: Record = {};\r\n\tchidren: VmlElement[] = [];\r\n\twrapType?: string;\r\n\timageHref?: {\r\n\t\tid: string,\r\n\t\ttitle: string\r\n\t}\r\n}\r\n\r\nexport function parseVmlElement(elem: Element): VmlElement {\r\n\tvar result = new VmlElement();\r\n\r\n\tswitch (elem.localName) {\r\n\t\tcase \"rect\":\r\n\t\t\tresult.tagName = \"rect\"; \r\n\t\t\tObject.assign(result.attrs, { width: '100%', height: '100%' });\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"oval\":\r\n\t\t\tresult.tagName = \"ellipse\"; \r\n\t\t\tObject.assign(result.attrs, { cx: \"50%\", cy: \"50%\", rx: \"50%\", ry: \"50%\" });\r\n\t\t\tbreak;\r\n\t\r\n\t\tcase \"line\":\r\n\t\t\tresult.tagName = \"line\"; \r\n\t\t\tbreak;\r\n\r\n\t\tcase \"shape\":\r\n\t\t\tresult.tagName = \"g\"; \r\n\t\t\tbreak;\r\n\t\t\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tfor (const at of xml.attrs(elem)) {\r\n\t\tswitch(at.localName) {\r\n\t\t\tcase \"style\": \r\n\t\t\t\tresult.cssStyleText = at.value;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"fillcolor\": \r\n\t\t\t\tresult.attrs.fill = at.value; \r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"from\":\r\n\t\t\t\tconst [x1, y1] = parsePoint(at.value);\r\n\t\t\t\tObject.assign(result.attrs, { x1, y1 });\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"to\":\r\n\t\t\t\tconst [x2, y2] = parsePoint(at.value);\r\n\t\t\t\tObject.assign(result.attrs, { x2, y2 });\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const el of xml.elements(elem)) {\r\n\t\tswitch (el.localName) {\r\n\t\t\tcase \"stroke\": \r\n\t\t\t\tObject.assign(result.attrs, parseStroke(el));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"fill\": \r\n\t\t\t\tObject.assign(result.attrs, parseFill(el));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"imagedata\":\r\n\t\t\t\tresult.tagName = \"image\";\r\n\t\t\t\tObject.assign(result.attrs, { width: '100%', height: '100%' });\r\n\t\t\t\tresult.imageHref = {\r\n\t\t\t\t\tid: xml.attr(el, \"id\"),\r\n\t\t\t\t\ttitle: xml.attr(el, \"title\"),\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconst child = parseVmlElement(el);\r\n\t\t\t\tchild && result.chidren.push(child);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction parseStroke(el: Element): Record {\r\n\treturn {\r\n\t\t'stroke': xml.attr(el, \"color\"),\r\n\t\t'stroke-width': xml.lengthAttr(el, \"weight\", LengthUsage.Emu) ?? '1px'\r\n\t};\r\n}\r\n\r\nfunction parseFill(el: Element): Record {\r\n\treturn {\r\n\t\t//'fill': xml.attr(el, \"color2\")\r\n\t};\r\n}\r\n\r\nfunction parsePoint(val: string): string[] {\r\n\treturn val.split(\",\");\r\n}\r\n\r\nfunction convertPath(path: string): string {\r\n\treturn path.replace(/([mlxe])|([-\\d]+)|([,])/g, (m) => {\r\n\t\tif (/[-\\d]/.test(m)) return convertLength(m, LengthUsage.VmlEmu);\r\n\t\tif (/[ml,]/.test(m)) return m;\r\n\r\n\t\treturn '';\r\n\t});\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 = {};\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 {\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 {\r\n\t\treturn this._package.save(type);\r\n\t}\r\n\r\n\tprivate loadRelationshipPart(path: string, type: string): Promise {\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 {\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 {\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 {\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 {\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__626__;","// 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\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t345: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","// 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__(667);\n"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__626__","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","id","toString","cssWithMappingToString","list","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","url","options","String","__esModule","default","test","slice","hash","needQuotes","replace","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","OpenXmlPackage","constructor","_zip","xmlParser","XmlParser","get","path","files","startsWith","substr","normalizePath","update","file","static","input","JSZip","loadAsync","then","zip","save","type","generateAsync","load","async","Promise","resolve","loadRelationships","relsPath","f","fn","splitPath","txt","parseRelationships","parseXmlDocument","firstElementChild","parseXmlString","trimXmlDeclaration","_package","all","rels","text","xmlDoc","keepOrigin","_xmlDocument","parseXml","serializeXmlString","RelationshipTypes","xml","elements","e","attr","target","targetMode","autos","shd","color","borderColor","highlight","supportedNamespaceURIs","mmlTagMap","DomType","MmlMath","MmlMathParagraph","MmlFraction","MmlNumerator","MmlDenominator","MmlRadical","MmlDegree","MmlBase","MmlSuperscript","MmlSubscript","MmlSuperArgument","MmlSubArgument","MmlDelimiter","MmlNary","ignoreWidth","debug","parseNotes","elemName","elemClass","result","el","node","noteType","children","parseBodyElements","parseDocumentFile","xbody","element","background","sectPr","Document","props","parseSectionProperties","cssStyle","parseBackground","elem","xmlUtil","colorAttr","foreach","localName","parseParagraph","parseTable","parseSdt","forEach","parseStylesFile","xstyles","n","parseStyle","parseDefaultStyles","name","basedOn","styles","c","rPr","values","parseDefaultProperties","pPr","isDefault","boolAttr","linked","next","aliases","split","paragraphProps","parseParagraphProperties","runProps","parseRunProperties","s","parseTableStyle","console","warn","selector","modificator","mod","parseNumberingFile","xnums","mapping","bullets","parseAbstractNumbering","x","parseNumberingPicBullet","numId","abstractNumId","elementAttr","pict","shape","imagedata","intAttr","src","style","parseNumberingLevel","level","pStyleName","pStyle","rStyle","suff","bullet","find","levelText","format","sdtContent","Paragraph","parseRun","parseHyperlink","parseBookmarkStart","parseBookmarkEnd","parseMathElement","paragraph","parseParagraphProperty","styleName","className","classNameOfCnfStyle","parseFrame","parent","Hyperlink","anchor","relId","href","Run","checkAlternateContent","Text","textContent","SimpleField","instruction","lock","dirty","fieldRun","Instruction","ComplexField","charType","NoBreakHyphen","Break","break","Symbol","font","char","Tab","FootnoteReference","EndnoteReference","d","parseDrawing","parseVmlPicture","propsTag","parseMathProperies","hideDegree","beginChar","endChar","run","verticalAlign","valueOfVertAlign","VmlPicture","child","parseVmlElement","choice","requires","namespaceURI","lookupNamespaceURI","includes","parseDrawingWrapper","Drawing","isAnchor","wrapType","simplePos","posX","relative","align","offset","posY","lengthAttr","LengthUsage","Emu","pos","alignNode","offsetNode","sizeValue","g","parseGraphic","graphicData","parsePicture","Image","blipFill","blip","spPr","xfrm","Table","parseTableRow","columns","parseTableColumns","parseTableProperties","width","table","cellStyle","classNameOftblLook","parseTablePosition","colBandSize","rowBandSize","topFromText","bottomFromText","rightFromText","leftFromText","addSize","Row","parseTableCell","parseTableRowProperties","row","isHeader","Cell","parseTableCellProperties","cell","span","verticalMerge","childStyle","handler","valueOfJc","valueOfTextAlignment","FontSize","valueOfSize","parseTrHeight","parseUnderline","parseIndentation","parseFont","parseBorderProperties","valueOfMargin","valueOfBorder","parseMarginProperties","valueOfTblLayout","parseSpacing","val","col","fonts","themeValue","filter","firstLine","hanging","left","start","right","end","before","after","line","lineRule","toFixed","output","knownColors","cb","childNodes","nodeType","Node","ELEMENT_NODE","attrName","defValue","autoColor","v","themeColor","Dxa","convertLength","Percent","Border","_","asTagName","a","b","hexAttr","trim","CorePropsPart","Part","parseCoreProps","title","description","subject","creator","keywords","language","lastModifiedBy","revision","parseInt","CustomPropsPart","parseCustomProps","firstChild","formatId","nodeName","value","ExtendedPropsPart","parseExtendedProps","safeParseToInt","template","pages","words","characters","application","lines","paragraphs","company","appVersion","BookmarkStart","colFirst","colLast","BookmarkEnd","parseBorder","size","Point","frame","shadow","top","bottom","ns","wordml","drawingml","picture","compatibility","math","mul","unit","LineHeight","VmlEmu","usage","defaultValue","fontSize","DocumentPart","pkg","parser","super","_documentParser","body","parseCommonProperty","tabs","parseTabs","sectionProps","numbering","parseNumbering","lineSpacing","parseLineSpacing","textAlignment","keepLines","keepNext","pageBreakBefore","outlineLevel","position","leader","parseRunProperty","parseColumns","numberOfColumns","space","separator","equalWidth","parsePageNumber","chapSep","chapStyle","parseFooterHeaderReference","SectionType","section","pageSize","height","orientation","pageMargins","header","footer","gutter","headerRefs","footerRefs","titlePage","pageBorders","parseBorders","pageNumber","defaultOptions","ignoreHeight","ignoreFonts","breakPages","experimental","inWrapper","ignoreLastRenderedPageBreak","renderHeaders","renderFooters","renderFootnotes","renderEndnotes","useBase64URL","useMathMLPolyfill","userOptions","ops","WordDocument","DocumentParser","bodyContainer","styleContainer","renderer","HtmlRenderer","window","document","doc","render","FontTablePart","parseFonts","embedFontTypeMap","embedRegular","embedBold","embedItalic","embedBoldItalic","embedFontRefs","family","altName","parseEmbedFontRef","key","Header","Footer","BaseHeaderFooterPart","rootElement","createRootElement","WmlHeader","WmlFooter","createElement","tagName","createElementNS","createSvgElement","Object","assign","appendChildren","removeAllElements","innerHTML","appendChild","isString","createTextNode","createStyleElement","cssText","appendComment","comment","createComment","htmlDocument","styleMap","currentPart","tableVerticalMerges","currentVerticalMerge","tableCellPositions","currentCellPosition","footnoteMap","endnoteMap","currentEndnoteIds","usedHederFooterParts","currentTabs","tabsTimeout","renderDefaultStyle","MathMLElement","themePart","renderTheme","stylesPart","processStyles","renderStyles","numberingPart","prodessNumberings","domNumberings","renderNumbering","footnotesPart","keyBy","notes","endnotesPart","settingsPart","defaultTabSize","settings","defaultTabStop","fontTablePart","renderFontTable","sectionElements","renderSections","documentPart","renderWrapper","refreshTabStops","variables","fontScheme","theme","majorFont","latinTypeface","minorFont","colorScheme","entries","colors","styleToString","fontsPart","ref","loadFont","fontData","cssValues","processStyleName","escapeClassName","stylesMap","baseStyle","mergeDeep","baseValues","styleValues","copyStyleProperties","cssName","numberings","num","findStyle","processElement","processTable","r","attrs","getOwnPropertyNames","hasOwnProperty","createSection","paddingLeft","paddingRight","paddingTop","paddingBottom","minHeight","columnCount","columnGap","columnRule","sections","splitBySection","prevProps","l","currentFootnoteIds","sectProps","sectionElement","renderStyleValues","renderHeaderFooter","contentElement","renderElements","renderNotes","refs","page","firstOfSection","into","part","findPartByRelId","isPageBreakElement","current","p","pBreakIndex","rBreakIndex","findIndex","bind","breakRun","splitRun","newParagraph","runChildren","newRun","currentSectProps","styleText","rootCounters","numberingClass","listStyleType","valiable","toLowerCase","loadNumberingImage","counter","numberingCounter","levelTextToContent","numFormatToCssValue","defautStyles","subStyles","linkedStyle","subStyle","noteIds","notesMap","renderElement","renderParagraph","renderBookmarkStart","renderRun","renderTable","renderTableRow","renderTableCell","renderHyperlink","renderDrawing","renderImage","renderText","renderTab","renderSymbol","renderBreak","renderContainer","Footnote","Endnote","renderFootnoteReference","renderEndnoteReference","renderVmlPicture","VmlElement","renderVmlElement","renderContainerNS","xmlns","renderMmlRadical","renderMmlDelimiter","renderMmlNary","renderChildren","elems","renderClass","renderCommonProperties","classList","add","renderRunProperties","rel","it","display","textIndent","loadDocumentImage","fontFamily","tabSpan","tabStopClass","stops","findParent","wrapper","renderTableColumns","pop","colElem","rowSpan","colSpan","container","setAttribute","cssStyleText","imageHref","setTimeout","bb","getBBox","Math","ceil","y","base","degree","grouped","sup","sub","supElem","subElem","charElem","ouput","lvl","selectors","numformat","substring","clearTimeout","pixelToPoint","computePixelToPoint","tab","updateTabStop","defaultTab","lengthToPoint","parseFloat","temp","offsetWidth","removeChild","closest","ebb","getBoundingClientRect","pbb","pcs","getComputedStyle","tabStops","t","sort","lastTab","pWidthPt","marginLeft","pOffset","Array","from","querySelectorAll","nextIdx","indexOf","range","createRange","setStart","setEndBefore","setEndAfter","nextBB","textDecoration","wordSpacing","textDecorationStyle","WmlBaseNote","BaseNotePart","WmlFootnote","WmlEndnote","NumberingPart","parseNumberingPart","overrides","abstractId","parseNumberingLevelOverrride","levels","multiLevelType","numberingStyleLink","styleLink","restart","justification","bulletPictureId","paragraphStyle","numberingLevel","parseNumberingBulletPicture","referenceId","abstractNumberings","bulletPictures","xmlString","DOMParser","parseFromString","errorText","getElementsByTagName","Error","XMLSerializer","serializeToString","attrLocalName","attributes","floatAttr","convertBoolean","globalXmlParser","SettingsPart","parseSettings","parseNoteProperties","defaultNoteIds","nummeringFormat","footnoteProps","endnoteProps","autoHyphenation","StylesPart","ThemePart","parseTheme","DmlTheme","parseColorScheme","srgbClr","sysClr","parseFontScheme","parseFontInfo","eaTypeface","csTypeface","themeElements","isObject","isArray","si","lastIndexOf","prefix","array","by","reduce","blob","reader","FileReader","onloadend","readAsDataURL","shift","rule","chidren","parseStroke","parsePoint","cx","cy","rx","ry","at","fill","x1","y1","x2","y2","topLevelRels","OfficeDocument","ExtendedProperties","CoreProperties","CustomProperties","parts","partsMap","_options","_parser","tasks","loadRelationshipPart","FontTable","Numbering","Styles","Theme","Footnotes","FootnotesPart","Endnotes","EndnotesPart","FooterPart","HeaderPart","corePropsPart","extendedPropsPart","Settings","folder","resolvePath","loadResource","blobToURL","Blob","deobfuscate","blobToBase64","createObjectURL","basePart","getPathById","outputType","guidKey","trimmed","numbers","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","getter","definition","o","defineProperty","enumerable","obj","prop","prototype","call","toStringTag","baseURI","self","location"],"sourceRoot":""}