@robot-admin/naive-ui-components 0.21.1 → 0.22.1

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.
Files changed (157) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +5 -1
  3. package/README_EN.md +5 -1
  4. package/SECURITY.md +10 -0
  5. package/THIRD_PARTY_NOTICES.md +10 -0
  6. package/dist/C_AntV2.cjs +1 -1
  7. package/dist/C_Barcode2.cjs +1 -1
  8. package/dist/C_Captcha.d.ts +2 -0
  9. package/dist/C_Editor.css +18 -18
  10. package/dist/C_Editor2.cjs +1 -1
  11. package/dist/C_Editor2.js +1 -1
  12. package/dist/C_FilePreview2.cjs +1 -1
  13. package/dist/C_FilePreview2.js +1 -1
  14. package/dist/C_Form.base.css +58 -58
  15. package/dist/C_Form.cjs +1 -1
  16. package/dist/C_Form.css +76 -76
  17. package/dist/C_Form.d.cts +3 -1
  18. package/dist/C_Form.d.ts +3 -2
  19. package/dist/C_Form.js +1 -1
  20. package/dist/C_FormModal.css +10 -10
  21. package/dist/C_FormModal.d.ts +1 -0
  22. package/dist/C_FormModal2.cjs +1 -1
  23. package/dist/C_FormModal2.js +1 -1
  24. package/dist/C_FormSearch.css +56 -56
  25. package/dist/C_FormSearch.d.ts +2 -1
  26. package/dist/C_FormSearch2.cjs +1 -1
  27. package/dist/C_FormSearch2.js +1 -1
  28. package/dist/C_FullCalendar2.cjs +1 -1
  29. package/dist/C_Login.d.ts +3 -0
  30. package/dist/C_Markdown.css +37 -37
  31. package/dist/C_Markdown2.cjs +1 -1
  32. package/dist/C_Markdown2.js +1 -1
  33. package/dist/C_QRCode2.cjs +1 -1
  34. package/dist/C_Table.base.css +58 -58
  35. package/dist/C_Table.css +76 -76
  36. package/dist/C_Table.d.cts +1 -1
  37. package/dist/C_Table.d.ts +5 -2
  38. package/dist/C_Tree.d.cts +1 -1
  39. package/dist/C_Tree.d.ts +5 -2
  40. package/dist/C_Upload2.cjs +1 -1
  41. package/dist/C_WaterFall.css +49 -31
  42. package/dist/C_WaterFall2.cjs +1 -1
  43. package/dist/C_WaterFall2.js +1 -1
  44. package/dist/chunk.cjs +1 -1
  45. package/dist/config.cjs +1 -1
  46. package/dist/config.d.cts +4 -1
  47. package/dist/config.d.ts +4 -2
  48. package/dist/config.js +1 -1
  49. package/dist/config2.d.ts +14 -0
  50. package/dist/constants.d.cts +1 -1
  51. package/dist/constants.d.ts +1 -1
  52. package/dist/constants2.d.cts +1 -1
  53. package/dist/constants2.d.ts +1 -1
  54. package/dist/constants3.d.cts +2 -2
  55. package/dist/constants3.d.ts +2 -2
  56. package/dist/constants4.d.cts +5 -5
  57. package/dist/constants4.d.ts +5 -5
  58. package/dist/data.cjs +1 -1
  59. package/dist/data.d.cts +7 -7
  60. package/dist/data.d.ts +7 -7
  61. package/dist/data.js +1 -1
  62. package/dist/dateRange.d.ts +1 -2
  63. package/dist/density.cjs +1 -1
  64. package/dist/density.js +1 -1
  65. package/dist/graphics.d.cts +17 -11
  66. package/dist/graphics.d.ts +17 -11
  67. package/dist/helpers.cjs +1 -1
  68. package/dist/helpers.js +1 -1
  69. package/dist/html.cjs +1 -1
  70. package/dist/index.cjs +1 -1
  71. package/dist/index.d.cts +4 -3
  72. package/dist/index.d.ts +7 -5
  73. package/dist/index.js +1 -1
  74. package/dist/index.vue.d.cts +5 -5
  75. package/dist/index.vue.d.ts +5 -5
  76. package/dist/index10.vue.d.cts +2 -2
  77. package/dist/index10.vue.d.ts +5 -5
  78. package/dist/index11.vue.d.cts +5 -5
  79. package/dist/index11.vue.d.ts +1 -1
  80. package/dist/index12.vue.d.cts +1 -1
  81. package/dist/index12.vue.d.ts +4 -4
  82. package/dist/index13.vue.d.cts +4 -4
  83. package/dist/index13.vue.d.ts +9 -9
  84. package/dist/index14.vue.d.cts +9 -9
  85. package/dist/index17.vue.d.ts +2 -2
  86. package/dist/index18.vue.d.cts +2 -2
  87. package/dist/index18.vue.d.ts +2 -2
  88. package/dist/index19.vue.d.cts +2 -2
  89. package/dist/index19.vue.d.ts +2 -2
  90. package/dist/index2.vue.d.cts +2 -2
  91. package/dist/index2.vue.d.ts +2 -2
  92. package/dist/index20.vue.d.cts +1 -1
  93. package/dist/index20.vue.d.ts +1 -1
  94. package/dist/index21.vue.d.cts +1 -1
  95. package/dist/index21.vue.d.ts +1 -1
  96. package/dist/index22.vue.d.cts +1 -1
  97. package/dist/index22.vue.d.ts +1 -1
  98. package/dist/index25.vue.d.cts +2 -2
  99. package/dist/index25.vue.d.ts +2 -2
  100. package/dist/index3.vue.d.cts +6 -6
  101. package/dist/index3.vue.d.ts +6 -6
  102. package/dist/index4.vue.d.cts +2 -2
  103. package/dist/index8.vue.d.ts +3 -3
  104. package/dist/index9.vue.d.cts +3 -3
  105. package/dist/index9.vue.d.ts +2 -2
  106. package/dist/mapUtils.d.cts +2 -2
  107. package/dist/mapUtils.d.ts +2 -2
  108. package/dist/style.css +228 -210
  109. package/dist/types.d.ts +5 -0
  110. package/dist/types2.d.cts +5 -0
  111. package/dist/useCalendarEvents.d.cts +1 -1
  112. package/dist/useCalendarEvents.d.ts +1 -1
  113. package/dist/useCollapsePanel.d.cts +5 -5
  114. package/dist/useCollapsePanel.d.ts +5 -5
  115. package/dist/useCropperCore.d.cts +10 -10
  116. package/dist/useCropperCore.d.ts +10 -10
  117. package/dist/useDynamicFormState.d.cts +6 -579
  118. package/dist/useDynamicFormState.d.ts +6 -579
  119. package/dist/useEdgeInteraction.d.cts +2 -2
  120. package/dist/useEdgeInteraction.d.ts +2 -2
  121. package/dist/useFormConfig.cjs +1 -0
  122. package/dist/useFormConfig.d.cts +576 -0
  123. package/dist/useFormConfig.d.ts +611 -0
  124. package/dist/useFormConfig.js +1 -0
  125. package/dist/useGlobalSearch.d.cts +1 -1
  126. package/dist/useGlobalSearch.d.ts +1 -1
  127. package/dist/useInfiniteScroll.d.cts +16 -17
  128. package/dist/useInfiniteScroll.d.ts +16 -17
  129. package/dist/useQRCode.d.cts +5 -5
  130. package/dist/useQRCode.d.ts +5 -5
  131. package/dist/useSignatureHistory.d.cts +4 -4
  132. package/dist/useSignatureHistory.d.ts +4 -4
  133. package/dist/useSplitResize.d.cts +10 -10
  134. package/dist/useSplitResize.d.ts +10 -10
  135. package/dist/useTableQuery.cjs +1 -1
  136. package/dist/useTableQuery.d.cts +15 -13
  137. package/dist/useTableQuery.d.ts +17 -26
  138. package/dist/useTableQuery.js +1 -1
  139. package/dist/useWorkflowValidation.d.cts +2 -2
  140. package/dist/useWorkflowValidation.d.ts +2 -2
  141. package/dist/verification.d.cts +5 -5
  142. package/dist/verification.d.ts +6 -6
  143. package/dist/xlsx.js +143 -0
  144. package/dist/xlsx2.cjs +143 -0
  145. package/docs/architecture.en.md +1 -0
  146. package/docs/architecture.md +1 -0
  147. package/docs/guides/api-migration.md +111 -0
  148. package/docs/guides/form-density.en.md +17 -3
  149. package/docs/guides/form-density.md +17 -3
  150. package/docs/guides/runtime-performance.md +16 -1
  151. package/docs/guides/usage.en.md +1 -1
  152. package/docs/guides/waterfall.md +113 -0
  153. package/docs/runtime-review-20261019.md +2 -0
  154. package/licenses/SheetJS.txt +201 -0
  155. package/package.json +13 -9
  156. package/dist/contracts.d.ts +0 -24
  157. package/dist/density.d.ts +0 -15
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`xlsx`);o=e.t(o);let s=require(`mammoth`);s=e.t(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>e==null?``:String(e),b=1e5,x=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`};function S(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function C(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??o.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function w(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const T=(e,t,n=b)=>{let{c:r,r:i}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>S(n,b,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let s=Array.from({length:r+1},(t,n)=>{let r=e[o.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),c=new Map,l=0;return t.forEach(e=>{if(!w(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:s}}=e;if(l+=(o-t+1)*(s-n+1),!Number.isSafeInteger(l)||l>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=s;r++)c.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:s-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[o.utils.encode_cell({r:n,c:t})],a=c.get(`${n}-${t}`);i[`col_${t}`]=C(r,a)}return i}),columns:s}};async function E(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function D(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function O(e,t={}){let n=S(t.maxBytes,33554432,`maxBytes`),r=S(t.maxCells,b,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${m(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=o.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let s=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>T(t,n,r)}});return Object.assign(s[0],s[0].load?.()),{sheets:s}}const k={class:`file-container pdf-container`},A={class:`file-toolbar`},j={class:`file-viewer`},M=[`src`],N=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,k,[(0,i.createElementVNode)(`div`,A,[n[1]||=(0,i.createElementVNode)(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NButton),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:(0,i.withCtx)(()=>[...n[0]||=[(0,i.createTextVNode)(`在新标签页打开`,-1)]]),_:1},8,[`href`])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,j,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,M)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var P=n.t(N,[[`__scopeId`,`data-v-db027bb4`]]);const F={class:`file-container word-container`},I={class:`file-toolbar`},L={class:`flex gap-2 items-center`},ee={class:`text-sm text-gray-600 min-w-12 text-center`},te={class:`word-layout`},ne={class:`word-main`},re={key:0,class:`word-outline`},ie={class:`outline-content`},ae=[`onClick`],R={class:`word-content`},z=[`innerHTML`],B=(0,i.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,i.ref)(!0),r=(0,i.ref)(100),o=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,F,[(0,i.createElementVNode)(`div`,I,[(0,i.createElementVNode)(`div`,L,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-list`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NDivider),{vertical:``}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,i.unref)(o)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,ee,(0,i.toDisplayString)(r.value)+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,i.unref)(o)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[3]||=e=>(0,i.unref)(o)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[4]||=(0,i.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,i.createElementVNode)(`div`,te,[(0,i.createElementVNode)(`div`,ne,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,re,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,ie,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.headings,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:t,class:(0,i.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,i.toDisplayString)(e.text),11,ae))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,R,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,z)])])])])}}});var V=n.t(B,[[`__scopeId`,`data-v-dae08a5f`]]);const H={class:`file-container excel-container`},U={class:`file-toolbar`},W={class:`flex justify-between items-center`},G={class:`flex gap-2 items-center`},K={key:1,class:`text-sm text-gray-600`},q={class:`flex gap-2 items-center`},J={class:`excel-viewer`},oe={key:0,class:`excel-info`},se={class:`excel-table-container`},ce={key:0,class:`excel-table`},le={class:`header-content`},ue={class:`column-letter`},de={class:`column-title`},fe={class:`row-number`},pe=[`rowspan`,`colspan`,`title`],me={key:1,class:`excel-empty`},he={key:0,class:`excel-pagination`},ge=(0,i.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,i.ref)(``),o=(0,i.ref)(``),s=(0,i.ref)(!1),c=(0,i.ref)(1),l=(0,i.ref)(50),u=(0,i.ref)([]),f=(0,i.ref)([]),p=(0,i.computed)(()=>Math.ceil(u.value.length/l.value)),m=(0,i.computed)(()=>{let e=(c.value-1)*l.value;return u.value.slice(e,e+l.value)}),h=e=>{l.value=e,c.value=1},g=e=>{o.value=``,u.value=[],f.value=[],c.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;u.value=e.data,f.value=e.columns}catch(e){o.value=e instanceof Error?e.message:`工作表解析失败`}};return(0,i.watch)(r,e=>{g(e)}),(0,i.watch)(()=>n.sheets,e=>{r.value=e[0]?.name??``,g(r.value)},{immediate:!0}),(n,g)=>{let _=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,H,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,U,[(0,i.createElementVNode)(`div`,W,[(0,i.createElementVNode)(`div`,G,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":g[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.sheets,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabPane),{key:e.name,name:e.name},{tab:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,K,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,q,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[1]||=e=>s.value=!s.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(_,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(s.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,J,[(0,i.createCommentVNode)(` 信息面板 `),u.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,oe,[(0,i.createVNode)((0,i.unref)(a.NText),{depth:`3`,class:`text-sm`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 当前工作表: `+(0,i.toDisplayString)(r.value)+` | 总行数: `+(0,i.toDisplayString)(u.value.length)+` | 总列数: `+(0,i.toDisplayString)(f.value.length)+` | 当前页: `+(0,i.toDisplayString)(c.value)+`/`+(0,i.toDisplayString)(p.value),1)]),_:1})])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 表格 `),(0,i.createElementVNode)(`div`,se,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!s.value}])},[u.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,ce,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[g[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,i.normalizeStyle)({minWidth:e.width+`px`})},[(0,i.createElementVNode)(`div`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,de,(0,i.toDisplayString)(e.title),1)])],4))),128))])]),(0,i.createElementVNode)(`tbody`,null,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(m.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,fe,(0,i.toDisplayString)((c.value-1)*l.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(x)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,s.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??(0,i.unref)(y)(e[t.key]?.value)},(0,i.toDisplayString)(e[t.key]?.displayValue??(0,i.unref)(y)(e[t.key]?.value)),11,pe)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createVNode)((0,i.unref)(a.NEmpty),{description:o.value||`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...g[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),(0,i.createCommentVNode)(` 分页 `),p.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,he,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:c.value,"onUpdate:page":g[3]||=e=>c.value=e,"page-count":p.value,"page-size":l.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":h},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(ge,[[`__scopeId`,`data-v-5a0226ce`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:a,previewLimits:o}=e,s=(0,i.ref)(!1),c=(0,i.ref)(``),l=(0,i.ref)(0),u=(0,i.ref)(!1),d=(0,i.ref)(``),f=(0,i.ref)(0),m=(0,i.ref)(``),_=(0,i.ref)([]),v=(0,i.ref)([]),y=0,b=null,x=!1,S=(e,t)=>e===y&&!x&&!t.signal.aborted,C=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),w=(0,i.computed)(()=>h(C.value)),T=(0,i.computed)(()=>g(w.value)),k=(0,i.computed)(()=>!!(n.value||r.value)),A=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},j=()=>{c.value=``,s.value=!1,l.value=0,A(),f.value=0,m.value=``,_.value=[],v.value=[]},M=e=>{c.value=e,s.value=!1},N=()=>{y+=1,b?.abort(),b=null,j()},P=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],C.value,{type:r.type})}throw Error(`未提供文件或URL`)},F=async(e,t,n)=>{switch(t){case`pdf`:{let t=await E(e);if(n!==y){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await D(e);if(n!==y)return;m.value=t.content,_.value=t.headings;break}case`excel`:{let t=await O(e,o?.value);if(n!==y)return;v.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},I=async()=>{if(x)return!1;let e=++y;b?.abort();let t=new AbortController;if(b=t,j(),!k.value)return b=null,!1;s.value=!0;try{let n=w.value,r=await P(t.signal);return e===y?(l.value=r.size,await F(r,n,e),S(e,t)):!1}catch(n){if(!S(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return M(`${w.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===y&&(s.value=!1,b=null)}};return(0,i.watch)([n,r],([e,t])=>{!e&&!t&&N()},{flush:`sync`}),(0,i.watch)(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{x=!0,N()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:k,pdfUrl:d,pdfTotalPages:f,wordContent:m,wordHeadings:_,excelSheets:v,displayFileName:C,fileType:w,fileConfig:T,loadFile:I,openPreview:async()=>{if(x)return;let e=n.value||r.value;u.value=!0,await I()&&e&&e===(n.value||r.value)&&!x&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(x||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:C.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){M(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:N}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const _e={class:`c-file-preview-wrapper`},ve={key:0,class:`file-info-card`},ye={class:`file-info`},be={class:`file-icon`},xe={class:`file-details`},Se={class:`file-name`},Ce={class:`file-meta`},we={class:`file-size`},Te={class:`file-actions`},Ee={key:1,class:`c-file-preview-inline`},De={key:1,class:`status-container`,role:`status`},$={class:`modal-header`},Oe={class:`modal-title`},ke={class:`modal-actions`},Ae={class:`modal-content`},je={class:`preview-header`},Me={class:`flex justify-between items-center`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm text-gray-500`},Fe={class:`flex gap-2`},Ie={class:`preview-content`},Le={key:1,class:`status-container`},Re=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let r=e,{file:o,url:s,fileName:c,autoPreview:l,inline:u,previewLimits:d}=(0,i.toRefs)(r),{loading:f,error:p,fileSize:h,showModal:g,hasSource:_,pdfUrl:v,pdfTotalPages:y,wordContent:b,wordHeadings:x,excelSheets:S,displayFileName:C,fileType:w,fileConfig:T,loadFile:E,openPreview:D,downloadFile:O}=Z({file:o,url:s,fileName:c,previewLimits:d},n),k=(0,i.ref)(),{isFullscreen:A,toggleFullscreen:j,exitFullscreen:M}=Q(k);return(0,i.watch)(g,e=>{e||M()}),(0,i.watch)([o,s,l,u,c,()=>r.previewLimits?.maxBytes,()=>r.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!_.value)){if(u.value){E();return}if(g.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&E();return}l.value&&D()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,_e,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(l)&&!(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:40,color:(0,i.unref)(T).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createElementVNode)(`div`,Se,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(C)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(w).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,Ce,[(0,i.createElementVNode)(`span`,we,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)])]),(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(D)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,i.withCtx)(()=>[n[2]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`tertiary`,onClick:(0,i.unref)(O)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[3]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ee,[(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,De,[(0,i.unref)(f)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[...n[4]||=[(0,i.createTextVNode)(`正在加载文档…`,-1)]]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(E)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:2,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:3,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:4,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.unref)(u)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(g),"onUpdate:show":n[1]||=e=>(0,i.isRef)(g)?g.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:k,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:20,color:(0,i.unref)(T).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(C)),1)]),(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(O)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[6]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>g.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createElementVNode)(`div`,Ne,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(w).toUpperCase()),1)]),_:1},8,[`type`]),(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`300px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(C)),1)]),_:1}),(0,i.createElementVNode)(`span`,Pe,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)]),(0,i.createElementVNode)(`div`,Fe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(f),onClick:(0,i.unref)(E)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[7]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(j)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(A)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(A)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Ie,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Le,[(0,i.unref)(f)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 正在加载`+(0,i.toDisplayString)((0,i.unref)(w).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(E)},{default:(0,i.withCtx)(()=>[...n[8]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:2},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:0,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:1,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 不支持的文件类型 `),(0,i.createVNode)((0,i.unref)(a.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,i.unref)(w).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}});var ze=n.t(Re,[[`__scopeId`,`data-v-3988cd59`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ze}});
1
+ const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`),i=require(`./xlsx2.cjs`);let a=require(`vue`),o=require(`naive-ui`),s=require(`mammoth`);s=e.n(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>e==null?``:String(e),b=1e5,x=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`};function S(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function C(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??i.n.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function w(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const T=(e,t,n=b)=>{let{c:r,r:a}=i.n.decode_range(e[`!ref`]||`A1:A1`).e,o=(r+1)*(a+1);if(!Number.isSafeInteger(o)||o<1||o>S(n,b,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let s=Array.from({length:r+1},(t,n)=>{let r=e[i.n.encode_cell({r:0,c:n})],a=r?String(r.v??``).trim():`列${n+1}`;return{title:a||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(a.length*12,80),200)}}),c=new Map,l=0;return t.forEach(e=>{if(!w(e,a,r))return;let{s:{r:t,c:n},e:{r:i,c:s}}=e;if(l+=(i-t+1)*(s-n+1),!Number.isSafeInteger(l)||l>o)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=i;e++)for(let r=n;r<=s;r++)c.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:i-t+1,colspan:s-n+1})}),{data:Array.from({length:a+1},(t,n)=>{let a={};for(let t=0;t<=r;t++){let r=e[i.n.encode_cell({r:n,c:t})],o=c.get(`${n}-${t}`);a[`col_${t}`]=C(r,o)}return a}),columns:s}};async function E(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function D(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function O(e,t={}){let n=S(t.maxBytes,33554432,`maxBytes`),r=S(t.maxCells,b,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${m(n)} 的预览上限,请下载文件查看`);let a=await e.arrayBuffer(),o=i.t(a,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!o.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let s=o.SheetNames.map(e=>{let t=o.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>T(t,n,r)}});return Object.assign(s[0],s[0].load?.()),{sheets:s}}const k={class:`file-container pdf-container`},A={class:`file-toolbar`},j={class:`file-viewer`},M=[`src`],N=(0,a.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,k,[(0,a.createElementVNode)(`div`,A,[n[1]||=(0,a.createElementVNode)(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NButton),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:(0,a.withCtx)(()=>[...n[0]||=[(0,a.createTextVNode)(`在新标签页打开`,-1)]]),_:1},8,[`href`])):(0,a.createCommentVNode)(`v-if`,!0)]),(0,a.createElementVNode)(`div`,j,[e.pdfUrl?((0,a.openBlock)(),(0,a.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,M)):(0,a.createCommentVNode)(`v-if`,!0)])]))}});var P=n.t(N,[[`__scopeId`,`data-v-db027bb4`]]);const F={class:`file-container word-container`},I={class:`file-toolbar`},L={class:`flex gap-2 items-center`},ee={class:`text-sm text-gray-600 min-w-12 text-center`},te={class:`word-layout`},ne={class:`word-main`},re={key:0,class:`word-outline`},ie={class:`outline-content`},ae=[`onClick`],R={class:`word-content`},z=[`innerHTML`],B=(0,a.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,a.ref)(!0),r=(0,a.ref)(100),i=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,F,[(0,a.createElementVNode)(`div`,I,[(0,a.createElementVNode)(`div`,L,[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(u,{name:`ic:outline-list`})]),default:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` `+(0,a.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,a.createVNode)((0,a.unref)(o.NDivider),{vertical:``}),(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,a.unref)(i)(`out`)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,a.createElementVNode)(`span`,ee,(0,a.toDisplayString)(r.value)+`% `,1),(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,a.unref)(i)(`in`)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,onClick:l[3]||=e=>(0,a.unref)(i)(`reset`)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,a.withCtx)(()=>[l[4]||=(0,a.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,a.createElementVNode)(`div`,te,[(0,a.createElementVNode)(`div`,ne,[(0,a.createCommentVNode)(` 侧边栏目录 `),n.value?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,re,[l[5]||=(0,a.createElementVNode)(`div`,{class:`outline-header`},[(0,a.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,a.createElementVNode)(`div`,ie,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.headings,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:t,class:(0,a.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,a.toDisplayString)(e.text),11,ae))),128))])])):(0,a.createCommentVNode)(`v-if`,!0),(0,a.createCommentVNode)(` 主要内容区域 `),(0,a.createElementVNode)(`div`,R,[(0,a.createElementVNode)(`div`,{class:`word-document`,style:(0,a.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,z)])])])])}}});var V=n.t(B,[[`__scopeId`,`data-v-dae08a5f`]]);const H={class:`file-container excel-container`},U={class:`file-toolbar`},W={class:`flex justify-between items-center`},G={class:`flex gap-2 items-center`},K={key:1,class:`text-sm text-gray-600`},q={class:`flex gap-2 items-center`},J={class:`excel-viewer`},oe={key:0,class:`excel-info`},se={class:`excel-table-container`},ce={key:0,class:`excel-table`},le={class:`header-content`},ue={class:`column-letter`},de={class:`column-title`},fe={class:`row-number`},pe=[`rowspan`,`colspan`,`title`],me={key:1,class:`excel-empty`},he={key:0,class:`excel-pagination`},ge=(0,a.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,a.ref)(``),i=(0,a.ref)(``),s=(0,a.ref)(!1),c=(0,a.ref)(1),l=(0,a.ref)(50),u=(0,a.ref)([]),f=(0,a.ref)([]),p=(0,a.computed)(()=>Math.ceil(u.value.length/l.value)),m=(0,a.computed)(()=>{let e=(c.value-1)*l.value;return u.value.slice(e,e+l.value)}),h=e=>{l.value=e,c.value=1},g=e=>{i.value=``,u.value=[],f.value=[],c.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;u.value=e.data,f.value=e.columns}catch(e){i.value=e instanceof Error?e.message:`工作表解析失败`}};return(0,a.watch)(r,e=>{g(e)}),(0,a.watch)(()=>n.sheets,e=>{r.value=e[0]?.name??``,g(r.value)},{immediate:!0}),(n,g)=>{let _=t.t;return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,H,[(0,a.createCommentVNode)(` 工具栏 `),(0,a.createElementVNode)(`div`,U,[(0,a.createElementVNode)(`div`,W,[(0,a.createElementVNode)(`div`,G,[e.sheets.length>1?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NTabs),{key:0,value:r.value,"onUpdate:value":g[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,a.withCtx)(()=>[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.sheets,e=>((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NTabPane),{key:e.name,name:e.name},{tab:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):((0,a.openBlock)(),(0,a.createElementBlock)(`span`,K,` 工作表: `+(0,a.toDisplayString)(r.value),1))]),(0,a.createElementVNode)(`div`,q,[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,onClick:g[1]||=e=>s.value=!s.value},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(_,{name:`ic:outline-format-paint`})]),default:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` `+(0,a.toDisplayString)(s.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,a.createElementVNode)(`div`,J,[(0,a.createCommentVNode)(` 信息面板 `),u.value.length>0?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,oe,[(0,a.createVNode)((0,a.unref)(o.NText),{depth:`3`,class:`text-sm`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` 当前工作表: `+(0,a.toDisplayString)(r.value)+` | 总行数: `+(0,a.toDisplayString)(u.value.length)+` | 总列数: `+(0,a.toDisplayString)(f.value.length)+` | 当前页: `+(0,a.toDisplayString)(c.value)+`/`+(0,a.toDisplayString)(p.value),1)]),_:1})])):(0,a.createCommentVNode)(`v-if`,!0),(0,a.createCommentVNode)(` 表格 `),(0,a.createElementVNode)(`div`,se,[(0,a.createElementVNode)(`div`,{class:(0,a.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!s.value}])},[u.value.length>0?((0,a.openBlock)(),(0,a.createElementBlock)(`table`,ce,[(0,a.createElementVNode)(`thead`,null,[(0,a.createElementVNode)(`tr`,null,[g[4]||=(0,a.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(f.value,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,a.normalizeStyle)({minWidth:e.width+`px`})},[(0,a.createElementVNode)(`div`,le,[(0,a.createElementVNode)(`span`,ue,(0,a.toDisplayString)((0,a.unref)(v)(t)),1),(0,a.createElementVNode)(`span`,de,(0,a.toDisplayString)(e.title),1)])],4))),128))])]),(0,a.createElementVNode)(`tbody`,null,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(m.value,(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,a.createElementVNode)(`td`,fe,(0,a.toDisplayString)((c.value-1)*l.value+t+1),1),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(f.value,t=>(0,a.withDirectives)(((0,a.openBlock)(),(0,a.createElementBlock)(`td`,{key:t.key,class:(0,a.normalizeClass)([`excel-cell`,[(0,a.unref)(x)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,s.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??(0,a.unref)(y)(e[t.key]?.value)},(0,a.toDisplayString)(e[t.key]?.displayValue??(0,a.unref)(y)(e[t.key]?.value)),11,pe)),[[a.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,me,[(0,a.createVNode)((0,a.unref)(o.NEmpty),{description:i.value||`该工作表没有数据或解析失败`},{extra:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,onClick:g[2]||=e=>n.$emit(`reload`)},{default:(0,a.withCtx)(()=>[...g[5]||=[(0,a.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),(0,a.createCommentVNode)(` 分页 `),p.value>1?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,he,[(0,a.createVNode)((0,a.unref)(o.NPagination),{page:c.value,"onUpdate:page":g[3]||=e=>c.value=e,"page-count":p.value,"page-size":l.value,"show-size-picker":``,"page-sizes":(0,a.unref)(d),"onUpdate:pageSize":h},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,a.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(ge,[[`__scopeId`,`data-v-5a0226ce`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:i,previewLimits:o}=e,s=(0,a.ref)(!1),c=(0,a.ref)(``),l=(0,a.ref)(0),u=(0,a.ref)(!1),d=(0,a.ref)(``),f=(0,a.ref)(0),m=(0,a.ref)(``),_=(0,a.ref)([]),v=(0,a.ref)([]),y=0,b=null,x=!1,S=(e,t)=>e===y&&!x&&!t.signal.aborted,C=(0,a.computed)(()=>i.value&&i.value!==`未知文件`?i.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),w=(0,a.computed)(()=>h(C.value)),T=(0,a.computed)(()=>g(w.value)),k=(0,a.computed)(()=>!!(n.value||r.value)),A=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},j=()=>{c.value=``,s.value=!1,l.value=0,A(),f.value=0,m.value=``,_.value=[],v.value=[]},M=e=>{c.value=e,s.value=!1},N=()=>{y+=1,b?.abort(),b=null,j()},P=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],C.value,{type:r.type})}throw Error(`未提供文件或URL`)},F=async(e,t,n)=>{switch(t){case`pdf`:{let t=await E(e);if(n!==y){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await D(e);if(n!==y)return;m.value=t.content,_.value=t.headings;break}case`excel`:{let t=await O(e,o?.value);if(n!==y)return;v.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},I=async()=>{if(x)return!1;let e=++y;b?.abort();let t=new AbortController;if(b=t,j(),!k.value)return b=null,!1;s.value=!0;try{let n=w.value,r=await P(t.signal);return e===y?(l.value=r.size,await F(r,n,e),S(e,t)):!1}catch(n){if(!S(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return M(`${w.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===y&&(s.value=!1,b=null)}};return(0,a.watch)([n,r],([e,t])=>{!e&&!t&&N()},{flush:`sync`}),(0,a.watch)(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),(0,a.onUnmounted)(()=>{x=!0,N()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:k,pdfUrl:d,pdfTotalPages:f,wordContent:m,wordHeadings:_,excelSheets:v,displayFileName:C,fileType:w,fileConfig:T,loadFile:I,openPreview:async()=>{if(x)return;let e=n.value||r.value;u.value=!0,await I()&&e&&e===(n.value||r.value)&&!x&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(x||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:C.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){M(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:N}}function Q(e){let t=(0,a.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,a.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,a.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const _e={class:`c-file-preview-wrapper`},ve={key:0,class:`file-info-card`},ye={class:`file-info`},be={class:`file-icon`},xe={class:`file-details`},Se={class:`file-name`},Ce={class:`file-meta`},we={class:`file-size`},Te={class:`file-actions`},Ee={key:1,class:`c-file-preview-inline`},De={key:1,class:`status-container`,role:`status`},$={class:`modal-header`},Oe={class:`modal-title`},ke={class:`modal-actions`},Ae={class:`modal-content`},je={class:`preview-header`},Me={class:`flex justify-between items-center`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm text-gray-500`},Fe={class:`flex gap-2`},Ie={class:`preview-content`},Le={key:1,class:`status-container`},Re=(0,a.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let r=e,{file:i,url:s,fileName:c,autoPreview:l,inline:u,previewLimits:d}=(0,a.toRefs)(r),{loading:f,error:p,fileSize:h,showModal:g,hasSource:_,pdfUrl:v,pdfTotalPages:y,wordContent:b,wordHeadings:x,excelSheets:S,displayFileName:C,fileType:w,fileConfig:T,loadFile:E,openPreview:D,downloadFile:O}=Z({file:i,url:s,fileName:c,previewLimits:d},n),k=(0,a.ref)(),{isFullscreen:A,toggleFullscreen:j,exitFullscreen:M}=Q(k);return(0,a.watch)(g,e=>{e||M()}),(0,a.watch)([i,s,l,u,c,()=>r.previewLimits?.maxBytes,()=>r.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!_.value)){if(u.value){E();return}if(g.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&E();return}l.value&&D()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,_e,[(0,a.createCommentVNode)(` 文件信息卡片模式 `),!(0,a.unref)(l)&&!(0,a.unref)(u)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,ve,[(0,a.createElementVNode)(`div`,ye,[(0,a.createElementVNode)(`div`,be,[(0,a.createVNode)(r,{name:(0,a.unref)(T).icon,size:40,color:(0,a.unref)(T).color},null,8,[`name`,`color`])]),(0,a.createElementVNode)(`div`,xe,[(0,a.createElementVNode)(`div`,Se,[(0,a.createVNode)((0,a.unref)(o.NEllipsis),{style:{"max-width":`250px`}},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)((0,a.unref)(C)),1)]),_:1}),(0,a.createVNode)((0,a.unref)(o.NTag),{type:(0,a.unref)(T).tagType,size:`small`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)((0,a.unref)(w).toUpperCase()),1)]),_:1},8,[`type`])]),(0,a.createElementVNode)(`div`,Ce,[(0,a.createElementVNode)(`span`,we,(0,a.toDisplayString)((0,a.unref)(m)((0,a.unref)(h))),1)])]),(0,a.createElementVNode)(`div`,Te,[(0,a.createVNode)((0,a.unref)(o.NButton),{type:`primary`,onClick:(0,a.unref)(D)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,a.withCtx)(()=>[n[2]||=(0,a.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,a.createVNode)((0,a.unref)(o.NButton),{type:`tertiary`,onClick:(0,a.unref)(O)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:`ic:outline-download`})]),default:(0,a.withCtx)(()=>[n[3]||=(0,a.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):(0,a.createCommentVNode)(`v-if`,!0),(0,a.unref)(u)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,Ee,[(0,a.unref)(_)?(0,a.unref)(f)||(0,a.unref)(p)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,De,[(0,a.unref)(f)?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NSpin),{key:0,size:`large`},{description:(0,a.withCtx)(()=>[...n[4]||=[(0,a.createTextVNode)(`正在加载文档…`,-1)]]),_:1})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,a.unref)(p)},{footer:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,onClick:(0,a.unref)(E)},{default:(0,a.withCtx)(()=>[...n[5]||=[(0,a.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,a.unref)(w)===`pdf`?((0,a.openBlock)(),(0,a.createBlock)(P,{key:2,"pdf-url":(0,a.unref)(v),"total-pages":(0,a.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,a.unref)(w)===`word`?((0,a.openBlock)(),(0,a.createBlock)(V,{key:3,content:(0,a.unref)(b),headings:(0,a.unref)(x)},null,8,[`content`,`headings`])):(0,a.unref)(w)===`excel`?((0,a.openBlock)(),(0,a.createBlock)(Y,{key:4,sheets:(0,a.unref)(S),onReload:(0,a.unref)(E)},null,8,[`sheets`,`onReload`])):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NResult),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):(0,a.createCommentVNode)(`v-if`,!0),(0,a.createCommentVNode)(` 模态框预览 `),(0,a.unref)(u)?(0,a.createCommentVNode)(`v-if`,!0):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NModal),{key:2,show:(0,a.unref)(g),"onUpdate:show":n[1]||=e=>(0,a.isRef)(g)?g.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:k,class:`modal-container`},[(0,a.createCommentVNode)(` 自定义头部 `),(0,a.createElementVNode)(`div`,$,[(0,a.createElementVNode)(`div`,Oe,[(0,a.createVNode)(r,{name:(0,a.unref)(T).icon,size:20,color:(0,a.unref)(T).color},null,8,[`name`,`color`]),(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)((0,a.unref)(C)),1)]),(0,a.createElementVNode)(`div`,ke,[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,type:`tertiary`,onClick:(0,a.unref)(O)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:`ic:outline-download`})]),default:(0,a.withCtx)(()=>[n[6]||=(0,a.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>g.value=!1},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,a.createCommentVNode)(` 预览内容 `),(0,a.createElementVNode)(`div`,Ae,[(0,a.createCommentVNode)(` 文件信息头部 `),(0,a.createElementVNode)(`div`,je,[(0,a.createElementVNode)(`div`,Me,[(0,a.createElementVNode)(`div`,Ne,[(0,a.createVNode)((0,a.unref)(o.NTag),{type:(0,a.unref)(T).tagType,size:`small`},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:(0,a.unref)(T).icon},null,8,[`name`])]),default:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` `+(0,a.toDisplayString)((0,a.unref)(w).toUpperCase()),1)]),_:1},8,[`type`]),(0,a.createVNode)((0,a.unref)(o.NEllipsis),{style:{"max-width":`300px`}},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)((0,a.unref)(C)),1)]),_:1}),(0,a.createElementVNode)(`span`,Pe,(0,a.toDisplayString)((0,a.unref)(m)((0,a.unref)(h))),1)]),(0,a.createElementVNode)(`div`,Fe,[(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,type:`tertiary`,disabled:(0,a.unref)(f),onClick:(0,a.unref)(E)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,a.withCtx)(()=>[n[7]||=(0,a.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,a.createVNode)((0,a.unref)(o.NButton),{size:`small`,type:`primary`,onClick:(0,a.unref)(j)},{icon:(0,a.withCtx)(()=>[(0,a.createVNode)(r,{name:(0,a.unref)(A)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` `+(0,a.toDisplayString)((0,a.unref)(A)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,a.createCommentVNode)(` 预览内容区域 `),(0,a.createElementVNode)(`div`,Ie,[(0,a.createCommentVNode)(` 加载和错误状态 `),(0,a.unref)(_)?(0,a.unref)(f)||(0,a.unref)(p)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,Le,[(0,a.unref)(f)?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NSpin),{key:0,size:`large`},{description:(0,a.withCtx)(()=>[(0,a.createTextVNode)(` 正在加载`+(0,a.toDisplayString)((0,a.unref)(w).toUpperCase())+`文件... `,1)]),_:1})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,a.unref)(p)},{footer:(0,a.withCtx)(()=>[(0,a.createVNode)((0,a.unref)(o.NButton),{onClick:(0,a.unref)(E)},{default:(0,a.withCtx)(()=>[...n[8]||=[(0,a.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:2},[(0,a.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,a.unref)(w)===`pdf`?((0,a.openBlock)(),(0,a.createBlock)(P,{key:0,"pdf-url":(0,a.unref)(v),"total-pages":(0,a.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,a.unref)(w)===`word`?((0,a.openBlock)(),(0,a.createBlock)(V,{key:1,content:(0,a.unref)(b),headings:(0,a.unref)(x)},null,8,[`content`,`headings`])):(0,a.unref)(w)===`excel`?((0,a.openBlock)(),(0,a.createBlock)(Y,{key:2,sheets:(0,a.unref)(S),onReload:(0,a.unref)(E)},null,8,[`sheets`,`onReload`])):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:3},[(0,a.createCommentVNode)(` 不支持的文件类型 `),(0,a.createVNode)((0,a.unref)(o.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,a.unref)(w).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}});var ze=n.t(Re,[[`__scopeId`,`data-v-3988cd59`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ze}});
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./html.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onMounted as h,onUnmounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,toRefs as S,unref as C,vShow as w,watch as T,withCtx as E,withDirectives as D}from"vue";import{NButton as O,NDivider as k,NEllipsis as A,NEmpty as j,NModal as M,NPagination as N,NResult as P,NSpin as F,NTabPane as I,NTabs as L,NTag as ee,NText as R}from"naive-ui";import*as z from"xlsx";import B from"mammoth";const V={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},H={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},U={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},W=[20,50,100,200],G=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],K=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},q=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},J=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&V[t]||`unknown`},Y=e=>H[e]||H.unknown,X=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},te=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},Z=e=>e==null?``:String(e),Q=1e5,ne=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`};function $(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function re(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??z.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function ie(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const ae=(e,t,n=Q)=>{let{c:r,r:i}=z.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>$(n,Q,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let o=Array.from({length:r+1},(t,n)=>{let r=e[z.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),s=new Map,c=0;return t.forEach(e=>{if(!ie(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:l}}=e;if(c+=(o-t+1)*(l-n+1),!Number.isSafeInteger(c)||c>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=l;r++)s.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:l-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[z.utils.encode_cell({r:n,c:t})],a=s.get(`${n}-${t}`);i[`col_${t}`]=re(r,a)}return i}),columns:o}};async function oe(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function se(e){let t=await e.arrayBuffer(),r=await B.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=n(r.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function ce(e,t={}){let n=$(t.maxBytes,33554432,`maxBytes`),r=$(t.maxCells,Q,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${q(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=z.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let o=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>ae(t,n,r)}});return Object.assign(o[0],o[0].load?.()),{sheets:o}}const le={class:`file-container pdf-container`},ue={class:`file-toolbar`},de={class:`file-viewer`},fe=[`src`];var pe=t(d({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>(_(),s(`div`,le,[c(`div`,ue,[n[1]||=c(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?(_(),a(C(O),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:E(()=>[...n[0]||=[l(`在新标签页打开`,-1)]]),_:1},8,[`href`])):o(`v-if`,!0)]),c(`div`,de,[e.pdfUrl?(_(),s(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,fe)):o(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-db027bb4`]]);const me={class:`file-container word-container`},he={class:`file-toolbar`},ge={class:`flex gap-2 items-center`},_e={class:`text-sm text-gray-600 min-w-12 text-center`},ve={class:`word-layout`},ye={class:`word-main`},be={key:0,class:`word-outline`},xe={class:`outline-content`},Se=[`onClick`],Ce={class:`word-content`},we=[`innerHTML`];var Te=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=X(i,U.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,me,[c(`div`,he,[c(`div`,ge,[u(C(O),{size:`small`,onClick:h[0]||=e=>n.value=!n.value},{icon:E(()=>[u(g,{name:`ic:outline-list`})]),default:E(()=>[l(` `+x(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),u(C(k),{vertical:``}),u(C(O),{size:`small`,disabled:i.value<=50,onClick:h[1]||=e=>C(a)(`out`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,_e,x(i.value)+`% `,1),u(C(O),{size:`small`,disabled:i.value>=200,onClick:h[2]||=e=>C(a)(`in`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:h[3]||=e=>C(a)(`reset`)},{icon:E(()=>[u(g,{name:`ic:outline-fit-screen`})]),default:E(()=>[h[4]||=l(` 重置 `,-1)]),_:1})])]),c(`div`,ve,[c(`div`,ye,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,be,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,xe,[(_(!0),s(r,null,y(t.headings,(e,t)=>(_(),s(`div`,{key:t,class:p([`outline-item`,`level-${e.level}`]),onClick:t=>d(e.id)},x(e.text),11,Se))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Ce,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,we)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const Ee={class:`file-container excel-container`},De={class:`file-toolbar`},Oe={class:`flex justify-between items-center`},ke={class:`flex gap-2 items-center`},Ae={key:1,class:`text-sm text-gray-600`},je={class:`flex gap-2 items-center`},Me={class:`excel-viewer`},Ne={key:0,class:`excel-info`},Pe={class:`excel-table-container`},Fe={key:0,class:`excel-table`},Ie={class:`header-content`},Le={class:`column-letter`},Re={class:`column-title`},ze={class:`row-number`},Be=[`rowspan`,`colspan`,`title`],Ve={key:1,class:`excel-empty`},He={key:0,class:`excel-pagination`};var Ue=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(``),h=v(!1),g=v(1),b=v(50),S=v([]),k=v([]),A=i(()=>Math.ceil(S.value.length/b.value)),M=i(()=>{let e=(g.value-1)*b.value;return S.value.slice(e,e+b.value)}),P=e=>{b.value=e,g.value=1},F=e=>{f.value=``,S.value=[],k.value=[],g.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;S.value=e.data,k.value=e.columns}catch(e){f.value=e instanceof Error?e.message:`工作表解析失败`}};return T(d,e=>{F(e)}),T(()=>n.sheets,e=>{d.value=e[0]?.name??``,F(d.value)},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,Ee,[o(` 工具栏 `),c(`div`,De,[c(`div`,Oe,[c(`div`,ke,[t.sheets.length>1?(_(),a(C(L),{key:0,value:d.value,"onUpdate:value":i[0]||=e=>d.value=e,type:`card`,size:`small`},{default:E(()=>[(_(!0),s(r,null,y(t.sheets,e=>(_(),a(C(I),{key:e.name,name:e.name},{tab:E(()=>[l(x(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Ae,` 工作表: `+x(d.value),1))]),c(`div`,je,[u(C(O),{size:`small`,onClick:i[1]||=e=>h.value=!h.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(h.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Me,[o(` 信息面板 `),S.value.length>0?(_(),s(`div`,Ne,[u(C(R),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(S.value.length)+` | 总列数: `+x(k.value.length)+` | 当前页: `+x(g.value)+`/`+x(A.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Pe,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!h.value}])},[S.value.length>0?(_(),s(`table`,Fe,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(k.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Ie,[c(`span`,Le,x(C(te)(t)),1),c(`span`,Re,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(M.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,ze,x((g.value-1)*b.value+t+1),1),(_(!0),s(r,null,y(k.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ne)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,h.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??C(Z)(e[t.key]?.value)},x(e[t.key]?.displayValue??C(Z)(e[t.key]?.value)),11,Be)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,Ve,[u(C(j),{description:f.value||`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),o(` 分页 `),A.value>1?(_(),s(`div`,He,[u(C(N),{page:g.value,"onUpdate:page":i[3]||=e=>g.value=e,"page-count":A.value,"page-size":b.value,"show-size-picker":``,"page-sizes":C(W),"onUpdate:pageSize":P},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5a0226ce`]]);function We(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Ge(e,t){let{file:n,url:r,fileName:a,previewLimits:o}=e,s=v(!1),c=v(``),l=v(0),u=v(!1),d=v(``),f=v(0),p=v(``),m=v([]),h=v([]),_=0,y=null,b=!1,x=(e,t)=>e===_&&!b&&!t.signal.aborted,S=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?K(r.value):`未知文件`),C=i(()=>J(S.value)),w=i(()=>Y(C.value)),E=i(()=>!!(n.value||r.value)),D=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},O=()=>{c.value=``,s.value=!1,l.value=0,D(),f.value=0,p.value=``,m.value=[],h.value=[]},k=e=>{c.value=e,s.value=!1},A=()=>{_+=1,y?.abort(),y=null,O()},j=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=We(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],S.value,{type:r.type})}throw Error(`未提供文件或URL`)},M=async(e,t,n)=>{switch(t){case`pdf`:{let t=await oe(e);if(n!==_){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await se(e);if(n!==_)return;p.value=t.content,m.value=t.headings;break}case`excel`:{let t=await ce(e,o?.value);if(n!==_)return;h.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},N=async()=>{if(b)return!1;let e=++_;y?.abort();let t=new AbortController;if(y=t,O(),!E.value)return y=null,!1;s.value=!0;try{let n=C.value,r=await j(t.signal);return e===_?(l.value=r.size,await M(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return k(`${C.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===_&&(s.value=!1,y=null)}};return T([n,r],([e,t])=>{!e&&!t&&A()},{flush:`sync`}),T(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),g(()=>{b=!0,A()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:E,pdfUrl:d,pdfTotalPages:f,wordContent:p,wordHeadings:m,excelSheets:h,displayFileName:S,fileType:C,fileConfig:w,loadFile:N,openPreview:async()=>{if(b)return;let e=n.value||r.value;u.value=!0,await N()&&e&&e===(n.value||r.value)&&!b&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(b||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:S.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=We(r.value,window.location.href);if(!e){k(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:A}}function Ke(e){let t=v(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return h(()=>{G.forEach(e=>document.addEventListener(e,n))}),g(()=>{G.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const qe={class:`c-file-preview-wrapper`},Je={key:0,class:`file-info-card`},Ye={class:`file-info`},Xe={class:`file-icon`},Ze={class:`file-details`},Qe={class:`file-name`},$e={class:`file-meta`},et={class:`file-size`},tt={class:`file-actions`},nt={key:1,class:`c-file-preview-inline`},rt={key:1,class:`status-container`,role:`status`},it={class:`modal-header`},at={class:`modal-title`},ot={class:`modal-actions`},st={class:`modal-content`},ct={class:`preview-header`},lt={class:`flex justify-between items-center`},ut={class:`flex items-center gap-3`},dt={class:`text-sm text-gray-500`},ft={class:`flex gap-2`},pt={class:`preview-content`},mt={key:1,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let i=t,{file:d,url:p,fileName:m,autoPreview:h,inline:g,previewLimits:y}=S(i),{loading:b,error:w,fileSize:D,showModal:k,hasSource:j,pdfUrl:N,pdfTotalPages:I,wordContent:L,wordHeadings:R,excelSheets:z,displayFileName:B,fileType:V,fileConfig:H,loadFile:U,openPreview:W,downloadFile:G}=Ge({file:d,url:p,fileName:m,previewLimits:y},n),K=v(),{isFullscreen:J,toggleFullscreen:Y,exitFullscreen:X}=Ke(K);return T(k,e=>{e||X()}),T([d,p,h,g,m,()=>i.previewLimits?.maxBytes,()=>i.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!j.value)){if(g.value){U();return}if(k.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&U();return}h.value&&W()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,qe,[o(` 文件信息卡片模式 `),!C(h)&&!C(g)?(_(),s(`div`,Je,[c(`div`,Ye,[c(`div`,Xe,[u(i,{name:C(H).icon,size:40,color:C(H).color},null,8,[`name`,`color`])]),c(`div`,Ze,[c(`div`,Qe,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),u(C(ee),{type:C(H).tagType,size:`small`},{default:E(()=>[l(x(C(V).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$e,[c(`span`,et,x(C(q)(C(D))),1)])]),c(`div`,tt,[u(C(O),{type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(G)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(g)?(_(),s(`div`,nt,[C(j)?C(b)||C(w)?(_(),s(`div`,rt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(U)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(V)===`pdf`?(_(),a(pe,{key:2,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:3,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:4,sheets:C(z),onReload:C(U)},null,8,[`sheets`,`onReload`])):(_(),a(C(P),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):o(`v-if`,!0),o(` 模态框预览 `),C(g)?o(`v-if`,!0):(_(),a(C(M),{key:2,show:C(k),"onUpdate:show":n[1]||=e=>f(k)?k.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:E(()=>[c(`div`,{ref_key:`modalContainer`,ref:K,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(H).icon,size:20,color:C(H).color},null,8,[`name`,`color`]),c(`span`,null,x(C(B)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(G)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[6]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>k.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,st,[o(` 文件信息头部 `),c(`div`,ct,[c(`div`,lt,[c(`div`,ut,[u(C(ee),{type:C(H).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(H).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(V).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),c(`span`,dt,x(C(q)(C(D))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(b),onClick:C(U)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[7]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(Y)},{icon:E(()=>[u(i,{name:C(J)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(J)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(j)?C(b)||C(w)?(_(),s(`div`,mt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(V).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{onClick:C(U)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:2},[o(` 文件预览 — 委托给子组件 `),C(V)===`pdf`?(_(),a(pe,{key:0,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:1,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:2,sheets:C(z),onReload:C(U)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(P),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(V).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-3988cd59`]]);export{Ke as n,Ge as r,ht as t};
1
+ import{n as e,t}from"./xlsx.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{t as i}from"./html.js";import{Fragment as a,computed as o,createBlock as s,createCommentVNode as c,createElementBlock as l,createElementVNode as u,createTextVNode as d,createVNode as f,defineComponent as p,isRef as m,normalizeClass as h,normalizeStyle as g,onMounted as _,onUnmounted as v,openBlock as y,ref as b,renderList as x,resolveComponent as S,toDisplayString as C,toRefs as w,unref as T,vShow as E,watch as D,withCtx as O,withDirectives as k}from"vue";import{NButton as A,NDivider as j,NEllipsis as M,NEmpty as N,NModal as P,NPagination as F,NResult as I,NSpin as L,NTabPane as R,NTabs as z,NTag as B,NText as V}from"naive-ui";import H from"mammoth";const U={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},W={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},G={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},K=[20,50,100,200],q=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],J=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},Y=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},X=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&U[t]||`unknown`},Z=e=>W[e]||W.unknown,ee=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},te=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},ne=e=>e==null?``:String(e),Q=1e5,re=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`};function $(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function ie(t,n){let r=n?.isMain?n:{rowspan:1,colspan:1};return{value:t?.v??``,displayValue:t?t.w??e.format_cell(t):``,type:t?.t,merged:!!n,hidden:!!(n&&!n.isMain),rowspan:r.rowspan,colspan:r.colspan}}function ae(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const oe=(t,n,r=Q)=>{let{c:i,r:a}=e.decode_range(t[`!ref`]||`A1:A1`).e,o=(i+1)*(a+1);if(!Number.isSafeInteger(o)||o<1||o>$(r,Q,`maxCells`))throw Error(`工作表范围超过 ${r.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let s=Array.from({length:i+1},(n,r)=>{let i=t[e.encode_cell({r:0,c:r})],a=i?String(i.v??``).trim():`列${r+1}`;return{title:a||`列${r+1}`,key:`col_${r}`,width:Math.min(Math.max(a.length*12,80),200)}}),c=new Map,l=0;return n.forEach(e=>{if(!ae(e,a,i))return;let{s:{r:t,c:n},e:{r,c:s}}=e;if(l+=(r-t+1)*(s-n+1),!Number.isSafeInteger(l)||l>o)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=r;e++)for(let i=n;i<=s;i++)c.set(`${e}-${i}`,{isMain:e===t&&i===n,rowspan:r-t+1,colspan:s-n+1})}),{data:Array.from({length:a+1},(n,r)=>{let a={};for(let n=0;n<=i;n++){let i=t[e.encode_cell({r,c:n})],o=c.get(`${r}-${n}`);a[`col_${n}`]=ie(i,o)}return a}),columns:s}};async function se(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function ce(e){let t=await e.arrayBuffer(),n=await H.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),r=[],a=document.createElement(`div`);a.innerHTML=i(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,i=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,r.push({id:n,text:a,level:i})}),{content:a.innerHTML,headings:r}}async function le(e,n={}){let r=$(n.maxBytes,33554432,`maxBytes`),i=$(n.maxCells,Q,`maxCells`);if(e.size>r)throw Error(`Excel 文件超过 ${Y(r)} 的预览上限,请下载文件查看`);let a=t(await e.arrayBuffer(),{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let o=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>oe(t,n,i)}});return Object.assign(o[0],o[0].load?.()),{sheets:o}}const ue={class:`file-container pdf-container`},de={class:`file-toolbar`},fe={class:`file-viewer`},pe=[`src`];var me=r(p({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>(y(),l(`div`,ue,[u(`div`,de,[n[1]||=u(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?(y(),s(T(A),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:O(()=>[...n[0]||=[d(`在新标签页打开`,-1)]]),_:1},8,[`href`])):c(`v-if`,!0)]),u(`div`,fe,[e.pdfUrl?(y(),l(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,pe)):c(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-db027bb4`]]);const he={class:`file-container word-container`},ge={class:`file-toolbar`},_e={class:`flex gap-2 items-center`},ve={class:`text-sm text-gray-600 min-w-12 text-center`},ye={class:`word-layout`},be={class:`word-main`},xe={key:0,class:`word-outline`},Se={class:`outline-content`},Ce=[`onClick`],we={class:`word-content`},Te=[`innerHTML`];var Ee=r(p({__name:`index`,props:{content:{},headings:{}},setup(e){let t=b(!0),r=b(100),i=ee(r,G.word),o=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(s,p)=>{let m=n;return y(),l(`div`,he,[u(`div`,ge,[u(`div`,_e,[f(T(A),{size:`small`,onClick:p[0]||=e=>t.value=!t.value},{icon:O(()=>[f(m,{name:`ic:outline-list`})]),default:O(()=>[d(` `+C(t.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),f(T(j),{vertical:``}),f(T(A),{size:`small`,disabled:r.value<=50,onClick:p[1]||=e=>T(i)(`out`)},{icon:O(()=>[f(m,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),u(`span`,ve,C(r.value)+`% `,1),f(T(A),{size:`small`,disabled:r.value>=200,onClick:p[2]||=e=>T(i)(`in`)},{icon:O(()=>[f(m,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),f(T(A),{size:`small`,onClick:p[3]||=e=>T(i)(`reset`)},{icon:O(()=>[f(m,{name:`ic:outline-fit-screen`})]),default:O(()=>[p[4]||=d(` 重置 `,-1)]),_:1})])]),u(`div`,ye,[u(`div`,be,[c(` 侧边栏目录 `),t.value?(y(),l(`div`,xe,[p[5]||=u(`div`,{class:`outline-header`},[u(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),u(`div`,Se,[(y(!0),l(a,null,x(e.headings,(e,t)=>(y(),l(`div`,{key:t,class:h([`outline-item`,`level-${e.level}`]),onClick:t=>o(e.id)},C(e.text),11,Ce))),128))])])):c(`v-if`,!0),c(` 主要内容区域 `),u(`div`,we,[u(`div`,{class:`word-document`,style:g({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,Te)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const De={class:`file-container excel-container`},Oe={class:`file-toolbar`},ke={class:`flex justify-between items-center`},Ae={class:`flex gap-2 items-center`},je={key:1,class:`text-sm text-gray-600`},Me={class:`flex gap-2 items-center`},Ne={class:`excel-viewer`},Pe={key:0,class:`excel-info`},Fe={class:`excel-table-container`},Ie={key:0,class:`excel-table`},Le={class:`header-content`},Re={class:`column-letter`},ze={class:`column-title`},Be={class:`row-number`},Ve=[`rowspan`,`colspan`,`title`],He={key:1,class:`excel-empty`},Ue={key:0,class:`excel-pagination`};var We=r(p({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let t=e,r=b(``),i=b(``),p=b(!1),m=b(1),_=b(50),v=b([]),S=b([]),w=o(()=>Math.ceil(v.value.length/_.value)),j=o(()=>{let e=(m.value-1)*_.value;return v.value.slice(e,e+_.value)}),M=e=>{_.value=e,m.value=1},P=e=>{i.value=``,v.value=[],S.value=[],m.value=1;let n=t.sheets.find(t=>t.name===e);if(n)try{let e=n.data.length>0?n:n.load?.()??n;v.value=e.data,S.value=e.columns}catch(e){i.value=e instanceof Error?e.message:`工作表解析失败`}};return D(r,e=>{P(e)}),D(()=>t.sheets,e=>{r.value=e[0]?.name??``,P(r.value)},{immediate:!0}),(t,o)=>{let b=n;return y(),l(`div`,De,[c(` 工具栏 `),u(`div`,Oe,[u(`div`,ke,[u(`div`,Ae,[e.sheets.length>1?(y(),s(T(z),{key:0,value:r.value,"onUpdate:value":o[0]||=e=>r.value=e,type:`card`,size:`small`},{default:O(()=>[(y(!0),l(a,null,x(e.sheets,e=>(y(),s(T(R),{key:e.name,name:e.name},{tab:O(()=>[d(C(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):(y(),l(`span`,je,` 工作表: `+C(r.value),1))]),u(`div`,Me,[f(T(A),{size:`small`,onClick:o[1]||=e=>p.value=!p.value},{icon:O(()=>[f(b,{name:`ic:outline-format-paint`})]),default:O(()=>[d(` `+C(p.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),u(`div`,Ne,[c(` 信息面板 `),v.value.length>0?(y(),l(`div`,Pe,[f(T(V),{depth:`3`,class:`text-sm`},{default:O(()=>[d(` 当前工作表: `+C(r.value)+` | 总行数: `+C(v.value.length)+` | 总列数: `+C(S.value.length)+` | 当前页: `+C(m.value)+`/`+C(w.value),1)]),_:1})])):c(`v-if`,!0),c(` 表格 `),u(`div`,Fe,[u(`div`,{class:h([`excel-table-wrapper`,{"simple-mode":!p.value}])},[v.value.length>0?(y(),l(`table`,Ie,[u(`thead`,null,[u(`tr`,null,[o[4]||=u(`th`,{class:`row-number`},`行号`,-1),(y(!0),l(a,null,x(S.value,(e,t)=>(y(),l(`th`,{key:e.key,class:`excel-header`,style:g({minWidth:e.width+`px`})},[u(`div`,Le,[u(`span`,Re,C(T(te)(t)),1),u(`span`,ze,C(e.title),1)])],4))),128))])]),u(`tbody`,null,[(y(!0),l(a,null,x(j.value,(e,t)=>(y(),l(`tr`,{key:t,class:`excel-row`},[u(`td`,Be,C((m.value-1)*_.value+t+1),1),(y(!0),l(a,null,x(S.value,t=>k((y(),l(`td`,{key:t.key,class:h([`excel-cell`,[T(re)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,p.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??T(ne)(e[t.key]?.value)},C(e[t.key]?.displayValue??T(ne)(e[t.key]?.value)),11,Ve)),[[E,!e[t.key]?.hidden]])),128))]))),128))])])):(y(),l(`div`,He,[f(T(N),{description:i.value||`该工作表没有数据或解析失败`},{extra:O(()=>[f(T(A),{size:`small`,onClick:o[2]||=e=>t.$emit(`reload`)},{default:O(()=>[...o[5]||=[d(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),c(` 分页 `),w.value>1?(y(),l(`div`,Ue,[f(T(F),{page:m.value,"onUpdate:page":o[3]||=e=>m.value=e,"page-count":w.value,"page-size":_.value,"show-size-picker":``,"page-sizes":T(K),"onUpdate:pageSize":M},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):c(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5a0226ce`]]);function Ge(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Ke(e,t){let{file:n,url:r,fileName:i,previewLimits:a}=e,s=b(!1),c=b(``),l=b(0),u=b(!1),d=b(``),f=b(0),p=b(``),m=b([]),h=b([]),g=0,_=null,y=!1,x=(e,t)=>e===g&&!y&&!t.signal.aborted,S=o(()=>i.value&&i.value!==`未知文件`?i.value:n.value?.name?n.value.name:r.value?J(r.value):`未知文件`),C=o(()=>X(S.value)),w=o(()=>Z(C.value)),T=o(()=>!!(n.value||r.value)),E=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},O=()=>{c.value=``,s.value=!1,l.value=0,E(),f.value=0,p.value=``,m.value=[],h.value=[]},k=e=>{c.value=e,s.value=!1},A=()=>{g+=1,_?.abort(),_=null,O()},j=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=Ge(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],S.value,{type:r.type})}throw Error(`未提供文件或URL`)},M=async(e,t,n)=>{switch(t){case`pdf`:{let t=await se(e);if(n!==g){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await ce(e);if(n!==g)return;p.value=t.content,m.value=t.headings;break}case`excel`:{let t=await le(e,a?.value);if(n!==g)return;h.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},N=async()=>{if(y)return!1;let e=++g;_?.abort();let t=new AbortController;if(_=t,O(),!T.value)return _=null,!1;s.value=!0;try{let n=C.value,r=await j(t.signal);return e===g?(l.value=r.size,await M(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return k(`${C.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===g&&(s.value=!1,_=null)}};return D([n,r],([e,t])=>{!e&&!t&&A()},{flush:`sync`}),D(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),v(()=>{y=!0,A()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:T,pdfUrl:d,pdfTotalPages:f,wordContent:p,wordHeadings:m,excelSheets:h,displayFileName:S,fileType:C,fileConfig:w,loadFile:N,openPreview:async()=>{if(y)return;let e=n.value||r.value;u.value=!0,await N()&&e&&e===(n.value||r.value)&&!y&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(y||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:S.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=Ge(r.value,window.location.href);if(!e){k(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:A}}function qe(e){let t=b(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return _(()=>{q.forEach(e=>document.addEventListener(e,n))}),v(()=>{q.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const Je={class:`c-file-preview-wrapper`},Ye={key:0,class:`file-info-card`},Xe={class:`file-info`},Ze={class:`file-icon`},Qe={class:`file-details`},$e={class:`file-name`},et={class:`file-meta`},tt={class:`file-size`},nt={class:`file-actions`},rt={key:1,class:`c-file-preview-inline`},it={key:1,class:`status-container`,role:`status`},at={class:`modal-header`},ot={class:`modal-title`},st={class:`modal-actions`},ct={class:`modal-content`},lt={class:`preview-header`},ut={class:`flex justify-between items-center`},dt={class:`flex items-center gap-3`},ft={class:`text-sm text-gray-500`},pt={class:`flex gap-2`},mt={class:`preview-content`},ht={key:1,class:`status-container`};var gt=r(p({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:t}){let r=e,{file:i,url:o,fileName:p,autoPreview:h,inline:g,previewLimits:_}=w(r),{loading:v,error:x,fileSize:S,showModal:E,hasSource:k,pdfUrl:j,pdfTotalPages:N,wordContent:F,wordHeadings:R,excelSheets:z,displayFileName:V,fileType:H,fileConfig:U,loadFile:W,openPreview:G,downloadFile:K}=Ke({file:i,url:o,fileName:p,previewLimits:_},t),q=b(),{isFullscreen:J,toggleFullscreen:X,exitFullscreen:Z}=qe(q);return D(E,e=>{e||Z()}),D([i,o,h,g,p,()=>r.previewLimits?.maxBytes,()=>r.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!k.value)){if(g.value){W();return}if(E.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&W();return}h.value&&G()}},{immediate:!0}),(e,t)=>{let r=n;return y(),l(`div`,Je,[c(` 文件信息卡片模式 `),!T(h)&&!T(g)?(y(),l(`div`,Ye,[u(`div`,Xe,[u(`div`,Ze,[f(r,{name:T(U).icon,size:40,color:T(U).color},null,8,[`name`,`color`])]),u(`div`,Qe,[u(`div`,$e,[f(T(M),{style:{"max-width":`250px`}},{default:O(()=>[d(C(T(V)),1)]),_:1}),f(T(B),{type:T(U).tagType,size:`small`},{default:O(()=>[d(C(T(H).toUpperCase()),1)]),_:1},8,[`type`])]),u(`div`,et,[u(`span`,tt,C(T(Y)(T(S))),1)])]),u(`div`,nt,[f(T(A),{type:`primary`,onClick:T(G)},{icon:O(()=>[f(r,{name:`ic:outline-visibility`})]),default:O(()=>[t[2]||=d(` 预览 `,-1)]),_:1},8,[`onClick`]),f(T(A),{type:`tertiary`,onClick:T(K)},{icon:O(()=>[f(r,{name:`ic:outline-download`})]),default:O(()=>[t[3]||=d(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):c(`v-if`,!0),T(g)?(y(),l(`div`,rt,[T(k)?T(v)||T(x)?(y(),l(`div`,it,[T(v)?(y(),s(T(L),{key:0,size:`large`},{description:O(()=>[...t[4]||=[d(`正在加载文档…`,-1)]]),_:1})):(y(),s(T(I),{key:1,status:`error`,title:`预览失败`,description:T(x)},{footer:O(()=>[f(T(A),{size:`small`,onClick:T(W)},{default:O(()=>[...t[5]||=[d(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):T(H)===`pdf`?(y(),s(me,{key:2,"pdf-url":T(j),"total-pages":T(N)},null,8,[`pdf-url`,`total-pages`])):T(H)===`word`?(y(),s(Ee,{key:3,content:T(F),headings:T(R)},null,8,[`content`,`headings`])):T(H)===`excel`?(y(),s(We,{key:4,sheets:T(z),onReload:T(W)},null,8,[`sheets`,`onReload`])):(y(),s(T(I),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):(y(),s(T(I),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):c(`v-if`,!0),c(` 模态框预览 `),T(g)?c(`v-if`,!0):(y(),s(T(P),{key:2,show:T(E),"onUpdate:show":t[1]||=e=>m(E)?E.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:O(()=>[u(`div`,{ref_key:`modalContainer`,ref:q,class:`modal-container`},[c(` 自定义头部 `),u(`div`,at,[u(`div`,ot,[f(r,{name:T(U).icon,size:20,color:T(U).color},null,8,[`name`,`color`]),u(`span`,null,C(T(V)),1)]),u(`div`,st,[f(T(A),{size:`small`,type:`tertiary`,onClick:T(K)},{icon:O(()=>[f(r,{name:`ic:outline-download`})]),default:O(()=>[t[6]||=d(` 下载 `,-1)]),_:1},8,[`onClick`]),f(T(A),{size:`small`,type:`tertiary`,onClick:t[0]||=e=>E.value=!1},{icon:O(()=>[f(r,{name:`ic:outline-close`})]),_:1})])]),c(` 预览内容 `),u(`div`,ct,[c(` 文件信息头部 `),u(`div`,lt,[u(`div`,ut,[u(`div`,dt,[f(T(B),{type:T(U).tagType,size:`small`},{icon:O(()=>[f(r,{name:T(U).icon},null,8,[`name`])]),default:O(()=>[d(` `+C(T(H).toUpperCase()),1)]),_:1},8,[`type`]),f(T(M),{style:{"max-width":`300px`}},{default:O(()=>[d(C(T(V)),1)]),_:1}),u(`span`,ft,C(T(Y)(T(S))),1)]),u(`div`,pt,[f(T(A),{size:`small`,type:`tertiary`,disabled:T(v),onClick:T(W)},{icon:O(()=>[f(r,{name:`ic:outline-refresh`})]),default:O(()=>[t[7]||=d(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),f(T(A),{size:`small`,type:`primary`,onClick:T(X)},{icon:O(()=>[f(r,{name:T(J)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:O(()=>[d(` `+C(T(J)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),c(` 预览内容区域 `),u(`div`,mt,[c(` 加载和错误状态 `),T(k)?T(v)||T(x)?(y(),l(`div`,ht,[T(v)?(y(),s(T(L),{key:0,size:`large`},{description:O(()=>[d(` 正在加载`+C(T(H).toUpperCase())+`文件... `,1)]),_:1})):(y(),s(T(I),{key:1,status:`error`,title:`预览失败`,description:T(x)},{footer:O(()=>[f(T(A),{onClick:T(W)},{default:O(()=>[...t[8]||=[d(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(y(),l(a,{key:2},[c(` 文件预览 — 委托给子组件 `),T(H)===`pdf`?(y(),s(me,{key:0,"pdf-url":T(j),"total-pages":T(N)},null,8,[`pdf-url`,`total-pages`])):T(H)===`word`?(y(),s(Ee,{key:1,content:T(F),headings:T(R)},null,8,[`content`,`headings`])):T(H)===`excel`?(y(),s(We,{key:2,sheets:T(z),onReload:T(W)},null,8,[`sheets`,`onReload`])):(y(),l(a,{key:3},[c(` 不支持的文件类型 `),f(T(I),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${T(H).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(y(),s(T(I),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-3988cd59`]]);export{qe as n,Ke as r,gt as t};
@@ -1,12 +1,12 @@
1
1
  :root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
2
2
 
3
- .c-form .c-form-actions[data-v-37ca39aa] {
3
+ .c-form .c-form-actions[data-v-21fb0c93] {
4
4
  margin-top: var(--c-form-row-gap, 20px);
5
5
  }
6
- :is(.c-form--default[data-v-37ca39aa], .c-form--compact[data-v-37ca39aa], .c-form--comfortable[data-v-37ca39aa]) .c-form-field .n-form-item-feedback-wrapper {
6
+ :is(.c-form--default[data-v-21fb0c93], .c-form--compact[data-v-21fb0c93], .c-form--comfortable[data-v-21fb0c93]) .c-form-field .n-form-item-feedback-wrapper {
7
7
  min-height: var(--c-form-item-gap);
8
8
  }
9
- :is(.c-form--default[data-v-37ca39aa], .c-form--compact[data-v-37ca39aa], .c-form--comfortable[data-v-37ca39aa]) :is(
9
+ :is(.c-form--default[data-v-21fb0c93], .c-form--compact[data-v-21fb0c93], .c-form--comfortable[data-v-21fb0c93]) :is(
10
10
  .c-form-card > .n-card,
11
11
  .c-form-card > .form-content > .n-card,
12
12
  .c-form-steps > .steps-container > .steps-content,
@@ -19,12 +19,12 @@
19
19
  }
20
20
 
21
21
  /* layer: default */
22
- .visible[data-v-37ca39aa]{visibility:visible;}
23
- .grid[data-v-37ca39aa]{display:grid;}
24
- .inline[data-v-37ca39aa]{display:inline;}
25
- .px[data-v-37ca39aa]{padding-left:1rem;padding-right:1rem;}
26
- .blur[data-v-37ca39aa]{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
27
- .filter[data-v-37ca39aa]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
22
+ .visible[data-v-21fb0c93]{visibility:visible;}
23
+ .grid[data-v-21fb0c93]{display:grid;}
24
+ .inline[data-v-21fb0c93]{display:inline;}
25
+ .px[data-v-21fb0c93]{padding-left:1rem;padding-right:1rem;}
26
+ .blur[data-v-21fb0c93]{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
27
+ .filter[data-v-21fb0c93]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
28
28
 
29
29
  /* Card 布局样式 */
30
30
  .c-form-card[data-v-7818d397] {
@@ -653,116 +653,116 @@ to {
653
653
 
654
654
  /* Grid 布局样式 */
655
655
  /* 变量定义 */
656
- .c-grid-layout[data-v-4758bc1e] {
656
+ .c-grid-layout[data-v-f8588934] {
657
657
  width: 100%;
658
658
  /* 配置面板 */
659
659
  }
660
- .c-grid-layout .config-panel[data-v-4758bc1e] {
660
+ .c-grid-layout .config-panel[data-v-f8588934] {
661
661
  margin-bottom: 1rem;
662
662
  }
663
- .c-grid-layout .config-panel .config-header[data-v-4758bc1e] {
663
+ .c-grid-layout .config-panel .config-header[data-v-f8588934] {
664
664
  display: flex;
665
665
  align-items: center;
666
666
  gap: 0.5rem;
667
667
  font-weight: 500;
668
668
  margin-bottom: 8px;
669
669
  }
670
- .c-grid-layout .config-panel .config-controls[data-v-4758bc1e] {
670
+ .c-grid-layout .config-panel .config-controls[data-v-f8588934] {
671
671
  display: flex;
672
672
  gap: 1rem;
673
673
  flex-wrap: wrap;
674
674
  }
675
- .c-grid-layout .config-panel .config-controls .config-item[data-v-4758bc1e] {
675
+ .c-grid-layout .config-panel .config-controls .config-item[data-v-f8588934] {
676
676
  display: flex;
677
677
  align-items: center;
678
678
  gap: 0.5rem;
679
679
  }
680
- .c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-4758bc1e] {
680
+ .c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-f8588934] {
681
681
  font-size: 0.875rem;
682
682
  white-space: nowrap;
683
683
  min-width: 3rem;
684
684
  }
685
- .c-grid-layout[data-v-4758bc1e] {
685
+ .c-grid-layout[data-v-f8588934] {
686
686
  /* 网格容器 */
687
687
  }
688
- .c-grid-layout .grid-container[data-v-4758bc1e] {
688
+ .c-grid-layout .grid-container[data-v-f8588934] {
689
689
  width: 100%;
690
690
  }
691
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e] {
691
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934] {
692
692
  /* 进场动画 */
693
- animation: fadeInUp-4758bc1e 0.3s ease-out both;
693
+ animation: fadeInUp-f8588934 0.3s ease-out both;
694
694
  }
695
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(1) {
695
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(1) {
696
696
  animation-delay: 0.05s;
697
697
  }
698
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(2) {
698
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(2) {
699
699
  animation-delay: 0.1s;
700
700
  }
701
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(3) {
701
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(3) {
702
702
  animation-delay: 0.15s;
703
703
  }
704
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(4) {
704
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(4) {
705
705
  animation-delay: 0.2s;
706
706
  }
707
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(5) {
707
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(5) {
708
708
  animation-delay: 0.25s;
709
709
  }
710
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(6) {
710
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(6) {
711
711
  animation-delay: 0.3s;
712
712
  }
713
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(7) {
713
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(7) {
714
714
  animation-delay: 0.35s;
715
715
  }
716
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(8) {
716
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(8) {
717
717
  animation-delay: 0.4s;
718
718
  }
719
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(9) {
719
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(9) {
720
720
  animation-delay: 0.45s;
721
721
  }
722
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(10) {
722
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(10) {
723
723
  animation-delay: 0.5s;
724
724
  }
725
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(11) {
725
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(11) {
726
726
  animation-delay: 0.55s;
727
727
  }
728
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(12) {
728
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(12) {
729
729
  animation-delay: 0.6s;
730
730
  }
731
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(13) {
731
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(13) {
732
732
  animation-delay: 0.65s;
733
733
  }
734
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(14) {
734
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(14) {
735
735
  animation-delay: 0.7s;
736
736
  }
737
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(15) {
737
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(15) {
738
738
  animation-delay: 0.75s;
739
739
  }
740
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(16) {
740
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(16) {
741
741
  animation-delay: 0.8s;
742
742
  }
743
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(17) {
743
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(17) {
744
744
  animation-delay: 0.85s;
745
745
  }
746
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(18) {
746
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(18) {
747
747
  animation-delay: 0.9s;
748
748
  }
749
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(19) {
749
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(19) {
750
750
  animation-delay: 0.95s;
751
751
  }
752
- .c-grid-layout .grid-container .grid-item[data-v-4758bc1e]:nth-child(20) {
752
+ .c-grid-layout .grid-container .grid-item[data-v-f8588934]:nth-child(20) {
753
753
  animation-delay: 1s;
754
754
  }
755
- .c-grid-layout[data-v-4758bc1e] {
755
+ .c-grid-layout[data-v-f8588934] {
756
756
  /* 统计信息 */
757
757
  }
758
- .c-grid-layout .grid-stats[data-v-4758bc1e] {
758
+ .c-grid-layout .grid-stats[data-v-f8588934] {
759
759
  margin-top: 1rem;
760
760
  font-size: 0.875rem;
761
761
  opacity: 0.8;
762
762
  }
763
763
 
764
764
  /* 动画定义 */
765
- @keyframes fadeInUp-4758bc1e {
765
+ @keyframes fadeInUp-f8588934 {
766
766
  from {
767
767
  opacity: 0;
768
768
  transform: translateY(10px) scale(0.95);
@@ -773,59 +773,59 @@ to {
773
773
  }
774
774
  }
775
775
  /* 表单控件统一宽度 */
776
- [data-v-4758bc1e] .n-form-item .n-form-item-blank {
776
+ [data-v-f8588934] .n-form-item .n-form-item-blank {
777
777
  /* 统一所有表单控件的宽度 */
778
778
  }
779
- [data-v-4758bc1e] .n-form-item .n-form-item-blank .n-input,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-input-number,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-select,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-date-picker,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-time-picker,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-cascader,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-tree-select,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-4758bc1e] .n-form-item .n-form-item-blank .n-dynamic-tags {
779
+ [data-v-f8588934] .n-form-item .n-form-item-blank .n-input,[data-v-f8588934] .n-form-item .n-form-item-blank .n-input-number,[data-v-f8588934] .n-form-item .n-form-item-blank .n-select,[data-v-f8588934] .n-form-item .n-form-item-blank .n-date-picker,[data-v-f8588934] .n-form-item .n-form-item-blank .n-time-picker,[data-v-f8588934] .n-form-item .n-form-item-blank .n-cascader,[data-v-f8588934] .n-form-item .n-form-item-blank .n-tree-select,[data-v-f8588934] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-f8588934] .n-form-item .n-form-item-blank .n-dynamic-tags {
780
780
  width: 100% !important;
781
781
  }
782
782
 
783
783
  /* 响应式设计 */
784
784
  @media (max-width: 768px) {
785
- .c-grid-layout .config-panel .config-controls[data-v-4758bc1e] {
785
+ .c-grid-layout .config-panel .config-controls[data-v-f8588934] {
786
786
  flex-direction: column;
787
787
  gap: 0.75rem;
788
788
  }
789
- .c-grid-layout .config-panel .config-controls .config-item[data-v-4758bc1e] {
789
+ .c-grid-layout .config-panel .config-controls .config-item[data-v-f8588934] {
790
790
  justify-content: space-between;
791
791
  }
792
- .c-grid-layout .grid-container[data-v-4758bc1e] .n-grid {
792
+ .c-grid-layout .grid-container[data-v-f8588934] .n-grid {
793
793
  gap: 0.5rem !important;
794
794
  }
795
- .c-grid-layout .grid-container .grid-item .item-wrapper[data-v-4758bc1e] {
795
+ .c-grid-layout .grid-container .grid-item .item-wrapper[data-v-f8588934] {
796
796
  padding: 0.125rem;
797
797
  }
798
- .c-grid-layout .grid-stats[data-v-4758bc1e] {
798
+ .c-grid-layout .grid-stats[data-v-f8588934] {
799
799
  margin-top: 0.75rem;
800
800
  font-size: 0.875rem;
801
801
  }
802
802
  }
803
803
  @media (max-width: 480px) {
804
- .c-grid-layout .config-panel[data-v-4758bc1e] {
804
+ .c-grid-layout .config-panel[data-v-f8588934] {
805
805
  margin-bottom: 0.75rem;
806
806
  }
807
807
  }
808
808
  /* 主题适配 */
809
- [data-v-4758bc1e] .n-card {
809
+ [data-v-f8588934] .n-card {
810
810
  --n-border-radius: 8px;
811
811
  }
812
- [data-v-4758bc1e] .n-input-number {
812
+ [data-v-f8588934] .n-input-number {
813
813
  --n-width: 100%;
814
814
  }
815
815
 
816
816
  /* 暗色主题 */
817
817
  @media (prefers-color-scheme: dark) {
818
- .c-grid-layout .grid-container .grid-item .item-wrapper[data-v-4758bc1e]:hover {
818
+ .c-grid-layout .grid-container .grid-item .item-wrapper[data-v-f8588934]:hover {
819
819
  background-color: rgba(255, 255, 255, 0.05);
820
820
  }
821
821
  }
822
822
 
823
823
  /* layer: default */
824
- .visible[data-v-4758bc1e]{visibility:visible;}
825
- .grid[data-v-4758bc1e]{display:grid;}
826
- .inline[data-v-4758bc1e]{display:inline;}
827
- .px[data-v-4758bc1e]{padding-left:1rem;padding-right:1rem;}
828
- .blur[data-v-4758bc1e]{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
824
+ .visible[data-v-f8588934]{visibility:visible;}
825
+ .grid[data-v-f8588934]{display:grid;}
826
+ .inline[data-v-f8588934]{display:inline;}
827
+ .px[data-v-f8588934]{padding-left:1rem;padding-right:1rem;}
828
+ .blur[data-v-f8588934]{--un-blur:blur(8px);filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
829
829
 
830
830
  /* Inline 布局样式 */
831
831
  .c-form-inline[data-v-711f6c00] {
package/dist/C_Form.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk.cjs`),require(`./C_Icon2.cjs`);const e=require(`./helpers.cjs`),t=require(`./useDynamicFormState.cjs`);let n=require(`@robot-admin/form-validate`);exports.C_Form=e.i,exports.DYNAMIC_FORM_STATE_KEY=t.t,exports.FIELD_TYPE_OPTIONS=t.n,exports.FORM_DEFAULTS=e.f,exports.FORM_GLOBAL_CONFIG_KEY=e.p,exports.FORM_RENDERER_REGISTRY_KEY=e.a,exports.LAYOUTS_WITH_OWN_CONTROLS=e.m,Object.defineProperty(exports,`NAIVE_COMBOS`,{enumerable:!0,get:function(){return n.NAIVE_COMBOS}}),Object.defineProperty(exports,`PRESET_RULES`,{enumerable:!0,get:function(){return n.PRESET_RULES}}),Object.defineProperty(exports,`SPEC_RULES`,{enumerable:!0,get:function(){return n.SPEC_RULES}}),exports.createFormRendererRegistry=e.o,exports.defineFormConfig=e.t,exports.defineFormOptions=e.n,exports.mergeFormConfig=e.h,exports.registerRenderer=e.s,exports.resolveFormConfig=e.g,exports.shouldShowActions=e._,exports.unregisterRenderer=e.c,exports.useCForm=e.r,exports.useDynamicFormState=t.r,exports.useFormDirty=e.d,exports.useFormGlobalConfig=e.v,exports.useFormRenderer=e.l,exports.useFormState=e.u;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk.cjs`);const e=require(`./config.cjs`);require(`./C_Icon2.cjs`);const t=require(`./useFormConfig.cjs`),n=require(`./helpers.cjs`),r=require(`./useDynamicFormState.cjs`);let i=require(`@robot-admin/form-validate`);exports.C_Form=n.i,exports.DYNAMIC_FORM_STATE_KEY=r.t,exports.FIELD_TYPE_OPTIONS=r.n,exports.FORM_DEFAULTS=t.t,exports.FORM_GLOBAL_CONFIG_KEY=e.FORM_GLOBAL_CONFIG_KEY,exports.FORM_RENDERER_REGISTRY_KEY=n.a,exports.LAYOUTS_WITH_OWN_CONTROLS=t.n,Object.defineProperty(exports,`NAIVE_COMBOS`,{enumerable:!0,get:function(){return i.NAIVE_COMBOS}}),Object.defineProperty(exports,`PRESET_RULES`,{enumerable:!0,get:function(){return i.PRESET_RULES}}),Object.defineProperty(exports,`SPEC_RULES`,{enumerable:!0,get:function(){return i.SPEC_RULES}}),exports.createFormRendererRegistry=n.o,exports.defineFormConfig=n.t,exports.defineFormOptions=n.n,exports.mergeFormConfig=t.r,exports.registerRenderer=n.s,exports.resolveFormConfig=t.i,exports.shouldShowActions=t.a,exports.unregisterRenderer=n.c,exports.useCForm=n.r,exports.useDynamicFormState=r.r,exports.useFormDirty=n.d,exports.useFormGlobalConfig=t.o,exports.useFormRenderer=n.l,exports.useFormState=n.u;