viggomeesters_obsidian-word.../main.js
2026-06-14 10:21:49 +02:00

2 lines
23 KiB
JavaScript

/* Word Viewer generated bundle */
"use strict";var ee=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Ke=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Qe=(t,e)=>{for(var r in e)ee(t,r,{get:e[r],enumerable:!0})},Je=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ke(e))!Ye.call(t,i)&&i!==r&&ee(t,i,{get:()=>e[i],enumerable:!(n=Xe(e,i))||n.enumerable});return t};var et=t=>Je(ee({},"__esModule",{value:!0}),t);var Yt={};Qe(Yt,{default:()=>X});module.exports=et(Yt);var b=require("obsidian");var y=Uint8Array,P=Uint16Array,tt=Int32Array,Ce=new y([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Ee=new y([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),rt=new y([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_e=function(t,e){for(var r=new P(31),n=0;n<31;++n)r[n]=e+=1<<t[n-1];for(var i=new tt(r[30]),n=1;n<30;++n)for(var o=r[n];o<r[n+1];++o)i[o]=o-r[n]<<5|n;return{b:r,r:i}},Te=_e(Ce,2),Me=Te.b,nt=Te.r;Me[28]=258,nt[258]=28;var ze=_e(Ee,0),it=ze.b,Jt=ze.r,ie=new P(32768);for(f=0;f<32768;++f)k=(f&43690)>>1|(f&21845)<<1,k=(k&52428)>>2|(k&13107)<<2,k=(k&61680)>>4|(k&3855)<<4,ie[f]=((k&65280)>>8|(k&255)<<8)>>1;var k,f,O=(function(t,e,r){for(var n=t.length,i=0,o=new P(e);i<n;++i)t[i]&&++o[t[i]-1];var l=new P(e);for(i=1;i<e;++i)l[i]=l[i-1]+o[i-1]<<1;var s;if(r){s=new P(1<<e);var h=15-e;for(i=0;i<n;++i)if(t[i])for(var v=i<<4|t[i],p=e-t[i],a=l[t[i]-1]++<<p,c=a|(1<<p)-1;a<=c;++a)s[ie[a]>>h]=v}else for(s=new P(n),i=0;i<n;++i)t[i]&&(s[i]=ie[l[t[i]-1]++]>>15-t[i]);return s}),H=new y(288);for(f=0;f<144;++f)H[f]=8;var f;for(f=144;f<256;++f)H[f]=9;var f;for(f=256;f<280;++f)H[f]=7;var f;for(f=280;f<288;++f)H[f]=8;var f,ke=new y(32);for(f=0;f<32;++f)ke[f]=5;var f;var ot=O(H,9,1);var at=O(ke,5,1),te=function(t){for(var e=t[0],r=1;r<t.length;++r)t[r]>e&&(e=t[r]);return e},T=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(e&7)&r},re=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(e&7)},st=function(t){return(t+7)/8|0},ae=function(t,e,r){return(e==null||e<0)&&(e=0),(r==null||r>t.length)&&(r=t.length),new y(t.subarray(e,r))};var lt=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],x=function(t,e,r){var n=new Error(e||lt[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,x),!r)throw n;return n},ct=function(t,e,r,n){var i=t.length,o=n?n.length:0;if(!i||e.f&&!e.l)return r||new y(0);var l=!r,s=l||e.i!=2,h=e.i;l&&(r=new y(i*3));var v=function(xe){var ye=r.length;if(xe>ye){var De=new y(Math.max(ye*2,xe));De.set(r),r=De}},p=e.f||0,a=e.p||0,c=e.b||0,g=e.l,w=e.d,d=e.m,M=e.n,D=i*8;do{if(!g){p=T(t,a,1);var L=T(t,a+1,3);if(a+=3,L)if(L==1)g=ot,w=at,d=9,M=5;else if(L==2){var u=T(t,a,31)+257,I=T(t,a+10,15)+4,he=u+T(t,a+5,31)+1;a+=14;for(var R=new y(he),K=new y(19),E=0;E<I;++E)K[rt[E]]=T(t,a+E*3,7);a+=I*3;for(var ve=te(K),je=(1<<ve)-1,Ge=O(K,ve,1),E=0;E<he;){var pe=Ge[T(t,a,je)];a+=pe&15;var C=pe>>4;if(C<16)R[E++]=C;else{var $=0,G=0;for(C==16?(G=3+T(t,a,3),a+=2,$=R[E-1]):C==17?(G=3+T(t,a,7),a+=3):C==18&&(G=11+T(t,a,127),a+=7);G--;)R[E++]=$}}var ge=R.subarray(0,u),S=R.subarray(u);d=te(ge),M=te(S),g=O(ge,d,1),w=O(S,M,1)}else x(1);else{var C=st(a)+4,B=t[C-4]|t[C-3]<<8,A=C+B;if(A>i){h&&x(0);break}s&&v(c+B),r.set(t.subarray(C,A),c),e.b=c+=B,e.p=a=A*8,e.f=p;continue}if(a>D){h&&x(0);break}}s&&v(c+131072);for(var We=(1<<d)-1,Ve=(1<<M)-1,Y=a;;Y=a){var $=g[re(t,a)&We],F=$>>4;if(a+=$&15,a>D){h&&x(0);break}if($||x(2),F<256)r[c++]=F;else if(F==256){Y=a,g=null;break}else{var de=F-254;if(F>264){var E=F-257,U=Ce[E];de=T(t,a,(1<<U)-1)+Me[E],a+=U}var Q=w[re(t,a)&Ve],J=Q>>4;Q||x(3),a+=Q&15;var S=it[J];if(J>3){var U=Ee[J];S+=re(t,a)&(1<<U)-1,a+=U}if(a>D){h&&x(0);break}s&&v(c+131072);var we=c+de;if(c<S){var me=o-S,qe=Math.min(S,we);for(me+c<0&&x(3);c<qe;++c)r[c]=n[me+c]}for(;c<we;++c)r[c]=r[c-S]}}e.l=g,e.p=Y,e.b=c,e.f=p,g&&(p=1,e.m=d,e.d=w,e.n=M)}while(!p);return c!=r.length&&l?ae(r,0,c):r.subarray(0,c)};var ut=new y(0);var z=function(t,e){return t[e]|t[e+1]<<8},_=function(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0},ne=function(t,e){return _(t,e)+_(t,e+4)*4294967296};function ft(t,e){return ct(t,{i:2},e&&e.out,e&&e.dictionary)}var oe=typeof TextDecoder<"u"&&new TextDecoder,ht=0;try{oe.decode(ut,{stream:!0}),ht=1}catch{}var vt=function(t){for(var e="",r=0;;){var n=t[r++],i=(n>127)+(n>223)+(n>239);if(r+i>t.length)return{s:e,r:ae(t,r-1)};i?i==3?(n=((n&15)<<18|(t[r++]&63)<<12|(t[r++]&63)<<6|t[r++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|t[r++]&63):e+=String.fromCharCode((n&15)<<12|(t[r++]&63)<<6|t[r++]&63):e+=String.fromCharCode(n)}};function W(t,e){if(e){for(var r="",n=0;n<t.length;n+=16384)r+=String.fromCharCode.apply(null,t.subarray(n,n+16384));return r}else{if(oe)return oe.decode(t);var i=vt(t),o=i.s,r=i.r;return r.length&&x(8),o}}var pt=function(t,e){return e+30+z(t,e+26)+z(t,e+28)},gt=function(t,e,r){var n=z(t,e+28),i=z(t,e+30),o=W(t.subarray(e+46,e+46+n),!(z(t,e+8)&2048)),l=e+46+n,s=dt(t,l,i,r,_(t,e+20),_(t,e+24),_(t,e+42)),h=s[0],v=s[1],p=s[2];return[z(t,e+10),h,v,o,l+i+z(t,e+32),p]},dt=function(t,e,r,n,i,o,l){var s=i==4294967295,h=o==4294967295,v=l==4294967295,p=e+r,a=s+h+v;if(n&&a){for(;e+4<p;e+=4+z(t,e+2))if(z(t,e)==1)return[s?ne(t,e+4+8*h):i,h?ne(t,e+4):o,v?ne(t,e+4+8*(h+s)):l,1];n<2&&x(13)}return[i,o,l,0]};function be(t,e){for(var r={},n=t.length-22;_(t,n)!=101010256;--n)(!n||t.length-n>65558)&&x(13);var i=z(t,n+8);if(!i)return{};var o=_(t,n+16),l=_(t,n-20)==117853008;if(l){var s=_(t,n-12);l=_(t,s)==101075792,l&&(i=_(t,s+32),o=_(t,s+48))}for(var h=e&&e.filter,v=0;v<i;++v){var p=gt(t,o,l),a=p[0],c=p[1],g=p[2],w=p[3],d=p[4],M=p[5],D=pt(t,M);o=d,(!h||h({name:w,size:c,originalSize:g,compression:a}))&&(a?a==8?r[w]=ft(t.subarray(D,D+c),{out:new y(g)}):x(14,"unknown compression type "+a):r[w]=ae(t,D,D+c))}return r}var wt=100*1024*1024,mt=1e3,xt=500,yt=500;var Se=120,Le=160,Dt=100,Ct=80,Et=75,_t=[208,207,17,224];async function Fe(t){Tt(t);let e=new Uint8Array(t),r=be(e),n=Object.keys(r),i=[];if(!r["[Content_Types].xml"])throw new Error("Package is missing [Content_Types].xml.");if(!r["word/document.xml"])throw new Error("Package is missing word/document.xml.");e.byteLength>wt&&i.push(`Document is ${Pt(e.byteLength)}; rendering is capped for responsiveness.`);let o=Bt(await Ie(r,"[Content_Types].xml")),l=await Ie(r,"word/document.xml"),s=await N(r,"docProps/core.xml"),h=await N(r,"docProps/app.xml"),v=await $e(r,"word/_rels/document.xml.rels"),a=(await Promise.all(n.filter(u=>u.endsWith(".rels")).map(u=>$e(r,u)))).flat(),c=bt(r,o),g=kt(await N(r,"word/comments.xml")??""),w=[...Ae(await N(r,"word/footnotes.xml")??"","footnote"),...Ae(await N(r,"word/endnotes.xml")??"","endnote")],d=Mt(l,v),M=n.map(u=>({directory:u.endsWith("/"),path:u,size:u.endsWith("/")?0:r[u]?.byteLength??0})).sort((u,I)=>u.path.localeCompare(I.path)),D=a.filter(u=>u.targetMode.toLowerCase()==="external").length,L=$t(l,/<w:(?:ins|del)\b/g),C=Array.from(o.overrides.values()).filter(u=>u.toLowerCase().includes("macroenabled")),B=n.filter(u=>/^word\/embeddings\//i.test(u)).length;d.length===0&&i.push("Document has no extracted paragraphs or tables."),d.length>mt&&i.push(`${d.length} content blocks found; rendered document list is capped.`),c.length>xt&&i.push(`${c.length} media files found; media list is capped.`),D>0&&i.push(`${D} external relationships are listed as metadata only.`),L>0&&i.push(`${L} tracked change markers detected; changes are shown as extracted text only.`),g.length>Se&&i.push(`${g.length} comments found; rendered comment list is capped.`),w.length>Le&&i.push(`${w.length} footnotes/endnotes found; rendered note list is capped.`),B>0&&i.push(`${B} embedded object files detected; embedded objects are not opened or executed.`),(C.length>0||n.some(u=>/vbaProject\.bin$/i.test(u)))&&i.push("Macro-enabled package content detected; macros are not opened or executed."),v.filter(u=>u.type.toLowerCase().includes("oleobject")||u.type.toLowerCase().includes("package")).forEach(()=>i.push("Embedded object relationship detected; it is not opened or executed."));let A=d.slice(0,yt);return{application:se(h??"","Application"),blocks:d,comments:g,creator:se(s??"","dc:creator"),media:c,notes:w,packageEntries:M,renderedBlocks:A,renderedComments:g.slice(0,Se),renderedNotes:w.slice(0,Le),summary:{blockCount:d.length,commentCount:g.length,externalRelationshipCount:D,headingCount:d.filter(u=>u.headingLevel!==null).length,hyperlinkCount:d.reduce((u,I)=>u+I.hyperlinks.length,0),mediaCount:c.length,noteCount:w.length,packageEntryCount:M.length,relationshipCount:a.length,renderedBlockCount:A.length,tableCount:d.filter(u=>u.type==="table").length,trackedChangeCount:L},title:se(s??"","dc:title")||Lt(d),warnings:Ft(i).slice(0,Dt)}}function le(t,e){let r=e.trim().toLowerCase();return r?t.filter(n=>[n.label,n.text,n.style,...n.hyperlinks.map(o=>`${o.text} ${o.target}`),...n.rows.flat()].join(" ").toLowerCase().includes(r)):t}function Pe(t,e){let r=e.trim().toLowerCase();if(!r)return t;let n=r.startsWith(".")?r.slice(1):"";return t.filter(i=>i.path.toLowerCase().includes(r)||i.contentType.toLowerCase().includes(r)||!!(n&&i.extension.toLowerCase()===n))}function Ne(t,e){let r=e.trim().toLowerCase();return r?t.filter(n=>[n.id,n.author,n.text].join(" ").toLowerCase().includes(r)):t}function Re(t,e){let r=e.trim().toLowerCase();return r?t.filter(n=>[n.kind,n.id,n.text].join(" ").toLowerCase().includes(r)):t}function Tt(t){if(t.byteLength<4)throw new Error("File is too small to be a .docx package.");let e=new Uint8Array(t,0,4);if(_t.every((r,n)=>e[n]===r))throw new Error("Encrypted, password-protected, or legacy Word files are not supported in v0.1.");if(e[0]!==Ct||e[1]!==Et)throw new Error("File is not a valid .docx zip package.")}function Mt(t,e){let r=[],n=/<w:(p|tbl)\b[\s\S]*?<\/w:\1>/g,i=1;for(let o of t.matchAll(n)){let l=o[0];if(o[1]==="tbl"){let a=zt(l),c=a.flat().join(" ").trim();r.push({columnCount:a.reduce((g,w)=>Math.max(g,w.length),0),headingLevel:null,hyperlinks:Be(l,e),index:i,label:`Table ${r.filter(g=>g.type==="table").length+1}`,list:!1,rowCount:a.length,rows:a,style:"",text:c,type:"table"}),i+=1;continue}let s=j(l).join("").replace(/\s+/g," ").trim(),h=m(l.match(/<w:pStyle\b[^>]*>/)?.[0]??"","w:val"),v=St(h),p=v?s||`Heading ${i}`:`Paragraph ${i}`;(s||l.includes("<w:drawing")||l.includes("<w:hyperlink"))&&(r.push({columnCount:0,headingLevel:v,hyperlinks:Be(l,e),index:i,label:p,list:l.includes("<w:numPr"),rowCount:0,rows:[],style:h,text:s,type:"paragraph"}),i+=1)}return r}function zt(t){return[...t.matchAll(/<w:tr\b[\s\S]*?<\/w:tr>/g)].map(e=>[...e[0].matchAll(/<w:tc\b[\s\S]*?<\/w:tc>/g)].map(r=>j(r[0]).join("").replace(/\s+/g," ").trim()))}function Be(t,e){let r=[];for(let n of t.matchAll(/<w:hyperlink\b([^>]*)>([\s\S]*?)<\/w:hyperlink>/g)){let i=n[1]??"",o=m(i,"r:id"),l=m(i,"w:anchor"),s=o?e.find(p=>p.id===o):null,h=j(n[2]??"").join("").trim(),v=s?It("word/document.xml",s.target):l?`#${l}`:"";r.push({external:s?.targetMode.toLowerCase()==="external",target:v,text:h||v||"Hyperlink"})}return r}function kt(t){return[...t.matchAll(/<w:comment\b([^>]*)>([\s\S]*?)<\/w:comment>/g)].map(e=>({author:Z(m(e[1]??"","w:author")),date:Z(m(e[1]??"","w:date")),id:m(e[1]??"","w:id"),text:j(e[2]??"").join("").replace(/\s+/g," ").trim()}))}function Ae(t,e){let r=e==="footnote"?"footnote":"endnote";return[...t.matchAll(new RegExp(`<w:${r}\\b([^>]*)>([\\s\\S]*?)<\\/w:${r}>`,"g"))].map(n=>({id:m(n[1]??"","w:id"),kind:e,text:j(n[2]??"").join("").replace(/\s+/g," ").trim()})).filter(n=>n.text.length>0&&!n.id.startsWith("-"))}function bt(t,e){return Object.entries(t).filter(([r])=>/^word\/media\//i.test(r)&&!r.endsWith("/")).map(([r,n])=>{let i=Oe(r);return{contentType:At(r,e),extension:i,name:r.split("/").pop()??r,path:r,size:n.byteLength}}).sort((r,n)=>r.path.localeCompare(n.path))}function j(t){return[...t.matchAll(/<w:t\b[^>]*>([\s\S]*?)<\/w:t>|<w:delText\b[^>]*>([\s\S]*?)<\/w:delText>/g)].map(e=>Z(e[1]??e[2]??""))}function St(t){let e=t.toLowerCase(),r=e.match(/^heading([1-6])$/);return r?Number(r[1]):e==="title"?1:null}function Lt(t){return t.find(e=>e.headingLevel!==null&&e.text)?.text??t.find(e=>e.text)?.text.slice(0,80)??""}async function Ie(t,e){let r=t[e];if(!r)throw new Error(`Package entry not found: ${e}`);return W(r)}async function N(t,e){let r=t[e];return r?W(r):null}async function $e(t,e){let r=await N(t,e);return r?[...r.matchAll(/<Relationship\b([^>]*)\/?>/g)].map(n=>{let i=n[1]??"";return{id:m(i,"Id"),target:Z(m(i,"Target")),targetMode:m(i,"TargetMode"),type:m(i,"Type")}}):[]}function Bt(t){let e=new Map,r=new Map;for(let n of t.matchAll(/<Default\b([^>]*)\/?>/g)){let i=n[1]??"";e.set(m(i,"Extension").toLowerCase(),m(i,"ContentType"))}for(let n of t.matchAll(/<Override\b([^>]*)\/?>/g)){let i=n[1]??"";r.set(Ue(m(i,"PartName")),m(i,"ContentType"))}return{defaults:e,overrides:r}}function At(t,e){return e.overrides.get(t)??e.defaults.get(Oe(t).toLowerCase())??"application/octet-stream"}function It(t,e){if(!e)return"";if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(e.startsWith("/"))return Ue(e);let r=t.split("/");r.pop();for(let n of e.split("/"))!n||n==="."||(n===".."?r.pop():r.push(n));return r.join("/")}function m(t,e){let r=e.replace(":","\\:"),n=t.match(new RegExp(`(?:^|\\s)${r}=["']([^"']*)["']`));return n?n[1]:""}function se(t,e){let r=e.replace(":","\\:"),n=t.match(new RegExp(`<${r}\\b[^>]*>([\\s\\S]*?)<\\/${r}>`));return n?Z(n[1]):""}function Ue(t){return t.startsWith("/")?t.slice(1):t}function Oe(t){let e=t.split("/").pop()??t,r=e.lastIndexOf(".");return r>=0?e.slice(r+1).toLowerCase():""}function Z(t){return t.replace(/<[^>]+>/g,"").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&amp;","&")}function $t(t,e){return[...t.matchAll(e)].length}function Ft(t){return[...new Set(t)]}function Pt(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}var q="word-viewer",Nt=["docx"],ce=120,ue=240,X=class extends b.Plugin{async onload(){this.registerView(q,e=>new fe(e)),this.registerExtensions(Nt,q),this.addCommand({id:"open-current-docx-in-viewer",name:"Open current DOCX file in viewer",checkCallback:e=>{let r=this.app.workspace.getActiveFile();return He(r)?(e||this.openDocxFile(r),!0):!1}})}async openDocxFile(e){await this.app.workspace.getLeaf(!1).setViewState({active:!0,state:{file:e.path},type:q})}},fe=class extends b.FileView{document=null;activeBlockIndex=1;filterValue="";errorMessage="";constructor(e){super(e)}getViewType(){return q}getDisplayText(){return this.file?.basename??"DOCX viewer"}getIcon(){return"file-text"}async onLoadFile(e){await this.loadDocument(e)}async onUnloadFile(){this.document=null,this.activeBlockIndex=1,this.errorMessage="",this.contentEl.empty()}async loadDocument(e){try{let r=await this.app.vault.readBinary(e);this.document=await Fe(r),this.activeBlockIndex=this.document.renderedBlocks[0]?.index??1,this.errorMessage=""}catch(r){this.document=null,this.activeBlockIndex=1,this.errorMessage=`Unable to read document: ${Kt(r)}`}this.render()}render(){let e=this.contentEl;e.empty(),e.addClass("word-viewer");let r=e.createDiv({cls:"word-viewer__header"});if(this.renderTitle(r),this.renderToolbar(r),!this.file){V(e,"No DOCX file is attached to this viewer.");return}if(!He(this.file)){V(e,"This viewer only supports .docx files.");return}if(this.errorMessage){V(e,this.errorMessage);return}if(!this.document){V(e,"Document is not loaded.");return}Rt(e,this.document),qt(e,this.document.warnings,"Document warnings");let n=e.createDiv({cls:"word-viewer__body"});this.renderOutline(n,this.document),this.renderDetail(n,this.document)}renderTitle(e){let r=e.createDiv({cls:"word-viewer__title"});r.createDiv({cls:"word-viewer__filename",text:this.file?.name??"DOCX file"}),r.createDiv({cls:"word-viewer__path",text:this.file?.path??""})}renderToolbar(e){let r=e.createDiv({cls:"word-viewer__toolbar"}),n=r.createDiv({cls:"word-viewer__search"});(0,b.setIcon)(n.createSpan({cls:"word-viewer__search-icon"}),"search");let i=n.createEl("input",{attr:{"aria-label":"Filter document content",placeholder:"Filter",spellcheck:"false",type:"search",value:this.filterValue}});i.addEventListener("input",()=>{this.filterValue=i.value,this.render()}),Xt(r,"refresh-cw","Refresh document").addEventListener("click",()=>{this.reloadFile()})}renderOutline(e,r){let n=e.createDiv({cls:"word-viewer__sidebar"});n.createDiv({cls:"word-viewer__section-title",text:"Outline"});let i=le(r.renderedBlocks,this.filterValue),o=i.filter(s=>s.headingLevel!==null||s.type==="table"),l=o.length>0?o:i.slice(0,80);if(l.length===0){n.createDiv({cls:"word-viewer__empty",text:"No document blocks match the filter."});return}l.forEach(s=>{let h=n.createEl("button",{cls:"word-viewer__outline-button",attr:{type:"button"}});h.toggleClass("is-active",s.index===this.activeBlockIndex),h.toggleClass("is-heading",s.headingLevel!==null),h.toggleClass(`is-level-${s.headingLevel??0}`,s.headingLevel!==null),h.createSpan({cls:"word-viewer__outline-index",text:String(s.index)});let v=h.createSpan({cls:"word-viewer__outline-label"});v.createSpan({cls:"word-viewer__outline-title",text:s.label||s.text||s.type}),v.createSpan({cls:"word-viewer__outline-meta",text:s.type==="table"?`${s.rowCount} rows, ${s.columnCount} columns`:s.style||"paragraph"}),h.addEventListener("click",()=>{this.activeBlockIndex=s.index,this.render()})})}renderDetail(e,r){let n=e.createDiv({cls:"word-viewer__detail"});Ut(n,r);let i=le(r.renderedBlocks,this.filterValue);Ot(n,i,this.activeBlockIndex),jt(n,Ne(r.renderedComments,this.filterValue)),Gt(n,Re(r.renderedNotes,this.filterValue)),Wt(n,Pe(r.media,this.filterValue)),Vt(n,r.packageEntries)}async reloadFile(){if(!this.file){new b.Notice("No DOCX file to refresh");return}await this.loadDocument(this.file)}};function Rt(t,e){let r=t.createDiv({cls:"word-viewer__summary"});r.createSpan({cls:"word-viewer__pill",text:`${e.summary.blockCount} blocks`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.headingCount} headings`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.tableCount} tables`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.commentCount} comments`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.noteCount} notes`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.mediaCount} media`}),r.createSpan({cls:"word-viewer__pill",text:`${e.summary.packageEntryCount} package entries`}),e.summary.externalRelationshipCount>0&&r.createSpan({cls:"word-viewer__note",text:`${e.summary.externalRelationshipCount} external relationships listed`}),e.summary.trackedChangeCount>0&&r.createSpan({cls:"word-viewer__note",text:`${e.summary.trackedChangeCount} tracked change markers`}),e.summary.renderedBlockCount<e.summary.blockCount&&r.createSpan({cls:"word-viewer__note",text:`${e.summary.renderedBlockCount} blocks rendered`})}function Ut(t,e){let n=t.createDiv({cls:"word-viewer__card"}).createDiv({cls:"word-viewer__detail-heading"});n.createDiv({cls:"word-viewer__detail-title",text:e.title||"Untitled document"}),n.createDiv({cls:"word-viewer__detail-path",text:[e.creator,e.application].filter(Boolean).join(" \xB7 ")||"Metadata unavailable"})}function Ot(t,e,r){let n=t.createDiv({cls:"word-viewer__card"});if(n.createDiv({cls:"word-viewer__section-title",text:"Document content"}),e.length===0){n.createDiv({cls:"word-viewer__empty",text:"No document content matches the filter."});return}e.forEach(i=>{let o=n.createDiv({cls:"word-viewer__block"});o.toggleClass("is-active",i.index===r),o.toggleClass("is-heading",i.headingLevel!==null);let l=o.createDiv({cls:"word-viewer__block-meta"});l.createSpan({text:`${i.index}. ${i.type}`}),i.headingLevel!==null&&l.createSpan({text:`H${i.headingLevel}`}),i.list&&l.createSpan({text:"list"}),i.style&&l.createSpan({text:i.style}),i.type==="table"?Ht(o,i):o.createDiv({cls:"word-viewer__paragraph",text:i.text||"(empty paragraph)"}),Zt(o,i.hyperlinks)})}function Ht(t,e){let n=t.createDiv({cls:"word-viewer__table-wrap"}).createEl("table",{cls:"word-viewer__table"});e.rows.forEach(i=>{let o=n.createEl("tr");i.forEach(l=>{o.createEl("td",{text:l||" "})})})}function Zt(t,e){if(e.length===0)return;let r=t.createDiv({cls:"word-viewer__links"});e.forEach(n=>{let i=r.createSpan({cls:"word-viewer__link-pill"});i.createSpan({text:n.text}),i.createSpan({cls:"word-viewer__link-target",text:n.target}),n.external&&i.createSpan({cls:"word-viewer__link-external",text:"external"})})}function jt(t,e){let r=t.createDiv({cls:"word-viewer__card"});if(r.createDiv({cls:"word-viewer__section-title",text:"Comments"}),e.length===0){r.createDiv({cls:"word-viewer__empty",text:"No comments found."});return}e.forEach(n=>{let i=r.createDiv({cls:"word-viewer__annotation"});i.createDiv({cls:"word-viewer__annotation-meta",text:`#${n.id} ${n.author||"Unknown author"} ${n.date}`.trim()}),i.createDiv({cls:"word-viewer__annotation-text",text:n.text||"(empty comment)"})})}function Gt(t,e){let r=t.createDiv({cls:"word-viewer__card"});if(r.createDiv({cls:"word-viewer__section-title",text:"Footnotes and endnotes"}),e.length===0){r.createDiv({cls:"word-viewer__empty",text:"No footnotes or endnotes found."});return}e.forEach(n=>{let i=r.createDiv({cls:"word-viewer__annotation"});i.createDiv({cls:"word-viewer__annotation-meta",text:`${n.kind} #${n.id}`}),i.createDiv({cls:"word-viewer__annotation-text",text:n.text})})}function Wt(t,e){let r=t.createDiv({cls:"word-viewer__card"});if(r.createDiv({cls:"word-viewer__section-title",text:"Media"}),e.length===0){r.createDiv({cls:"word-viewer__empty",text:"No embedded media found."});return}let n=r.createDiv({cls:"word-viewer__media-grid"});e.slice(0,ce).forEach(i=>{let o=n.createDiv({cls:"word-viewer__media-card"});o.createDiv({cls:"word-viewer__media-name",text:i.name}),o.createDiv({cls:"word-viewer__media-path",text:i.path}),o.createDiv({cls:"word-viewer__media-meta",text:`${i.contentType} \xB7 ${Ze(i.size)}`})}),e.length>ce&&r.createDiv({cls:"word-viewer__note",text:`${e.length-ce} more media files hidden by render cap.`})}function Vt(t,e){let r=t.createDiv({cls:"word-viewer__card"});r.createDiv({cls:"word-viewer__section-title",text:"Package diagnostics"});let n=r.createEl("table",{cls:"word-viewer__package-table"}),i=n.createEl("thead").createEl("tr");i.createEl("th",{text:"Path"}),i.createEl("th",{text:"Size"}),e.slice(0,ue).forEach(o=>{let l=n.createEl("tr");l.createEl("td",{text:o.path}),l.createEl("td",{text:o.directory?"directory":Ze(o.size)})}),e.length>ue&&r.createDiv({cls:"word-viewer__note",text:`${e.length-ue} package entries hidden by render cap.`})}function qt(t,e,r){if(e.length===0)return;let n=t.createDiv({cls:"word-viewer__warnings"});n.createDiv({cls:"word-viewer__warnings-title",text:r});let i=n.createEl("ul");e.forEach(o=>i.createEl("li",{text:o}))}function V(t,e){t.createDiv({cls:"word-viewer__message",text:e})}function Xt(t,e,r){let n=t.createEl("button",{cls:"word-viewer__icon-button",attr:{"aria-label":r,title:r,type:"button"}});return(0,b.setIcon)(n,e),n}function He(t){return t?.extension.toLowerCase()==="docx"}function Kt(t){return t instanceof Error?t.message:String(t)}function Ze(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`}