@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.
- package/CHANGELOG.md +14 -0
- package/README.md +2 -0
- package/README_EN.md +2 -0
- package/SECURITY.md +10 -0
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/dist/C_AntV2.cjs +1 -1
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Editor.css +18 -18
- package/dist/C_Editor2.cjs +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.css +18 -18
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_Markdown.css +37 -37
- package/dist/C_Markdown2.cjs +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_Table.css +18 -18
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_WaterFall.css +49 -31
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/chunk.cjs +1 -1
- package/dist/constants.d.cts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants2.d.cts +1 -1
- package/dist/constants2.d.ts +1 -1
- package/dist/constants3.d.cts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.cjs +1 -1
- package/dist/data.d.cts +10 -10
- package/dist/data.d.ts +10 -10
- package/dist/data.js +1 -1
- package/dist/graphics.d.cts +17 -11
- package/dist/graphics.d.ts +17 -11
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/html.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.vue.d.cts +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index10.vue.d.cts +3 -3
- package/dist/index10.vue.d.ts +6 -6
- package/dist/index11.vue.d.cts +6 -6
- package/dist/index12.vue.d.ts +3 -3
- package/dist/index13.vue.d.cts +3 -3
- package/dist/index13.vue.d.ts +7 -7
- package/dist/index14.vue.d.cts +7 -7
- package/dist/index17.vue.d.ts +3 -3
- package/dist/index18.vue.d.cts +3 -3
- package/dist/index19.vue.d.cts +1 -1
- package/dist/index19.vue.d.ts +1 -1
- package/dist/index2.vue.d.cts +3 -3
- package/dist/index2.vue.d.ts +3 -3
- package/dist/index20.vue.d.cts +2 -2
- package/dist/index20.vue.d.ts +2 -2
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index24.vue.d.cts +1 -1
- package/dist/index24.vue.d.ts +1 -1
- package/dist/index25.vue.d.cts +4 -4
- package/dist/index25.vue.d.ts +4 -4
- package/dist/index26.vue.d.cts +2 -2
- package/dist/index26.vue.d.ts +2 -2
- package/dist/index3.vue.d.cts +5 -5
- package/dist/index3.vue.d.ts +5 -5
- package/dist/index8.vue.d.ts +4 -4
- package/dist/index9.vue.d.cts +4 -4
- package/dist/index9.vue.d.ts +3 -3
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/style.css +104 -86
- package/dist/types.d.ts +5 -0
- package/dist/types2.d.cts +5 -0
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.cts +12 -12
- package/dist/useCropperCore.d.ts +12 -12
- package/dist/useEdgeInteraction.d.cts +2 -2
- package/dist/useEdgeInteraction.d.ts +2 -2
- package/dist/useFullscreen.d.cts +3 -3
- package/dist/useFullscreen.d.ts +3 -3
- package/dist/useGlobalSearch.d.cts +1 -1
- package/dist/useGlobalSearch.d.ts +1 -1
- package/dist/useInfiniteScroll.d.cts +16 -17
- package/dist/useInfiniteScroll.d.ts +16 -17
- package/dist/useQRCode.d.cts +4 -4
- package/dist/useQRCode.d.ts +4 -4
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +11 -11
- package/dist/useSplitResize.d.ts +11 -11
- package/dist/useTableQuery.cjs +1 -1
- package/dist/useTableQuery.d.cts +16 -14
- package/dist/useTableQuery.d.ts +16 -14
- package/dist/useTableQuery.js +1 -1
- package/dist/useWorkflowValidation.d.cts +1 -1
- package/dist/useWorkflowValidation.d.ts +1 -1
- package/dist/verification.d.cts +3 -3
- package/dist/verification.d.ts +3 -3
- package/dist/xlsx.js +143 -0
- package/dist/xlsx2.cjs +143 -0
- package/docs/architecture.en.md +1 -0
- package/docs/architecture.md +1 -0
- package/docs/guides/api-migration.md +111 -0
- package/docs/guides/runtime-performance.md +16 -1
- package/docs/guides/waterfall.md +113 -0
- package/docs/runtime-review-20261019.md +2 -0
- package/licenses/SheetJS.txt +201 -0
- package/package.json +13 -9
package/dist/C_FilePreview2.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
101
|
-
.w-full[data-v-
|
|
102
|
-
.px[data-v-
|
|
103
|
-
.transition[data-v-
|
|
104
|
-
.ease[data-v-
|
|
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);
|
package/dist/C_FullCalendar2.cjs
CHANGED
|
@@ -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}});
|
package/dist/C_Markdown.css
CHANGED
|
@@ -898,7 +898,7 @@
|
|
|
898
898
|
opacity: 0.6;
|
|
899
899
|
}
|
|
900
900
|
/* C_Markdown 组件样式文件 */
|
|
901
|
-
.c-markdown-wrapper[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
922
|
+
.c-markdown-wrapper[data-v-648192bd] .md-editor {
|
|
923
923
|
/* 禁用状态样式 */
|
|
924
924
|
}
|
|
925
|
-
.c-markdown-wrapper[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
994
|
-
.c-markdown-wrapper.is-dark[data-v-
|
|
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-
|
|
999
|
-
.c-markdown-wrapper.is-dark[data-v-
|
|
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-
|
|
1003
|
-
.c-markdown-wrapper.is-dark[data-v-
|
|
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-
|
|
1008
|
-
.c-markdown-wrapper.is-dark[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
1028
|
-
.italic[data-v-
|
|
1027
|
+
.table[data-v-648192bd]{display:table;}
|
|
1028
|
+
.italic[data-v-648192bd]{font-style:italic;}
|
package/dist/C_Markdown2.cjs
CHANGED
|
@@ -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)(``),
|
|
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}});
|
package/dist/C_Markdown2.js
CHANGED
|
@@ -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(``),
|
|
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};
|
package/dist/C_QRCode2.cjs
CHANGED
|
@@ -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.
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
382
|
-
.w-full[data-v-
|
|
383
|
-
.px[data-v-
|
|
384
|
-
.transition[data-v-
|
|
385
|
-
.ease[data-v-
|
|
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);
|