diff --git a/dist/docx-preview.js b/dist/docx-preview.js index 8b1e087..f7e1a5e 100644 --- a/dist/docx-preview.js +++ b/dist/docx-preview.js @@ -2533,6 +2533,7 @@ class HtmlRenderer { this.document = document; this.options = options; this.className = options.className; + this.rootSelector = options.inWrapper ? `.${this.className}-wrapper` : ':root'; this.styleMap = null; styleContainer = styleContainer || bodyContainer; removeAllElements(styleContainer); @@ -2862,7 +2863,7 @@ section.${c}>article { margin-bottom: auto; } "background": `var(${valiable})` }, num.bullet.style); this.document.loadNumberingImage(num.bullet.src).then(data => { - var text = `.${this.className}-wrapper { ${valiable}: url(${data}) }`; + var text = `${this.rootSelector} { ${valiable}: url(${data}) }`; styleContainer.appendChild(createStyleElement(text)); }); } @@ -2884,7 +2885,7 @@ section.${c}>article { margin-bottom: auto; } styleText += this.styleToString(selector, Object.assign({ "display": "list-item", "list-style-position": "inside", "list-style-type": listStyleType }, num.pStyle)); } if (rootCounters.length > 0) { - styleText += this.styleToString(`.${this.className}-wrapper`, { + styleText += this.styleToString(this.rootSelector, { "counter-reset": rootCounters.join(" ") }); } diff --git a/dist/docx-preview.js.map b/dist/docx-preview.js.map index abfeedd..47d57a2 100644 --- a/dist/docx-preview.js.map +++ b/dist/docx-preview.js.map @@ -1 +1 @@ -{"version":3,"file":"docx-preview.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/before-startup","webpack://docx/webpack/startup","webpack://docx/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jszip\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jszip\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"docx\"] = factory(require(\"jszip\"));\n\telse\n\t\troot[\"docx\"] = factory(root[\"JSZip\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_jszip__) => {\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\\\";\\nmath {\\n display: inline-block;\\n line-height: initial;\\n}\\n\\nmfrac {\\n display: inline-block;\\n vertical-align: -50%;\\n text-align: center;\\n}\\nmfrac > :first-child {\\n border-bottom: solid thin currentColor;\\n}\\nmfrac > * {\\n display: block;\\n}\\n\\nmsub > :nth-child(2) {\\n font-size: smaller;\\n vertical-align: sub;\\n}\\n\\nmsup > :nth-child(2) {\\n font-size: smaller;\\n vertical-align: super;\\n}\\n\\nmunder, mover, munderover {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n vertical-align: middle;\\n text-align: center;\\n}\\nmunder > :not(:first-child), mover > :not(:first-child), munderover > :not(:first-child) {\\n font-size: smaller;\\n}\\n\\nmunderover > :last-child {\\n order: -1;\\n}\\n\\nmroot, msqrt {\\n position: relative;\\n display: inline-block;\\n border-top: solid thin currentColor;\\n margin-top: 0.5px;\\n vertical-align: middle;\\n margin-left: 1ch;\\n}\\nmroot:before, msqrt:before {\\n content: \\\"\\\";\\n display: inline-block;\\n position: absolute;\\n width: 1ch;\\n left: -1ch;\\n top: -1px;\\n bottom: 0;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mathml.scss\"],\"names\":[],\"mappings\":\"AAAA,+CAAA;AAEA;EACI,qBAAA;EACA,oBAAA;AAAJ;;AAGA;EACI,qBAAA;EACA,oBAAA;EACA,kBAAA;AAAJ;AAEI;EACI,sCAAA;AAAR;AAGI;EACI,cAAA;AADR;;AAMI;EACI,kBAAA;EACA,mBAAA;AAHR;;AAQI;EACI,kBAAA;EACA,qBAAA;AALR;;AASA;EACI,oBAAA;EACA,wBAAA;EACA,sBAAA;EACA,kBAAA;AANJ;AAQI;EACI,kBAAA;AANR;;AAWI;EAAgB,SAAA;AAPpB;;AAUA;EACI,kBAAA;EACA,qBAAA;EACA,mCAAA;EACA,iBAAA;EACA,sBAAA;EACA,gBAAA;AAPJ;AASI;EACI,WAAA;EACA,qBAAA;EACA,kBAAA;EACA,UAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;EACA,yDAAA;AAPR\",\"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\tfor (let elem of xml.elements(element)) {\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\tchildren.push(...this.parseSdt(elem, e => this.parseBodyElements(e)));\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, parser: Function): any {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? parser(sdtContent) : [];\r\n\t}\r\n\r\n\tparseInserted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Inserted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\r\n\t}\r\n\r\n\tparseDeleted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Deleted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\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\tfor (let el of xml.elements(node)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseParagraphProperties(el, result);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(el, 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(el, 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(el, 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(el, 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(el));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sdt\":\r\n\t\t\t\t\tresult.children.push(...this.parseSdt(el, e => this.parseParagraph(e).children));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ins\":\r\n\t\t\t\t\tresult.children.push(this.parseInserted(el, e => this.parseParagraph(e)));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"del\":\r\n\t\t\t\t\tresult.children.push(this.parseDeleted(el, e => this.parseParagraph(e)));\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 \"delText\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.DeletedText,\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 \"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\tInserted = \"inserted\",\r\n\tDeleted = \"deleted\",\r\n\tDeletedText = \"deletedText\"\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\trenderChanges: 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\trenderChanges: 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 { asArray, 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 | 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.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.DeletedText:\r\n\t\t\t\treturn this.renderDeletedText(elem as WmlText);\r\n\t\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\r\n\t\t\tcase DomType.Inserted:\r\n\t\t\t\treturn this.renderInserted(elem);\r\n\r\n\t\t\tcase DomType.Deleted:\r\n\t\t\t\treturn this.renderDeleted(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.flatMap(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\trenderDeletedText(elem: WmlText) {\r\n\t\treturn this.options.renderEndnotes ? this.htmlDocument.createTextNode(elem.text) : null;\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\trenderInserted(elem: OpenXmlElement): Node | Node[] {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"ins\");\r\n\r\n\t\treturn this.renderChildren(elem);\r\n\t}\r\n\r\n\trenderDeleted(elem: OpenXmlElement): Node {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"del\");\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, asArray(this.renderElement(sup))) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, asArray(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\r\nexport function asArray(val: T | T[]): T[] {\r\n\treturn Array.isArray(val) ? val : [val];\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_jszip__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\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\t\"docx-preview\": 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__(\"./src/docx-preview.ts\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"docx-preview.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/before-startup","webpack://docx/webpack/startup","webpack://docx/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jszip\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jszip\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"docx\"] = factory(require(\"jszip\"));\n\telse\n\t\troot[\"docx\"] = factory(root[\"JSZip\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE_jszip__) => {\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\\\";\\nmath {\\n display: inline-block;\\n line-height: initial;\\n}\\n\\nmfrac {\\n display: inline-block;\\n vertical-align: -50%;\\n text-align: center;\\n}\\nmfrac > :first-child {\\n border-bottom: solid thin currentColor;\\n}\\nmfrac > * {\\n display: block;\\n}\\n\\nmsub > :nth-child(2) {\\n font-size: smaller;\\n vertical-align: sub;\\n}\\n\\nmsup > :nth-child(2) {\\n font-size: smaller;\\n vertical-align: super;\\n}\\n\\nmunder, mover, munderover {\\n display: inline-flex;\\n flex-flow: column nowrap;\\n vertical-align: middle;\\n text-align: center;\\n}\\nmunder > :not(:first-child), mover > :not(:first-child), munderover > :not(:first-child) {\\n font-size: smaller;\\n}\\n\\nmunderover > :last-child {\\n order: -1;\\n}\\n\\nmroot, msqrt {\\n position: relative;\\n display: inline-block;\\n border-top: solid thin currentColor;\\n margin-top: 0.5px;\\n vertical-align: middle;\\n margin-left: 1ch;\\n}\\nmroot:before, msqrt:before {\\n content: \\\"\\\";\\n display: inline-block;\\n position: absolute;\\n width: 1ch;\\n left: -1ch;\\n top: -1px;\\n bottom: 0;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mathml.scss\"],\"names\":[],\"mappings\":\"AAAA,+CAAA;AAEA;EACI,qBAAA;EACA,oBAAA;AAAJ;;AAGA;EACI,qBAAA;EACA,oBAAA;EACA,kBAAA;AAAJ;AAEI;EACI,sCAAA;AAAR;AAGI;EACI,cAAA;AADR;;AAMI;EACI,kBAAA;EACA,mBAAA;AAHR;;AAQI;EACI,kBAAA;EACA,qBAAA;AALR;;AASA;EACI,oBAAA;EACA,wBAAA;EACA,sBAAA;EACA,kBAAA;AANJ;AAQI;EACI,kBAAA;AANR;;AAWI;EAAgB,SAAA;AAPpB;;AAUA;EACI,kBAAA;EACA,qBAAA;EACA,mCAAA;EACA,iBAAA;EACA,sBAAA;EACA,gBAAA;AAPJ;AASI;EACI,WAAA;EACA,qBAAA;EACA,kBAAA;EACA,UAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;EACA,yDAAA;AAPR\",\"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\tfor (let elem of xml.elements(element)) {\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\tchildren.push(...this.parseSdt(elem, e => this.parseBodyElements(e)));\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, parser: Function): OpenXmlElement[] {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? parser(sdtContent) : [];\r\n\t}\r\n\r\n\tparseInserted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Inserted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\r\n\t}\r\n\r\n\tparseDeleted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Deleted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\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\tfor (let el of xml.elements(node)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseParagraphProperties(el, result);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(el, 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(el, 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(el, 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(el, 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(el));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sdt\":\r\n\t\t\t\t\tresult.children.push(...this.parseSdt(el, e => this.parseParagraph(e).children));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ins\":\r\n\t\t\t\t\tresult.children.push(this.parseInserted(el, e => this.parseParagraph(e)));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"del\":\r\n\t\t\t\t\tresult.children.push(this.parseDeleted(el, e => this.parseParagraph(e)));\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 \"delText\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.DeletedText,\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 \"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\tInserted = \"inserted\",\r\n\tDeleted = \"deleted\",\r\n\tDeletedText = \"deletedText\"\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\trenderChanges: 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\trenderChanges: 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 { asArray, 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\trootSelector: string;\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.rootSelector = options.inWrapper ? `.${this.className}-wrapper` : ':root';\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.rootSelector} { ${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.rootSelector, {\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 | 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.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.DeletedText:\r\n\t\t\t\treturn this.renderDeletedText(elem as WmlText);\r\n\t\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\r\n\t\t\tcase DomType.Inserted:\r\n\t\t\t\treturn this.renderInserted(elem);\r\n\r\n\t\t\tcase DomType.Deleted:\r\n\t\t\t\treturn this.renderDeleted(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.flatMap(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\trenderDeletedText(elem: WmlText) {\r\n\t\treturn this.options.renderEndnotes ? this.htmlDocument.createTextNode(elem.text) : null;\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\trenderInserted(elem: OpenXmlElement): Node | Node[] {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"ins\");\r\n\r\n\t\treturn this.renderChildren(elem);\r\n\t}\r\n\r\n\trenderDeleted(elem: OpenXmlElement): Node {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"del\");\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, asArray(this.renderElement(sup))) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, asArray(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\r\nexport function asArray(val: T | T[]): T[] {\r\n\treturn Array.isArray(val) ? val : [val];\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_jszip__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\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\t\"docx-preview\": 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__(\"./src/docx-preview.ts\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/docx-preview.min.js b/dist/docx-preview.min.js index 054b95a..5b85706 100644 --- a/dist/docx-preview.min.js +++ b/dist/docx-preview.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jszip")):"function"==typeof define&&define.amd?define(["jszip"],t):"object"==typeof exports?exports.docx=t(require("jszip")):e.docx=t(e.JSZip)}(globalThis,(e=>(()=>{"use strict";var t={438:(e,t,r)=>{r.r(t),r.d(t,{default:()=>d});var a=r(537),s=r.n(a),n=r(645),l=r.n(n),o=r(806),i=r.n(o),c=new URL(r(583),r.b),u=l()(s()),p=i()(c);u.push([e.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('+p+")}","",{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:""}]);const d=u.toString()},645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",a=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),a&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),a&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,a,s,n){"string"==typeof e&&(e=[[null,e,void 0]]);var l={};if(a)for(var o=0;o0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=n),r&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=r):u[2]=r),s&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=s):u[4]="".concat(s)),t.push(u))}},t}},806:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},537:e=>{e.exports=function(e){var t=e[1],r=e[3];if(!r)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),n="/*# ".concat(s," */"),l=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[t].concat(l).concat([n]).join("\n")}return[t].join("\n")}},522:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OpenXmlPackage=void 0;const a=r(626),s=r(472),n=r(593),l=r(461);class o{constructor(e,t){this._zip=e,this.options=t,this.xmlParser=new s.XmlParser}get(e){return this._zip.files[function(e){return e.startsWith("/")?e.substr(1):e}(e)]}update(e,t){this._zip.file(e,t)}static load(e,t){return a.loadAsync(e).then((e=>new o(e,t)))}save(e="blob"){return this._zip.generateAsync({type:e})}load(e,t="string"){var r,a;return null!==(a=null===(r=this.get(e))||void 0===r?void 0:r.async(t))&&void 0!==a?a:Promise.resolve(null)}loadRelationships(e=null){let t="_rels/.rels";if(null!=e){const[r,a]=(0,n.splitPath)(e);t=`${r}_rels/${a}.rels`}return this.load(t).then((e=>e?(0,l.parseRelationships)(this.parseXmlDocument(e).firstElementChild,this.xmlParser):null))}parseXmlDocument(e){return(0,s.parseXmlString)(e,this.options.trimXmlDeclaration)}}t.OpenXmlPackage=o},530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Part=void 0;const a=r(472);t.Part=class{constructor(e,t){this._package=e,this.path=t}load(){return Promise.all([this._package.loadRelationships(this.path).then((e=>{this.rels=e})),this._package.load(this.path).then((e=>{const t=this._package.parseXmlDocument(e);this._package.options.keepOrigin&&(this._xmlDocument=t),this.parseXml(t.firstElementChild)}))])}save(){this._package.update(this.path,(0,a.serializeXmlString)(this._xmlDocument))}parseXml(e){}}},461:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.parseRelationships=t.RelationshipTypes=void 0,(r=t.RelationshipTypes||(t.RelationshipTypes={})).OfficeDocument="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",r.FontTable="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",r.Image="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",r.Numbering="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",r.Styles="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",r.StylesWithEffects="http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects",r.Theme="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",r.Settings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",r.WebSettings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",r.Hyperlink="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",r.Footnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",r.Endnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",r.Footer="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",r.Header="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",r.ExtendedProperties="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",r.CoreProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",r.CustomProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties",t.parseRelationships=function(e,t){return t.elements(e).map((e=>({id:t.attr(e,"Id"),type:t.attr(e,"Type"),target:t.attr(e,"Target"),targetMode:t.attr(e,"TargetMode")})))}},168:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentParser=t.autos=void 0;const a=r(120),s=r(109),n=r(59),l=r(472),o=r(488),i=r(172),c=r(149),u=r(320);t.autos={shd:"inherit",color:"black",borderColor:"black",highlight:"transparent"};const p=[],d={oMath:a.DomType.MmlMath,oMathPara:a.DomType.MmlMathParagraph,f:a.DomType.MmlFraction,num:a.DomType.MmlNumerator,den:a.DomType.MmlDenominator,rad:a.DomType.MmlRadical,deg:a.DomType.MmlDegree,e:a.DomType.MmlBase,sSup:a.DomType.MmlSuperscript,sSub:a.DomType.MmlSubscript,sup:a.DomType.MmlSuperArgument,sub:a.DomType.MmlSubArgument,d:a.DomType.MmlDelimiter,nary:a.DomType.MmlNary};t.DocumentParser=class{constructor(e){this.options=Object.assign({ignoreWidth:!1,debug:!1},e)}parseNotes(e,t,r){var a=[];for(let s of l.default.elements(e,t)){const e=new r;e.id=l.default.attr(s,"id"),e.noteType=l.default.attr(s,"type"),e.children=this.parseBodyElements(s),a.push(e)}return a}parseDocumentFile(e){var t=l.default.element(e,"body"),r=l.default.element(e,"background"),s=l.default.element(t,"sectPr");return{type:a.DomType.Document,children:this.parseBodyElements(t),props:s?(0,n.parseSectionProperties)(s,l.default):null,cssStyle:r?this.parseBackground(r):{}}}parseBackground(e){var t={},r=m.colorAttr(e,"color");return r&&(t["background-color"]=r),t}parseBodyElements(e){var t=[];for(let r of l.default.elements(e))switch(r.localName){case"p":t.push(this.parseParagraph(r));break;case"tbl":t.push(this.parseTable(r));break;case"sdt":t.push(...this.parseSdt(r,(e=>this.parseBodyElements(e))))}return t}parseStylesFile(e){var t=[];return m.foreach(e,(e=>{switch(e.localName){case"style":t.push(this.parseStyle(e));break;case"docDefaults":t.push(this.parseDefaultStyles(e))}})),t}parseDefaultStyles(e){var t={id:null,name:null,target:null,basedOn:null,styles:[]};return m.foreach(e,(e=>{switch(e.localName){case"rPrDefault":var r=l.default.element(e,"rPr");r&&t.styles.push({target:"span",values:this.parseDefaultProperties(r,{})});break;case"pPrDefault":var a=l.default.element(e,"pPr");a&&t.styles.push({target:"p",values:this.parseDefaultProperties(a,{})})}})),t}parseStyle(e){var t={id:l.default.attr(e,"styleId"),isDefault:l.default.boolAttr(e,"default"),name:null,target:null,basedOn:null,styles:[],linked:null};switch(l.default.attr(e,"type")){case"paragraph":t.target="p";break;case"table":t.target="table";break;case"character":t.target="span"}return m.foreach(e,(e=>{switch(e.localName){case"basedOn":t.basedOn=l.default.attr(e,"val");break;case"name":t.name=l.default.attr(e,"val");break;case"link":t.linked=l.default.attr(e,"val");break;case"next":t.next=l.default.attr(e,"val");break;case"aliases":t.aliases=l.default.attr(e,"val").split(",");break;case"pPr":t.styles.push({target:"p",values:this.parseDefaultProperties(e,{})}),t.paragraphProps=(0,s.parseParagraphProperties)(e,l.default);break;case"rPr":t.styles.push({target:"span",values:this.parseDefaultProperties(e,{})}),t.runProps=(0,o.parseRunProperties)(e,l.default);break;case"tblPr":case"tcPr":t.styles.push({target:"td",values:this.parseDefaultProperties(e,{})});break;case"tblStylePr":for(let r of this.parseTableStyle(e))t.styles.push(r);break;case"rsid":case"qFormat":case"hidden":case"semiHidden":case"unhideWhenUsed":case"autoRedefine":case"uiPriority":break;default:this.options.debug&&console.warn(`DOCX: Unknown style element: ${e.localName}`)}})),t}parseTableStyle(e){var t=[],r=l.default.attr(e,"type"),a="",s="";switch(r){case"firstRow":s=".first-row",a="tr.first-row td";break;case"lastRow":s=".last-row",a="tr.last-row td";break;case"firstCol":s=".first-col",a="td.first-col";break;case"lastCol":s=".last-col",a="td.last-col";break;case"band1Vert":s=":not(.no-vband)",a="td.odd-col";break;case"band2Vert":s=":not(.no-vband)",a="td.even-col";break;case"band1Horz":s=":not(.no-hband)",a="tr.odd-row";break;case"band2Horz":s=":not(.no-hband)",a="tr.even-row";break;default:return[]}return m.foreach(e,(e=>{switch(e.localName){case"pPr":t.push({target:`${a} p`,mod:s,values:this.parseDefaultProperties(e,{})});break;case"rPr":t.push({target:`${a} span`,mod:s,values:this.parseDefaultProperties(e,{})});break;case"tblPr":case"tcPr":t.push({target:a,mod:s,values:this.parseDefaultProperties(e,{})})}})),t}parseNumberingFile(e){var t=[],r={},a=[];return m.foreach(e,(e=>{switch(e.localName){case"abstractNum":this.parseAbstractNumbering(e,a).forEach((e=>t.push(e)));break;case"numPicBullet":a.push(this.parseNumberingPicBullet(e));break;case"num":var s=l.default.attr(e,"numId"),n=l.default.elementAttr(e,"abstractNumId","val");r[n]=s}})),t.forEach((e=>e.id=r[e.id])),t}parseNumberingPicBullet(e){var t=l.default.element(e,"pict"),r=t&&l.default.element(t,"shape"),a=r&&l.default.element(r,"imagedata");return a?{id:l.default.intAttr(e,"numPicBulletId"),src:l.default.attr(a,"id"),style:l.default.attr(r,"style")}:null}parseAbstractNumbering(e,t){var r=[],a=l.default.attr(e,"abstractNumId");return m.foreach(e,(e=>{"lvl"===e.localName&&r.push(this.parseNumberingLevel(a,e,t))})),r}parseNumberingLevel(e,t,r){var a={id:e,level:l.default.intAttr(t,"ilvl"),pStyleName:void 0,pStyle:{},rStyle:{},suff:"tab"};return m.foreach(t,(e=>{switch(e.localName){case"pPr":this.parseDefaultProperties(e,a.pStyle);break;case"rPr":this.parseDefaultProperties(e,a.rStyle);break;case"lvlPicBulletId":var t=l.default.intAttr(e,"val");a.bullet=r.find((e=>e.id==t));break;case"lvlText":a.levelText=l.default.attr(e,"val");break;case"pStyle":a.pStyleName=l.default.attr(e,"val");break;case"numFmt":a.format=l.default.attr(e,"val");break;case"suff":a.suff=l.default.attr(e,"val")}})),a}parseSdt(e,t){const r=l.default.element(e,"sdtContent");return r?t(r):[]}parseInserted(e,t){var r,s;return{type:a.DomType.Inserted,children:null!==(s=null===(r=t(e))||void 0===r?void 0:r.children)&&void 0!==s?s:[]}}parseDeleted(e,t){var r,s;return{type:a.DomType.Deleted,children:null!==(s=null===(r=t(e))||void 0===r?void 0:r.children)&&void 0!==s?s:[]}}parseParagraph(e){var t={type:a.DomType.Paragraph,children:[]};for(let r of l.default.elements(e))switch(r.localName){case"pPr":this.parseParagraphProperties(r,t);break;case"r":t.children.push(this.parseRun(r,t));break;case"hyperlink":t.children.push(this.parseHyperlink(r,t));break;case"bookmarkStart":t.children.push((0,i.parseBookmarkStart)(r,l.default));break;case"bookmarkEnd":t.children.push((0,i.parseBookmarkEnd)(r,l.default));break;case"oMath":case"oMathPara":t.children.push(this.parseMathElement(r));break;case"sdt":t.children.push(...this.parseSdt(r,(e=>this.parseParagraph(e).children)));break;case"ins":t.children.push(this.parseInserted(r,(e=>this.parseParagraph(e))));break;case"del":t.children.push(this.parseDeleted(r,(e=>this.parseParagraph(e))))}return t}parseParagraphProperties(e,t){this.parseDefaultProperties(e,t.cssStyle={},null,(e=>{if((0,s.parseParagraphProperty)(e,t,l.default))return!0;switch(e.localName){case"pStyle":t.styleName=l.default.attr(e,"val");break;case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;case"framePr":this.parseFrame(e,t);break;case"rPr":break;default:return!1}return!0}))}parseFrame(e,t){"drop"==l.default.attr(e,"dropCap")&&(t.cssStyle.float="left")}parseHyperlink(e,t){var r={type:a.DomType.Hyperlink,parent:t,children:[]},s=l.default.attr(e,"anchor"),n=l.default.attr(e,"id");return s&&(r.href="#"+s),n&&(r.id=n),m.foreach(e,(e=>{"r"===e.localName&&r.children.push(this.parseRun(e,r))})),r}parseRun(e,t){var r={type:a.DomType.Run,parent:t,children:[]};return m.foreach(e,(e=>{switch((e=this.checkAlternateContent(e)).localName){case"t":r.children.push({type:a.DomType.Text,text:e.textContent});break;case"delText":r.children.push({type:a.DomType.DeletedText,text:e.textContent});break;case"fldSimple":r.children.push({type:a.DomType.SimpleField,instruction:l.default.attr(e,"instr"),lock:l.default.boolAttr(e,"lock",!1),dirty:l.default.boolAttr(e,"dirty",!1)});break;case"instrText":r.fieldRun=!0,r.children.push({type:a.DomType.Instruction,text:e.textContent});break;case"fldChar":r.fieldRun=!0,r.children.push({type:a.DomType.ComplexField,charType:l.default.attr(e,"fldCharType"),lock:l.default.boolAttr(e,"lock",!1),dirty:l.default.boolAttr(e,"dirty",!1)});break;case"noBreakHyphen":r.children.push({type:a.DomType.NoBreakHyphen});break;case"br":r.children.push({type:a.DomType.Break,break:l.default.attr(e,"type")||"textWrapping"});break;case"lastRenderedPageBreak":r.children.push({type:a.DomType.Break,break:"lastRenderedPageBreak"});break;case"sym":r.children.push({type:a.DomType.Symbol,font:l.default.attr(e,"font"),char:l.default.attr(e,"char")});break;case"tab":r.children.push({type:a.DomType.Tab});break;case"footnoteReference":r.children.push({type:a.DomType.FootnoteReference,id:l.default.attr(e,"id")});break;case"endnoteReference":r.children.push({type:a.DomType.EndnoteReference,id:l.default.attr(e,"id")});break;case"drawing":let t=this.parseDrawing(e);t&&(r.children=[t]);break;case"pict":r.children.push(this.parseVmlPicture(e));break;case"rPr":this.parseRunProperties(e,r)}})),r}parseMathElement(e){const t=`${e.localName}Pr`,r={type:d[e.localName],children:[]};for(const a of l.default.elements(e))d[a.localName]?r.children.push(this.parseMathElement(a)):"r"==a.localName?r.children.push(this.parseRun(a)):a.localName==t&&(r.props=this.parseMathProperies(a));return r}parseMathProperies(e){const t={};for(const r of l.default.elements(e))switch(r.localName){case"chr":t.char=l.default.attr(r,"val");break;case"degHide":t.hideDegree=l.default.boolAttr(r,"val");break;case"begChr":t.beginChar=l.default.attr(r,"val");break;case"endChr":t.endChar=l.default.attr(r,"val")}return t}parseRunProperties(e,t){this.parseDefaultProperties(e,t.cssStyle={},null,(e=>{switch(e.localName){case"rStyle":t.styleName=l.default.attr(e,"val");break;case"vertAlign":t.verticalAlign=f.valueOfVertAlign(e,!0);break;default:return!1}return!0}))}parseVmlPicture(e){const t={type:a.DomType.VmlPicture,children:[]};for(const r of l.default.elements(e)){const e=(0,u.parseVmlElement)(r);e&&t.children.push(e)}return t}checkAlternateContent(e){var t;if("AlternateContent"!=e.localName)return e;var r=l.default.element(e,"Choice");if(r){var a=l.default.attr(r,"Requires"),s=e.lookupNamespaceURI(a);if(p.includes(s))return r.firstElementChild}return null===(t=l.default.element(e,"Fallback"))||void 0===t?void 0:t.firstElementChild}parseDrawing(e){for(var t of l.default.elements(e))switch(t.localName){case"inline":case"anchor":return this.parseDrawingWrapper(t)}}parseDrawingWrapper(e){var t,r={type:a.DomType.Drawing,children:[],cssStyle:{}},s="anchor"==e.localName;let n=null,o=l.default.boolAttr(e,"simplePos"),i={relative:"page",align:"left",offset:"0"},u={relative:"page",align:"top",offset:"0"};for(var p of l.default.elements(e))switch(p.localName){case"simplePos":o&&(i.offset=l.default.lengthAttr(p,"x",c.LengthUsage.Emu),u.offset=l.default.lengthAttr(p,"y",c.LengthUsage.Emu));break;case"extent":r.cssStyle.width=l.default.lengthAttr(p,"cx",c.LengthUsage.Emu),r.cssStyle.height=l.default.lengthAttr(p,"cy",c.LengthUsage.Emu);break;case"positionH":case"positionV":if(!o){let e="positionH"==p.localName?i:u;var d=l.default.element(p,"align"),h=l.default.element(p,"posOffset");e.relative=null!==(t=l.default.attr(p,"relativeFrom"))&&void 0!==t?t:e.relative,d&&(e.align=d.textContent),h&&(e.offset=m.sizeValue(h,c.LengthUsage.Emu))}break;case"wrapTopAndBottom":n="wrapTopAndBottom";break;case"wrapNone":n="wrapNone";break;case"graphic":var f=this.parseGraphic(p);f&&r.children.push(f)}return"wrapTopAndBottom"==n?(r.cssStyle.display="block",i.align&&(r.cssStyle["text-align"]=i.align,r.cssStyle.width="100%")):"wrapNone"==n?(r.cssStyle.display="block",r.cssStyle.position="relative",r.cssStyle.width="0px",r.cssStyle.height="0px",i.offset&&(r.cssStyle.left=i.offset),u.offset&&(r.cssStyle.top=u.offset)):!s||"left"!=i.align&&"right"!=i.align||(r.cssStyle.float=i.align),r}parseGraphic(e){var t=l.default.element(e,"graphicData");for(let e of l.default.elements(t))if("pic"===e.localName)return this.parsePicture(e);return null}parsePicture(e){var t={type:a.DomType.Image,src:"",cssStyle:{}},r=l.default.element(e,"blipFill"),s=l.default.element(r,"blip");t.src=l.default.attr(s,"embed");var n=l.default.element(e,"spPr"),o=l.default.element(n,"xfrm");for(var i of(t.cssStyle.position="relative",l.default.elements(o)))switch(i.localName){case"ext":t.cssStyle.width=l.default.lengthAttr(i,"cx",c.LengthUsage.Emu),t.cssStyle.height=l.default.lengthAttr(i,"cy",c.LengthUsage.Emu);break;case"off":t.cssStyle.left=l.default.lengthAttr(i,"x",c.LengthUsage.Emu),t.cssStyle.top=l.default.lengthAttr(i,"y",c.LengthUsage.Emu)}return t}parseTable(e){var t={type:a.DomType.Table,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tr":t.children.push(this.parseTableRow(e));break;case"tblGrid":t.columns=this.parseTableColumns(e);break;case"tblPr":this.parseTableProperties(e,t)}})),t}parseTableColumns(e){var t=[];return m.foreach(e,(e=>{"gridCol"===e.localName&&t.push({width:l.default.lengthAttr(e,"w")})})),t}parseTableProperties(e,t){switch(t.cssStyle={},t.cellStyle={},this.parseDefaultProperties(e,t.cssStyle,t.cellStyle,(e=>{switch(e.localName){case"tblStyle":t.styleName=l.default.attr(e,"val");break;case"tblLook":t.className=f.classNameOftblLook(e);break;case"tblpPr":this.parseTablePosition(e,t);break;case"tblStyleColBandSize":t.colBandSize=l.default.intAttr(e,"val");break;case"tblStyleRowBandSize":t.rowBandSize=l.default.intAttr(e,"val");break;default:return!1}return!0})),t.cssStyle["text-align"]){case"center":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto",t.cssStyle["margin-right"]="auto";break;case"right":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto"}}parseTablePosition(e,t){var r=l.default.lengthAttr(e,"topFromText"),a=l.default.lengthAttr(e,"bottomFromText"),s=l.default.lengthAttr(e,"rightFromText"),n=l.default.lengthAttr(e,"leftFromText");t.cssStyle.float="left",t.cssStyle["margin-bottom"]=f.addSize(t.cssStyle["margin-bottom"],a),t.cssStyle["margin-left"]=f.addSize(t.cssStyle["margin-left"],n),t.cssStyle["margin-right"]=f.addSize(t.cssStyle["margin-right"],s),t.cssStyle["margin-top"]=f.addSize(t.cssStyle["margin-top"],r)}parseTableRow(e){var t={type:a.DomType.Row,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tc":t.children.push(this.parseTableCell(e));break;case"trPr":this.parseTableRowProperties(e,t)}})),t}parseTableRowProperties(e,t){t.cssStyle=this.parseDefaultProperties(e,{},null,(e=>{switch(e.localName){case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;case"tblHeader":t.isHeader=l.default.boolAttr(e,"val");break;default:return!1}return!0}))}parseTableCell(e){var t={type:a.DomType.Cell,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tbl":t.children.push(this.parseTable(e));break;case"p":t.children.push(this.parseParagraph(e));break;case"tcPr":this.parseTableCellProperties(e,t)}})),t}parseTableCellProperties(e,t){t.cssStyle=this.parseDefaultProperties(e,{},null,(e=>{var r;switch(e.localName){case"gridSpan":t.span=l.default.intAttr(e,"val",null);break;case"vMerge":t.verticalMerge=null!==(r=l.default.attr(e,"val"))&&void 0!==r?r:"continue";break;case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;default:return!1}return!0}))}parseDefaultProperties(e,r=null,a=null,s=null){return r=r||{},m.foreach(e,(n=>{if(!(null==s?void 0:s(n)))switch(n.localName){case"jc":r["text-align"]=f.valueOfJc(n);break;case"textAlignment":r["vertical-align"]=f.valueOfTextAlignment(n);break;case"color":r.color=m.colorAttr(n,"val",null,t.autos.color);break;case"sz":r["font-size"]=r["min-height"]=l.default.lengthAttr(n,"val",c.LengthUsage.FontSize);break;case"shd":r["background-color"]=m.colorAttr(n,"fill",null,t.autos.shd);break;case"highlight":r["background-color"]=m.colorAttr(n,"val",null,t.autos.highlight);break;case"vertAlign":break;case"position":r.verticalAlign=l.default.lengthAttr(n,"val",c.LengthUsage.FontSize);break;case"tcW":if(this.options.ignoreWidth)break;case"tblW":r.width=f.valueOfSize(n,"w");break;case"trHeight":this.parseTrHeight(n,r);break;case"strike":r["text-decoration"]=l.default.boolAttr(n,"val",!0)?"line-through":"none";break;case"b":r["font-weight"]=l.default.boolAttr(n,"val",!0)?"bold":"normal";break;case"i":r["font-style"]=l.default.boolAttr(n,"val",!0)?"italic":"normal";break;case"caps":r["text-transform"]=l.default.boolAttr(n,"val",!0)?"uppercase":"none";break;case"smallCaps":r["text-transform"]=l.default.boolAttr(n,"val",!0)?"lowercase":"none";break;case"u":this.parseUnderline(n,r);break;case"ind":case"tblInd":this.parseIndentation(n,r);break;case"rFonts":this.parseFont(n,r);break;case"tblBorders":this.parseBorderProperties(n,a||r);break;case"tblCellSpacing":r["border-spacing"]=f.valueOfMargin(n),r["border-collapse"]="separate";break;case"pBdr":this.parseBorderProperties(n,r);break;case"bdr":r.border=f.valueOfBorder(n);break;case"tcBorders":this.parseBorderProperties(n,r);break;case"vanish":l.default.boolAttr(n,"val",!0)&&(r.display="none");break;case"kern":case"noWrap":break;case"tblCellMar":case"tcMar":this.parseMarginProperties(n,a||r);break;case"tblLayout":r["table-layout"]=f.valueOfTblLayout(n);break;case"vAlign":r["vertical-align"]=f.valueOfTextAlignment(n);break;case"spacing":"pPr"==e.localName&&this.parseSpacing(n,r);break;case"wordWrap":l.default.boolAttr(n,"val")&&(r["overflow-wrap"]="break-word");break;case"bCs":case"iCs":case"szCs":case"tabs":case"outlineLvl":case"contextualSpacing":case"tblStyleColBandSize":case"tblStyleRowBandSize":case"webHidden":case"pageBreakBefore":case"suppressLineNumbers":case"keepLines":case"keepNext":case"lang":case"widowControl":case"bidi":case"rtl":case"noProof":break;default:this.options.debug&&console.warn(`DOCX: Unknown document element: ${e.localName}.${n.localName}`)}})),r}parseUnderline(e,t){var r=l.default.attr(e,"val");if(null!=r){switch(r){case"dash":case"dashDotDotHeavy":case"dashDotHeavy":case"dashedHeavy":case"dashLong":case"dashLongHeavy":case"dotDash":case"dotDotDash":t["text-decoration-style"]="dashed";break;case"dotted":case"dottedHeavy":t["text-decoration-style"]="dotted";break;case"double":t["text-decoration-style"]="double";break;case"single":case"thick":case"words":t["text-decoration"]="underline";break;case"wave":case"wavyDouble":case"wavyHeavy":t["text-decoration-style"]="wavy";break;case"none":t["text-decoration"]="none"}var a=m.colorAttr(e,"color");a&&(t["text-decoration-color"]=a)}}parseFont(e,t){var r=[l.default.attr(e,"ascii"),f.themeValue(e,"asciiTheme")].filter((e=>e)).join(", ");r.length>0&&(t["font-family"]=r)}parseIndentation(e,t){var r=l.default.lengthAttr(e,"firstLine"),a=l.default.lengthAttr(e,"hanging"),s=l.default.lengthAttr(e,"left"),n=l.default.lengthAttr(e,"start"),o=l.default.lengthAttr(e,"right"),i=l.default.lengthAttr(e,"end");r&&(t["text-indent"]=r),a&&(t["text-indent"]=`-${a}`),(s||n)&&(t["margin-left"]=s||n),(o||i)&&(t["margin-right"]=o||i)}parseSpacing(e,t){var r=l.default.lengthAttr(e,"before"),a=l.default.lengthAttr(e,"after"),s=l.default.intAttr(e,"line",null),n=l.default.attr(e,"lineRule");if(r&&(t["margin-top"]=r),a&&(t["margin-bottom"]=a),null!==s)switch(n){case"auto":t["line-height"]=`${(s/240).toFixed(2)}`;break;case"atLeast":t["line-height"]=`calc(100% + ${s/20}pt)`;break;default:t["line-height"]=t["min-height"]=s/20+"pt"}}parseMarginProperties(e,t){m.foreach(e,(e=>{switch(e.localName){case"left":t["padding-left"]=f.valueOfMargin(e);break;case"right":t["padding-right"]=f.valueOfMargin(e);break;case"top":t["padding-top"]=f.valueOfMargin(e);break;case"bottom":t["padding-bottom"]=f.valueOfMargin(e)}}))}parseTrHeight(e,t){l.default.attr(e,"hRule"),t.height=l.default.lengthAttr(e,"val")}parseBorderProperties(e,t){m.foreach(e,(e=>{switch(e.localName){case"start":case"left":t["border-left"]=f.valueOfBorder(e);break;case"end":case"right":t["border-right"]=f.valueOfBorder(e);break;case"top":t["border-top"]=f.valueOfBorder(e);break;case"bottom":t["border-bottom"]=f.valueOfBorder(e)}}))}};const h=["black","blue","cyan","darkBlue","darkCyan","darkGray","darkGreen","darkMagenta","darkRed","darkYellow","green","lightGray","magenta","none","red","white","yellow"];class m{static foreach(e,t){for(var r=0;r"1"==t[r])).join(" ")}static valueOfJc(e){var t=l.default.attr(e,"val");switch(t){case"start":case"left":return"left";case"center":return"center";case"end":case"right":return"right";case"both":return"justify"}return t}static valueOfVertAlign(e,t=!1){var r=l.default.attr(e,"val");switch(r){case"subscript":return"sub";case"superscript":return t?"sup":"super"}return t?null:r}static valueOfTextAlignment(e){var t=l.default.attr(e,"val");switch(t){case"auto":case"baseline":return"baseline";case"top":return"top";case"center":return"middle";case"bottom":return"bottom"}return t}static addSize(e,t){return null==e?t:null==t?e:`calc(${e} + ${t})`}static classNameOftblLook(e){const t=l.default.hexAttr(e,"val",0);let r="";return(l.default.boolAttr(e,"firstRow")||32&t)&&(r+=" first-row"),(l.default.boolAttr(e,"lastRow")||64&t)&&(r+=" last-row"),(l.default.boolAttr(e,"firstColumn")||128&t)&&(r+=" first-col"),(l.default.boolAttr(e,"lastColumn")||256&t)&&(r+=" last-col"),(l.default.boolAttr(e,"noHBand")||512&t)&&(r+=" no-hband"),(l.default.boolAttr(e,"noVBand")||1024&t)&&(r+=" no-vband"),r.trim()}}},162:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CorePropsPart=void 0;const a=r(530),s=r(614);class n extends a.Part{parseXml(e){this.props=(0,s.parseCoreProps)(e,this._package.xmlParser)}}t.CorePropsPart=n},614:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCoreProps=void 0,t.parseCoreProps=function(e,t){const r={};for(let a of t.elements(e))switch(a.localName){case"title":r.title=a.textContent;break;case"description":r.description=a.textContent;break;case"subject":r.subject=a.textContent;break;case"creator":r.creator=a.textContent;break;case"keywords":r.keywords=a.textContent;break;case"language":r.language=a.textContent;break;case"lastModifiedBy":r.lastModifiedBy=a.textContent;break;case"revision":a.textContent&&(r.revision=parseInt(a.textContent))}return r}},177:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CustomPropsPart=void 0;const a=r(530),s=r(821);class n extends a.Part{parseXml(e){this.props=(0,s.parseCustomProps)(e,this._package.xmlParser)}}t.CustomPropsPart=n},821:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCustomProps=void 0,t.parseCustomProps=function(e,t){return t.elements(e,"property").map((e=>{const r=e.firstChild;return{formatId:t.attr(e,"fmtid"),name:t.attr(e,"name"),type:r.nodeName,value:r.textContent}}))}},665:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedPropsPart=void 0;const a=r(530),s=r(668);class n extends a.Part{parseXml(e){this.props=(0,s.parseExtendedProps)(e,this._package.xmlParser)}}t.ExtendedPropsPart=n},668:(e,t)=>{function r(e){if(void 0!==e)return parseInt(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.parseExtendedProps=void 0,t.parseExtendedProps=function(e,t){const a={};for(let s of t.elements(e))switch(s.localName){case"Template":a.template=s.textContent;break;case"Pages":a.pages=r(s.textContent);break;case"Words":a.words=r(s.textContent);break;case"Characters":a.characters=r(s.textContent);break;case"Application":a.application=s.textContent;break;case"Lines":a.lines=r(s.textContent);break;case"Paragraphs":a.paragraphs=r(s.textContent);break;case"Company":a.company=s.textContent;break;case"AppVersion":a.appVersion=s.textContent}return a}},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseBookmarkEnd=t.parseBookmarkStart=void 0;const a=r(120);t.parseBookmarkStart=function(e,t){return{type:a.DomType.BookmarkStart,id:t.attr(e,"id"),name:t.attr(e,"name"),colFirst:t.intAttr(e,"colFirst"),colLast:t.intAttr(e,"colLast")}},t.parseBookmarkEnd=function(e,t){return{type:a.DomType.BookmarkEnd,id:t.attr(e,"id")}}},191:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseBorders=t.parseBorder=void 0;const a=r(149);function s(e,t){return{type:t.attr(e,"val"),color:t.attr(e,"color"),size:t.lengthAttr(e,"sz",a.LengthUsage.Border),offset:t.lengthAttr(e,"space",a.LengthUsage.Point),frame:t.boolAttr(e,"frame"),shadow:t.boolAttr(e,"shadow")}}t.parseBorder=s,t.parseBorders=function(e,t){var r={};for(let a of t.elements(e))switch(a.localName){case"left":r.left=s(a,t);break;case"top":r.top=s(a,t);break;case"right":r.right=s(a,t);break;case"bottom":r.bottom=s(a,t)}return r}},149:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCommonProperty=t.convertPercentage=t.convertBoolean=t.convertLength=t.LengthUsage=t.ns=void 0,t.ns={wordml:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",drawingml:"http://schemas.openxmlformats.org/drawingml/2006/main",picture:"http://schemas.openxmlformats.org/drawingml/2006/picture",compatibility:"http://schemas.openxmlformats.org/markup-compatibility/2006",math:"http://schemas.openxmlformats.org/officeDocument/2006/math"},t.LengthUsage={Dxa:{mul:.05,unit:"pt"},Emu:{mul:1/12700,unit:"pt"},FontSize:{mul:.5,unit:"pt"},Border:{mul:.125,unit:"pt"},Point:{mul:1,unit:"pt"},Percent:{mul:.02,unit:"%"},LineHeight:{mul:1/240,unit:""},VmlEmu:{mul:1/12700,unit:""}},t.convertLength=function(e,r=t.LengthUsage.Dxa){return null==e||/.+(p[xt]|[%])$/.test(e)?e:`${(parseInt(e)*r.mul).toFixed(2)}${r.unit}`},t.convertBoolean=function(e,t=!1){switch(e){case"1":case"on":case"true":return!0;case"0":case"off":case"false":return!1;default:return t}},t.convertPercentage=function(e){return e?parseInt(e)/100:null},t.parseCommonProperty=function(e,r,a){if(e.namespaceURI!=t.ns.wordml)return!1;switch(e.localName){case"color":r.color=a.attr(e,"val");break;case"sz":r.fontSize=a.lengthAttr(e,"val",t.LengthUsage.FontSize);break;default:return!1}return!0}},448:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentPart=void 0;const a=r(530);class s extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.body=this._documentParser.parseDocumentFile(e)}}t.DocumentPart=s},120:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DomType=void 0,(r=t.DomType||(t.DomType={})).Document="document",r.Paragraph="paragraph",r.Run="run",r.Break="break",r.NoBreakHyphen="noBreakHyphen",r.Table="table",r.Row="row",r.Cell="cell",r.Hyperlink="hyperlink",r.Drawing="drawing",r.Image="image",r.Text="text",r.Tab="tab",r.Symbol="symbol",r.BookmarkStart="bookmarkStart",r.BookmarkEnd="bookmarkEnd",r.Footer="footer",r.Header="header",r.FootnoteReference="footnoteReference",r.EndnoteReference="endnoteReference",r.Footnote="footnote",r.Endnote="endnote",r.SimpleField="simpleField",r.ComplexField="complexField",r.Instruction="instruction",r.VmlPicture="vmlPicture",r.MmlMath="mmlMath",r.MmlMathParagraph="mmlMathParagraph",r.MmlFraction="mmlFraction",r.MmlNumerator="mmlNumerator",r.MmlDenominator="mmlDenominator",r.MmlRadical="mmlRadical",r.MmlBase="mmlBase",r.MmlDegree="mmlDegree",r.MmlSuperscript="mmlSuperscript",r.MmlSubscript="mmlSubscript",r.MmlSubArgument="mmlSubArgument",r.MmlSuperArgument="mmlSuperArgument",r.MmlNary="mmlNary",r.MmlDelimiter="mmlDelimiter",r.VmlElement="vmlElement",r.Inserted="inserted",r.Deleted="deleted",r.DeletedText="deletedText"},931:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseLineSpacing=void 0,t.parseLineSpacing=function(e,t){return{before:t.lengthAttr(e,"before"),after:t.lengthAttr(e,"after"),line:t.intAttr(e,"line"),lineRule:t.attr(e,"lineRule")}}},109:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseNumbering=t.parseTabs=t.parseParagraphProperty=t.parseParagraphProperties=void 0;const a=r(149),s=r(59),n=r(931),l=r(488);function o(e,t,r){if(e.namespaceURI!=a.ns.wordml)return!1;if((0,a.parseCommonProperty)(e,t,r))return!0;switch(e.localName){case"tabs":t.tabs=i(e,r);break;case"sectPr":t.sectionProps=(0,s.parseSectionProperties)(e,r);break;case"numPr":t.numbering=c(e,r);break;case"spacing":return t.lineSpacing=(0,n.parseLineSpacing)(e,r),!1;case"textAlignment":return t.textAlignment=r.attr(e,"val"),!1;case"keepNext":t.keepLines=r.boolAttr(e,"val",!0);break;case"keepNext":t.keepNext=r.boolAttr(e,"val",!0);break;case"pageBreakBefore":t.pageBreakBefore=r.boolAttr(e,"val",!0);break;case"outlineLvl":t.outlineLevel=r.intAttr(e,"val");break;case"pStyle":t.styleName=r.attr(e,"val");break;case"rPr":t.runProps=(0,l.parseRunProperties)(e,r);break;default:return!1}return!0}function i(e,t){return t.elements(e,"tab").map((e=>({position:t.lengthAttr(e,"pos"),leader:t.attr(e,"leader"),style:t.attr(e,"val")})))}function c(e,t){var r={};for(let a of t.elements(e))switch(a.localName){case"numId":r.id=t.attr(a,"val");break;case"ilvl":r.level=t.intAttr(a,"val")}return r}t.parseParagraphProperties=function(e,t){let r={};for(let a of t.elements(e))o(a,r,t);return r},t.parseParagraphProperty=o,t.parseTabs=i,t.parseNumbering=c},488:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRunProperty=t.parseRunProperties=void 0;const a=r(149);function s(e,t,r){return!!(0,a.parseCommonProperty)(e,t,r)}t.parseRunProperties=function(e,t){let r={};for(let a of t.elements(e))s(a,r,t);return r},t.parseRunProperty=s},59:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseSectionProperties=t.SectionType=void 0;const a=r(472),s=r(191);function n(e,t){return{numberOfColumns:t.intAttr(e,"num"),space:t.lengthAttr(e,"space"),separator:t.boolAttr(e,"sep"),equalWidth:t.boolAttr(e,"equalWidth",!0),columns:t.elements(e,"col").map((e=>({width:t.lengthAttr(e,"w"),space:t.lengthAttr(e,"space")})))}}function l(e,t){return{chapSep:t.attr(e,"chapSep"),chapStyle:t.attr(e,"chapStyle"),format:t.attr(e,"fmt"),start:t.intAttr(e,"start")}}function o(e,t){return{id:t.attr(e,"id"),type:t.attr(e,"type")}}var i;(i=t.SectionType||(t.SectionType={})).Continuous="continuous",i.NextPage="nextPage",i.NextColumn="nextColumn",i.EvenPage="evenPage",i.OddPage="oddPage",t.parseSectionProperties=function(e,t=a.default){var r,i,c={};for(let a of t.elements(e))switch(a.localName){case"pgSz":c.pageSize={width:t.lengthAttr(a,"w"),height:t.lengthAttr(a,"h"),orientation:t.attr(a,"orient")};break;case"type":c.type=t.attr(a,"val");break;case"pgMar":c.pageMargins={left:t.lengthAttr(a,"left"),right:t.lengthAttr(a,"right"),top:t.lengthAttr(a,"top"),bottom:t.lengthAttr(a,"bottom"),header:t.lengthAttr(a,"header"),footer:t.lengthAttr(a,"footer"),gutter:t.lengthAttr(a,"gutter")};break;case"cols":c.columns=n(a,t);break;case"headerReference":(null!==(r=c.headerRefs)&&void 0!==r?r:c.headerRefs=[]).push(o(a,t));break;case"footerReference":(null!==(i=c.footerRefs)&&void 0!==i?i:c.footerRefs=[]).push(o(a,t));break;case"titlePg":c.titlePage=t.boolAttr(a,"val",!0);break;case"pgBorders":c.pageBorders=(0,s.parseBorders)(a,t);break;case"pgNumType":c.pageNumber=l(a,t)}return c}},667:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.renderAsync=t.praseAsync=t.defaultOptions=void 0;const a=r(213),s=r(168),n=r(932);t.defaultOptions={ignoreHeight:!1,ignoreWidth:!1,ignoreFonts:!1,breakPages:!0,debug:!1,experimental:!1,className:"docx",inWrapper:!0,trimXmlDeclaration:!0,ignoreLastRenderedPageBreak:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0,useBase64URL:!1,useMathMLPolyfill:!1,renderChanges:!1},t.praseAsync=function(e,r=null){const n=Object.assign(Object.assign({},t.defaultOptions),r);return a.WordDocument.load(e,new s.DocumentParser(n),n)},t.renderAsync=function(e,r,l=null,o=null){const i=Object.assign(Object.assign({},t.defaultOptions),o),c=new n.HtmlRenderer(window.document);return a.WordDocument.load(e,new s.DocumentParser(i),i).then((e=>(c.render(e,r,l,i),e)))}},380:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontTablePart=void 0;const a=r(530),s=r(512);class n extends a.Part{parseXml(e){this.fonts=(0,s.parseFonts)(e,this._package.xmlParser)}}t.FontTablePart=n},512:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseEmbedFontRef=t.parseFont=t.parseFonts=void 0;const r={embedRegular:"regular",embedBold:"bold",embedItalic:"italic",embedBoldItalic:"boldItalic"};function a(e,t){let r={name:t.attr(e,"name"),embedFontRefs:[]};for(let a of t.elements(e))switch(a.localName){case"family":r.family=t.attr(a,"val");break;case"altName":r.altName=t.attr(a,"val");break;case"embedRegular":case"embedBold":case"embedItalic":case"embedBoldItalic":r.embedFontRefs.push(s(a,t))}return r}function s(e,t){return{id:t.attr(e,"id"),key:t.attr(e,"fontKey"),type:r[e.localName]}}t.parseFonts=function(e,t){return t.elements(e).map((e=>a(e,t)))},t.parseFont=a,t.parseEmbedFontRef=s},984:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WmlFooter=t.WmlHeader=void 0;const a=r(120);t.WmlHeader=class{constructor(){this.type=a.DomType.Header,this.children=[],this.cssStyle={}}},t.WmlFooter=class{constructor(){this.type=a.DomType.Footer,this.children=[],this.cssStyle={}}}},985:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FooterPart=t.HeaderPart=t.BaseHeaderFooterPart=void 0;const a=r(530),s=r(984);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.rootElement=this.createRootElement(),this.rootElement.children=this._documentParser.parseBodyElements(e)}}t.BaseHeaderFooterPart=n,t.HeaderPart=class extends n{createRootElement(){return new s.WmlHeader}},t.FooterPart=class extends n{createRootElement(){return new s.WmlFooter}}},932:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlRenderer=void 0;const a=r(120),s=r(593),n=r(630),l=r(438),o="http://www.w3.org/1998/Math/MathML";function i(e,t,r){return u(void 0,e,t,r)}function c(e,t,r){return u("http://www.w3.org/2000/svg",e,t,r)}function u(e,t,r,a){var s=e?document.createElementNS(e,t):document.createElement(t);return Object.assign(s,r),a&&d(s,a),s}function p(e){e.innerHTML=""}function d(e,t){t.forEach((t=>e.appendChild((0,s.isString)(t)?document.createTextNode(t):t)))}function h(e){return i("style",{innerHTML:e})}function m(e,t){e.appendChild(document.createComment(t))}t.HtmlRenderer=class{constructor(e){this.htmlDocument=e,this.className="docx",this.styleMap={},this.currentPart=null,this.tableVerticalMerges=[],this.currentVerticalMerge=null,this.tableCellPositions=[],this.currentCellPosition=null,this.footnoteMap={},this.endnoteMap={},this.currentEndnoteIds=[],this.usedHederFooterParts=[],this.currentTabs=[],this.tabsTimeout=0,this.createElement=i}render(e,t,r=null,a){var n;this.document=e,this.options=a,this.className=a.className,this.styleMap=null,p(r=r||t),p(t),m(r,"docxjs library predefined styles"),r.appendChild(this.renderDefaultStyle()),!window.MathMLElement&&a.useMathMLPolyfill&&(m(r,"docxjs mathml polyfill styles"),r.appendChild(h(l.default))),e.themePart&&(m(r,"docxjs document theme values"),this.renderTheme(e.themePart,r)),null!=e.stylesPart&&(this.styleMap=this.processStyles(e.stylesPart.styles),m(r,"docxjs document styles"),r.appendChild(this.renderStyles(e.stylesPart.styles))),e.numberingPart&&(this.prodessNumberings(e.numberingPart.domNumberings),m(r,"docxjs document numbering styles"),r.appendChild(this.renderNumbering(e.numberingPart.domNumberings,r))),e.footnotesPart&&(this.footnoteMap=(0,s.keyBy)(e.footnotesPart.notes,(e=>e.id))),e.endnotesPart&&(this.endnoteMap=(0,s.keyBy)(e.endnotesPart.notes,(e=>e.id))),e.settingsPart&&(this.defaultTabSize=null===(n=e.settingsPart.settings)||void 0===n?void 0:n.defaultTabStop),!a.ignoreFonts&&e.fontTablePart&&this.renderFontTable(e.fontTablePart,r);var o=this.renderSections(e.documentPart.body);this.options.inWrapper?t.appendChild(this.renderWrapper(o)):d(t,o),this.refreshTabStops()}renderTheme(e,t){var r,a;const s={},n=null===(r=e.theme)||void 0===r?void 0:r.fontScheme;n&&(n.majorFont&&(s["--docx-majorHAnsi-font"]=n.majorFont.latinTypeface),n.minorFont&&(s["--docx-minorHAnsi-font"]=n.minorFont.latinTypeface));const l=null===(a=e.theme)||void 0===a?void 0:a.colorScheme;if(l)for(let[e,t]of Object.entries(l.colors))s[`--docx-${e}-color`]=`#${t}`;const o=this.styleToString(`.${this.className}`,s);t.appendChild(h(o))}renderFontTable(e,t){for(let r of e.fonts)for(let e of r.embedFontRefs)this.document.loadFont(e.id,e.key).then((a=>{const s={"font-family":r.name,src:`url(${a})`};"bold"!=e.type&&"boldItalic"!=e.type||(s["font-weight"]="bold"),"italic"!=e.type&&"boldItalic"!=e.type||(s["font-style"]="italic"),m(t,`docxjs ${r.name} font`);const n=this.styleToString("@font-face",s);t.appendChild(h(n)),this.refreshTabStops()}))}processStyleName(e){return e?`${this.className}_${(0,s.escapeClassName)(e)}`:this.className}processStyles(e){const t=(0,s.keyBy)(e.filter((e=>null!=e.id)),(e=>e.id));for(const a of e.filter((e=>e.basedOn))){var r=t[a.basedOn];if(r){a.paragraphProps=(0,s.mergeDeep)(a.paragraphProps,r.paragraphProps),a.runProps=(0,s.mergeDeep)(a.runProps,r.runProps);for(const e of r.styles){const t=a.styles.find((t=>t.target==e.target));t?this.copyStyleProperties(e.values,t.values):a.styles.push(Object.assign(Object.assign({},e),{values:Object.assign({},e.values)}))}}else this.options.debug&&console.warn(`Can't find base style ${a.basedOn}`)}for(let t of e)t.cssName=this.processStyleName(t.id);return t}prodessNumberings(e){var t;for(let r of e.filter((e=>e.pStyleName))){const e=this.findStyle(r.pStyleName);(null===(t=null==e?void 0:e.paragraphProps)||void 0===t?void 0:t.numbering)&&(e.paragraphProps.numbering.level=r.level)}}processElement(e){if(e.children)for(var t of e.children)t.parent=e,t.type==a.DomType.Table?this.processTable(t):this.processElement(t)}processTable(e){for(var t of e.children)for(var r of t.children)r.cssStyle=this.copyStyleProperties(e.cellStyle,r.cssStyle,["border-left","border-right","border-top","border-bottom","padding-left","padding-right","padding-top","padding-bottom"]),this.processElement(r)}copyStyleProperties(e,t,r=null){if(!e)return t;for(var a of(null==t&&(t={}),null==r&&(r=Object.getOwnPropertyNames(e)),r))e.hasOwnProperty(a)&&!t.hasOwnProperty(a)&&(t[a]=e[a]);return t}createSection(e,t){var r=this.createElement("section",{className:e});return t&&(t.pageMargins&&(r.style.paddingLeft=t.pageMargins.left,r.style.paddingRight=t.pageMargins.right,r.style.paddingTop=t.pageMargins.top,r.style.paddingBottom=t.pageMargins.bottom),t.pageSize&&(this.options.ignoreWidth||(r.style.width=t.pageSize.width),this.options.ignoreHeight||(r.style.minHeight=t.pageSize.height)),t.columns&&t.columns.numberOfColumns&&(r.style.columnCount=`${t.columns.numberOfColumns}`,r.style.columnGap=t.columns.space,t.columns.separator&&(r.style.columnRule="1px solid black"))),r}renderSections(e){const t=[];this.processElement(e);const r=this.splitBySection(e.children);let a=null;for(let n=0,l=r.length;n"first"==e.type)):null)&&void 0!==n?n:r%2==1?e.find((e=>"even"==e.type)):null)&&void 0!==l?l:e.find((e=>"default"==e.type)),i=o&&this.document.findPartByRelId(o.id,this.document.documentPart);i&&(this.currentPart=i,this.usedHederFooterParts.includes(i.path)||(this.processElement(i.rootElement),this.usedHederFooterParts.push(i.path)),this.renderElements([i.rootElement],s),this.currentPart=null)}}isPageBreakElement(e){return e.type==a.DomType.Break&&("lastRenderedPageBreak"==e.break?!this.options.ignoreLastRenderedPageBreak:"page"==e.break)}splitBySection(e){var t,r={sectProps:null,elements:[]},s=[r];for(let u of e){if(u.type==a.DomType.Paragraph){const e=this.findStyle(u.styleName);(null===(t=null==e?void 0:e.paragraphProps)||void 0===t?void 0:t.pageBreakBefore)&&(r.sectProps=n,r={sectProps:null,elements:[]},s.push(r))}if(r.elements.push(u),u.type==a.DomType.Paragraph){const e=u;var n=e.sectionProps,l=-1,o=-1;if(this.options.breakPages&&e.children&&(l=e.children.findIndex((e=>{var t,r;return-1!=(o=null!==(r=null===(t=e.children)||void 0===t?void 0:t.findIndex(this.isPageBreakElement.bind(this)))&&void 0!==r?r:-1)}))),(n||-1!=l)&&(r.sectProps=n,r={sectProps:null,elements:[]},s.push(r)),-1!=l){let t=e.children[l],a=o=0;e--)null==s[e].sectProps?s[e].sectProps=u:u=s[e].sectProps;return s}renderWrapper(e){return this.createElement("div",{className:`${this.className}-wrapper`},e)}renderDefaultStyle(){var e=this.className;return h(`\n.${e}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } \n.${e}-wrapper>section.${e} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; }\n.${e} { color: black; }\nsection.${e} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\nsection.${e}>article { margin-bottom: auto; }\n.${e} table { border-collapse: collapse; }\n.${e} table td, .${e} table th { vertical-align: top; }\n.${e} p { margin: 0pt; min-height: 1em; }\n.${e} span { white-space: pre-wrap; overflow-wrap: break-word; }\n.${e} a { color: inherit; text-decoration: inherit; }\n`)}renderNumbering(e,t){var r="",a=[];for(var s of e){var n=`p.${this.numberingClass(s.id,s.level)}`,l="none";if(s.bullet){let e=`--${this.className}-${s.bullet.src}`.toLowerCase();r+=this.styleToString(`${n}:before`,{content:"' '",display:"inline-block",background:`var(${e})`},s.bullet.style),this.document.loadNumberingImage(s.bullet.src).then((r=>{var a=`.${this.className}-wrapper { ${e}: url(${r}) }`;t.appendChild(h(a))}))}else if(s.levelText){let e=this.numberingCounter(s.id,s.level);s.level>0?r+=this.styleToString(`p.${this.numberingClass(s.id,s.level-1)}`,{"counter-reset":e}):a.push(e),r+=this.styleToString(`${n}:before`,Object.assign({content:this.levelTextToContent(s.levelText,s.suff,s.id,this.numFormatToCssValue(s.format)),"counter-increment":e},s.rStyle))}else l=this.numFormatToCssValue(s.format);r+=this.styleToString(n,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":l},s.pStyle))}return a.length>0&&(r+=this.styleToString(`.${this.className}-wrapper`,{"counter-reset":a.join(" ")})),h(r)}renderStyles(e){var t,r="";const a=this.styleMap,n=(0,s.keyBy)(e.filter((e=>e.isDefault)),(e=>e.target));for(const s of e){var l=s.styles;if(s.linked){var o=s.linked&&a[s.linked];o?l=l.concat(o.styles):this.options.debug&&console.warn(`Can't find linked style ${s.linked}`)}for(const e of l){var i=`${null!==(t=s.target)&&void 0!==t?t:""}.${s.cssName}`;s.target!=e.target&&(i+=` ${e.target}`),n[s.target]==s&&(i=`.${this.className} ${s.target}, `+i),r+=this.styleToString(i,e.values)}}return h(r)}renderNotes(e,t,r){var a=e.map((e=>t[e])).filter((e=>e));if(a.length>0){var s=this.createElement("ol",null,this.renderElements(a));r.appendChild(s)}}renderElement(e){switch(e.type){case a.DomType.Paragraph:return this.renderParagraph(e);case a.DomType.BookmarkStart:return this.renderBookmarkStart(e);case a.DomType.BookmarkEnd:return null;case a.DomType.Run:return this.renderRun(e);case a.DomType.Table:return this.renderTable(e);case a.DomType.Row:return this.renderTableRow(e);case a.DomType.Cell:return this.renderTableCell(e);case a.DomType.Hyperlink:return this.renderHyperlink(e);case a.DomType.Drawing:return this.renderDrawing(e);case a.DomType.Image:return this.renderImage(e);case a.DomType.Text:case a.DomType.Text:return this.renderText(e);case a.DomType.DeletedText:return this.renderDeletedText(e);case a.DomType.Tab:return this.renderTab(e);case a.DomType.Symbol:return this.renderSymbol(e);case a.DomType.Break:return this.renderBreak(e);case a.DomType.Footer:return this.renderContainer(e,"footer");case a.DomType.Header:return this.renderContainer(e,"header");case a.DomType.Footnote:case a.DomType.Endnote:return this.renderContainer(e,"li");case a.DomType.FootnoteReference:return this.renderFootnoteReference(e);case a.DomType.EndnoteReference:return this.renderEndnoteReference(e);case a.DomType.NoBreakHyphen:return this.createElement("wbr");case a.DomType.VmlPicture:return this.renderVmlPicture(e);case a.DomType.VmlElement:return this.renderVmlElement(e);case a.DomType.MmlMath:return this.renderContainerNS(e,o,"math",{xmlns:o});case a.DomType.MmlMathParagraph:return this.renderContainer(e,"span");case a.DomType.MmlFraction:return this.renderContainerNS(e,o,"mfrac");case a.DomType.MmlNumerator:case a.DomType.MmlDenominator:return this.renderContainerNS(e,o,"mrow");case a.DomType.MmlRadical:return this.renderMmlRadical(e);case a.DomType.MmlDegree:return this.renderContainerNS(e,o,"mn");case a.DomType.MmlSuperscript:return this.renderContainerNS(e,o,"msup");case a.DomType.MmlSubscript:return this.renderContainerNS(e,o,"msub");case a.DomType.MmlBase:return this.renderContainerNS(e,o,"mrow");case a.DomType.MmlSuperArgument:case a.DomType.MmlSubArgument:return this.renderContainerNS(e,o,"mn");case a.DomType.MmlDelimiter:return this.renderMmlDelimiter(e);case a.DomType.MmlNary:return this.renderMmlNary(e);case a.DomType.Inserted:return this.renderInserted(e);case a.DomType.Deleted:return this.renderDeleted(e)}return null}renderChildren(e,t){return this.renderElements(e.children,t)}renderElements(e,t){if(null==e)return null;var r=e.flatMap((e=>this.renderElement(e))).filter((e=>null!=e));return t&&d(t,r),r}renderContainer(e,t,r){return this.createElement(t,r,this.renderChildren(e))}renderContainerNS(e,t,r,a){return u(t,r,a,this.renderChildren(e))}renderParagraph(e){var t,r,a,s,n=this.createElement("p");const l=this.findStyle(e.styleName);null!==(t=e.tabs)&&void 0!==t||(e.tabs=null===(r=null==l?void 0:l.paragraphProps)||void 0===r?void 0:r.tabs),this.renderClass(e,n),this.renderChildren(e,n),this.renderStyleValues(e.cssStyle,n),this.renderCommonProperties(n.style,e);const o=null!==(a=e.numbering)&&void 0!==a?a:null===(s=null==l?void 0:l.paragraphProps)||void 0===s?void 0:s.numbering;return o&&n.classList.add(this.numberingClass(o.id,o.level)),n}renderRunProperties(e,t){this.renderCommonProperties(e,t)}renderCommonProperties(e,t){null!=t&&(t.color&&(e.color=t.color),t.fontSize&&(e["font-size"]=t.fontSize))}renderHyperlink(e){var t=this.createElement("a");if(this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),e.href)t.href=e.href;else if(e.id){const r=this.document.documentPart.rels.find((t=>t.id==e.id&&"External"===t.targetMode));t.href=null==r?void 0:r.target}return t}renderDrawing(e){var t=this.createElement("div");return t.style.display="inline-block",t.style.position="relative",t.style.textIndent="0px",this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),t}renderImage(e){let t=this.createElement("img");return this.renderStyleValues(e.cssStyle,t),this.document&&this.document.loadDocumentImage(e.src,this.currentPart).then((e=>{t.src=e})),t}renderText(e){return this.htmlDocument.createTextNode(e.text)}renderDeletedText(e){return this.options.renderEndnotes?this.htmlDocument.createTextNode(e.text):null}renderBreak(e){return"textWrapping"==e.break?this.createElement("br"):null}renderInserted(e){return this.options.renderChanges?this.renderContainer(e,"ins"):this.renderChildren(e)}renderDeleted(e){return this.options.renderChanges?this.renderContainer(e,"del"):null}renderSymbol(e){var t=this.createElement("span");return t.style.fontFamily=e.font,t.innerHTML=`&#x${e.char};`,t}renderFootnoteReference(e){var t=this.createElement("sup");return this.currentFootnoteIds.push(e.id),t.textContent=`${this.currentFootnoteIds.length}`,t}renderEndnoteReference(e){var t=this.createElement("sup");return this.currentEndnoteIds.push(e.id),t.textContent=`${this.currentEndnoteIds.length}`,t}renderTab(e){var t,r=this.createElement("span");if(r.innerHTML=" ",this.options.experimental){r.className=this.tabStopClass();var s=null===(t=function(e,t){for(var r=e.parent;null!=r&&r.type!=t;)r=r.parent;return r}(e,a.DomType.Paragraph))||void 0===t?void 0:t.tabs;this.currentTabs.push({stops:s,span:r})}return r}renderBookmarkStart(e){var t=this.createElement("span");return t.id=e.name,t}renderRun(e){if(e.fieldRun)return null;const t=this.createElement("span");if(e.id&&(t.id=e.id),this.renderClass(e,t),this.renderStyleValues(e.cssStyle,t),e.verticalAlign){const r=this.createElement(e.verticalAlign);this.renderChildren(e,r),t.appendChild(r)}else this.renderChildren(e,t);return t}renderTable(e){let t=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},e.columns&&t.appendChild(this.renderTableColumns(e.columns)),this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),t}renderTableColumns(e){let t=this.createElement("colgroup");for(let r of e){let e=this.createElement("col");r.width&&(e.style.width=r.width),t.appendChild(e)}return t}renderTableRow(e){let t=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),this.currentCellPosition.row++,t}renderTableCell(e){let t=this.createElement("td");if(e.verticalMerge){const r=this.currentCellPosition.col;"restart"==e.verticalMerge?(this.currentVerticalMerge[r]=t,t.rowSpan=1):this.currentVerticalMerge[r]&&(this.currentVerticalMerge[r].rowSpan+=1,t.style.display="none")}return this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),e.span&&(t.colSpan=e.span),this.currentCellPosition.col++,t}renderVmlPicture(e){var t=i("div");return this.renderChildren(e,t),t}renderVmlElement(e){var t,r,a=c("svg");a.setAttribute("style",e.cssStyleText);const s=c(e.tagName);return Object.entries(e.attrs).forEach((([e,t])=>s.setAttribute(e,t))),(null===(t=e.imageHref)||void 0===t?void 0:t.id)&&(null===(r=this.document)||void 0===r||r.loadDocumentImage(e.imageHref.id,this.currentPart).then((e=>s.setAttribute("href",e)))),a.appendChild(s),setTimeout((()=>{const e=a.firstElementChild.getBBox();a.setAttribute("width",`${Math.ceil(e.x+e.width)}`),a.setAttribute("height",`${Math.ceil(e.y+e.height)}`)}),0),a}renderMmlRadical(e){var t;const r=e.children.find((e=>e.type==a.DomType.MmlBase));if(null===(t=e.props)||void 0===t?void 0:t.hideDegree)return u(o,"msqrt",null,this.renderElements([r]));const s=e.children.find((e=>e.type==a.DomType.MmlDegree));return u(o,"mroot",null,this.renderElements([r,s]))}renderMmlDelimiter(e){var t,r;const a=[];return a.push(u(o,"mo",null,[null!==(t=e.props.beginChar)&&void 0!==t?t:"("])),a.push(...this.renderElements(e.children)),a.push(u(o,"mo",null,[null!==(r=e.props.endChar)&&void 0!==r?r:")"])),u(o,"mrow",null,a)}renderMmlNary(e){var t;const r=[],n=(0,s.keyBy)(e.children,(e=>e.type)),l=n[a.DomType.MmlSuperArgument],i=n[a.DomType.MmlSubArgument],c=l?u(o,"mo",null,(0,s.asArray)(this.renderElement(l))):null,p=i?u(o,"mo",null,(0,s.asArray)(this.renderElement(i))):null;if(null===(t=e.props)||void 0===t?void 0:t.char){const t=u(o,"mo",null,[e.props.char]);c||p?r.push(u(o,"munderover",null,[t,p,c])):c?r.push(u(o,"mover",null,[t,c])):p?r.push(u(o,"munder",null,[t,p])):r.push(t)}return r.push(...this.renderElements(n[a.DomType.MmlBase].children)),u(o,"mrow",null,r)}renderStyleValues(e,t){Object.assign(t.style,e)}renderClass(e,t){e.className&&(t.className=e.className),e.styleName&&t.classList.add(this.processStyleName(e.styleName))}findStyle(e){var t;return e&&(null===(t=this.styleMap)||void 0===t?void 0:t[e])}numberingClass(e,t){return`${this.className}-num-${e}-${t}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(e,t,r=null){let a=`${e} {\r\n`;for(const e in t)a+=` ${e}: ${t[e]};\r\n`;return r&&(a+=r),a+"}\r\n"}numberingCounter(e,t){return`${this.className}-num-${e}-${t}`}levelTextToContent(e,t,r,a){var s;return`"${e.replace(/%\d*/g,(e=>{let t=parseInt(e.substring(1),10)-1;return`"counter(${this.numberingCounter(r,t)}, ${a})"`}))}${null!==(s={tab:"\\9",space:"\\a0"}[t])&&void 0!==s?s:""}"`}numFormatToCssValue(e){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[e]||e}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout((()=>{const e=(0,n.computePixelToPoint)();for(let t of this.currentTabs)(0,n.updateTabStop)(t.span,t.stops,this.defaultTabSize,e)}),500))}}},630:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTabStop=t.computePixelToPoint=void 0;const r={pos:0,leader:"none",style:"left"};function a(e){return parseFloat(e)}t.computePixelToPoint=function(e=document.body){const t=document.createElement("div");t.style.width="100pt",e.appendChild(t);const r=100/t.offsetWidth;return e.removeChild(t),r},t.updateTabStop=function(e,t,s,n=.75){const l=e.closest("p"),o=e.getBoundingClientRect(),i=l.getBoundingClientRect(),c=getComputedStyle(l),u=(null==t?void 0:t.length)>0?t.map((e=>({pos:a(e.position),leader:e.leader,style:e.style}))).sort(((e,t)=>e.pos-t.pos)):[r],p=u[u.length-1],d=i.width*n,h=a(s);let m=p.pos+h;if(m"clear"!=e.style&&e.pos>b));if(null==y)return;let v=1;if("right"==y.style||"center"==y.style){const t=Array.from(l.querySelectorAll(`.${e.className}`)),r=t.indexOf(e)+1,a=document.createRange();a.setStart(e,1),r{Object.defineProperty(t,"__esModule",{value:!0}),t.WmlEndnote=t.WmlFootnote=t.WmlBaseNote=void 0;const a=r(120);class s{constructor(){this.children=[],this.cssStyle={}}}t.WmlBaseNote=s,t.WmlFootnote=class extends s{constructor(){super(...arguments),this.type=a.DomType.Footnote}},t.WmlEndnote=class extends s{constructor(){super(...arguments),this.type=a.DomType.Endnote}}},735:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EndnotesPart=t.FootnotesPart=t.BaseNotePart=void 0;const a=r(530),s=r(881);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}}t.BaseNotePart=n,t.FootnotesPart=class extends n{constructor(e,t,r){super(e,t,r)}parseXml(e){this.notes=this._documentParser.parseNotes(e,"footnote",s.WmlFootnote)}},t.EndnotesPart=class extends n{constructor(e,t,r){super(e,t,r)}parseXml(e){this.notes=this._documentParser.parseNotes(e,"endnote",s.WmlEndnote)}}},527:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NumberingPart=void 0;const a=r(530),s=r(682);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){Object.assign(this,(0,s.parseNumberingPart)(e,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(e)}}t.NumberingPart=n},682:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseNumberingBulletPicture=t.parseNumberingLevelOverrride=t.parseNumberingLevel=t.parseAbstractNumbering=t.parseNumbering=t.parseNumberingPart=void 0;const a=r(109),s=r(488);function n(e,t){let r={id:t.attr(e,"numId"),overrides:[]};for(let a of t.elements(e))switch(a.localName){case"abstractNumId":r.abstractId=t.attr(a,"val");break;case"lvlOverride":r.overrides.push(i(a,t))}return r}function l(e,t){let r={id:t.attr(e,"abstractNumId"),levels:[]};for(let a of t.elements(e))switch(a.localName){case"name":r.name=t.attr(a,"val");break;case"multiLevelType":r.multiLevelType=t.attr(a,"val");break;case"numStyleLink":r.numberingStyleLink=t.attr(a,"val");break;case"styleLink":r.styleLink=t.attr(a,"val");break;case"lvl":r.levels.push(o(a,t))}return r}function o(e,t){let r={level:t.intAttr(e,"ilvl")};for(let n of t.elements(e))switch(n.localName){case"start":r.start=t.attr(n,"val");break;case"lvlRestart":r.restart=t.intAttr(n,"val");break;case"numFmt":r.format=t.attr(n,"val");break;case"lvlText":r.text=t.attr(n,"val");break;case"lvlJc":r.justification=t.attr(n,"val");break;case"lvlPicBulletId":r.bulletPictureId=t.attr(n,"val");break;case"pStyle":r.paragraphStyle=t.attr(n,"val");break;case"pPr":r.paragraphProps=(0,a.parseParagraphProperties)(n,t);break;case"rPr":r.runProps=(0,s.parseRunProperties)(n,t)}return r}function i(e,t){let r={level:t.intAttr(e,"ilvl")};for(let a of t.elements(e))switch(a.localName){case"startOverride":r.start=t.intAttr(a,"val");break;case"lvl":r.numberingLevel=o(a,t)}return r}function c(e,t){var r=t.element(e,"pict"),a=r&&t.element(r,"shape"),s=a&&t.element(a,"imagedata");return s?{id:t.attr(e,"numPicBulletId"),referenceId:t.attr(s,"id"),style:t.attr(a,"style")}:null}t.parseNumberingPart=function(e,t){let r={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let a of t.elements(e))switch(a.localName){case"num":r.numberings.push(n(a,t));break;case"abstractNum":r.abstractNumberings.push(l(a,t));break;case"numPicBullet":r.bulletPictures.push(c(a,t))}return r},t.parseNumbering=n,t.parseAbstractNumbering=l,t.parseNumberingLevel=o,t.parseNumberingLevelOverrride=i,t.parseNumberingBulletPicture=c},472:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XmlParser=t.serializeXmlString=t.parseXmlString=void 0;const a=r(149);t.parseXmlString=function(e,t=!1){t&&(e=e.replace(/<[?].*[?]>/,""));const r=(new DOMParser).parseFromString(e,"application/xml"),a=null===(s=r.getElementsByTagName("parsererror")[0])||void 0===s?void 0:s.textContent;var s;if(a)throw new Error(a);return r},t.serializeXmlString=function(e){return(new XMLSerializer).serializeToString(e)};class s{elements(e,t=null){const r=[];for(let a=0,s=e.childNodes.length;a{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsPart=void 0;const a=r(530),s=r(846);class n extends a.Part{constructor(e,t){super(e,t)}parseXml(e){this.settings=(0,s.parseSettings)(e,this._package.xmlParser)}}t.SettingsPart=n},846:(e,t)=>{function r(e,t){var r={defaultNoteIds:[]};for(let a of t.elements(e))switch(a.localName){case"numFmt":r.nummeringFormat=t.attr(a,"val");break;case"footnote":case"endnote":r.defaultNoteIds.push(t.attr(a,"id"))}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.parseNoteProperties=t.parseSettings=void 0,t.parseSettings=function(e,t){var a={};for(let s of t.elements(e))switch(s.localName){case"defaultTabStop":a.defaultTabStop=t.lengthAttr(s,"val");break;case"footnotePr":a.footnoteProps=r(s,t);break;case"endnotePr":a.endnoteProps=r(s,t);break;case"autoHyphenation":a.autoHyphenation=t.boolAttr(s,"val")}return a},t.parseNoteProperties=r},240:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StylesPart=void 0;const a=r(530);class s extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.styles=this._documentParser.parseStylesFile(e)}}t.StylesPart=s},893:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemePart=void 0;const a=r(530),s=r(55);class n extends a.Part{constructor(e,t){super(e,t)}parseXml(e){this.theme=(0,s.parseTheme)(e,this._package.xmlParser)}}t.ThemePart=n},55:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseFontInfo=t.parseFontScheme=t.parseColorScheme=t.parseTheme=t.DmlTheme=void 0;class r{}function a(e,t){var r={name:t.attr(e,"name"),colors:{}};for(let n of t.elements(e)){var a=t.element(n,"srgbClr"),s=t.element(n,"sysClr");a?r.colors[n.localName]=t.attr(a,"val"):s&&(r.colors[n.localName]=t.attr(s,"lastClr"))}return r}function s(e,t){var r={name:t.attr(e,"name")};for(let a of t.elements(e))switch(a.localName){case"majorFont":r.majorFont=n(a,t);break;case"minorFont":r.minorFont=n(a,t)}return r}function n(e,t){return{latinTypeface:t.elementAttr(e,"latin","typeface"),eaTypeface:t.elementAttr(e,"ea","typeface"),csTypeface:t.elementAttr(e,"cs","typeface")}}t.DmlTheme=r,t.parseTheme=function(e,t){var n=new r,l=t.element(e,"themeElements");for(let e of t.elements(l))switch(e.localName){case"clrScheme":n.colorScheme=a(e,t);break;case"fontScheme":n.fontScheme=s(e,t)}return n},t.parseColorScheme=a,t.parseFontScheme=s,t.parseFontInfo=n},593:(e,t)=>{function r(e){return e&&"object"==typeof e&&!Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.asArray=t.formatCssRules=t.parseCssRules=t.mergeDeep=t.isString=t.isObject=t.blobToBase64=t.keyBy=t.resolvePath=t.splitPath=t.escapeClassName=void 0,t.escapeClassName=function(e){return null==e?void 0:e.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},t.splitPath=function(e){let t=e.lastIndexOf("/")+1;return[0==t?"":e.substring(0,t),0==t?e:e.substring(t)]},t.resolvePath=function(e,t){try{const r="http://docx/";return new URL(e,r+t).toString().substring(r.length)}catch(r){return`${t}${e}`}},t.keyBy=function(e,t){return e.reduce(((e,r)=>(e[t(r)]=r,e)),{})},t.blobToBase64=function(e){return new Promise(((t,r)=>{const a=new FileReader;a.onloadend=()=>t(a.result),a.readAsDataURL(e)}))},t.isObject=r,t.isString=function(e){return e&&"string"==typeof e||e instanceof String},t.mergeDeep=function e(t,...a){var s;if(!a.length)return t;const n=a.shift();if(r(t)&&r(n))for(const a in n)r(n[a])?e(null!==(s=t[a])&&void 0!==s?s:t[a]={},n[a]):t[a]=n[a];return e(t,...a)},t.parseCssRules=function(e){const t={};for(const r of e.split(";")){const[e,a]=r.split(":");t[e]=a}return t},t.formatCssRules=function(e){return Object.entries(e).map(((e,t)=>`${e}: ${t}`)).join(";")},t.asArray=function(e){return Array.isArray(e)?e:[e]}},320:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseVmlElement=t.VmlElement=void 0;const a=r(149),s=r(120),n=r(472);class l{constructor(){this.type=s.DomType.VmlElement,this.attrs={},this.chidren=[]}}function o(e){var t;return{stroke:n.default.attr(e,"color"),"stroke-width":null!==(t=n.default.lengthAttr(e,"weight",a.LengthUsage.Emu))&&void 0!==t?t:"1px"}}function i(e){return e.split(",")}t.VmlElement=l,t.parseVmlElement=function e(t){var r=new l;switch(t.localName){case"rect":r.tagName="rect",Object.assign(r.attrs,{width:"100%",height:"100%"});break;case"oval":r.tagName="ellipse",Object.assign(r.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":r.tagName="line";break;case"shape":r.tagName="g";break;default:return null}for(const e of n.default.attrs(t))switch(e.localName){case"style":r.cssStyleText=e.value;break;case"fillcolor":r.attrs.fill=e.value;break;case"from":const[t,a]=i(e.value);Object.assign(r.attrs,{x1:t,y1:a});break;case"to":const[s,n]=i(e.value);Object.assign(r.attrs,{x2:s,y2:n})}for(const a of n.default.elements(t))switch(a.localName){case"stroke":Object.assign(r.attrs,o(a));break;case"fill":Object.assign(r.attrs,{});break;case"imagedata":r.tagName="image",Object.assign(r.attrs,{width:"100%",height:"100%"}),r.imageHref={id:n.default.attr(a,"id"),title:n.default.attr(a,"title")};break;default:const t=e(a);t&&r.chidren.push(t)}return r}},213:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deobfuscate=t.WordDocument=void 0;const a=r(461),s=r(380),n=r(522),l=r(448),o=r(593),i=r(527),c=r(240),u=r(985),p=r(665),d=r(162),h=r(893),m=r(735),f=r(287),g=r(177),b=[{type:a.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:a.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:a.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:a.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class y{constructor(){this.parts=[],this.partsMap={}}static load(e,t,r){var a=new y;return a._options=r,a._parser=t,n.OpenXmlPackage.load(e,r).then((e=>(a._package=e,a._package.loadRelationships()))).then((e=>{a.rels=e;const t=b.map((t=>{var r;const s=null!==(r=e.find((e=>e.type===t.type)))&&void 0!==r?r:t;return a.loadRelationshipPart(s.target,s.type)}));return Promise.all(t)})).then((()=>a))}save(e="blob"){return this._package.save(e)}loadRelationshipPart(e,t){if(this.partsMap[e])return Promise.resolve(this.partsMap[e]);if(!this._package.get(e))return Promise.resolve(null);let r=null;switch(t){case a.RelationshipTypes.OfficeDocument:this.documentPart=r=new l.DocumentPart(this._package,e,this._parser);break;case a.RelationshipTypes.FontTable:this.fontTablePart=r=new s.FontTablePart(this._package,e);break;case a.RelationshipTypes.Numbering:this.numberingPart=r=new i.NumberingPart(this._package,e,this._parser);break;case a.RelationshipTypes.Styles:this.stylesPart=r=new c.StylesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Theme:this.themePart=r=new h.ThemePart(this._package,e);break;case a.RelationshipTypes.Footnotes:this.footnotesPart=r=new m.FootnotesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Endnotes:this.endnotesPart=r=new m.EndnotesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Footer:r=new u.FooterPart(this._package,e,this._parser);break;case a.RelationshipTypes.Header:r=new u.HeaderPart(this._package,e,this._parser);break;case a.RelationshipTypes.CoreProperties:this.corePropsPart=r=new d.CorePropsPart(this._package,e);break;case a.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=r=new p.ExtendedPropsPart(this._package,e);break;case a.RelationshipTypes.CustomProperties:r=new g.CustomPropsPart(this._package,e);break;case a.RelationshipTypes.Settings:this.settingsPart=r=new f.SettingsPart(this._package,e)}return null==r?Promise.resolve(null):(this.partsMap[e]=r,this.parts.push(r),r.load().then((()=>{if(null==r.rels||0==r.rels.length)return r;const[e]=(0,o.splitPath)(r.path),t=r.rels.map((t=>this.loadRelationshipPart((0,o.resolvePath)(t.target,e),t.type)));return Promise.all(t).then((()=>r))})))}loadDocumentImage(e,t){return this.loadResource(null!=t?t:this.documentPart,e,"blob").then((e=>this.blobToURL(e)))}loadNumberingImage(e){return this.loadResource(this.numberingPart,e,"blob").then((e=>this.blobToURL(e)))}loadFont(e,t){return this.loadResource(this.fontTablePart,e,"uint8array").then((e=>e?this.blobToURL(new Blob([v(e,t)])):e))}blobToURL(e){return e?this._options.useBase64URL?(0,o.blobToBase64)(e):URL.createObjectURL(e):null}findPartByRelId(e,t=null){var r,a=(null!==(r=t.rels)&&void 0!==r?r:this.rels).find((t=>t.id==e));const s=t?(0,o.splitPath)(t.path)[0]:"";return a?this.partsMap[(0,o.resolvePath)(a.target,s)]:null}getPathById(e,t){const r=e.rels.find((e=>e.id==t)),[a]=(0,o.splitPath)(e.path);return r?(0,o.resolvePath)(r.target,a):null}loadResource(e,t,r){const a=this.getPathById(e,t);return a?this._package.load(a,r):Promise.resolve(null)}}function v(e,t){const r=t.replace(/{|}|-/g,""),a=new Array(16);for(let e=0;e<16;e++)a[16-e-1]=parseInt(r.substr(2*e,2),16);for(let t=0;t<32;t++)e[t]=e[t]^a[t%16];return e}t.WordDocument=y,t.deobfuscate=v},583:e=>{e.exports="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"},626:t=>{t.exports=e}},r={};function a(e){var s=r[e];if(void 0!==s)return s.exports;var n=r[e]={id:e,exports:{}};return t[e](n,n.exports,a),n.exports}return a.m=t,a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.b=document.baseURI||self.location.href,a(667)})())); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jszip")):"function"==typeof define&&define.amd?define(["jszip"],t):"object"==typeof exports?exports.docx=t(require("jszip")):e.docx=t(e.JSZip)}(globalThis,(e=>(()=>{"use strict";var t={438:(e,t,r)=>{r.r(t),r.d(t,{default:()=>d});var a=r(537),s=r.n(a),n=r(645),l=r.n(n),o=r(806),i=r.n(o),c=new URL(r(583),r.b),u=l()(s()),p=i()(c);u.push([e.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('+p+")}","",{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:""}]);const d=u.toString()},645:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",a=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),a&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),a&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,a,s,n){"string"==typeof e&&(e=[[null,e,void 0]]);var l={};if(a)for(var o=0;o0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=n),r&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=r):u[2]=r),s&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=s):u[4]="".concat(s)),t.push(u))}},t}},806:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},537:e=>{e.exports=function(e){var t=e[1],r=e[3];if(!r)return t;if("function"==typeof btoa){var a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),n="/*# ".concat(s," */"),l=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[t].concat(l).concat([n]).join("\n")}return[t].join("\n")}},522:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OpenXmlPackage=void 0;const a=r(626),s=r(472),n=r(593),l=r(461);class o{constructor(e,t){this._zip=e,this.options=t,this.xmlParser=new s.XmlParser}get(e){return this._zip.files[function(e){return e.startsWith("/")?e.substr(1):e}(e)]}update(e,t){this._zip.file(e,t)}static load(e,t){return a.loadAsync(e).then((e=>new o(e,t)))}save(e="blob"){return this._zip.generateAsync({type:e})}load(e,t="string"){var r,a;return null!==(a=null===(r=this.get(e))||void 0===r?void 0:r.async(t))&&void 0!==a?a:Promise.resolve(null)}loadRelationships(e=null){let t="_rels/.rels";if(null!=e){const[r,a]=(0,n.splitPath)(e);t=`${r}_rels/${a}.rels`}return this.load(t).then((e=>e?(0,l.parseRelationships)(this.parseXmlDocument(e).firstElementChild,this.xmlParser):null))}parseXmlDocument(e){return(0,s.parseXmlString)(e,this.options.trimXmlDeclaration)}}t.OpenXmlPackage=o},530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Part=void 0;const a=r(472);t.Part=class{constructor(e,t){this._package=e,this.path=t}load(){return Promise.all([this._package.loadRelationships(this.path).then((e=>{this.rels=e})),this._package.load(this.path).then((e=>{const t=this._package.parseXmlDocument(e);this._package.options.keepOrigin&&(this._xmlDocument=t),this.parseXml(t.firstElementChild)}))])}save(){this._package.update(this.path,(0,a.serializeXmlString)(this._xmlDocument))}parseXml(e){}}},461:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.parseRelationships=t.RelationshipTypes=void 0,(r=t.RelationshipTypes||(t.RelationshipTypes={})).OfficeDocument="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",r.FontTable="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",r.Image="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",r.Numbering="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",r.Styles="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",r.StylesWithEffects="http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects",r.Theme="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",r.Settings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",r.WebSettings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",r.Hyperlink="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",r.Footnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",r.Endnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",r.Footer="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",r.Header="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",r.ExtendedProperties="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",r.CoreProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",r.CustomProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties",t.parseRelationships=function(e,t){return t.elements(e).map((e=>({id:t.attr(e,"Id"),type:t.attr(e,"Type"),target:t.attr(e,"Target"),targetMode:t.attr(e,"TargetMode")})))}},168:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentParser=t.autos=void 0;const a=r(120),s=r(109),n=r(59),l=r(472),o=r(488),i=r(172),c=r(149),u=r(320);t.autos={shd:"inherit",color:"black",borderColor:"black",highlight:"transparent"};const p=[],d={oMath:a.DomType.MmlMath,oMathPara:a.DomType.MmlMathParagraph,f:a.DomType.MmlFraction,num:a.DomType.MmlNumerator,den:a.DomType.MmlDenominator,rad:a.DomType.MmlRadical,deg:a.DomType.MmlDegree,e:a.DomType.MmlBase,sSup:a.DomType.MmlSuperscript,sSub:a.DomType.MmlSubscript,sup:a.DomType.MmlSuperArgument,sub:a.DomType.MmlSubArgument,d:a.DomType.MmlDelimiter,nary:a.DomType.MmlNary};t.DocumentParser=class{constructor(e){this.options=Object.assign({ignoreWidth:!1,debug:!1},e)}parseNotes(e,t,r){var a=[];for(let s of l.default.elements(e,t)){const e=new r;e.id=l.default.attr(s,"id"),e.noteType=l.default.attr(s,"type"),e.children=this.parseBodyElements(s),a.push(e)}return a}parseDocumentFile(e){var t=l.default.element(e,"body"),r=l.default.element(e,"background"),s=l.default.element(t,"sectPr");return{type:a.DomType.Document,children:this.parseBodyElements(t),props:s?(0,n.parseSectionProperties)(s,l.default):null,cssStyle:r?this.parseBackground(r):{}}}parseBackground(e){var t={},r=m.colorAttr(e,"color");return r&&(t["background-color"]=r),t}parseBodyElements(e){var t=[];for(let r of l.default.elements(e))switch(r.localName){case"p":t.push(this.parseParagraph(r));break;case"tbl":t.push(this.parseTable(r));break;case"sdt":t.push(...this.parseSdt(r,(e=>this.parseBodyElements(e))))}return t}parseStylesFile(e){var t=[];return m.foreach(e,(e=>{switch(e.localName){case"style":t.push(this.parseStyle(e));break;case"docDefaults":t.push(this.parseDefaultStyles(e))}})),t}parseDefaultStyles(e){var t={id:null,name:null,target:null,basedOn:null,styles:[]};return m.foreach(e,(e=>{switch(e.localName){case"rPrDefault":var r=l.default.element(e,"rPr");r&&t.styles.push({target:"span",values:this.parseDefaultProperties(r,{})});break;case"pPrDefault":var a=l.default.element(e,"pPr");a&&t.styles.push({target:"p",values:this.parseDefaultProperties(a,{})})}})),t}parseStyle(e){var t={id:l.default.attr(e,"styleId"),isDefault:l.default.boolAttr(e,"default"),name:null,target:null,basedOn:null,styles:[],linked:null};switch(l.default.attr(e,"type")){case"paragraph":t.target="p";break;case"table":t.target="table";break;case"character":t.target="span"}return m.foreach(e,(e=>{switch(e.localName){case"basedOn":t.basedOn=l.default.attr(e,"val");break;case"name":t.name=l.default.attr(e,"val");break;case"link":t.linked=l.default.attr(e,"val");break;case"next":t.next=l.default.attr(e,"val");break;case"aliases":t.aliases=l.default.attr(e,"val").split(",");break;case"pPr":t.styles.push({target:"p",values:this.parseDefaultProperties(e,{})}),t.paragraphProps=(0,s.parseParagraphProperties)(e,l.default);break;case"rPr":t.styles.push({target:"span",values:this.parseDefaultProperties(e,{})}),t.runProps=(0,o.parseRunProperties)(e,l.default);break;case"tblPr":case"tcPr":t.styles.push({target:"td",values:this.parseDefaultProperties(e,{})});break;case"tblStylePr":for(let r of this.parseTableStyle(e))t.styles.push(r);break;case"rsid":case"qFormat":case"hidden":case"semiHidden":case"unhideWhenUsed":case"autoRedefine":case"uiPriority":break;default:this.options.debug&&console.warn(`DOCX: Unknown style element: ${e.localName}`)}})),t}parseTableStyle(e){var t=[],r=l.default.attr(e,"type"),a="",s="";switch(r){case"firstRow":s=".first-row",a="tr.first-row td";break;case"lastRow":s=".last-row",a="tr.last-row td";break;case"firstCol":s=".first-col",a="td.first-col";break;case"lastCol":s=".last-col",a="td.last-col";break;case"band1Vert":s=":not(.no-vband)",a="td.odd-col";break;case"band2Vert":s=":not(.no-vband)",a="td.even-col";break;case"band1Horz":s=":not(.no-hband)",a="tr.odd-row";break;case"band2Horz":s=":not(.no-hband)",a="tr.even-row";break;default:return[]}return m.foreach(e,(e=>{switch(e.localName){case"pPr":t.push({target:`${a} p`,mod:s,values:this.parseDefaultProperties(e,{})});break;case"rPr":t.push({target:`${a} span`,mod:s,values:this.parseDefaultProperties(e,{})});break;case"tblPr":case"tcPr":t.push({target:a,mod:s,values:this.parseDefaultProperties(e,{})})}})),t}parseNumberingFile(e){var t=[],r={},a=[];return m.foreach(e,(e=>{switch(e.localName){case"abstractNum":this.parseAbstractNumbering(e,a).forEach((e=>t.push(e)));break;case"numPicBullet":a.push(this.parseNumberingPicBullet(e));break;case"num":var s=l.default.attr(e,"numId"),n=l.default.elementAttr(e,"abstractNumId","val");r[n]=s}})),t.forEach((e=>e.id=r[e.id])),t}parseNumberingPicBullet(e){var t=l.default.element(e,"pict"),r=t&&l.default.element(t,"shape"),a=r&&l.default.element(r,"imagedata");return a?{id:l.default.intAttr(e,"numPicBulletId"),src:l.default.attr(a,"id"),style:l.default.attr(r,"style")}:null}parseAbstractNumbering(e,t){var r=[],a=l.default.attr(e,"abstractNumId");return m.foreach(e,(e=>{"lvl"===e.localName&&r.push(this.parseNumberingLevel(a,e,t))})),r}parseNumberingLevel(e,t,r){var a={id:e,level:l.default.intAttr(t,"ilvl"),pStyleName:void 0,pStyle:{},rStyle:{},suff:"tab"};return m.foreach(t,(e=>{switch(e.localName){case"pPr":this.parseDefaultProperties(e,a.pStyle);break;case"rPr":this.parseDefaultProperties(e,a.rStyle);break;case"lvlPicBulletId":var t=l.default.intAttr(e,"val");a.bullet=r.find((e=>e.id==t));break;case"lvlText":a.levelText=l.default.attr(e,"val");break;case"pStyle":a.pStyleName=l.default.attr(e,"val");break;case"numFmt":a.format=l.default.attr(e,"val");break;case"suff":a.suff=l.default.attr(e,"val")}})),a}parseSdt(e,t){const r=l.default.element(e,"sdtContent");return r?t(r):[]}parseInserted(e,t){var r,s;return{type:a.DomType.Inserted,children:null!==(s=null===(r=t(e))||void 0===r?void 0:r.children)&&void 0!==s?s:[]}}parseDeleted(e,t){var r,s;return{type:a.DomType.Deleted,children:null!==(s=null===(r=t(e))||void 0===r?void 0:r.children)&&void 0!==s?s:[]}}parseParagraph(e){var t={type:a.DomType.Paragraph,children:[]};for(let r of l.default.elements(e))switch(r.localName){case"pPr":this.parseParagraphProperties(r,t);break;case"r":t.children.push(this.parseRun(r,t));break;case"hyperlink":t.children.push(this.parseHyperlink(r,t));break;case"bookmarkStart":t.children.push((0,i.parseBookmarkStart)(r,l.default));break;case"bookmarkEnd":t.children.push((0,i.parseBookmarkEnd)(r,l.default));break;case"oMath":case"oMathPara":t.children.push(this.parseMathElement(r));break;case"sdt":t.children.push(...this.parseSdt(r,(e=>this.parseParagraph(e).children)));break;case"ins":t.children.push(this.parseInserted(r,(e=>this.parseParagraph(e))));break;case"del":t.children.push(this.parseDeleted(r,(e=>this.parseParagraph(e))))}return t}parseParagraphProperties(e,t){this.parseDefaultProperties(e,t.cssStyle={},null,(e=>{if((0,s.parseParagraphProperty)(e,t,l.default))return!0;switch(e.localName){case"pStyle":t.styleName=l.default.attr(e,"val");break;case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;case"framePr":this.parseFrame(e,t);break;case"rPr":break;default:return!1}return!0}))}parseFrame(e,t){"drop"==l.default.attr(e,"dropCap")&&(t.cssStyle.float="left")}parseHyperlink(e,t){var r={type:a.DomType.Hyperlink,parent:t,children:[]},s=l.default.attr(e,"anchor"),n=l.default.attr(e,"id");return s&&(r.href="#"+s),n&&(r.id=n),m.foreach(e,(e=>{"r"===e.localName&&r.children.push(this.parseRun(e,r))})),r}parseRun(e,t){var r={type:a.DomType.Run,parent:t,children:[]};return m.foreach(e,(e=>{switch((e=this.checkAlternateContent(e)).localName){case"t":r.children.push({type:a.DomType.Text,text:e.textContent});break;case"delText":r.children.push({type:a.DomType.DeletedText,text:e.textContent});break;case"fldSimple":r.children.push({type:a.DomType.SimpleField,instruction:l.default.attr(e,"instr"),lock:l.default.boolAttr(e,"lock",!1),dirty:l.default.boolAttr(e,"dirty",!1)});break;case"instrText":r.fieldRun=!0,r.children.push({type:a.DomType.Instruction,text:e.textContent});break;case"fldChar":r.fieldRun=!0,r.children.push({type:a.DomType.ComplexField,charType:l.default.attr(e,"fldCharType"),lock:l.default.boolAttr(e,"lock",!1),dirty:l.default.boolAttr(e,"dirty",!1)});break;case"noBreakHyphen":r.children.push({type:a.DomType.NoBreakHyphen});break;case"br":r.children.push({type:a.DomType.Break,break:l.default.attr(e,"type")||"textWrapping"});break;case"lastRenderedPageBreak":r.children.push({type:a.DomType.Break,break:"lastRenderedPageBreak"});break;case"sym":r.children.push({type:a.DomType.Symbol,font:l.default.attr(e,"font"),char:l.default.attr(e,"char")});break;case"tab":r.children.push({type:a.DomType.Tab});break;case"footnoteReference":r.children.push({type:a.DomType.FootnoteReference,id:l.default.attr(e,"id")});break;case"endnoteReference":r.children.push({type:a.DomType.EndnoteReference,id:l.default.attr(e,"id")});break;case"drawing":let t=this.parseDrawing(e);t&&(r.children=[t]);break;case"pict":r.children.push(this.parseVmlPicture(e));break;case"rPr":this.parseRunProperties(e,r)}})),r}parseMathElement(e){const t=`${e.localName}Pr`,r={type:d[e.localName],children:[]};for(const a of l.default.elements(e))d[a.localName]?r.children.push(this.parseMathElement(a)):"r"==a.localName?r.children.push(this.parseRun(a)):a.localName==t&&(r.props=this.parseMathProperies(a));return r}parseMathProperies(e){const t={};for(const r of l.default.elements(e))switch(r.localName){case"chr":t.char=l.default.attr(r,"val");break;case"degHide":t.hideDegree=l.default.boolAttr(r,"val");break;case"begChr":t.beginChar=l.default.attr(r,"val");break;case"endChr":t.endChar=l.default.attr(r,"val")}return t}parseRunProperties(e,t){this.parseDefaultProperties(e,t.cssStyle={},null,(e=>{switch(e.localName){case"rStyle":t.styleName=l.default.attr(e,"val");break;case"vertAlign":t.verticalAlign=f.valueOfVertAlign(e,!0);break;default:return!1}return!0}))}parseVmlPicture(e){const t={type:a.DomType.VmlPicture,children:[]};for(const r of l.default.elements(e)){const e=(0,u.parseVmlElement)(r);e&&t.children.push(e)}return t}checkAlternateContent(e){var t;if("AlternateContent"!=e.localName)return e;var r=l.default.element(e,"Choice");if(r){var a=l.default.attr(r,"Requires"),s=e.lookupNamespaceURI(a);if(p.includes(s))return r.firstElementChild}return null===(t=l.default.element(e,"Fallback"))||void 0===t?void 0:t.firstElementChild}parseDrawing(e){for(var t of l.default.elements(e))switch(t.localName){case"inline":case"anchor":return this.parseDrawingWrapper(t)}}parseDrawingWrapper(e){var t,r={type:a.DomType.Drawing,children:[],cssStyle:{}},s="anchor"==e.localName;let n=null,o=l.default.boolAttr(e,"simplePos"),i={relative:"page",align:"left",offset:"0"},u={relative:"page",align:"top",offset:"0"};for(var p of l.default.elements(e))switch(p.localName){case"simplePos":o&&(i.offset=l.default.lengthAttr(p,"x",c.LengthUsage.Emu),u.offset=l.default.lengthAttr(p,"y",c.LengthUsage.Emu));break;case"extent":r.cssStyle.width=l.default.lengthAttr(p,"cx",c.LengthUsage.Emu),r.cssStyle.height=l.default.lengthAttr(p,"cy",c.LengthUsage.Emu);break;case"positionH":case"positionV":if(!o){let e="positionH"==p.localName?i:u;var d=l.default.element(p,"align"),h=l.default.element(p,"posOffset");e.relative=null!==(t=l.default.attr(p,"relativeFrom"))&&void 0!==t?t:e.relative,d&&(e.align=d.textContent),h&&(e.offset=m.sizeValue(h,c.LengthUsage.Emu))}break;case"wrapTopAndBottom":n="wrapTopAndBottom";break;case"wrapNone":n="wrapNone";break;case"graphic":var f=this.parseGraphic(p);f&&r.children.push(f)}return"wrapTopAndBottom"==n?(r.cssStyle.display="block",i.align&&(r.cssStyle["text-align"]=i.align,r.cssStyle.width="100%")):"wrapNone"==n?(r.cssStyle.display="block",r.cssStyle.position="relative",r.cssStyle.width="0px",r.cssStyle.height="0px",i.offset&&(r.cssStyle.left=i.offset),u.offset&&(r.cssStyle.top=u.offset)):!s||"left"!=i.align&&"right"!=i.align||(r.cssStyle.float=i.align),r}parseGraphic(e){var t=l.default.element(e,"graphicData");for(let e of l.default.elements(t))if("pic"===e.localName)return this.parsePicture(e);return null}parsePicture(e){var t={type:a.DomType.Image,src:"",cssStyle:{}},r=l.default.element(e,"blipFill"),s=l.default.element(r,"blip");t.src=l.default.attr(s,"embed");var n=l.default.element(e,"spPr"),o=l.default.element(n,"xfrm");for(var i of(t.cssStyle.position="relative",l.default.elements(o)))switch(i.localName){case"ext":t.cssStyle.width=l.default.lengthAttr(i,"cx",c.LengthUsage.Emu),t.cssStyle.height=l.default.lengthAttr(i,"cy",c.LengthUsage.Emu);break;case"off":t.cssStyle.left=l.default.lengthAttr(i,"x",c.LengthUsage.Emu),t.cssStyle.top=l.default.lengthAttr(i,"y",c.LengthUsage.Emu)}return t}parseTable(e){var t={type:a.DomType.Table,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tr":t.children.push(this.parseTableRow(e));break;case"tblGrid":t.columns=this.parseTableColumns(e);break;case"tblPr":this.parseTableProperties(e,t)}})),t}parseTableColumns(e){var t=[];return m.foreach(e,(e=>{"gridCol"===e.localName&&t.push({width:l.default.lengthAttr(e,"w")})})),t}parseTableProperties(e,t){switch(t.cssStyle={},t.cellStyle={},this.parseDefaultProperties(e,t.cssStyle,t.cellStyle,(e=>{switch(e.localName){case"tblStyle":t.styleName=l.default.attr(e,"val");break;case"tblLook":t.className=f.classNameOftblLook(e);break;case"tblpPr":this.parseTablePosition(e,t);break;case"tblStyleColBandSize":t.colBandSize=l.default.intAttr(e,"val");break;case"tblStyleRowBandSize":t.rowBandSize=l.default.intAttr(e,"val");break;default:return!1}return!0})),t.cssStyle["text-align"]){case"center":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto",t.cssStyle["margin-right"]="auto";break;case"right":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto"}}parseTablePosition(e,t){var r=l.default.lengthAttr(e,"topFromText"),a=l.default.lengthAttr(e,"bottomFromText"),s=l.default.lengthAttr(e,"rightFromText"),n=l.default.lengthAttr(e,"leftFromText");t.cssStyle.float="left",t.cssStyle["margin-bottom"]=f.addSize(t.cssStyle["margin-bottom"],a),t.cssStyle["margin-left"]=f.addSize(t.cssStyle["margin-left"],n),t.cssStyle["margin-right"]=f.addSize(t.cssStyle["margin-right"],s),t.cssStyle["margin-top"]=f.addSize(t.cssStyle["margin-top"],r)}parseTableRow(e){var t={type:a.DomType.Row,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tc":t.children.push(this.parseTableCell(e));break;case"trPr":this.parseTableRowProperties(e,t)}})),t}parseTableRowProperties(e,t){t.cssStyle=this.parseDefaultProperties(e,{},null,(e=>{switch(e.localName){case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;case"tblHeader":t.isHeader=l.default.boolAttr(e,"val");break;default:return!1}return!0}))}parseTableCell(e){var t={type:a.DomType.Cell,children:[]};return m.foreach(e,(e=>{switch(e.localName){case"tbl":t.children.push(this.parseTable(e));break;case"p":t.children.push(this.parseParagraph(e));break;case"tcPr":this.parseTableCellProperties(e,t)}})),t}parseTableCellProperties(e,t){t.cssStyle=this.parseDefaultProperties(e,{},null,(e=>{var r;switch(e.localName){case"gridSpan":t.span=l.default.intAttr(e,"val",null);break;case"vMerge":t.verticalMerge=null!==(r=l.default.attr(e,"val"))&&void 0!==r?r:"continue";break;case"cnfStyle":t.className=f.classNameOfCnfStyle(e);break;default:return!1}return!0}))}parseDefaultProperties(e,r=null,a=null,s=null){return r=r||{},m.foreach(e,(n=>{if(!(null==s?void 0:s(n)))switch(n.localName){case"jc":r["text-align"]=f.valueOfJc(n);break;case"textAlignment":r["vertical-align"]=f.valueOfTextAlignment(n);break;case"color":r.color=m.colorAttr(n,"val",null,t.autos.color);break;case"sz":r["font-size"]=r["min-height"]=l.default.lengthAttr(n,"val",c.LengthUsage.FontSize);break;case"shd":r["background-color"]=m.colorAttr(n,"fill",null,t.autos.shd);break;case"highlight":r["background-color"]=m.colorAttr(n,"val",null,t.autos.highlight);break;case"vertAlign":break;case"position":r.verticalAlign=l.default.lengthAttr(n,"val",c.LengthUsage.FontSize);break;case"tcW":if(this.options.ignoreWidth)break;case"tblW":r.width=f.valueOfSize(n,"w");break;case"trHeight":this.parseTrHeight(n,r);break;case"strike":r["text-decoration"]=l.default.boolAttr(n,"val",!0)?"line-through":"none";break;case"b":r["font-weight"]=l.default.boolAttr(n,"val",!0)?"bold":"normal";break;case"i":r["font-style"]=l.default.boolAttr(n,"val",!0)?"italic":"normal";break;case"caps":r["text-transform"]=l.default.boolAttr(n,"val",!0)?"uppercase":"none";break;case"smallCaps":r["text-transform"]=l.default.boolAttr(n,"val",!0)?"lowercase":"none";break;case"u":this.parseUnderline(n,r);break;case"ind":case"tblInd":this.parseIndentation(n,r);break;case"rFonts":this.parseFont(n,r);break;case"tblBorders":this.parseBorderProperties(n,a||r);break;case"tblCellSpacing":r["border-spacing"]=f.valueOfMargin(n),r["border-collapse"]="separate";break;case"pBdr":this.parseBorderProperties(n,r);break;case"bdr":r.border=f.valueOfBorder(n);break;case"tcBorders":this.parseBorderProperties(n,r);break;case"vanish":l.default.boolAttr(n,"val",!0)&&(r.display="none");break;case"kern":case"noWrap":break;case"tblCellMar":case"tcMar":this.parseMarginProperties(n,a||r);break;case"tblLayout":r["table-layout"]=f.valueOfTblLayout(n);break;case"vAlign":r["vertical-align"]=f.valueOfTextAlignment(n);break;case"spacing":"pPr"==e.localName&&this.parseSpacing(n,r);break;case"wordWrap":l.default.boolAttr(n,"val")&&(r["overflow-wrap"]="break-word");break;case"bCs":case"iCs":case"szCs":case"tabs":case"outlineLvl":case"contextualSpacing":case"tblStyleColBandSize":case"tblStyleRowBandSize":case"webHidden":case"pageBreakBefore":case"suppressLineNumbers":case"keepLines":case"keepNext":case"lang":case"widowControl":case"bidi":case"rtl":case"noProof":break;default:this.options.debug&&console.warn(`DOCX: Unknown document element: ${e.localName}.${n.localName}`)}})),r}parseUnderline(e,t){var r=l.default.attr(e,"val");if(null!=r){switch(r){case"dash":case"dashDotDotHeavy":case"dashDotHeavy":case"dashedHeavy":case"dashLong":case"dashLongHeavy":case"dotDash":case"dotDotDash":t["text-decoration-style"]="dashed";break;case"dotted":case"dottedHeavy":t["text-decoration-style"]="dotted";break;case"double":t["text-decoration-style"]="double";break;case"single":case"thick":case"words":t["text-decoration"]="underline";break;case"wave":case"wavyDouble":case"wavyHeavy":t["text-decoration-style"]="wavy";break;case"none":t["text-decoration"]="none"}var a=m.colorAttr(e,"color");a&&(t["text-decoration-color"]=a)}}parseFont(e,t){var r=[l.default.attr(e,"ascii"),f.themeValue(e,"asciiTheme")].filter((e=>e)).join(", ");r.length>0&&(t["font-family"]=r)}parseIndentation(e,t){var r=l.default.lengthAttr(e,"firstLine"),a=l.default.lengthAttr(e,"hanging"),s=l.default.lengthAttr(e,"left"),n=l.default.lengthAttr(e,"start"),o=l.default.lengthAttr(e,"right"),i=l.default.lengthAttr(e,"end");r&&(t["text-indent"]=r),a&&(t["text-indent"]=`-${a}`),(s||n)&&(t["margin-left"]=s||n),(o||i)&&(t["margin-right"]=o||i)}parseSpacing(e,t){var r=l.default.lengthAttr(e,"before"),a=l.default.lengthAttr(e,"after"),s=l.default.intAttr(e,"line",null),n=l.default.attr(e,"lineRule");if(r&&(t["margin-top"]=r),a&&(t["margin-bottom"]=a),null!==s)switch(n){case"auto":t["line-height"]=`${(s/240).toFixed(2)}`;break;case"atLeast":t["line-height"]=`calc(100% + ${s/20}pt)`;break;default:t["line-height"]=t["min-height"]=s/20+"pt"}}parseMarginProperties(e,t){m.foreach(e,(e=>{switch(e.localName){case"left":t["padding-left"]=f.valueOfMargin(e);break;case"right":t["padding-right"]=f.valueOfMargin(e);break;case"top":t["padding-top"]=f.valueOfMargin(e);break;case"bottom":t["padding-bottom"]=f.valueOfMargin(e)}}))}parseTrHeight(e,t){l.default.attr(e,"hRule"),t.height=l.default.lengthAttr(e,"val")}parseBorderProperties(e,t){m.foreach(e,(e=>{switch(e.localName){case"start":case"left":t["border-left"]=f.valueOfBorder(e);break;case"end":case"right":t["border-right"]=f.valueOfBorder(e);break;case"top":t["border-top"]=f.valueOfBorder(e);break;case"bottom":t["border-bottom"]=f.valueOfBorder(e)}}))}};const h=["black","blue","cyan","darkBlue","darkCyan","darkGray","darkGreen","darkMagenta","darkRed","darkYellow","green","lightGray","magenta","none","red","white","yellow"];class m{static foreach(e,t){for(var r=0;r"1"==t[r])).join(" ")}static valueOfJc(e){var t=l.default.attr(e,"val");switch(t){case"start":case"left":return"left";case"center":return"center";case"end":case"right":return"right";case"both":return"justify"}return t}static valueOfVertAlign(e,t=!1){var r=l.default.attr(e,"val");switch(r){case"subscript":return"sub";case"superscript":return t?"sup":"super"}return t?null:r}static valueOfTextAlignment(e){var t=l.default.attr(e,"val");switch(t){case"auto":case"baseline":return"baseline";case"top":return"top";case"center":return"middle";case"bottom":return"bottom"}return t}static addSize(e,t){return null==e?t:null==t?e:`calc(${e} + ${t})`}static classNameOftblLook(e){const t=l.default.hexAttr(e,"val",0);let r="";return(l.default.boolAttr(e,"firstRow")||32&t)&&(r+=" first-row"),(l.default.boolAttr(e,"lastRow")||64&t)&&(r+=" last-row"),(l.default.boolAttr(e,"firstColumn")||128&t)&&(r+=" first-col"),(l.default.boolAttr(e,"lastColumn")||256&t)&&(r+=" last-col"),(l.default.boolAttr(e,"noHBand")||512&t)&&(r+=" no-hband"),(l.default.boolAttr(e,"noVBand")||1024&t)&&(r+=" no-vband"),r.trim()}}},162:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CorePropsPart=void 0;const a=r(530),s=r(614);class n extends a.Part{parseXml(e){this.props=(0,s.parseCoreProps)(e,this._package.xmlParser)}}t.CorePropsPart=n},614:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCoreProps=void 0,t.parseCoreProps=function(e,t){const r={};for(let a of t.elements(e))switch(a.localName){case"title":r.title=a.textContent;break;case"description":r.description=a.textContent;break;case"subject":r.subject=a.textContent;break;case"creator":r.creator=a.textContent;break;case"keywords":r.keywords=a.textContent;break;case"language":r.language=a.textContent;break;case"lastModifiedBy":r.lastModifiedBy=a.textContent;break;case"revision":a.textContent&&(r.revision=parseInt(a.textContent))}return r}},177:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CustomPropsPart=void 0;const a=r(530),s=r(821);class n extends a.Part{parseXml(e){this.props=(0,s.parseCustomProps)(e,this._package.xmlParser)}}t.CustomPropsPart=n},821:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCustomProps=void 0,t.parseCustomProps=function(e,t){return t.elements(e,"property").map((e=>{const r=e.firstChild;return{formatId:t.attr(e,"fmtid"),name:t.attr(e,"name"),type:r.nodeName,value:r.textContent}}))}},665:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ExtendedPropsPart=void 0;const a=r(530),s=r(668);class n extends a.Part{parseXml(e){this.props=(0,s.parseExtendedProps)(e,this._package.xmlParser)}}t.ExtendedPropsPart=n},668:(e,t)=>{function r(e){if(void 0!==e)return parseInt(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.parseExtendedProps=void 0,t.parseExtendedProps=function(e,t){const a={};for(let s of t.elements(e))switch(s.localName){case"Template":a.template=s.textContent;break;case"Pages":a.pages=r(s.textContent);break;case"Words":a.words=r(s.textContent);break;case"Characters":a.characters=r(s.textContent);break;case"Application":a.application=s.textContent;break;case"Lines":a.lines=r(s.textContent);break;case"Paragraphs":a.paragraphs=r(s.textContent);break;case"Company":a.company=s.textContent;break;case"AppVersion":a.appVersion=s.textContent}return a}},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseBookmarkEnd=t.parseBookmarkStart=void 0;const a=r(120);t.parseBookmarkStart=function(e,t){return{type:a.DomType.BookmarkStart,id:t.attr(e,"id"),name:t.attr(e,"name"),colFirst:t.intAttr(e,"colFirst"),colLast:t.intAttr(e,"colLast")}},t.parseBookmarkEnd=function(e,t){return{type:a.DomType.BookmarkEnd,id:t.attr(e,"id")}}},191:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseBorders=t.parseBorder=void 0;const a=r(149);function s(e,t){return{type:t.attr(e,"val"),color:t.attr(e,"color"),size:t.lengthAttr(e,"sz",a.LengthUsage.Border),offset:t.lengthAttr(e,"space",a.LengthUsage.Point),frame:t.boolAttr(e,"frame"),shadow:t.boolAttr(e,"shadow")}}t.parseBorder=s,t.parseBorders=function(e,t){var r={};for(let a of t.elements(e))switch(a.localName){case"left":r.left=s(a,t);break;case"top":r.top=s(a,t);break;case"right":r.right=s(a,t);break;case"bottom":r.bottom=s(a,t)}return r}},149:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseCommonProperty=t.convertPercentage=t.convertBoolean=t.convertLength=t.LengthUsage=t.ns=void 0,t.ns={wordml:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",drawingml:"http://schemas.openxmlformats.org/drawingml/2006/main",picture:"http://schemas.openxmlformats.org/drawingml/2006/picture",compatibility:"http://schemas.openxmlformats.org/markup-compatibility/2006",math:"http://schemas.openxmlformats.org/officeDocument/2006/math"},t.LengthUsage={Dxa:{mul:.05,unit:"pt"},Emu:{mul:1/12700,unit:"pt"},FontSize:{mul:.5,unit:"pt"},Border:{mul:.125,unit:"pt"},Point:{mul:1,unit:"pt"},Percent:{mul:.02,unit:"%"},LineHeight:{mul:1/240,unit:""},VmlEmu:{mul:1/12700,unit:""}},t.convertLength=function(e,r=t.LengthUsage.Dxa){return null==e||/.+(p[xt]|[%])$/.test(e)?e:`${(parseInt(e)*r.mul).toFixed(2)}${r.unit}`},t.convertBoolean=function(e,t=!1){switch(e){case"1":case"on":case"true":return!0;case"0":case"off":case"false":return!1;default:return t}},t.convertPercentage=function(e){return e?parseInt(e)/100:null},t.parseCommonProperty=function(e,r,a){if(e.namespaceURI!=t.ns.wordml)return!1;switch(e.localName){case"color":r.color=a.attr(e,"val");break;case"sz":r.fontSize=a.lengthAttr(e,"val",t.LengthUsage.FontSize);break;default:return!1}return!0}},448:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DocumentPart=void 0;const a=r(530);class s extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.body=this._documentParser.parseDocumentFile(e)}}t.DocumentPart=s},120:(e,t)=>{var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DomType=void 0,(r=t.DomType||(t.DomType={})).Document="document",r.Paragraph="paragraph",r.Run="run",r.Break="break",r.NoBreakHyphen="noBreakHyphen",r.Table="table",r.Row="row",r.Cell="cell",r.Hyperlink="hyperlink",r.Drawing="drawing",r.Image="image",r.Text="text",r.Tab="tab",r.Symbol="symbol",r.BookmarkStart="bookmarkStart",r.BookmarkEnd="bookmarkEnd",r.Footer="footer",r.Header="header",r.FootnoteReference="footnoteReference",r.EndnoteReference="endnoteReference",r.Footnote="footnote",r.Endnote="endnote",r.SimpleField="simpleField",r.ComplexField="complexField",r.Instruction="instruction",r.VmlPicture="vmlPicture",r.MmlMath="mmlMath",r.MmlMathParagraph="mmlMathParagraph",r.MmlFraction="mmlFraction",r.MmlNumerator="mmlNumerator",r.MmlDenominator="mmlDenominator",r.MmlRadical="mmlRadical",r.MmlBase="mmlBase",r.MmlDegree="mmlDegree",r.MmlSuperscript="mmlSuperscript",r.MmlSubscript="mmlSubscript",r.MmlSubArgument="mmlSubArgument",r.MmlSuperArgument="mmlSuperArgument",r.MmlNary="mmlNary",r.MmlDelimiter="mmlDelimiter",r.VmlElement="vmlElement",r.Inserted="inserted",r.Deleted="deleted",r.DeletedText="deletedText"},931:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseLineSpacing=void 0,t.parseLineSpacing=function(e,t){return{before:t.lengthAttr(e,"before"),after:t.lengthAttr(e,"after"),line:t.intAttr(e,"line"),lineRule:t.attr(e,"lineRule")}}},109:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseNumbering=t.parseTabs=t.parseParagraphProperty=t.parseParagraphProperties=void 0;const a=r(149),s=r(59),n=r(931),l=r(488);function o(e,t,r){if(e.namespaceURI!=a.ns.wordml)return!1;if((0,a.parseCommonProperty)(e,t,r))return!0;switch(e.localName){case"tabs":t.tabs=i(e,r);break;case"sectPr":t.sectionProps=(0,s.parseSectionProperties)(e,r);break;case"numPr":t.numbering=c(e,r);break;case"spacing":return t.lineSpacing=(0,n.parseLineSpacing)(e,r),!1;case"textAlignment":return t.textAlignment=r.attr(e,"val"),!1;case"keepNext":t.keepLines=r.boolAttr(e,"val",!0);break;case"keepNext":t.keepNext=r.boolAttr(e,"val",!0);break;case"pageBreakBefore":t.pageBreakBefore=r.boolAttr(e,"val",!0);break;case"outlineLvl":t.outlineLevel=r.intAttr(e,"val");break;case"pStyle":t.styleName=r.attr(e,"val");break;case"rPr":t.runProps=(0,l.parseRunProperties)(e,r);break;default:return!1}return!0}function i(e,t){return t.elements(e,"tab").map((e=>({position:t.lengthAttr(e,"pos"),leader:t.attr(e,"leader"),style:t.attr(e,"val")})))}function c(e,t){var r={};for(let a of t.elements(e))switch(a.localName){case"numId":r.id=t.attr(a,"val");break;case"ilvl":r.level=t.intAttr(a,"val")}return r}t.parseParagraphProperties=function(e,t){let r={};for(let a of t.elements(e))o(a,r,t);return r},t.parseParagraphProperty=o,t.parseTabs=i,t.parseNumbering=c},488:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRunProperty=t.parseRunProperties=void 0;const a=r(149);function s(e,t,r){return!!(0,a.parseCommonProperty)(e,t,r)}t.parseRunProperties=function(e,t){let r={};for(let a of t.elements(e))s(a,r,t);return r},t.parseRunProperty=s},59:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseSectionProperties=t.SectionType=void 0;const a=r(472),s=r(191);function n(e,t){return{numberOfColumns:t.intAttr(e,"num"),space:t.lengthAttr(e,"space"),separator:t.boolAttr(e,"sep"),equalWidth:t.boolAttr(e,"equalWidth",!0),columns:t.elements(e,"col").map((e=>({width:t.lengthAttr(e,"w"),space:t.lengthAttr(e,"space")})))}}function l(e,t){return{chapSep:t.attr(e,"chapSep"),chapStyle:t.attr(e,"chapStyle"),format:t.attr(e,"fmt"),start:t.intAttr(e,"start")}}function o(e,t){return{id:t.attr(e,"id"),type:t.attr(e,"type")}}var i;(i=t.SectionType||(t.SectionType={})).Continuous="continuous",i.NextPage="nextPage",i.NextColumn="nextColumn",i.EvenPage="evenPage",i.OddPage="oddPage",t.parseSectionProperties=function(e,t=a.default){var r,i,c={};for(let a of t.elements(e))switch(a.localName){case"pgSz":c.pageSize={width:t.lengthAttr(a,"w"),height:t.lengthAttr(a,"h"),orientation:t.attr(a,"orient")};break;case"type":c.type=t.attr(a,"val");break;case"pgMar":c.pageMargins={left:t.lengthAttr(a,"left"),right:t.lengthAttr(a,"right"),top:t.lengthAttr(a,"top"),bottom:t.lengthAttr(a,"bottom"),header:t.lengthAttr(a,"header"),footer:t.lengthAttr(a,"footer"),gutter:t.lengthAttr(a,"gutter")};break;case"cols":c.columns=n(a,t);break;case"headerReference":(null!==(r=c.headerRefs)&&void 0!==r?r:c.headerRefs=[]).push(o(a,t));break;case"footerReference":(null!==(i=c.footerRefs)&&void 0!==i?i:c.footerRefs=[]).push(o(a,t));break;case"titlePg":c.titlePage=t.boolAttr(a,"val",!0);break;case"pgBorders":c.pageBorders=(0,s.parseBorders)(a,t);break;case"pgNumType":c.pageNumber=l(a,t)}return c}},667:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.renderAsync=t.praseAsync=t.defaultOptions=void 0;const a=r(213),s=r(168),n=r(932);t.defaultOptions={ignoreHeight:!1,ignoreWidth:!1,ignoreFonts:!1,breakPages:!0,debug:!1,experimental:!1,className:"docx",inWrapper:!0,trimXmlDeclaration:!0,ignoreLastRenderedPageBreak:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0,useBase64URL:!1,useMathMLPolyfill:!1,renderChanges:!1},t.praseAsync=function(e,r=null){const n=Object.assign(Object.assign({},t.defaultOptions),r);return a.WordDocument.load(e,new s.DocumentParser(n),n)},t.renderAsync=function(e,r,l=null,o=null){const i=Object.assign(Object.assign({},t.defaultOptions),o),c=new n.HtmlRenderer(window.document);return a.WordDocument.load(e,new s.DocumentParser(i),i).then((e=>(c.render(e,r,l,i),e)))}},380:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontTablePart=void 0;const a=r(530),s=r(512);class n extends a.Part{parseXml(e){this.fonts=(0,s.parseFonts)(e,this._package.xmlParser)}}t.FontTablePart=n},512:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseEmbedFontRef=t.parseFont=t.parseFonts=void 0;const r={embedRegular:"regular",embedBold:"bold",embedItalic:"italic",embedBoldItalic:"boldItalic"};function a(e,t){let r={name:t.attr(e,"name"),embedFontRefs:[]};for(let a of t.elements(e))switch(a.localName){case"family":r.family=t.attr(a,"val");break;case"altName":r.altName=t.attr(a,"val");break;case"embedRegular":case"embedBold":case"embedItalic":case"embedBoldItalic":r.embedFontRefs.push(s(a,t))}return r}function s(e,t){return{id:t.attr(e,"id"),key:t.attr(e,"fontKey"),type:r[e.localName]}}t.parseFonts=function(e,t){return t.elements(e).map((e=>a(e,t)))},t.parseFont=a,t.parseEmbedFontRef=s},984:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WmlFooter=t.WmlHeader=void 0;const a=r(120);t.WmlHeader=class{constructor(){this.type=a.DomType.Header,this.children=[],this.cssStyle={}}},t.WmlFooter=class{constructor(){this.type=a.DomType.Footer,this.children=[],this.cssStyle={}}}},985:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FooterPart=t.HeaderPart=t.BaseHeaderFooterPart=void 0;const a=r(530),s=r(984);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.rootElement=this.createRootElement(),this.rootElement.children=this._documentParser.parseBodyElements(e)}}t.BaseHeaderFooterPart=n,t.HeaderPart=class extends n{createRootElement(){return new s.WmlHeader}},t.FooterPart=class extends n{createRootElement(){return new s.WmlFooter}}},932:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlRenderer=void 0;const a=r(120),s=r(593),n=r(630),l=r(438),o="http://www.w3.org/1998/Math/MathML";function i(e,t,r){return u(void 0,e,t,r)}function c(e,t,r){return u("http://www.w3.org/2000/svg",e,t,r)}function u(e,t,r,a){var s=e?document.createElementNS(e,t):document.createElement(t);return Object.assign(s,r),a&&d(s,a),s}function p(e){e.innerHTML=""}function d(e,t){t.forEach((t=>e.appendChild((0,s.isString)(t)?document.createTextNode(t):t)))}function h(e){return i("style",{innerHTML:e})}function m(e,t){e.appendChild(document.createComment(t))}t.HtmlRenderer=class{constructor(e){this.htmlDocument=e,this.className="docx",this.styleMap={},this.currentPart=null,this.tableVerticalMerges=[],this.currentVerticalMerge=null,this.tableCellPositions=[],this.currentCellPosition=null,this.footnoteMap={},this.endnoteMap={},this.currentEndnoteIds=[],this.usedHederFooterParts=[],this.currentTabs=[],this.tabsTimeout=0,this.createElement=i}render(e,t,r=null,a){var n;this.document=e,this.options=a,this.className=a.className,this.rootSelector=a.inWrapper?`.${this.className}-wrapper`:":root",this.styleMap=null,p(r=r||t),p(t),m(r,"docxjs library predefined styles"),r.appendChild(this.renderDefaultStyle()),!window.MathMLElement&&a.useMathMLPolyfill&&(m(r,"docxjs mathml polyfill styles"),r.appendChild(h(l.default))),e.themePart&&(m(r,"docxjs document theme values"),this.renderTheme(e.themePart,r)),null!=e.stylesPart&&(this.styleMap=this.processStyles(e.stylesPart.styles),m(r,"docxjs document styles"),r.appendChild(this.renderStyles(e.stylesPart.styles))),e.numberingPart&&(this.prodessNumberings(e.numberingPart.domNumberings),m(r,"docxjs document numbering styles"),r.appendChild(this.renderNumbering(e.numberingPart.domNumberings,r))),e.footnotesPart&&(this.footnoteMap=(0,s.keyBy)(e.footnotesPart.notes,(e=>e.id))),e.endnotesPart&&(this.endnoteMap=(0,s.keyBy)(e.endnotesPart.notes,(e=>e.id))),e.settingsPart&&(this.defaultTabSize=null===(n=e.settingsPart.settings)||void 0===n?void 0:n.defaultTabStop),!a.ignoreFonts&&e.fontTablePart&&this.renderFontTable(e.fontTablePart,r);var o=this.renderSections(e.documentPart.body);this.options.inWrapper?t.appendChild(this.renderWrapper(o)):d(t,o),this.refreshTabStops()}renderTheme(e,t){var r,a;const s={},n=null===(r=e.theme)||void 0===r?void 0:r.fontScheme;n&&(n.majorFont&&(s["--docx-majorHAnsi-font"]=n.majorFont.latinTypeface),n.minorFont&&(s["--docx-minorHAnsi-font"]=n.minorFont.latinTypeface));const l=null===(a=e.theme)||void 0===a?void 0:a.colorScheme;if(l)for(let[e,t]of Object.entries(l.colors))s[`--docx-${e}-color`]=`#${t}`;const o=this.styleToString(`.${this.className}`,s);t.appendChild(h(o))}renderFontTable(e,t){for(let r of e.fonts)for(let e of r.embedFontRefs)this.document.loadFont(e.id,e.key).then((a=>{const s={"font-family":r.name,src:`url(${a})`};"bold"!=e.type&&"boldItalic"!=e.type||(s["font-weight"]="bold"),"italic"!=e.type&&"boldItalic"!=e.type||(s["font-style"]="italic"),m(t,`docxjs ${r.name} font`);const n=this.styleToString("@font-face",s);t.appendChild(h(n)),this.refreshTabStops()}))}processStyleName(e){return e?`${this.className}_${(0,s.escapeClassName)(e)}`:this.className}processStyles(e){const t=(0,s.keyBy)(e.filter((e=>null!=e.id)),(e=>e.id));for(const a of e.filter((e=>e.basedOn))){var r=t[a.basedOn];if(r){a.paragraphProps=(0,s.mergeDeep)(a.paragraphProps,r.paragraphProps),a.runProps=(0,s.mergeDeep)(a.runProps,r.runProps);for(const e of r.styles){const t=a.styles.find((t=>t.target==e.target));t?this.copyStyleProperties(e.values,t.values):a.styles.push(Object.assign(Object.assign({},e),{values:Object.assign({},e.values)}))}}else this.options.debug&&console.warn(`Can't find base style ${a.basedOn}`)}for(let t of e)t.cssName=this.processStyleName(t.id);return t}prodessNumberings(e){var t;for(let r of e.filter((e=>e.pStyleName))){const e=this.findStyle(r.pStyleName);(null===(t=null==e?void 0:e.paragraphProps)||void 0===t?void 0:t.numbering)&&(e.paragraphProps.numbering.level=r.level)}}processElement(e){if(e.children)for(var t of e.children)t.parent=e,t.type==a.DomType.Table?this.processTable(t):this.processElement(t)}processTable(e){for(var t of e.children)for(var r of t.children)r.cssStyle=this.copyStyleProperties(e.cellStyle,r.cssStyle,["border-left","border-right","border-top","border-bottom","padding-left","padding-right","padding-top","padding-bottom"]),this.processElement(r)}copyStyleProperties(e,t,r=null){if(!e)return t;for(var a of(null==t&&(t={}),null==r&&(r=Object.getOwnPropertyNames(e)),r))e.hasOwnProperty(a)&&!t.hasOwnProperty(a)&&(t[a]=e[a]);return t}createSection(e,t){var r=this.createElement("section",{className:e});return t&&(t.pageMargins&&(r.style.paddingLeft=t.pageMargins.left,r.style.paddingRight=t.pageMargins.right,r.style.paddingTop=t.pageMargins.top,r.style.paddingBottom=t.pageMargins.bottom),t.pageSize&&(this.options.ignoreWidth||(r.style.width=t.pageSize.width),this.options.ignoreHeight||(r.style.minHeight=t.pageSize.height)),t.columns&&t.columns.numberOfColumns&&(r.style.columnCount=`${t.columns.numberOfColumns}`,r.style.columnGap=t.columns.space,t.columns.separator&&(r.style.columnRule="1px solid black"))),r}renderSections(e){const t=[];this.processElement(e);const r=this.splitBySection(e.children);let a=null;for(let n=0,l=r.length;n"first"==e.type)):null)&&void 0!==n?n:r%2==1?e.find((e=>"even"==e.type)):null)&&void 0!==l?l:e.find((e=>"default"==e.type)),i=o&&this.document.findPartByRelId(o.id,this.document.documentPart);i&&(this.currentPart=i,this.usedHederFooterParts.includes(i.path)||(this.processElement(i.rootElement),this.usedHederFooterParts.push(i.path)),this.renderElements([i.rootElement],s),this.currentPart=null)}}isPageBreakElement(e){return e.type==a.DomType.Break&&("lastRenderedPageBreak"==e.break?!this.options.ignoreLastRenderedPageBreak:"page"==e.break)}splitBySection(e){var t,r={sectProps:null,elements:[]},s=[r];for(let u of e){if(u.type==a.DomType.Paragraph){const e=this.findStyle(u.styleName);(null===(t=null==e?void 0:e.paragraphProps)||void 0===t?void 0:t.pageBreakBefore)&&(r.sectProps=n,r={sectProps:null,elements:[]},s.push(r))}if(r.elements.push(u),u.type==a.DomType.Paragraph){const e=u;var n=e.sectionProps,l=-1,o=-1;if(this.options.breakPages&&e.children&&(l=e.children.findIndex((e=>{var t,r;return-1!=(o=null!==(r=null===(t=e.children)||void 0===t?void 0:t.findIndex(this.isPageBreakElement.bind(this)))&&void 0!==r?r:-1)}))),(n||-1!=l)&&(r.sectProps=n,r={sectProps:null,elements:[]},s.push(r)),-1!=l){let t=e.children[l],a=o=0;e--)null==s[e].sectProps?s[e].sectProps=u:u=s[e].sectProps;return s}renderWrapper(e){return this.createElement("div",{className:`${this.className}-wrapper`},e)}renderDefaultStyle(){var e=this.className;return h(`\n.${e}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } \n.${e}-wrapper>section.${e} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; }\n.${e} { color: black; }\nsection.${e} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\nsection.${e}>article { margin-bottom: auto; }\n.${e} table { border-collapse: collapse; }\n.${e} table td, .${e} table th { vertical-align: top; }\n.${e} p { margin: 0pt; min-height: 1em; }\n.${e} span { white-space: pre-wrap; overflow-wrap: break-word; }\n.${e} a { color: inherit; text-decoration: inherit; }\n`)}renderNumbering(e,t){var r="",a=[];for(var s of e){var n=`p.${this.numberingClass(s.id,s.level)}`,l="none";if(s.bullet){let e=`--${this.className}-${s.bullet.src}`.toLowerCase();r+=this.styleToString(`${n}:before`,{content:"' '",display:"inline-block",background:`var(${e})`},s.bullet.style),this.document.loadNumberingImage(s.bullet.src).then((r=>{var a=`${this.rootSelector} { ${e}: url(${r}) }`;t.appendChild(h(a))}))}else if(s.levelText){let e=this.numberingCounter(s.id,s.level);s.level>0?r+=this.styleToString(`p.${this.numberingClass(s.id,s.level-1)}`,{"counter-reset":e}):a.push(e),r+=this.styleToString(`${n}:before`,Object.assign({content:this.levelTextToContent(s.levelText,s.suff,s.id,this.numFormatToCssValue(s.format)),"counter-increment":e},s.rStyle))}else l=this.numFormatToCssValue(s.format);r+=this.styleToString(n,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":l},s.pStyle))}return a.length>0&&(r+=this.styleToString(this.rootSelector,{"counter-reset":a.join(" ")})),h(r)}renderStyles(e){var t,r="";const a=this.styleMap,n=(0,s.keyBy)(e.filter((e=>e.isDefault)),(e=>e.target));for(const s of e){var l=s.styles;if(s.linked){var o=s.linked&&a[s.linked];o?l=l.concat(o.styles):this.options.debug&&console.warn(`Can't find linked style ${s.linked}`)}for(const e of l){var i=`${null!==(t=s.target)&&void 0!==t?t:""}.${s.cssName}`;s.target!=e.target&&(i+=` ${e.target}`),n[s.target]==s&&(i=`.${this.className} ${s.target}, `+i),r+=this.styleToString(i,e.values)}}return h(r)}renderNotes(e,t,r){var a=e.map((e=>t[e])).filter((e=>e));if(a.length>0){var s=this.createElement("ol",null,this.renderElements(a));r.appendChild(s)}}renderElement(e){switch(e.type){case a.DomType.Paragraph:return this.renderParagraph(e);case a.DomType.BookmarkStart:return this.renderBookmarkStart(e);case a.DomType.BookmarkEnd:return null;case a.DomType.Run:return this.renderRun(e);case a.DomType.Table:return this.renderTable(e);case a.DomType.Row:return this.renderTableRow(e);case a.DomType.Cell:return this.renderTableCell(e);case a.DomType.Hyperlink:return this.renderHyperlink(e);case a.DomType.Drawing:return this.renderDrawing(e);case a.DomType.Image:return this.renderImage(e);case a.DomType.Text:case a.DomType.Text:return this.renderText(e);case a.DomType.DeletedText:return this.renderDeletedText(e);case a.DomType.Tab:return this.renderTab(e);case a.DomType.Symbol:return this.renderSymbol(e);case a.DomType.Break:return this.renderBreak(e);case a.DomType.Footer:return this.renderContainer(e,"footer");case a.DomType.Header:return this.renderContainer(e,"header");case a.DomType.Footnote:case a.DomType.Endnote:return this.renderContainer(e,"li");case a.DomType.FootnoteReference:return this.renderFootnoteReference(e);case a.DomType.EndnoteReference:return this.renderEndnoteReference(e);case a.DomType.NoBreakHyphen:return this.createElement("wbr");case a.DomType.VmlPicture:return this.renderVmlPicture(e);case a.DomType.VmlElement:return this.renderVmlElement(e);case a.DomType.MmlMath:return this.renderContainerNS(e,o,"math",{xmlns:o});case a.DomType.MmlMathParagraph:return this.renderContainer(e,"span");case a.DomType.MmlFraction:return this.renderContainerNS(e,o,"mfrac");case a.DomType.MmlNumerator:case a.DomType.MmlDenominator:return this.renderContainerNS(e,o,"mrow");case a.DomType.MmlRadical:return this.renderMmlRadical(e);case a.DomType.MmlDegree:return this.renderContainerNS(e,o,"mn");case a.DomType.MmlSuperscript:return this.renderContainerNS(e,o,"msup");case a.DomType.MmlSubscript:return this.renderContainerNS(e,o,"msub");case a.DomType.MmlBase:return this.renderContainerNS(e,o,"mrow");case a.DomType.MmlSuperArgument:case a.DomType.MmlSubArgument:return this.renderContainerNS(e,o,"mn");case a.DomType.MmlDelimiter:return this.renderMmlDelimiter(e);case a.DomType.MmlNary:return this.renderMmlNary(e);case a.DomType.Inserted:return this.renderInserted(e);case a.DomType.Deleted:return this.renderDeleted(e)}return null}renderChildren(e,t){return this.renderElements(e.children,t)}renderElements(e,t){if(null==e)return null;var r=e.flatMap((e=>this.renderElement(e))).filter((e=>null!=e));return t&&d(t,r),r}renderContainer(e,t,r){return this.createElement(t,r,this.renderChildren(e))}renderContainerNS(e,t,r,a){return u(t,r,a,this.renderChildren(e))}renderParagraph(e){var t,r,a,s,n=this.createElement("p");const l=this.findStyle(e.styleName);null!==(t=e.tabs)&&void 0!==t||(e.tabs=null===(r=null==l?void 0:l.paragraphProps)||void 0===r?void 0:r.tabs),this.renderClass(e,n),this.renderChildren(e,n),this.renderStyleValues(e.cssStyle,n),this.renderCommonProperties(n.style,e);const o=null!==(a=e.numbering)&&void 0!==a?a:null===(s=null==l?void 0:l.paragraphProps)||void 0===s?void 0:s.numbering;return o&&n.classList.add(this.numberingClass(o.id,o.level)),n}renderRunProperties(e,t){this.renderCommonProperties(e,t)}renderCommonProperties(e,t){null!=t&&(t.color&&(e.color=t.color),t.fontSize&&(e["font-size"]=t.fontSize))}renderHyperlink(e){var t=this.createElement("a");if(this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),e.href)t.href=e.href;else if(e.id){const r=this.document.documentPart.rels.find((t=>t.id==e.id&&"External"===t.targetMode));t.href=null==r?void 0:r.target}return t}renderDrawing(e){var t=this.createElement("div");return t.style.display="inline-block",t.style.position="relative",t.style.textIndent="0px",this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),t}renderImage(e){let t=this.createElement("img");return this.renderStyleValues(e.cssStyle,t),this.document&&this.document.loadDocumentImage(e.src,this.currentPart).then((e=>{t.src=e})),t}renderText(e){return this.htmlDocument.createTextNode(e.text)}renderDeletedText(e){return this.options.renderEndnotes?this.htmlDocument.createTextNode(e.text):null}renderBreak(e){return"textWrapping"==e.break?this.createElement("br"):null}renderInserted(e){return this.options.renderChanges?this.renderContainer(e,"ins"):this.renderChildren(e)}renderDeleted(e){return this.options.renderChanges?this.renderContainer(e,"del"):null}renderSymbol(e){var t=this.createElement("span");return t.style.fontFamily=e.font,t.innerHTML=`&#x${e.char};`,t}renderFootnoteReference(e){var t=this.createElement("sup");return this.currentFootnoteIds.push(e.id),t.textContent=`${this.currentFootnoteIds.length}`,t}renderEndnoteReference(e){var t=this.createElement("sup");return this.currentEndnoteIds.push(e.id),t.textContent=`${this.currentEndnoteIds.length}`,t}renderTab(e){var t,r=this.createElement("span");if(r.innerHTML=" ",this.options.experimental){r.className=this.tabStopClass();var s=null===(t=function(e,t){for(var r=e.parent;null!=r&&r.type!=t;)r=r.parent;return r}(e,a.DomType.Paragraph))||void 0===t?void 0:t.tabs;this.currentTabs.push({stops:s,span:r})}return r}renderBookmarkStart(e){var t=this.createElement("span");return t.id=e.name,t}renderRun(e){if(e.fieldRun)return null;const t=this.createElement("span");if(e.id&&(t.id=e.id),this.renderClass(e,t),this.renderStyleValues(e.cssStyle,t),e.verticalAlign){const r=this.createElement(e.verticalAlign);this.renderChildren(e,r),t.appendChild(r)}else this.renderChildren(e,t);return t}renderTable(e){let t=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},e.columns&&t.appendChild(this.renderTableColumns(e.columns)),this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),t}renderTableColumns(e){let t=this.createElement("colgroup");for(let r of e){let e=this.createElement("col");r.width&&(e.style.width=r.width),t.appendChild(e)}return t}renderTableRow(e){let t=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),this.currentCellPosition.row++,t}renderTableCell(e){let t=this.createElement("td");if(e.verticalMerge){const r=this.currentCellPosition.col;"restart"==e.verticalMerge?(this.currentVerticalMerge[r]=t,t.rowSpan=1):this.currentVerticalMerge[r]&&(this.currentVerticalMerge[r].rowSpan+=1,t.style.display="none")}return this.renderClass(e,t),this.renderChildren(e,t),this.renderStyleValues(e.cssStyle,t),e.span&&(t.colSpan=e.span),this.currentCellPosition.col++,t}renderVmlPicture(e){var t=i("div");return this.renderChildren(e,t),t}renderVmlElement(e){var t,r,a=c("svg");a.setAttribute("style",e.cssStyleText);const s=c(e.tagName);return Object.entries(e.attrs).forEach((([e,t])=>s.setAttribute(e,t))),(null===(t=e.imageHref)||void 0===t?void 0:t.id)&&(null===(r=this.document)||void 0===r||r.loadDocumentImage(e.imageHref.id,this.currentPart).then((e=>s.setAttribute("href",e)))),a.appendChild(s),setTimeout((()=>{const e=a.firstElementChild.getBBox();a.setAttribute("width",`${Math.ceil(e.x+e.width)}`),a.setAttribute("height",`${Math.ceil(e.y+e.height)}`)}),0),a}renderMmlRadical(e){var t;const r=e.children.find((e=>e.type==a.DomType.MmlBase));if(null===(t=e.props)||void 0===t?void 0:t.hideDegree)return u(o,"msqrt",null,this.renderElements([r]));const s=e.children.find((e=>e.type==a.DomType.MmlDegree));return u(o,"mroot",null,this.renderElements([r,s]))}renderMmlDelimiter(e){var t,r;const a=[];return a.push(u(o,"mo",null,[null!==(t=e.props.beginChar)&&void 0!==t?t:"("])),a.push(...this.renderElements(e.children)),a.push(u(o,"mo",null,[null!==(r=e.props.endChar)&&void 0!==r?r:")"])),u(o,"mrow",null,a)}renderMmlNary(e){var t;const r=[],n=(0,s.keyBy)(e.children,(e=>e.type)),l=n[a.DomType.MmlSuperArgument],i=n[a.DomType.MmlSubArgument],c=l?u(o,"mo",null,(0,s.asArray)(this.renderElement(l))):null,p=i?u(o,"mo",null,(0,s.asArray)(this.renderElement(i))):null;if(null===(t=e.props)||void 0===t?void 0:t.char){const t=u(o,"mo",null,[e.props.char]);c||p?r.push(u(o,"munderover",null,[t,p,c])):c?r.push(u(o,"mover",null,[t,c])):p?r.push(u(o,"munder",null,[t,p])):r.push(t)}return r.push(...this.renderElements(n[a.DomType.MmlBase].children)),u(o,"mrow",null,r)}renderStyleValues(e,t){Object.assign(t.style,e)}renderClass(e,t){e.className&&(t.className=e.className),e.styleName&&t.classList.add(this.processStyleName(e.styleName))}findStyle(e){var t;return e&&(null===(t=this.styleMap)||void 0===t?void 0:t[e])}numberingClass(e,t){return`${this.className}-num-${e}-${t}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(e,t,r=null){let a=`${e} {\r\n`;for(const e in t)a+=` ${e}: ${t[e]};\r\n`;return r&&(a+=r),a+"}\r\n"}numberingCounter(e,t){return`${this.className}-num-${e}-${t}`}levelTextToContent(e,t,r,a){var s;return`"${e.replace(/%\d*/g,(e=>{let t=parseInt(e.substring(1),10)-1;return`"counter(${this.numberingCounter(r,t)}, ${a})"`}))}${null!==(s={tab:"\\9",space:"\\a0"}[t])&&void 0!==s?s:""}"`}numFormatToCssValue(e){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[e]||e}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout((()=>{const e=(0,n.computePixelToPoint)();for(let t of this.currentTabs)(0,n.updateTabStop)(t.span,t.stops,this.defaultTabSize,e)}),500))}}},630:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.updateTabStop=t.computePixelToPoint=void 0;const r={pos:0,leader:"none",style:"left"};function a(e){return parseFloat(e)}t.computePixelToPoint=function(e=document.body){const t=document.createElement("div");t.style.width="100pt",e.appendChild(t);const r=100/t.offsetWidth;return e.removeChild(t),r},t.updateTabStop=function(e,t,s,n=.75){const l=e.closest("p"),o=e.getBoundingClientRect(),i=l.getBoundingClientRect(),c=getComputedStyle(l),u=(null==t?void 0:t.length)>0?t.map((e=>({pos:a(e.position),leader:e.leader,style:e.style}))).sort(((e,t)=>e.pos-t.pos)):[r],p=u[u.length-1],d=i.width*n,h=a(s);let m=p.pos+h;if(m"clear"!=e.style&&e.pos>b));if(null==y)return;let v=1;if("right"==y.style||"center"==y.style){const t=Array.from(l.querySelectorAll(`.${e.className}`)),r=t.indexOf(e)+1,a=document.createRange();a.setStart(e,1),r{Object.defineProperty(t,"__esModule",{value:!0}),t.WmlEndnote=t.WmlFootnote=t.WmlBaseNote=void 0;const a=r(120);class s{constructor(){this.children=[],this.cssStyle={}}}t.WmlBaseNote=s,t.WmlFootnote=class extends s{constructor(){super(...arguments),this.type=a.DomType.Footnote}},t.WmlEndnote=class extends s{constructor(){super(...arguments),this.type=a.DomType.Endnote}}},735:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.EndnotesPart=t.FootnotesPart=t.BaseNotePart=void 0;const a=r(530),s=r(881);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}}t.BaseNotePart=n,t.FootnotesPart=class extends n{constructor(e,t,r){super(e,t,r)}parseXml(e){this.notes=this._documentParser.parseNotes(e,"footnote",s.WmlFootnote)}},t.EndnotesPart=class extends n{constructor(e,t,r){super(e,t,r)}parseXml(e){this.notes=this._documentParser.parseNotes(e,"endnote",s.WmlEndnote)}}},527:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NumberingPart=void 0;const a=r(530),s=r(682);class n extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){Object.assign(this,(0,s.parseNumberingPart)(e,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(e)}}t.NumberingPart=n},682:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseNumberingBulletPicture=t.parseNumberingLevelOverrride=t.parseNumberingLevel=t.parseAbstractNumbering=t.parseNumbering=t.parseNumberingPart=void 0;const a=r(109),s=r(488);function n(e,t){let r={id:t.attr(e,"numId"),overrides:[]};for(let a of t.elements(e))switch(a.localName){case"abstractNumId":r.abstractId=t.attr(a,"val");break;case"lvlOverride":r.overrides.push(i(a,t))}return r}function l(e,t){let r={id:t.attr(e,"abstractNumId"),levels:[]};for(let a of t.elements(e))switch(a.localName){case"name":r.name=t.attr(a,"val");break;case"multiLevelType":r.multiLevelType=t.attr(a,"val");break;case"numStyleLink":r.numberingStyleLink=t.attr(a,"val");break;case"styleLink":r.styleLink=t.attr(a,"val");break;case"lvl":r.levels.push(o(a,t))}return r}function o(e,t){let r={level:t.intAttr(e,"ilvl")};for(let n of t.elements(e))switch(n.localName){case"start":r.start=t.attr(n,"val");break;case"lvlRestart":r.restart=t.intAttr(n,"val");break;case"numFmt":r.format=t.attr(n,"val");break;case"lvlText":r.text=t.attr(n,"val");break;case"lvlJc":r.justification=t.attr(n,"val");break;case"lvlPicBulletId":r.bulletPictureId=t.attr(n,"val");break;case"pStyle":r.paragraphStyle=t.attr(n,"val");break;case"pPr":r.paragraphProps=(0,a.parseParagraphProperties)(n,t);break;case"rPr":r.runProps=(0,s.parseRunProperties)(n,t)}return r}function i(e,t){let r={level:t.intAttr(e,"ilvl")};for(let a of t.elements(e))switch(a.localName){case"startOverride":r.start=t.intAttr(a,"val");break;case"lvl":r.numberingLevel=o(a,t)}return r}function c(e,t){var r=t.element(e,"pict"),a=r&&t.element(r,"shape"),s=a&&t.element(a,"imagedata");return s?{id:t.attr(e,"numPicBulletId"),referenceId:t.attr(s,"id"),style:t.attr(a,"style")}:null}t.parseNumberingPart=function(e,t){let r={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let a of t.elements(e))switch(a.localName){case"num":r.numberings.push(n(a,t));break;case"abstractNum":r.abstractNumberings.push(l(a,t));break;case"numPicBullet":r.bulletPictures.push(c(a,t))}return r},t.parseNumbering=n,t.parseAbstractNumbering=l,t.parseNumberingLevel=o,t.parseNumberingLevelOverrride=i,t.parseNumberingBulletPicture=c},472:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XmlParser=t.serializeXmlString=t.parseXmlString=void 0;const a=r(149);t.parseXmlString=function(e,t=!1){t&&(e=e.replace(/<[?].*[?]>/,""));const r=(new DOMParser).parseFromString(e,"application/xml"),a=null===(s=r.getElementsByTagName("parsererror")[0])||void 0===s?void 0:s.textContent;var s;if(a)throw new Error(a);return r},t.serializeXmlString=function(e){return(new XMLSerializer).serializeToString(e)};class s{elements(e,t=null){const r=[];for(let a=0,s=e.childNodes.length;a{Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsPart=void 0;const a=r(530),s=r(846);class n extends a.Part{constructor(e,t){super(e,t)}parseXml(e){this.settings=(0,s.parseSettings)(e,this._package.xmlParser)}}t.SettingsPart=n},846:(e,t)=>{function r(e,t){var r={defaultNoteIds:[]};for(let a of t.elements(e))switch(a.localName){case"numFmt":r.nummeringFormat=t.attr(a,"val");break;case"footnote":case"endnote":r.defaultNoteIds.push(t.attr(a,"id"))}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.parseNoteProperties=t.parseSettings=void 0,t.parseSettings=function(e,t){var a={};for(let s of t.elements(e))switch(s.localName){case"defaultTabStop":a.defaultTabStop=t.lengthAttr(s,"val");break;case"footnotePr":a.footnoteProps=r(s,t);break;case"endnotePr":a.endnoteProps=r(s,t);break;case"autoHyphenation":a.autoHyphenation=t.boolAttr(s,"val")}return a},t.parseNoteProperties=r},240:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StylesPart=void 0;const a=r(530);class s extends a.Part{constructor(e,t,r){super(e,t),this._documentParser=r}parseXml(e){this.styles=this._documentParser.parseStylesFile(e)}}t.StylesPart=s},893:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemePart=void 0;const a=r(530),s=r(55);class n extends a.Part{constructor(e,t){super(e,t)}parseXml(e){this.theme=(0,s.parseTheme)(e,this._package.xmlParser)}}t.ThemePart=n},55:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseFontInfo=t.parseFontScheme=t.parseColorScheme=t.parseTheme=t.DmlTheme=void 0;class r{}function a(e,t){var r={name:t.attr(e,"name"),colors:{}};for(let n of t.elements(e)){var a=t.element(n,"srgbClr"),s=t.element(n,"sysClr");a?r.colors[n.localName]=t.attr(a,"val"):s&&(r.colors[n.localName]=t.attr(s,"lastClr"))}return r}function s(e,t){var r={name:t.attr(e,"name")};for(let a of t.elements(e))switch(a.localName){case"majorFont":r.majorFont=n(a,t);break;case"minorFont":r.minorFont=n(a,t)}return r}function n(e,t){return{latinTypeface:t.elementAttr(e,"latin","typeface"),eaTypeface:t.elementAttr(e,"ea","typeface"),csTypeface:t.elementAttr(e,"cs","typeface")}}t.DmlTheme=r,t.parseTheme=function(e,t){var n=new r,l=t.element(e,"themeElements");for(let e of t.elements(l))switch(e.localName){case"clrScheme":n.colorScheme=a(e,t);break;case"fontScheme":n.fontScheme=s(e,t)}return n},t.parseColorScheme=a,t.parseFontScheme=s,t.parseFontInfo=n},593:(e,t)=>{function r(e){return e&&"object"==typeof e&&!Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.asArray=t.formatCssRules=t.parseCssRules=t.mergeDeep=t.isString=t.isObject=t.blobToBase64=t.keyBy=t.resolvePath=t.splitPath=t.escapeClassName=void 0,t.escapeClassName=function(e){return null==e?void 0:e.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},t.splitPath=function(e){let t=e.lastIndexOf("/")+1;return[0==t?"":e.substring(0,t),0==t?e:e.substring(t)]},t.resolvePath=function(e,t){try{const r="http://docx/";return new URL(e,r+t).toString().substring(r.length)}catch(r){return`${t}${e}`}},t.keyBy=function(e,t){return e.reduce(((e,r)=>(e[t(r)]=r,e)),{})},t.blobToBase64=function(e){return new Promise(((t,r)=>{const a=new FileReader;a.onloadend=()=>t(a.result),a.readAsDataURL(e)}))},t.isObject=r,t.isString=function(e){return e&&"string"==typeof e||e instanceof String},t.mergeDeep=function e(t,...a){var s;if(!a.length)return t;const n=a.shift();if(r(t)&&r(n))for(const a in n)r(n[a])?e(null!==(s=t[a])&&void 0!==s?s:t[a]={},n[a]):t[a]=n[a];return e(t,...a)},t.parseCssRules=function(e){const t={};for(const r of e.split(";")){const[e,a]=r.split(":");t[e]=a}return t},t.formatCssRules=function(e){return Object.entries(e).map(((e,t)=>`${e}: ${t}`)).join(";")},t.asArray=function(e){return Array.isArray(e)?e:[e]}},320:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseVmlElement=t.VmlElement=void 0;const a=r(149),s=r(120),n=r(472);class l{constructor(){this.type=s.DomType.VmlElement,this.attrs={},this.chidren=[]}}function o(e){var t;return{stroke:n.default.attr(e,"color"),"stroke-width":null!==(t=n.default.lengthAttr(e,"weight",a.LengthUsage.Emu))&&void 0!==t?t:"1px"}}function i(e){return e.split(",")}t.VmlElement=l,t.parseVmlElement=function e(t){var r=new l;switch(t.localName){case"rect":r.tagName="rect",Object.assign(r.attrs,{width:"100%",height:"100%"});break;case"oval":r.tagName="ellipse",Object.assign(r.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":r.tagName="line";break;case"shape":r.tagName="g";break;default:return null}for(const e of n.default.attrs(t))switch(e.localName){case"style":r.cssStyleText=e.value;break;case"fillcolor":r.attrs.fill=e.value;break;case"from":const[t,a]=i(e.value);Object.assign(r.attrs,{x1:t,y1:a});break;case"to":const[s,n]=i(e.value);Object.assign(r.attrs,{x2:s,y2:n})}for(const a of n.default.elements(t))switch(a.localName){case"stroke":Object.assign(r.attrs,o(a));break;case"fill":Object.assign(r.attrs,{});break;case"imagedata":r.tagName="image",Object.assign(r.attrs,{width:"100%",height:"100%"}),r.imageHref={id:n.default.attr(a,"id"),title:n.default.attr(a,"title")};break;default:const t=e(a);t&&r.chidren.push(t)}return r}},213:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deobfuscate=t.WordDocument=void 0;const a=r(461),s=r(380),n=r(522),l=r(448),o=r(593),i=r(527),c=r(240),u=r(985),p=r(665),d=r(162),h=r(893),m=r(735),f=r(287),g=r(177),b=[{type:a.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:a.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:a.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:a.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class y{constructor(){this.parts=[],this.partsMap={}}static load(e,t,r){var a=new y;return a._options=r,a._parser=t,n.OpenXmlPackage.load(e,r).then((e=>(a._package=e,a._package.loadRelationships()))).then((e=>{a.rels=e;const t=b.map((t=>{var r;const s=null!==(r=e.find((e=>e.type===t.type)))&&void 0!==r?r:t;return a.loadRelationshipPart(s.target,s.type)}));return Promise.all(t)})).then((()=>a))}save(e="blob"){return this._package.save(e)}loadRelationshipPart(e,t){if(this.partsMap[e])return Promise.resolve(this.partsMap[e]);if(!this._package.get(e))return Promise.resolve(null);let r=null;switch(t){case a.RelationshipTypes.OfficeDocument:this.documentPart=r=new l.DocumentPart(this._package,e,this._parser);break;case a.RelationshipTypes.FontTable:this.fontTablePart=r=new s.FontTablePart(this._package,e);break;case a.RelationshipTypes.Numbering:this.numberingPart=r=new i.NumberingPart(this._package,e,this._parser);break;case a.RelationshipTypes.Styles:this.stylesPart=r=new c.StylesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Theme:this.themePart=r=new h.ThemePart(this._package,e);break;case a.RelationshipTypes.Footnotes:this.footnotesPart=r=new m.FootnotesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Endnotes:this.endnotesPart=r=new m.EndnotesPart(this._package,e,this._parser);break;case a.RelationshipTypes.Footer:r=new u.FooterPart(this._package,e,this._parser);break;case a.RelationshipTypes.Header:r=new u.HeaderPart(this._package,e,this._parser);break;case a.RelationshipTypes.CoreProperties:this.corePropsPart=r=new d.CorePropsPart(this._package,e);break;case a.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=r=new p.ExtendedPropsPart(this._package,e);break;case a.RelationshipTypes.CustomProperties:r=new g.CustomPropsPart(this._package,e);break;case a.RelationshipTypes.Settings:this.settingsPart=r=new f.SettingsPart(this._package,e)}return null==r?Promise.resolve(null):(this.partsMap[e]=r,this.parts.push(r),r.load().then((()=>{if(null==r.rels||0==r.rels.length)return r;const[e]=(0,o.splitPath)(r.path),t=r.rels.map((t=>this.loadRelationshipPart((0,o.resolvePath)(t.target,e),t.type)));return Promise.all(t).then((()=>r))})))}loadDocumentImage(e,t){return this.loadResource(null!=t?t:this.documentPart,e,"blob").then((e=>this.blobToURL(e)))}loadNumberingImage(e){return this.loadResource(this.numberingPart,e,"blob").then((e=>this.blobToURL(e)))}loadFont(e,t){return this.loadResource(this.fontTablePart,e,"uint8array").then((e=>e?this.blobToURL(new Blob([v(e,t)])):e))}blobToURL(e){return e?this._options.useBase64URL?(0,o.blobToBase64)(e):URL.createObjectURL(e):null}findPartByRelId(e,t=null){var r,a=(null!==(r=t.rels)&&void 0!==r?r:this.rels).find((t=>t.id==e));const s=t?(0,o.splitPath)(t.path)[0]:"";return a?this.partsMap[(0,o.resolvePath)(a.target,s)]:null}getPathById(e,t){const r=e.rels.find((e=>e.id==t)),[a]=(0,o.splitPath)(e.path);return r?(0,o.resolvePath)(r.target,a):null}loadResource(e,t,r){const a=this.getPathById(e,t);return a?this._package.load(a,r):Promise.resolve(null)}}function v(e,t){const r=t.replace(/{|}|-/g,""),a=new Array(16);for(let e=0;e<16;e++)a[16-e-1]=parseInt(r.substr(2*e,2),16);for(let t=0;t<32;t++)e[t]=e[t]^a[t%16];return e}t.WordDocument=y,t.deobfuscate=v},583:e=>{e.exports="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"},626:t=>{t.exports=e}},r={};function a(e){var s=r[e];if(void 0!==s)return s.exports;var n=r[e]={id:e,exports:{}};return t[e](n,n.exports,a),n.exports}return a.m=t,a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.b=document.baseURI||self.location.href,a(667)})())); //# sourceMappingURL=docx-preview.min.js.map \ No newline at end of file diff --git a/dist/docx-preview.min.js.map b/dist/docx-preview.min.js.map index e5c62e2..7076503 100644 --- a/dist/docx-preview.min.js.map +++ b/dist/docx-preview.min.js.map @@ -1 +1 @@ -{"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\tfor (let elem of xml.elements(element)) {\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\tchildren.push(...this.parseSdt(elem, e => this.parseBodyElements(e)));\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, parser: Function): any {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? parser(sdtContent) : [];\r\n\t}\r\n\r\n\tparseInserted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Inserted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\r\n\t}\r\n\r\n\tparseDeleted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Deleted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\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\tfor (let el of xml.elements(node)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseParagraphProperties(el, result);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(el, 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(el, 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(el, 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(el, 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(el));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sdt\":\r\n\t\t\t\t\tresult.children.push(...this.parseSdt(el, e => this.parseParagraph(e).children));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ins\":\r\n\t\t\t\t\tresult.children.push(this.parseInserted(el, e => this.parseParagraph(e)));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"del\":\r\n\t\t\t\t\tresult.children.push(this.parseDeleted(el, e => this.parseParagraph(e)));\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 \"delText\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.DeletedText,\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 \"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\tInserted = \"inserted\",\r\n\tDeleted = \"deleted\",\r\n\tDeletedText = \"deletedText\"\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\trenderChanges: 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\trenderChanges: 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 { asArray, 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 | 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.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.DeletedText:\r\n\t\t\t\treturn this.renderDeletedText(elem as WmlText);\r\n\t\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\r\n\t\t\tcase DomType.Inserted:\r\n\t\t\t\treturn this.renderInserted(elem);\r\n\r\n\t\t\tcase DomType.Deleted:\r\n\t\t\t\treturn this.renderDeleted(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.flatMap(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\trenderDeletedText(elem: WmlText) {\r\n\t\treturn this.options.renderEndnotes ? this.htmlDocument.createTextNode(elem.text) : null;\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\trenderInserted(elem: OpenXmlElement): Node | Node[] {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"ins\");\r\n\r\n\t\treturn this.renderChildren(elem);\r\n\t}\r\n\r\n\trenderDeleted(elem: OpenXmlElement): Node {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"del\");\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, asArray(this.renderElement(sup))) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, asArray(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\r\nexport function asArray(val: T | T[]): T[] {\r\n\treturn Array.isArray(val) ? val : [val];\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","localName","parseParagraph","parseTable","parseSdt","parseStylesFile","xstyles","foreach","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","forEach","x","parseNumberingPicBullet","numId","abstractNumId","elementAttr","pict","shape","imagedata","intAttr","src","style","parseNumberingLevel","level","pStyleName","pStyle","rStyle","suff","bullet","find","levelText","format","parser","sdtContent","parseInserted","parentParser","Inserted","parseDeleted","Deleted","Paragraph","parseRun","parseHyperlink","parseBookmarkStart","parseBookmarkEnd","parseMathElement","paragraph","parseParagraphProperty","styleName","className","classNameOfCnfStyle","parseFrame","parent","Hyperlink","anchor","relId","href","Run","checkAlternateContent","Text","textContent","DeletedText","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","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","renderChanges","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","renderDeletedText","renderTab","renderSymbol","renderBreak","renderContainer","Footnote","Endnote","renderFootnoteReference","renderEndnoteReference","renderVmlPicture","VmlElement","renderVmlElement","renderContainerNS","xmlns","renderMmlRadical","renderMmlDelimiter","renderMmlNary","renderInserted","renderDeleted","renderChildren","elems","flatMap","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","asArray","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":""} \ No newline at end of file +{"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\tfor (let elem of xml.elements(element)) {\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\tchildren.push(...this.parseSdt(elem, e => this.parseBodyElements(e)));\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, parser: Function): OpenXmlElement[] {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? parser(sdtContent) : [];\r\n\t}\r\n\r\n\tparseInserted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Inserted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\r\n\t}\r\n\r\n\tparseDeleted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn { \r\n\t\t\ttype: DomType.Deleted, \r\n\t\t\tchildren: parentParser(node)?.children ?? []\r\n\t\t};\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\tfor (let el of xml.elements(node)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseParagraphProperties(el, result);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"r\":\r\n\t\t\t\t\tresult.children.push(this.parseRun(el, 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(el, 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(el, 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(el, 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(el));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sdt\":\r\n\t\t\t\t\tresult.children.push(...this.parseSdt(el, e => this.parseParagraph(e).children));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ins\":\r\n\t\t\t\t\tresult.children.push(this.parseInserted(el, e => this.parseParagraph(e)));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"del\":\r\n\t\t\t\t\tresult.children.push(this.parseDeleted(el, e => this.parseParagraph(e)));\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 \"delText\":\r\n\t\t\t\t\tresult.children.push({\r\n\t\t\t\t\t\ttype: DomType.DeletedText,\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 \"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\tInserted = \"inserted\",\r\n\tDeleted = \"deleted\",\r\n\tDeletedText = \"deletedText\"\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\trenderChanges: 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\trenderChanges: 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 { asArray, 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\trootSelector: string;\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.rootSelector = options.inWrapper ? `.${this.className}-wrapper` : ':root';\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.rootSelector} { ${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.rootSelector, {\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 | 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.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.DeletedText:\r\n\t\t\t\treturn this.renderDeletedText(elem as WmlText);\r\n\t\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\r\n\t\t\tcase DomType.Inserted:\r\n\t\t\t\treturn this.renderInserted(elem);\r\n\r\n\t\t\tcase DomType.Deleted:\r\n\t\t\t\treturn this.renderDeleted(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.flatMap(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\trenderDeletedText(elem: WmlText) {\r\n\t\treturn this.options.renderEndnotes ? this.htmlDocument.createTextNode(elem.text) : null;\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\trenderInserted(elem: OpenXmlElement): Node | Node[] {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"ins\");\r\n\r\n\t\treturn this.renderChildren(elem);\r\n\t}\r\n\r\n\trenderDeleted(elem: OpenXmlElement): Node {\r\n\t\tif (this.options.renderChanges)\r\n\t\t\treturn this.renderContainer(elem, \"del\");\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, asArray(this.renderElement(sup))) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, asArray(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\r\nexport function asArray(val: T | T[]): T[] {\r\n\treturn Array.isArray(val) ? val : [val];\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","localName","parseParagraph","parseTable","parseSdt","parseStylesFile","xstyles","foreach","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","forEach","x","parseNumberingPicBullet","numId","abstractNumId","elementAttr","pict","shape","imagedata","intAttr","src","style","parseNumberingLevel","level","pStyleName","pStyle","rStyle","suff","bullet","find","levelText","format","parser","sdtContent","parseInserted","parentParser","Inserted","parseDeleted","Deleted","Paragraph","parseRun","parseHyperlink","parseBookmarkStart","parseBookmarkEnd","parseMathElement","paragraph","parseParagraphProperty","styleName","className","classNameOfCnfStyle","parseFrame","parent","Hyperlink","anchor","relId","href","Run","checkAlternateContent","Text","textContent","DeletedText","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","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","renderChanges","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","rootSelector","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","renderDeletedText","renderTab","renderSymbol","renderBreak","renderContainer","Footnote","Endnote","renderFootnoteReference","renderEndnoteReference","renderVmlPicture","VmlElement","renderVmlElement","renderContainerNS","xmlns","renderMmlRadical","renderMmlDelimiter","renderMmlNary","renderInserted","renderDeleted","renderChildren","elems","flatMap","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","asArray","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":""} \ No newline at end of file diff --git a/package.json b/package.json index 56b8052..ebe8fd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "docx-preview", - "version": "0.1.12", + "version": "0.1.13", "license": "Apache-2.0", "keywords": [ "word", diff --git a/src/html-renderer.ts b/src/html-renderer.ts index bf7ae85..91cde87 100644 --- a/src/html-renderer.ts +++ b/src/html-renderer.ts @@ -36,6 +36,7 @@ type CellVerticalMergeType = Record; export class HtmlRenderer { className: string = "docx"; + rootSelector: string; document: WordDocument; options: Options; styleMap: Record = {}; @@ -63,6 +64,7 @@ export class HtmlRenderer { this.document = document; this.options = options; this.className = options.className; + this.rootSelector = options.inWrapper ? `.${this.className}-wrapper` : ':root'; this.styleMap = null; styleContainer = styleContainer || bodyContainer; @@ -541,7 +543,7 @@ section.${c}>article { margin-bottom: auto; } }, num.bullet.style); this.document.loadNumberingImage(num.bullet.src).then(data => { - var text = `.${this.className}-wrapper { ${valiable}: url(${data}) }`; + var text = `${this.rootSelector} { ${valiable}: url(${data}) }`; styleContainer.appendChild(createStyleElement(text)); }); } @@ -576,7 +578,7 @@ section.${c}>article { margin-bottom: auto; } } if (rootCounters.length > 0) { - styleText += this.styleToString(`.${this.className}-wrapper`, { + styleText += this.styleToString(this.rootSelector, { "counter-reset": rootCounters.join(" ") }); }