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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +2 -0
  3. package/README_EN.md +2 -0
  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_Editor.css +18 -18
  9. package/dist/C_Editor2.cjs +1 -1
  10. package/dist/C_Editor2.js +1 -1
  11. package/dist/C_FilePreview2.cjs +1 -1
  12. package/dist/C_FilePreview2.js +1 -1
  13. package/dist/C_Form.css +18 -18
  14. package/dist/C_FullCalendar2.cjs +1 -1
  15. package/dist/C_Markdown.css +37 -37
  16. package/dist/C_Markdown2.cjs +1 -1
  17. package/dist/C_Markdown2.js +1 -1
  18. package/dist/C_QRCode2.cjs +1 -1
  19. package/dist/C_Table.css +18 -18
  20. package/dist/C_Upload2.cjs +1 -1
  21. package/dist/C_WaterFall.css +49 -31
  22. package/dist/C_WaterFall2.cjs +1 -1
  23. package/dist/C_WaterFall2.js +1 -1
  24. package/dist/chunk.cjs +1 -1
  25. package/dist/constants.d.cts +1 -1
  26. package/dist/constants.d.ts +1 -1
  27. package/dist/constants2.d.cts +1 -1
  28. package/dist/constants2.d.ts +1 -1
  29. package/dist/constants3.d.cts +3 -3
  30. package/dist/constants3.d.ts +3 -3
  31. package/dist/constants4.d.cts +6 -6
  32. package/dist/constants4.d.ts +6 -6
  33. package/dist/constants5.d.cts +2 -2
  34. package/dist/constants5.d.ts +2 -2
  35. package/dist/data.cjs +1 -1
  36. package/dist/data.d.cts +10 -10
  37. package/dist/data.d.ts +10 -10
  38. package/dist/data.js +1 -1
  39. package/dist/graphics.d.cts +17 -11
  40. package/dist/graphics.d.ts +17 -11
  41. package/dist/helpers.cjs +1 -1
  42. package/dist/helpers.js +1 -1
  43. package/dist/html.cjs +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.vue.d.cts +1 -1
  46. package/dist/index.vue.d.ts +1 -1
  47. package/dist/index10.vue.d.cts +3 -3
  48. package/dist/index10.vue.d.ts +6 -6
  49. package/dist/index11.vue.d.cts +6 -6
  50. package/dist/index12.vue.d.ts +3 -3
  51. package/dist/index13.vue.d.cts +3 -3
  52. package/dist/index13.vue.d.ts +7 -7
  53. package/dist/index14.vue.d.cts +7 -7
  54. package/dist/index17.vue.d.ts +3 -3
  55. package/dist/index18.vue.d.cts +3 -3
  56. package/dist/index19.vue.d.cts +1 -1
  57. package/dist/index19.vue.d.ts +1 -1
  58. package/dist/index2.vue.d.cts +3 -3
  59. package/dist/index2.vue.d.ts +3 -3
  60. package/dist/index20.vue.d.cts +2 -2
  61. package/dist/index20.vue.d.ts +2 -2
  62. package/dist/index21.vue.d.cts +2 -2
  63. package/dist/index21.vue.d.ts +2 -2
  64. package/dist/index22.vue.d.cts +2 -2
  65. package/dist/index22.vue.d.ts +2 -2
  66. package/dist/index24.vue.d.cts +1 -1
  67. package/dist/index24.vue.d.ts +1 -1
  68. package/dist/index25.vue.d.cts +4 -4
  69. package/dist/index25.vue.d.ts +4 -4
  70. package/dist/index26.vue.d.cts +2 -2
  71. package/dist/index26.vue.d.ts +2 -2
  72. package/dist/index3.vue.d.cts +5 -5
  73. package/dist/index3.vue.d.ts +5 -5
  74. package/dist/index8.vue.d.ts +4 -4
  75. package/dist/index9.vue.d.cts +4 -4
  76. package/dist/index9.vue.d.ts +3 -3
  77. package/dist/mapUtils.d.cts +2 -2
  78. package/dist/mapUtils.d.ts +2 -2
  79. package/dist/style.css +104 -86
  80. package/dist/types.d.ts +5 -0
  81. package/dist/types2.d.cts +5 -0
  82. package/dist/useCollapsePanel.d.cts +3 -3
  83. package/dist/useCollapsePanel.d.ts +3 -3
  84. package/dist/useCropperCore.d.cts +12 -12
  85. package/dist/useCropperCore.d.ts +12 -12
  86. package/dist/useEdgeInteraction.d.cts +2 -2
  87. package/dist/useEdgeInteraction.d.ts +2 -2
  88. package/dist/useFullscreen.d.cts +3 -3
  89. package/dist/useFullscreen.d.ts +3 -3
  90. package/dist/useGlobalSearch.d.cts +1 -1
  91. package/dist/useGlobalSearch.d.ts +1 -1
  92. package/dist/useInfiniteScroll.d.cts +16 -17
  93. package/dist/useInfiniteScroll.d.ts +16 -17
  94. package/dist/useQRCode.d.cts +4 -4
  95. package/dist/useQRCode.d.ts +4 -4
  96. package/dist/useSignatureHistory.d.cts +5 -5
  97. package/dist/useSignatureHistory.d.ts +5 -5
  98. package/dist/useSplitResize.d.cts +11 -11
  99. package/dist/useSplitResize.d.ts +11 -11
  100. package/dist/useTableQuery.cjs +1 -1
  101. package/dist/useTableQuery.d.cts +16 -14
  102. package/dist/useTableQuery.d.ts +16 -14
  103. package/dist/useTableQuery.js +1 -1
  104. package/dist/useWorkflowValidation.d.cts +1 -1
  105. package/dist/useWorkflowValidation.d.ts +1 -1
  106. package/dist/verification.d.cts +3 -3
  107. package/dist/verification.d.ts +3 -3
  108. package/dist/xlsx.js +143 -0
  109. package/dist/xlsx2.cjs +143 -0
  110. package/docs/architecture.en.md +1 -0
  111. package/docs/architecture.md +1 -0
  112. package/docs/guides/api-migration.md +111 -0
  113. package/docs/guides/runtime-performance.md +16 -1
  114. package/docs/guides/waterfall.md +113 -0
  115. package/docs/runtime-review-20261019.md +2 -0
  116. package/licenses/SheetJS.txt +201 -0
  117. package/package.json +13 -9
@@ -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};
package/dist/C_Form.css CHANGED
@@ -17,7 +17,7 @@
17
17
  .w-e-video{box-sizing:border-box;display:flex;margin:0;max-width:100%;width:100%}.w-e-video>iframe,.w-e-video>video{display:block;max-width:100%}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow:auto;padding:10px 0}.w-e-video-align-left{justify-content:flex-start}.w-e-video-align-center{justify-content:center}.w-e-video-align-right{justify-content:flex-end}
18
18
 
19
19
  /* CSS 变量 — 支持外部主题覆盖 */
20
- .c-editor[data-v-b7a5de58] {
20
+ .c-editor[data-v-2625824a] {
21
21
  --c-editor-toolbar-bg: #ffffff;
22
22
  --c-editor-toolbar-border: #e5e7eb;
23
23
  --c-editor-menu-color: #333333;
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  /* 暗色主题 — 覆盖 CSS 变量 */
38
- .editor-dark[data-v-b7a5de58] {
38
+ .editor-dark[data-v-2625824a] {
39
39
  --c-editor-toolbar-bg: #1f2937;
40
40
  --c-editor-toolbar-border: #374151;
41
41
  --c-editor-menu-color: #e5e7eb;
@@ -48,60 +48,60 @@
48
48
  --c-editor-text-focus-bg: #111827;
49
49
  --c-editor-text-focus-color: #e5e7eb;
50
50
  }
51
- .editor-dark[data-v-b7a5de58] .w-e-toolbar {
51
+ .editor-dark[data-v-2625824a] .w-e-toolbar {
52
52
  background-color: var(--c-editor-toolbar-bg) !important;
53
53
  border-color: var(--c-editor-toolbar-border) !important;
54
54
  }
55
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item {
55
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item {
56
56
  color: var(--c-editor-menu-color) !important;
57
57
  }
58
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
58
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
59
59
  background-color: var(--c-editor-menu-hover-bg) !important;
60
60
  color: var(--c-editor-menu-hover-color) !important;
61
61
  }
62
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
62
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
63
63
  background-color: var(--c-editor-menu-active-bg) !important;
64
64
  color: var(--c-editor-menu-active-color) !important;
65
65
  }
66
- .editor-dark[data-v-b7a5de58] .w-e-text-container {
66
+ .editor-dark[data-v-2625824a] .w-e-text-container {
67
67
  background-color: var(--c-editor-container-bg) !important;
68
68
  border-color: var(--c-editor-container-border) !important;
69
69
  }
70
- .editor-dark[data-v-b7a5de58] .w-e-text-container .w-e-text {
70
+ .editor-dark[data-v-2625824a] .w-e-text-container .w-e-text {
71
71
  background-color: var(--c-editor-text-bg) !important;
72
72
  color: var(--c-editor-text-color) !important;
73
73
  }
74
- .editor-dark[data-v-b7a5de58] .w-e-text-container .w-e-text:focus {
74
+ .editor-dark[data-v-2625824a] .w-e-text-container .w-e-text:focus {
75
75
  background-color: var(--c-editor-text-focus-bg) !important;
76
76
  color: var(--c-editor-text-focus-color) !important;
77
77
  }
78
- [data-v-b7a5de58] .w-e-toolbar,[data-v-b7a5de58] .w-e-text-container {
78
+ [data-v-2625824a] .w-e-toolbar,[data-v-2625824a] .w-e-text-container {
79
79
  max-width: 100% !important;
80
80
  overflow-x: auto !important;
81
81
  box-sizing: border-box !important;
82
82
  }
83
- [data-v-b7a5de58] .w-e-text {
83
+ [data-v-2625824a] .w-e-text {
84
84
  max-width: 100% !important;
85
85
  word-wrap: break-word !important;
86
86
  overflow-wrap: break-word !important;
87
87
  }
88
- [data-v-b7a5de58] .w-e-toolbar,[data-v-b7a5de58] .w-e-text-container,[data-v-b7a5de58] .w-e-text {
88
+ [data-v-2625824a] .w-e-toolbar,[data-v-2625824a] .w-e-text-container,[data-v-2625824a] .w-e-text {
89
89
  transition:
90
90
  background-color var(--c-editor-transition-duration) ease,
91
91
  border-color var(--c-editor-transition-duration) ease,
92
92
  color var(--c-editor-transition-duration) ease !important;
93
93
  }
94
- .editor-focused[data-v-b7a5de58] {
94
+ .editor-focused[data-v-2625824a] {
95
95
  max-width: 100% !important;
96
96
  }
97
97
 
98
98
 
99
99
  /* layer: default */
100
- .hidden[data-v-b7a5de58]{display:none;}
101
- .w-full[data-v-b7a5de58]{width:100%;}
102
- .px[data-v-b7a5de58]{padding-left:1rem;padding-right:1rem;}
103
- .transition[data-v-b7a5de58]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
104
- .ease[data-v-b7a5de58]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
100
+ .hidden[data-v-2625824a]{display:none;}
101
+ .w-full[data-v-2625824a]{width:100%;}
102
+ .px[data-v-2625824a]{padding-left:1rem;padding-right:1rem;}
103
+ .transition[data-v-2625824a]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
104
+ .ease[data-v-2625824a]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
105
105
 
106
106
  .c-form .c-form-actions[data-v-37ca39aa] {
107
107
  margin-top: var(--c-form-row-gap, 20px);
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.t(a);let o=require(`@fullcalendar/daygrid`);o=e.t(o);let s=require(`@fullcalendar/interaction`);s=e.t(s);let c=require(`@fullcalendar/list`);c=e.t(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.t(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/,h=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},g=(e,t)=>{let n=m.exec(t);if(!n)return null;let r=Number(n[1]),i=Number(n[2]),a=new Date(e.getFullYear(),e.getMonth(),e.getDate(),r,i);return a.getHours()===r&&a.getMinutes()===i?a:null};function _(e,t,n,r=e,i=!1){let a=h(e),o=h(r);if(!a||!o)return null;if(i){let e=new Date(a.getFullYear(),a.getMonth(),a.getDate()),t=new Date(o.getFullYear(),o.getMonth(),o.getDate()+1);return t>e?{start:e,end:t}:null}let s=g(a,t),c=g(o,n);return s&&c&&c>s?{start:s,end:c}:null}let v=0;const y=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++v}`;function b(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),h=(0,r.ref)(!1),g=(0,r.ref)(!1),v=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>[e.date,e.endDate,e.startTime,e.endTime,e.allDay],C=[];(0,r.watch)(()=>[x.value,x.value.date],([e,t],[n,r])=>{if(e!==n)return;let{endDate:i}=x.value;if(t==null||r==null||i==null)return;let a=new Date(r),o=new Date(i);a.toDateString()===o.toDateString()&&(x.value.endDate=t)},{flush:`sync`});let w=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},T=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},E=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function D(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(h.value=!0))}function O(t){!e.editable||!e.showAddDialog||j(t.date)}function k(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-dropped`,r),i.success(`事件 "${t.event.title}" 时间已更新`)}function A(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-updated`,r)}function j(t){e.editable!==!1&&(v.value=!1,x.value={...d,date:t.getTime(),endDate:t.getTime(),allDay:!1,color:u[Math.floor(Math.random()*u.length)]},g.value=!0)}function M(){if(e.editable===!1)return;let t=b.value;if(!t?.start)return;let{start:n}=t;v.value=!0;let r=new Date(n),i=t.end?new Date(t.end):new Date(n.getTime()+(t.allDay?0:36e5));t.allDay&&t.end&&i.setDate(i.getDate()-1),x.value={id:t.id,title:t.title,date:r.getTime(),endDate:i.getTime(),allDay:t.allDay,startTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,endTime:`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,color:t.backgroundColor||`#3f86ff`},C=S(x.value),h.value=!1,g.value=!0}function N(e){if(e&&S(x.value).every((e,t)=>e===C[t]))return{start:e.start,end:e.end,allDay:e.allDay};let t=_(x.value.date,x.value.startTime,x.value.endTime,x.value.endDate===void 0?x.value.date:x.value.endDate,x.value.allDay);return t&&{...t,allDay:!!x.value.allDay}}function P(){if(e.editable===!1)return!1;if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let t=v.value?m.value.find(e=>e.id===x.value.id):void 0;if(v.value&&!t)return i.error(`事件已不存在,请刷新后重试`),!1;let r=N(t);if(!r)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;let a={id:v.value?x.value.id:y(),title:x.value.title.trim(),...r,color:x.value.color};return v.value?(T(a),n(`event-updated`,a),i.success(`事件已更新`)):(w(a),n(`event-added`,a),i.success(`事件已添加`)),g.value=!1,!0}function F(){if(e.editable===!1||!b.value)return;let{id:t,title:r}=b.value;if(!m.value.some(e=>e.id===t)){h.value=!1;return}E(t),n(`event-deleted`,{id:t,title:r}),h.value=!1,i.success(`已删除事件: ${r}`)}let I=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:D,dateClick:O,eventDrop:k,eventResize:A,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.editable,e=>{e===!1&&(h.value=!1,g.value=!1,b.value=null)},{flush:`sync`}),(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:I,showActionDialog:h,showEditModal:g,isEditing:v,selectedEvent:b,editForm:x,eventColors:u,openEditModal:M,saveEvent:P,deleteEvent:F,expose:{getApi:()=>a.value?.getApi(),addEvent:w,updateEvent:T,deleteEvent:E,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const x={class:`c-full-calendar`},S={class:`ml-10% mt-20px`},C={style:{padding:`20px`}},w={style:{"margin-bottom":`16px`}},T={style:{"margin-bottom":`16px`}},E={style:{"margin-bottom":`16px`}},D={key:0,style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},O={style:{"margin-top":`16px`}},k={style:{display:`flex`,gap:`8px`}},A=[`aria-label`,`aria-pressed`,`onClick`],j=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=b(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,x,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,S,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[8]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[9]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[7]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,C,[(0,r.createElementVNode)(`div`,w,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,T,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`开始日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,E,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).endDate,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).endDate=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`结束日期`},null,8,[`value`])]),(0,r.createVNode)((0,r.unref)(i.NCheckbox),{checked:(0,r.unref)(f).allDay,"onUpdate:checked":t[4]||=e=>(0,r.unref)(f).allDay=e,style:{"margin-bottom":`16px`}},{default:(0,r.withCtx)(()=>[...t[13]||=[(0,r.createTextVNode)(` 全天事件 `,-1)]]),_:1},8,[`checked`]),(0,r.unref)(f).allDay?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,D,[(0,r.createElementVNode)(`div`,null,[t[14]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[5]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[15]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[6]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])])),(0,r.createElementVNode)(`div`,O,[t[16]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,k,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,A))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var M=n.t(j,[[`__scopeId`,`data-v-3604329b`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return M}});
1
+ const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.n(a);let o=require(`@fullcalendar/daygrid`);o=e.n(o);let s=require(`@fullcalendar/interaction`);s=e.n(s);let c=require(`@fullcalendar/list`);c=e.n(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.n(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/,h=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},g=(e,t)=>{let n=m.exec(t);if(!n)return null;let r=Number(n[1]),i=Number(n[2]),a=new Date(e.getFullYear(),e.getMonth(),e.getDate(),r,i);return a.getHours()===r&&a.getMinutes()===i?a:null};function _(e,t,n,r=e,i=!1){let a=h(e),o=h(r);if(!a||!o)return null;if(i){let e=new Date(a.getFullYear(),a.getMonth(),a.getDate()),t=new Date(o.getFullYear(),o.getMonth(),o.getDate()+1);return t>e?{start:e,end:t}:null}let s=g(a,t),c=g(o,n);return s&&c&&c>s?{start:s,end:c}:null}let v=0;const y=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++v}`;function b(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),h=(0,r.ref)(!1),g=(0,r.ref)(!1),v=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>[e.date,e.endDate,e.startTime,e.endTime,e.allDay],C=[];(0,r.watch)(()=>[x.value,x.value.date],([e,t],[n,r])=>{if(e!==n)return;let{endDate:i}=x.value;if(t==null||r==null||i==null)return;let a=new Date(r),o=new Date(i);a.toDateString()===o.toDateString()&&(x.value.endDate=t)},{flush:`sync`});let w=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},T=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},E=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function D(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(h.value=!0))}function O(t){!e.editable||!e.showAddDialog||j(t.date)}function k(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-dropped`,r),i.success(`事件 "${t.event.title}" 时间已更新`)}function A(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-updated`,r)}function j(t){e.editable!==!1&&(v.value=!1,x.value={...d,date:t.getTime(),endDate:t.getTime(),allDay:!1,color:u[Math.floor(Math.random()*u.length)]},g.value=!0)}function M(){if(e.editable===!1)return;let t=b.value;if(!t?.start)return;let{start:n}=t;v.value=!0;let r=new Date(n),i=t.end?new Date(t.end):new Date(n.getTime()+(t.allDay?0:36e5));t.allDay&&t.end&&i.setDate(i.getDate()-1),x.value={id:t.id,title:t.title,date:r.getTime(),endDate:i.getTime(),allDay:t.allDay,startTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,endTime:`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,color:t.backgroundColor||`#3f86ff`},C=S(x.value),h.value=!1,g.value=!0}function N(e){if(e&&S(x.value).every((e,t)=>e===C[t]))return{start:e.start,end:e.end,allDay:e.allDay};let t=_(x.value.date,x.value.startTime,x.value.endTime,x.value.endDate===void 0?x.value.date:x.value.endDate,x.value.allDay);return t&&{...t,allDay:!!x.value.allDay}}function P(){if(e.editable===!1)return!1;if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let t=v.value?m.value.find(e=>e.id===x.value.id):void 0;if(v.value&&!t)return i.error(`事件已不存在,请刷新后重试`),!1;let r=N(t);if(!r)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;let a={id:v.value?x.value.id:y(),title:x.value.title.trim(),...r,color:x.value.color};return v.value?(T(a),n(`event-updated`,a),i.success(`事件已更新`)):(w(a),n(`event-added`,a),i.success(`事件已添加`)),g.value=!1,!0}function F(){if(e.editable===!1||!b.value)return;let{id:t,title:r}=b.value;if(!m.value.some(e=>e.id===t)){h.value=!1;return}E(t),n(`event-deleted`,{id:t,title:r}),h.value=!1,i.success(`已删除事件: ${r}`)}let I=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:D,dateClick:O,eventDrop:k,eventResize:A,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.editable,e=>{e===!1&&(h.value=!1,g.value=!1,b.value=null)},{flush:`sync`}),(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:I,showActionDialog:h,showEditModal:g,isEditing:v,selectedEvent:b,editForm:x,eventColors:u,openEditModal:M,saveEvent:P,deleteEvent:F,expose:{getApi:()=>a.value?.getApi(),addEvent:w,updateEvent:T,deleteEvent:E,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const x={class:`c-full-calendar`},S={class:`ml-10% mt-20px`},C={style:{padding:`20px`}},w={style:{"margin-bottom":`16px`}},T={style:{"margin-bottom":`16px`}},E={style:{"margin-bottom":`16px`}},D={key:0,style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},O={style:{"margin-top":`16px`}},k={style:{display:`flex`,gap:`8px`}},A=[`aria-label`,`aria-pressed`,`onClick`],j=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=b(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,x,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,S,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[8]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[9]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[7]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,C,[(0,r.createElementVNode)(`div`,w,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,T,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`开始日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,E,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).endDate,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).endDate=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`结束日期`},null,8,[`value`])]),(0,r.createVNode)((0,r.unref)(i.NCheckbox),{checked:(0,r.unref)(f).allDay,"onUpdate:checked":t[4]||=e=>(0,r.unref)(f).allDay=e,style:{"margin-bottom":`16px`}},{default:(0,r.withCtx)(()=>[...t[13]||=[(0,r.createTextVNode)(` 全天事件 `,-1)]]),_:1},8,[`checked`]),(0,r.unref)(f).allDay?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,D,[(0,r.createElementVNode)(`div`,null,[t[14]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[5]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[15]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[6]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])])),(0,r.createElementVNode)(`div`,O,[t[16]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,k,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,A))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var M=n.t(j,[[`__scopeId`,`data-v-3604329b`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return M}});
@@ -898,7 +898,7 @@
898
898
  opacity: 0.6;
899
899
  }
900
900
  /* C_Markdown 组件样式文件 */
901
- .c-markdown-wrapper[data-v-9961145c] {
901
+ .c-markdown-wrapper[data-v-648192bd] {
902
902
  --c-markdown-dark-icon-color: #ffffff;
903
903
  --c-markdown-dark-hover-bg: rgba(255, 255, 255, 0.08);
904
904
  --c-markdown-dark-active-bg: rgba(255, 255, 255, 0.12);
@@ -907,108 +907,108 @@
907
907
  --c-markdown-dark-scrollbar-hover: rgba(255, 255, 255, 0.3);
908
908
  position: relative;
909
909
  }
910
- .c-markdown-wrapper[data-v-9961145c] .md-editor {
910
+ .c-markdown-wrapper[data-v-648192bd] .md-editor {
911
911
  border-radius: 6px;
912
912
  border: 1px solid var(--c-border);
913
913
  background-color: var(--c-bg-card);
914
914
  }
915
- .c-markdown-wrapper[data-v-9961145c] .md-editor:hover {
915
+ .c-markdown-wrapper[data-v-648192bd] .md-editor:hover {
916
916
  border-color: var(--c-primary);
917
917
  }
918
- .c-markdown-wrapper[data-v-9961145c] .md-editor:focus-within {
918
+ .c-markdown-wrapper[data-v-648192bd] .md-editor:focus-within {
919
919
  border-color: var(--c-primary);
920
920
  box-shadow: 0 0 0 2px var(--c-primary-opacity, rgba(24, 160, 88, 0.2));
921
921
  }
922
- .c-markdown-wrapper[data-v-9961145c] .md-editor {
922
+ .c-markdown-wrapper[data-v-648192bd] .md-editor {
923
923
  /* 禁用状态样式 */
924
924
  }
925
- .c-markdown-wrapper[data-v-9961145c] .md-editor.md-editor-disabled {
925
+ .c-markdown-wrapper[data-v-648192bd] .md-editor.md-editor-disabled {
926
926
  background-color: var(--c-bg-disabled, #fafafc);
927
927
  cursor: not-allowed;
928
928
  }
929
- .c-markdown-wrapper[data-v-9961145c] .md-editor.md-editor-disabled .md-editor-input {
929
+ .c-markdown-wrapper[data-v-648192bd] .md-editor.md-editor-disabled .md-editor-input {
930
930
  cursor: not-allowed;
931
931
  }
932
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-toolbar-wrapper {
932
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-toolbar-wrapper {
933
933
  background-color: var(--c-bg-card);
934
934
  border-bottom: 1px solid var(--c-border);
935
935
  }
936
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-input-wrapper {
936
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-input-wrapper {
937
937
  background-color: var(--c-bg-card);
938
938
  }
939
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-input {
939
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-input {
940
940
  background-color: var(--c-bg-card);
941
941
  color: var(--c-text-1);
942
942
  }
943
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-input textarea {
943
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-input textarea {
944
944
  color: var(--c-text-1);
945
945
  caret-color: var(--c-text-1);
946
946
  }
947
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-preview-wrapper {
947
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-preview-wrapper {
948
948
  background-color: var(--c-bg-card);
949
949
  }
950
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-preview {
950
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-preview {
951
951
  background-color: var(--c-bg-card);
952
952
  color: var(--c-text-1);
953
953
  }
954
- .c-markdown-wrapper[data-v-9961145c] .md-editor .md-editor-catalog-editor {
954
+ .c-markdown-wrapper[data-v-648192bd] .md-editor .md-editor-catalog-editor {
955
955
  background-color: var(--c-bg-card);
956
956
  border-left: 1px solid var(--c-border);
957
957
  }
958
- .c-markdown-wrapper.toc-left[data-v-9961145c] .md-editor-catalog-flat {
958
+ .c-markdown-wrapper.toc-left[data-v-648192bd] .md-editor-catalog-flat {
959
959
  order: -1;
960
960
  }
961
- .c-markdown-wrapper.toc-left[data-v-9961145c] .md-editor-catalog-flat .md-editor-catalog-editor {
961
+ .c-markdown-wrapper.toc-left[data-v-648192bd] .md-editor-catalog-flat .md-editor-catalog-editor {
962
962
  border-inline-start: 0;
963
963
  border-inline-end: 1px solid var(--c-border);
964
964
  }
965
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-item {
965
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-item {
966
966
  color: var(--c-markdown-dark-icon-color);
967
967
  }
968
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-item:hover {
968
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-item:hover {
969
969
  background-color: var(--c-markdown-dark-hover-bg);
970
970
  }
971
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-item.md-editor-toolbar-active {
971
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-item.md-editor-toolbar-active {
972
972
  background-color: var(--c-markdown-dark-active-bg);
973
973
  }
974
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-item svg {
974
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-item svg {
975
975
  fill: var(--c-markdown-dark-icon-color);
976
976
  opacity: 0.9;
977
977
  }
978
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-item:hover svg {
978
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-item:hover svg {
979
979
  opacity: 1;
980
980
  }
981
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item {
981
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item {
982
982
  background-color: transparent;
983
983
  }
984
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item svg {
984
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item svg {
985
985
  fill: var(--c-markdown-dark-icon-color);
986
986
  }
987
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item:hover {
987
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-toolbar-right .md-editor-toolbar-item:hover {
988
988
  background-color: var(--c-markdown-dark-hover-bg);
989
989
  }
990
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-divider {
990
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-divider {
991
991
  background-color: var(--c-border);
992
992
  }
993
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-input::-webkit-scrollbar,
994
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-preview::-webkit-scrollbar {
993
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-input::-webkit-scrollbar,
994
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-preview::-webkit-scrollbar {
995
995
  width: 8px;
996
996
  height: 8px;
997
997
  }
998
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-input::-webkit-scrollbar-track,
999
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-preview::-webkit-scrollbar-track {
998
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-input::-webkit-scrollbar-track,
999
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-preview::-webkit-scrollbar-track {
1000
1000
  background-color: var(--c-markdown-dark-scrollbar-track);
1001
1001
  }
1002
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-input::-webkit-scrollbar-thumb,
1003
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-preview::-webkit-scrollbar-thumb {
1002
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-input::-webkit-scrollbar-thumb,
1003
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-preview::-webkit-scrollbar-thumb {
1004
1004
  background-color: var(--c-markdown-dark-scrollbar-thumb);
1005
1005
  border-radius: 4px;
1006
1006
  }
1007
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-input::-webkit-scrollbar-thumb:hover,
1008
- .c-markdown-wrapper.is-dark[data-v-9961145c] .md-editor .md-editor-preview::-webkit-scrollbar-thumb:hover {
1007
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-input::-webkit-scrollbar-thumb:hover,
1008
+ .c-markdown-wrapper.is-dark[data-v-648192bd] .md-editor .md-editor-preview::-webkit-scrollbar-thumb:hover {
1009
1009
  background-color: var(--c-markdown-dark-scrollbar-hover);
1010
1010
  }
1011
- .c-markdown-wrapper .word-count[data-v-9961145c] {
1011
+ .c-markdown-wrapper .word-count[data-v-648192bd] {
1012
1012
  position: absolute;
1013
1013
  bottom: 8px;
1014
1014
  right: 12px;
@@ -1019,10 +1019,10 @@
1019
1019
  border-radius: 4px;
1020
1020
  z-index: 10;
1021
1021
  }
1022
- .c-markdown-wrapper .word-count.exceed[data-v-9961145c] {
1022
+ .c-markdown-wrapper .word-count.exceed[data-v-648192bd] {
1023
1023
  color: var(--c-error);
1024
1024
  }
1025
1025
 
1026
1026
  /* layer: default */
1027
- .table[data-v-9961145c]{display:table;}
1028
- .italic[data-v-9961145c]{font-style:italic;}
1027
+ .table[data-v-648192bd]{display:table;}
1028
+ .italic[data-v-648192bd]{font-style:italic;}
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./export-helper.cjs`),t=require(`./html.cjs`);let n=require(`vue`),r=require(`md-editor-v3`);const i=(0,n.defineComponent)({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},editorId:{},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:i,emit:a}){let o=r.MdEditor,s=e,c=a,l=(0,n.getCurrentInstance)(),u=(0,n.ref)(),d=(0,n.ref)(``),f=(0,n.ref)(s.modelValue),p=l?.uid??0,m=(0,n.computed)(()=>s.editorId||`c-markdown-editor-${p}`),h=(0,n.computed)(()=>s.modelValue?.length||0),g=(0,n.computed)(()=>s.disabled?`preview`:s.mode),_=(0,n.computed)(()=>{let e=s.includeLevel.filter(e=>Number.isInteger(e)&&e>=1&&e<=6);return e.length>0?Math.max(...e):6}),v=(0,n.computed)(()=>typeof l?.vnode.props?.onUploadImage==`function`),y={undo:`revoke`,redo:`next`,h:`title`,bold:`bold`,italic:`italic`,strikethrough:`strikeThrough`,quote:`quote`,ul:`unorderedList`,ol:`orderedList`,table:`table`,hr:`horizontalLine`,link:`link`,image:`image`,code:`code`,save:`save`,preview:`preview`,toc:`catalog`,fullscreen:`fullscreen`},b=(0,n.computed)(()=>{if(Array.isArray(s.toolbar))return[...s.toolbar];let e=`${s.leftToolbar} ${s.rightToolbar}`.split(/[\s|]+/).map(e=>y[e]).filter(e=>e!==void 0);return[...new Set(e)]});(0,n.watch)(()=>s.modelValue,e=>{f.value=e??``,s.showWordCount&&c(`word-count-change`,e?.length||0)},{immediate:!0});let x=e=>{if(e.length>s.maxLength){c(`max-length-exceeded`,e.length,s.maxLength);return}f.value=e,c(`update:modelValue`,e),s.showWordCount&&c(`word-count-change`,e.length)},S=e=>{let n=t.t(e);d.value=n,c(`change`,f.value,n),s.autoSave&&D(f.value)},C=async(e,n)=>{c(`save`,e,t.t(await n))},w=(e,t)=>{let n=e.filter(e=>O(e,s.uploadImageConfig?.accept)),r=s.uploadImageConfig?.multiple?n:n.slice(0,1);if(r.length===0)return;let i=new DataTransfer;r.forEach(e=>i.items.add(e)),c(`upload-image`,new Event(`upload-image`),e=>{t([{url:e.url,alt:e.desc??``,title:e.desc??``}])},i.files)},T=e=>(c(`copy-code-success`,e),e),E=null;(0,n.watch)(()=>s.autoSave,e=>{!e&&E&&(clearTimeout(E),E=null)});let D=e=>{E&&clearTimeout(E),E=setTimeout(()=>{E=null,c(`auto-save`,e)},Math.max(0,s.autoSaveInterval))};(0,n.onBeforeUnmount)(()=>{E&&clearTimeout(E)}),(0,n.onMounted)(()=>{u.value?.on(`fullscreen`,e=>{c(`fullscreen-change`,e)}),s.defaultFullscreen&&u.value?.toggleFullscreen(!0)}),i({focus:()=>{u.value?.focus()},getHtml:()=>d.value,insertText:e=>{u.value?.insert(t=>({targetValue:`${t}${e}`,select:!0,deviationStart:-e.length,deviationEnd:0}))},wordCount:h});function O(e,t){return t?.trim()?t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean).some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t):t.endsWith(`/*`)?e.type.toLowerCase().startsWith(t.slice(0,-1)):e.type.toLowerCase()===t):!0}return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-markdown-wrapper`,{"is-dark":e.isDark,"toc-left":e.tocNavPosition===`left`}])},[(0,n.createVNode)((0,n.unref)(o),{id:m.value,ref_key:`editorRef`,ref:u,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,theme:e.isDark?`dark`:`light`,preview:g.value!==`edit`,"preview-only":g.value===`preview`,"read-only":e.disabled,"auto-focus":e.autofocus,"max-length":e.maxLength,toolbars:b.value,footers:e.showWordCount?[`markdownTotal`,`=`,`scrollSwitch`]:[],"catalog-layout":`flat`,"catalog-max-depth":_.value,"no-upload-img":!v.value,sanitize:(0,n.unref)(t.t),"format-copied-text":T,"onUpdate:modelValue":x,onOnHtmlChanged:S,onOnSave:C,onOnUploadImg:w},null,8,[`id`,`model-value`,`height`,`placeholder`,`theme`,`preview`,`preview-only`,`read-only`,`auto-focus`,`max-length`,`toolbars`,`footers`,`catalog-max-depth`,`no-upload-img`,`sanitize`])],2))}});var a=e.t(i,[[`__scopeId`,`data-v-9961145c`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ require(`./chunk.cjs`);const e=require(`./export-helper.cjs`),t=require(`./html.cjs`);let n=require(`vue`),r=require(`md-editor-v3`);const i=(0,n.defineComponent)({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},editorId:{},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:i,emit:a}){let o=r.MdEditor,s=e,c=a,l=(0,n.getCurrentInstance)(),u=(0,n.ref)(),d=!1,f=(0,n.ref)(``),p=(0,n.ref)(s.modelValue),m=l?.uid??0,h=(0,n.computed)(()=>s.editorId||`c-markdown-editor-${m}`),g=(0,n.computed)(()=>s.modelValue?.length||0),_=(0,n.computed)(()=>s.disabled?`preview`:s.mode),v=(0,n.computed)(()=>{let e=s.includeLevel.filter(e=>Number.isInteger(e)&&e>=1&&e<=6);return e.length>0?Math.max(...e):6}),y=(0,n.computed)(()=>typeof l?.vnode.props?.onUploadImage==`function`),b={undo:`revoke`,redo:`next`,h:`title`,bold:`bold`,italic:`italic`,strikethrough:`strikeThrough`,quote:`quote`,ul:`unorderedList`,ol:`orderedList`,table:`table`,hr:`horizontalLine`,link:`link`,image:`image`,code:`code`,save:`save`,preview:`preview`,toc:`catalog`,fullscreen:`fullscreen`},x=(0,n.computed)(()=>{if(Array.isArray(s.toolbar))return[...s.toolbar];let e=`${s.leftToolbar} ${s.rightToolbar}`.split(/[\s|]+/).map(e=>b[e]).filter(e=>e!==void 0);return[...new Set(e)]});(0,n.watch)(()=>s.modelValue,e=>{p.value=e??``,s.showWordCount&&c(`word-count-change`,e?.length||0)},{immediate:!0});let S=e=>{if(!d){if(e.length>s.maxLength){c(`max-length-exceeded`,e.length,s.maxLength);return}p.value=e,c(`update:modelValue`,e),s.showWordCount&&c(`word-count-change`,e.length)}},C=e=>{if(d)return;let n=t.t(e);f.value=n,c(`change`,p.value,n),s.autoSave&&O(p.value)},w=async(e,n)=>{try{let r=await n;d||c(`save`,e,t.t(r))}catch(e){if(!d)throw e}},T=(e,t)=>{if(d)return;let n=e.filter(e=>k(e,s.uploadImageConfig?.accept)),r=s.uploadImageConfig?.multiple?n:n.slice(0,1);if(r.length===0)return;let i=new DataTransfer;r.forEach(e=>i.items.add(e)),c(`upload-image`,new Event(`upload-image`),e=>{d||t([{url:e.url,alt:e.desc??``,title:e.desc??``}])},i.files)},E=e=>(d||c(`copy-code-success`,e),e),D=null;(0,n.watch)(()=>s.autoSave,e=>{!e&&D&&(clearTimeout(D),D=null)});let O=e=>{d||(D&&clearTimeout(D),D=setTimeout(()=>{D=null,d||c(`auto-save`,e)},Math.max(0,s.autoSaveInterval)))};(0,n.onBeforeUnmount)(()=>{d||(d=!0,D&&clearTimeout(D),D=null,u.value?.getEditorView()?.destroy())}),(0,n.onMounted)(()=>{u.value?.on(`fullscreen`,e=>{d||c(`fullscreen-change`,e)}),s.defaultFullscreen&&u.value?.toggleFullscreen(!0)}),i({focus:()=>{u.value?.focus()},getHtml:()=>f.value,insertText:e=>{u.value?.insert(t=>({targetValue:`${t}${e}`,select:!0,deviationStart:-e.length,deviationEnd:0}))},wordCount:g});function k(e,t){return t?.trim()?t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean).some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t):t.endsWith(`/*`)?e.type.toLowerCase().startsWith(t.slice(0,-1)):e.type.toLowerCase()===t):!0}return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-markdown-wrapper`,{"is-dark":e.isDark,"toc-left":e.tocNavPosition===`left`}])},[(0,n.createVNode)((0,n.unref)(o),{id:h.value,ref_key:`editorRef`,ref:u,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,theme:e.isDark?`dark`:`light`,preview:_.value!==`edit`,"preview-only":_.value===`preview`,"read-only":e.disabled,"auto-focus":e.autofocus,"max-length":e.maxLength,toolbars:x.value,footers:e.showWordCount?[`markdownTotal`,`=`,`scrollSwitch`]:[],"catalog-layout":`flat`,"catalog-max-depth":v.value,"no-upload-img":!y.value,sanitize:(0,n.unref)(t.t),"format-copied-text":E,"onUpdate:modelValue":S,onOnHtmlChanged:C,onOnSave:w,onOnUploadImg:T},null,8,[`id`,`model-value`,`height`,`placeholder`,`theme`,`preview`,`preview-only`,`read-only`,`auto-focus`,`max-length`,`toolbars`,`footers`,`catalog-max-depth`,`no-upload-img`,`sanitize`])],2))}});var a=e.t(i,[[`__scopeId`,`data-v-648192bd`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
@@ -1 +1 @@
1
- import{t as e}from"./export-helper.js";import{t}from"./html.js";import{computed as n,createElementBlock as r,createVNode as i,defineComponent as a,getCurrentInstance as o,normalizeClass as s,onBeforeUnmount as c,onMounted as l,openBlock as u,ref as d,unref as f,watch as p}from"vue";import{MdEditor as m}from"md-editor-v3";var h=e(a({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},editorId:{},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:a,emit:h}){let g=m,_=e,v=h,y=o(),b=d(),x=d(``),S=d(_.modelValue),C=y?.uid??0,w=n(()=>_.editorId||`c-markdown-editor-${C}`),T=n(()=>_.modelValue?.length||0),E=n(()=>_.disabled?`preview`:_.mode),D=n(()=>{let e=_.includeLevel.filter(e=>Number.isInteger(e)&&e>=1&&e<=6);return e.length>0?Math.max(...e):6}),O=n(()=>typeof y?.vnode.props?.onUploadImage==`function`),k={undo:`revoke`,redo:`next`,h:`title`,bold:`bold`,italic:`italic`,strikethrough:`strikeThrough`,quote:`quote`,ul:`unorderedList`,ol:`orderedList`,table:`table`,hr:`horizontalLine`,link:`link`,image:`image`,code:`code`,save:`save`,preview:`preview`,toc:`catalog`,fullscreen:`fullscreen`},A=n(()=>{if(Array.isArray(_.toolbar))return[..._.toolbar];let e=`${_.leftToolbar} ${_.rightToolbar}`.split(/[\s|]+/).map(e=>k[e]).filter(e=>e!==void 0);return[...new Set(e)]});p(()=>_.modelValue,e=>{S.value=e??``,_.showWordCount&&v(`word-count-change`,e?.length||0)},{immediate:!0});let j=e=>{if(e.length>_.maxLength){v(`max-length-exceeded`,e.length,_.maxLength);return}S.value=e,v(`update:modelValue`,e),_.showWordCount&&v(`word-count-change`,e.length)},M=e=>{let n=t(e);x.value=n,v(`change`,S.value,n),_.autoSave&&L(S.value)},N=async(e,n)=>{v(`save`,e,t(await n))},P=(e,t)=>{let n=e.filter(e=>R(e,_.uploadImageConfig?.accept)),r=_.uploadImageConfig?.multiple?n:n.slice(0,1);if(r.length===0)return;let i=new DataTransfer;r.forEach(e=>i.items.add(e)),v(`upload-image`,new Event(`upload-image`),e=>{t([{url:e.url,alt:e.desc??``,title:e.desc??``}])},i.files)},F=e=>(v(`copy-code-success`,e),e),I=null;p(()=>_.autoSave,e=>{!e&&I&&(clearTimeout(I),I=null)});let L=e=>{I&&clearTimeout(I),I=setTimeout(()=>{I=null,v(`auto-save`,e)},Math.max(0,_.autoSaveInterval))};c(()=>{I&&clearTimeout(I)}),l(()=>{b.value?.on(`fullscreen`,e=>{v(`fullscreen-change`,e)}),_.defaultFullscreen&&b.value?.toggleFullscreen(!0)}),a({focus:()=>{b.value?.focus()},getHtml:()=>x.value,insertText:e=>{b.value?.insert(t=>({targetValue:`${t}${e}`,select:!0,deviationStart:-e.length,deviationEnd:0}))},wordCount:T});function R(e,t){return t?.trim()?t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean).some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t):t.endsWith(`/*`)?e.type.toLowerCase().startsWith(t.slice(0,-1)):e.type.toLowerCase()===t):!0}return(n,a)=>(u(),r(`div`,{class:s([`c-markdown-wrapper`,{"is-dark":e.isDark,"toc-left":e.tocNavPosition===`left`}])},[i(f(g),{id:w.value,ref_key:`editorRef`,ref:b,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,theme:e.isDark?`dark`:`light`,preview:E.value!==`edit`,"preview-only":E.value===`preview`,"read-only":e.disabled,"auto-focus":e.autofocus,"max-length":e.maxLength,toolbars:A.value,footers:e.showWordCount?[`markdownTotal`,`=`,`scrollSwitch`]:[],"catalog-layout":`flat`,"catalog-max-depth":D.value,"no-upload-img":!O.value,sanitize:f(t),"format-copied-text":F,"onUpdate:modelValue":j,onOnHtmlChanged:M,onOnSave:N,onOnUploadImg:P},null,8,[`id`,`model-value`,`height`,`placeholder`,`theme`,`preview`,`preview-only`,`read-only`,`auto-focus`,`max-length`,`toolbars`,`footers`,`catalog-max-depth`,`no-upload-img`,`sanitize`])],2))}}),[[`__scopeId`,`data-v-9961145c`]]);export{h as t};
1
+ import{t as e}from"./export-helper.js";import{t}from"./html.js";import{computed as n,createElementBlock as r,createVNode as i,defineComponent as a,getCurrentInstance as o,normalizeClass as s,onBeforeUnmount as c,onMounted as l,openBlock as u,ref as d,unref as f,watch as p}from"vue";import{MdEditor as m}from"md-editor-v3";var h=e(a({name:`C_Markdown`,__name:`index`,props:{modelValue:{default:``},editorId:{},height:{default:`400px`},disabled:{type:Boolean,default:!1},placeholder:{default:`请输入 Markdown 内容...`},mode:{default:`editable`},toolbar:{},uploadImageConfig:{},tocNavPosition:{default:`right`},defaultFullscreen:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},includeLevel:{default:()=>[1,2,3,4,5,6]},leftToolbar:{default:`undo redo clear | h bold italic strikethrough quote | ul ol table hr | link image code | save`},rightToolbar:{default:`preview toc sync-scroll fullscreen`},maxLength:{default:5e4},showWordCount:{type:Boolean,default:!0},autoSave:{type:Boolean,default:!1},autoSaveInterval:{default:3e4},isDark:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`,`save`,`upload-image`,`fullscreen-change`,`copy-code-success`,`word-count-change`,`auto-save`,`max-length-exceeded`],setup(e,{expose:a,emit:h}){let g=m,_=e,v=h,y=o(),b=d(),x=!1,S=d(``),C=d(_.modelValue),w=y?.uid??0,T=n(()=>_.editorId||`c-markdown-editor-${w}`),E=n(()=>_.modelValue?.length||0),D=n(()=>_.disabled?`preview`:_.mode),O=n(()=>{let e=_.includeLevel.filter(e=>Number.isInteger(e)&&e>=1&&e<=6);return e.length>0?Math.max(...e):6}),k=n(()=>typeof y?.vnode.props?.onUploadImage==`function`),A={undo:`revoke`,redo:`next`,h:`title`,bold:`bold`,italic:`italic`,strikethrough:`strikeThrough`,quote:`quote`,ul:`unorderedList`,ol:`orderedList`,table:`table`,hr:`horizontalLine`,link:`link`,image:`image`,code:`code`,save:`save`,preview:`preview`,toc:`catalog`,fullscreen:`fullscreen`},j=n(()=>{if(Array.isArray(_.toolbar))return[..._.toolbar];let e=`${_.leftToolbar} ${_.rightToolbar}`.split(/[\s|]+/).map(e=>A[e]).filter(e=>e!==void 0);return[...new Set(e)]});p(()=>_.modelValue,e=>{C.value=e??``,_.showWordCount&&v(`word-count-change`,e?.length||0)},{immediate:!0});let M=e=>{if(!x){if(e.length>_.maxLength){v(`max-length-exceeded`,e.length,_.maxLength);return}C.value=e,v(`update:modelValue`,e),_.showWordCount&&v(`word-count-change`,e.length)}},N=e=>{if(x)return;let n=t(e);S.value=n,v(`change`,C.value,n),_.autoSave&&R(C.value)},P=async(e,n)=>{try{let r=await n;x||v(`save`,e,t(r))}catch(e){if(!x)throw e}},F=(e,t)=>{if(x)return;let n=e.filter(e=>z(e,_.uploadImageConfig?.accept)),r=_.uploadImageConfig?.multiple?n:n.slice(0,1);if(r.length===0)return;let i=new DataTransfer;r.forEach(e=>i.items.add(e)),v(`upload-image`,new Event(`upload-image`),e=>{x||t([{url:e.url,alt:e.desc??``,title:e.desc??``}])},i.files)},I=e=>(x||v(`copy-code-success`,e),e),L=null;p(()=>_.autoSave,e=>{!e&&L&&(clearTimeout(L),L=null)});let R=e=>{x||(L&&clearTimeout(L),L=setTimeout(()=>{L=null,x||v(`auto-save`,e)},Math.max(0,_.autoSaveInterval)))};c(()=>{x||(x=!0,L&&clearTimeout(L),L=null,b.value?.getEditorView()?.destroy())}),l(()=>{b.value?.on(`fullscreen`,e=>{x||v(`fullscreen-change`,e)}),_.defaultFullscreen&&b.value?.toggleFullscreen(!0)}),a({focus:()=>{b.value?.focus()},getHtml:()=>S.value,insertText:e=>{b.value?.insert(t=>({targetValue:`${t}${e}`,select:!0,deviationStart:-e.length,deviationEnd:0}))},wordCount:E});function z(e,t){return t?.trim()?t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean).some(t=>t.startsWith(`.`)?e.name.toLowerCase().endsWith(t):t.endsWith(`/*`)?e.type.toLowerCase().startsWith(t.slice(0,-1)):e.type.toLowerCase()===t):!0}return(n,a)=>(u(),r(`div`,{class:s([`c-markdown-wrapper`,{"is-dark":e.isDark,"toc-left":e.tocNavPosition===`left`}])},[i(f(g),{id:T.value,ref_key:`editorRef`,ref:b,"model-value":e.modelValue,height:e.height,placeholder:e.placeholder,theme:e.isDark?`dark`:`light`,preview:D.value!==`edit`,"preview-only":D.value===`preview`,"read-only":e.disabled,"auto-focus":e.autofocus,"max-length":e.maxLength,toolbars:j.value,footers:e.showWordCount?[`markdownTotal`,`=`,`scrollSwitch`]:[],"catalog-layout":`flat`,"catalog-max-depth":O.value,"no-upload-img":!k.value,sanitize:f(t),"format-copied-text":I,"onUpdate:modelValue":M,onOnHtmlChanged:N,onOnSave:P,onOnUploadImg:F},null,8,[`id`,`model-value`,`height`,`placeholder`,`theme`,`preview`,`preview-only`,`read-only`,`auto-focus`,`max-length`,`toolbars`,`footers`,`catalog-max-depth`,`no-upload-img`,`sanitize`])],2))}}),[[`__scopeId`,`data-v-648192bd`]]);export{h as t};
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./export-helper.cjs`),n=require(`./html.cjs`);let r=require(`vue`),i=require(`qrcode`);i=e.t(i);function a(){return new DOMException(`二维码任务已取消`,`AbortError`)}function o(e,t,n,r,i){let a=Math.min(.3,Math.max(.05,r.size??.2)),o=Math.floor(i*a),s=Math.max(0,r.padding??4),c=Math.min(o/2,Math.max(0,r.borderRadius??4)),l=(e.width-o)/2,u=(e.height-o)/2,d=l-s,f=u-s,p=o+s*2,m=c+s;t.save();try{t.beginPath(),t.moveTo(d+m,f),t.arcTo(d+p,f,d+p,f+p,m),t.arcTo(d+p,f+p,d,f+p,m),t.arcTo(d,f+p,d,f,m),t.arcTo(d,f,d+p,f,m),t.closePath(),t.fillStyle=r.bgColor??`#ffffff`,t.fill(),t.beginPath(),t.moveTo(l+c,u),t.arcTo(l+o,u,l+o,u+o,c),t.arcTo(l+o,u+o,l,u+o,c),t.arcTo(l,u+o,l,u,c),t.arcTo(l,u,l+o,u,c),t.closePath(),t.clip(),t.drawImage(n,l,u,o,o)}finally{t.restore()}}function s(e,t,n,r){return new Promise((i,s)=>{if(r.aborted)return s(a());let c=e.getContext(`2d`);if(!c)return s(Error(`Canvas context 不可用`));let l=new Image;l.crossOrigin=`anonymous`;let u=!1,d=()=>{l.onload=null,l.onerror=null,r.removeEventListener(`abort`,p),l.src=``},f=e=>{u||(u=!0,d(),e===void 0?i():s(e))},p=()=>f(a());if(l.onload=()=>{if(!u){if(r.aborted)return p();try{o(e,c,l,t,n),f()}catch(e){f(e)}}},l.onerror=()=>f(Error(`Logo 加载失败: ${t.src}`)),r.addEventListener(`abort`,p,{once:!0}),r.aborted)p();else try{l.src=t.src}catch(e){f(e)}})}function c(e,t){let n=(0,r.ref)(``),o=(0,r.ref)(!1),c=(0,r.ref)(null),l=(0,r.ref)(!1),u=0,d=!1,f,p=new Set;function m(){if(d)throw a();let e=new AbortController;return p.add(e),e}function h(e){if(d||e.aborted)throw a()}let g=(0,r.computed)(()=>{if(t.logo.value){let e=t.errorCorrectionLevel.value;return e===`L`||e===`M`?`Q`:e}return t.errorCorrectionLevel.value}),_=(0,r.computed)(()=>({width:t.size.value,margin:t.margin.value,errorCorrectionLevel:g.value,color:{dark:t.color.value,light:t.bgColor.value}}));function v(){let e=t.logo.value;return{value:t.value.value,settings:_.value,size:t.size.value,mode:t.mode.value,logo:e?{...e}:void 0}}async function y(e,t){h(t);let n=document.createElement(`canvas`);return await i.default.toCanvas(n,e.value,e.settings),h(t),e.logo&&await s(n,e.logo,e.size,t),h(t),n}async function b(e,t){if(e.logo){let n=await y(e,t),r=n.toDataURL(`image/png`);return`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" viewBox="0 0 ${n.width} ${n.height}"><image href="${r}" width="100%" height="100%"/></svg>`}let n=await i.default.toString(e.value,{...e.settings,type:`svg`});return h(t),n}function x(){let t=e.value;t&&(t.getContext(`2d`)?.clearRect(0,0,t.width,t.height),t.width=0,t.height=0)}function S(){n.value=``,o.value=!1,x()}async function C(t,r,i){if(r.mode===`canvas`){let a=await y(r,i);if(t!==u)return;let s=e.value;if(!s)return;s.width=a.width,s.height=a.height;let c=s.getContext(`2d`);if(!c)throw Error(`Canvas context 不可用`);c.drawImage(a,0,0),n.value=``,o.value=!1;return}let a=await b(r,i);t===u&&(n.value=a,o.value=!!r.logo,x())}async function w(){if(d)return;let e=++u;if(f?.abort(),f=void 0,!t.value.value){S(),c.value=null,l.value=!1;return}let n=m();f=n;let r=v();l.value=!0,c.value=null;try{await C(e,r,n.signal)}catch(t){if(e!==u)return;c.value=t instanceof Error?t:Error(String(t)),S()}finally{p.delete(n),f===n&&(f=void 0),e===u&&(l.value=!1)}}async function T(e=`png`,t=.92){let n=m(),r=v();try{if(e===`svg`){let e=await b(r,n.signal);return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}let i=await y(r,n.signal),a=e===`jpeg`?`image/jpeg`:`image/png`;return i.toDataURL(a,t)}finally{p.delete(n)}}async function E(e=`qrcode`,t=`png`){let n=await T(t);if(d)throw a();let r=document.createElement(`a`);r.download=`${e}.${t}`,r.href=n,document.body.appendChild(r),r.click(),r.remove()}return(0,r.watch)([t.value,t.size,t.color,t.bgColor,t.errorCorrectionLevel,t.margin,t.mode,t.logo],()=>w(),{deep:!0}),(0,r.onBeforeUnmount)(()=>{d=!0,u++,p.forEach(e=>e.abort()),p.clear(),f=void 0,l.value=!1}),{svgHtml:n,svgTrusted:o,error:c,loading:l,render:w,toDataURL:T,download:E}}const l={class:`c-qrcode`},u=[`innerHTML`],d={key:0,class:`qrcode-label`},f=(0,r.defineComponent)({name:`C_QRCode`,__name:`index`,props:{value:{},size:{default:200},color:{default:`#000000`},bgColor:{default:`#FFFFFF`},errorCorrectionLevel:{default:`M`},margin:{default:2},mode:{default:`canvas`},logo:{default:void 0},showBorder:{type:Boolean,default:!0},label:{default:``},showLabel:{type:Boolean,default:!1}},emits:[`error`],setup(e,{expose:t,emit:i}){let a=e,o=i,s=(0,r.ref)(null),{svgHtml:f,svgTrusted:p,error:m,render:h,toDataURL:g,download:_}=c(s,{value:(0,r.toRef)(a,`value`),size:(0,r.toRef)(a,`size`),color:(0,r.toRef)(a,`color`),bgColor:(0,r.toRef)(a,`bgColor`),errorCorrectionLevel:(0,r.toRef)(a,`errorCorrectionLevel`),margin:(0,r.toRef)(a,`margin`),mode:(0,r.toRef)(a,`mode`),logo:(0,r.toRef)(a,`logo`)}),v=(0,r.computed)(()=>p.value?f.value:n.n(f.value));return(0,r.watch)(m,e=>{e&&o(`error`,e)}),(0,r.onMounted)(()=>h()),t({toDataURL:(e,t)=>g(e,t),download:(e,t)=>_(e,t),refresh:()=>h()}),(t,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,l,[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`qrcode-wrapper`,{"with-border":e.showBorder}])},[(0,r.withDirectives)((0,r.createElementVNode)(`canvas`,{ref_key:`canvasRef`,ref:s},null,512),[[r.vShow,e.mode===`canvas`]]),e.mode===`svg`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:0,class:`qrcode-svg`,style:(0,r.normalizeStyle)({width:`${e.size}px`,height:`${e.size}px`}),innerHTML:v.value},null,12,u)):(0,r.createCommentVNode)(`v-if`,!0)],2),e.showLabel&&e.label?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,d,(0,r.toDisplayString)(e.label),1)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var p=t.t(f,[[`__scopeId`,`data-v-5539bdf6`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
1
+ const e=require(`./chunk.cjs`),t=require(`./export-helper.cjs`),n=require(`./html.cjs`);let r=require(`vue`),i=require(`qrcode`);i=e.n(i);function a(){return new DOMException(`二维码任务已取消`,`AbortError`)}function o(e,t,n,r,i){let a=Math.min(.3,Math.max(.05,r.size??.2)),o=Math.floor(i*a),s=Math.max(0,r.padding??4),c=Math.min(o/2,Math.max(0,r.borderRadius??4)),l=(e.width-o)/2,u=(e.height-o)/2,d=l-s,f=u-s,p=o+s*2,m=c+s;t.save();try{t.beginPath(),t.moveTo(d+m,f),t.arcTo(d+p,f,d+p,f+p,m),t.arcTo(d+p,f+p,d,f+p,m),t.arcTo(d,f+p,d,f,m),t.arcTo(d,f,d+p,f,m),t.closePath(),t.fillStyle=r.bgColor??`#ffffff`,t.fill(),t.beginPath(),t.moveTo(l+c,u),t.arcTo(l+o,u,l+o,u+o,c),t.arcTo(l+o,u+o,l,u+o,c),t.arcTo(l,u+o,l,u,c),t.arcTo(l,u,l+o,u,c),t.closePath(),t.clip(),t.drawImage(n,l,u,o,o)}finally{t.restore()}}function s(e,t,n,r){return new Promise((i,s)=>{if(r.aborted)return s(a());let c=e.getContext(`2d`);if(!c)return s(Error(`Canvas context 不可用`));let l=new Image;l.crossOrigin=`anonymous`;let u=!1,d=()=>{l.onload=null,l.onerror=null,r.removeEventListener(`abort`,p),l.src=``},f=e=>{u||(u=!0,d(),e===void 0?i():s(e))},p=()=>f(a());if(l.onload=()=>{if(!u){if(r.aborted)return p();try{o(e,c,l,t,n),f()}catch(e){f(e)}}},l.onerror=()=>f(Error(`Logo 加载失败: ${t.src}`)),r.addEventListener(`abort`,p,{once:!0}),r.aborted)p();else try{l.src=t.src}catch(e){f(e)}})}function c(e,t){let n=(0,r.ref)(``),o=(0,r.ref)(!1),c=(0,r.ref)(null),l=(0,r.ref)(!1),u=0,d=!1,f,p=new Set;function m(){if(d)throw a();let e=new AbortController;return p.add(e),e}function h(e){if(d||e.aborted)throw a()}let g=(0,r.computed)(()=>{if(t.logo.value){let e=t.errorCorrectionLevel.value;return e===`L`||e===`M`?`Q`:e}return t.errorCorrectionLevel.value}),_=(0,r.computed)(()=>({width:t.size.value,margin:t.margin.value,errorCorrectionLevel:g.value,color:{dark:t.color.value,light:t.bgColor.value}}));function v(){let e=t.logo.value;return{value:t.value.value,settings:_.value,size:t.size.value,mode:t.mode.value,logo:e?{...e}:void 0}}async function y(e,t){h(t);let n=document.createElement(`canvas`);return await i.default.toCanvas(n,e.value,e.settings),h(t),e.logo&&await s(n,e.logo,e.size,t),h(t),n}async function b(e,t){if(e.logo){let n=await y(e,t),r=n.toDataURL(`image/png`);return`<svg xmlns="http://www.w3.org/2000/svg" width="${n.width}" height="${n.height}" viewBox="0 0 ${n.width} ${n.height}"><image href="${r}" width="100%" height="100%"/></svg>`}let n=await i.default.toString(e.value,{...e.settings,type:`svg`});return h(t),n}function x(){let t=e.value;t&&(t.getContext(`2d`)?.clearRect(0,0,t.width,t.height),t.width=0,t.height=0)}function S(){n.value=``,o.value=!1,x()}async function C(t,r,i){if(r.mode===`canvas`){let a=await y(r,i);if(t!==u)return;let s=e.value;if(!s)return;s.width=a.width,s.height=a.height;let c=s.getContext(`2d`);if(!c)throw Error(`Canvas context 不可用`);c.drawImage(a,0,0),n.value=``,o.value=!1;return}let a=await b(r,i);t===u&&(n.value=a,o.value=!!r.logo,x())}async function w(){if(d)return;let e=++u;if(f?.abort(),f=void 0,!t.value.value){S(),c.value=null,l.value=!1;return}let n=m();f=n;let r=v();l.value=!0,c.value=null;try{await C(e,r,n.signal)}catch(t){if(e!==u)return;c.value=t instanceof Error?t:Error(String(t)),S()}finally{p.delete(n),f===n&&(f=void 0),e===u&&(l.value=!1)}}async function T(e=`png`,t=.92){let n=m(),r=v();try{if(e===`svg`){let e=await b(r,n.signal);return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}let i=await y(r,n.signal),a=e===`jpeg`?`image/jpeg`:`image/png`;return i.toDataURL(a,t)}finally{p.delete(n)}}async function E(e=`qrcode`,t=`png`){let n=await T(t);if(d)throw a();let r=document.createElement(`a`);r.download=`${e}.${t}`,r.href=n,document.body.appendChild(r),r.click(),r.remove()}return(0,r.watch)([t.value,t.size,t.color,t.bgColor,t.errorCorrectionLevel,t.margin,t.mode,t.logo],()=>w(),{deep:!0}),(0,r.onBeforeUnmount)(()=>{d=!0,u++,p.forEach(e=>e.abort()),p.clear(),f=void 0,l.value=!1}),{svgHtml:n,svgTrusted:o,error:c,loading:l,render:w,toDataURL:T,download:E}}const l={class:`c-qrcode`},u=[`innerHTML`],d={key:0,class:`qrcode-label`},f=(0,r.defineComponent)({name:`C_QRCode`,__name:`index`,props:{value:{},size:{default:200},color:{default:`#000000`},bgColor:{default:`#FFFFFF`},errorCorrectionLevel:{default:`M`},margin:{default:2},mode:{default:`canvas`},logo:{default:void 0},showBorder:{type:Boolean,default:!0},label:{default:``},showLabel:{type:Boolean,default:!1}},emits:[`error`],setup(e,{expose:t,emit:i}){let a=e,o=i,s=(0,r.ref)(null),{svgHtml:f,svgTrusted:p,error:m,render:h,toDataURL:g,download:_}=c(s,{value:(0,r.toRef)(a,`value`),size:(0,r.toRef)(a,`size`),color:(0,r.toRef)(a,`color`),bgColor:(0,r.toRef)(a,`bgColor`),errorCorrectionLevel:(0,r.toRef)(a,`errorCorrectionLevel`),margin:(0,r.toRef)(a,`margin`),mode:(0,r.toRef)(a,`mode`),logo:(0,r.toRef)(a,`logo`)}),v=(0,r.computed)(()=>p.value?f.value:n.n(f.value));return(0,r.watch)(m,e=>{e&&o(`error`,e)}),(0,r.onMounted)(()=>h()),t({toDataURL:(e,t)=>g(e,t),download:(e,t)=>_(e,t),refresh:()=>h()}),(t,n)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,l,[(0,r.createElementVNode)(`div`,{class:(0,r.normalizeClass)([`qrcode-wrapper`,{"with-border":e.showBorder}])},[(0,r.withDirectives)((0,r.createElementVNode)(`canvas`,{ref_key:`canvasRef`,ref:s},null,512),[[r.vShow,e.mode===`canvas`]]),e.mode===`svg`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:0,class:`qrcode-svg`,style:(0,r.normalizeStyle)({width:`${e.size}px`,height:`${e.size}px`}),innerHTML:v.value},null,12,u)):(0,r.createCommentVNode)(`v-if`,!0)],2),e.showLabel&&e.label?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,d,(0,r.toDisplayString)(e.label),1)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var p=t.t(f,[[`__scopeId`,`data-v-5539bdf6`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
package/dist/C_Table.css CHANGED
@@ -298,7 +298,7 @@ html.dark .action-divider[data-v-48eb3073]:hover {
298
298
  .w-e-video{box-sizing:border-box;display:flex;margin:0;max-width:100%;width:100%}.w-e-video>iframe,.w-e-video>video{display:block;max-width:100%}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow:auto;padding:10px 0}.w-e-video-align-left{justify-content:flex-start}.w-e-video-align-center{justify-content:center}.w-e-video-align-right{justify-content:flex-end}
299
299
 
300
300
  /* CSS 变量 — 支持外部主题覆盖 */
301
- .c-editor[data-v-b7a5de58] {
301
+ .c-editor[data-v-2625824a] {
302
302
  --c-editor-toolbar-bg: #ffffff;
303
303
  --c-editor-toolbar-border: #e5e7eb;
304
304
  --c-editor-menu-color: #333333;
@@ -316,7 +316,7 @@ html.dark .action-divider[data-v-48eb3073]:hover {
316
316
  }
317
317
 
318
318
  /* 暗色主题 — 覆盖 CSS 变量 */
319
- .editor-dark[data-v-b7a5de58] {
319
+ .editor-dark[data-v-2625824a] {
320
320
  --c-editor-toolbar-bg: #1f2937;
321
321
  --c-editor-toolbar-border: #374151;
322
322
  --c-editor-menu-color: #e5e7eb;
@@ -329,60 +329,60 @@ html.dark .action-divider[data-v-48eb3073]:hover {
329
329
  --c-editor-text-focus-bg: #111827;
330
330
  --c-editor-text-focus-color: #e5e7eb;
331
331
  }
332
- .editor-dark[data-v-b7a5de58] .w-e-toolbar {
332
+ .editor-dark[data-v-2625824a] .w-e-toolbar {
333
333
  background-color: var(--c-editor-toolbar-bg) !important;
334
334
  border-color: var(--c-editor-toolbar-border) !important;
335
335
  }
336
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item {
336
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item {
337
337
  color: var(--c-editor-menu-color) !important;
338
338
  }
339
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
339
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
340
340
  background-color: var(--c-editor-menu-hover-bg) !important;
341
341
  color: var(--c-editor-menu-hover-color) !important;
342
342
  }
343
- .editor-dark[data-v-b7a5de58] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
343
+ .editor-dark[data-v-2625824a] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
344
344
  background-color: var(--c-editor-menu-active-bg) !important;
345
345
  color: var(--c-editor-menu-active-color) !important;
346
346
  }
347
- .editor-dark[data-v-b7a5de58] .w-e-text-container {
347
+ .editor-dark[data-v-2625824a] .w-e-text-container {
348
348
  background-color: var(--c-editor-container-bg) !important;
349
349
  border-color: var(--c-editor-container-border) !important;
350
350
  }
351
- .editor-dark[data-v-b7a5de58] .w-e-text-container .w-e-text {
351
+ .editor-dark[data-v-2625824a] .w-e-text-container .w-e-text {
352
352
  background-color: var(--c-editor-text-bg) !important;
353
353
  color: var(--c-editor-text-color) !important;
354
354
  }
355
- .editor-dark[data-v-b7a5de58] .w-e-text-container .w-e-text:focus {
355
+ .editor-dark[data-v-2625824a] .w-e-text-container .w-e-text:focus {
356
356
  background-color: var(--c-editor-text-focus-bg) !important;
357
357
  color: var(--c-editor-text-focus-color) !important;
358
358
  }
359
- [data-v-b7a5de58] .w-e-toolbar,[data-v-b7a5de58] .w-e-text-container {
359
+ [data-v-2625824a] .w-e-toolbar,[data-v-2625824a] .w-e-text-container {
360
360
  max-width: 100% !important;
361
361
  overflow-x: auto !important;
362
362
  box-sizing: border-box !important;
363
363
  }
364
- [data-v-b7a5de58] .w-e-text {
364
+ [data-v-2625824a] .w-e-text {
365
365
  max-width: 100% !important;
366
366
  word-wrap: break-word !important;
367
367
  overflow-wrap: break-word !important;
368
368
  }
369
- [data-v-b7a5de58] .w-e-toolbar,[data-v-b7a5de58] .w-e-text-container,[data-v-b7a5de58] .w-e-text {
369
+ [data-v-2625824a] .w-e-toolbar,[data-v-2625824a] .w-e-text-container,[data-v-2625824a] .w-e-text {
370
370
  transition:
371
371
  background-color var(--c-editor-transition-duration) ease,
372
372
  border-color var(--c-editor-transition-duration) ease,
373
373
  color var(--c-editor-transition-duration) ease !important;
374
374
  }
375
- .editor-focused[data-v-b7a5de58] {
375
+ .editor-focused[data-v-2625824a] {
376
376
  max-width: 100% !important;
377
377
  }
378
378
 
379
379
 
380
380
  /* layer: default */
381
- .hidden[data-v-b7a5de58]{display:none;}
382
- .w-full[data-v-b7a5de58]{width:100%;}
383
- .px[data-v-b7a5de58]{padding-left:1rem;padding-right:1rem;}
384
- .transition[data-v-b7a5de58]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
385
- .ease[data-v-b7a5de58]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
381
+ .hidden[data-v-2625824a]{display:none;}
382
+ .w-full[data-v-2625824a]{width:100%;}
383
+ .px[data-v-2625824a]{padding-left:1rem;padding-right:1rem;}
384
+ .transition[data-v-2625824a]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
385
+ .ease[data-v-2625824a]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
386
386
 
387
387
  .c-form .c-form-actions[data-v-37ca39aa] {
388
388
  margin-top: var(--c-form-row-gap, 20px);