yanchengPowerSupply/node_modules/docx-preview/dist/docx-preview.min.js.map

1 line
254 KiB
Plaintext

{"version":3,"file":"docx-preview.min.js","mappings":"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","sources":["webpack://docx/webpack/universalModuleDefinition","webpack://docx/./src/mathml.scss","webpack://docx/./node_modules/css-loader/dist/runtime/api.js","webpack://docx/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://docx/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://docx/./src/common/open-xml-package.ts","webpack://docx/./src/common/part.ts","webpack://docx/./src/common/relationship.ts","webpack://docx/./src/document-parser.ts","webpack://docx/./src/document-props/core-props-part.ts","webpack://docx/./src/document-props/core-props.ts","webpack://docx/./src/document-props/custom-props-part.ts","webpack://docx/./src/document-props/custom-props.ts","webpack://docx/./src/document-props/extended-props-part.ts","webpack://docx/./src/document-props/extended-props.ts","webpack://docx/./src/document/bookmarks.ts","webpack://docx/./src/document/border.ts","webpack://docx/./src/document/common.ts","webpack://docx/./src/document/document-part.ts","webpack://docx/./src/document/dom.ts","webpack://docx/./src/document/line-spacing.ts","webpack://docx/./src/document/paragraph.ts","webpack://docx/./src/document/run.ts","webpack://docx/./src/document/section.ts","webpack://docx/./src/docx-preview.ts","webpack://docx/./src/font-table/font-table.ts","webpack://docx/./src/font-table/fonts.ts","webpack://docx/./src/header-footer/elements.ts","webpack://docx/./src/header-footer/parts.ts","webpack://docx/./src/html-renderer.ts","webpack://docx/./src/javascript.ts","webpack://docx/./src/notes/elements.ts","webpack://docx/./src/notes/parts.ts","webpack://docx/./src/numbering/numbering-part.ts","webpack://docx/./src/numbering/numbering.ts","webpack://docx/./src/parser/xml-parser.ts","webpack://docx/./src/settings/settings-part.ts","webpack://docx/./src/settings/settings.ts","webpack://docx/./src/styles/styles-part.ts","webpack://docx/./src/theme/theme-part.ts","webpack://docx/./src/theme/theme.ts","webpack://docx/./src/utils.ts","webpack://docx/./src/vml/vml.ts","webpack://docx/./src/word-document.ts","webpack://docx/external umd {\"root\":\"JSZip\",\"commonjs\":\"jszip\",\"commonjs2\":\"jszip\",\"amd\":\"jszip\"}","webpack://docx/webpack/bootstrap","webpack://docx/webpack/runtime/compat get default export","webpack://docx/webpack/runtime/define property getters","webpack://docx/webpack/runtime/hasOwnProperty shorthand","webpack://docx/webpack/runtime/make namespace object","webpack://docx/webpack/runtime/jsonp chunk loading","webpack://docx/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jszip\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jszip\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"docx\"] = factory(require(\"jszip\"));\n\telse\n\t\troot[\"docx\"] = factory(root[\"JSZip\"]);\n})(globalThis, (__WEBPACK_EXTERNAL_MODULE__626__) => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@namespace \\\"http://www.w3.org/1998/Math/MathML\\\";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:\\\"\\\";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mathml.scss\"],\"names\":[],\"mappings\":\"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA\",\"sourcesContent\":[\"@namespace \\\"http://www.w3.org/1998/Math/MathML\\\";\\r\\n\\r\\nmath {\\r\\n display: inline-block;\\r\\n line-height: initial;\\r\\n}\\r\\n\\r\\nmfrac {\\r\\n display: inline-block;\\r\\n vertical-align: -50%;\\r\\n text-align: center;\\r\\n\\r\\n &>:first-child {\\r\\n border-bottom: solid thin currentColor;\\r\\n }\\r\\n\\r\\n &>* {\\r\\n display: block;\\r\\n }\\r\\n}\\r\\n\\r\\nmsub {\\r\\n &>:nth-child(2) {\\r\\n font-size: smaller;\\r\\n vertical-align: sub;\\r\\n }\\r\\n}\\r\\n\\r\\nmsup {\\r\\n &>:nth-child(2) {\\r\\n font-size: smaller;\\r\\n vertical-align: super;\\r\\n }\\r\\n}\\r\\n\\r\\nmunder, mover, munderover {\\r\\n display: inline-flex;\\r\\n flex-flow: column nowrap;\\r\\n vertical-align: middle;\\r\\n text-align: center;\\r\\n\\r\\n &>:not(:first-child) {\\r\\n font-size: smaller;\\r\\n }\\r\\n}\\r\\n\\r\\nmunderover {\\r\\n &>:last-child { order: -1; }\\r\\n}\\r\\n\\r\\nmroot, msqrt {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n border-top: solid thin currentColor; \\r\\n margin-top: 0.5px;\\r\\n vertical-align: middle; \\r\\n margin-left: 1ch; \\r\\n\\r\\n &:before {\\r\\n content: \\\"\\\";\\r\\n display: inline-block;\\r\\n position: absolute;\\r\\n width: 1ch;\\r\\n left: -1ch;\\r\\n top: -1px;\\r\\n bottom: 0;\\r\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 100' preserveAspectRatio='none'%3E%3Cpath d='m0,75 l5,0 l5,25 l10,-100' stroke='black' fill='none' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E\\\");\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n\n if (!url) {\n return url;\n }\n\n url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them\n\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","import * as JSZip from \"jszip\";\r\nimport { parseXmlString, XmlParser } from \"../parser/xml-parser\";\r\nimport { splitPath } from \"../utils\";\r\nimport { parseRelationships, Relationship } from \"./relationship\";\r\n\r\nexport interface OpenXmlPackageOptions {\r\n trimXmlDeclaration: boolean,\r\n keepOrigin: boolean,\r\n}\r\n\r\nexport class OpenXmlPackage {\r\n xmlParser: XmlParser = new XmlParser();\r\n\r\n constructor(private _zip: JSZip, public options: OpenXmlPackageOptions) {\r\n }\r\n\r\n get(path: string): any {\r\n return this._zip.files[normalizePath(path)];\r\n }\r\n\r\n update(path: string, content: any) {\r\n this._zip.file(path, content);\r\n }\r\n\r\n static load(input: Blob | any, options: OpenXmlPackageOptions): Promise<OpenXmlPackage> {\r\n return JSZip.loadAsync(input).then(zip => new OpenXmlPackage(zip, options));\r\n }\r\n\r\n save(type: any = \"blob\"): Promise<any> {\r\n return this._zip.generateAsync({ type });\r\n }\r\n\r\n load(path: string, type: JSZip.OutputType = \"string\"): Promise<any> {\r\n return this.get(path)?.async(type) ?? Promise.resolve(null);\r\n }\r\n\r\n loadRelationships(path: string = null): Promise<Relationship[]> {\r\n let relsPath = `_rels/.rels`;\r\n\r\n if (path != null) {\r\n const [f, fn] = splitPath(path);\r\n relsPath = `${f}_rels/${fn}.rels`;\r\n }\r\n\r\n return this.load(relsPath)\r\n .then(txt => txt ? parseRelationships(this.parseXmlDocument(txt).firstElementChild, this.xmlParser) : null);\r\n }\r\n\r\n /** @internal */\r\n parseXmlDocument(txt: string): Document {\r\n return parseXmlString(txt, this.options.trimXmlDeclaration);\r\n }\r\n}\r\n\r\nfunction normalizePath(path: string) {\r\n return path.startsWith('/') ? path.substr(1) : path;\r\n}","import { serializeXmlString } from \"../parser/xml-parser\";\r\nimport { OpenXmlPackage } from \"./open-xml-package\";\r\nimport { Relationship } from \"./relationship\";\r\n\r\nexport class Part {\r\n protected _xmlDocument: Document;\r\n\r\n rels: Relationship[];\r\n\r\n constructor(protected _package: OpenXmlPackage, public path: string) {\r\n }\r\n\r\n load(): Promise<any> {\r\n return Promise.all([\r\n this._package.loadRelationships(this.path).then(rels => {\r\n this.rels = rels;\r\n }),\r\n this._package.load(this.path).then(text => {\r\n const xmlDoc = this._package.parseXmlDocument(text);\r\n\r\n if (this._package.options.keepOrigin) {\r\n this._xmlDocument = xmlDoc;\r\n }\r\n\r\n this.parseXml(xmlDoc.firstElementChild);\r\n })\r\n ]);\r\n }\r\n\r\n save() {\r\n this._package.update(this.path, serializeXmlString(this._xmlDocument));\r\n }\r\n\r\n protected parseXml(root: Element) {\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface Relationship {\r\n id: string,\r\n type: RelationshipTypes | string,\r\n target: string\r\n targetMode: \"\" | \"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 => <Relationship>{\r\n id: xml.attr(e, \"Id\"),\r\n type: xml.attr(e, \"Type\"),\r\n target: xml.attr(e, \"Target\"),\r\n targetMode: xml.attr(e, \"TargetMode\")\r\n });\r\n}","import {\r\n\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\"num\": DomType.MmlNumerator,\r\n\t\"den\": DomType.MmlDenominator,\r\n\t\"rad\": DomType.MmlRadical,\r\n\t\"deg\": DomType.MmlDegree,\r\n\t\"e\": DomType.MmlBase,\r\n\t\"sSup\": DomType.MmlSuperscript,\r\n\t\"sSub\": DomType.MmlSubscript,\r\n\t\"sup\": DomType.MmlSuperArgument,\r\n\t\"sub\": DomType.MmlSubArgument,\r\n\t\"d\": DomType.MmlDelimiter,\r\n\t\"nary\": DomType.MmlNary,\r\n}\r\n\r\nexport interface DocumentParserOptions {\r\n\tignoreWidth: boolean;\r\n\tdebug: boolean;\r\n}\r\n\r\nexport class DocumentParser {\r\n\toptions: DocumentParserOptions;\r\n\r\n\tconstructor(options?: Partial<DocumentParserOptions>) {\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 = <IDomStyle>{\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 = <IDomStyle>{\r\n\t\t\tid: xml.attr(node, \"styleId\"),\r\n\t\t\tisDefault: xml.boolAttr(node, \"default\"),\r\n\t\t\tname: null,\r\n\t\t\ttarget: null,\r\n\t\t\tbasedOn: null,\r\n\t\t\tstyles: [],\r\n\t\t\tlinked: null\r\n\t\t};\r\n\r\n\t\tswitch (xml.attr(node, \"type\")) {\r\n\t\t\tcase \"paragraph\": result.target = \"p\"; break;\r\n\t\t\tcase \"table\": result.target = \"table\"; break;\r\n\t\t\tcase \"character\": result.target = \"span\"; break;\r\n\t\t\t//case \"numbering\": result.target = \"p\"; break;\r\n\t\t}\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"basedOn\":\r\n\t\t\t\t\tresult.basedOn = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"name\":\r\n\t\t\t\t\tresult.name = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"link\":\r\n\t\t\t\t\tresult.linked = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"next\":\r\n\t\t\t\t\tresult.next = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"aliases\":\r\n\t\t\t\t\tresult.aliases = xml.attr(n, \"val\").split(\",\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"p\",\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresult.paragraphProps = parseParagraphProperties(n, xml);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"span\",\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tresult.runProps = parseRunProperties(n, xml);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblPr\":\r\n\t\t\t\tcase \"tcPr\":\r\n\t\t\t\t\tresult.styles.push({\r\n\t\t\t\t\t\ttarget: \"td\", //TODO: maybe move to processor\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblStylePr\":\r\n\t\t\t\t\tfor (let s of this.parseTableStyle(n))\r\n\t\t\t\t\t\tresult.styles.push(s);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rsid\":\r\n\t\t\t\tcase \"qFormat\":\r\n\t\t\t\tcase \"hidden\":\r\n\t\t\t\tcase \"semiHidden\":\r\n\t\t\t\tcase \"unhideWhenUsed\":\r\n\t\t\t\tcase \"autoRedefine\":\r\n\t\t\t\tcase \"uiPriority\":\r\n\t\t\t\t\t//TODO: ignore\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.options.debug && console.warn(`DOCX: Unknown style element: ${n.localName}`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseTableStyle(node: Element): IDomSubStyle[] {\r\n\t\tvar result = [];\r\n\r\n\t\tvar type = xml.attr(node, \"type\");\r\n\t\tvar selector = \"\";\r\n\t\tvar modificator = \"\";\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"firstRow\":\r\n\t\t\t\tmodificator = \".first-row\";\r\n\t\t\t\tselector = \"tr.first-row td\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lastRow\":\r\n\t\t\t\tmodificator = \".last-row\";\r\n\t\t\t\tselector = \"tr.last-row td\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"firstCol\":\r\n\t\t\t\tmodificator = \".first-col\";\r\n\t\t\t\tselector = \"td.first-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"lastCol\":\r\n\t\t\t\tmodificator = \".last-col\";\r\n\t\t\t\tselector = \"td.last-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band1Vert\":\r\n\t\t\t\tmodificator = \":not(.no-vband)\";\r\n\t\t\t\tselector = \"td.odd-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band2Vert\":\r\n\t\t\t\tmodificator = \":not(.no-vband)\";\r\n\t\t\t\tselector = \"td.even-col\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band1Horz\":\r\n\t\t\t\tmodificator = \":not(.no-hband)\";\r\n\t\t\t\tselector = \"tr.odd-row\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"band2Horz\":\r\n\t\t\t\tmodificator = \":not(.no-hband)\";\r\n\t\t\t\tselector = \"tr.even-row\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault: return [];\r\n\t\t}\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: `${selector} p`,\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: `${selector} span`,\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblPr\":\r\n\t\t\t\tcase \"tcPr\":\r\n\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\ttarget: selector, //TODO: maybe move to processor\r\n\t\t\t\t\t\tmod: modificator,\r\n\t\t\t\t\t\tvalues: this.parseDefaultProperties(n, {})\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingFile(xnums: Element): IDomNumbering[] {\r\n\t\tvar result = [];\r\n\t\tvar mapping = {};\r\n\t\tvar bullets = [];\r\n\r\n\t\txmlUtil.foreach(xnums, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"abstractNum\":\r\n\t\t\t\t\tthis.parseAbstractNumbering(n, bullets)\r\n\t\t\t\t\t\t.forEach(x => result.push(x));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"numPicBullet\":\r\n\t\t\t\t\tbullets.push(this.parseNumberingPicBullet(n));\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"num\":\r\n\t\t\t\t\tvar numId = xml.attr(n, \"numId\");\r\n\t\t\t\t\tvar abstractNumId = xml.elementAttr(n, \"abstractNumId\", \"val\");\r\n\t\t\t\t\tmapping[abstractNumId] = numId;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tresult.forEach(x => x.id = mapping[x.id]);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingPicBullet(elem: Element): NumberingPicBullet {\r\n\t\tvar pict = xml.element(elem, \"pict\");\r\n\t\tvar shape = pict && xml.element(pict, \"shape\");\r\n\t\tvar imagedata = shape && xml.element(shape, \"imagedata\");\r\n\r\n\t\treturn imagedata ? {\r\n\t\t\tid: xml.intAttr(elem, \"numPicBulletId\"),\r\n\t\t\tsrc: xml.attr(imagedata, \"id\"),\r\n\t\t\tstyle: xml.attr(shape, \"style\")\r\n\t\t} : null;\r\n\t}\r\n\r\n\tparseAbstractNumbering(node: Element, bullets: any[]): IDomNumbering[] {\r\n\t\tvar result = [];\r\n\t\tvar id = xml.attr(node, \"abstractNumId\");\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"lvl\":\r\n\t\t\t\t\tresult.push(this.parseNumberingLevel(id, n, bullets));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseNumberingLevel(id: string, node: Element, bullets: any[]): IDomNumbering {\r\n\t\tvar result: IDomNumbering = {\r\n\t\t\tid: id,\r\n\t\t\tlevel: xml.intAttr(node, \"ilvl\"),\r\n\t\t\tpStyleName: undefined,\r\n\t\t\tpStyle: {},\r\n\t\t\trStyle: {},\r\n\t\t\tsuff: \"tab\"\r\n\t\t};\r\n\r\n\t\txmlUtil.foreach(node, n => {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"pPr\":\r\n\t\t\t\t\tthis.parseDefaultProperties(n, result.pStyle);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rPr\":\r\n\t\t\t\t\tthis.parseDefaultProperties(n, result.rStyle);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lvlPicBulletId\":\r\n\t\t\t\t\tvar id = xml.intAttr(n, \"val\");\r\n\t\t\t\t\tresult.bullet = bullets.find(x => x.id == id);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"lvlText\":\r\n\t\t\t\t\tresult.levelText = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pStyle\":\r\n\t\t\t\t\tresult.pStyleName = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"numFmt\":\r\n\t\t\t\t\tresult.format = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"suff\":\r\n\t\t\t\t\tresult.suff = xml.attr(n, \"val\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseSdt(node: Element, parser: Function): OpenXmlElement[] {\r\n\t\tconst sdtContent = xml.element(node, \"sdtContent\");\r\n\t\treturn sdtContent ? parser(sdtContent) : [];\r\n\t}\r\n\r\n\tparseInserted(node: Element, parentParser: Function): OpenXmlElement {\r\n\t\treturn <OpenXmlElement>{ \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 <OpenXmlElement>{ \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 = <WmlParagraph>{ 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 = <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 = <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(<WmlText>{\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(<WmlText>{\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(<WmlFieldSimple>{\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(<WmlInstructionText>{\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(<WmlFieldChar>{\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(<WmlBreak>{\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(<WmlBreak>{\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(<WmlSymbol>{\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(<WmlNoteReference>{\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(<WmlNoteReference>{\r\n\t\t\t\t\t\ttype: DomType.EndnoteReference,\r\n\t\t\t\t\t\tid: xml.attr(c, \"id\")\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\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<string, any> {\r\n\t\tconst result: Record<string, any> = {};\r\n\r\n\t\tfor (const el of xml.elements(elem)) {\r\n\t\t\tswitch (el.localName) {\r\n\t\t\t\tcase \"chr\": result.char = xml.attr(el, \"val\"); break;\r\n\t\t\t\tcase \"degHide\": result.hideDegree = xml.boolAttr(el, \"val\"); break;\r\n\t\t\t\tcase \"begChr\": result.beginChar = xml.attr(el, \"val\"); break;\r\n\t\t\t\tcase \"endChr\": result.endChar = xml.attr(el, \"val\"); break;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tparseRunProperties(elem: Element, run: WmlRun) {\r\n\t\tthis.parseDefaultProperties(elem, run.cssStyle = {}, null, c => {\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"rStyle\":\r\n\t\t\t\t\trun.styleName = xml.attr(c, \"val\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vertAlign\":\r\n\t\t\t\t\trun.verticalAlign = values.valueOfVertAlign(c, true);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tparseVmlPicture(elem: Element): OpenXmlElement {\r\n\t\tconst result = { type: DomType.VmlPicture, children: [] };\r\n\r\n\t\tfor (const el of xml.elements(elem)) {\r\n\t\t\tconst child = parseVmlElement(el);\r\n\t\t\tchild && result.children.push(child);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tcheckAlternateContent(elem: Element): Element {\r\n\t\tif (elem.localName != 'AlternateContent')\r\n\t\t\treturn elem;\r\n\r\n\t\tvar choice = xml.element(elem, \"Choice\");\r\n\r\n\t\tif (choice) {\r\n\t\t\tvar requires = xml.attr(choice, \"Requires\");\r\n\t\t\tvar namespaceURI = elem.lookupNamespaceURI(requires);\r\n\r\n\t\t\tif (supportedNamespaceURIs.includes(namespaceURI))\r\n\t\t\t\treturn choice.firstElementChild;\r\n\t\t}\r\n\r\n\t\treturn xml.element(elem, \"Fallback\")?.firstElementChild;\r\n\t}\r\n\r\n\tparseDrawing(node: Element): OpenXmlElement {\r\n\t\tfor (var n of xml.elements(node)) {\r\n\t\t\tswitch (n.localName) {\r\n\t\t\t\tcase \"inline\":\r\n\t\t\t\tcase \"anchor\":\r\n\t\t\t\t\treturn this.parseDrawingWrapper(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tparseDrawingWrapper(node: Element): OpenXmlElement {\r\n\t\tvar result = <OpenXmlElement>{ 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 = <IDomImage>{ 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<string, string> = null, childStyle: Record<string, string> = null, handler: (prop: Element) => boolean = null): Record<string, string> {\r\n\t\tstyle = style || {};\r\n\r\n\t\txmlUtil.foreach(elem, c => {\r\n\t\t\tif (handler?.(c))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tswitch (c.localName) {\r\n\t\t\t\tcase \"jc\":\r\n\t\t\t\t\tstyle[\"text-align\"] = values.valueOfJc(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"textAlignment\":\r\n\t\t\t\t\tstyle[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"color\":\r\n\t\t\t\t\tstyle[\"color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.color);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"sz\":\r\n\t\t\t\t\tstyle[\"font-size\"] = style[\"min-height\"] = xml.lengthAttr(c, \"val\", LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"shd\":\r\n\t\t\t\t\tstyle[\"background-color\"] = xmlUtil.colorAttr(c, \"fill\", null, autos.shd);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"highlight\":\r\n\t\t\t\t\tstyle[\"background-color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.highlight);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vertAlign\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t// style.verticalAlign = values.valueOfVertAlign(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"position\":\r\n\t\t\t\t\tstyle.verticalAlign = xml.lengthAttr(c, \"val\", LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tcW\":\r\n\t\t\t\t\tif (this.options.ignoreWidth)\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblW\":\r\n\t\t\t\t\tstyle[\"width\"] = values.valueOfSize(c, \"w\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"trHeight\":\r\n\t\t\t\t\tthis.parseTrHeight(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"strike\":\r\n\t\t\t\t\tstyle[\"text-decoration\"] = xml.boolAttr(c, \"val\", true) ? \"line-through\" : \"none\"\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"b\":\r\n\t\t\t\t\tstyle[\"font-weight\"] = xml.boolAttr(c, \"val\", true) ? \"bold\" : \"normal\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"i\":\r\n\t\t\t\t\tstyle[\"font-style\"] = xml.boolAttr(c, \"val\", true) ? \"italic\" : \"normal\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"caps\":\r\n\t\t\t\t\tstyle[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"uppercase\" : \"none\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"smallCaps\":\r\n\t\t\t\t\tstyle[\"text-transform\"] = xml.boolAttr(c, \"val\", true) ? \"lowercase\" : \"none\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"u\":\r\n\t\t\t\t\tthis.parseUnderline(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ind\":\r\n\t\t\t\tcase \"tblInd\":\r\n\t\t\t\t\tthis.parseIndentation(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"rFonts\":\r\n\t\t\t\t\tthis.parseFont(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblBorders\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, childStyle || style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblCellSpacing\":\r\n\t\t\t\t\tstyle[\"border-spacing\"] = values.valueOfMargin(c);\r\n\t\t\t\t\tstyle[\"border-collapse\"] = \"separate\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pBdr\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bdr\":\r\n\t\t\t\t\tstyle[\"border\"] = values.valueOfBorder(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tcBorders\":\r\n\t\t\t\t\tthis.parseBorderProperties(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vanish\":\r\n\t\t\t\t\tif (xml.boolAttr(c, \"val\", true))\r\n\t\t\t\t\t\tstyle[\"display\"] = \"none\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"kern\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//style['letter-spacing'] = xml.lengthAttr(elem, 'val', LengthUsage.FontSize);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"noWrap\":\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//style[\"white-space\"] = \"nowrap\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblCellMar\":\r\n\t\t\t\tcase \"tcMar\":\r\n\t\t\t\t\tthis.parseMarginProperties(c, childStyle || style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"tblLayout\":\r\n\t\t\t\t\tstyle[\"table-layout\"] = values.valueOfTblLayout(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"vAlign\":\r\n\t\t\t\t\tstyle[\"vertical-align\"] = values.valueOfTextAlignment(c);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"spacing\":\r\n\t\t\t\t\tif (elem.localName == \"pPr\")\r\n\t\t\t\t\t\tthis.parseSpacing(c, style);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"wordWrap\":\r\n\t\t\t\t\tif (xml.boolAttr(c, \"val\")) //TODO: test with examples\r\n\t\t\t\t\t\tstyle[\"overflow-wrap\"] = \"break-word\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"bCs\":\r\n\t\t\t\tcase \"iCs\":\r\n\t\t\t\tcase \"szCs\":\r\n\t\t\t\tcase \"tabs\": //ignore - tabs is parsed by other parser\r\n\t\t\t\tcase \"outlineLvl\": //TODO\r\n\t\t\t\tcase \"contextualSpacing\": //TODO\r\n\t\t\t\tcase \"tblStyleColBandSize\": //TODO\r\n\t\t\t\tcase \"tblStyleRowBandSize\": //TODO\r\n\t\t\t\tcase \"webHidden\": //TODO - maybe web-hidden should be implemented\r\n\t\t\t\tcase \"pageBreakBefore\": //TODO - maybe ignore \r\n\t\t\t\tcase \"suppressLineNumbers\": //TODO - maybe ignore\r\n\t\t\t\tcase \"keepLines\": //TODO - maybe ignore\r\n\t\t\t\tcase \"keepNext\": //TODO - maybe ignore\r\n\t\t\t\tcase \"lang\":\r\n\t\t\t\tcase \"widowControl\": //TODO - maybe ignore \r\n\t\t\t\tcase \"bidi\": //TODO - maybe ignore\r\n\t\t\t\tcase \"rtl\": //TODO - maybe ignore\r\n\t\t\t\tcase \"noProof\": //ignore spellcheck\r\n\t\t\t\t\t//TODO ignore\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tif (this.options.debug)\r\n\t\t\t\t\t\tconsole.warn(`DOCX: Unknown document element: ${elem.localName}.${c.localName}`);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn style;\r\n\t}\r\n\r\n\tparseUnderline(node: Element, style: Record<string, string>) {\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<string, string>) {\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<string, string>) {\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<string, string>) {\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<string, string>) {\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<string, string>) {\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<string, string>) {\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(<Element>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 = <CorePropsDeclaration>{};\r\n\r\n for (let el of xmlParser.elements(root)) {\r\n switch (el.localName) {\r\n case \"title\": result.title = el.textContent; break;\r\n case \"description\": result.description = el.textContent; break;\r\n case \"subject\": result.subject = el.textContent; break;\r\n case \"creator\": result.creator = el.textContent; break;\r\n case \"keywords\": result.keywords = el.textContent; break;\r\n case \"language\": result.language = el.textContent; break;\r\n case \"lastModifiedBy\": result.lastModifiedBy = el.textContent; break;\r\n case \"revision\": el.textContent && (result.revision = parseInt(el.textContent)); break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { Part } from \"../common/part\";\r\nimport { CustomProperty, parseCustomProps } from \"./custom-props\";\r\n\r\nexport class CustomPropsPart extends Part {\r\n props: CustomProperty[];\r\n\r\n parseXml(root: Element) {\r\n this.props = parseCustomProps(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface CustomProperty {\r\n\tformatId: string;\r\n\tname: string;\r\n\ttype: string;\r\n\tvalue: string;\r\n}\r\n\r\nexport function parseCustomProps(root: Element, xml: XmlParser): CustomProperty[] {\r\n\treturn xml.elements(root, \"property\").map(e => {\r\n\t\tconst firstChild = e.firstChild;\r\n\r\n\t\treturn {\r\n\t\t\tformatId: xml.attr(e, \"fmtid\"),\r\n\t\t\tname: xml.attr(e, \"name\"),\r\n\t\t\ttype: firstChild.nodeName,\r\n\t\t\tvalue: firstChild.textContent\r\n\t\t};\r\n\t});\r\n}","import { Part } from \"../common/part\";\r\nimport { ExtendedPropsDeclaration, parseExtendedProps } from \"./extended-props\";\r\n\r\nexport class ExtendedPropsPart extends Part {\r\n props: ExtendedPropsDeclaration;\r\n\r\n parseXml(root: Element) {\r\n this.props = parseExtendedProps(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface ExtendedPropsDeclaration {\r\n template: string,\r\n totalTime: number,\r\n pages: number,\r\n words: number,\r\n characters: number,\r\n application: string,\r\n lines: number,\r\n paragraphs: number,\r\n company: string,\r\n appVersion: string\r\n}\r\n\r\nexport function parseExtendedProps(root: Element, xmlParser: XmlParser): ExtendedPropsDeclaration {\r\n const result = <ExtendedPropsDeclaration>{\r\n\r\n };\r\n\r\n for (let el of xmlParser.elements(root)) {\r\n switch (el.localName) {\r\n case \"Template\":\r\n result.template = el.textContent;\r\n break;\r\n case \"Pages\":\r\n result.pages = safeParseToInt(el.textContent);\r\n break;\r\n case \"Words\":\r\n result.words = safeParseToInt(el.textContent);\r\n break;\r\n case \"Characters\":\r\n result.characters = safeParseToInt(el.textContent);\r\n break;\r\n case \"Application\":\r\n result.application = el.textContent;\r\n break;\r\n case \"Lines\":\r\n result.lines = safeParseToInt(el.textContent);\r\n break;\r\n case \"Paragraphs\":\r\n result.paragraphs = safeParseToInt(el.textContent);\r\n break;\r\n case \"Company\":\r\n result.company = el.textContent;\r\n break;\r\n case \"AppVersion\":\r\n result.appVersion = el.textContent;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction safeParseToInt(value: string): number {\r\n if (typeof value === 'undefined')\r\n return;\r\n return parseInt(value);\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { DomType, OpenXmlElement } from \"./dom\";\r\n\r\nexport interface WmlBookmarkStart extends OpenXmlElement {\r\n id: string;\r\n name: string;\r\n colFirst: number;\r\n colLast: number;\r\n}\r\n\r\nexport interface WmlBookmarkEnd extends OpenXmlElement {\r\n id: string;\r\n}\r\n\r\nexport function parseBookmarkStart(elem: Element, xml: XmlParser): WmlBookmarkStart {\r\n return {\r\n type: DomType.BookmarkStart,\r\n id: xml.attr(elem, \"id\"),\r\n name: xml.attr(elem, \"name\"),\r\n colFirst: xml.intAttr(elem, \"colFirst\"),\r\n colLast: xml.intAttr(elem, \"colLast\")\r\n }\r\n}\r\n\r\nexport function parseBookmarkEnd(elem: Element, xml: XmlParser): WmlBookmarkEnd {\r\n return {\r\n type: DomType.BookmarkEnd,\r\n id: xml.attr(elem, \"id\")\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { Length, LengthUsage } from \"./common\";\r\n\r\nexport interface Border {\r\n color: string;\r\n type: string;\r\n size: Length;\r\n frame: boolean;\r\n shadow: boolean;\r\n offset: Length;\r\n}\r\n\r\nexport interface Borders {\r\n top: Border;\r\n left: Border;\r\n right: Border;\r\n bottom: Border;\r\n}\r\n\r\nexport function parseBorder(elem: Element, xml: XmlParser): Border {\r\n return {\r\n type: xml.attr(elem, \"val\"),\r\n color: xml.attr(elem, \"color\"),\r\n size: xml.lengthAttr(elem, \"sz\", LengthUsage.Border),\r\n offset: xml.lengthAttr(elem, \"space\", LengthUsage.Point),\r\n frame: xml.boolAttr(elem, 'frame'),\r\n shadow: xml.boolAttr(elem, 'shadow')\r\n };\r\n}\r\n\r\nexport function parseBorders(elem: Element, xml: XmlParser): Borders {\r\n var result = <Borders>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"left\": result.left = parseBorder(e, xml); break;\r\n case \"top\": result.top = parseBorder(e, xml); break;\r\n case \"right\": result.right = parseBorder(e, xml); break;\r\n case \"bottom\": result.bottom = parseBorder(e, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport const ns = {\r\n wordml: \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\",\r\n drawingml: \"http://schemas.openxmlformats.org/drawingml/2006/main\",\r\n picture: \"http://schemas.openxmlformats.org/drawingml/2006/picture\",\r\n\tcompatibility: \"http://schemas.openxmlformats.org/markup-compatibility/2006\",\r\n\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<string, LengthUsageType> = {\r\n Dxa: { mul: 0.05, unit: \"pt\" }, //twips\r\n Emu: { mul: 1 / 12700, unit: \"pt\" },\r\n FontSize: { mul: 0.5, unit: \"pt\" },\r\n Border: { mul: 0.125, unit: \"pt\" },\r\n Point: { mul: 1, unit: \"pt\" },\r\n Percent: { mul: 0.02, unit: \"%\" },\r\n LineHeight: { mul: 1 / 240, unit: \"\" },\r\n VmlEmu: { mul: 1 / 12700, unit: \"\" },\r\n}\r\n\r\nexport function convertLength(val: string, usage: LengthUsageType = LengthUsage.Dxa): string {\r\n //\"simplified\" docx documents use pt's as units\r\n if (val == null || /.+(p[xt]|[%])$/.test(val)) {\r\n return val;\r\n }\r\n\r\n\treturn `${(parseInt(val) * usage.mul).toFixed(2)}${usage.unit}`;\r\n}\r\n\r\nexport function convertBoolean(v: string, defaultValue = false): boolean {\r\n switch (v) {\r\n case \"1\": return true;\r\n case \"0\": return false;\r\n case \"on\": return true;\r\n case \"off\": return false;\r\n case \"true\": return true;\r\n case \"false\": return false;\r\n default: return defaultValue;\r\n }\r\n}\r\n\r\nexport function convertPercentage(val: string): number {\r\n return val ? parseInt(val) / 100 : null;\r\n}\r\n\r\nexport function parseCommonProperty(elem: Element, props: CommonProperties, xml: XmlParser): boolean {\r\n if(elem.namespaceURI != ns.wordml)\r\n return false;\r\n\r\n switch(elem.localName) {\r\n case \"color\": \r\n props.color = xml.attr(elem, \"val\");\r\n break;\r\n\r\n case \"sz\":\r\n props.fontSize = xml.lengthAttr(elem, \"val\", LengthUsage.FontSize);\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { DocumentElement } from \"./document\";\r\n\r\nexport class DocumentPart extends Part {\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n \r\n body: DocumentElement\r\n\r\n parseXml(root: Element) {\r\n this.body = this._documentParser.parseDocumentFile(root);\r\n }\r\n}","export enum DomType {\r\n Document = \"document\",\r\n Paragraph = \"paragraph\",\r\n Run = \"run\",\r\n Break = \"break\",\r\n NoBreakHyphen = \"noBreakHyphen\",\r\n Table = \"table\",\r\n Row = \"row\",\r\n Cell = \"cell\",\r\n Hyperlink = \"hyperlink\",\r\n Drawing = \"drawing\",\r\n Image = \"image\",\r\n Text = \"text\",\r\n Tab = \"tab\",\r\n Symbol = \"symbol\",\r\n BookmarkStart = \"bookmarkStart\",\r\n BookmarkEnd = \"bookmarkEnd\",\r\n Footer = \"footer\",\r\n Header = \"header\",\r\n FootnoteReference = \"footnoteReference\", \r\n\tEndnoteReference = \"endnoteReference\",\r\n Footnote = \"footnote\",\r\n Endnote = \"endnote\",\r\n SimpleField = \"simpleField\",\r\n ComplexField = \"complexField\",\r\n Instruction = \"instruction\",\r\n\tVmlPicture = \"vmlPicture\",\r\n\tMmlMath = \"mmlMath\",\r\n\tMmlMathParagraph = \"mmlMathParagraph\",\r\n\tMmlFraction = \"mmlFraction\",\r\n\tMmlNumerator = \"mmlNumerator\",\r\n\tMmlDenominator = \"mmlDenominator\",\r\n\tMmlRadical = \"mmlRadical\",\r\n\tMmlBase = \"mmlBase\",\r\n\tMmlDegree = \"mmlDegree\",\r\n\tMmlSuperscript = \"mmlSuperscript\",\r\n\tMmlSubscript = \"mmlSubscript\",\r\n\tMmlSubArgument = \"mmlSubArgument\",\r\n\tMmlSuperArgument = \"mmlSuperArgument\",\r\n\tMmlNary = \"mmlNary\",\r\n\tMmlDelimiter = \"mmlDelimiter\",\r\n\tMmlRun = \"mmlRun\",\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<string, string>;\r\n props?: Record<string, any>;\r\n \r\n\tstyleName?: string; //style name\r\n\tclassName?: string; //class mods\r\n\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport interface WmlHyperlink extends OpenXmlElement {\r\n\tid?: string;\r\n href?: string;\r\n}\r\n\r\nexport interface WmlNoteReference extends OpenXmlElement {\r\n id: string;\r\n}\r\n\r\nexport interface WmlBreak extends OpenXmlElement{\r\n break: \"page\" | \"lastRenderedPageBreak\" | \"textWrapping\";\r\n}\r\n\r\nexport interface WmlText extends OpenXmlElement{\r\n text: string;\r\n}\r\n\r\nexport interface WmlSymbol extends OpenXmlElement {\r\n font: string;\r\n char: string;\r\n}\r\n\r\nexport interface WmlTable extends OpenXmlElement {\r\n columns?: WmlTableColumn[];\r\n cellStyle?: Record<string, string>;\r\n\r\n\tcolBandSize?: number;\r\n\trowBandSize?: number;\r\n}\r\n\r\nexport interface WmlTableRow extends OpenXmlElement {\r\n\tisHeader?: boolean;\r\n}\r\n\r\nexport interface WmlTableCell extends OpenXmlElement {\r\n\tverticalMerge?: 'restart' | 'continue' | string;\r\n span?: number;\r\n}\r\n\r\nexport interface IDomImage extends OpenXmlElement {\r\n src: string;\r\n}\r\n\r\nexport interface WmlTableColumn {\r\n width?: string;\r\n}\r\n\r\nexport interface IDomNumbering {\r\n id: string;\r\n level: number;\r\n pStyleName: string;\r\n pStyle: Record<string, string>;\r\n rStyle: Record<string, string>;\r\n levelText?: string;\r\n suff: string;\r\n format?: string;\r\n bullet?: NumberingPicBullet;\r\n}\r\n\r\nexport interface NumberingPicBullet {\r\n id: number;\r\n src: string;\r\n style?: string;\r\n}\r\n","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { Length } from \"./common\";\r\n\r\nexport interface LineSpacing {\r\n after: Length;\r\n before: Length;\r\n line: number;\r\n lineRule: \"atLeast\" | \"exactly\" | \"auto\";\r\n}\r\n\r\nexport function parseLineSpacing(elem: Element, xml: XmlParser): LineSpacing {\r\n return {\r\n before: xml.lengthAttr(elem, \"before\"),\r\n after: xml.lengthAttr(elem, \"after\"),\r\n line: xml.intAttr(elem, \"line\"),\r\n lineRule: xml.attr(elem, \"lineRule\")\r\n } as LineSpacing;\r\n}","import { OpenXmlElement } from \"./dom\";\r\nimport { CommonProperties, Length, ns, parseCommonProperty } from \"./common\";\r\nimport { Borders } from \"./border\";\r\nimport { parseSectionProperties, SectionProperties } from \"./section\";\r\nimport { LineSpacing, parseLineSpacing } from \"./line-spacing\";\r\nimport { XmlParser } from \"../parser/xml-parser\";\r\nimport { parseRunProperties, RunProperties } from \"./run\";\r\n\r\nexport interface WmlParagraph extends OpenXmlElement, ParagraphProperties {\r\n}\r\n\r\nexport interface ParagraphProperties extends CommonProperties {\r\n sectionProps: SectionProperties;\r\n tabs: ParagraphTab[];\r\n numbering: ParagraphNumbering;\r\n\r\n border: Borders;\r\n textAlignment: \"auto\" | \"baseline\" | \"bottom\" | \"center\" | \"top\" | string;\r\n lineSpacing: LineSpacing;\r\n keepLines: boolean;\r\n keepNext: boolean;\r\n pageBreakBefore: boolean;\r\n outlineLevel: number;\r\n\tstyleName?: string;\r\n\r\n runProps: RunProperties;\r\n}\r\n\r\nexport interface ParagraphTab {\r\n style: \"bar\" | \"center\" | \"clear\" | \"decimal\" | \"end\" | \"num\" | \"start\" | \"left\" | \"right\";\r\n leader: \"none\" | \"dot\" | \"heavy\" | \"hyphen\" | \"middleDot\" | \"underscore\";\r\n position: Length;\r\n}\r\n\r\nexport interface ParagraphNumbering {\r\n id: string;\r\n level: number;\r\n}\r\n\r\nexport function parseParagraphProperties(elem: Element, xml: XmlParser): ParagraphProperties {\r\n let result = <ParagraphProperties>{};\r\n\r\n for(let el of xml.elements(elem)) {\r\n parseParagraphProperty(el, result, xml);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseParagraphProperty(elem: Element, props: ParagraphProperties, xml: XmlParser) {\r\n if (elem.namespaceURI != ns.wordml)\r\n return false;\r\n\r\n if(parseCommonProperty(elem, props, xml))\r\n return true;\r\n\r\n switch (elem.localName) {\r\n case \"tabs\":\r\n props.tabs = parseTabs(elem, xml);\r\n break;\r\n\r\n case \"sectPr\":\r\n props.sectionProps = parseSectionProperties(elem, xml);\r\n break;\r\n\r\n case \"numPr\":\r\n props.numbering = parseNumbering(elem, xml);\r\n break;\r\n \r\n case \"spacing\":\r\n props.lineSpacing = parseLineSpacing(elem, xml);\r\n return false; // TODO\r\n break;\r\n\r\n case \"textAlignment\":\r\n props.textAlignment = xml.attr(elem, \"val\");\r\n return false; //TODO\r\n break;\r\n\r\n case \"keepNext\":\r\n props.keepLines = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"keepNext\":\r\n props.keepNext = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"pageBreakBefore\":\r\n props.pageBreakBefore = xml.boolAttr(elem, \"val\", true);\r\n break;\r\n \r\n case \"outlineLvl\":\r\n props.outlineLevel = xml.intAttr(elem, \"val\");\r\n break;\r\n\r\n case \"pStyle\":\r\n props.styleName = xml.attr(elem, \"val\");\r\n break;\r\n\r\n case \"rPr\":\r\n props.runProps = parseRunProperties(elem, xml);\r\n break;\r\n \r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function parseTabs(elem: Element, xml: XmlParser): ParagraphTab[] {\r\n return xml.elements(elem, \"tab\")\r\n .map(e => <ParagraphTab>{\r\n position: xml.lengthAttr(e, \"pos\"),\r\n leader: xml.attr(e, \"leader\"),\r\n style: xml.attr(e, \"val\")\r\n });\r\n}\r\n\r\nexport function parseNumbering(elem: Element, xml: XmlParser): ParagraphNumbering {\r\n var result = <ParagraphNumbering>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"numId\":\r\n result.id = xml.attr(e, \"val\");\r\n break;\r\n\r\n case \"ilvl\":\r\n result.level = xml.intAttr(e, \"val\");\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\nimport { CommonProperties, parseCommonProperty } from \"./common\";\r\nimport { OpenXmlElement } from \"./dom\";\r\n\r\nexport interface WmlRun extends OpenXmlElement, RunProperties {\r\n id?: string;\r\n verticalAlign?: string;\r\n\tfieldRun?: boolean; \r\n}\r\n\r\nexport interface RunProperties extends CommonProperties {\r\n\r\n}\r\n\r\nexport function parseRunProperties(elem: Element, xml: XmlParser): RunProperties {\r\n let result = <RunProperties>{};\r\n\r\n for(let el of xml.elements(elem)) {\r\n parseRunProperty(el, result, xml);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseRunProperty(elem: Element, props: RunProperties, xml: XmlParser) {\r\n if (parseCommonProperty(elem, props, xml))\r\n return true;\r\n\r\n return false;\r\n}","import globalXmlParser, { XmlParser } from \"../parser/xml-parser\";\r\nimport { Borders, parseBorders } from \"./border\";\r\nimport { Length } from \"./common\";\r\n\r\nexport interface Column {\r\n space: Length;\r\n width: Length;\r\n}\r\n\r\nexport interface Columns {\r\n space: Length;\r\n numberOfColumns: number;\r\n separator: boolean;\r\n equalWidth: boolean;\r\n columns: Column[];\r\n}\r\n\r\nexport interface PageSize {\r\n width: Length, \r\n height: Length, \r\n orientation: \"landscape\" | string \r\n}\r\n\r\nexport interface PageNumber {\r\n start: number;\r\n chapSep: \"colon\" | \"emDash\" | \"endash\" | \"hyphen\" | \"period\" | string;\r\n chapStyle: string;\r\n format: \"none\" | \"cardinalText\" | \"decimal\" | \"decimalEnclosedCircle\" | \"decimalEnclosedFullstop\" \r\n | \"decimalEnclosedParen\" | \"decimalZero\" | \"lowerLetter\" | \"lowerRoman\"\r\n | \"ordinalText\" | \"upperLetter\" | \"upperRoman\" | string;\r\n}\r\n\r\nexport interface PageMargins {\r\n top: Length;\r\n right: Length;\r\n bottom: Length;\r\n left: Length;\r\n header: Length;\r\n footer: Length;\r\n gutter: Length;\r\n}\r\n\r\nexport enum SectionType {\r\n Continuous = \"continuous\",\r\n NextPage = \"nextPage\", \r\n NextColumn = \"nextColumn\",\r\n EvenPage = \"evenPage\",\r\n OddPage = \"oddPage\",\r\n}\r\n\r\nexport interface FooterHeaderReference {\r\n id: string;\r\n type: string | \"first\" | \"even\" | \"default\";\r\n}\r\n\r\nexport interface SectionProperties {\r\n type: SectionType | string;\r\n pageSize: PageSize,\r\n pageMargins: PageMargins,\r\n pageBorders: Borders;\r\n pageNumber: PageNumber;\r\n columns: Columns;\r\n footerRefs: FooterHeaderReference[];\r\n headerRefs: FooterHeaderReference[];\r\n titlePage: boolean;\r\n}\r\n\r\nexport function parseSectionProperties(elem: Element, xml: XmlParser = globalXmlParser): SectionProperties {\r\n var section = <SectionProperties>{};\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"pgSz\":\r\n section.pageSize = {\r\n width: xml.lengthAttr(e, \"w\"),\r\n height: xml.lengthAttr(e, \"h\"),\r\n orientation: xml.attr(e, \"orient\")\r\n }\r\n break;\r\n\r\n case \"type\":\r\n section.type = xml.attr(e, \"val\");\r\n break;\r\n\r\n case \"pgMar\":\r\n section.pageMargins = {\r\n left: xml.lengthAttr(e, \"left\"),\r\n right: xml.lengthAttr(e, \"right\"),\r\n top: xml.lengthAttr(e, \"top\"),\r\n bottom: xml.lengthAttr(e, \"bottom\"),\r\n header: xml.lengthAttr(e, \"header\"),\r\n footer: xml.lengthAttr(e, \"footer\"),\r\n gutter: xml.lengthAttr(e, \"gutter\"),\r\n };\r\n break;\r\n\r\n case \"cols\":\r\n section.columns = parseColumns(e, xml);\r\n break;\r\n\r\n case \"headerReference\":\r\n (section.headerRefs ?? (section.headerRefs = [])).push(parseFooterHeaderReference(e, xml)); \r\n break;\r\n \r\n case \"footerReference\":\r\n (section.footerRefs ?? (section.footerRefs = [])).push(parseFooterHeaderReference(e, xml)); \r\n break;\r\n\r\n case \"titlePg\":\r\n section.titlePage = xml.boolAttr(e, \"val\", true);\r\n break;\r\n\r\n case \"pgBorders\":\r\n section.pageBorders = parseBorders(e, xml);\r\n break;\r\n\r\n case \"pgNumType\":\r\n section.pageNumber = parsePageNumber(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return section;\r\n}\r\n\r\nfunction parseColumns(elem: Element, xml: XmlParser): Columns {\r\n return {\r\n numberOfColumns: xml.intAttr(elem, \"num\"),\r\n space: xml.lengthAttr(elem, \"space\"),\r\n separator: xml.boolAttr(elem, \"sep\"),\r\n equalWidth: xml.boolAttr(elem, \"equalWidth\", true),\r\n columns: xml.elements(elem, \"col\")\r\n .map(e => <Column>{\r\n width: xml.lengthAttr(e, \"w\"),\r\n space: xml.lengthAttr(e, \"space\")\r\n })\r\n };\r\n}\r\n\r\nfunction parsePageNumber(elem: Element, xml: XmlParser): PageNumber {\r\n return {\r\n chapSep: xml.attr(elem, \"chapSep\"),\r\n chapStyle: xml.attr(elem, \"chapStyle\"),\r\n format: xml.attr(elem, \"fmt\"),\r\n start: xml.intAttr(elem, \"start\")\r\n };\r\n}\r\n\r\nfunction parseFooterHeaderReference(elem: Element, xml: XmlParser): FooterHeaderReference {\r\n return {\r\n id: xml.attr(elem, \"id\"),\r\n type: xml.attr(elem, \"type\"),\r\n }\r\n}","import { WordDocument } from './word-document';\r\nimport { DocumentParser } from './document-parser';\r\nimport { HtmlRenderer } from './html-renderer';\r\n\r\nexport interface Options {\r\n inWrapper: boolean;\r\n ignoreWidth: boolean;\r\n ignoreHeight: boolean;\r\n ignoreFonts: boolean;\r\n breakPages: boolean;\r\n debug: boolean;\r\n experimental: boolean;\r\n className: string;\r\n trimXmlDeclaration: boolean;\r\n renderHeaders: boolean;\r\n renderFooters: boolean;\r\n renderFootnotes: boolean;\r\n\trenderEndnotes: boolean;\r\n ignoreLastRenderedPageBreak: boolean;\r\n\tuseBase64URL: boolean;\r\n\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<Options> = null): Promise<any> {\r\n const ops = { ...defaultOptions, ...userOptions };\r\n return WordDocument.load(data, new DocumentParser(ops), ops);\r\n}\r\n\r\nexport function renderAsync(data: Blob | any, bodyContainer: HTMLElement, styleContainer: HTMLElement = null, userOptions: Partial<Options> = null): Promise<any> {\r\n const ops = { ...defaultOptions, ...userOptions };\r\n const renderer = new HtmlRenderer(window.document);\r\n\r\n return WordDocument\r\n .load(data, new DocumentParser(ops), ops)\r\n .then(doc => {\r\n renderer.render(doc, bodyContainer, styleContainer, ops);\r\n return doc;\r\n });\r\n}","import { Part } from \"../common/part\";\r\nimport { FontDeclaration, parseFonts } from \"./fonts\";\r\n\r\nexport class FontTablePart extends Part {\r\n fonts: FontDeclaration[];\r\n\r\n parseXml(root: Element) {\r\n this.fonts = parseFonts(root, this._package.xmlParser);\r\n }\r\n}","import { XmlParser } from \"../parser/xml-parser\";\r\n\r\nconst embedFontTypeMap = {\r\n embedRegular: 'regular',\r\n embedBold: 'bold',\r\n embedItalic: 'italic',\r\n embedBoldItalic: 'boldItalic',\r\n}\r\n\r\nexport interface FontDeclaration {\r\n name: string,\r\n altName: string,\r\n family: string,\r\n embedFontRefs: EmbedFontRef[];\r\n}\r\n\r\nexport interface EmbedFontRef {\r\n id: string;\r\n key: string;\r\n type: 'regular' | 'bold' | 'italic' | 'boldItalic';\r\n}\r\n\r\nexport function parseFonts(root: Element, xml: XmlParser): FontDeclaration[] {\r\n return xml.elements(root).map(el => parseFont(el, xml));\r\n}\r\n\r\nexport function parseFont(elem: Element, xml: XmlParser): FontDeclaration {\r\n let result = <FontDeclaration>{\r\n name: xml.attr(elem, \"name\"),\r\n embedFontRefs: []\r\n };\r\n\r\n for (let el of xml.elements(elem)) {\r\n switch (el.localName) {\r\n case \"family\":\r\n result.family = xml.attr(el, \"val\");\r\n break;\r\n\r\n case \"altName\":\r\n result.altName = xml.attr(el, \"val\");\r\n break;\r\n\r\n case \"embedRegular\":\r\n case \"embedBold\":\r\n case \"embedItalic\":\r\n case \"embedBoldItalic\":\r\n result.embedFontRefs.push(parseEmbedFontRef(el, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseEmbedFontRef(elem: Element, xml: XmlParser): EmbedFontRef {\r\n return { \r\n id: xml.attr(elem, \"id\"), \r\n key: xml.attr(elem, \"fontKey\"),\r\n type: embedFontTypeMap[elem.localName]\r\n };\r\n}","import { DomType, OpenXmlElement } from \"../document/dom\";\r\n\r\nexport class WmlHeader implements OpenXmlElement {\r\n type: DomType = DomType.Header;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport class WmlFooter implements OpenXmlElement {\r\n type: DomType = DomType.Footer;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { OpenXmlElement } from \"../document/dom\";\r\nimport { WmlHeader, WmlFooter } from \"./elements\";\r\n\r\nexport abstract class BaseHeaderFooterPart<T extends OpenXmlElement = OpenXmlElement> extends Part {\r\n rootElement: T;\r\n\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.rootElement = this.createRootElement();\r\n this.rootElement.children = this._documentParser.parseBodyElements(root);\r\n }\r\n\r\n protected abstract createRootElement(): T;\r\n}\r\n\r\nexport class HeaderPart extends BaseHeaderFooterPart<WmlHeader> {\r\n protected createRootElement(): WmlHeader {\r\n return new WmlHeader();\r\n }\r\n}\r\n\r\nexport class FooterPart extends BaseHeaderFooterPart<WmlFooter> {\r\n protected createRootElement(): WmlFooter {\r\n return new WmlFooter();\r\n }\r\n}","import { WordDocument } from './word-document';\r\nimport {\r\n\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<number, HTMLTableCellElement>;\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<string, IDomStyle> = {};\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<string, WmlFootnote> = {};\r\n\tendnoteMap: Record<string, WmlFootnote> = {};\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<string, string>, output: Record<string, string>, attrs: string[] = null): Record<string, string> {\r\n\t\tif (!input)\r\n\t\t\treturn output;\r\n\r\n\t\tif (output == null) output = {};\r\n\t\tif (attrs == null) attrs = Object.getOwnPropertyNames(input);\r\n\r\n\t\tfor (var key of attrs) {\r\n\t\t\tif (input.hasOwnProperty(key) && !output.hasOwnProperty(key))\r\n\t\t\t\toutput[key] = input[key];\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tcreateSection(className: string, props: SectionProperties) {\r\n\t\tvar elem = this.createElement(\"section\", { className });\r\n\r\n\t\tif (props) {\r\n\t\t\tif (props.pageMargins) {\r\n\t\t\t\telem.style.paddingLeft = props.pageMargins.left;\r\n\t\t\t\telem.style.paddingRight = props.pageMargins.right;\r\n\t\t\t\telem.style.paddingTop = props.pageMargins.top;\r\n\t\t\t\telem.style.paddingBottom = props.pageMargins.bottom;\r\n\t\t\t}\r\n\r\n\t\t\tif (props.pageSize) {\r\n\t\t\t\tif (!this.options.ignoreWidth)\r\n\t\t\t\t\telem.style.width = props.pageSize.width;\r\n\t\t\t\tif (!this.options.ignoreHeight)\r\n\t\t\t\t\telem.style.minHeight = props.pageSize.height;\r\n\t\t\t}\r\n\r\n\t\t\tif (props.columns && props.columns.numberOfColumns) {\r\n\t\t\t\telem.style.columnCount = `${props.columns.numberOfColumns}`;\r\n\t\t\t\telem.style.columnGap = props.columns.space;\r\n\r\n\t\t\t\tif (props.columns.separator) {\r\n\t\t\t\t\telem.style.columnRule = \"1px solid black\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn elem;\r\n\t}\r\n\r\n\trenderSections(document: DocumentElement): HTMLElement[] {\r\n\t\tconst result = [];\r\n\r\n\t\tthis.processElement(document);\r\n\t\tconst sections = this.splitBySection(document.children);\r\n\t\tlet prevProps = null;\r\n\r\n\t\tfor (let i = 0, l = sections.length; i < l; i++) {\r\n\t\t\tthis.currentFootnoteIds = [];\r\n\r\n\t\t\tconst section = sections[i];\r\n\t\t\tconst props = section.sectProps || document.props;\r\n\t\t\tconst sectionElement = this.createSection(this.className, props);\r\n\t\t\tthis.renderStyleValues(document.cssStyle, sectionElement);\r\n\r\n\t\t\tthis.options.renderHeaders && this.renderHeaderFooter(props.headerRefs, props,\r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n\t\t\tvar contentElement = this.createElement(\"article\");\r\n\t\t\tthis.renderElements(section.elements, contentElement);\r\n\t\t\tsectionElement.appendChild(contentElement);\r\n\r\n\t\t\tif (this.options.renderFootnotes) {\r\n\t\t\t\tthis.renderNotes(this.currentFootnoteIds, this.footnoteMap, sectionElement);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.renderEndnotes && i == l - 1) {\r\n\t\t\t\tthis.renderNotes(this.currentEndnoteIds, this.endnoteMap, sectionElement);\r\n\t\t\t}\r\n\r\n\t\t\tthis.options.renderFooters && this.renderHeaderFooter(props.footerRefs, props,\r\n\t\t\t\tresult.length, prevProps != props, sectionElement);\r\n\r\n\t\t\tresult.push(sectionElement);\r\n\t\t\tprevProps = props;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderHeaderFooter(refs: FooterHeaderReference[], props: SectionProperties, page: number, firstOfSection: boolean, into: HTMLElement) {\r\n\t\tif (!refs) return;\r\n\r\n\t\tvar ref = (props.titlePage && firstOfSection ? refs.find(x => x.type == \"first\") : null)\r\n\t\t\t?? (page % 2 == 1 ? refs.find(x => x.type == \"even\") : null)\r\n\t\t\t?? refs.find(x => x.type == \"default\");\r\n\r\n\t\tvar part = ref && this.document.findPartByRelId(ref.id, this.document.documentPart) as BaseHeaderFooterPart;\r\n\r\n\t\tif (part) {\r\n\t\t\tthis.currentPart = part;\r\n\t\t\tif (!this.usedHederFooterParts.includes(part.path)) {\r\n\t\t\t\tthis.processElement(part.rootElement);\r\n\t\t\t\tthis.usedHederFooterParts.push(part.path);\r\n\t\t\t}\r\n\t\t\tthis.renderElements([part.rootElement], into);\r\n\t\t\tthis.currentPart = null;\r\n\t\t}\r\n\t}\r\n\r\n\tisPageBreakElement(elem: OpenXmlElement): boolean {\r\n\t\tif (elem.type != DomType.Break)\r\n\t\t\treturn false;\r\n\r\n\t\tif ((elem as WmlBreak).break == \"lastRenderedPageBreak\")\r\n\t\t\treturn !this.options.ignoreLastRenderedPageBreak;\r\n\r\n\t\treturn (elem as WmlBreak).break == \"page\";\r\n\t}\r\n\r\n\tsplitBySection(elements: OpenXmlElement[]): { sectProps: SectionProperties, elements: OpenXmlElement[] }[] {\r\n\t\tvar current = { sectProps: null, elements: [] };\r\n\t\tvar result = [current];\r\n\r\n\t\tfor (let elem of elements) {\r\n\t\t\tif (elem.type == DomType.Paragraph) {\r\n\t\t\t\tconst s = this.findStyle((elem as WmlParagraph).styleName);\r\n\r\n\t\t\t\tif (s?.paragraphProps?.pageBreakBefore) {\r\n\t\t\t\t\tcurrent.sectProps = sectProps;\r\n\t\t\t\t\tcurrent = { sectProps: null, elements: [] };\r\n\t\t\t\t\tresult.push(current);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcurrent.elements.push(elem);\r\n\r\n\t\t\tif (elem.type == DomType.Paragraph) {\r\n\t\t\t\tconst p = elem as WmlParagraph;\r\n\r\n\t\t\t\tvar sectProps = p.sectionProps;\r\n\t\t\t\tvar pBreakIndex = -1;\r\n\t\t\t\tvar rBreakIndex = -1;\r\n\r\n\t\t\t\tif (this.options.breakPages && p.children) {\r\n\t\t\t\t\tpBreakIndex = p.children.findIndex(r => {\r\n\t\t\t\t\t\trBreakIndex = r.children?.findIndex(this.isPageBreakElement.bind(this)) ?? -1;\r\n\t\t\t\t\t\treturn rBreakIndex != -1;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (sectProps || pBreakIndex != -1) {\r\n\t\t\t\t\tcurrent.sectProps = sectProps;\r\n\t\t\t\t\tcurrent = { sectProps: null, elements: [] };\r\n\t\t\t\t\tresult.push(current);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (pBreakIndex != -1) {\r\n\t\t\t\t\tlet breakRun = p.children[pBreakIndex];\r\n\t\t\t\t\tlet splitRun = rBreakIndex < breakRun.children.length - 1;\r\n\r\n\t\t\t\t\tif (pBreakIndex < p.children.length - 1 || splitRun) {\r\n\t\t\t\t\t\tvar children = elem.children;\r\n\t\t\t\t\t\tvar newParagraph = { ...elem, children: children.slice(pBreakIndex) };\r\n\t\t\t\t\t\telem.children = children.slice(0, pBreakIndex);\r\n\t\t\t\t\t\tcurrent.elements.push(newParagraph);\r\n\r\n\t\t\t\t\t\tif (splitRun) {\r\n\t\t\t\t\t\t\tlet runChildren = breakRun.children;\r\n\t\t\t\t\t\t\tlet newRun = { ...breakRun, children: runChildren.slice(0, rBreakIndex) };\r\n\t\t\t\t\t\t\telem.children.push(newRun);\r\n\t\t\t\t\t\t\tbreakRun.children = runChildren.slice(rBreakIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet currentSectProps = null;\r\n\r\n\t\tfor (let i = result.length - 1; i >= 0; i--) {\r\n\t\t\tif (result[i].sectProps == null) {\r\n\t\t\t\tresult[i].sectProps = currentSectProps;\r\n\t\t\t} else {\r\n\t\t\t\tcurrentSectProps = result[i].sectProps\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\trenderWrapper(children: HTMLElement[]) {\r\n\t\treturn this.createElement(\"div\", { className: `${this.className}-wrapper` }, children);\r\n\t}\r\n\r\n\trenderDefaultStyle() {\r\n\t\tvar c = this.className;\r\n\t\tvar styleText = `\r\n.${c}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } \r\n.${c}-wrapper>section.${c} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; }\r\n.${c} { color: black; }\r\nsection.${c} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\r\nsection.${c}>article { margin-bottom: auto; }\r\n.${c} table { border-collapse: collapse; }\r\n.${c} table td, .${c} table th { vertical-align: top; }\r\n.${c} p { margin: 0pt; min-height: 1em; }\r\n.${c} span { white-space: pre-wrap; overflow-wrap: break-word; }\r\n.${c} a { color: inherit; text-decoration: inherit; }\r\n`;\r\n\r\n\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\t// renderNumbering2(numberingPart: NumberingPartProperties, container: HTMLElement): HTMLElement {\r\n\t// let css = \"\";\r\n\t// const numberingMap = keyBy(numberingPart.abstractNumberings, x => x.id);\r\n\t// const bulletMap = keyBy(numberingPart.bulletPictures, x => x.id);\r\n\t// const topCounters = [];\r\n\r\n\t// for(let num of numberingPart.numberings) {\r\n\t// const absNum = numberingMap[num.abstractId];\r\n\r\n\t// for(let lvl of absNum.levels) {\r\n\t// const className = this.numberingClass(num.id, lvl.level);\r\n\t// let listStyleType = \"none\";\r\n\r\n\t// if(lvl.text && lvl.format == 'decimal') {\r\n\t// const counter = this.numberingCounter(num.id, lvl.level);\r\n\r\n\t// if (lvl.level > 0) {\r\n\t// css += this.styleToString(`p.${this.numberingClass(num.id, lvl.level - 1)}`, {\r\n\t// \"counter-reset\": counter\r\n\t// });\r\n\t// } else {\r\n\t// topCounters.push(counter);\r\n\t// }\r\n\r\n\t// css += this.styleToString(`p.${className}:before`, {\r\n\t// \"content\": this.levelTextToContent(lvl.text, num.id),\r\n\t// \"counter-increment\": counter\r\n\t// });\r\n\t// } else if(lvl.bulletPictureId) {\r\n\t// let pict = bulletMap[lvl.bulletPictureId];\r\n\t// let variable = `--${this.className}-${pict.referenceId}`.toLowerCase();\r\n\r\n\t// css += this.styleToString(`p.${className}:before`, {\r\n\t// \"content\": \"' '\",\r\n\t// \"display\": \"inline-block\",\r\n\t// \"background\": `var(${variable})`\r\n\t// }, pict.style);\r\n\r\n\t// this.document.loadNumberingImage(pict.referenceId).then(data => {\r\n\t// var text = `.${this.className}-wrapper { ${variable}: url(${data}) }`;\r\n\t// container.appendChild(createStyleElement(text));\r\n\t// });\r\n\t// } else {\r\n\t// listStyleType = this.numFormatToCssValue(lvl.format);\r\n\t// }\r\n\r\n\t// css += this.styleToString(`p.${className}`, {\r\n\t// \"display\": \"list-item\",\r\n\t// \"list-style-position\": \"inside\",\r\n\t// \"list-style-type\": listStyleType,\r\n\t// //TODO\r\n\t// //...num.style\r\n\t// });\r\n\t// }\r\n\t// }\r\n\r\n\t// if (topCounters.length > 0) {\r\n\t// css += this.styleToString(`.${this.className}-wrapper`, {\r\n\t// \"counter-reset\": topCounters.join(\" \")\r\n\t// });\r\n\t// }\r\n\r\n\t// return createStyleElement(css);\r\n\t// }\r\n\r\n\trenderNumbering(numberings: IDomNumbering[], styleContainer: HTMLElement) {\r\n\t\tvar styleText = \"\";\r\n\t\tvar rootCounters = [];\r\n\r\n\t\tfor (var num of numberings) {\r\n\t\t\tvar selector = `p.${this.numberingClass(num.id, num.level)}`;\r\n\t\t\tvar listStyleType = \"none\";\r\n\r\n\t\t\tif (num.bullet) {\r\n\t\t\t\tlet valiable = `--${this.className}-${num.bullet.src}`.toLowerCase();\r\n\r\n\t\t\t\tstyleText += this.styleToString(`${selector}:before`, {\r\n\t\t\t\t\t\"content\": \"' '\",\r\n\t\t\t\t\t\"display\": \"inline-block\",\r\n\t\t\t\t\t\"background\": `var(${valiable})`\r\n\t\t\t\t}, num.bullet.style);\r\n\r\n\t\t\t\tthis.document.loadNumberingImage(num.bullet.src).then(data => {\r\n\t\t\t\t\tvar text = `${this.rootSelector} { ${valiable}: url(${data}) }`;\r\n\t\t\t\t\tstyleContainer.appendChild(createStyleElement(text));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse if (num.levelText) {\r\n\t\t\t\tlet counter = this.numberingCounter(num.id, num.level);\r\n\r\n\t\t\t\tif (num.level > 0) {\r\n\t\t\t\t\tstyleText += this.styleToString(`p.${this.numberingClass(num.id, num.level - 1)}`, {\r\n\t\t\t\t\t\t\"counter-reset\": counter\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\trootCounters.push(counter);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstyleText += this.styleToString(`${selector}:before`, {\r\n\t\t\t\t\t\"content\": this.levelTextToContent(num.levelText, num.suff, num.id, this.numFormatToCssValue(num.format)),\r\n\t\t\t\t\t\"counter-increment\": counter,\r\n\t\t\t\t\t...num.rStyle,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlistStyleType = this.numFormatToCssValue(num.format);\r\n\t\t\t}\r\n\r\n\t\t\tstyleText += this.styleToString(selector, {\r\n\t\t\t\t\"display\": \"list-item\",\r\n\t\t\t\t\"list-style-position\": \"inside\",\r\n\t\t\t\t\"list-style-type\": listStyleType,\r\n\t\t\t\t...num.pStyle\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (rootCounters.length > 0) {\r\n\t\t\tstyleText += this.styleToString(this.rootSelector, {\r\n\t\t\t\t\"counter-reset\": rootCounters.join(\" \")\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\trenderStyles(styles: IDomStyle[]): HTMLElement {\r\n\t\tvar styleText = \"\";\r\n\t\tconst stylesMap = this.styleMap;\r\n\t\tconst defautStyles = keyBy(styles.filter(s => s.isDefault), s => s.target);\r\n\r\n\t\tfor (const style of styles) {\r\n\t\t\tvar subStyles = style.styles;\r\n\r\n\t\t\tif (style.linked) {\r\n\t\t\t\tvar linkedStyle = style.linked && stylesMap[style.linked];\r\n\r\n\t\t\t\tif (linkedStyle)\r\n\t\t\t\t\tsubStyles = subStyles.concat(linkedStyle.styles);\r\n\t\t\t\telse if (this.options.debug)\r\n\t\t\t\t\tconsole.warn(`Can't find linked style ${style.linked}`);\r\n\t\t\t}\r\n\r\n\t\t\tfor (const subStyle of subStyles) {\r\n\t\t\t\t//TODO temporary disable modificators until test it well\r\n\t\t\t\tvar selector = `${style.target ?? ''}.${style.cssName}`; //${subStyle.mod ?? ''} \r\n\r\n\t\t\t\tif (style.target != subStyle.target)\r\n\t\t\t\t\tselector += ` ${subStyle.target}`;\r\n\r\n\t\t\t\tif (defautStyles[style.target] == style)\r\n\t\t\t\t\tselector = `.${this.className} ${style.target}, ` + selector;\r\n\r\n\t\t\t\tstyleText += this.styleToString(selector, subStyle.values);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn createStyleElement(styleText);\r\n\t}\r\n\r\n\trenderNotes(noteIds: string[], notesMap: Record<string, WmlBaseNote>, into: HTMLElement) {\r\n\t\tvar notes = noteIds.map(id => notesMap[id]).filter(x => x);\r\n\r\n\t\tif (notes.length > 0) {\r\n\t\t\tvar result = this.createElement(\"ol\", null, this.renderElements(notes));\r\n\t\t\tinto.appendChild(result);\r\n\t\t}\r\n\t}\r\n\r\n\trenderElement(elem: OpenXmlElement): Node | Node[] {\r\n\t\tswitch (elem.type) {\r\n\t\t\tcase DomType.Paragraph:\r\n\t\t\t\treturn this.renderParagraph(elem as WmlParagraph);\r\n\r\n\t\t\tcase DomType.BookmarkStart:\r\n\t\t\t\treturn this.renderBookmarkStart(elem as WmlBookmarkStart);\r\n\r\n\t\t\tcase DomType.BookmarkEnd:\r\n\t\t\t\treturn null; //ignore bookmark end\r\n\r\n\t\t\tcase DomType.Run:\r\n\t\t\t\treturn this.renderRun(elem as WmlRun);\r\n\r\n\t\t\tcase DomType.Table:\r\n\t\t\t\treturn this.renderTable(elem);\r\n\r\n\t\t\tcase DomType.Row:\r\n\t\t\t\treturn this.renderTableRow(elem);\r\n\r\n\t\t\tcase DomType.Cell:\r\n\t\t\t\treturn this.renderTableCell(elem);\r\n\r\n\t\t\tcase DomType.Hyperlink:\r\n\t\t\t\treturn this.renderHyperlink(elem);\r\n\r\n\t\t\tcase DomType.Drawing:\r\n\t\t\t\treturn this.renderDrawing(elem);\r\n\r\n\t\t\tcase DomType.Image:\r\n\t\t\t\treturn this.renderImage(elem as IDomImage);\r\n\r\n\t\t\tcase DomType.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.Text:\r\n\t\t\t\treturn this.renderText(elem as WmlText);\r\n\r\n\t\t\tcase DomType.DeletedText:\r\n\t\t\t\treturn this.renderDeletedText(elem as WmlText);\r\n\t\r\n\t\t\tcase DomType.Tab:\r\n\t\t\t\treturn this.renderTab(elem);\r\n\r\n\t\t\tcase DomType.Symbol:\r\n\t\t\t\treturn this.renderSymbol(elem as WmlSymbol);\r\n\r\n\t\t\tcase DomType.Break:\r\n\t\t\t\treturn this.renderBreak(elem as WmlBreak);\r\n\r\n\t\t\tcase DomType.Footer:\r\n\t\t\t\treturn this.renderContainer(elem, \"footer\");\r\n\r\n\t\t\tcase DomType.Header:\r\n\t\t\t\treturn this.renderContainer(elem, \"header\");\r\n\r\n\t\t\tcase DomType.Footnote:\r\n\t\t\tcase DomType.Endnote:\r\n\t\t\t\treturn this.renderContainer(elem, \"li\");\r\n\r\n\t\t\tcase DomType.FootnoteReference:\r\n\t\t\t\treturn this.renderFootnoteReference(elem as WmlNoteReference);\r\n\r\n\t\t\tcase DomType.EndnoteReference:\r\n\t\t\t\treturn this.renderEndnoteReference(elem as WmlNoteReference);\r\n\r\n\t\t\tcase DomType.NoBreakHyphen:\r\n\t\t\t\treturn this.createElement(\"wbr\");\r\n\r\n\t\t\tcase DomType.VmlPicture:\r\n\t\t\t\treturn this.renderVmlPicture(elem);\r\n\r\n\t\t\tcase DomType.VmlElement:\r\n\t\t\t\treturn this.renderVmlElement(elem as VmlElement);\r\n\t\r\n\t\t\tcase DomType.MmlMath:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"math\", { xmlns: ns.mathML });\r\n\t\r\n\t\t\tcase DomType.MmlMathParagraph:\r\n\t\t\t\treturn this.renderContainer(elem, \"span\");\r\n\r\n\t\t\tcase DomType.MmlFraction:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mfrac\");\r\n\r\n\t\t\tcase DomType.MmlNumerator:\r\n\t\t\tcase DomType.MmlDenominator:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlRadical:\r\n\t\t\t\treturn this.renderMmlRadical(elem);\r\n\r\n\t\t\tcase DomType.MmlDegree:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlSuperscript:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"msup\");\r\n\r\n\t\t\tcase DomType.MmlSubscript:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"msub\");\r\n\t\r\n\t\t\tcase DomType.MmlBase:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mrow\");\r\n\r\n\t\t\tcase DomType.MmlSuperArgument:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlSubArgument:\r\n\t\t\t\treturn this.renderContainerNS(elem, ns.mathML, \"mn\");\r\n\r\n\t\t\tcase DomType.MmlDelimiter:\r\n\t\t\t\treturn this.renderMmlDelimiter(elem);\r\n\r\n\t\t\tcase DomType.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.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<string, any>) {\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<string, any>) {\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 = \"&emsp;\";//\"&nbsp;\";\r\n\r\n\t\tif (this.options.experimental) {\r\n\t\t\ttabSpan.className = this.tabStopClass();\r\n\t\t\tvar stops = findParent<WmlParagraph>(elem, DomType.Paragraph)?.tabs;\r\n\t\t\tthis.currentTabs.push({ stops, span: tabSpan });\r\n\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 = createSvgElement(elem.tagName as any);\r\n\t\tObject.entries(elem.attrs).forEach(([k, v]) => result.setAttribute(k, v));\r\n\r\n\t\tif (elem.imageHref?.id) {\r\n\t\t\tthis.document?.loadDocumentImage(elem.imageHref.id, this.currentPart)\r\n\t\t\t\t.then(x => result.setAttribute(\"href\", x));\r\n\t\t}\r\n\t\t\r\n\t\tcontainer.appendChild(result);\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst bb = (container.firstElementChild as any).getBBox();\r\n\r\n\t\t\tcontainer.setAttribute(\"width\", `${Math.ceil(bb.x + bb.width)}`);\r\n\t\t\tcontainer.setAttribute(\"height\", `${Math.ceil(bb.y + bb.height)}`);\r\n\t\t}, 0);\r\n\r\n\t\treturn container;\r\n\t}\r\n\r\n\trenderMmlRadical(elem: OpenXmlElement): HTMLElement {\r\n\t\tconst base = elem.children.find(el => el.type == DomType.MmlBase);\r\n\r\n\t\tif (elem.props?.hideDegree) {\r\n\t\t\treturn createElementNS(ns.mathML, \"msqrt\", null, this.renderElements([base]));\r\n\t\t}\r\n\r\n\t\tconst degree = elem.children.find(el => el.type == DomType.MmlDegree);\r\n\t\treturn createElementNS(ns.mathML, \"mroot\", null, this.renderElements([base, degree]));\r\n\t}\r\n\r\n\trenderMmlDelimiter(elem: OpenXmlElement): HTMLElement {\t\t\r\n\t\tconst children = [];\r\n\r\n\t\tchildren.push(createElementNS(ns.mathML, \"mo\", null, [elem.props.beginChar ?? '(']));\r\n\t\tchildren.push(...this.renderElements(elem.children));\r\n\t\tchildren.push(createElementNS(ns.mathML, \"mo\", null, [elem.props.endChar ?? ')']));\r\n\r\n\t\treturn createElementNS(ns.mathML, \"mrow\", null, children);\r\n\t}\r\n\r\n\trenderMmlNary(elem: OpenXmlElement): HTMLElement {\t\t\r\n\t\tconst children = [];\r\n\t\tconst grouped = keyBy(elem.children, x => x.type);\r\n\r\n\t\tconst sup = grouped[DomType.MmlSuperArgument];\r\n\t\tconst sub = grouped[DomType.MmlSubArgument];\r\n\t\tconst supElem = sup ? createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sup))) : null;\r\n\t\tconst subElem = sub ? createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sub))) : null;\r\n\r\n\t\tif (elem.props?.char) {\r\n\t\t\tconst charElem = createElementNS(ns.mathML, \"mo\", null, [elem.props.char]);\r\n\r\n\t\t\tif (supElem || subElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"munderover\", null, [charElem, subElem, supElem]));\r\n\t\t\t} else if(supElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"mover\", null, [charElem, supElem]));\r\n\t\t\t} else if(subElem) {\r\n\t\t\t\tchildren.push(createElementNS(ns.mathML, \"munder\", null, [charElem, subElem]));\r\n\t\t\t} else {\r\n\t\t\t\tchildren.push(charElem);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tchildren.push(...this.renderElements(grouped[DomType.MmlBase].children));\r\n\r\n\t\treturn createElementNS(ns.mathML, \"mrow\", null, children);\r\n\t}\r\n\r\n\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\trenderStyleValues(style: Record<string, string>, ouput: HTMLElement) {\r\n\t\tObject.assign(ouput.style, style);\r\n\t}\r\n\r\n\trenderClass(input: OpenXmlElement, ouput: HTMLElement) {\r\n\t\tif (input.className)\r\n\t\t\touput.className = input.className;\r\n\r\n\t\tif (input.styleName)\r\n\t\t\touput.classList.add(this.processStyleName(input.styleName));\r\n\t}\r\n\r\n\tfindStyle(styleName: string) {\r\n\t\treturn styleName && this.styleMap?.[styleName];\r\n\t}\r\n\r\n\tnumberingClass(id: string, lvl: number) {\r\n\t\treturn `${this.className}-num-${id}-${lvl}`;\r\n\t}\r\n\r\n\ttabStopClass() {\r\n\t\treturn `${this.className}-tab-stop`;\r\n\t}\r\n\r\n\tstyleToString(selectors: string, values: Record<string, string>, cssText: string = null) {\r\n\t\tlet result = `${selectors} {\\r\\n`;\r\n\r\n\t\tfor (const key in values) {\r\n\t\t\tresult += ` ${key}: ${values[key]};\\r\\n`;\r\n\t\t}\r\n\r\n\t\tif (cssText)\r\n\t\t\tresult += cssText;\r\n\r\n\t\treturn result + \"}\\r\\n\";\r\n\t}\r\n\r\n\tnumberingCounter(id: string, lvl: number) {\r\n\t\treturn `${this.className}-num-${id}-${lvl}`;\r\n\t}\r\n\r\n\tlevelTextToContent(text: string, suff: string, id: string, numformat: string) {\r\n\t\tconst suffMap = {\r\n\t\t\t\"tab\": \"\\\\9\",\r\n\t\t\t\"space\": \"\\\\a0\",\r\n\t\t};\r\n\r\n\t\tvar result = text.replace(/%\\d*/g, s => {\r\n\t\t\tlet lvl = parseInt(s.substring(1), 10) - 1;\r\n\t\t\treturn `\"counter(${this.numberingCounter(id, lvl)}, ${numformat})\"`;\r\n\t\t});\r\n\r\n\t\treturn `\"${result}${suffMap[suff] ?? \"\"}\"`;\r\n\t}\r\n\r\n\tnumFormatToCssValue(format: string) {\r\n\t\tvar mapping = {\r\n\t\t\t\"none\": \"none\",\r\n\t\t\t\"bullet\": \"disc\",\r\n\t\t\t\"decimal\": \"decimal\",\r\n\t\t\t\"lowerLetter\": \"lower-alpha\",\r\n\t\t\t\"upperLetter\": \"upper-alpha\",\r\n\t\t\t\"lowerRoman\": \"lower-roman\",\r\n\t\t\t\"upperRoman\": \"upper-roman\",\r\n\t\t};\r\n\r\n\t\treturn mapping[format] || format;\r\n\t}\r\n\r\n\trefreshTabStops() {\r\n\t\tif (!this.options.experimental)\r\n\t\t\treturn;\r\n\r\n\t\tclearTimeout(this.tabsTimeout);\r\n\r\n\t\tthis.tabsTimeout = setTimeout(() => {\r\n\t\t\tconst pixelToPoint = computePixelToPoint();\r\n\r\n\t\t\tfor (let tab of this.currentTabs) {\r\n\t\t\t\tupdateTabStop(tab.span, tab.stops, this.defaultTabSize, pixelToPoint);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\r\n\tcreateElement = createElement;\r\n}\r\n\r\ntype ChildType = Node | string;\r\n\r\nfunction createElement<T extends keyof HTMLElementTagNameMap>(\r\n\ttagName: T,\r\n\tprops?: Partial<Record<keyof HTMLElementTagNameMap[T], any>>,\r\n\tchildren?: ChildType[]\r\n): HTMLElementTagNameMap[T] {\r\n\treturn createElementNS(undefined, tagName, props, children);\r\n}\r\n\r\nfunction createSvgElement<T extends keyof SVGElementTagNameMap>(\r\n\ttagName: T,\r\n\tprops?: Partial<Record<keyof SVGElementTagNameMap[T], any>>,\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<Record<any, any>>, 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<T extends OpenXmlElement>(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 <T>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 = \"&nbsp;\";\r\n elem.style.textDecoration = \"inherit\";\r\n elem.style.wordSpacing = `${width.toFixed(0)}pt`;\r\n\r\n switch (tab.leader) {\r\n case \"dot\":\r\n case \"middleDot\":\r\n elem.style.textDecoration = \"underline\";\r\n elem.style.textDecorationStyle = \"dotted\";\r\n break;\r\n\r\n case \"hyphen\":\r\n case \"heavy\":\r\n case \"underscore\":\r\n elem.style.textDecoration = \"underline\";\r\n break;\r\n }\r\n}\r\n\r\nfunction lengthToPoint(length: Length): number {\r\n\treturn parseFloat(length);\r\n}","import { DomType, OpenXmlElement } from \"../document/dom\";\r\n\r\nexport abstract class WmlBaseNote implements OpenXmlElement {\r\n id: string;\r\n\ttype: DomType;\r\n\tnoteType: string;\r\n children?: OpenXmlElement[] = [];\r\n cssStyle?: Record<string, string> = {};\r\n className?: string;\r\n parent?: OpenXmlElement;\r\n}\r\n\r\nexport class WmlFootnote extends WmlBaseNote {\r\n\ttype = DomType.Footnote\r\n}\r\n\r\nexport class WmlEndnote extends WmlBaseNote {\r\n\ttype = DomType.Endnote\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { WmlBaseNote, WmlEndnote, WmlFootnote } from \"./elements\";\r\n\r\nexport class BaseNotePart<T extends WmlBaseNote> extends Part {\r\n protected _documentParser: DocumentParser;\r\n\r\n notes: T[]\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n}\r\n\r\nexport class FootnotesPart extends BaseNotePart<WmlFootnote> {\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path, parser);\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.notes = this._documentParser.parseNotes(root, \"footnote\", WmlFootnote);\r\n }\r\n}\r\n\r\nexport class EndnotesPart extends BaseNotePart<WmlEndnote> {\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path, parser);\r\n }\r\n\r\n parseXml(root: Element) {\r\n this.notes = this._documentParser.parseNotes(root, \"endnote\", WmlEndnote);\r\n }\r\n}","import { OpenXmlPackage } from \"../common/open-xml-package\";\r\nimport { Part } from \"../common/part\";\r\nimport { DocumentParser } from \"../document-parser\";\r\nimport { IDomNumbering } from \"../document/dom\";\r\nimport { AbstractNumbering, Numbering, NumberingBulletPicture, NumberingPartProperties, parseNumberingPart } from \"./numbering\";\r\n\r\nexport class NumberingPart extends Part implements NumberingPartProperties {\r\n private _documentParser: DocumentParser;\r\n\r\n constructor(pkg: OpenXmlPackage, path: string, parser: DocumentParser) {\r\n super(pkg, path);\r\n this._documentParser = parser;\r\n }\r\n\r\n numberings: Numbering[];\r\n abstractNumberings: AbstractNumbering[];\r\n bulletPictures: NumberingBulletPicture[];\r\n \r\n domNumberings: IDomNumbering[];\r\n\r\n parseXml(root: Element) {\r\n Object.assign(this, parseNumberingPart(root, this._package.xmlParser));\r\n this.domNumberings = this._documentParser.parseNumberingFile(root); \r\n }\r\n}","import { NumberingPicBullet } from \"../document/dom\";\r\nimport { ParagraphProperties, parseParagraphProperties } from \"../document/paragraph\";\r\nimport { parseRunProperties, RunProperties } from \"../document/run\";\r\nimport { XmlParser } from \"../parser/xml-parser\";\r\n\r\nexport interface NumberingPartProperties {\r\n numberings: Numbering[];\r\n abstractNumberings: AbstractNumbering[];\r\n bulletPictures: NumberingBulletPicture[];\r\n}\r\n\r\nexport interface Numbering {\r\n id: string;\r\n abstractId: string;\r\n overrides: NumberingLevelOverride[];\r\n}\r\n\r\nexport interface NumberingLevelOverride {\r\n level: number;\r\n start: number;\r\n numberingLevel: NumberingLevel;\r\n}\r\n\r\nexport interface AbstractNumbering {\r\n id: string;\r\n name: string;\r\n multiLevelType: \"singleLevel\" | \"multiLevel\" | \"hybridMultilevel\" | string;\r\n levels: NumberingLevel[];\r\n numberingStyleLink: string;\r\n styleLink: string;\r\n}\r\n\r\nexport interface NumberingLevel {\r\n level: number;\r\n start: string;\r\n restart: number;\r\n format: 'lowerRoman' | 'lowerLetter' | string;\r\n text: string;\r\n justification: string;\r\n bulletPictureId: string;\r\n paragraphStyle: string;\r\n paragraphProps: ParagraphProperties;\r\n runProps: RunProperties;\r\n}\r\n\r\nexport interface NumberingBulletPicture {\r\n id: string;\r\n referenceId: string;\r\n style: string;\r\n}\r\n\r\nexport function parseNumberingPart(elem: Element, xml: XmlParser): NumberingPartProperties {\r\n let result: NumberingPartProperties = {\r\n numberings: [],\r\n abstractNumberings: [],\r\n bulletPictures: []\r\n }\r\n \r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"num\":\r\n result.numberings.push(parseNumbering(e, xml));\r\n break;\r\n case \"abstractNum\":\r\n result.abstractNumberings.push(parseAbstractNumbering(e, xml));\r\n break;\r\n case \"numPicBullet\":\r\n result.bulletPictures.push(parseNumberingBulletPicture(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumbering(elem: Element, xml: XmlParser): Numbering {\r\n let result = <Numbering>{\r\n id: xml.attr(elem, 'numId'),\r\n overrides: []\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"abstractNumId\":\r\n result.abstractId = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlOverride\":\r\n result.overrides.push(parseNumberingLevelOverrride(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseAbstractNumbering(elem: Element, xml: XmlParser): AbstractNumbering {\r\n let result = <AbstractNumbering>{\r\n id: xml.attr(elem, 'abstractNumId'),\r\n levels: []\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"name\":\r\n result.name = xml.attr(e, \"val\");\r\n break;\r\n case \"multiLevelType\":\r\n result.multiLevelType = xml.attr(e, \"val\");\r\n break;\r\n case \"numStyleLink\":\r\n result.numberingStyleLink = xml.attr(e, \"val\");\r\n break;\r\n case \"styleLink\":\r\n result.styleLink = xml.attr(e, \"val\");\r\n break;\r\n case \"lvl\":\r\n result.levels.push(parseNumberingLevel(e, xml));\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingLevel(elem: Element, xml: XmlParser): NumberingLevel {\r\n let result = <NumberingLevel>{\r\n level: xml.intAttr(elem, 'ilvl')\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"start\":\r\n result.start = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlRestart\":\r\n result.restart = xml.intAttr(e, \"val\");\r\n break;\r\n case \"numFmt\":\r\n result.format = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlText\":\r\n result.text = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlJc\":\r\n result.justification = xml.attr(e, \"val\");\r\n break;\r\n case \"lvlPicBulletId\":\r\n result.bulletPictureId = xml.attr(e, \"val\");\r\n break;\r\n case \"pStyle\":\r\n result.paragraphStyle = xml.attr(e, \"val\");\r\n break;\r\n case \"pPr\":\r\n result.paragraphProps = parseParagraphProperties(e, xml);\r\n break;\r\n case \"rPr\":\r\n result.runProps = parseRunProperties(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingLevelOverrride(elem: Element, xml: XmlParser): NumberingLevelOverride {\r\n let result = <NumberingLevelOverride>{\r\n level: xml.intAttr(elem, 'ilvl')\r\n };\r\n\r\n for (let e of xml.elements(elem)) {\r\n switch (e.localName) {\r\n case \"startOverride\":\r\n result.start = xml.intAttr(e, \"val\");\r\n break;\r\n case \"lvl\":\r\n result.numberingLevel = parseNumberingLevel(e, xml);\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseNumberingBulletPicture(elem: Element, xml: XmlParser): NumberingBulletPicture {\r\n //TODO\r\n var pict = xml.element(elem, \"pict\");\r\n var shape = pict && xml.element(pict, \"shape\");\r\n var imagedata = shape && xml.element(shape, \"imagedata\");\r\n\r\n return imagedata ? {\r\n id: xml.attr(elem, \"numPicBulletId\"),\r\n referenceId: xml.attr(imagedata, \"id\"),\r\n style: xml.attr(shape, \"style\")\r\n } : null;\r\n}","import { Length, LengthUsage, LengthUsageType, convertLength, convertBoolean } from \"../document/common\";\r\n\r\nexport function parseXmlString(xmlString: string, trimXmlDeclaration: boolean = false): Document {\r\n if (trimXmlDeclaration)\r\n xmlString = xmlString.replace(/<[?].*[?]>/, \"\");\r\n \r\n const result = new DOMParser().parseFromString(xmlString, \"application/xml\"); \r\n const errorText = hasXmlParserError(result);\r\n\r\n if (errorText)\r\n throw new Error(errorText);\r\n\r\n return result;\r\n}\r\n\r\nfunction hasXmlParserError(doc: Document) {\r\n return doc.getElementsByTagName(\"parsererror\")[0]?.textContent;\r\n}\r\n\r\nexport function serializeXmlString(elem: Node): string {\r\n return new XMLSerializer().serializeToString(elem);\r\n}\r\n\r\nexport class XmlParser {\r\n elements(elem: Element, localName: string = null): Element[] {\r\n const result = [];\r\n\r\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\r\n let c = elem.childNodes.item(i);\r\n\r\n if (c.nodeType == 1 && (localName == null || (c as Element).localName == localName))\r\n result.push(c);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n element(elem: Element, localName: string): Element {\r\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\r\n let c = elem.childNodes.item(i);\r\n\r\n if (c.nodeType == 1 && (c as Element).localName == localName)\r\n return c as Element;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n elementAttr(elem: Element, localName: string, attrLocalName: string): string {\r\n var el = this.element(elem, localName);\r\n return el ? this.attr(el, attrLocalName) : undefined;\r\n }\r\n\r\n\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<string, string>;\r\n}\r\n\r\nexport interface DmlFontScheme {\r\n name: string;\r\n majorFont: DmlFormInfo,\r\n minorFont: DmlFormInfo\r\n}\r\n\r\nexport interface DmlFormInfo {\r\n latinTypeface: string;\r\n eaTypeface: string;\r\n csTypeface: string;\r\n}\r\n\r\nexport function parseTheme(elem: Element, xml: XmlParser) {\r\n var result = new DmlTheme();\r\n var themeElements = xml.element(elem, \"themeElements\");\r\n\r\n for (let el of xml.elements(themeElements)) {\r\n switch(el.localName) {\r\n case \"clrScheme\": result.colorScheme = parseColorScheme(el, xml); break;\r\n case \"fontScheme\": result.fontScheme = parseFontScheme(el, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseColorScheme(elem: Element, xml: XmlParser) {\r\n var result: DmlColorScheme = { \r\n name: xml.attr(elem, \"name\"),\r\n colors: {}\r\n };\r\n\r\n for (let el of xml.elements(elem)) {\r\n var srgbClr = xml.element(el, \"srgbClr\");\r\n var sysClr = xml.element(el, \"sysClr\");\r\n\r\n if (srgbClr) {\r\n result.colors[el.localName] = xml.attr(srgbClr, \"val\");\r\n }\r\n else if (sysClr) {\r\n result.colors[el.localName] = xml.attr(sysClr, \"lastClr\");\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseFontScheme(elem: Element, xml: XmlParser) {\r\n var result: DmlFontScheme = { \r\n name: xml.attr(elem, \"name\"),\r\n } as DmlFontScheme;\r\n\r\n for (let el of xml.elements(elem)) {\r\n switch (el.localName) {\r\n case \"majorFont\": result.majorFont = parseFontInfo(el, xml); break;\r\n case \"minorFont\": result.minorFont = parseFontInfo(el, xml); break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function parseFontInfo(elem: Element, xml: XmlParser): DmlFormInfo {\r\n return {\r\n latinTypeface: xml.elementAttr(elem, \"latin\", \"typeface\"),\r\n eaTypeface: xml.elementAttr(elem, \"ea\", \"typeface\"),\r\n csTypeface: xml.elementAttr(elem, \"cs\", \"typeface\"),\r\n };\r\n}","export function escapeClassName(className: string) {\r\n\treturn className?.replace(/[ .]+/g, '-').replace(/[&]+/g, 'and').toLowerCase();\r\n}\r\n\r\nexport function splitPath(path: string): [string, string] {\r\n let si = path.lastIndexOf('/') + 1;\r\n let folder = si == 0 ? \"\" : path.substring(0, si);\r\n let fileName = si == 0 ? path : path.substring(si);\r\n\r\n return [folder, fileName];\r\n}\r\n\r\nexport function resolvePath(path: string, base: string): string {\r\n try {\r\n const prefix = \"http://docx/\";\r\n const url = new URL(path, prefix + base).toString();\r\n return url.substring(prefix.length);\r\n } catch {\r\n return `${base}${path}`;\r\n }\r\n}\r\n\r\nexport function keyBy<T = any>(array: T[], by: (x: T) => any): Record<any, T> {\r\n return array.reduce((a, x) => {\r\n a[by(x)] = x;\r\n return a;\r\n }, {});\r\n}\r\n\r\nexport function blobToBase64(blob: Blob): any {\r\n\treturn new Promise((resolve, _) => {\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onloadend = () => resolve(reader.result);\r\n\t\treader.readAsDataURL(blob);\r\n\t});\r\n}\r\n\r\nexport function isObject(item) {\r\n return item && typeof item === 'object' && !Array.isArray(item);\r\n}\r\n\r\nexport function isString(item: unknown): item is string {\r\n return item && typeof item === 'string' || item instanceof String;\r\n}\r\n\r\nexport function mergeDeep(target, ...sources) {\r\n if (!sources.length) \r\n return target;\r\n \r\n const source = sources.shift();\r\n\r\n if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n const val = target[key] ?? (target[key] = {});\r\n mergeDeep(val, source[key]);\r\n } else {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n\r\n return mergeDeep(target, ...sources);\r\n}\r\n\r\nexport function parseCssRules(text: string): Record<string, string> {\r\n\tconst result: Record<string, string> = {};\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, string>): string {\r\n\treturn Object.entries(style).map((k, v) => `${k}: ${v}`).join(';');\r\n}\r\n\r\nexport function asArray<T>(val: T | T[]): T[] {\r\n\treturn Array.isArray(val) ? val : [val];\r\n}","import { convertLength, LengthUsage } from '../document/common';\r\nimport { DomType, OpenXmlElement } from '../document/dom';\r\nimport xml from '../parser/xml-parser';\r\nimport { formatCssRules, parseCssRules } from '../utils';\r\n\r\nexport class VmlElement implements OpenXmlElement {\r\n\ttype: DomType = DomType.VmlElement;\r\n\ttagName: string;\r\n\tcssStyleText?: string;\r\n\tattrs: Record<string, string> = {};\r\n\tchidren: VmlElement[] = [];\r\n\twrapType?: string;\r\n\timageHref?: {\r\n\t\tid: string,\r\n\t\ttitle: string\r\n\t}\r\n}\r\n\r\nexport function parseVmlElement(elem: Element): VmlElement {\r\n\tvar result = new VmlElement();\r\n\r\n\tswitch (elem.localName) {\r\n\t\tcase \"rect\":\r\n\t\t\tresult.tagName = \"rect\"; \r\n\t\t\tObject.assign(result.attrs, { width: '100%', height: '100%' });\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"oval\":\r\n\t\t\tresult.tagName = \"ellipse\"; \r\n\t\t\tObject.assign(result.attrs, { cx: \"50%\", cy: \"50%\", rx: \"50%\", ry: \"50%\" });\r\n\t\t\tbreak;\r\n\t\r\n\t\tcase \"line\":\r\n\t\t\tresult.tagName = \"line\"; \r\n\t\t\tbreak;\r\n\r\n\t\tcase \"shape\":\r\n\t\t\tresult.tagName = \"g\"; \r\n\t\t\tbreak;\r\n\t\t\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n\r\n\tfor (const at of xml.attrs(elem)) {\r\n\t\tswitch(at.localName) {\r\n\t\t\tcase \"style\": \r\n\t\t\t\tresult.cssStyleText = at.value;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"fillcolor\": \r\n\t\t\t\tresult.attrs.fill = at.value; \r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase \"from\":\r\n\t\t\t\tconst [x1, y1] = parsePoint(at.value);\r\n\t\t\t\tObject.assign(result.attrs, { x1, y1 });\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"to\":\r\n\t\t\t\tconst [x2, y2] = parsePoint(at.value);\r\n\t\t\t\tObject.assign(result.attrs, { x2, y2 });\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const el of xml.elements(elem)) {\r\n\t\tswitch (el.localName) {\r\n\t\t\tcase \"stroke\": \r\n\t\t\t\tObject.assign(result.attrs, parseStroke(el));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"fill\": \r\n\t\t\t\tObject.assign(result.attrs, parseFill(el));\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase \"imagedata\":\r\n\t\t\t\tresult.tagName = \"image\";\r\n\t\t\t\tObject.assign(result.attrs, { width: '100%', height: '100%' });\r\n\t\t\t\tresult.imageHref = {\r\n\t\t\t\t\tid: xml.attr(el, \"id\"),\r\n\t\t\t\t\ttitle: xml.attr(el, \"title\"),\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconst child = parseVmlElement(el);\r\n\t\t\t\tchild && result.chidren.push(child);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction parseStroke(el: Element): Record<string, string> {\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<string, string> {\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<string, Part> = {};\r\n\r\n\tdocumentPart: DocumentPart;\r\n\tfontTablePart: FontTablePart;\r\n\tnumberingPart: NumberingPart;\r\n\tstylesPart: StylesPart;\r\n\tfootnotesPart: FootnotesPart;\r\n\tendnotesPart: EndnotesPart;\r\n\tthemePart: ThemePart;\r\n\tcorePropsPart: CorePropsPart;\r\n\textendedPropsPart: ExtendedPropsPart;\r\n\tsettingsPart: SettingsPart;\r\n\r\n\tstatic load(blob, parser: DocumentParser, options: any): Promise<WordDocument> {\r\n\t\tvar d = new WordDocument();\r\n\r\n\t\td._options = options;\r\n\t\td._parser = parser;\r\n\r\n\t\treturn OpenXmlPackage.load(blob, options)\r\n\t\t\t.then(pkg => {\r\n\t\t\t\td._package = pkg;\r\n\r\n\t\t\t\treturn d._package.loadRelationships();\r\n\t\t\t}).then(rels => {\r\n\t\t\t\td.rels = rels;\r\n\r\n\t\t\t\tconst tasks = topLevelRels.map(rel => {\r\n\t\t\t\t\tconst r = rels.find(x => x.type === rel.type) ?? rel; //fallback \r\n\t\t\t\t\treturn d.loadRelationshipPart(r.target, r.type);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn Promise.all(tasks);\r\n\t\t\t}).then(() => d);\r\n\t}\r\n\r\n\tsave(type = \"blob\"): Promise<any> {\r\n\t\treturn this._package.save(type);\r\n\t}\r\n\r\n\tprivate loadRelationshipPart(path: string, type: string): Promise<Part> {\r\n\t\tif (this.partsMap[path])\r\n\t\t\treturn Promise.resolve(this.partsMap[path]);\r\n\r\n\t\tif (!this._package.get(path))\r\n\t\t\treturn Promise.resolve(null);\r\n\r\n\t\tlet part: Part = null;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase RelationshipTypes.OfficeDocument:\r\n\t\t\t\tthis.documentPart = part = new DocumentPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.FontTable:\r\n\t\t\t\tthis.fontTablePart = part = new FontTablePart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Numbering:\r\n\t\t\t\tthis.numberingPart = part = new NumberingPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Styles:\r\n\t\t\t\tthis.stylesPart = part = new StylesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Theme:\r\n\t\t\t\tthis.themePart = part = new ThemePart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Footnotes:\r\n\t\t\t\tthis.footnotesPart = part = new FootnotesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Endnotes:\r\n\t\t\t\tthis.endnotesPart = part = new EndnotesPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Footer:\r\n\t\t\t\tpart = new FooterPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.Header:\r\n\t\t\t\tpart = new HeaderPart(this._package, path, this._parser);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.CoreProperties:\r\n\t\t\t\tthis.corePropsPart = part = new CorePropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.ExtendedProperties:\r\n\t\t\t\tthis.extendedPropsPart = part = new ExtendedPropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase RelationshipTypes.CustomProperties:\r\n\t\t\t\tpart = new CustomPropsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\t\r\n\t\t\tcase RelationshipTypes.Settings:\r\n\t\t\t\tthis.settingsPart = part = new SettingsPart(this._package, path);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (part == null)\r\n\t\t\treturn Promise.resolve(null);\r\n\r\n\t\tthis.partsMap[path] = part;\r\n\t\tthis.parts.push(part);\r\n\r\n\t\treturn part.load().then(() => {\r\n\t\t\tif (part.rels == null || part.rels.length == 0)\r\n\t\t\t\treturn part;\r\n\r\n\t\t\tconst [folder] = splitPath(part.path);\r\n\t\t\tconst rels = part.rels.map(rel => {\r\n\t\t\t\treturn this.loadRelationshipPart(resolvePath(rel.target, folder), rel.type)\r\n\t\t\t});\r\n\r\n\t\t\treturn Promise.all(rels).then(() => part);\r\n\t\t});\r\n\t}\r\n\r\n\tloadDocumentImage(id: string, part?: Part): PromiseLike<string> {\r\n\t\treturn this.loadResource(part ?? this.documentPart, id, \"blob\")\r\n\t\t\t.then(x => this.blobToURL(x));\r\n\t}\r\n\r\n\tloadNumberingImage(id: string): PromiseLike<string> {\r\n\t\treturn this.loadResource(this.numberingPart, id, \"blob\")\r\n\t\t\t.then(x => this.blobToURL(x));\r\n\t}\r\n\r\n\tloadFont(id: string, key: string): PromiseLike<string> {\r\n\t\treturn this.loadResource(this.fontTablePart, id, \"uint8array\")\r\n\t\t\t.then(x => x ? this.blobToURL(new Blob([deobfuscate(x, key)])) : x);\r\n\t}\r\n\r\n\tprivate blobToURL(blob: Blob): string | PromiseLike<string> {\r\n\t\tif (!blob)\r\n\t\t\treturn null;\r\n\r\n\t\tif (this._options.useBase64URL) {\r\n\t\t\treturn blobToBase64(blob);\r\n\t\t}\r\n\r\n\t\treturn URL.createObjectURL(blob);\r\n\t}\r\n\r\n\tfindPartByRelId(id: string, basePart: Part = null) {\r\n\t\tvar rel = (basePart.rels ?? this.rels).find(r => r.id == id);\r\n\t\tconst folder = basePart ? splitPath(basePart.path)[0] : '';\r\n\t\treturn rel ? this.partsMap[resolvePath(rel.target, folder)] : null;\r\n\t}\r\n\r\n\tgetPathById(part: Part, id: string): string {\r\n\t\tconst rel = part.rels.find(x => x.id == id);\r\n\t\tconst [folder] = splitPath(part.path);\r\n\t\treturn rel ? resolvePath(rel.target, folder) : null;\r\n\t}\r\n\r\n\tprivate loadResource(part: Part, id: string, outputType: OutputType) {\r\n\t\tconst path = this.getPathById(part, id);\r\n\t\treturn path ? this._package.load(path, outputType) : Promise.resolve(null);\r\n\t}\r\n}\r\n\r\nexport function deobfuscate(data: Uint8Array, guidKey: string): Uint8Array {\r\n\tconst len = 16;\r\n\tconst trimmed = guidKey.replace(/{|}|-/g, \"\");\r\n\tconst numbers = new Array(len);\r\n\r\n\tfor (let i = 0; i < len; i++)\r\n\t\tnumbers[len - i - 1] = parseInt(trimmed.substr(i * 2, 2), 16);\r\n\r\n\tfor (let i = 0; i < 32; i++)\r\n\t\tdata[i] = data[i] ^ numbers[i % len]\r\n\r\n\treturn data;\r\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__626__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t345: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(667);\n"],"names":["root","factory","exports","module","require","define","amd","globalThis","__WEBPACK_EXTERNAL_MODULE__626__","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","id","toString","cssWithMappingToString","list","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","url","options","String","__esModule","default","test","slice","hash","needQuotes","replace","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","OpenXmlPackage","constructor","_zip","xmlParser","XmlParser","get","path","files","startsWith","substr","normalizePath","update","file","static","input","JSZip","loadAsync","then","zip","save","type","generateAsync","load","async","Promise","resolve","loadRelationships","relsPath","f","fn","splitPath","txt","parseRelationships","parseXmlDocument","firstElementChild","parseXmlString","trimXmlDeclaration","_package","all","rels","text","xmlDoc","keepOrigin","_xmlDocument","parseXml","serializeXmlString","RelationshipTypes","xml","elements","e","attr","target","targetMode","autos","shd","color","borderColor","highlight","supportedNamespaceURIs","mmlTagMap","DomType","MmlMath","MmlMathParagraph","MmlFraction","MmlNumerator","MmlDenominator","MmlRadical","MmlDegree","MmlBase","MmlSuperscript","MmlSubscript","MmlSuperArgument","MmlSubArgument","MmlDelimiter","MmlNary","ignoreWidth","debug","parseNotes","elemName","elemClass","result","el","node","noteType","children","parseBodyElements","parseDocumentFile","xbody","element","background","sectPr","Document","props","parseSectionProperties","cssStyle","parseBackground","elem","xmlUtil","colorAttr","localName","parseParagraph","parseTable","parseSdt","parseStylesFile","xstyles","foreach","n","parseStyle","parseDefaultStyles","name","basedOn","styles","c","rPr","values","parseDefaultProperties","pPr","isDefault","boolAttr","linked","next","aliases","split","paragraphProps","parseParagraphProperties","runProps","parseRunProperties","s","parseTableStyle","console","warn","selector","modificator","mod","parseNumberingFile","xnums","mapping","bullets","parseAbstractNumbering","forEach","x","parseNumberingPicBullet","numId","abstractNumId","elementAttr","pict","shape","imagedata","intAttr","src","style","parseNumberingLevel","level","pStyleName","pStyle","rStyle","suff","bullet","find","levelText","format","parser","sdtContent","parseInserted","parentParser","Inserted","parseDeleted","Deleted","Paragraph","parseRun","parseHyperlink","parseBookmarkStart","parseBookmarkEnd","parseMathElement","paragraph","parseParagraphProperty","styleName","className","classNameOfCnfStyle","parseFrame","parent","Hyperlink","anchor","relId","href","Run","checkAlternateContent","Text","textContent","DeletedText","SimpleField","instruction","lock","dirty","fieldRun","Instruction","ComplexField","charType","NoBreakHyphen","Break","break","Symbol","font","char","Tab","FootnoteReference","EndnoteReference","d","parseDrawing","parseVmlPicture","propsTag","run","MmlRun","parseMathProperies","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","start","right","end","before","after","line","lineRule","toFixed","output","knownColors","cb","childNodes","nodeType","Node","ELEMENT_NODE","attrName","defValue","autoColor","v","themeColor","Dxa","convertLength","Percent","Border","_","asTagName","a","b","hexAttr","trim","CorePropsPart","Part","parseCoreProps","title","description","subject","creator","keywords","language","lastModifiedBy","revision","parseInt","CustomPropsPart","parseCustomProps","firstChild","formatId","nodeName","value","ExtendedPropsPart","parseExtendedProps","safeParseToInt","template","pages","words","characters","application","lines","paragraphs","company","appVersion","BookmarkStart","colFirst","colLast","BookmarkEnd","parseBorder","size","Point","frame","shadow","top","bottom","ns","wordml","drawingml","picture","compatibility","math","mul","unit","LineHeight","VmlEmu","usage","defaultValue","fontSize","DocumentPart","pkg","super","_documentParser","body","parseCommonProperty","tabs","parseTabs","sectionProps","numbering","parseNumbering","lineSpacing","parseLineSpacing","textAlignment","keepLines","keepNext","pageBreakBefore","outlineLevel","position","leader","parseRunProperty","parseColumns","numberOfColumns","space","separator","equalWidth","parsePageNumber","chapSep","chapStyle","parseFooterHeaderReference","SectionType","section","pageSize","height","orientation","pageMargins","header","footer","gutter","headerRefs","footerRefs","titlePage","pageBorders","parseBorders","pageNumber","defaultOptions","ignoreHeight","ignoreFonts","breakPages","experimental","inWrapper","ignoreLastRenderedPageBreak","renderHeaders","renderFooters","renderFootnotes","renderEndnotes","useBase64URL","useMathMLPolyfill","renderChanges","userOptions","ops","WordDocument","DocumentParser","bodyContainer","styleContainer","renderer","HtmlRenderer","window","document","doc","render","FontTablePart","parseFonts","embedFontTypeMap","embedRegular","embedBold","embedItalic","embedBoldItalic","embedFontRefs","family","altName","parseEmbedFontRef","key","Header","Footer","BaseHeaderFooterPart","rootElement","createRootElement","WmlHeader","WmlFooter","createElement","tagName","createElementNS","createSvgElement","Object","assign","appendChildren","removeAllElements","innerHTML","appendChild","isString","createTextNode","createStyleElement","cssText","appendComment","comment","createComment","htmlDocument","styleMap","currentPart","tableVerticalMerges","currentVerticalMerge","tableCellPositions","currentCellPosition","footnoteMap","endnoteMap","currentEndnoteIds","usedHederFooterParts","currentTabs","tabsTimeout","rootSelector","renderDefaultStyle","MathMLElement","themePart","renderTheme","stylesPart","processStyles","renderStyles","numberingPart","prodessNumberings","domNumberings","renderNumbering","footnotesPart","keyBy","notes","endnotesPart","settingsPart","defaultTabSize","settings","defaultTabStop","fontTablePart","renderFontTable","sectionElements","renderSections","documentPart","renderWrapper","refreshTabStops","variables","fontScheme","theme","majorFont","latinTypeface","minorFont","colorScheme","entries","colors","styleToString","fontsPart","ref","loadFont","fontData","cssValues","processStyleName","escapeClassName","stylesMap","baseStyle","mergeDeep","baseValues","styleValues","copyStyleProperties","cssName","numberings","num","findStyle","processElement","processTable","r","attrs","getOwnPropertyNames","hasOwnProperty","createSection","paddingLeft","paddingRight","paddingTop","paddingBottom","minHeight","columnCount","columnGap","columnRule","sections","splitBySection","prevProps","l","currentFootnoteIds","sectProps","sectionElement","renderStyleValues","renderHeaderFooter","contentElement","renderElements","renderNotes","refs","page","firstOfSection","into","part","findPartByRelId","isPageBreakElement","current","p","pBreakIndex","rBreakIndex","findIndex","bind","breakRun","splitRun","newParagraph","runChildren","newRun","currentSectProps","styleText","rootCounters","numberingClass","listStyleType","valiable","toLowerCase","loadNumberingImage","counter","numberingCounter","levelTextToContent","numFormatToCssValue","defautStyles","subStyles","linkedStyle","subStyle","noteIds","notesMap","renderElement","renderParagraph","renderBookmarkStart","renderRun","renderTable","renderTableRow","renderTableCell","renderHyperlink","renderDrawing","renderImage","renderText","renderDeletedText","renderTab","renderSymbol","renderBreak","renderContainer","Footnote","Endnote","renderFootnoteReference","renderEndnoteReference","renderVmlPicture","VmlElement","renderVmlElement","renderContainerNS","xmlns","renderMmlRadical","renderMmlDelimiter","renderMmlRun","renderMmlNary","renderInserted","renderDeleted","renderChildren","elems","flatMap","renderClass","renderCommonProperties","classList","add","renderRunProperties","rel","it","display","textIndent","loadDocumentImage","fontFamily","tabSpan","tabStopClass","stops","findParent","wrapper","renderTableColumns","pop","colElem","rowSpan","colSpan","container","setAttribute","cssStyleText","imageHref","setTimeout","bb","getBBox","Math","ceil","y","base","degree","grouped","sup","sub","supElem","asArray","subElem","charElem","ouput","lvl","selectors","numformat","substring","clearTimeout","pixelToPoint","computePixelToPoint","tab","updateTabStop","defaultTab","lengthToPoint","parseFloat","temp","offsetWidth","removeChild","closest","ebb","getBoundingClientRect","pbb","pcs","getComputedStyle","tabStops","t","sort","lastTab","pWidthPt","marginLeft","pOffset","Array","from","querySelectorAll","nextIdx","indexOf","range","createRange","setStart","setEndBefore","setEndAfter","nextBB","textDecoration","wordSpacing","textDecorationStyle","WmlBaseNote","BaseNotePart","WmlFootnote","WmlEndnote","NumberingPart","parseNumberingPart","overrides","abstractId","parseNumberingLevelOverrride","levels","multiLevelType","numberingStyleLink","styleLink","restart","justification","bulletPictureId","paragraphStyle","numberingLevel","parseNumberingBulletPicture","referenceId","abstractNumberings","bulletPictures","xmlString","DOMParser","parseFromString","errorText","getElementsByTagName","Error","XMLSerializer","serializeToString","attrLocalName","attributes","floatAttr","convertBoolean","globalXmlParser","SettingsPart","parseSettings","parseNoteProperties","defaultNoteIds","nummeringFormat","footnoteProps","endnoteProps","autoHyphenation","StylesPart","ThemePart","parseTheme","DmlTheme","parseColorScheme","srgbClr","sysClr","parseFontScheme","parseFontInfo","eaTypeface","csTypeface","themeElements","isObject","isArray","si","lastIndexOf","prefix","array","by","reduce","blob","reader","FileReader","onloadend","readAsDataURL","shift","rule","chidren","parseStroke","parsePoint","cx","cy","rx","ry","at","fill","x1","y1","x2","y2","topLevelRels","OfficeDocument","ExtendedProperties","CoreProperties","CustomProperties","parts","partsMap","_options","_parser","tasks","loadRelationshipPart","FontTable","Numbering","Styles","Theme","Footnotes","FootnotesPart","Endnotes","EndnotesPart","FooterPart","HeaderPart","corePropsPart","extendedPropsPart","Settings","folder","resolvePath","loadResource","blobToURL","Blob","deobfuscate","blobToBase64","createObjectURL","basePart","getPathById","outputType","guidKey","trimmed","numbers","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","getter","definition","o","defineProperty","enumerable","obj","prop","prototype","call","toStringTag","baseURI","self","location"],"sourceRoot":""}