{"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 = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\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 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 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 list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\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 return [content].concat([sourceMapping]).join(\"\\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 async load(input: Blob | any, options: OpenXmlPackageOptions): Promise {\r\n const zip = await JSZip.loadAsync(input);\r\n\t\treturn 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 async 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 const txt = await this.load(relsPath);\r\n\t\treturn 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 async load(): Promise {\r\n\t\tthis.rels = await this._package.loadRelationships(this.path);\r\n\r\n\t\tconst xmlText = await this._package.load(this.path);\r\n\t\tconst xmlDoc = this._package.parseXmlDocument(xmlText);\r\n\r\n\t\tif (this._package.options.keepOrigin) {\r\n\t\t\tthis._xmlDocument = xmlDoc;\r\n\t\t}\r\n\r\n\t\tthis.parseXml(xmlDoc.firstElementChild);\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, SectionProperties } 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\"func\": DomType.MmlFunction,\r\n\t\"fName\": DomType.MmlFunctionName,\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\"sPre\": DomType.MmlPreSubSuper,\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\t\"eqArr\": DomType.MmlEquationArray,\r\n\t\"lim\": DomType.MmlLimit,\r\n\t\"limLow\": DomType.MmlLimitLower,\r\n\t\"m\": DomType.MmlMatrix,\r\n\t\"mr\": DomType.MmlMatrixRow,\r\n\t\"box\": DomType.MmlBox,\r\n\t\"bar\": DomType.MmlBar,\r\n\t\"groupChr\": DomType.MmlGroupChar\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) : {} as SectionProperties,\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\tstart: 1,\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 \"start\":\r\n\t\t\t\t\tresult.start = xml.intAttr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\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\tvar run = this.parseRun(el);\r\n\t\t\t\trun.type = DomType.MmlRun;\r\n\t\t\t\tresult.children.push(run);\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 \"vertJc\": result.verticalJustification = xml.attr(el, \"val\"); break;\r\n\t\t\t\tcase \"pos\": result.position = 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, this);\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 \"suppressAutoHyphens\":\r\n\t\t\t\t\tstyle[\"hyphens\"] = xml.boolAttr(c, \"val\", true) ? \"none\" : \"auto\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lang\":\r\n\t\t\t\t\tstyle[\"$lang\"] = xml.attr(c, \"val\");\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 \"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\tMmlFunction = \"mmlFunction\",\r\n\tMmlFunctionName = \"mmlFunctionName\",\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\tMmlPreSubSuper = \"mmlPreSubSuper\",\r\n\tMmlSubArgument = \"mmlSubArgument\",\r\n\tMmlSuperArgument = \"mmlSuperArgument\",\r\n\tMmlNary = \"mmlNary\",\r\n\tMmlDelimiter = \"mmlDelimiter\",\r\n\tMmlRun = \"mmlRun\",\r\n\tMmlEquationArray = \"mmlEquationArray\",\r\n\tMmlLimit = \"mmlLimit\",\r\n\tMmlLimitLower = \"mmlLimitLower\",\r\n\tMmlMatrix = \"mmlMatrix\",\r\n\tMmlMatrixRow = \"mmlMatrixRow\",\r\n\tMmlBox = \"mmlBox\",\r\n\tMmlBar = \"mmlBar\",\r\n\tMmlGroupChar = \"mmlGroupChar\",\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 abstract class OpenXmlElementBase implements OpenXmlElement {\r\n type: DomType;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record = {};\r\n props?: Record;\r\n\r\n className?: string;\r\n styleName?: string;\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 start: 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 async 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\tconst doc = await WordDocument.load(data, new DocumentParser(ops), ops)\r\n\r\n\trenderer.render(doc, bodyContainer, styleContainer, ops);\r\n\t\r\n return doc;\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 { OpenXmlElementBase, DomType } from \"../document/dom\";\r\n\r\nexport class WmlHeader extends OpenXmlElementBase {\r\n type: DomType = DomType.Header;\r\n}\r\n\r\nexport class WmlFooter extends OpenXmlElementBase {\r\n type: DomType = DomType.Footer;\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; hyphens: auto; }\r\nsection.${c} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\r\nsection.${c}>article { margin-bottom: auto; z-index: 1; }\r\nsection.${c}>footer { z-index: 1; }\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 resetCounters = [];\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\t\t\t\tconst counterReset = counter + \" \" + (num.start - 1);\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\": counterReset\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// reset all level counters with start value\r\n\t\t\t\tresetCounters.push(counterReset);\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 (resetCounters.length > 0) {\r\n\t\t\tstyleText += this.styleToString(this.rootSelector, {\r\n\t\t\t\t\"counter-reset\": resetCounters.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.MmlBase:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \r\n\t\t\t\t\telem.parent.type == DomType.MmlMatrixRow ? \"mtd\" : \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlNumerator:\r\n\t\t\tcase DomType.MmlDenominator:\r\n\t\t\tcase DomType.MmlFunction:\r\n\t\t\tcase DomType.MmlLimit:\r\n\t\t\tcase DomType.MmlBox:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlGroupChar:\r\n\t\t\t\treturn this.renderMmlGroupChar(elem);\r\n\r\n\t\t\tcase DomType.MmlLimitLower:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"munder\");\r\n\r\n\t\t\tcase DomType.MmlMatrix:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mtable\");\r\n\r\n\t\t\tcase DomType.MmlMatrixRow:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mtr\");\r\n\t\r\n\t\t\tcase DomType.MmlRadical:\r\n\t\t\t\treturn this.renderMmlRadical(elem);\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\r\n\t\t\tcase DomType.MmlDegree:\r\n\t\t\tcase DomType.MmlSuperArgument:\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.MmlFunctionName:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"ms\");\r\n\t\r\n\t\t\tcase DomType.MmlDelimiter:\r\n\t\t\t\treturn this.renderMmlDelimiter(elem);\r\n\r\n\t\t\tcase DomType.MmlRun:\r\n\t\t\t\treturn this.renderMmlRun(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.MmlPreSubSuper:\r\n\t\t\t\treturn this.renderMmlPreSubSuper(elem);\r\n\r\n\t\t\tcase DomType.MmlBar:\r\n\t\t\t\treturn this.renderMmlBar(elem);\r\n\t\r\n\t\t\tcase DomType.MmlEquationArray:\r\n\t\t\t\treturn this.renderMllList(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\tconst key = this.currentCellPosition.col;\r\n\r\n\t\tif (elem.verticalMerge) {\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} else {\r\n\t\t\tthis.currentVerticalMerge[key] = null;\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 += result.colSpan;\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 = this.renderVmlChildElement(elem);\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\r\n\t\tcontainer.appendChild(result);\r\n\r\n\t\trequestAnimationFrame(() => {\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});\r\n\r\n\t\treturn container;\r\n\t}\r\n\r\n\trenderVmlChildElement(elem: VmlElement): any {\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\tfor (let child of elem.children) {\r\n\t\t\tif (child.type == DomType.VmlElement) {\r\n\t\t\t\tresult.appendChild(this.renderVmlChildElement(child as VmlElement));\r\n\t\t\t} else {\r\n\t\t\t\tresult.appendChild(...asArray(this.renderElement(child as any)));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\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\tconst charElem = createElementNS(ns.mathML, \"mo\", null, [elem.props?.char ?? '\\u222B']);\r\n\r\n\t\tif (supElem || subElem) {\r\n\t\t\tchildren.push(createElementNS(ns.mathML, \"munderover\", null, [charElem, subElem, supElem]));\r\n\t\t} else if(supElem) {\r\n\t\t\tchildren.push(createElementNS(ns.mathML, \"mover\", null, [charElem, supElem]));\r\n\t\t} else if(subElem) {\r\n\t\t\tchildren.push(createElementNS(ns.mathML, \"munder\", null, [charElem, subElem]));\r\n\t\t} else {\r\n\t\t\tchildren.push(charElem);\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\trenderMmlPreSubSuper(elem: OpenXmlElement) {\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\t\tconst stubElem = createElementNS(ns.mathML, \"mo\", null);\r\n\r\n\t\tchildren.push(createElementNS(ns.mathML, \"msubsup\", null, [stubElem, subElem, supElem]));\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\trenderMmlGroupChar(elem: OpenXmlElement) {\r\n\t\tconst tagName = elem.props.verticalJustification === \"bot\" ? \"mover\" : \"munder\";\r\n\t\tconst result = this.renderContainerNS(elem, ns.mathML, tagName);\r\n\r\n\t\tif (elem.props.char) {\r\n\t\t\tresult.appendChild(createElementNS(ns.mathML, \"mo\", null, [elem.props.char]));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderMmlBar(elem: OpenXmlElement) {\r\n\t\tconst result = this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\tswitch(elem.props.position) {\r\n\t\t\tcase \"top\": result.style.textDecoration = \"overline\"; break\r\n\t\t\tcase \"bottom\": result.style.textDecoration = \"underline\"; break\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderMmlRun(elem: OpenXmlElement) {\r\n\t\tconst result = createElementNS(ns.mathML, \"ms\");\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\t\tthis.renderChildren(elem, result);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderMllList(elem: OpenXmlElement) {\r\n\t\tconst result = createElementNS(ns.mathML, \"mtable\");\r\n\r\n\t\tthis.renderClass(elem, result);\r\n\t\tthis.renderStyleValues(elem.cssStyle, result);\r\n\r\n\t\tconst childern = this.renderChildren(elem);\r\n\r\n\t\tfor (let child of this.renderChildren(elem)) {\r\n\t\t\tresult.appendChild(createElementNS(ns.mathML, \"mtr\", null, [\r\n\t\t\t\tcreateElementNS(ns.mathML, \"mtd\", null, [child])\r\n\t\t\t]));\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\trenderStyleValues(style: Record, ouput: HTMLElement) {\r\n\t\tfor (let k in style) {\r\n\t\t\tif (k.startsWith(\"$\")) {\r\n\t\t\t\touput.setAttribute(k.slice(1), style[k]);\r\n\t\t\t} else {\r\n\t\t\t\touput.style[k] = style[k];\r\n\t\t\t}\r\n\t\t}\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\tif (key.startsWith('$'))\r\n\t\t\t\tcontinue;\r\n\t\t\t\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\tnone: \"none\",\r\n\t\t\tbullet: \"disc\",\r\n\t\t\tdecimal: \"decimal\",\r\n\t\t\tlowerLetter: \"lower-alpha\",\r\n\t\t\tupperLetter: \"upper-alpha\",\r\n\t\t\tlowerRoman: \"lower-roman\",\r\n\t\t\tupperRoman: \"upper-roman\",\r\n\t\t\tdecimalZero: \"decimal-leading-zero\", // 01,02,03,...\r\n\t\t\t// ordinal: \"\", // 1st, 2nd, 3rd,...\r\n\t\t\t// ordinalText: \"\", //First, Second, Third, ...\r\n\t\t\t// cardinalText: \"\", //One,Two Three,...\r\n\t\t\t// numberInDash: \"\", //-1-,-2-,-3-, ...\r\n\t\t\t// hex: \"upper-hexadecimal\",\r\n\t\t\taiueo: \"katakana\",\r\n\t\t\taiueoFullWidth: \"katakana\",\r\n\t\t\tchineseCounting: \"simp-chinese-informal\",\r\n\t\t\tchineseCountingThousand: \"simp-chinese-informal\",\r\n\t\t\tchineseLegalSimplified: \"simp-chinese-formal\", // 中文大写\r\n\t\t\tchosung: \"hangul-consonant\",\r\n\t\t\tideographDigital: \"cjk-ideographic\",\r\n\t\t\tideographTraditional: \"cjk-heavenly-stem\", // 十天干\r\n\t\t\tideographLegalTraditional: \"trad-chinese-formal\",\r\n\t\t\tideographZodiac: \"cjk-earthly-branch\", // 十二地支\r\n\t\t\tiroha: \"katakana-iroha\",\r\n\t\t\tirohaFullWidth: \"katakana-iroha\",\r\n\t\t\tjapaneseCounting: \"japanese-informal\",\r\n\t\t\tjapaneseDigitalTenThousand: \"cjk-decimal\",\r\n\t\t\tjapaneseLegal: \"japanese-formal\",\r\n\t\t\tthaiNumbers: \"thai\",\r\n\t\t\tkoreanCounting: \"korean-hangul-formal\",\r\n\t\t\tkoreanDigital: \"korean-hangul-formal\",\r\n\t\t\tkoreanDigital2: \"korean-hanja-informal\",\r\n\t\t\thebrew1: \"hebrew\",\r\n\t\t\thebrew2: \"hebrew\",\r\n\t\t\thindiNumbers: \"devanagari\",\r\n\t\t\tganada: \"hangul\",\r\n\t\t\ttaiwaneseCounting: \"cjk-ideographic\",\r\n\t\t\ttaiwaneseCountingThousand: \"cjk-ideographic\",\r\n\t\t\ttaiwaneseDigital: \"cjk-decimal\",\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 { OpenXmlElementBase, DomType } from \"../document/dom\";\r\n\r\nexport abstract class WmlBaseNote implements OpenXmlElementBase {\r\n type: DomType;\r\n id: string;\r\n\tnoteType: string;\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 xmlString = removeUTF8BOM(xmlString);\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\nfunction removeUTF8BOM(data: string) {\r\n return data.charCodeAt(0) === 0xFEFF ? data.substring(1) : data;\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): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onloadend = () => resolve(reader.result as string);\r\n\t\treader.onerror = () => reject();\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 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 { DocumentParser } from '../document-parser';\r\nimport { convertLength, LengthUsage } from '../document/common';\r\nimport { OpenXmlElementBase, DomType } from '../document/dom';\r\nimport xml from '../parser/xml-parser';\r\nimport { formatCssRules, parseCssRules } from '../utils';\r\n\r\nexport class VmlElement extends OpenXmlElementBase {\r\n\ttype: DomType = DomType.VmlElement;\r\n\ttagName: string;\r\n\tcssStyleText?: string;\r\n\tattrs: Record = {};\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, parser: DocumentParser): 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\r\n\t\tcase \"textbox\":\r\n\t\t\tresult.tagName = \"foreignObject\"; \r\n\t\t\tObject.assign(result.attrs, { width: '100%', height: '100%' });\r\n\t\t\tbreak;\r\n\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\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\tcase \"txbxContent\": \r\n\t\t\t\tresult.children.push(...parser.parseBodyElements(el));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconst child = parseVmlElement(el, parser);\r\n\t\t\t\tchild && result.children.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 async load(blob: Blob | any, 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\t\td._package = await OpenXmlPackage.load(blob, options);\r\n\t\td.rels = await d._package.loadRelationships();\r\n\r\n\t\tawait Promise.all(topLevelRels.map(rel => {\r\n\t\t\tconst r = d.rels.find(x => x.type === rel.type) ?? rel; //fallback \r\n\t\t\treturn d.loadRelationshipPart(r.target, r.type);\r\n\t\t}));\r\n\r\n\t\treturn 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 async loadRelationshipPart(path: string, type: string): Promise {\r\n\t\tif (this.partsMap[path])\r\n\t\t\treturn this.partsMap[path];\r\n\r\n\t\tif (!this._package.get(path))\r\n\t\t\treturn 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\tawait part.load();\r\n\r\n\t\tif (part.rels?.length > 0) {\r\n\t\t\tconst [folder] = splitPath(part.path);\r\n\t\t\tawait Promise.all(part.rels.map(rel => this.loadRelationshipPart(resolvePath(rel.target, folder), rel.type)));\r\n\t\t}\r\n\r\n\t\treturn part;\r\n\t}\r\n\r\n\tasync loadDocumentImage(id: string, part?: Part): Promise {\r\n\t\tconst x = await this.loadResource(part ?? this.documentPart, id, \"blob\");\r\n\t\treturn this.blobToURL(x);\r\n\t}\r\n\r\n\tasync loadNumberingImage(id: string): Promise {\r\n\t\tconst x = await this.loadResource(this.numberingPart, id, \"blob\");\r\n\t\treturn this.blobToURL(x);\r\n\t}\r\n\r\n\tasync loadFont(id: string, key: string): Promise {\r\n\t\tconst x = await this.loadResource(this.fontTablePart, id, \"uint8array\");\r\n\t\treturn x ? this.blobToURL(new Blob([deobfuscate(x, key)])) : x;\r\n\t}\r\n\r\n\tprivate blobToURL(blob: Blob): string | Promise {\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","OpenXmlPackage","constructor","_zip","xmlParser","XmlParser","get","path","files","startsWith","substr","normalizePath","update","file","load","input","zip","JSZip","loadAsync","save","type","generateAsync","async","Promise","resolve","loadRelationships","relsPath","f","fn","splitPath","txt","parseRelationships","parseXmlDocument","firstElementChild","parseXmlString","trimXmlDeclaration","_package","rels","xmlText","xmlDoc","keepOrigin","_xmlDocument","parseXml","serializeXmlString","RelationshipTypes","xml","elements","e","attr","target","targetMode","autos","shd","color","borderColor","highlight","supportedNamespaceURIs","mmlTagMap","DomType","MmlMath","MmlMathParagraph","MmlFraction","MmlFunction","MmlFunctionName","MmlNumerator","MmlDenominator","MmlRadical","MmlDegree","MmlBase","MmlSuperscript","MmlSubscript","MmlPreSubSuper","MmlSuperArgument","MmlSubArgument","MmlDelimiter","MmlNary","MmlEquationArray","MmlLimit","MmlLimitLower","MmlMatrix","MmlMatrixRow","MmlBox","MmlBar","MmlGroupChar","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","start","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","text","textContent","DeletedText","SimpleField","instruction","lock","dirty","fieldRun","Instruction","ComplexField","charType","NoBreakHyphen","Break","break","Symbol","font","char","Tab","FootnoteReference","EndnoteReference","d","parseDrawing","parseVmlPicture","propsTag","run","MmlRun","parseMathProperies","verticalJustification","position","hideDegree","beginChar","endChar","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","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","leader","parseRunProperty","SectionType","parseColumns","numberOfColumns","space","separator","equalWidth","parsePageNumber","chapSep","chapStyle","parseFooterHeaderReference","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","WmlHeader","OpenXmlElementBase","Header","WmlFooter","Footer","BaseHeaderFooterPart","rootElement","createRootElement","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","then","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","resetCounters","numberingClass","listStyleType","valiable","toLowerCase","loadNumberingImage","counter","numberingCounter","counterReset","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","renderMmlGroupChar","renderMmlRadical","renderMmlDelimiter","renderMmlRun","renderMmlNary","renderMmlPreSubSuper","renderMmlBar","renderMllList","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","renderVmlChildElement","imageHref","requestAnimationFrame","bb","getBBox","Math","ceil","y","asArray","base","degree","grouped","sup","sub","supElem","subElem","charElem","stubElem","textDecoration","ouput","lvl","selectors","numformat","substring","none","decimal","lowerLetter","upperLetter","lowerRoman","upperRoman","decimalZero","aiueo","aiueoFullWidth","chineseCounting","chineseCountingThousand","chineseLegalSimplified","chosung","ideographDigital","ideographTraditional","ideographLegalTraditional","ideographZodiac","iroha","irohaFullWidth","japaneseCounting","japaneseDigitalTenThousand","japaneseLegal","thaiNumbers","koreanCounting","koreanDigital","koreanDigital2","hebrew1","hebrew2","hindiNumbers","ganada","taiwaneseCounting","taiwaneseCountingThousand","taiwaneseDigital","clearTimeout","setTimeout","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","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","charCodeAt","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","reject","reader","FileReader","onloadend","onerror","readAsDataURL","sources","source","shift","rule","parseStroke","parsePoint","cx","cy","rx","ry","at","fill","x1","y1","x2","y2","topLevelRels","OfficeDocument","ExtendedProperties","CoreProperties","CustomProperties","parts","partsMap","_options","_parser","all","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":""}