@hualinge/relay-web 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +31 -0
- package/dist/assets/AgentsPage-2u2kFBCH.js +68 -0
- package/dist/assets/AgentsPage-2u2kFBCH.js.map +1 -0
- package/dist/assets/AgentsPage-BGbbVmeL.css +1 -0
- package/dist/assets/Alert-D88Fk6to.js +2 -0
- package/dist/assets/Alert-D88Fk6to.js.map +1 -0
- package/dist/assets/AppModal-BYZTSuch.js +2 -0
- package/dist/assets/AppModal-BYZTSuch.js.map +1 -0
- package/dist/assets/CenteredLoadingState-DHor-9vF.js +2 -0
- package/dist/assets/CenteredLoadingState-DHor-9vF.js.map +1 -0
- package/dist/assets/ChannelsPage-CbI0kqkd.js +2 -0
- package/dist/assets/ChannelsPage-CbI0kqkd.js.map +1 -0
- package/dist/assets/EmptyDataState-6mNx2Xhl.js +2 -0
- package/dist/assets/EmptyDataState-6mNx2Xhl.js.map +1 -0
- package/dist/assets/HelpPrompt-BPzDcC8F.js +2 -0
- package/dist/assets/HelpPrompt-BPzDcC8F.js.map +1 -0
- package/dist/assets/HomePage-t78sDDUj.js +2 -0
- package/dist/assets/HomePage-t78sDDUj.js.map +1 -0
- package/dist/assets/InspirationPage-BTqLpcHY.js +3 -0
- package/dist/assets/InspirationPage-BTqLpcHY.js.map +1 -0
- package/dist/assets/ModelsPage-YF0gpUxy.js +2 -0
- package/dist/assets/ModelsPage-YF0gpUxy.js.map +1 -0
- package/dist/assets/NameInitialIcon-DP-6_HQY.js +7 -0
- package/dist/assets/NameInitialIcon-DP-6_HQY.js.map +1 -0
- package/dist/assets/NoSearchResultsState-BiiYdZ_Z.js +2 -0
- package/dist/assets/NoSearchResultsState-BiiYdZ_Z.js.map +1 -0
- package/dist/assets/OverflowTooltip-CE5PjAb-.js +2 -0
- package/dist/assets/OverflowTooltip-CE5PjAb-.js.map +1 -0
- package/dist/assets/PasswordField-DmzjtnCg.js +2 -0
- package/dist/assets/PasswordField-DmzjtnCg.js.map +1 -0
- package/dist/assets/RefreshButton-BzYzeo5A.js +2 -0
- package/dist/assets/RefreshButton-BzYzeo5A.js.map +1 -0
- package/dist/assets/RightContentHeader-DoNDQ9Lo.js +3 -0
- package/dist/assets/RightContentHeader-DoNDQ9Lo.js.map +1 -0
- package/dist/assets/SchedulePage-CfW6lZVI.js +2 -0
- package/dist/assets/SchedulePage-CfW6lZVI.js.map +1 -0
- package/dist/assets/SearchInput-tux8xXH1.js +2 -0
- package/dist/assets/SearchInput-tux8xXH1.js.map +1 -0
- package/dist/assets/SkillAvatar-DwGvsY4f.js +2 -0
- package/dist/assets/SkillAvatar-DwGvsY4f.js.map +1 -0
- package/dist/assets/SkillsPage-ppqwKMvj.js +2 -0
- package/dist/assets/SkillsPage-ppqwKMvj.js.map +1 -0
- package/dist/assets/SkillsTab-c_As1DIr.css +1 -0
- package/dist/assets/SkillsTab-kY7MNdxy.js +2 -0
- package/dist/assets/SkillsTab-kY7MNdxy.js.map +1 -0
- package/dist/assets/Tab-FE0F2EQP.js +2 -0
- package/dist/assets/Tab-FE0F2EQP.js.map +1 -0
- package/dist/assets/ThreadPage-B0jElW5R.js +53 -0
- package/dist/assets/ThreadPage-B0jElW5R.js.map +1 -0
- package/dist/assets/UploadSkillModal-DHZL12vm.js +8 -0
- package/dist/assets/UploadSkillModal-DHZL12vm.js.map +1 -0
- package/dist/assets/XlsxDocumentPreview-BY-ht09K.js +5 -0
- package/dist/assets/XlsxDocumentPreview-BY-ht09K.js.map +1 -0
- package/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +2 -0
- package/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js.map +1 -0
- package/dist/assets/chat-input-options-CpkOtPgQ.js +2 -0
- package/dist/assets/chat-input-options-CpkOtPgQ.js.map +1 -0
- package/dist/assets/docx-preview-zfB-orwa.js +28 -0
- package/dist/assets/docx-preview-zfB-orwa.js.map +1 -0
- package/dist/assets/exceljs.min-BY7KKJsM.js +58 -0
- package/dist/assets/exceljs.min-BY7KKJsM.js.map +1 -0
- package/dist/assets/helpers-CCilgpNy.js +2 -0
- package/dist/assets/helpers-CCilgpNy.js.map +1 -0
- package/dist/assets/hub-agent-editor.client-2DmCRGuY.js +2 -0
- package/dist/assets/hub-agent-editor.client-2DmCRGuY.js.map +1 -0
- package/dist/assets/hub-agent-editor.payload-D4sgJRSH.js +4 -0
- package/dist/assets/hub-agent-editor.payload-D4sgJRSH.js.map +1 -0
- package/dist/assets/hub-tag-editor-BBdd-aHK.js +2 -0
- package/dist/assets/hub-tag-editor-BBdd-aHK.js.map +1 -0
- package/dist/assets/index-Bed0I5IL.css +1 -0
- package/dist/assets/index-Bxf2_cvh.js +2 -0
- package/dist/assets/index-Bxf2_cvh.js.map +1 -0
- package/dist/assets/index-Cb4fQgom.js +103 -0
- package/dist/assets/index-Cb4fQgom.js.map +1 -0
- package/dist/assets/index-DQ2vVjmV.js +30 -0
- package/dist/assets/index-DQ2vVjmV.js.map +1 -0
- package/dist/assets/index-UBJEdbMO.js +2 -0
- package/dist/assets/index-UBJEdbMO.js.map +1 -0
- package/dist/assets/jszip.min-DPdj3o0t.js +13 -0
- package/dist/assets/jszip.min-DPdj3o0t.js.map +1 -0
- package/dist/assets/quick-actions-DzZE-zyP.js +2 -0
- package/dist/assets/quick-actions-DzZE-zyP.js.map +1 -0
- package/dist/assets/skill-options-cache-D1BJGTCU.js +2 -0
- package/dist/assets/skill-options-cache-D1BJGTCU.js.map +1 -0
- package/dist/assets/status-helpers-BILdm2MI.js +2 -0
- package/dist/assets/status-helpers-BILdm2MI.js.map +1 -0
- package/dist/assets/thread-title-Cerb2mHa.js +2 -0
- package/dist/assets/thread-title-Cerb2mHa.js.map +1 -0
- package/dist/assets/thread-utils-Ct3yp4R3.js +2 -0
- package/dist/assets/thread-utils-Ct3yp4R3.js.map +1 -0
- package/dist/assets/useAgentData-D-k9cXfg.js +2 -0
- package/dist/assets/useAgentData-D-k9cXfg.js.map +1 -0
- package/dist/assets/useEscapeKey-CEQ6-8GR.js +2 -0
- package/dist/assets/useEscapeKey-CEQ6-8GR.js.map +1 -0
- package/dist/assets/useExpertCatalog-BZdw1CYs.js +2 -0
- package/dist/assets/useExpertCatalog-BZdw1CYs.js.map +1 -0
- package/dist/assets/usePromptBlocks-5sz8Qh51.js +2 -0
- package/dist/assets/usePromptBlocks-5sz8Qh51.js.map +1 -0
- package/dist/assets/useSocket-YigidotN.css +1 -0
- package/dist/assets/useSocket-y3-zWhVL.js +11 -0
- package/dist/assets/useSocket-y3-zWhVL.js.map +1 -0
- package/dist/assets/utils--_pbLpCq.js +2 -0
- package/dist/assets/utils--_pbLpCq.js.map +1 -0
- package/dist/assets/vad-web-C_R267y1.js +2 -0
- package/dist/assets/vad-web-C_R267y1.js.map +1 -0
- package/dist/avatars/agent-avatar-1.png +0 -0
- package/dist/avatars/agent-avatar-2.png +0 -0
- package/dist/avatars/agent-avatar-3.png +0 -0
- package/dist/avatars/agent-avatar-4.png +0 -0
- package/dist/avatars/agent-avatar-5.png +0 -0
- package/dist/avatars/agent-avatar-6.png +0 -0
- package/dist/avatars/agent-avatar-7.png +0 -0
- package/dist/avatars/agent-avatar-8.png +0 -0
- package/dist/avatars/agent-avatar-9.png +0 -0
- package/dist/avatars/agentteams.png +0 -0
- package/dist/avatars/antig-opus.png +0 -0
- package/dist/avatars/antigravity.png +0 -0
- package/dist/avatars/assistant.svg +17 -0
- package/dist/avatars/codex-kawaii.png +0 -0
- package/dist/avatars/codex.png +0 -0
- package/dist/avatars/codex_box.png +0 -0
- package/dist/avatars/codex_iquid.png +0 -0
- package/dist/avatars/dare.png +0 -0
- package/dist/avatars/gemini-kawaii.png +0 -0
- package/dist/avatars/gemini.png +0 -0
- package/dist/avatars/gemini25.png +0 -0
- package/dist/avatars/gpt52.png +0 -0
- package/dist/avatars/jiuwenclaw.png +0 -0
- package/dist/avatars/office.svg +17 -0
- package/dist/avatars/opencode.png +0 -0
- package/dist/avatars/opus-45.png +0 -0
- package/dist/avatars/opus-kawaii.png +0 -0
- package/dist/avatars/opus.png +0 -0
- package/dist/avatars/sonnet.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/icons/arrow-left.svg +3 -0
- package/dist/icons/arrow-right.svg +3 -0
- package/dist/icons/attach.svg +9 -0
- package/dist/icons/chart/dislike.svg +3 -0
- package/dist/icons/chart/disliked.svg +3 -0
- package/dist/icons/chart/folder.svg +15 -0
- package/dist/icons/chart/home-loading.webp +0 -0
- package/dist/icons/chart/like.svg +3 -0
- package/dist/icons/chart/liked.svg +5 -0
- package/dist/icons/chart/loading.svg +26 -0
- package/dist/icons/chart/success.svg +7 -0
- package/dist/icons/check-line.svg +3 -0
- package/dist/icons/chevron-left.svg +3 -0
- package/dist/icons/chevron-right.svg +3 -0
- package/dist/icons/collapse.svg +14 -0
- package/dist/icons/common-delete.svg +4 -0
- package/dist/icons/common-folder.svg +4 -0
- package/dist/icons/copy.svg +4 -0
- package/dist/icons/cross-line.svg +4 -0
- package/dist/icons/data-analysis.svg +7 -0
- package/dist/icons/data-visualization.svg +10 -0
- package/dist/icons/deep-research.svg +4 -0
- package/dist/icons/document-processing.svg +5 -0
- package/dist/icons/edit.svg +4 -0
- package/dist/icons/expand.svg +6 -0
- package/dist/icons/expert-debate.svg +4 -0
- package/dist/icons/eye.svg +4 -0
- package/dist/icons/favicon.svg +7 -0
- package/dist/icons/file-docx.svg +60 -0
- package/dist/icons/file-folder.svg +4 -0
- package/dist/icons/file-gitignore.svg +35 -0
- package/dist/icons/file-html.svg +6 -0
- package/dist/icons/file-ini.svg +63 -0
- package/dist/icons/file-json.svg +4 -0
- package/dist/icons/file-md.svg +68 -0
- package/dist/icons/file-py.svg +4 -0
- package/dist/icons/file-sh.svg +7 -0
- package/dist/icons/file-txt.svg +37 -0
- package/dist/icons/file-zip.svg +21 -0
- package/dist/icons/file.svg +4 -0
- package/dist/icons/files-csv.svg +14 -0
- package/dist/icons/files-docx.svg +10 -0
- package/dist/icons/files-pdf.svg +14 -0
- package/dist/icons/files-ppt.svg +14 -0
- package/dist/icons/files-txt.svg +16 -0
- package/dist/icons/files-xlsx.svg +14 -0
- package/dist/icons/financial-services.svg +8 -0
- package/dist/icons/flie-html.svg +60 -0
- package/dist/icons/guided-mode.svg +9 -0
- package/dist/icons/icon-192x192.png +0 -0
- package/dist/icons/icon-512x512.png +0 -0
- package/dist/icons/icon-arrow-down.svg +4 -0
- package/dist/icons/icon-arrow-up.svg +4 -0
- package/dist/icons/icon-clear-all.svg +3 -0
- package/dist/icons/icon-close.svg +4 -0
- package/dist/icons/icon-code.svg +38 -0
- package/dist/icons/icon-drag-file.svg +26 -0
- package/dist/icons/icon-help.svg +4 -0
- package/dist/icons/icon-md.svg +53 -0
- package/dist/icons/icon-refresh.svg +4 -0
- package/dist/icons/icon-toggle.svg +6 -0
- package/dist/icons/icon-top.svg +7 -0
- package/dist/icons/icon-upload.svg +5 -0
- package/dist/icons/information.svg +6 -0
- package/dist/icons/inspiration/icon-excel.svg +14 -0
- package/dist/icons/inspiration/icon-inspiration.svg +5 -0
- package/dist/icons/inspiration/icon-markdown.svg +12 -0
- package/dist/icons/inspiration/icon-word.svg +10 -0
- package/dist/icons/link.svg +6 -0
- package/dist/icons/lock.svg +4 -0
- package/dist/icons/menu/agents.svg +39 -0
- package/dist/icons/menu/channels.svg +4 -0
- package/dist/icons/menu/icon-inspiration.svg +5 -0
- package/dist/icons/menu/models.svg +4 -0
- package/dist/icons/menu/new-chat.svg +59 -0
- package/dist/icons/menu/schedule.svg +4 -0
- package/dist/icons/menu/skills.svg +4 -0
- package/dist/icons/message-error.svg +6 -0
- package/dist/icons/message-prompt.svg +9 -0
- package/dist/icons/message-success.svg +6 -0
- package/dist/icons/message-warn.svg +8 -0
- package/dist/icons/more-trigger.svg +4 -0
- package/dist/icons/nss/1.svg +14 -0
- package/dist/icons/nss/2.svg +14 -0
- package/dist/icons/nss/3.svg +14 -0
- package/dist/icons/outline.svg +6 -0
- package/dist/icons/query_the_optical_power_border.svg +99 -0
- package/dist/icons/schedule.svg +4 -0
- package/dist/icons/settings-feedback/feedback-bug.svg +20 -0
- package/dist/icons/settings-feedback/feedback-file.svg +4 -0
- package/dist/icons/settings-feedback/feedback-idea.svg +14 -0
- package/dist/icons/settings-feedback/settings-gear.svg +4 -0
- package/dist/icons/settings-feedback/settings-link.svg +4 -0
- package/dist/icons/settings-feedback/settings-memory.svg +7 -0
- package/dist/icons/settings-feedback/settings-privacy.svg +37 -0
- package/dist/icons/settings-feedback/settings-search.svg +2 -0
- package/dist/icons/slides.svg +4 -0
- package/dist/icons/status/info-error.svg +9 -0
- package/dist/icons/style-template.svg +11 -0
- package/dist/icons/tool-error.svg +4 -0
- package/dist/icons/userprofile/help.svg +5 -0
- package/dist/icons/userprofile/keep-awake.svg +4 -0
- package/dist/icons/userprofile/question.svg +4 -0
- package/dist/icons/userprofile/security.svg +7 -0
- package/dist/icons/userprofile/style-template.svg +11 -0
- package/dist/icons/userprofile/theme.svg +14 -0
- package/dist/icons/userprofile/usage.svg +4 -0
- package/dist/icons/userprofile/version.svg +85 -0
- package/dist/icons/video-generation.svg +4 -0
- package/dist/images/OfficeClaw.svg +21 -0
- package/dist/images/add.svg +4 -0
- package/dist/images/agent-management-icons/agent-check.svg +23 -0
- package/dist/images/agent-management-icons/agent-close.svg +4 -0
- package/dist/images/agent-management-icons/agent-collab.svg +4 -0
- package/dist/images/agent-management-icons/agent-delete.svg +18 -0
- package/dist/images/agent-management-icons/agent-edit.svg +18 -0
- package/dist/images/agent-management-icons/agent-more.svg +4 -0
- package/dist/images/agent-management-icons/agent-persona.svg +4 -0
- package/dist/images/agent-management-icons/agent-random-avatar.svg +39 -0
- package/dist/images/agent-management-icons/agent-refresh.svg +4 -0
- package/dist/images/agent-management-icons/agent-skills.svg +4 -0
- package/dist/images/agent-management-icons/agent-template.svg +12 -0
- package/dist/images/agent-management-icons/anchor-current.svg +5 -0
- package/dist/images/agent-management-icons/anchor-other.svg +4 -0
- package/dist/images/chat-empty-agent.svg +12 -0
- package/dist/images/chat-empty-im.svg +14 -0
- package/dist/images/connectors/dingtalk.png +0 -0
- package/dist/images/connectors/dingtalk.svg +18 -0
- package/dist/images/connectors/feishu.png +0 -0
- package/dist/images/connectors/feishu.svg +12 -0
- package/dist/images/connectors/imessage.png +0 -0
- package/dist/images/connectors/wecom-agent.png +0 -0
- package/dist/images/connectors/wecom-bot.png +0 -0
- package/dist/images/connectors/weixin.png +0 -0
- package/dist/images/connectors/weixin.svg +19 -0
- package/dist/images/connectors/xiaoyi.png +0 -0
- package/dist/images/connectors/xiaoyi.svg +12 -0
- package/dist/images/create-agent-random-avatar.svg +39 -0
- package/dist/images/deepseek.svg +1 -0
- package/dist/images/default-ppt-template.png +0 -0
- package/dist/images/file-browser-tree/code.svg +60 -0
- package/dist/images/file-browser-tree/gitignore.svg +35 -0
- package/dist/images/file-browser-tree/image.svg +12 -0
- package/dist/images/file-browser-tree/markdown.svg +68 -0
- package/dist/images/file-browser-tree/pdf.svg +4 -0
- package/dist/images/file-browser-tree/ppt.svg +4 -0
- package/dist/images/file-browser-tree/public-file.svg +37 -0
- package/dist/images/file-browser-tree/word.svg +60 -0
- package/dist/images/file-browser-tree/xlsx.svg +4 -0
- package/dist/images/html-preview-toolbar/copy.svg +4 -0
- package/dist/images/html-preview-toolbar/open-external.svg +4 -0
- package/dist/images/html-preview-toolbar/refresh.svg +4 -0
- package/dist/images/information.svg +4 -0
- package/dist/images/inspiration/blue-bg.png +0 -0
- package/dist/images/inspiration/doc-example.png +0 -0
- package/dist/images/inspiration/excel-example.png +0 -0
- package/dist/images/inspiration/green-bg.png +0 -0
- package/dist/images/inspiration/markdown-example.png +0 -0
- package/dist/images/inspiration/orange-bg.png +0 -0
- package/dist/images/inspiration/purple-bg.png +0 -0
- package/dist/images/inspiration/task-bg.png +0 -0
- package/dist/images/inspiration-bg.png +0 -0
- package/dist/images/inspiration-products/default.svg +11 -0
- package/dist/images/invitation-background-4x.png +0 -0
- package/dist/images/kimi.svg +1 -0
- package/dist/images/link-blue.svg +4 -0
- package/dist/images/link.svg +4 -0
- package/dist/images/lobster.svg +118 -0
- package/dist/images/login1.svg +93 -0
- package/dist/images/login2.svg +80 -0
- package/dist/images/login3.svg +44 -0
- package/dist/images/login4.svg +18 -0
- package/dist/images/mode-default-icon.svg +22 -0
- package/dist/images/no-data.svg +26 -0
- package/dist/images/no-search-results.svg +25 -0
- package/dist/images/ppt-preview/placeholder-main.webp +0 -0
- package/dist/images/ppt-preview/placeholder-thumb.webp +0 -0
- package/dist/images/ppt-template/dark-tech.png +0 -0
- package/dist/images/ppt-template/huawei.png +0 -0
- package/dist/images/ppt-template/light-tech.png +0 -0
- package/dist/images/ppt-template/paper-humanities.png +0 -0
- package/dist/images/ppt-template/template-default.png +0 -0
- package/dist/images/ppt-template/template-error.png +0 -0
- package/dist/images/ppt-template/template-generate-bg.svg +9639 -0
- package/dist/images/qwen.svg +1 -0
- package/dist/images/task-list/empty-state.svg +4 -0
- package/dist/images/task-list.svg +1 -0
- package/dist/images/vendor.svg +4 -0
- package/dist/images/version-bg.svg +85 -0
- package/dist/images/version.svg +9 -0
- package/dist/images/zhipu.svg +1 -0
- package/dist/index.html +74 -0
- package/dist/loading-point-style.webp +0 -0
- package/dist/loading-small.webp +0 -0
- package/dist/manifest.json +25 -0
- package/package.json +126 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-preview-zfB-orwa.js","sources":["../../../../node_modules/docx-preview/dist/docx-preview.mjs"],"sourcesContent":["/*\n * @license\n * docx-preview <https://github.com/VolodymyrBaydalka/docxjs>\n * Released under Apache License 2.0 <https://github.com/VolodymyrBaydalka/docxjs/blob/master/LICENSE>\n * Copyright Volodymyr Baydalka\n */\nimport JSZip from 'jszip';\n\nvar RelationshipTypes;\n(function (RelationshipTypes) {\n RelationshipTypes[\"OfficeDocument\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\";\n RelationshipTypes[\"FontTable\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable\";\n RelationshipTypes[\"Image\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\";\n RelationshipTypes[\"Numbering\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering\";\n RelationshipTypes[\"Styles\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\";\n RelationshipTypes[\"StylesWithEffects\"] = \"http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects\";\n RelationshipTypes[\"Theme\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\";\n RelationshipTypes[\"Settings\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings\";\n RelationshipTypes[\"WebSettings\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings\";\n RelationshipTypes[\"Hyperlink\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\";\n RelationshipTypes[\"Footnotes\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes\";\n RelationshipTypes[\"Endnotes\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes\";\n RelationshipTypes[\"Footer\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer\";\n RelationshipTypes[\"Header\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header\";\n RelationshipTypes[\"ExtendedProperties\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\";\n RelationshipTypes[\"CoreProperties\"] = \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\";\n RelationshipTypes[\"CustomProperties\"] = \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties\";\n RelationshipTypes[\"Comments\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\";\n RelationshipTypes[\"CommentsExtended\"] = \"http://schemas.microsoft.com/office/2011/relationships/commentsExtended\";\n RelationshipTypes[\"AltChunk\"] = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\";\n})(RelationshipTypes || (RelationshipTypes = {}));\nfunction parseRelationships(root, xml) {\n return xml.elements(root).map(e => ({\n id: xml.attr(e, \"Id\"),\n type: xml.attr(e, \"Type\"),\n target: xml.attr(e, \"Target\"),\n targetMode: xml.attr(e, \"TargetMode\")\n }));\n}\n\nfunction escapeClassName(className) {\n return className?.replace(/[ .]+/g, '-').replace(/[&]+/g, 'and').toLowerCase();\n}\nfunction encloseFontFamily(fontFamily) {\n return /^[^\"'].*\\s.*[^\"']$/.test(fontFamily) ? `'${fontFamily}'` : fontFamily;\n}\nfunction splitPath(path) {\n let si = path.lastIndexOf('/') + 1;\n let folder = si == 0 ? \"\" : path.substring(0, si);\n let fileName = si == 0 ? path : path.substring(si);\n return [folder, fileName];\n}\nfunction resolvePath(path, base) {\n try {\n const prefix = \"http://docx/\";\n const url = new URL(path, prefix + base).toString();\n return url.substring(prefix.length);\n }\n catch {\n return `${base}${path}`;\n }\n}\nfunction keyBy(array, by) {\n return array.reduce((a, x) => {\n a[by(x)] = x;\n return a;\n }, {});\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = () => reject();\n reader.readAsDataURL(blob);\n });\n}\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\nfunction isString(item) {\n return typeof item === 'string' || item instanceof String;\n}\nfunction mergeDeep(target, ...sources) {\n if (!sources.length)\n return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n const val = target[key] ?? (target[key] = {});\n mergeDeep(val, source[key]);\n }\n else {\n target[key] = source[key];\n }\n }\n }\n return mergeDeep(target, ...sources);\n}\nfunction asArray(val) {\n return Array.isArray(val) ? val : [val];\n}\nfunction clamp(val, min, max) {\n return min > val ? min : (max < val ? max : val);\n}\n\nconst ns$1 = {\n wordml: \"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"};\nconst LengthUsage = {\n Dxa: { mul: 0.05, unit: \"pt\" },\n Emu: { mul: 1 / 12700, unit: \"pt\" },\n FontSize: { mul: 0.5, unit: \"pt\" },\n Border: { mul: 0.125, unit: \"pt\", min: 0.25, max: 12 },\n Point: { mul: 1, unit: \"pt\" },\n Percent: { mul: 0.02, unit: \"%\" }};\nfunction convertLength(val, usage = LengthUsage.Dxa) {\n if (val == null || /.+(p[xt]|[%])$/.test(val)) {\n return val;\n }\n var num = parseInt(val) * usage.mul;\n if (usage.min && usage.max)\n num = clamp(num, usage.min, usage.max);\n return `${num.toFixed(2)}${usage.unit}`;\n}\nfunction convertBoolean(v, defaultValue = false) {\n switch (v) {\n case \"1\": return true;\n case \"0\": return false;\n case \"on\": return true;\n case \"off\": return false;\n case \"true\": return true;\n case \"false\": return false;\n default: return defaultValue;\n }\n}\nfunction parseCommonProperty(elem, props, xml) {\n if (elem.namespaceURI != ns$1.wordml)\n return false;\n switch (elem.localName) {\n case \"color\":\n props.color = xml.attr(elem, \"val\");\n break;\n case \"sz\":\n props.fontSize = xml.lengthAttr(elem, \"val\", LengthUsage.FontSize);\n break;\n default:\n return false;\n }\n return true;\n}\n\nfunction parseXmlString(xmlString, trimXmlDeclaration = false) {\n if (trimXmlDeclaration)\n xmlString = xmlString.replace(/<[?].*[?]>/, \"\");\n xmlString = removeUTF8BOM(xmlString);\n const result = new DOMParser().parseFromString(xmlString, \"application/xml\");\n const errorText = hasXmlParserError(result);\n if (errorText)\n throw new Error(errorText);\n return result;\n}\nfunction hasXmlParserError(doc) {\n return doc.getElementsByTagName(\"parsererror\")[0]?.textContent;\n}\nfunction removeUTF8BOM(data) {\n return data.charCodeAt(0) === 0xFEFF ? data.substring(1) : data;\n}\nfunction serializeXmlString(elem) {\n return new XMLSerializer().serializeToString(elem);\n}\nclass XmlParser {\n elements(elem, localName = null) {\n const result = [];\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\n let c = elem.childNodes.item(i);\n if (c.nodeType == Node.ELEMENT_NODE && (localName == null || c.localName == localName))\n result.push(c);\n }\n return result;\n }\n element(elem, localName) {\n for (let i = 0, l = elem.childNodes.length; i < l; i++) {\n let c = elem.childNodes.item(i);\n if (c.nodeType == 1 && c.localName == localName)\n return c;\n }\n return null;\n }\n elementAttr(elem, localName, attrLocalName) {\n var el = this.element(elem, localName);\n return el ? this.attr(el, attrLocalName) : undefined;\n }\n attrs(elem) {\n return Array.from(elem.attributes);\n }\n attr(elem, localName) {\n for (let i = 0, l = elem.attributes.length; i < l; i++) {\n let a = elem.attributes.item(i);\n if (a.localName == localName)\n return a.value;\n }\n return null;\n }\n intAttr(node, attrName, defaultValue = null) {\n var val = this.attr(node, attrName);\n return val ? parseInt(val) : defaultValue;\n }\n hexAttr(node, attrName, defaultValue = null) {\n var val = this.attr(node, attrName);\n return val ? parseInt(val, 16) : defaultValue;\n }\n floatAttr(node, attrName, defaultValue = null) {\n var val = this.attr(node, attrName);\n return val ? parseFloat(val) : defaultValue;\n }\n boolAttr(node, attrName, defaultValue = null) {\n return convertBoolean(this.attr(node, attrName), defaultValue);\n }\n lengthAttr(node, attrName, usage = LengthUsage.Dxa) {\n return convertLength(this.attr(node, attrName), usage);\n }\n}\nconst globalXmlParser = new XmlParser();\n\nclass Part {\n constructor(_package, path) {\n this._package = _package;\n this.path = path;\n }\n async load() {\n this.rels = await this._package.loadRelationships(this.path);\n const xmlText = await this._package.load(this.path);\n const xmlDoc = this._package.parseXmlDocument(xmlText);\n if (this._package.options.keepOrigin) {\n this._xmlDocument = xmlDoc;\n }\n this.parseXml(xmlDoc.firstElementChild);\n }\n save() {\n this._package.update(this.path, serializeXmlString(this._xmlDocument));\n }\n parseXml(root) {\n }\n}\n\nconst embedFontTypeMap = {\n embedRegular: 'regular',\n embedBold: 'bold',\n embedItalic: 'italic',\n embedBoldItalic: 'boldItalic',\n};\nfunction parseFonts(root, xml) {\n return xml.elements(root).map(el => parseFont(el, xml));\n}\nfunction parseFont(elem, xml) {\n let result = {\n name: xml.attr(elem, \"name\"),\n embedFontRefs: []\n };\n for (let el of xml.elements(elem)) {\n switch (el.localName) {\n case \"family\":\n result.family = xml.attr(el, \"val\");\n break;\n case \"altName\":\n result.altName = xml.attr(el, \"val\");\n break;\n case \"embedRegular\":\n case \"embedBold\":\n case \"embedItalic\":\n case \"embedBoldItalic\":\n result.embedFontRefs.push(parseEmbedFontRef(el, xml));\n break;\n }\n }\n return result;\n}\nfunction parseEmbedFontRef(elem, xml) {\n return {\n id: xml.attr(elem, \"id\"),\n key: xml.attr(elem, \"fontKey\"),\n type: embedFontTypeMap[elem.localName]\n };\n}\n\nclass FontTablePart extends Part {\n parseXml(root) {\n this.fonts = parseFonts(root, this._package.xmlParser);\n }\n}\n\nclass OpenXmlPackage {\n constructor(_zip, options) {\n this._zip = _zip;\n this.options = options;\n this.xmlParser = new XmlParser();\n }\n get(path) {\n const p = normalizePath(path);\n return this._zip.files[p] ?? this._zip.files[p.replace(/\\//g, '\\\\')];\n }\n update(path, content) {\n this._zip.file(path, content);\n }\n static async load(input, options) {\n const zip = await JSZip.loadAsync(input);\n return new OpenXmlPackage(zip, options);\n }\n save(type = \"blob\") {\n return this._zip.generateAsync({ type });\n }\n load(path, type = \"string\") {\n return this.get(path)?.async(type) ?? Promise.resolve(null);\n }\n async loadRelationships(path = null) {\n let relsPath = `_rels/.rels`;\n if (path != null) {\n const [f, fn] = splitPath(path);\n relsPath = `${f}_rels/${fn}.rels`;\n }\n const txt = await this.load(relsPath);\n return txt ? parseRelationships(this.parseXmlDocument(txt).firstElementChild, this.xmlParser) : null;\n }\n parseXmlDocument(txt) {\n return parseXmlString(txt, this.options.trimXmlDeclaration);\n }\n}\nfunction normalizePath(path) {\n return path.startsWith('/') ? path.substr(1) : path;\n}\n\nclass DocumentPart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n parseXml(root) {\n this.body = this._documentParser.parseDocumentFile(root);\n }\n}\n\nfunction parseBorder(elem, xml) {\n return {\n type: xml.attr(elem, \"val\"),\n color: xml.attr(elem, \"color\"),\n size: xml.lengthAttr(elem, \"sz\", LengthUsage.Border),\n offset: xml.lengthAttr(elem, \"space\", LengthUsage.Point),\n frame: xml.boolAttr(elem, 'frame'),\n shadow: xml.boolAttr(elem, 'shadow')\n };\n}\nfunction parseBorders(elem, xml) {\n var result = {};\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"left\":\n result.left = parseBorder(e, xml);\n break;\n case \"top\":\n result.top = parseBorder(e, xml);\n break;\n case \"right\":\n result.right = parseBorder(e, xml);\n break;\n case \"bottom\":\n result.bottom = parseBorder(e, xml);\n break;\n }\n }\n return result;\n}\n\nvar SectionType;\n(function (SectionType) {\n SectionType[\"Continuous\"] = \"continuous\";\n SectionType[\"NextPage\"] = \"nextPage\";\n SectionType[\"NextColumn\"] = \"nextColumn\";\n SectionType[\"EvenPage\"] = \"evenPage\";\n SectionType[\"OddPage\"] = \"oddPage\";\n})(SectionType || (SectionType = {}));\nfunction parseSectionProperties(elem, xml = globalXmlParser) {\n var section = {};\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"pgSz\":\n section.pageSize = {\n width: xml.lengthAttr(e, \"w\"),\n height: xml.lengthAttr(e, \"h\"),\n orientation: xml.attr(e, \"orient\")\n };\n break;\n case \"type\":\n section.type = xml.attr(e, \"val\");\n break;\n case \"pgMar\":\n section.pageMargins = {\n left: xml.lengthAttr(e, \"left\"),\n right: xml.lengthAttr(e, \"right\"),\n top: xml.lengthAttr(e, \"top\"),\n bottom: xml.lengthAttr(e, \"bottom\"),\n header: xml.lengthAttr(e, \"header\"),\n footer: xml.lengthAttr(e, \"footer\"),\n gutter: xml.lengthAttr(e, \"gutter\"),\n };\n break;\n case \"cols\":\n section.columns = parseColumns(e, xml);\n break;\n case \"headerReference\":\n (section.headerRefs ?? (section.headerRefs = [])).push(parseFooterHeaderReference(e, xml));\n break;\n case \"footerReference\":\n (section.footerRefs ?? (section.footerRefs = [])).push(parseFooterHeaderReference(e, xml));\n break;\n case \"titlePg\":\n section.titlePage = xml.boolAttr(e, \"val\", true);\n break;\n case \"pgBorders\":\n section.pageBorders = parseBorders(e, xml);\n break;\n case \"pgNumType\":\n section.pageNumber = parsePageNumber(e, xml);\n break;\n }\n }\n return section;\n}\nfunction parseColumns(elem, xml) {\n return {\n numberOfColumns: xml.intAttr(elem, \"num\"),\n space: xml.lengthAttr(elem, \"space\"),\n separator: xml.boolAttr(elem, \"sep\"),\n equalWidth: xml.boolAttr(elem, \"equalWidth\", true),\n columns: xml.elements(elem, \"col\")\n .map(e => ({\n width: xml.lengthAttr(e, \"w\"),\n space: xml.lengthAttr(e, \"space\")\n }))\n };\n}\nfunction parsePageNumber(elem, xml) {\n return {\n chapSep: xml.attr(elem, \"chapSep\"),\n chapStyle: xml.attr(elem, \"chapStyle\"),\n format: xml.attr(elem, \"fmt\"),\n start: xml.intAttr(elem, \"start\")\n };\n}\nfunction parseFooterHeaderReference(elem, xml) {\n return {\n id: xml.attr(elem, \"id\"),\n type: xml.attr(elem, \"type\"),\n };\n}\n\nfunction parseLineSpacing(elem, xml) {\n return {\n before: xml.lengthAttr(elem, \"before\"),\n after: xml.lengthAttr(elem, \"after\"),\n line: xml.intAttr(elem, \"line\"),\n lineRule: xml.attr(elem, \"lineRule\")\n };\n}\n\nfunction parseRunProperties(elem, xml) {\n let result = {};\n for (let el of xml.elements(elem)) {\n parseRunProperty(el, result, xml);\n }\n return result;\n}\nfunction parseRunProperty(elem, props, xml) {\n if (parseCommonProperty(elem, props, xml))\n return true;\n return false;\n}\n\nfunction parseParagraphProperties(elem, xml) {\n let result = {};\n for (let el of xml.elements(elem)) {\n parseParagraphProperty(el, result, xml);\n }\n return result;\n}\nfunction parseParagraphProperty(elem, props, xml) {\n if (elem.namespaceURI != ns$1.wordml)\n return false;\n if (parseCommonProperty(elem, props, xml))\n return true;\n switch (elem.localName) {\n case \"tabs\":\n props.tabs = parseTabs(elem, xml);\n break;\n case \"sectPr\":\n props.sectionProps = parseSectionProperties(elem, xml);\n break;\n case \"numPr\":\n props.numbering = parseNumbering$1(elem, xml);\n break;\n case \"spacing\":\n props.lineSpacing = parseLineSpacing(elem, xml);\n return false;\n case \"textAlignment\":\n props.textAlignment = xml.attr(elem, \"val\");\n return false;\n case \"keepLines\":\n props.keepLines = xml.boolAttr(elem, \"val\", true);\n break;\n case \"keepNext\":\n props.keepNext = xml.boolAttr(elem, \"val\", true);\n break;\n case \"pageBreakBefore\":\n props.pageBreakBefore = xml.boolAttr(elem, \"val\", true);\n break;\n case \"outlineLvl\":\n props.outlineLevel = xml.intAttr(elem, \"val\");\n break;\n case \"pStyle\":\n props.styleName = xml.attr(elem, \"val\");\n break;\n case \"rPr\":\n props.runProps = parseRunProperties(elem, xml);\n break;\n default:\n return false;\n }\n return true;\n}\nfunction parseTabs(elem, xml) {\n return xml.elements(elem, \"tab\")\n .map(e => ({\n position: xml.lengthAttr(e, \"pos\"),\n leader: xml.attr(e, \"leader\"),\n style: xml.attr(e, \"val\")\n }));\n}\nfunction parseNumbering$1(elem, xml) {\n var result = {};\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"numId\":\n result.id = xml.attr(e, \"val\");\n break;\n case \"ilvl\":\n result.level = xml.intAttr(e, \"val\");\n break;\n }\n }\n return result;\n}\n\nfunction parseNumberingPart(elem, xml) {\n let result = {\n numberings: [],\n abstractNumberings: [],\n bulletPictures: []\n };\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"num\":\n result.numberings.push(parseNumbering(e, xml));\n break;\n case \"abstractNum\":\n result.abstractNumberings.push(parseAbstractNumbering(e, xml));\n break;\n case \"numPicBullet\":\n result.bulletPictures.push(parseNumberingBulletPicture(e, xml));\n break;\n }\n }\n return result;\n}\nfunction parseNumbering(elem, xml) {\n let result = {\n id: xml.attr(elem, 'numId'),\n overrides: []\n };\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"abstractNumId\":\n result.abstractId = xml.attr(e, \"val\");\n break;\n case \"lvlOverride\":\n result.overrides.push(parseNumberingLevelOverrride(e, xml));\n break;\n }\n }\n return result;\n}\nfunction parseAbstractNumbering(elem, xml) {\n let result = {\n id: xml.attr(elem, 'abstractNumId'),\n levels: []\n };\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"name\":\n result.name = xml.attr(e, \"val\");\n break;\n case \"multiLevelType\":\n result.multiLevelType = xml.attr(e, \"val\");\n break;\n case \"numStyleLink\":\n result.numberingStyleLink = xml.attr(e, \"val\");\n break;\n case \"styleLink\":\n result.styleLink = xml.attr(e, \"val\");\n break;\n case \"lvl\":\n result.levels.push(parseNumberingLevel(e, xml));\n break;\n }\n }\n return result;\n}\nfunction parseNumberingLevel(elem, xml) {\n let result = {\n level: xml.intAttr(elem, 'ilvl')\n };\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"start\":\n result.start = xml.attr(e, \"val\");\n break;\n case \"lvlRestart\":\n result.restart = xml.intAttr(e, \"val\");\n break;\n case \"numFmt\":\n result.format = xml.attr(e, \"val\");\n break;\n case \"lvlText\":\n result.text = xml.attr(e, \"val\");\n break;\n case \"lvlJc\":\n result.justification = xml.attr(e, \"val\");\n break;\n case \"lvlPicBulletId\":\n result.bulletPictureId = xml.attr(e, \"val\");\n break;\n case \"pStyle\":\n result.paragraphStyle = xml.attr(e, \"val\");\n break;\n case \"pPr\":\n result.paragraphProps = parseParagraphProperties(e, xml);\n break;\n case \"rPr\":\n result.runProps = parseRunProperties(e, xml);\n break;\n }\n }\n return result;\n}\nfunction parseNumberingLevelOverrride(elem, xml) {\n let result = {\n level: xml.intAttr(elem, 'ilvl')\n };\n for (let e of xml.elements(elem)) {\n switch (e.localName) {\n case \"startOverride\":\n result.start = xml.intAttr(e, \"val\");\n break;\n case \"lvl\":\n result.numberingLevel = parseNumberingLevel(e, xml);\n break;\n }\n }\n return result;\n}\nfunction parseNumberingBulletPicture(elem, xml) {\n var pict = xml.element(elem, \"pict\");\n var shape = pict && xml.element(pict, \"shape\");\n var imagedata = shape && xml.element(shape, \"imagedata\");\n return imagedata ? {\n id: xml.attr(elem, \"numPicBulletId\"),\n referenceId: xml.attr(imagedata, \"id\"),\n style: xml.attr(shape, \"style\")\n } : null;\n}\n\nclass NumberingPart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n parseXml(root) {\n Object.assign(this, parseNumberingPart(root, this._package.xmlParser));\n this.domNumberings = this._documentParser.parseNumberingFile(root);\n }\n}\n\nclass StylesPart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n parseXml(root) {\n this.styles = this._documentParser.parseStylesFile(root);\n }\n}\n\nvar DomType;\n(function (DomType) {\n DomType[\"Document\"] = \"document\";\n DomType[\"Paragraph\"] = \"paragraph\";\n DomType[\"Run\"] = \"run\";\n DomType[\"Break\"] = \"break\";\n DomType[\"NoBreakHyphen\"] = \"noBreakHyphen\";\n DomType[\"Table\"] = \"table\";\n DomType[\"Row\"] = \"row\";\n DomType[\"Cell\"] = \"cell\";\n DomType[\"Hyperlink\"] = \"hyperlink\";\n DomType[\"SmartTag\"] = \"smartTag\";\n DomType[\"Drawing\"] = \"drawing\";\n DomType[\"Image\"] = \"image\";\n DomType[\"Text\"] = \"text\";\n DomType[\"Tab\"] = \"tab\";\n DomType[\"Symbol\"] = \"symbol\";\n DomType[\"BookmarkStart\"] = \"bookmarkStart\";\n DomType[\"BookmarkEnd\"] = \"bookmarkEnd\";\n DomType[\"Footer\"] = \"footer\";\n DomType[\"Header\"] = \"header\";\n DomType[\"FootnoteReference\"] = \"footnoteReference\";\n DomType[\"EndnoteReference\"] = \"endnoteReference\";\n DomType[\"Footnote\"] = \"footnote\";\n DomType[\"Endnote\"] = \"endnote\";\n DomType[\"SimpleField\"] = \"simpleField\";\n DomType[\"ComplexField\"] = \"complexField\";\n DomType[\"Instruction\"] = \"instruction\";\n DomType[\"VmlPicture\"] = \"vmlPicture\";\n DomType[\"MmlMath\"] = \"mmlMath\";\n DomType[\"MmlMathParagraph\"] = \"mmlMathParagraph\";\n DomType[\"MmlFraction\"] = \"mmlFraction\";\n DomType[\"MmlFunction\"] = \"mmlFunction\";\n DomType[\"MmlFunctionName\"] = \"mmlFunctionName\";\n DomType[\"MmlNumerator\"] = \"mmlNumerator\";\n DomType[\"MmlDenominator\"] = \"mmlDenominator\";\n DomType[\"MmlRadical\"] = \"mmlRadical\";\n DomType[\"MmlBase\"] = \"mmlBase\";\n DomType[\"MmlDegree\"] = \"mmlDegree\";\n DomType[\"MmlSuperscript\"] = \"mmlSuperscript\";\n DomType[\"MmlSubscript\"] = \"mmlSubscript\";\n DomType[\"MmlPreSubSuper\"] = \"mmlPreSubSuper\";\n DomType[\"MmlSubArgument\"] = \"mmlSubArgument\";\n DomType[\"MmlSuperArgument\"] = \"mmlSuperArgument\";\n DomType[\"MmlNary\"] = \"mmlNary\";\n DomType[\"MmlDelimiter\"] = \"mmlDelimiter\";\n DomType[\"MmlRun\"] = \"mmlRun\";\n DomType[\"MmlEquationArray\"] = \"mmlEquationArray\";\n DomType[\"MmlLimit\"] = \"mmlLimit\";\n DomType[\"MmlLimitLower\"] = \"mmlLimitLower\";\n DomType[\"MmlMatrix\"] = \"mmlMatrix\";\n DomType[\"MmlMatrixRow\"] = \"mmlMatrixRow\";\n DomType[\"MmlBox\"] = \"mmlBox\";\n DomType[\"MmlBar\"] = \"mmlBar\";\n DomType[\"MmlGroupChar\"] = \"mmlGroupChar\";\n DomType[\"VmlElement\"] = \"vmlElement\";\n DomType[\"Inserted\"] = \"inserted\";\n DomType[\"Deleted\"] = \"deleted\";\n DomType[\"DeletedText\"] = \"deletedText\";\n DomType[\"Comment\"] = \"comment\";\n DomType[\"CommentReference\"] = \"commentReference\";\n DomType[\"CommentRangeStart\"] = \"commentRangeStart\";\n DomType[\"CommentRangeEnd\"] = \"commentRangeEnd\";\n DomType[\"AltChunk\"] = \"altChunk\";\n})(DomType || (DomType = {}));\nclass OpenXmlElementBase {\n constructor() {\n this.children = [];\n this.cssStyle = {};\n }\n}\n\nclass WmlHeader extends OpenXmlElementBase {\n constructor() {\n super(...arguments);\n this.type = DomType.Header;\n }\n}\nclass WmlFooter extends OpenXmlElementBase {\n constructor() {\n super(...arguments);\n this.type = DomType.Footer;\n }\n}\n\nclass BaseHeaderFooterPart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n parseXml(root) {\n this.rootElement = this.createRootElement();\n this.rootElement.children = this._documentParser.parseBodyElements(root);\n }\n}\nclass HeaderPart extends BaseHeaderFooterPart {\n createRootElement() {\n return new WmlHeader();\n }\n}\nclass FooterPart extends BaseHeaderFooterPart {\n createRootElement() {\n return new WmlFooter();\n }\n}\n\nfunction parseExtendedProps(root, xmlParser) {\n const result = {};\n for (let el of xmlParser.elements(root)) {\n switch (el.localName) {\n case \"Template\":\n result.template = el.textContent;\n break;\n case \"Pages\":\n result.pages = safeParseToInt(el.textContent);\n break;\n case \"Words\":\n result.words = safeParseToInt(el.textContent);\n break;\n case \"Characters\":\n result.characters = safeParseToInt(el.textContent);\n break;\n case \"Application\":\n result.application = el.textContent;\n break;\n case \"Lines\":\n result.lines = safeParseToInt(el.textContent);\n break;\n case \"Paragraphs\":\n result.paragraphs = safeParseToInt(el.textContent);\n break;\n case \"Company\":\n result.company = el.textContent;\n break;\n case \"AppVersion\":\n result.appVersion = el.textContent;\n break;\n }\n }\n return result;\n}\nfunction safeParseToInt(value) {\n if (typeof value === 'undefined')\n return;\n return parseInt(value);\n}\n\nclass ExtendedPropsPart extends Part {\n parseXml(root) {\n this.props = parseExtendedProps(root, this._package.xmlParser);\n }\n}\n\nfunction parseCoreProps(root, xmlParser) {\n const result = {};\n for (let el of xmlParser.elements(root)) {\n switch (el.localName) {\n case \"title\":\n result.title = el.textContent;\n break;\n case \"description\":\n result.description = el.textContent;\n break;\n case \"subject\":\n result.subject = el.textContent;\n break;\n case \"creator\":\n result.creator = el.textContent;\n break;\n case \"keywords\":\n result.keywords = el.textContent;\n break;\n case \"language\":\n result.language = el.textContent;\n break;\n case \"lastModifiedBy\":\n result.lastModifiedBy = el.textContent;\n break;\n case \"revision\":\n el.textContent && (result.revision = parseInt(el.textContent));\n break;\n }\n }\n return result;\n}\n\nclass CorePropsPart extends Part {\n parseXml(root) {\n this.props = parseCoreProps(root, this._package.xmlParser);\n }\n}\n\nclass DmlTheme {\n}\nfunction parseTheme(elem, xml) {\n var result = new DmlTheme();\n var themeElements = xml.element(elem, \"themeElements\");\n for (let el of xml.elements(themeElements)) {\n switch (el.localName) {\n case \"clrScheme\":\n result.colorScheme = parseColorScheme(el, xml);\n break;\n case \"fontScheme\":\n result.fontScheme = parseFontScheme(el, xml);\n break;\n }\n }\n return result;\n}\nfunction parseColorScheme(elem, xml) {\n var result = {\n name: xml.attr(elem, \"name\"),\n colors: {}\n };\n for (let el of xml.elements(elem)) {\n var srgbClr = xml.element(el, \"srgbClr\");\n var sysClr = xml.element(el, \"sysClr\");\n if (srgbClr) {\n result.colors[el.localName] = xml.attr(srgbClr, \"val\");\n }\n else if (sysClr) {\n result.colors[el.localName] = xml.attr(sysClr, \"lastClr\");\n }\n }\n return result;\n}\nfunction parseFontScheme(elem, xml) {\n var result = {\n name: xml.attr(elem, \"name\"),\n };\n for (let el of xml.elements(elem)) {\n switch (el.localName) {\n case \"majorFont\":\n result.majorFont = parseFontInfo(el, xml);\n break;\n case \"minorFont\":\n result.minorFont = parseFontInfo(el, xml);\n break;\n }\n }\n return result;\n}\nfunction parseFontInfo(elem, xml) {\n return {\n latinTypeface: xml.elementAttr(elem, \"latin\", \"typeface\"),\n eaTypeface: xml.elementAttr(elem, \"ea\", \"typeface\"),\n csTypeface: xml.elementAttr(elem, \"cs\", \"typeface\"),\n };\n}\n\nclass ThemePart extends Part {\n constructor(pkg, path) {\n super(pkg, path);\n }\n parseXml(root) {\n this.theme = parseTheme(root, this._package.xmlParser);\n }\n}\n\nclass WmlBaseNote {\n}\nclass WmlFootnote extends WmlBaseNote {\n constructor() {\n super(...arguments);\n this.type = DomType.Footnote;\n }\n}\nclass WmlEndnote extends WmlBaseNote {\n constructor() {\n super(...arguments);\n this.type = DomType.Endnote;\n }\n}\n\nclass BaseNotePart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n}\nclass FootnotesPart extends BaseNotePart {\n constructor(pkg, path, parser) {\n super(pkg, path, parser);\n }\n parseXml(root) {\n this.notes = this._documentParser.parseNotes(root, \"footnote\", WmlFootnote);\n }\n}\nclass EndnotesPart extends BaseNotePart {\n constructor(pkg, path, parser) {\n super(pkg, path, parser);\n }\n parseXml(root) {\n this.notes = this._documentParser.parseNotes(root, \"endnote\", WmlEndnote);\n }\n}\n\nfunction parseSettings(elem, xml) {\n var result = {};\n for (let el of xml.elements(elem)) {\n switch (el.localName) {\n case \"defaultTabStop\":\n result.defaultTabStop = xml.lengthAttr(el, \"val\");\n break;\n case \"footnotePr\":\n result.footnoteProps = parseNoteProperties(el, xml);\n break;\n case \"endnotePr\":\n result.endnoteProps = parseNoteProperties(el, xml);\n break;\n case \"autoHyphenation\":\n result.autoHyphenation = xml.boolAttr(el, \"val\");\n break;\n }\n }\n return result;\n}\nfunction parseNoteProperties(elem, xml) {\n var result = {\n defaultNoteIds: []\n };\n for (let el of xml.elements(elem)) {\n switch (el.localName) {\n case \"numFmt\":\n result.nummeringFormat = xml.attr(el, \"val\");\n break;\n case \"footnote\":\n case \"endnote\":\n result.defaultNoteIds.push(xml.attr(el, \"id\"));\n break;\n }\n }\n return result;\n}\n\nclass SettingsPart extends Part {\n constructor(pkg, path) {\n super(pkg, path);\n }\n parseXml(root) {\n this.settings = parseSettings(root, this._package.xmlParser);\n }\n}\n\nfunction parseCustomProps(root, xml) {\n return xml.elements(root, \"property\").map(e => {\n const firstChild = e.firstChild;\n return {\n formatId: xml.attr(e, \"fmtid\"),\n name: xml.attr(e, \"name\"),\n type: firstChild.nodeName,\n value: firstChild.textContent\n };\n });\n}\n\nclass CustomPropsPart extends Part {\n parseXml(root) {\n this.props = parseCustomProps(root, this._package.xmlParser);\n }\n}\n\nclass CommentsPart extends Part {\n constructor(pkg, path, parser) {\n super(pkg, path);\n this._documentParser = parser;\n }\n parseXml(root) {\n this.comments = this._documentParser.parseComments(root);\n this.commentMap = keyBy(this.comments, x => x.id);\n }\n}\n\nclass CommentsExtendedPart extends Part {\n constructor(pkg, path) {\n super(pkg, path);\n this.comments = [];\n }\n parseXml(root) {\n const xml = this._package.xmlParser;\n for (let el of xml.elements(root, \"commentEx\")) {\n this.comments.push({\n paraId: xml.attr(el, 'paraId'),\n paraIdParent: xml.attr(el, 'paraIdParent'),\n done: xml.boolAttr(el, 'done')\n });\n }\n this.commentMap = keyBy(this.comments, x => x.paraId);\n }\n}\n\nconst topLevelRels = [\n { type: RelationshipTypes.OfficeDocument, target: \"word/document.xml\" },\n { type: RelationshipTypes.ExtendedProperties, target: \"docProps/app.xml\" },\n { type: RelationshipTypes.CoreProperties, target: \"docProps/core.xml\" },\n { type: RelationshipTypes.CustomProperties, target: \"docProps/custom.xml\" },\n];\nclass WordDocument {\n constructor() {\n this.parts = [];\n this.partsMap = {};\n }\n static async load(blob, parser, options) {\n var d = new WordDocument();\n d._options = options;\n d._parser = parser;\n d._package = await OpenXmlPackage.load(blob, options);\n d.rels = await d._package.loadRelationships();\n await Promise.all(topLevelRels.map(rel => {\n const r = d.rels.find(x => x.type === rel.type) ?? rel;\n return d.loadRelationshipPart(r.target, r.type);\n }));\n return d;\n }\n save(type = \"blob\") {\n return this._package.save(type);\n }\n async loadRelationshipPart(path, type) {\n if (this.partsMap[path])\n return this.partsMap[path];\n if (!this._package.get(path))\n return null;\n let part = null;\n switch (type) {\n case RelationshipTypes.OfficeDocument:\n this.documentPart = part = new DocumentPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.FontTable:\n this.fontTablePart = part = new FontTablePart(this._package, path);\n break;\n case RelationshipTypes.Numbering:\n this.numberingPart = part = new NumberingPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.Styles:\n this.stylesPart = part = new StylesPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.Theme:\n this.themePart = part = new ThemePart(this._package, path);\n break;\n case RelationshipTypes.Footnotes:\n this.footnotesPart = part = new FootnotesPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.Endnotes:\n this.endnotesPart = part = new EndnotesPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.Footer:\n part = new FooterPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.Header:\n part = new HeaderPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.CoreProperties:\n this.corePropsPart = part = new CorePropsPart(this._package, path);\n break;\n case RelationshipTypes.ExtendedProperties:\n this.extendedPropsPart = part = new ExtendedPropsPart(this._package, path);\n break;\n case RelationshipTypes.CustomProperties:\n part = new CustomPropsPart(this._package, path);\n break;\n case RelationshipTypes.Settings:\n this.settingsPart = part = new SettingsPart(this._package, path);\n break;\n case RelationshipTypes.Comments:\n this.commentsPart = part = new CommentsPart(this._package, path, this._parser);\n break;\n case RelationshipTypes.CommentsExtended:\n this.commentsExtendedPart = part = new CommentsExtendedPart(this._package, path);\n break;\n }\n if (part == null)\n return Promise.resolve(null);\n this.partsMap[path] = part;\n this.parts.push(part);\n await part.load();\n if (part.rels?.length > 0) {\n const [folder] = splitPath(part.path);\n await Promise.all(part.rels.map(rel => this.loadRelationshipPart(resolvePath(rel.target, folder), rel.type)));\n }\n return part;\n }\n async loadDocumentImage(id, part) {\n const x = await this.loadResource(part ?? this.documentPart, id, \"blob\");\n return this.blobToURL(x);\n }\n async loadNumberingImage(id) {\n const x = await this.loadResource(this.numberingPart, id, \"blob\");\n return this.blobToURL(x);\n }\n async loadFont(id, key) {\n const x = await this.loadResource(this.fontTablePart, id, \"uint8array\");\n return x ? this.blobToURL(new Blob([deobfuscate(x, key)])) : x;\n }\n async loadAltChunk(id, part) {\n return await this.loadResource(part ?? this.documentPart, id, \"string\");\n }\n blobToURL(blob) {\n if (!blob)\n return null;\n if (this._options.useBase64URL) {\n return blobToBase64(blob);\n }\n return URL.createObjectURL(blob);\n }\n findPartByRelId(id, basePart = null) {\n var rel = (basePart.rels ?? this.rels).find(r => r.id == id);\n const folder = basePart ? splitPath(basePart.path)[0] : '';\n return rel ? this.partsMap[resolvePath(rel.target, folder)] : null;\n }\n getPathById(part, id) {\n const rel = part.rels.find(x => x.id == id);\n const [folder] = splitPath(part.path);\n return rel ? resolvePath(rel.target, folder) : null;\n }\n loadResource(part, id, outputType) {\n const path = this.getPathById(part, id);\n return path ? this._package.load(path, outputType) : Promise.resolve(null);\n }\n}\nfunction deobfuscate(data, guidKey) {\n const len = 16;\n const trimmed = guidKey.replace(/{|}|-/g, \"\");\n const numbers = new Array(len);\n for (let i = 0; i < len; i++)\n numbers[len - i - 1] = parseInt(trimmed.substring(i * 2, i * 2 + 2), 16);\n for (let i = 0; i < 32; i++)\n data[i] = data[i] ^ numbers[i % len];\n return data;\n}\n\nfunction parseBookmarkStart(elem, xml) {\n return {\n type: DomType.BookmarkStart,\n id: xml.attr(elem, \"id\"),\n name: xml.attr(elem, \"name\"),\n colFirst: xml.intAttr(elem, \"colFirst\"),\n colLast: xml.intAttr(elem, \"colLast\")\n };\n}\nfunction parseBookmarkEnd(elem, xml) {\n return {\n type: DomType.BookmarkEnd,\n id: xml.attr(elem, \"id\")\n };\n}\n\nclass VmlElement extends OpenXmlElementBase {\n constructor() {\n super(...arguments);\n this.type = DomType.VmlElement;\n this.attrs = {};\n }\n}\nfunction parseVmlElement(elem, parser) {\n var result = new VmlElement();\n switch (elem.localName) {\n case \"rect\":\n result.tagName = \"rect\";\n Object.assign(result.attrs, { width: '100%', height: '100%' });\n break;\n case \"oval\":\n result.tagName = \"ellipse\";\n Object.assign(result.attrs, { cx: \"50%\", cy: \"50%\", rx: \"50%\", ry: \"50%\" });\n break;\n case \"line\":\n result.tagName = \"line\";\n break;\n case \"shape\":\n result.tagName = \"g\";\n break;\n case \"textbox\":\n result.tagName = \"foreignObject\";\n Object.assign(result.attrs, { width: '100%', height: '100%' });\n break;\n default:\n return null;\n }\n for (const at of globalXmlParser.attrs(elem)) {\n switch (at.localName) {\n case \"style\":\n result.cssStyleText = at.value;\n break;\n case \"fillcolor\":\n result.attrs.fill = at.value;\n break;\n case \"from\":\n const [x1, y1] = parsePoint(at.value);\n Object.assign(result.attrs, { x1, y1 });\n break;\n case \"to\":\n const [x2, y2] = parsePoint(at.value);\n Object.assign(result.attrs, { x2, y2 });\n break;\n }\n }\n for (const el of globalXmlParser.elements(elem)) {\n switch (el.localName) {\n case \"stroke\":\n Object.assign(result.attrs, parseStroke(el));\n break;\n case \"fill\":\n Object.assign(result.attrs, parseFill());\n break;\n case \"imagedata\":\n result.tagName = \"image\";\n Object.assign(result.attrs, { width: '100%', height: '100%' });\n result.imageHref = {\n id: globalXmlParser.attr(el, \"id\"),\n title: globalXmlParser.attr(el, \"title\"),\n };\n break;\n case \"txbxContent\":\n result.children.push(...parser.parseBodyElements(el));\n break;\n default:\n const child = parseVmlElement(el, parser);\n child && result.children.push(child);\n break;\n }\n }\n return result;\n}\nfunction parseStroke(el) {\n return {\n 'stroke': globalXmlParser.attr(el, \"color\"),\n 'stroke-width': globalXmlParser.lengthAttr(el, \"weight\", LengthUsage.Emu) ?? '1px'\n };\n}\nfunction parseFill(el) {\n return {};\n}\nfunction parsePoint(val) {\n return val.split(\",\");\n}\n\nclass WmlComment extends OpenXmlElementBase {\n constructor() {\n super(...arguments);\n this.type = DomType.Comment;\n }\n}\nclass WmlCommentReference extends OpenXmlElementBase {\n constructor(id) {\n super();\n this.id = id;\n this.type = DomType.CommentReference;\n }\n}\nclass WmlCommentRangeStart extends OpenXmlElementBase {\n constructor(id) {\n super();\n this.id = id;\n this.type = DomType.CommentRangeStart;\n }\n}\nclass WmlCommentRangeEnd extends OpenXmlElementBase {\n constructor(id) {\n super();\n this.id = id;\n this.type = DomType.CommentRangeEnd;\n }\n}\n\nvar autos = {\n shd: \"inherit\",\n color: \"black\",\n borderColor: \"black\",\n highlight: \"transparent\"\n};\nconst supportedNamespaceURIs = [];\nconst mmlTagMap = {\n \"oMath\": DomType.MmlMath,\n \"oMathPara\": DomType.MmlMathParagraph,\n \"f\": DomType.MmlFraction,\n \"func\": DomType.MmlFunction,\n \"fName\": DomType.MmlFunctionName,\n \"num\": DomType.MmlNumerator,\n \"den\": DomType.MmlDenominator,\n \"rad\": DomType.MmlRadical,\n \"deg\": DomType.MmlDegree,\n \"e\": DomType.MmlBase,\n \"sSup\": DomType.MmlSuperscript,\n \"sSub\": DomType.MmlSubscript,\n \"sPre\": DomType.MmlPreSubSuper,\n \"sup\": DomType.MmlSuperArgument,\n \"sub\": DomType.MmlSubArgument,\n \"d\": DomType.MmlDelimiter,\n \"nary\": DomType.MmlNary,\n \"eqArr\": DomType.MmlEquationArray,\n \"lim\": DomType.MmlLimit,\n \"limLow\": DomType.MmlLimitLower,\n \"m\": DomType.MmlMatrix,\n \"mr\": DomType.MmlMatrixRow,\n \"box\": DomType.MmlBox,\n \"bar\": DomType.MmlBar,\n \"groupChr\": DomType.MmlGroupChar\n};\nclass DocumentParser {\n constructor(options) {\n this.options = {\n ignoreWidth: false,\n debug: false,\n ...options\n };\n }\n parseNotes(xmlDoc, elemName, elemClass) {\n var result = [];\n for (let el of globalXmlParser.elements(xmlDoc, elemName)) {\n const node = new elemClass();\n node.id = globalXmlParser.attr(el, \"id\");\n node.noteType = globalXmlParser.attr(el, \"type\");\n node.children = this.parseBodyElements(el);\n result.push(node);\n }\n return result;\n }\n parseComments(xmlDoc) {\n var result = [];\n for (let el of globalXmlParser.elements(xmlDoc, \"comment\")) {\n const item = new WmlComment();\n item.id = globalXmlParser.attr(el, \"id\");\n item.author = globalXmlParser.attr(el, \"author\");\n item.initials = globalXmlParser.attr(el, \"initials\");\n item.date = globalXmlParser.attr(el, \"date\");\n item.children = this.parseBodyElements(el);\n result.push(item);\n }\n return result;\n }\n parseDocumentFile(xmlDoc) {\n var xbody = globalXmlParser.element(xmlDoc, \"body\");\n var background = globalXmlParser.element(xmlDoc, \"background\");\n var sectPr = globalXmlParser.element(xbody, \"sectPr\");\n return {\n type: DomType.Document,\n children: this.parseBodyElements(xbody),\n props: sectPr ? parseSectionProperties(sectPr, globalXmlParser) : {},\n cssStyle: background ? this.parseBackground(background) : {},\n };\n }\n parseBackground(elem) {\n var result = {};\n var color = xmlUtil.colorAttr(elem, \"color\");\n if (color) {\n result[\"background-color\"] = color;\n }\n return result;\n }\n parseBodyElements(element) {\n var children = [];\n for (const elem of globalXmlParser.elements(element)) {\n switch (elem.localName) {\n case \"p\":\n children.push(this.parseParagraph(elem));\n break;\n case \"altChunk\":\n children.push(this.parseAltChunk(elem));\n break;\n case \"tbl\":\n children.push(this.parseTable(elem));\n break;\n case \"sdt\":\n children.push(...this.parseSdt(elem, e => this.parseBodyElements(e)));\n break;\n }\n }\n return children;\n }\n parseStylesFile(xstyles) {\n var result = [];\n for (const n of globalXmlParser.elements(xstyles)) {\n switch (n.localName) {\n case \"style\":\n result.push(this.parseStyle(n));\n break;\n case \"docDefaults\":\n result.push(this.parseDefaultStyles(n));\n break;\n }\n }\n return result;\n }\n parseDefaultStyles(node) {\n var result = {\n id: null,\n name: null,\n target: null,\n basedOn: null,\n styles: []\n };\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"rPrDefault\":\n var rPr = globalXmlParser.element(c, \"rPr\");\n if (rPr)\n result.styles.push({\n target: \"span\",\n values: this.parseDefaultProperties(rPr, {})\n });\n break;\n case \"pPrDefault\":\n var pPr = globalXmlParser.element(c, \"pPr\");\n if (pPr)\n result.styles.push({\n target: \"p\",\n values: this.parseDefaultProperties(pPr, {})\n });\n break;\n }\n }\n return result;\n }\n parseStyle(node) {\n var result = {\n id: globalXmlParser.attr(node, \"styleId\"),\n isDefault: globalXmlParser.boolAttr(node, \"default\"),\n name: null,\n target: null,\n basedOn: null,\n styles: [],\n linked: null\n };\n switch (globalXmlParser.attr(node, \"type\")) {\n case \"paragraph\":\n result.target = \"p\";\n break;\n case \"table\":\n result.target = \"table\";\n break;\n case \"character\":\n result.target = \"span\";\n break;\n }\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"basedOn\":\n result.basedOn = globalXmlParser.attr(n, \"val\");\n break;\n case \"name\":\n result.name = globalXmlParser.attr(n, \"val\");\n break;\n case \"link\":\n result.linked = globalXmlParser.attr(n, \"val\");\n break;\n case \"next\":\n result.next = globalXmlParser.attr(n, \"val\");\n break;\n case \"aliases\":\n result.aliases = globalXmlParser.attr(n, \"val\").split(\",\");\n break;\n case \"pPr\":\n result.styles.push({\n target: \"p\",\n values: this.parseDefaultProperties(n, {})\n });\n result.paragraphProps = parseParagraphProperties(n, globalXmlParser);\n break;\n case \"rPr\":\n result.styles.push({\n target: \"span\",\n values: this.parseDefaultProperties(n, {})\n });\n result.runProps = parseRunProperties(n, globalXmlParser);\n break;\n case \"tblPr\":\n case \"tcPr\":\n result.styles.push({\n target: \"td\",\n values: this.parseDefaultProperties(n, {})\n });\n break;\n case \"tblStylePr\":\n for (let s of this.parseTableStyle(n))\n result.styles.push(s);\n break;\n case \"rsid\":\n case \"qFormat\":\n case \"hidden\":\n case \"semiHidden\":\n case \"unhideWhenUsed\":\n case \"autoRedefine\":\n case \"uiPriority\":\n break;\n default:\n this.options.debug && console.warn(`DOCX: Unknown style element: ${n.localName}`);\n }\n }\n return result;\n }\n parseTableStyle(node) {\n var result = [];\n var type = globalXmlParser.attr(node, \"type\");\n var selector = \"\";\n var modificator = \"\";\n switch (type) {\n case \"firstRow\":\n modificator = \".first-row\";\n selector = \"tr.first-row td\";\n break;\n case \"lastRow\":\n modificator = \".last-row\";\n selector = \"tr.last-row td\";\n break;\n case \"firstCol\":\n modificator = \".first-col\";\n selector = \"td.first-col\";\n break;\n case \"lastCol\":\n modificator = \".last-col\";\n selector = \"td.last-col\";\n break;\n case \"band1Vert\":\n modificator = \":not(.no-vband)\";\n selector = \"td.odd-col\";\n break;\n case \"band2Vert\":\n modificator = \":not(.no-vband)\";\n selector = \"td.even-col\";\n break;\n case \"band1Horz\":\n modificator = \":not(.no-hband)\";\n selector = \"tr.odd-row\";\n break;\n case \"band2Horz\":\n modificator = \":not(.no-hband)\";\n selector = \"tr.even-row\";\n break;\n default: return [];\n }\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"pPr\":\n result.push({\n target: `${selector} p`,\n mod: modificator,\n values: this.parseDefaultProperties(n, {})\n });\n break;\n case \"rPr\":\n result.push({\n target: `${selector} span`,\n mod: modificator,\n values: this.parseDefaultProperties(n, {})\n });\n break;\n case \"tblPr\":\n case \"tcPr\":\n result.push({\n target: selector,\n mod: modificator,\n values: this.parseDefaultProperties(n, {})\n });\n break;\n }\n }\n return result;\n }\n parseNumberingFile(node) {\n var result = [];\n var mapping = {};\n var bullets = [];\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"abstractNum\":\n this.parseAbstractNumbering(n, bullets)\n .forEach(x => result.push(x));\n break;\n case \"numPicBullet\":\n bullets.push(this.parseNumberingPicBullet(n));\n break;\n case \"num\":\n var numId = globalXmlParser.attr(n, \"numId\");\n var abstractNumId = globalXmlParser.elementAttr(n, \"abstractNumId\", \"val\");\n mapping[abstractNumId] = numId;\n break;\n }\n }\n result.forEach(x => x.id = mapping[x.id]);\n return result;\n }\n parseNumberingPicBullet(elem) {\n var pict = globalXmlParser.element(elem, \"pict\");\n var shape = pict && globalXmlParser.element(pict, \"shape\");\n var imagedata = shape && globalXmlParser.element(shape, \"imagedata\");\n return imagedata ? {\n id: globalXmlParser.intAttr(elem, \"numPicBulletId\"),\n src: globalXmlParser.attr(imagedata, \"id\"),\n style: globalXmlParser.attr(shape, \"style\")\n } : null;\n }\n parseAbstractNumbering(node, bullets) {\n var result = [];\n var id = globalXmlParser.attr(node, \"abstractNumId\");\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"lvl\":\n result.push(this.parseNumberingLevel(id, n, bullets));\n break;\n }\n }\n return result;\n }\n parseNumberingLevel(id, node, bullets) {\n var result = {\n id: id,\n level: globalXmlParser.intAttr(node, \"ilvl\"),\n start: 1,\n pStyleName: undefined,\n pStyle: {},\n rStyle: {},\n suff: \"tab\"\n };\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"start\":\n result.start = globalXmlParser.intAttr(n, \"val\");\n break;\n case \"pPr\":\n this.parseDefaultProperties(n, result.pStyle);\n break;\n case \"rPr\":\n this.parseDefaultProperties(n, result.rStyle);\n break;\n case \"lvlPicBulletId\":\n var bulletId = globalXmlParser.intAttr(n, \"val\");\n result.bullet = bullets.find(x => x?.id == bulletId);\n break;\n case \"lvlText\":\n result.levelText = globalXmlParser.attr(n, \"val\");\n break;\n case \"pStyle\":\n result.pStyleName = globalXmlParser.attr(n, \"val\");\n break;\n case \"numFmt\":\n result.format = globalXmlParser.attr(n, \"val\");\n break;\n case \"suff\":\n result.suff = globalXmlParser.attr(n, \"val\");\n break;\n }\n }\n return result;\n }\n parseSdt(node, parser) {\n const sdtContent = globalXmlParser.element(node, \"sdtContent\");\n return sdtContent ? parser(sdtContent) : [];\n }\n parseInserted(node, parentParser) {\n return {\n type: DomType.Inserted,\n children: parentParser(node)?.children ?? []\n };\n }\n parseDeleted(node, parentParser) {\n return {\n type: DomType.Deleted,\n children: parentParser(node)?.children ?? []\n };\n }\n parseAltChunk(node) {\n return { type: DomType.AltChunk, children: [], id: globalXmlParser.attr(node, \"id\") };\n }\n parseParagraph(node) {\n var result = { type: DomType.Paragraph, children: [] };\n for (let el of globalXmlParser.elements(node)) {\n switch (el.localName) {\n case \"pPr\":\n this.parseParagraphProperties(el, result);\n break;\n case \"r\":\n result.children.push(this.parseRun(el, result));\n break;\n case \"hyperlink\":\n result.children.push(this.parseHyperlink(el, result));\n break;\n case \"smartTag\":\n result.children.push(this.parseSmartTag(el, result));\n break;\n case \"bookmarkStart\":\n result.children.push(parseBookmarkStart(el, globalXmlParser));\n break;\n case \"bookmarkEnd\":\n result.children.push(parseBookmarkEnd(el, globalXmlParser));\n break;\n case \"commentRangeStart\":\n result.children.push(new WmlCommentRangeStart(globalXmlParser.attr(el, \"id\")));\n break;\n case \"commentRangeEnd\":\n result.children.push(new WmlCommentRangeEnd(globalXmlParser.attr(el, \"id\")));\n break;\n case \"oMath\":\n case \"oMathPara\":\n result.children.push(this.parseMathElement(el));\n break;\n case \"sdt\":\n result.children.push(...this.parseSdt(el, e => this.parseParagraph(e).children));\n break;\n case \"ins\":\n result.children.push(this.parseInserted(el, e => this.parseParagraph(e)));\n break;\n case \"del\":\n result.children.push(this.parseDeleted(el, e => this.parseParagraph(e)));\n break;\n }\n }\n return result;\n }\n parseParagraphProperties(elem, paragraph) {\n this.parseDefaultProperties(elem, paragraph.cssStyle = {}, null, c => {\n if (parseParagraphProperty(c, paragraph, globalXmlParser))\n return true;\n switch (c.localName) {\n case \"pStyle\":\n paragraph.styleName = globalXmlParser.attr(c, \"val\");\n break;\n case \"cnfStyle\":\n paragraph.className = values.classNameOfCnfStyle(c);\n break;\n case \"framePr\":\n this.parseFrame(c, paragraph);\n break;\n case \"rPr\":\n break;\n default:\n return false;\n }\n return true;\n });\n }\n parseFrame(node, paragraph) {\n var dropCap = globalXmlParser.attr(node, \"dropCap\");\n if (dropCap == \"drop\")\n paragraph.cssStyle[\"float\"] = \"left\";\n }\n parseHyperlink(node, parent) {\n var result = { type: DomType.Hyperlink, parent: parent, children: [] };\n result.anchor = globalXmlParser.attr(node, \"anchor\");\n result.id = globalXmlParser.attr(node, \"id\");\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"r\":\n result.children.push(this.parseRun(c, result));\n break;\n }\n }\n return result;\n }\n parseSmartTag(node, parent) {\n var result = { type: DomType.SmartTag, parent, children: [] };\n var uri = globalXmlParser.attr(node, \"uri\");\n var element = globalXmlParser.attr(node, \"element\");\n if (uri)\n result.uri = uri;\n if (element)\n result.element = element;\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"r\":\n result.children.push(this.parseRun(c, result));\n break;\n }\n }\n return result;\n }\n parseRun(node, parent) {\n var result = { type: DomType.Run, parent: parent, children: [] };\n for (let c of globalXmlParser.elements(node)) {\n c = this.checkAlternateContent(c);\n switch (c.localName) {\n case \"t\":\n result.children.push({\n type: DomType.Text,\n text: c.textContent\n });\n break;\n case \"delText\":\n result.children.push({\n type: DomType.DeletedText,\n text: c.textContent\n });\n break;\n case \"commentReference\":\n result.children.push(new WmlCommentReference(globalXmlParser.attr(c, \"id\")));\n break;\n case \"fldSimple\":\n result.children.push({\n type: DomType.SimpleField,\n instruction: globalXmlParser.attr(c, \"instr\"),\n lock: globalXmlParser.boolAttr(c, \"lock\", false),\n dirty: globalXmlParser.boolAttr(c, \"dirty\", false)\n });\n break;\n case \"instrText\":\n result.fieldRun = true;\n result.children.push({\n type: DomType.Instruction,\n text: c.textContent\n });\n break;\n case \"fldChar\":\n result.fieldRun = true;\n result.children.push({\n type: DomType.ComplexField,\n charType: globalXmlParser.attr(c, \"fldCharType\"),\n lock: globalXmlParser.boolAttr(c, \"lock\", false),\n dirty: globalXmlParser.boolAttr(c, \"dirty\", false)\n });\n break;\n case \"noBreakHyphen\":\n result.children.push({ type: DomType.NoBreakHyphen });\n break;\n case \"br\":\n result.children.push({\n type: DomType.Break,\n break: globalXmlParser.attr(c, \"type\") || \"textWrapping\"\n });\n break;\n case \"lastRenderedPageBreak\":\n result.children.push({\n type: DomType.Break,\n break: \"lastRenderedPageBreak\"\n });\n break;\n case \"sym\":\n result.children.push({\n type: DomType.Symbol,\n font: encloseFontFamily(globalXmlParser.attr(c, \"font\")),\n char: globalXmlParser.attr(c, \"char\")\n });\n break;\n case \"tab\":\n result.children.push({ type: DomType.Tab });\n break;\n case \"footnoteReference\":\n result.children.push({\n type: DomType.FootnoteReference,\n id: globalXmlParser.attr(c, \"id\")\n });\n break;\n case \"endnoteReference\":\n result.children.push({\n type: DomType.EndnoteReference,\n id: globalXmlParser.attr(c, \"id\")\n });\n break;\n case \"drawing\":\n let d = this.parseDrawing(c);\n if (d)\n result.children = [d];\n break;\n case \"pict\":\n result.children.push(this.parseVmlPicture(c));\n break;\n case \"rPr\":\n this.parseRunProperties(c, result);\n break;\n }\n }\n return result;\n }\n parseMathElement(elem) {\n const propsTag = `${elem.localName}Pr`;\n const result = { type: mmlTagMap[elem.localName], children: [] };\n for (const el of globalXmlParser.elements(elem)) {\n const childType = mmlTagMap[el.localName];\n if (childType) {\n result.children.push(this.parseMathElement(el));\n }\n else if (el.localName == \"r\") {\n var run = this.parseRun(el);\n run.type = DomType.MmlRun;\n result.children.push(run);\n }\n else if (el.localName == propsTag) {\n result.props = this.parseMathProperies(el);\n }\n }\n return result;\n }\n parseMathProperies(elem) {\n const result = {};\n for (const el of globalXmlParser.elements(elem)) {\n switch (el.localName) {\n case \"chr\":\n result.char = globalXmlParser.attr(el, \"val\");\n break;\n case \"vertJc\":\n result.verticalJustification = globalXmlParser.attr(el, \"val\");\n break;\n case \"pos\":\n result.position = globalXmlParser.attr(el, \"val\");\n break;\n case \"degHide\":\n result.hideDegree = globalXmlParser.boolAttr(el, \"val\");\n break;\n case \"begChr\":\n result.beginChar = globalXmlParser.attr(el, \"val\");\n break;\n case \"endChr\":\n result.endChar = globalXmlParser.attr(el, \"val\");\n break;\n }\n }\n return result;\n }\n parseRunProperties(elem, run) {\n this.parseDefaultProperties(elem, run.cssStyle = {}, null, c => {\n switch (c.localName) {\n case \"rStyle\":\n run.styleName = globalXmlParser.attr(c, \"val\");\n break;\n case \"vertAlign\":\n run.verticalAlign = values.valueOfVertAlign(c, true);\n break;\n default:\n return false;\n }\n return true;\n });\n }\n parseVmlPicture(elem) {\n const result = { type: DomType.VmlPicture, children: [] };\n for (const el of globalXmlParser.elements(elem)) {\n const child = parseVmlElement(el, this);\n child && result.children.push(child);\n }\n return result;\n }\n checkAlternateContent(elem) {\n if (elem.localName != 'AlternateContent')\n return elem;\n var choice = globalXmlParser.element(elem, \"Choice\");\n if (choice) {\n var requires = globalXmlParser.attr(choice, \"Requires\");\n var namespaceURI = elem.lookupNamespaceURI(requires);\n if (supportedNamespaceURIs.includes(namespaceURI))\n return choice.firstElementChild;\n }\n return globalXmlParser.element(elem, \"Fallback\")?.firstElementChild;\n }\n parseDrawing(node) {\n for (var n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"inline\":\n case \"anchor\":\n return this.parseDrawingWrapper(n);\n }\n }\n }\n parseDrawingWrapper(node) {\n var result = { type: DomType.Drawing, children: [], cssStyle: {} };\n var isAnchor = node.localName == \"anchor\";\n let wrapType = null;\n let simplePos = globalXmlParser.boolAttr(node, \"simplePos\");\n globalXmlParser.boolAttr(node, \"behindDoc\");\n let posX = { relative: \"page\", align: \"left\", offset: \"0\" };\n let posY = { relative: \"page\", align: \"top\", offset: \"0\" };\n for (var n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"simplePos\":\n if (simplePos) {\n posX.offset = globalXmlParser.lengthAttr(n, \"x\", LengthUsage.Emu);\n posY.offset = globalXmlParser.lengthAttr(n, \"y\", LengthUsage.Emu);\n }\n break;\n case \"extent\":\n result.cssStyle[\"width\"] = globalXmlParser.lengthAttr(n, \"cx\", LengthUsage.Emu);\n result.cssStyle[\"height\"] = globalXmlParser.lengthAttr(n, \"cy\", LengthUsage.Emu);\n break;\n case \"positionH\":\n case \"positionV\":\n if (!simplePos) {\n let pos = n.localName == \"positionH\" ? posX : posY;\n var alignNode = globalXmlParser.element(n, \"align\");\n var offsetNode = globalXmlParser.element(n, \"posOffset\");\n pos.relative = globalXmlParser.attr(n, \"relativeFrom\") ?? pos.relative;\n if (alignNode)\n pos.align = alignNode.textContent;\n if (offsetNode)\n pos.offset = convertLength(offsetNode.textContent, LengthUsage.Emu);\n }\n break;\n case \"wrapTopAndBottom\":\n wrapType = \"wrapTopAndBottom\";\n break;\n case \"wrapNone\":\n wrapType = \"wrapNone\";\n break;\n case \"graphic\":\n var g = this.parseGraphic(n);\n if (g)\n result.children.push(g);\n break;\n }\n }\n if (wrapType == \"wrapTopAndBottom\") {\n result.cssStyle['display'] = 'block';\n if (posX.align) {\n result.cssStyle['text-align'] = posX.align;\n result.cssStyle['width'] = \"100%\";\n }\n }\n else if (wrapType == \"wrapNone\") {\n result.cssStyle['display'] = 'block';\n result.cssStyle['position'] = 'relative';\n result.cssStyle[\"width\"] = \"0px\";\n result.cssStyle[\"height\"] = \"0px\";\n if (posX.offset)\n result.cssStyle[\"left\"] = posX.offset;\n if (posY.offset)\n result.cssStyle[\"top\"] = posY.offset;\n }\n else if (isAnchor && (posX.align == 'left' || posX.align == 'right')) {\n result.cssStyle[\"float\"] = posX.align;\n }\n return result;\n }\n parseGraphic(elem) {\n var graphicData = globalXmlParser.element(elem, \"graphicData\");\n for (let n of globalXmlParser.elements(graphicData)) {\n switch (n.localName) {\n case \"pic\":\n return this.parsePicture(n);\n }\n }\n return null;\n }\n parsePicture(elem) {\n var result = { type: DomType.Image, src: \"\", cssStyle: {} };\n var blipFill = globalXmlParser.element(elem, \"blipFill\");\n var blip = globalXmlParser.element(blipFill, \"blip\");\n var srcRect = globalXmlParser.element(blipFill, \"srcRect\");\n result.src = globalXmlParser.attr(blip, \"embed\");\n if (srcRect) {\n result.srcRect = [\n globalXmlParser.intAttr(srcRect, \"l\", 0) / 100000,\n globalXmlParser.intAttr(srcRect, \"t\", 0) / 100000,\n globalXmlParser.intAttr(srcRect, \"r\", 0) / 100000,\n globalXmlParser.intAttr(srcRect, \"b\", 0) / 100000,\n ];\n }\n var spPr = globalXmlParser.element(elem, \"spPr\");\n var xfrm = globalXmlParser.element(spPr, \"xfrm\");\n result.cssStyle[\"position\"] = \"relative\";\n if (xfrm) {\n result.rotation = globalXmlParser.intAttr(xfrm, \"rot\", 0) / 60000;\n for (var n of globalXmlParser.elements(xfrm)) {\n switch (n.localName) {\n case \"ext\":\n result.cssStyle[\"width\"] = globalXmlParser.lengthAttr(n, \"cx\", LengthUsage.Emu);\n result.cssStyle[\"height\"] = globalXmlParser.lengthAttr(n, \"cy\", LengthUsage.Emu);\n break;\n case \"off\":\n result.cssStyle[\"left\"] = globalXmlParser.lengthAttr(n, \"x\", LengthUsage.Emu);\n result.cssStyle[\"top\"] = globalXmlParser.lengthAttr(n, \"y\", LengthUsage.Emu);\n break;\n }\n }\n }\n return result;\n }\n parseTable(node) {\n var result = { type: DomType.Table, children: [] };\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"tr\":\n result.children.push(this.parseTableRow(c));\n break;\n case \"tblGrid\":\n result.columns = this.parseTableColumns(c);\n break;\n case \"tblPr\":\n this.parseTableProperties(c, result);\n break;\n }\n }\n return result;\n }\n parseTableColumns(node) {\n var result = [];\n for (const n of globalXmlParser.elements(node)) {\n switch (n.localName) {\n case \"gridCol\":\n result.push({ width: globalXmlParser.lengthAttr(n, \"w\") });\n break;\n }\n }\n return result;\n }\n parseTableProperties(elem, table) {\n table.cssStyle = {};\n table.cellStyle = {};\n this.parseDefaultProperties(elem, table.cssStyle, table.cellStyle, c => {\n switch (c.localName) {\n case \"tblStyle\":\n table.styleName = globalXmlParser.attr(c, \"val\");\n break;\n case \"tblLook\":\n table.className = values.classNameOftblLook(c);\n break;\n case \"tblpPr\":\n this.parseTablePosition(c, table);\n break;\n case \"tblStyleColBandSize\":\n table.colBandSize = globalXmlParser.intAttr(c, \"val\");\n break;\n case \"tblStyleRowBandSize\":\n table.rowBandSize = globalXmlParser.intAttr(c, \"val\");\n break;\n case \"hidden\":\n table.cssStyle[\"display\"] = \"none\";\n break;\n default:\n return false;\n }\n return true;\n });\n switch (table.cssStyle[\"text-align\"]) {\n case \"center\":\n delete table.cssStyle[\"text-align\"];\n table.cssStyle[\"margin-left\"] = \"auto\";\n table.cssStyle[\"margin-right\"] = \"auto\";\n break;\n case \"right\":\n delete table.cssStyle[\"text-align\"];\n table.cssStyle[\"margin-left\"] = \"auto\";\n break;\n }\n }\n parseTablePosition(node, table) {\n var topFromText = globalXmlParser.lengthAttr(node, \"topFromText\");\n var bottomFromText = globalXmlParser.lengthAttr(node, \"bottomFromText\");\n var rightFromText = globalXmlParser.lengthAttr(node, \"rightFromText\");\n var leftFromText = globalXmlParser.lengthAttr(node, \"leftFromText\");\n table.cssStyle[\"float\"] = 'left';\n table.cssStyle[\"margin-bottom\"] = values.addSize(table.cssStyle[\"margin-bottom\"], bottomFromText);\n table.cssStyle[\"margin-left\"] = values.addSize(table.cssStyle[\"margin-left\"], leftFromText);\n table.cssStyle[\"margin-right\"] = values.addSize(table.cssStyle[\"margin-right\"], rightFromText);\n table.cssStyle[\"margin-top\"] = values.addSize(table.cssStyle[\"margin-top\"], topFromText);\n }\n parseTableRow(node) {\n var result = { type: DomType.Row, children: [] };\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"tc\":\n result.children.push(this.parseTableCell(c));\n break;\n case \"trPr\":\n case \"tblPrEx\":\n this.parseTableRowProperties(c, result);\n break;\n }\n }\n return result;\n }\n parseTableRowProperties(elem, row) {\n row.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\n switch (c.localName) {\n case \"cnfStyle\":\n row.className = values.classNameOfCnfStyle(c);\n break;\n case \"tblHeader\":\n row.isHeader = globalXmlParser.boolAttr(c, \"val\");\n break;\n case \"gridBefore\":\n row.gridBefore = globalXmlParser.intAttr(c, \"val\");\n break;\n case \"gridAfter\":\n row.gridAfter = globalXmlParser.intAttr(c, \"val\");\n break;\n default:\n return false;\n }\n return true;\n });\n }\n parseTableCell(node) {\n var result = { type: DomType.Cell, children: [] };\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"tbl\":\n result.children.push(this.parseTable(c));\n break;\n case \"p\":\n result.children.push(this.parseParagraph(c));\n break;\n case \"tcPr\":\n this.parseTableCellProperties(c, result);\n break;\n }\n }\n return result;\n }\n parseTableCellProperties(elem, cell) {\n cell.cssStyle = this.parseDefaultProperties(elem, {}, null, c => {\n switch (c.localName) {\n case \"gridSpan\":\n cell.span = globalXmlParser.intAttr(c, \"val\", null);\n break;\n case \"vMerge\":\n cell.verticalMerge = globalXmlParser.attr(c, \"val\") ?? \"continue\";\n break;\n case \"cnfStyle\":\n cell.className = values.classNameOfCnfStyle(c);\n break;\n default:\n return false;\n }\n return true;\n });\n this.parseTableCellVerticalText(elem, cell);\n }\n parseTableCellVerticalText(elem, cell) {\n const directionMap = {\n \"btLr\": {\n writingMode: \"vertical-rl\",\n transform: \"rotate(180deg)\"\n },\n \"lrTb\": {\n writingMode: \"vertical-lr\",\n transform: \"none\"\n },\n \"tbRl\": {\n writingMode: \"vertical-rl\",\n transform: \"none\"\n }\n };\n for (const c of globalXmlParser.elements(elem)) {\n if (c.localName === \"textDirection\") {\n const direction = globalXmlParser.attr(c, \"val\");\n const style = directionMap[direction] || { writingMode: \"horizontal-tb\" };\n cell.cssStyle[\"writing-mode\"] = style.writingMode;\n cell.cssStyle[\"transform\"] = style.transform;\n }\n }\n }\n parseDefaultProperties(elem, style = null, childStyle = null, handler = null) {\n style = style || {};\n for (const c of globalXmlParser.elements(elem)) {\n if (handler?.(c))\n continue;\n switch (c.localName) {\n case \"jc\":\n style[\"text-align\"] = values.valueOfJc(c);\n break;\n case \"textAlignment\":\n style[\"vertical-align\"] = values.valueOfTextAlignment(c);\n break;\n case \"color\":\n style[\"color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.color);\n break;\n case \"sz\":\n style[\"font-size\"] = style[\"min-height\"] = globalXmlParser.lengthAttr(c, \"val\", LengthUsage.FontSize);\n break;\n case \"shd\":\n style[\"background-color\"] = xmlUtil.colorAttr(c, \"fill\", null, autos.shd);\n break;\n case \"highlight\":\n style[\"background-color\"] = xmlUtil.colorAttr(c, \"val\", null, autos.highlight);\n break;\n case \"vertAlign\":\n break;\n case \"position\":\n style.verticalAlign = globalXmlParser.lengthAttr(c, \"val\", LengthUsage.FontSize);\n break;\n case \"tcW\":\n if (this.options.ignoreWidth)\n break;\n case \"tblW\":\n style[\"width\"] = values.valueOfSize(c, \"w\");\n break;\n case \"trHeight\":\n this.parseTrHeight(c, style);\n break;\n case \"strike\":\n style[\"text-decoration\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"line-through\" : \"none\";\n break;\n case \"b\":\n style[\"font-weight\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"bold\" : \"normal\";\n break;\n case \"i\":\n style[\"font-style\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"italic\" : \"normal\";\n break;\n case \"caps\":\n style[\"text-transform\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"uppercase\" : \"none\";\n break;\n case \"smallCaps\":\n style[\"font-variant\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"small-caps\" : \"none\";\n break;\n case \"u\":\n this.parseUnderline(c, style);\n break;\n case \"ind\":\n case \"tblInd\":\n this.parseIndentation(c, style);\n break;\n case \"rFonts\":\n this.parseFont(c, style);\n break;\n case \"tblBorders\":\n this.parseBorderProperties(c, childStyle || style);\n break;\n case \"tblCellSpacing\":\n style[\"border-spacing\"] = values.valueOfMargin(c);\n style[\"border-collapse\"] = \"separate\";\n break;\n case \"pBdr\":\n this.parseBorderProperties(c, style);\n break;\n case \"bdr\":\n style[\"border\"] = values.valueOfBorder(c);\n break;\n case \"tcBorders\":\n this.parseBorderProperties(c, style);\n break;\n case \"vanish\":\n if (globalXmlParser.boolAttr(c, \"val\", true))\n style[\"display\"] = \"none\";\n break;\n case \"kern\":\n break;\n case \"noWrap\":\n break;\n case \"tblCellMar\":\n case \"tcMar\":\n this.parseMarginProperties(c, childStyle || style);\n break;\n case \"tblLayout\":\n style[\"table-layout\"] = values.valueOfTblLayout(c);\n break;\n case \"vAlign\":\n style[\"vertical-align\"] = values.valueOfTextAlignment(c);\n break;\n case \"spacing\":\n if (elem.localName == \"pPr\")\n this.parseSpacing(c, style);\n break;\n case \"wordWrap\":\n if (globalXmlParser.boolAttr(c, \"val\"))\n style[\"overflow-wrap\"] = \"break-word\";\n break;\n case \"suppressAutoHyphens\":\n style[\"hyphens\"] = globalXmlParser.boolAttr(c, \"val\", true) ? \"none\" : \"auto\";\n break;\n case \"lang\":\n style[\"$lang\"] = globalXmlParser.attr(c, \"val\");\n break;\n case \"rtl\":\n case \"bidi\":\n if (globalXmlParser.boolAttr(c, \"val\", true))\n style[\"direction\"] = \"rtl\";\n break;\n case \"bCs\":\n case \"iCs\":\n case \"szCs\":\n case \"tabs\":\n case \"outlineLvl\":\n case \"contextualSpacing\":\n case \"tblStyleColBandSize\":\n case \"tblStyleRowBandSize\":\n case \"webHidden\":\n case \"pageBreakBefore\":\n case \"suppressLineNumbers\":\n case \"keepLines\":\n case \"keepNext\":\n case \"widowControl\":\n case \"bidi\":\n case \"rtl\":\n case \"noProof\":\n break;\n default:\n if (this.options.debug)\n console.warn(`DOCX: Unknown document element: ${elem.localName}.${c.localName}`);\n break;\n }\n }\n return style;\n }\n parseUnderline(node, style) {\n var val = globalXmlParser.attr(node, \"val\");\n if (val == null)\n return;\n switch (val) {\n case \"dash\":\n case \"dashDotDotHeavy\":\n case \"dashDotHeavy\":\n case \"dashedHeavy\":\n case \"dashLong\":\n case \"dashLongHeavy\":\n case \"dotDash\":\n case \"dotDotDash\":\n style[\"text-decoration\"] = \"underline dashed\";\n break;\n case \"dotted\":\n case \"dottedHeavy\":\n style[\"text-decoration\"] = \"underline dotted\";\n break;\n case \"double\":\n style[\"text-decoration\"] = \"underline double\";\n break;\n case \"single\":\n case \"thick\":\n style[\"text-decoration\"] = \"underline\";\n break;\n case \"wave\":\n case \"wavyDouble\":\n case \"wavyHeavy\":\n style[\"text-decoration\"] = \"underline wavy\";\n break;\n case \"words\":\n style[\"text-decoration\"] = \"underline\";\n break;\n case \"none\":\n style[\"text-decoration\"] = \"none\";\n break;\n }\n var col = xmlUtil.colorAttr(node, \"color\");\n if (col)\n style[\"text-decoration-color\"] = col;\n }\n parseFont(node, style) {\n var ascii = globalXmlParser.attr(node, \"ascii\");\n var asciiTheme = values.themeValue(node, \"asciiTheme\");\n var eastAsia = globalXmlParser.attr(node, \"eastAsia\");\n var fonts = [ascii, asciiTheme, eastAsia].filter(x => x).map(x => encloseFontFamily(x));\n if (fonts.length > 0)\n style[\"font-family\"] = [...new Set(fonts)].join(', ');\n }\n parseIndentation(node, style) {\n var firstLine = globalXmlParser.lengthAttr(node, \"firstLine\");\n var hanging = globalXmlParser.lengthAttr(node, \"hanging\");\n var left = globalXmlParser.lengthAttr(node, \"left\");\n var start = globalXmlParser.lengthAttr(node, \"start\");\n var right = globalXmlParser.lengthAttr(node, \"right\");\n var end = globalXmlParser.lengthAttr(node, \"end\");\n if (firstLine)\n style[\"text-indent\"] = firstLine;\n if (hanging)\n style[\"text-indent\"] = `-${hanging}`;\n if (left || start)\n style[\"margin-inline-start\"] = left || start;\n if (right || end)\n style[\"margin-inline-end\"] = right || end;\n }\n parseSpacing(node, style) {\n var before = globalXmlParser.lengthAttr(node, \"before\");\n var after = globalXmlParser.lengthAttr(node, \"after\");\n var line = globalXmlParser.intAttr(node, \"line\", null);\n var lineRule = globalXmlParser.attr(node, \"lineRule\");\n if (before)\n style[\"margin-top\"] = before;\n if (after)\n style[\"margin-bottom\"] = after;\n if (line !== null) {\n switch (lineRule) {\n case \"auto\":\n style[\"line-height\"] = `${(line / 240).toFixed(2)}`;\n break;\n case \"atLeast\":\n style[\"line-height\"] = `calc(100% + ${line / 20}pt)`;\n break;\n default:\n style[\"line-height\"] = style[\"min-height\"] = `${line / 20}pt`;\n break;\n }\n }\n }\n parseMarginProperties(node, output) {\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"left\":\n output[\"padding-left\"] = values.valueOfMargin(c);\n break;\n case \"right\":\n output[\"padding-right\"] = values.valueOfMargin(c);\n break;\n case \"top\":\n output[\"padding-top\"] = values.valueOfMargin(c);\n break;\n case \"bottom\":\n output[\"padding-bottom\"] = values.valueOfMargin(c);\n break;\n }\n }\n }\n parseTrHeight(node, output) {\n switch (globalXmlParser.attr(node, \"hRule\")) {\n case \"exact\":\n output[\"height\"] = globalXmlParser.lengthAttr(node, \"val\");\n break;\n case \"atLeast\":\n default:\n output[\"height\"] = globalXmlParser.lengthAttr(node, \"val\");\n break;\n }\n }\n parseBorderProperties(node, output) {\n for (const c of globalXmlParser.elements(node)) {\n switch (c.localName) {\n case \"start\":\n case \"left\":\n output[\"border-left\"] = values.valueOfBorder(c);\n break;\n case \"end\":\n case \"right\":\n output[\"border-right\"] = values.valueOfBorder(c);\n break;\n case \"top\":\n output[\"border-top\"] = values.valueOfBorder(c);\n break;\n case \"bottom\":\n output[\"border-bottom\"] = values.valueOfBorder(c);\n break;\n }\n }\n }\n}\nconst knownColors = ['black', 'blue', 'cyan', 'darkBlue', 'darkCyan', 'darkGray', 'darkGreen', 'darkMagenta', 'darkRed', 'darkYellow', 'green', 'lightGray', 'magenta', 'none', 'red', 'white', 'yellow'];\nclass xmlUtil {\n static colorAttr(node, attrName, defValue = null, autoColor = 'black') {\n var v = globalXmlParser.attr(node, attrName);\n if (v) {\n if (v == \"auto\") {\n return autoColor;\n }\n else if (knownColors.includes(v)) {\n return v;\n }\n return `#${v}`;\n }\n var themeColor = globalXmlParser.attr(node, \"themeColor\");\n return themeColor ? `var(--docx-${themeColor}-color)` : defValue;\n }\n}\nclass values {\n static themeValue(c, attr) {\n var val = globalXmlParser.attr(c, attr);\n return val ? `var(--docx-${val}-font)` : null;\n }\n static valueOfSize(c, attr) {\n var type = LengthUsage.Dxa;\n switch (globalXmlParser.attr(c, \"type\")) {\n case \"dxa\": break;\n case \"pct\":\n type = LengthUsage.Percent;\n break;\n case \"auto\": return \"auto\";\n }\n return globalXmlParser.lengthAttr(c, attr, type);\n }\n static valueOfMargin(c) {\n return globalXmlParser.lengthAttr(c, \"w\");\n }\n static valueOfBorder(c) {\n var type = values.parseBorderType(globalXmlParser.attr(c, \"val\"));\n if (type == \"none\")\n return \"none\";\n var color = xmlUtil.colorAttr(c, \"color\");\n var size = globalXmlParser.lengthAttr(c, \"sz\", LengthUsage.Border);\n return `${size} ${type} ${color == \"auto\" ? autos.borderColor : color}`;\n }\n static parseBorderType(type) {\n switch (type) {\n case \"single\": return \"solid\";\n case \"dashDotStroked\": return \"solid\";\n case \"dashed\": return \"dashed\";\n case \"dashSmallGap\": return \"dashed\";\n case \"dotDash\": return \"dotted\";\n case \"dotDotDash\": return \"dotted\";\n case \"dotted\": return \"dotted\";\n case \"double\": return \"double\";\n case \"doubleWave\": return \"double\";\n case \"inset\": return \"inset\";\n case \"nil\": return \"none\";\n case \"none\": return \"none\";\n case \"outset\": return \"outset\";\n case \"thick\": return \"solid\";\n case \"thickThinLargeGap\": return \"solid\";\n case \"thickThinMediumGap\": return \"solid\";\n case \"thickThinSmallGap\": return \"solid\";\n case \"thinThickLargeGap\": return \"solid\";\n case \"thinThickMediumGap\": return \"solid\";\n case \"thinThickSmallGap\": return \"solid\";\n case \"thinThickThinLargeGap\": return \"solid\";\n case \"thinThickThinMediumGap\": return \"solid\";\n case \"thinThickThinSmallGap\": return \"solid\";\n case \"threeDEmboss\": return \"solid\";\n case \"threeDEngrave\": return \"solid\";\n case \"triple\": return \"double\";\n case \"wave\": return \"solid\";\n }\n return 'solid';\n }\n static valueOfTblLayout(c) {\n var type = globalXmlParser.attr(c, \"val\");\n return type == \"fixed\" ? \"fixed\" : \"auto\";\n }\n static classNameOfCnfStyle(c) {\n const val = globalXmlParser.attr(c, \"val\");\n const classes = [\n 'first-row', 'last-row', 'first-col', 'last-col',\n 'odd-col', 'even-col', 'odd-row', 'even-row',\n 'ne-cell', 'nw-cell', 'se-cell', 'sw-cell'\n ];\n return classes.filter((_, i) => val[i] == '1').join(' ');\n }\n static valueOfJc(c) {\n var type = globalXmlParser.attr(c, \"val\");\n switch (type) {\n case \"start\":\n case \"left\": return \"left\";\n case \"center\": return \"center\";\n case \"end\":\n case \"right\": return \"right\";\n case \"both\": return \"justify\";\n }\n return type;\n }\n static valueOfVertAlign(c, asTagName = false) {\n var type = globalXmlParser.attr(c, \"val\");\n switch (type) {\n case \"subscript\": return \"sub\";\n case \"superscript\": return asTagName ? \"sup\" : \"super\";\n }\n return asTagName ? null : type;\n }\n static valueOfTextAlignment(c) {\n var type = globalXmlParser.attr(c, \"val\");\n switch (type) {\n case \"auto\":\n case \"baseline\": return \"baseline\";\n case \"top\": return \"top\";\n case \"center\": return \"middle\";\n case \"bottom\": return \"bottom\";\n }\n return type;\n }\n static addSize(a, b) {\n if (a == null)\n return b;\n if (b == null)\n return a;\n return `calc(${a} + ${b})`;\n }\n static classNameOftblLook(c) {\n const val = globalXmlParser.hexAttr(c, \"val\", 0);\n let className = \"\";\n if (globalXmlParser.boolAttr(c, \"firstRow\") || (val & 0x0020))\n className += \" first-row\";\n if (globalXmlParser.boolAttr(c, \"lastRow\") || (val & 0x0040))\n className += \" last-row\";\n if (globalXmlParser.boolAttr(c, \"firstColumn\") || (val & 0x0080))\n className += \" first-col\";\n if (globalXmlParser.boolAttr(c, \"lastColumn\") || (val & 0x0100))\n className += \" last-col\";\n if (globalXmlParser.boolAttr(c, \"noHBand\") || (val & 0x0200))\n className += \" no-hband\";\n if (globalXmlParser.boolAttr(c, \"noVBand\") || (val & 0x0400))\n className += \" no-vband\";\n return className.trim();\n }\n}\n\nconst defaultTab = { pos: 0, leader: \"none\", style: \"left\" };\nconst maxTabs = 50;\nfunction computePixelToPoint(container = document.body) {\n const temp = document.createElement(\"div\");\n temp.style.width = '100pt';\n container.appendChild(temp);\n const result = 100 / temp.offsetWidth;\n container.removeChild(temp);\n return result;\n}\nfunction updateTabStop(elem, tabs, defaultTabSize, pixelToPoint = 72 / 96) {\n const p = elem.closest(\"p\");\n const ebb = elem.getBoundingClientRect();\n const pbb = p.getBoundingClientRect();\n const pcs = getComputedStyle(p);\n const tabStops = tabs?.length > 0 ? tabs.map(t => ({\n pos: lengthToPoint(t.position),\n leader: t.leader,\n style: t.style\n })).sort((a, b) => a.pos - b.pos) : [defaultTab];\n const lastTab = tabStops[tabStops.length - 1];\n const pWidthPt = pbb.width * pixelToPoint;\n const size = lengthToPoint(defaultTabSize);\n let pos = lastTab.pos + size;\n if (pos < pWidthPt) {\n for (; pos < pWidthPt && tabStops.length < maxTabs; pos += size) {\n tabStops.push({ ...defaultTab, pos: pos });\n }\n }\n const marginLeft = parseFloat(pcs.marginLeft);\n const pOffset = pbb.left + marginLeft;\n const left = (ebb.left - pOffset) * pixelToPoint;\n const tab = tabStops.find(t => t.style != \"clear\" && t.pos > left);\n if (tab == null)\n return;\n let width = 1;\n if (tab.style == \"right\" || tab.style == \"center\") {\n const tabStops = Array.from(p.querySelectorAll(`.${elem.className}`));\n const nextIdx = tabStops.indexOf(elem) + 1;\n const range = document.createRange();\n range.setStart(elem, 1);\n if (nextIdx < tabStops.length) {\n range.setEndBefore(tabStops[nextIdx]);\n }\n else {\n range.setEndAfter(p);\n }\n const mul = tab.style == \"center\" ? 0.5 : 1;\n const nextBB = range.getBoundingClientRect();\n const offset = nextBB.left + mul * nextBB.width - (pbb.left - marginLeft);\n width = tab.pos - offset * pixelToPoint;\n }\n else {\n width = tab.pos - left;\n }\n elem.innerHTML = \" \";\n elem.style.textDecoration = \"inherit\";\n elem.style.wordSpacing = `${width.toFixed(0)}pt`;\n switch (tab.leader) {\n case \"dot\":\n case \"middleDot\":\n elem.style.textDecoration = \"underline\";\n elem.style.textDecorationStyle = \"dotted\";\n break;\n case \"hyphen\":\n case \"heavy\":\n case \"underscore\":\n elem.style.textDecoration = \"underline\";\n break;\n }\n}\nfunction lengthToPoint(length) {\n return parseFloat(length);\n}\n\nconst ns = {\n svg: \"http://www.w3.org/2000/svg\",\n mathML: \"http://www.w3.org/1998/Math/MathML\"\n};\nclass HtmlRenderer {\n constructor(htmlDocument) {\n this.htmlDocument = htmlDocument;\n this.className = \"docx\";\n this.styleMap = {};\n this.currentPart = null;\n this.tableVerticalMerges = [];\n this.currentVerticalMerge = null;\n this.tableCellPositions = [];\n this.currentCellPosition = null;\n this.footnoteMap = {};\n this.endnoteMap = {};\n this.currentEndnoteIds = [];\n this.usedHederFooterParts = [];\n this.currentTabs = [];\n this.commentMap = {};\n this.tasks = [];\n this.postRenderTasks = [];\n }\n async render(document, bodyContainer, styleContainer = null, options) {\n this.document = document;\n this.options = options;\n this.className = options.className;\n this.rootSelector = options.inWrapper ? `.${this.className}-wrapper` : ':root';\n this.styleMap = null;\n this.tasks = [];\n if (this.options.renderComments && globalThis.Highlight) {\n this.commentHighlight = new Highlight();\n }\n styleContainer = styleContainer || bodyContainer;\n removeAllElements(styleContainer);\n removeAllElements(bodyContainer);\n styleContainer.appendChild(this.createComment(\"docxjs library predefined styles\"));\n styleContainer.appendChild(this.renderDefaultStyle());\n if (document.themePart) {\n styleContainer.appendChild(this.createComment(\"docxjs document theme values\"));\n this.renderTheme(document.themePart, styleContainer);\n }\n if (document.stylesPart != null) {\n this.styleMap = this.processStyles(document.stylesPart.styles);\n styleContainer.appendChild(this.createComment(\"docxjs document styles\"));\n styleContainer.appendChild(this.renderStyles(document.stylesPart.styles));\n }\n if (document.numberingPart) {\n this.prodessNumberings(document.numberingPart.domNumberings);\n styleContainer.appendChild(this.createComment(\"docxjs document numbering styles\"));\n styleContainer.appendChild(this.renderNumbering(document.numberingPart.domNumberings, styleContainer));\n }\n if (document.footnotesPart) {\n this.footnoteMap = keyBy(document.footnotesPart.notes, x => x.id);\n }\n if (document.endnotesPart) {\n this.endnoteMap = keyBy(document.endnotesPart.notes, x => x.id);\n }\n if (document.settingsPart) {\n this.defaultTabSize = document.settingsPart.settings?.defaultTabStop;\n }\n if (!options.ignoreFonts && document.fontTablePart)\n this.renderFontTable(document.fontTablePart, styleContainer);\n var sectionElements = this.renderSections(document.documentPart.body);\n if (this.options.inWrapper) {\n bodyContainer.appendChild(this.renderWrapper(sectionElements));\n }\n else {\n appendChildren(bodyContainer, sectionElements);\n }\n if (this.commentHighlight && options.renderComments) {\n CSS.highlights.set(`${this.className}-comments`, this.commentHighlight);\n }\n this.postRenderTasks.forEach(t => t());\n await Promise.allSettled(this.tasks);\n this.refreshTabStops();\n }\n renderTheme(themePart, styleContainer) {\n const variables = {};\n const fontScheme = themePart.theme?.fontScheme;\n if (fontScheme) {\n if (fontScheme.majorFont) {\n variables['--docx-majorHAnsi-font'] = fontScheme.majorFont.latinTypeface;\n }\n if (fontScheme.minorFont) {\n variables['--docx-minorHAnsi-font'] = fontScheme.minorFont.latinTypeface;\n }\n }\n const colorScheme = themePart.theme?.colorScheme;\n if (colorScheme) {\n for (let [k, v] of Object.entries(colorScheme.colors)) {\n variables[`--docx-${k}-color`] = `#${v}`;\n }\n }\n const cssText = this.styleToString(`.${this.className}`, variables);\n styleContainer.appendChild(this.createStyleElement(cssText));\n }\n renderFontTable(fontsPart, styleContainer) {\n for (let f of fontsPart.fonts) {\n for (let ref of f.embedFontRefs) {\n this.tasks.push(this.document.loadFont(ref.id, ref.key).then(fontData => {\n const cssValues = {\n 'font-family': encloseFontFamily(f.name),\n 'src': `url(${fontData})`\n };\n if (ref.type == \"bold\" || ref.type == \"boldItalic\") {\n cssValues['font-weight'] = 'bold';\n }\n if (ref.type == \"italic\" || ref.type == \"boldItalic\") {\n cssValues['font-style'] = 'italic';\n }\n const cssText = this.styleToString(\"@font-face\", cssValues);\n styleContainer.appendChild(this.createComment(`docxjs ${f.name} font`));\n styleContainer.appendChild(this.createStyleElement(cssText));\n }));\n }\n }\n }\n processStyleName(className) {\n return className ? `${this.className}_${escapeClassName(className)}` : this.className;\n }\n processStyles(styles) {\n const stylesMap = keyBy(styles.filter(x => x.id != null), x => x.id);\n for (const style of styles.filter(x => x.basedOn)) {\n var baseStyle = stylesMap[style.basedOn];\n if (baseStyle) {\n style.paragraphProps = mergeDeep(style.paragraphProps, baseStyle.paragraphProps);\n style.runProps = mergeDeep(style.runProps, baseStyle.runProps);\n for (const baseValues of baseStyle.styles) {\n const styleValues = style.styles.find(x => x.target == baseValues.target);\n if (styleValues) {\n this.copyStyleProperties(baseValues.values, styleValues.values);\n }\n else {\n style.styles.push({ ...baseValues, values: { ...baseValues.values } });\n }\n }\n }\n else if (this.options.debug)\n console.warn(`Can't find base style ${style.basedOn}`);\n }\n for (let style of styles) {\n style.cssName = this.processStyleName(style.id);\n }\n return stylesMap;\n }\n prodessNumberings(numberings) {\n for (let num of numberings.filter(n => n.pStyleName)) {\n const style = this.findStyle(num.pStyleName);\n if (style?.paragraphProps?.numbering) {\n style.paragraphProps.numbering.level = num.level;\n }\n }\n }\n processElement(element) {\n if (element.children) {\n for (var e of element.children) {\n e.parent = element;\n if (e.type == DomType.Table) {\n this.processTable(e);\n }\n else {\n this.processElement(e);\n }\n }\n }\n }\n processTable(table) {\n for (var r of table.children) {\n for (var c of r.children) {\n c.cssStyle = this.copyStyleProperties(table.cellStyle, c.cssStyle, [\n \"border-left\", \"border-right\", \"border-top\", \"border-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"padding-bottom\"\n ]);\n this.processElement(c);\n }\n }\n }\n copyStyleProperties(input, output, attrs = null) {\n if (!input)\n return output;\n if (output == null)\n output = {};\n if (attrs == null)\n attrs = Object.getOwnPropertyNames(input);\n for (var key of attrs) {\n if (input.hasOwnProperty(key) && !output.hasOwnProperty(key))\n output[key] = input[key];\n }\n return output;\n }\n createPageElement(className, props) {\n var elem = this.createElement(\"section\", { className });\n if (props) {\n if (props.pageMargins) {\n elem.style.paddingLeft = props.pageMargins.left;\n elem.style.paddingRight = props.pageMargins.right;\n elem.style.paddingTop = props.pageMargins.top;\n elem.style.paddingBottom = props.pageMargins.bottom;\n }\n if (props.pageSize) {\n if (!this.options.ignoreWidth)\n elem.style.width = props.pageSize.width;\n if (!this.options.ignoreHeight)\n elem.style.minHeight = props.pageSize.height;\n }\n }\n return elem;\n }\n createSectionContent(props) {\n var elem = this.createElement(\"article\");\n if (props.columns && props.columns.numberOfColumns) {\n elem.style.columnCount = `${props.columns.numberOfColumns}`;\n elem.style.columnGap = props.columns.space;\n if (props.columns.separator) {\n elem.style.columnRule = \"1px solid black\";\n }\n }\n return elem;\n }\n renderSections(document) {\n const result = [];\n this.processElement(document);\n const sections = this.splitBySection(document.children, document.props);\n const pages = this.groupByPageBreaks(sections);\n let prevProps = null;\n for (let i = 0, l = pages.length; i < l; i++) {\n this.currentFootnoteIds = [];\n const section = pages[i][0];\n let props = section.sectProps;\n const pageElement = this.createPageElement(this.className, props);\n this.renderStyleValues(document.cssStyle, pageElement);\n this.options.renderHeaders && this.renderHeaderFooter(props.headerRefs, props, result.length, prevProps != props, pageElement);\n for (const sect of pages[i]) {\n var contentElement = this.createSectionContent(sect.sectProps);\n this.renderElements(sect.elements, contentElement);\n pageElement.appendChild(contentElement);\n props = sect.sectProps;\n }\n if (this.options.renderFootnotes) {\n this.renderNotes(this.currentFootnoteIds, this.footnoteMap, pageElement);\n }\n if (this.options.renderEndnotes && i == l - 1) {\n this.renderNotes(this.currentEndnoteIds, this.endnoteMap, pageElement);\n }\n this.options.renderFooters && this.renderHeaderFooter(props.footerRefs, props, result.length, prevProps != props, pageElement);\n result.push(pageElement);\n prevProps = props;\n }\n return result;\n }\n renderHeaderFooter(refs, props, page, firstOfSection, into) {\n if (!refs)\n return;\n var ref = (props.titlePage && firstOfSection ? refs.find(x => x.type == \"first\") : null)\n ?? (page % 2 == 1 ? refs.find(x => x.type == \"even\") : null)\n ?? refs.find(x => x.type == \"default\");\n var part = ref && this.document.findPartByRelId(ref.id, this.document.documentPart);\n if (part) {\n this.currentPart = part;\n if (!this.usedHederFooterParts.includes(part.path)) {\n this.processElement(part.rootElement);\n this.usedHederFooterParts.push(part.path);\n }\n const [el] = this.renderElements([part.rootElement], into);\n if (props?.pageMargins) {\n if (part.rootElement.type === DomType.Header) {\n el.style.marginTop = `calc(${props.pageMargins.header} - ${props.pageMargins.top})`;\n el.style.minHeight = `calc(${props.pageMargins.top} - ${props.pageMargins.header})`;\n }\n else if (part.rootElement.type === DomType.Footer) {\n el.style.marginBottom = `calc(${props.pageMargins.footer} - ${props.pageMargins.bottom})`;\n el.style.minHeight = `calc(${props.pageMargins.bottom} - ${props.pageMargins.footer})`;\n }\n }\n this.currentPart = null;\n }\n }\n isPageBreakElement(elem) {\n if (elem.type != DomType.Break)\n return false;\n if (elem.break == \"lastRenderedPageBreak\")\n return !this.options.ignoreLastRenderedPageBreak;\n return elem.break == \"page\";\n }\n isPageBreakSection(prev, next) {\n if (!prev)\n return false;\n if (!next)\n return false;\n return prev.pageSize?.orientation != next.pageSize?.orientation\n || prev.pageSize?.width != next.pageSize?.width\n || prev.pageSize?.height != next.pageSize?.height;\n }\n splitBySection(elements, defaultProps) {\n var current = { sectProps: null, elements: [], pageBreak: false };\n var result = [current];\n for (let elem of elements) {\n if (elem.type == DomType.Paragraph) {\n const s = this.findStyle(elem.styleName);\n if (s?.paragraphProps?.pageBreakBefore) {\n current.sectProps = sectProps;\n current.pageBreak = true;\n current = { sectProps: null, elements: [], pageBreak: false };\n result.push(current);\n }\n }\n current.elements.push(elem);\n if (elem.type == DomType.Paragraph) {\n const p = elem;\n var sectProps = p.sectionProps;\n var pBreakIndex = -1;\n var rBreakIndex = -1;\n if (this.options.breakPages && p.children) {\n pBreakIndex = p.children.findIndex(r => {\n rBreakIndex = r.children?.findIndex(this.isPageBreakElement.bind(this)) ?? -1;\n return rBreakIndex != -1;\n });\n }\n if (sectProps || pBreakIndex != -1) {\n current.sectProps = sectProps;\n current.pageBreak = pBreakIndex != -1;\n current = { sectProps: null, elements: [], pageBreak: false };\n result.push(current);\n }\n if (pBreakIndex != -1) {\n let breakRun = p.children[pBreakIndex];\n let splitRun = rBreakIndex < breakRun.children.length - 1;\n if (pBreakIndex < p.children.length - 1 || splitRun) {\n var children = elem.children;\n var newParagraph = { ...elem, children: children.slice(pBreakIndex) };\n elem.children = children.slice(0, pBreakIndex);\n current.elements.push(newParagraph);\n if (splitRun) {\n let runChildren = breakRun.children;\n let newRun = { ...breakRun, children: runChildren.slice(0, rBreakIndex) };\n elem.children.push(newRun);\n breakRun.children = runChildren.slice(rBreakIndex);\n }\n }\n }\n }\n }\n let currentSectProps = null;\n for (let i = result.length - 1; i >= 0; i--) {\n if (result[i].sectProps == null) {\n result[i].sectProps = currentSectProps ?? defaultProps;\n }\n else {\n currentSectProps = result[i].sectProps;\n }\n }\n return result;\n }\n groupByPageBreaks(sections) {\n let current = [];\n let prev;\n const result = [current];\n for (let s of sections) {\n current.push(s);\n if (this.options.ignoreLastRenderedPageBreak || s.pageBreak || this.isPageBreakSection(prev, s.sectProps))\n result.push(current = []);\n prev = s.sectProps;\n }\n return result.filter(x => x.length > 0);\n }\n renderWrapper(children) {\n return this.createElement(\"div\", { className: `${this.className}-wrapper` }, children);\n }\n renderDefaultStyle() {\n var c = this.className;\n var wrapperStyle = `\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; }`;\n if (this.options.hideWrapperOnPrint) {\n wrapperStyle = `@media not print { ${wrapperStyle} }`;\n }\n var styleText = `${wrapperStyle}\r\n.${c} { color: black; hyphens: auto; text-underline-position: from-font; }\r\nsection.${c} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; }\r\nsection.${c}>article { margin-bottom: auto; z-index: 1; }\r\nsection.${c}>footer { z-index: 1; }\r\n.${c} table { border-collapse: collapse; }\r\n.${c} table td, .${c} table th { vertical-align: top; }\r\n.${c} p { margin: 0pt; min-height: 1em; }\r\n.${c} span { white-space: pre-wrap; overflow-wrap: break-word; }\r\n.${c} a { color: inherit; text-decoration: inherit; }\r\n.${c} svg { fill: transparent; }\r\n`;\n if (this.options.renderComments) {\n styleText += `\r\n.${c}-comment-ref { cursor: default; }\r\n.${c}-comment-popover { display: none; z-index: 1000; padding: 0.5rem; background: white; position: absolute; box-shadow: 0 0 0.25rem rgba(0, 0, 0, 0.25); width: 30ch; }\r\n.${c}-comment-ref:hover~.${c}-comment-popover { display: block; }\r\n.${c}-comment-author,.${c}-comment-date { font-size: 0.875rem; color: #888; }\r\n`;\n }\n return this.createStyleElement(styleText);\n }\n renderNumbering(numberings, styleContainer) {\n var styleText = \"\";\n var resetCounters = [];\n for (var num of numberings) {\n var selector = `p.${this.numberingClass(num.id, num.level)}`;\n var listStyleType = \"none\";\n if (num.bullet) {\n let valiable = `--${this.className}-${num.bullet.src}`.toLowerCase();\n styleText += this.styleToString(`${selector}:before`, {\n \"content\": \"' '\",\n \"display\": \"inline-block\",\n \"background\": `var(${valiable})`\n }, num.bullet.style);\n this.tasks.push(this.document.loadNumberingImage(num.bullet.src).then(data => {\n var text = `${this.rootSelector} { ${valiable}: url(${data}) }`;\n styleContainer.appendChild(this.createStyleElement(text));\n }));\n }\n else if (num.levelText) {\n let counter = this.numberingCounter(num.id, num.level);\n const counterReset = counter + \" \" + (num.start - 1);\n if (num.level > 0) {\n styleText += this.styleToString(`p.${this.numberingClass(num.id, num.level - 1)}`, {\n \"counter-set\": counterReset\n });\n }\n resetCounters.push(counterReset);\n styleText += this.styleToString(`${selector}:before`, {\n \"content\": this.levelTextToContent(num.levelText, num.suff, num.id, this.numFormatToCssValue(num.format)),\n \"counter-increment\": counter,\n ...num.rStyle,\n });\n }\n else {\n listStyleType = this.numFormatToCssValue(num.format);\n }\n styleText += this.styleToString(selector, {\n \"display\": \"list-item\",\n \"list-style-position\": \"inside\",\n \"list-style-type\": listStyleType,\n ...num.pStyle\n });\n }\n if (resetCounters.length > 0) {\n styleText += this.styleToString(this.rootSelector, {\n \"counter-reset\": resetCounters.join(\" \")\n });\n }\n return this.createStyleElement(styleText);\n }\n renderStyles(styles) {\n var styleText = \"\";\n const stylesMap = this.styleMap;\n const defautStyles = keyBy(styles.filter(s => s.isDefault), s => s.target);\n for (const style of styles) {\n var subStyles = style.styles;\n if (style.linked) {\n var linkedStyle = style.linked && stylesMap[style.linked];\n if (linkedStyle)\n subStyles = subStyles.concat(linkedStyle.styles);\n else if (this.options.debug)\n console.warn(`Can't find linked style ${style.linked}`);\n }\n for (const subStyle of subStyles) {\n var selector = `${style.target ?? ''}.${style.cssName}`;\n if (style.target != subStyle.target)\n selector += ` ${subStyle.target}`;\n if (defautStyles[style.target] == style)\n selector = `.${this.className} ${style.target}, ` + selector;\n styleText += this.styleToString(selector, subStyle.values);\n }\n }\n return this.createStyleElement(styleText);\n }\n renderNotes(noteIds, notesMap, into) {\n var notes = noteIds.map(id => notesMap[id]).filter(x => x);\n if (notes.length > 0) {\n var result = this.createElement(\"ol\", null, this.renderElements(notes));\n into.appendChild(result);\n }\n }\n renderElement(elem) {\n switch (elem.type) {\n case DomType.Paragraph:\n return this.renderParagraph(elem);\n case DomType.BookmarkStart:\n return this.renderBookmarkStart(elem);\n case DomType.BookmarkEnd:\n return null;\n case DomType.Run:\n return this.renderRun(elem);\n case DomType.Table:\n return this.renderTable(elem);\n case DomType.Row:\n return this.renderTableRow(elem);\n case DomType.Cell:\n return this.renderTableCell(elem);\n case DomType.Hyperlink:\n return this.renderHyperlink(elem);\n case DomType.SmartTag:\n return this.renderSmartTag(elem);\n case DomType.Drawing:\n return this.renderDrawing(elem);\n case DomType.Image:\n return this.renderImage(elem);\n case DomType.Text:\n return this.renderText(elem);\n case DomType.Text:\n return this.renderText(elem);\n case DomType.DeletedText:\n return this.renderDeletedText(elem);\n case DomType.Tab:\n return this.renderTab(elem);\n case DomType.Symbol:\n return this.renderSymbol(elem);\n case DomType.Break:\n return this.renderBreak(elem);\n case DomType.Footer:\n return this.renderContainer(elem, \"footer\");\n case DomType.Header:\n return this.renderContainer(elem, \"header\");\n case DomType.Footnote:\n case DomType.Endnote:\n return this.renderContainer(elem, \"li\");\n case DomType.FootnoteReference:\n return this.renderFootnoteReference(elem);\n case DomType.EndnoteReference:\n return this.renderEndnoteReference(elem);\n case DomType.NoBreakHyphen:\n return this.createElement(\"wbr\");\n case DomType.VmlPicture:\n return this.renderVmlPicture(elem);\n case DomType.VmlElement:\n return this.renderVmlElement(elem);\n case DomType.MmlMath:\n return this.renderContainerNS(elem, ns.mathML, \"math\", { xmlns: ns.mathML });\n case DomType.MmlMathParagraph:\n return this.renderContainer(elem, \"span\");\n case DomType.MmlFraction:\n return this.renderContainerNS(elem, ns.mathML, \"mfrac\");\n case DomType.MmlBase:\n return this.renderContainerNS(elem, ns.mathML, elem.parent.type == DomType.MmlMatrixRow ? \"mtd\" : \"mrow\");\n case DomType.MmlNumerator:\n case DomType.MmlDenominator:\n case DomType.MmlFunction:\n case DomType.MmlLimit:\n case DomType.MmlBox:\n return this.renderContainerNS(elem, ns.mathML, \"mrow\");\n case DomType.MmlGroupChar:\n return this.renderMmlGroupChar(elem);\n case DomType.MmlLimitLower:\n return this.renderContainerNS(elem, ns.mathML, \"munder\");\n case DomType.MmlMatrix:\n return this.renderContainerNS(elem, ns.mathML, \"mtable\");\n case DomType.MmlMatrixRow:\n return this.renderContainerNS(elem, ns.mathML, \"mtr\");\n case DomType.MmlRadical:\n return this.renderMmlRadical(elem);\n case DomType.MmlSuperscript:\n return this.renderContainerNS(elem, ns.mathML, \"msup\");\n case DomType.MmlSubscript:\n return this.renderContainerNS(elem, ns.mathML, \"msub\");\n case DomType.MmlDegree:\n case DomType.MmlSuperArgument:\n case DomType.MmlSubArgument:\n return this.renderContainerNS(elem, ns.mathML, \"mn\");\n case DomType.MmlFunctionName:\n return this.renderContainerNS(elem, ns.mathML, \"ms\");\n case DomType.MmlDelimiter:\n return this.renderMmlDelimiter(elem);\n case DomType.MmlRun:\n return this.renderMmlRun(elem);\n case DomType.MmlNary:\n return this.renderMmlNary(elem);\n case DomType.MmlPreSubSuper:\n return this.renderMmlPreSubSuper(elem);\n case DomType.MmlBar:\n return this.renderMmlBar(elem);\n case DomType.MmlEquationArray:\n return this.renderMllList(elem);\n case DomType.Inserted:\n return this.renderInserted(elem);\n case DomType.Deleted:\n return this.renderDeleted(elem);\n case DomType.CommentRangeStart:\n return this.renderCommentRangeStart(elem);\n case DomType.CommentRangeEnd:\n return this.renderCommentRangeEnd(elem);\n case DomType.CommentReference:\n return this.renderCommentReference(elem);\n case DomType.AltChunk:\n return this.renderAltChunk(elem);\n }\n return null;\n }\n renderElements(elems, into) {\n if (elems == null)\n return null;\n var result = elems.flatMap(e => this.renderElement(e)).filter(e => e != null);\n if (into)\n appendChildren(into, result);\n return result;\n }\n renderContainer(elem, tagName, props) {\n return this.createElement(tagName, props, this.renderElements(elem.children));\n }\n renderContainerNS(elem, ns, tagName, props) {\n return this.createElementNS(ns, tagName, props, this.renderElements(elem.children));\n }\n renderParagraph(elem) {\n var result = this.renderContainer(elem, \"p\");\n const style = this.findStyle(elem.styleName);\n elem.tabs ?? (elem.tabs = style?.paragraphProps?.tabs);\n this.renderClass(elem, result);\n this.renderStyleValues(elem.cssStyle, result);\n this.renderCommonProperties(result.style, elem);\n const numbering = elem.numbering ?? style?.paragraphProps?.numbering;\n if (numbering) {\n result.classList.add(this.numberingClass(numbering.id, numbering.level));\n }\n return result;\n }\n renderRunProperties(style, props) {\n this.renderCommonProperties(style, props);\n }\n renderCommonProperties(style, props) {\n if (props == null)\n return;\n if (props.color) {\n style[\"color\"] = props.color;\n }\n if (props.fontSize) {\n style[\"font-size\"] = props.fontSize;\n }\n }\n renderHyperlink(elem) {\n var result = this.renderContainer(elem, \"a\");\n this.renderStyleValues(elem.cssStyle, result);\n let href = '';\n if (elem.id) {\n const rel = this.document.documentPart.rels.find(it => it.id == elem.id && it.targetMode === \"External\");\n href = rel?.target ?? href;\n }\n if (elem.anchor) {\n href += `#${elem.anchor}`;\n }\n result.href = href;\n return result;\n }\n renderSmartTag(elem) {\n return this.renderContainer(elem, \"span\");\n }\n renderCommentRangeStart(commentStart) {\n if (!this.options.renderComments)\n return null;\n const rng = new Range();\n this.commentHighlight?.add(rng);\n const result = this.createComment(`start of comment #${commentStart.id}`);\n this.later(() => rng.setStart(result, 0));\n this.commentMap[commentStart.id] = rng;\n return result;\n }\n renderCommentRangeEnd(commentEnd) {\n if (!this.options.renderComments)\n return null;\n const rng = this.commentMap[commentEnd.id];\n const result = this.createComment(`end of comment #${commentEnd.id}`);\n this.later(() => rng?.setEnd(result, 0));\n return result;\n }\n renderCommentReference(commentRef) {\n if (!this.options.renderComments)\n return null;\n var comment = this.document.commentsPart?.commentMap[commentRef.id];\n if (!comment)\n return null;\n const frg = new DocumentFragment();\n const commentRefEl = this.createElement(\"span\", { className: `${this.className}-comment-ref` }, ['💬']);\n const commentsContainerEl = this.createElement(\"div\", { className: `${this.className}-comment-popover` });\n this.renderCommentContent(comment, commentsContainerEl);\n frg.appendChild(this.createComment(`comment #${comment.id} by ${comment.author} on ${comment.date}`));\n frg.appendChild(commentRefEl);\n frg.appendChild(commentsContainerEl);\n return frg;\n }\n renderAltChunk(elem) {\n if (!this.options.renderAltChunks)\n return null;\n var result = this.createElement(\"iframe\");\n this.tasks.push(this.document.loadAltChunk(elem.id, this.currentPart).then(x => {\n result.srcdoc = x;\n }));\n return result;\n }\n renderCommentContent(comment, container) {\n container.appendChild(this.createElement('div', { className: `${this.className}-comment-author` }, [comment.author]));\n container.appendChild(this.createElement('div', { className: `${this.className}-comment-date` }, [new Date(comment.date).toLocaleString()]));\n this.renderElements(comment.children, container);\n }\n renderDrawing(elem) {\n var result = this.renderContainer(elem, \"div\");\n result.style.display = \"inline-block\";\n result.style.position = \"relative\";\n result.style.textIndent = \"0px\";\n this.renderStyleValues(elem.cssStyle, result);\n return result;\n }\n renderImage(elem) {\n let result = this.createElement(\"img\");\n let transform = elem.cssStyle?.transform;\n this.renderStyleValues(elem.cssStyle, result);\n if (elem.srcRect && elem.srcRect.some(x => x != 0)) {\n var [left, top, right, bottom] = elem.srcRect;\n transform = `scale(${1 / (1 - left - right)}, ${1 / (1 - top - bottom)})`;\n result.style['clip-path'] = `rect(${(100 * top).toFixed(2)}% ${(100 * (1 - right)).toFixed(2)}% ${(100 * (1 - bottom)).toFixed(2)}% ${(100 * left).toFixed(2)}%)`;\n }\n if (elem.rotation)\n transform = `rotate(${elem.rotation}deg) ${transform ?? ''}`;\n result.style.transform = transform?.trim();\n if (this.document) {\n this.tasks.push(this.document.loadDocumentImage(elem.src, this.currentPart).then(x => {\n result.src = x;\n }));\n }\n return result;\n }\n renderText(elem) {\n return this.htmlDocument.createTextNode(elem.text);\n }\n renderDeletedText(elem) {\n return this.options.renderChanges ? this.renderText(elem) : null;\n }\n renderBreak(elem) {\n if (elem.break == \"textWrapping\") {\n return this.createElement(\"br\");\n }\n return null;\n }\n renderInserted(elem) {\n if (this.options.renderChanges)\n return this.renderContainer(elem, \"ins\");\n return this.renderElements(elem.children);\n }\n renderDeleted(elem) {\n if (this.options.renderChanges)\n return this.renderContainer(elem, \"del\");\n return null;\n }\n renderSymbol(elem) {\n var span = this.createElement(\"span\");\n span.style.fontFamily = elem.font;\n span.innerHTML = `&#x${elem.char};`;\n return span;\n }\n renderFootnoteReference(elem) {\n var result = this.createElement(\"sup\");\n this.currentFootnoteIds.push(elem.id);\n result.textContent = `${this.currentFootnoteIds.length}`;\n return result;\n }\n renderEndnoteReference(elem) {\n var result = this.createElement(\"sup\");\n this.currentEndnoteIds.push(elem.id);\n result.textContent = `${this.currentEndnoteIds.length}`;\n return result;\n }\n renderTab(elem) {\n var tabSpan = this.createElement(\"span\");\n tabSpan.innerHTML = \" \";\n if (this.options.experimental) {\n tabSpan.className = this.tabStopClass();\n var stops = findParent(elem, DomType.Paragraph)?.tabs;\n this.currentTabs.push({ stops, span: tabSpan });\n }\n return tabSpan;\n }\n renderBookmarkStart(elem) {\n return this.createElement(\"span\", { id: elem.name });\n }\n renderRun(elem) {\n if (elem.fieldRun)\n return null;\n const result = this.createElement(\"span\");\n if (elem.id)\n result.id = elem.id;\n this.renderClass(elem, result);\n this.renderStyleValues(elem.cssStyle, result);\n if (elem.verticalAlign) {\n const wrapper = this.createElement(elem.verticalAlign);\n this.renderElements(elem.children, wrapper);\n result.appendChild(wrapper);\n }\n else {\n this.renderElements(elem.children, result);\n }\n return result;\n }\n renderTable(elem) {\n let result = this.createElement(\"table\");\n this.tableCellPositions.push(this.currentCellPosition);\n this.tableVerticalMerges.push(this.currentVerticalMerge);\n this.currentVerticalMerge = {};\n this.currentCellPosition = { col: 0, row: 0 };\n if (elem.columns)\n result.appendChild(this.renderTableColumns(elem.columns));\n this.renderClass(elem, result);\n this.renderElements(elem.children, result);\n this.renderStyleValues(elem.cssStyle, result);\n this.currentVerticalMerge = this.tableVerticalMerges.pop();\n this.currentCellPosition = this.tableCellPositions.pop();\n return result;\n }\n renderTableColumns(columns) {\n let result = this.createElement(\"colgroup\");\n for (let col of columns) {\n let colElem = this.createElement(\"col\");\n if (col.width)\n colElem.style.width = col.width;\n result.appendChild(colElem);\n }\n return result;\n }\n renderTableRow(elem) {\n let result = this.createElement(\"tr\");\n this.currentCellPosition.col = 0;\n if (elem.gridBefore)\n result.appendChild(this.renderTableCellPlaceholder(elem.gridBefore));\n this.renderClass(elem, result);\n this.renderElements(elem.children, result);\n this.renderStyleValues(elem.cssStyle, result);\n if (elem.gridAfter)\n result.appendChild(this.renderTableCellPlaceholder(elem.gridAfter));\n this.currentCellPosition.row++;\n return result;\n }\n renderTableCellPlaceholder(colSpan) {\n const result = this.createElement(\"td\", { colSpan });\n result.style['border'] = 'none';\n return result;\n }\n renderTableCell(elem) {\n let result = this.renderContainer(elem, \"td\");\n const key = this.currentCellPosition.col;\n if (elem.verticalMerge) {\n if (elem.verticalMerge == \"restart\") {\n this.currentVerticalMerge[key] = result;\n result.rowSpan = 1;\n }\n else if (this.currentVerticalMerge[key]) {\n this.currentVerticalMerge[key].rowSpan += 1;\n result.style.display = \"none\";\n }\n }\n else {\n this.currentVerticalMerge[key] = null;\n }\n this.renderClass(elem, result);\n this.renderStyleValues(elem.cssStyle, result);\n if (elem.span)\n result.colSpan = elem.span;\n this.currentCellPosition.col += result.colSpan;\n return result;\n }\n renderVmlPicture(elem) {\n return this.renderContainer(elem, \"div\");\n }\n renderVmlElement(elem) {\n var container = this.createSvgElement(\"svg\");\n container.setAttribute(\"style\", elem.cssStyleText);\n const result = this.renderVmlChildElement(elem);\n if (elem.imageHref?.id) {\n this.tasks.push(this.document?.loadDocumentImage(elem.imageHref.id, this.currentPart)\n .then(x => result.setAttribute(\"href\", x)));\n }\n container.appendChild(result);\n requestAnimationFrame(() => {\n const bb = container.firstElementChild.getBBox();\n container.setAttribute(\"width\", `${Math.ceil(bb.x + bb.width)}`);\n container.setAttribute(\"height\", `${Math.ceil(bb.y + bb.height)}`);\n });\n return container;\n }\n renderVmlChildElement(elem) {\n const result = this.createSvgElement(elem.tagName);\n Object.entries(elem.attrs).forEach(([k, v]) => result.setAttribute(k, v));\n for (let child of elem.children) {\n if (child.type == DomType.VmlElement) {\n result.appendChild(this.renderVmlChildElement(child));\n }\n else {\n result.appendChild(...asArray(this.renderElement(child)));\n }\n }\n return result;\n }\n renderMmlRadical(elem) {\n const base = elem.children.find(el => el.type == DomType.MmlBase);\n if (elem.props?.hideDegree) {\n return this.createElementNS(ns.mathML, \"msqrt\", null, this.renderElements([base]));\n }\n const degree = elem.children.find(el => el.type == DomType.MmlDegree);\n return this.createElementNS(ns.mathML, \"mroot\", null, this.renderElements([base, degree]));\n }\n renderMmlDelimiter(elem) {\n const children = [];\n children.push(this.createElementNS(ns.mathML, \"mo\", null, [elem.props.beginChar ?? '(']));\n children.push(...this.renderElements(elem.children));\n children.push(this.createElementNS(ns.mathML, \"mo\", null, [elem.props.endChar ?? ')']));\n return this.createElementNS(ns.mathML, \"mrow\", null, children);\n }\n renderMmlNary(elem) {\n const children = [];\n const grouped = keyBy(elem.children, x => x.type);\n const sup = grouped[DomType.MmlSuperArgument];\n const sub = grouped[DomType.MmlSubArgument];\n const supElem = sup ? this.createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sup))) : null;\n const subElem = sub ? this.createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sub))) : null;\n const charElem = this.createElementNS(ns.mathML, \"mo\", null, [elem.props?.char ?? '\\u222B']);\n if (supElem || subElem) {\n children.push(this.createElementNS(ns.mathML, \"munderover\", null, [charElem, subElem, supElem]));\n }\n else if (supElem) {\n children.push(this.createElementNS(ns.mathML, \"mover\", null, [charElem, supElem]));\n }\n else if (subElem) {\n children.push(this.createElementNS(ns.mathML, \"munder\", null, [charElem, subElem]));\n }\n else {\n children.push(charElem);\n }\n children.push(...this.renderElements(grouped[DomType.MmlBase].children));\n return this.createElementNS(ns.mathML, \"mrow\", null, children);\n }\n renderMmlPreSubSuper(elem) {\n const children = [];\n const grouped = keyBy(elem.children, x => x.type);\n const sup = grouped[DomType.MmlSuperArgument];\n const sub = grouped[DomType.MmlSubArgument];\n const supElem = sup ? this.createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sup))) : null;\n const subElem = sub ? this.createElementNS(ns.mathML, \"mo\", null, asArray(this.renderElement(sub))) : null;\n const stubElem = this.createElementNS(ns.mathML, \"mo\", null);\n children.push(this.createElementNS(ns.mathML, \"msubsup\", null, [stubElem, subElem, supElem]));\n children.push(...this.renderElements(grouped[DomType.MmlBase].children));\n return this.createElementNS(ns.mathML, \"mrow\", null, children);\n }\n renderMmlGroupChar(elem) {\n const tagName = elem.props.verticalJustification === \"bot\" ? \"mover\" : \"munder\";\n const result = this.renderContainerNS(elem, ns.mathML, tagName);\n if (elem.props.char) {\n result.appendChild(this.createElementNS(ns.mathML, \"mo\", null, [elem.props.char]));\n }\n return result;\n }\n renderMmlBar(elem) {\n const result = this.renderContainerNS(elem, ns.mathML, \"mrow\");\n switch (elem.props.position) {\n case \"top\":\n result.style.textDecoration = \"overline\";\n break;\n case \"bottom\":\n result.style.textDecoration = \"underline\";\n break;\n }\n return result;\n }\n renderMmlRun(elem) {\n const result = this.createElementNS(ns.mathML, \"ms\", null, this.renderElements(elem.children));\n this.renderClass(elem, result);\n this.renderStyleValues(elem.cssStyle, result);\n return result;\n }\n renderMllList(elem) {\n const result = this.createElementNS(ns.mathML, \"mtable\");\n this.renderClass(elem, result);\n this.renderStyleValues(elem.cssStyle, result);\n for (let child of this.renderElements(elem.children)) {\n result.appendChild(this.createElementNS(ns.mathML, \"mtr\", null, [\n this.createElementNS(ns.mathML, \"mtd\", null, [child])\n ]));\n }\n return result;\n }\n renderStyleValues(style, ouput) {\n for (let k in style) {\n if (k.startsWith(\"$\")) {\n ouput.setAttribute(k.slice(1), style[k]);\n }\n else {\n ouput.style[k] = style[k];\n }\n }\n }\n renderClass(input, ouput) {\n if (input.className)\n ouput.className = input.className;\n if (input.styleName)\n ouput.classList.add(this.processStyleName(input.styleName));\n }\n findStyle(styleName) {\n return styleName && this.styleMap?.[styleName];\n }\n numberingClass(id, lvl) {\n return `${this.className}-num-${id}-${lvl}`;\n }\n tabStopClass() {\n return `${this.className}-tab-stop`;\n }\n styleToString(selectors, values, cssText = null) {\n let result = `${selectors} {\\r\\n`;\n for (const key in values) {\n if (key.startsWith('$'))\n continue;\n result += ` ${key}: ${values[key]};\\r\\n`;\n }\n if (cssText)\n result += cssText;\n return result + \"}\\r\\n\";\n }\n numberingCounter(id, lvl) {\n return `${this.className}-num-${id}-${lvl}`;\n }\n levelTextToContent(text, suff, id, numformat) {\n const suffMap = {\n \"tab\": \"\\\\9\",\n \"space\": \"\\\\a0\",\n };\n var result = text.replace(/%\\d*/g, s => {\n let lvl = parseInt(s.substring(1), 10) - 1;\n return `\"counter(${this.numberingCounter(id, lvl)}, ${numformat})\"`;\n });\n return `\"${result}${suffMap[suff] ?? \"\"}\"`;\n }\n numFormatToCssValue(format) {\n var mapping = {\n none: \"none\",\n bullet: \"disc\",\n decimal: \"decimal\",\n lowerLetter: \"lower-alpha\",\n upperLetter: \"upper-alpha\",\n lowerRoman: \"lower-roman\",\n upperRoman: \"upper-roman\",\n decimalZero: \"decimal-leading-zero\",\n aiueo: \"katakana\",\n aiueoFullWidth: \"katakana\",\n chineseCounting: \"simp-chinese-informal\",\n chineseCountingThousand: \"simp-chinese-informal\",\n chineseLegalSimplified: \"simp-chinese-formal\",\n chosung: \"hangul-consonant\",\n ideographDigital: \"cjk-ideographic\",\n ideographTraditional: \"cjk-heavenly-stem\",\n ideographLegalTraditional: \"trad-chinese-formal\",\n ideographZodiac: \"cjk-earthly-branch\",\n iroha: \"katakana-iroha\",\n irohaFullWidth: \"katakana-iroha\",\n japaneseCounting: \"japanese-informal\",\n japaneseDigitalTenThousand: \"cjk-decimal\",\n japaneseLegal: \"japanese-formal\",\n thaiNumbers: \"thai\",\n koreanCounting: \"korean-hangul-formal\",\n koreanDigital: \"korean-hangul-formal\",\n koreanDigital2: \"korean-hanja-informal\",\n hebrew1: \"hebrew\",\n hebrew2: \"hebrew\",\n hindiNumbers: \"devanagari\",\n ganada: \"hangul\",\n taiwaneseCounting: \"cjk-ideographic\",\n taiwaneseCountingThousand: \"cjk-ideographic\",\n taiwaneseDigital: \"cjk-decimal\",\n };\n return mapping[format] ?? format;\n }\n refreshTabStops() {\n if (!this.options.experimental)\n return;\n setTimeout(() => {\n const pixelToPoint = computePixelToPoint();\n for (let tab of this.currentTabs) {\n updateTabStop(tab.span, tab.stops, this.defaultTabSize, pixelToPoint);\n }\n }, 500);\n }\n createElementNS(ns, tagName, props, children) {\n var result = ns ? this.htmlDocument.createElementNS(ns, tagName) : this.htmlDocument.createElement(tagName);\n Object.assign(result, props);\n children && appendChildren(result, children);\n return result;\n }\n createElement(tagName, props, children) {\n return this.createElementNS(undefined, tagName, props, children);\n }\n createSvgElement(tagName, props, children) {\n return this.createElementNS(ns.svg, tagName, props, children);\n }\n createStyleElement(cssText) {\n return this.createElement(\"style\", { innerHTML: cssText });\n }\n createComment(text) {\n return this.htmlDocument.createComment(text);\n }\n later(func) {\n this.postRenderTasks.push(func);\n }\n}\nfunction removeAllElements(elem) {\n elem.innerHTML = '';\n}\nfunction appendChildren(elem, children) {\n children.forEach(c => elem.appendChild(isString(c) ? document.createTextNode(c) : c));\n}\nfunction findParent(elem, type) {\n var parent = elem.parent;\n while (parent != null && parent.type != type)\n parent = parent.parent;\n return parent;\n}\n\nconst defaultOptions = {\n ignoreHeight: false,\n ignoreWidth: false,\n ignoreFonts: false,\n breakPages: true,\n debug: false,\n experimental: false,\n className: \"docx\",\n inWrapper: true,\n hideWrapperOnPrint: false,\n trimXmlDeclaration: true,\n ignoreLastRenderedPageBreak: true,\n renderHeaders: true,\n renderFooters: true,\n renderFootnotes: true,\n renderEndnotes: true,\n useBase64URL: false,\n renderChanges: false,\n renderComments: false,\n renderAltChunks: true\n};\nfunction parseAsync(data, userOptions) {\n const ops = { ...defaultOptions, ...userOptions };\n return WordDocument.load(data, new DocumentParser(ops), ops);\n}\nasync function renderDocument(document, bodyContainer, styleContainer, userOptions) {\n const ops = { ...defaultOptions, ...userOptions };\n const renderer = new HtmlRenderer(window.document);\n return await renderer.render(document, bodyContainer, styleContainer, ops);\n}\nasync function renderAsync(data, bodyContainer, styleContainer, userOptions) {\n const doc = await parseAsync(data, userOptions);\n await renderDocument(doc, bodyContainer, styleContainer, userOptions);\n return doc;\n}\n\nexport { defaultOptions, parseAsync, renderAsync, renderDocument };\n//# sourceMappingURL=docx-preview.mjs.map\n"],"names":["RelationshipTypes","parseRelationships","root","xml","e","escapeClassName","className","encloseFontFamily","fontFamily","splitPath","path","si","folder","fileName","resolvePath","base","prefix","keyBy","array","by","a","x","blobToBase64","blob","resolve","reject","reader","isObject","item","isString","mergeDeep","target","sources","source","key","val","asArray","clamp","min","max","ns$1","LengthUsage","convertLength","usage","num","convertBoolean","v","defaultValue","parseCommonProperty","elem","props","parseXmlString","xmlString","trimXmlDeclaration","removeUTF8BOM","result","errorText","hasXmlParserError","doc","_a","data","serializeXmlString","XmlParser","localName","i","l","c","attrLocalName","el","node","attrName","globalXmlParser","Part","_package","xmlText","xmlDoc","embedFontTypeMap","parseFonts","parseFont","parseEmbedFontRef","FontTablePart","OpenXmlPackage","_zip","options","p","normalizePath","content","input","zip","JSZip","type","relsPath","f","fn","txt","DocumentPart","pkg","parser","parseBorder","parseBorders","SectionType","parseSectionProperties","section","parseColumns","parseFooterHeaderReference","parsePageNumber","parseLineSpacing","parseRunProperties","parseRunProperty","parseParagraphProperties","parseParagraphProperty","parseTabs","parseNumbering$1","parseNumberingPart","parseNumbering","parseAbstractNumbering","parseNumberingBulletPicture","parseNumberingLevelOverrride","parseNumberingLevel","pict","shape","imagedata","NumberingPart","StylesPart","DomType","OpenXmlElementBase","WmlHeader","WmlFooter","BaseHeaderFooterPart","HeaderPart","FooterPart","parseExtendedProps","xmlParser","safeParseToInt","value","ExtendedPropsPart","parseCoreProps","CorePropsPart","DmlTheme","parseTheme","themeElements","parseColorScheme","parseFontScheme","srgbClr","sysClr","parseFontInfo","ThemePart","WmlBaseNote","WmlFootnote","WmlEndnote","BaseNotePart","FootnotesPart","EndnotesPart","parseSettings","parseNoteProperties","SettingsPart","parseCustomProps","firstChild","CustomPropsPart","CommentsPart","CommentsExtendedPart","topLevelRels","WordDocument","d","rel","r","part","id","deobfuscate","basePart","outputType","guidKey","trimmed","numbers","parseBookmarkStart","parseBookmarkEnd","VmlElement","parseVmlElement","at","x1","y1","parsePoint","x2","y2","parseStroke","parseFill","child","WmlComment","WmlCommentReference","WmlCommentRangeStart","WmlCommentRangeEnd","autos","supportedNamespaceURIs","mmlTagMap","DocumentParser","elemName","elemClass","xbody","background","sectPr","color","xmlUtil","element","children","xstyles","n","rPr","pPr","selector","modificator","mapping","bullets","numId","abstractNumId","bulletId","sdtContent","parentParser","paragraph","values","dropCap","parent","uri","propsTag","run","choice","requires","namespaceURI","isAnchor","wrapType","simplePos","posX","posY","pos","alignNode","offsetNode","g","graphicData","blipFill","blip","srcRect","spPr","xfrm","table","topFromText","bottomFromText","rightFromText","leftFromText","row","cell","directionMap","direction","style","childStyle","handler","col","ascii","asciiTheme","eastAsia","fonts","firstLine","hanging","left","start","right","end","before","after","line","lineRule","output","knownColors","defValue","autoColor","themeColor","attr","size","_","asTagName","b","defaultTab","maxTabs","computePixelToPoint","container","temp","updateTabStop","tabs","defaultTabSize","pixelToPoint","ebb","pbb","pcs","tabStops","t","lengthToPoint","lastTab","pWidthPt","marginLeft","pOffset","tab","width","nextIdx","range","mul","nextBB","offset","length","ns","HtmlRenderer","htmlDocument","document","bodyContainer","styleContainer","removeAllElements","sectionElements","appendChildren","themePart","variables","fontScheme","colorScheme","_b","k","cssText","fontsPart","ref","fontData","cssValues","styles","stylesMap","baseStyle","baseValues","styleValues","numberings","attrs","sections","pages","prevProps","pageElement","sect","contentElement","refs","page","firstOfSection","into","prev","next","_c","_d","_e","_f","elements","defaultProps","current","s","sectProps","pBreakIndex","rBreakIndex","breakRun","splitRun","newParagraph","runChildren","newRun","currentSectProps","wrapperStyle","styleText","resetCounters","listStyleType","valiable","text","counter","counterReset","defautStyles","subStyles","linkedStyle","subStyle","noteIds","notesMap","notes","elems","tagName","numbering","href","it","commentStart","rng","commentEnd","commentRef","comment","frg","commentRefEl","commentsContainerEl","transform","top","bottom","span","tabSpan","stops","findParent","wrapper","columns","colElem","colSpan","bb","degree","grouped","sup","sub","supElem","subElem","charElem","stubElem","ouput","styleName","lvl","selectors","suff","numformat","suffMap","format","func","defaultOptions","parseAsync","userOptions","ops","renderDocument","renderAsync"],"mappings":"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","x_google_ignoreList":[0]}
|