@robot-admin/naive-ui-components 0.17.0 → 0.17.2
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 +31 -0
- package/README.md +12 -11
- package/README_EN.md +1 -0
- package/dist/C_AntV.css +105 -105
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.css +53 -53
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Chat.css +269 -185
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Code.css +26 -26
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +96 -57
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FullCalendar.css +10 -11
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +140 -118
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +10 -10
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_OrgChart.css +28 -4
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +231 -77
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +110 -117
- package/dist/C_Table.css +110 -117
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_Tabs.css +18 -18
- package/dist/C_TagsView.css +51 -51
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Transfer.css +93 -84
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Upload.css +5 -5
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +20 -20
- package/dist/C_VideoPlayer2.cjs +4 -3
- package/dist/C_VideoPlayer2.js +4 -3
- package/dist/C_VtableGantt.css +44 -28
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +29 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +5 -5
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.cts +12 -15
- package/dist/constants5.d.ts +12 -15
- package/dist/data.d.cts +9 -9
- package/dist/data.d.ts +9 -9
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +2 -2
- package/dist/index10.vue.d.ts +2 -2
- package/dist/index11.vue.d.cts +2 -2
- package/dist/index11.vue.d.ts +5 -5
- package/dist/index12.vue.d.cts +5 -5
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +5 -5
- package/dist/index15.vue.d.cts +5 -5
- package/dist/index15.vue.d.ts +1 -1
- package/dist/index16.vue.d.cts +1 -1
- package/dist/index16.vue.d.ts +1 -1
- package/dist/index17.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +4 -4
- package/dist/index19.vue.d.cts +4 -4
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +3 -3
- package/dist/index2.vue.d.ts +3 -3
- package/dist/index20.vue.d.cts +5 -1
- package/dist/index20.vue.d.ts +5 -1
- 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/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +9 -4
- package/dist/index25.vue.d.ts +9 -4
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +6 -2
- package/dist/index28.vue.d.ts +6 -2
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +8 -5
- package/dist/index7.vue.d.cts +8 -5
- package/dist/index8.vue.d.ts +4 -6
- package/dist/index9.vue.d.cts +4 -6
- package/dist/index9.vue.d.ts +2 -2
- package/dist/mapUtils.d.cts +4 -4
- package/dist/mapUtils.d.ts +4 -4
- package/dist/style.css +1559 -1219
- package/dist/useCalendarEvents.d.cts +10 -0
- package/dist/useCalendarEvents.d.ts +10 -0
- package/dist/useCropperCore.d.cts +10 -10
- package/dist/useCropperCore.d.ts +10 -10
- package/dist/useDraggableLayout.d.cts +16 -14
- package/dist/useDraggableLayout.d.ts +16 -14
- package/dist/useEdgeInteraction.d.cts +4 -2
- package/dist/useEdgeInteraction.d.ts +4 -2
- package/dist/useFullscreen.d.cts +9 -3
- package/dist/useFullscreen.d.ts +9 -3
- package/dist/useGlobalSearch.d.cts +9 -4
- package/dist/useGlobalSearch.d.ts +9 -4
- package/dist/useInfiniteScroll.d.cts +6 -3
- package/dist/useInfiniteScroll.d.ts +6 -3
- package/dist/useQRCode.d.cts +2 -2
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.cts +2 -2
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +3 -3
- package/dist/useSplitResize.d.ts +3 -3
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +15 -5
- package/dist/useTableQuery.d.ts +15 -5
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useWorkflowValidation.d.cts +8 -3
- package/dist/useWorkflowValidation.d.ts +8 -3
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +2 -2
- package/docs/component-review-20261019.md +55 -0
- package/docs/components.en.md +4 -0
- package/docs/components.md +4 -0
- package/docs/guides/runtime-performance.md +38 -0
- package/docs/guides/split-pane.en.md +4 -0
- package/docs/guides/split-pane.md +4 -0
- package/docs/guides/table-density.md +26 -0
- package/docs/guides/transfer.md +11 -0
- package/docs/runtime-review-20261019.md +41 -0
- package/package.json +4 -2
package/dist/C_Transfer2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`),i=require(`vueuc`);const a={class:`c-transfer__item-label`},o=(0,n.defineComponent)({__name:`TransferRow`,props:{item:{},checked:{type:Boolean}},emits:[`check`],setup(t,{emit:i}){let o=t,s=i,c=()=>{o.item.disabled||s(`check`,o.item.key)};return(i,o)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-transfer__item`,{"is-disabled":t.item.disabled,"is-checked":t.checked}]),onClick:c},[(0,n.createVNode)((0,n.unref)(r.NCheckbox),{checked:t.checked,disabled:t.item.disabled,"aria-label":t.item.label,size:`small`,"onUpdate:checked":c,onClick:o[0]||=(0,n.withModifiers)(()=>{},[`stop`])},null,8,[`checked`,`disabled`,`aria-label`]),t.item.icon?((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:0,name:t.item.icon,class:`c-transfer__item-icon`},null,8,[`name`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`span`,a,(0,n.toDisplayString)(t.item.label),1)],2))}});var s=t.t(o,[[`__scopeId`,`data-v-af0b7c2e`]]);const c={key:1,class:`c-transfer__list`},l=(0,n.defineComponent)({__name:`TransferList`,props:{items:{},checked:{},size:{},virtualScroll:{type:Boolean},query:{}},emits:[`check`],setup(e,{emit:t}){let r=e,a=t,o=(0,n.shallowRef)(),l=(0,n.computed)(()=>r.size===`small`?28:r.size===`large`?40:34),u=(0,n.computed)(()=>r.virtualScroll!==!1&&r.items.length>=100);return(0,n.watch)(()=>r.query,()=>o.value?.scrollTo({top:0}),{flush:`post`}),(t,r)=>u.value?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(i.VVirtualList),{key:0,ref_key:`virtualList`,ref:o,class:`c-transfer__list c-transfer__list--virtual`,items:e.items,"item-size":l.value,"padding-top":4,"padding-bottom":4,style:(0,n.normalizeStyle)({height:`min(var(--tf-height), ${e.items.length*l.value+8}px)`})},{default:(0,n.withCtx)(({item:t})=>[(0,n.createVNode)(s,{item:t,checked:e.checked.has(t.key),onCheck:r[0]||=e=>a(`check`,e)},null,8,[`item`,`checked`])]),_:1},8,[`items`,`item-size`,`style`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,c,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.items,t=>((0,n.openBlock)(),(0,n.createBlock)(s,{key:t.key,item:t,checked:e.checked.has(t.key),onCheck:r[1]||=e=>a(`check`,e)},null,8,[`item`,`checked`]))),128))]))}});var u=t.t(l,[[`__scopeId`,`data-v-2d5e8cab`]]);function d(e,t){if(!t.size)return[];let n=[];for(let r of e)!r.disabled&&t.has(r.key)&&n.push(r.key);return n}function f(e,t){let n=!1;for(let r of e)if(!r.disabled){if(!t.has(r.key))return!1;n=!0}return n}const p={titles:[`可选列表`,`已选列表`],filterable:!1,filterPlaceholder:`搜索...`,showSelectAll:!0,sourceEmptyText:`暂无数据`,targetEmptyText:`未选择任何项`,size:`medium`,virtualScroll:!0},m={class:`c-transfer__panel`},h={class:`c-transfer__header`},g={key:1,class:`c-transfer__title`},_={class:`c-transfer__count`},v={key:0,class:`c-transfer__filter`},y={key:2,class:`c-transfer__empty`},b={class:`c-transfer__actions`},x=[`disabled`],S=[`disabled`],C={class:`c-transfer__panel`},w={class:`c-transfer__header`},T={key:1,class:`c-transfer__title`},E={class:`c-transfer__count`},D={key:0,class:`c-transfer__filter`},O={key:2,class:`c-transfer__empty`},k=(0,n.defineComponent)({__name:`index`,props:{data:{},modelValue:{},titles:{default:()=>p.titles},filterable:{type:Boolean,default:p.filterable},filterPlaceholder:{default:p.filterPlaceholder},filterMethod:{},showSelectAll:{type:Boolean,default:p.showSelectAll},sourceEmptyText:{default:p.sourceEmptyText},targetEmptyText:{default:p.targetEmptyText},size:{default:p.size},virtualScroll:{type:Boolean,default:p.virtualScroll}},emits:[`update:modelValue`,`change`],setup(t,{emit:i}){let a=t,o=i,s=(0,n.computed)(()=>({...p,...a})),c=(0,n.computed)(()=>{let e=new Map;for(let t of a.data)e.set(t.key,t);return e}),l=(0,n.computed)(()=>new Set(a.modelValue)),k=(0,n.computed)(()=>[...c.value.values()].filter(e=>!l.value.has(e.key))),A=(0,n.computed)(()=>{let e=[];for(let t of new Set(a.modelValue)){let n=c.value.get(t);n&&e.push(n)}return e}),j=(0,n.ref)(``),M=(0,n.ref)(``);function N(e,t){return t.label.toLowerCase().includes(e.toLowerCase())}let P=(0,n.computed)(()=>a.filterMethod??N),F=(0,n.computed)(()=>{let e=j.value.trim();return e?k.value.filter(t=>P.value(e,t)):k.value}),I=(0,n.computed)(()=>{let e=M.value.trim();return e?A.value.filter(t=>P.value(e,t)):A.value}),L=(0,n.reactive)(new Set),R=(0,n.reactive)(new Set),z=(0,n.computed)(()=>d(k.value,L)),B=(0,n.computed)(()=>d(A.value,R));(0,n.watch)([k,A],()=>{let e=new Set(k.value.filter(e=>!e.disabled).map(e=>e.key)),t=new Set(A.value.filter(e=>!e.disabled).map(e=>e.key));for(let t of L)e.has(t)||L.delete(t);for(let e of R)t.has(e)||R.delete(e)});function V(e){L.has(e)?L.delete(e):L.add(e)}function H(e){R.has(e)?R.delete(e):R.add(e)}let U=(0,n.computed)(()=>f(F.value,L)),W=(0,n.computed)(()=>!U.value&&F.value.some(e=>L.has(e.key))),G=(0,n.computed)(()=>f(I.value,R)),K=(0,n.computed)(()=>!G.value&&I.value.some(e=>R.has(e.key)));function q(e){for(let t of F.value)t.disabled||(e?L.add(t.key):L.delete(t.key))}function J(e){for(let t of I.value)t.disabled||(e?R.add(t.key):R.delete(t.key))}function Y(){let e=z.value;if(e.length===0)return;let t=[...new Set([...a.modelValue,...e])];o(`update:modelValue`,t),o(`change`,t,`right`,e),L.clear()}function X(){let e=B.value;if(e.length===0)return;let t=new Set(e),n=a.modelValue.filter(e=>!t.has(e));o(`update:modelValue`,n),o(`change`,n,`left`,e),R.clear()}return(t,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-transfer`,[`is-${s.value.size}`]])},[(0,n.createCommentVNode)(` ================ Source Panel ================ `),(0,n.createElementVNode)(`div`,m,[(0,n.createElementVNode)(`div`,h,[s.value.showSelectAll?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NCheckbox),{key:0,checked:U.value,indeterminate:W.value,"onUpdate:checked":q},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(s.value.titles?.[0]),1)]),_:1},8,[`checked`,`indeterminate`])):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,g,(0,n.toDisplayString)(s.value.titles?.[0]),1)),(0,n.createElementVNode)(`span`,_,(0,n.toDisplayString)(L.size)+` / `+(0,n.toDisplayString)(k.value.length),1)]),s.value.filterable?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,v,[(0,n.createVNode)((0,n.unref)(r.NInput),{value:j.value,"onUpdate:value":i[0]||=e=>j.value=e,clearable:``,size:`small`,placeholder:s.value.filterPlaceholder,"input-props":{"aria-label":`搜索可选列表`}},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`})]),_:1},8,[`value`,`placeholder`])])):(0,n.createCommentVNode)(`v-if`,!0),F.value.length?((0,n.openBlock)(),(0,n.createBlock)(u,{key:1,items:F.value,checked:L,query:j.value,size:s.value.size,"virtual-scroll":s.value.virtualScroll,onCheck:V},null,8,[`items`,`checked`,`query`,`size`,`virtual-scroll`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,(0,n.toDisplayString)(s.value.sourceEmptyText),1))]),(0,n.createCommentVNode)(` ================ Actions ================ `),(0,n.createElementVNode)(`div`,b,[(0,n.createElementVNode)(`button`,{type:`button`,class:(0,n.normalizeClass)([`c-transfer__btn`,{"is-disabled":z.value.length===0}]),"aria-label":`移至已选列表`,disabled:z.value.length===0,onClick:Y},[(0,n.createVNode)(e.t,{name:`mdi:chevron-right`})],10,x),(0,n.createElementVNode)(`button`,{type:`button`,class:(0,n.normalizeClass)([`c-transfer__btn`,{"is-disabled":B.value.length===0}]),"aria-label":`移回可选列表`,disabled:B.value.length===0,onClick:X},[(0,n.createVNode)(e.t,{name:`mdi:chevron-left`})],10,S)]),(0,n.createCommentVNode)(` ================ Target Panel ================ `),(0,n.createElementVNode)(`div`,C,[(0,n.createElementVNode)(`div`,w,[s.value.showSelectAll?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NCheckbox),{key:0,checked:G.value,indeterminate:K.value,"onUpdate:checked":J},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(s.value.titles?.[1]),1)]),_:1},8,[`checked`,`indeterminate`])):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,T,(0,n.toDisplayString)(s.value.titles?.[1]),1)),(0,n.createElementVNode)(`span`,E,(0,n.toDisplayString)(R.size)+` / `+(0,n.toDisplayString)(A.value.length),1)]),s.value.filterable?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,D,[(0,n.createVNode)((0,n.unref)(r.NInput),{value:M.value,"onUpdate:value":i[1]||=e=>M.value=e,clearable:``,size:`small`,placeholder:s.value.filterPlaceholder,"input-props":{"aria-label":`搜索已选列表`}},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`})]),_:1},8,[`value`,`placeholder`])])):(0,n.createCommentVNode)(`v-if`,!0),I.value.length?((0,n.openBlock)(),(0,n.createBlock)(u,{key:1,items:I.value,checked:R,query:M.value,size:s.value.size,"virtual-scroll":s.value.virtualScroll,onCheck:H},null,8,[`items`,`checked`,`query`,`size`,`virtual-scroll`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,O,(0,n.toDisplayString)(s.value.targetEmptyText),1))])],2))}});var A=t.t(k,[[`__scopeId`,`data-v-65658ed2`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return A}});
|
package/dist/C_Transfer2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,openBlock as p,reactive as m,ref as h,renderList as g,shallowRef as _,toDisplayString as v,unref as y,watch as b,withCtx as x,withModifiers as S}from"vue";import{NCheckbox as C,NInput as w}from"naive-ui";import{VVirtualList as T}from"vueuc";const E={class:`c-transfer__item-label`};var D=t(u({__name:`TransferRow`,props:{item:{},checked:{type:Boolean}},emits:[`check`],setup(t,{emit:n}){let r=t,c=n,u=()=>{r.item.disabled||c(`check`,r.item.key)};return(n,r)=>(p(),o(`div`,{class:d([`c-transfer__item`,{"is-disabled":t.item.disabled,"is-checked":t.checked}]),onClick:u},[l(y(C),{checked:t.checked,disabled:t.item.disabled,"aria-label":t.item.label,size:`small`,"onUpdate:checked":u,onClick:r[0]||=S(()=>{},[`stop`])},null,8,[`checked`,`disabled`,`aria-label`]),t.item.icon?(p(),i(e,{key:0,name:t.item.icon,class:`c-transfer__item-icon`},null,8,[`name`])):a(`v-if`,!0),s(`span`,E,v(t.item.label),1)],2))}}),[[`__scopeId`,`data-v-af0b7c2e`]]);const O={key:1,class:`c-transfer__list`};var k=t(u({__name:`TransferList`,props:{items:{},checked:{},size:{},virtualScroll:{type:Boolean},query:{}},emits:[`check`],setup(e,{emit:t}){let a=e,s=t,c=_(),u=r(()=>a.size===`small`?28:a.size===`large`?40:34),d=r(()=>a.virtualScroll!==!1&&a.items.length>=100);return b(()=>a.query,()=>c.value?.scrollTo({top:0}),{flush:`post`}),(t,r)=>d.value?(p(),i(y(T),{key:0,ref_key:`virtualList`,ref:c,class:`c-transfer__list c-transfer__list--virtual`,items:e.items,"item-size":u.value,"padding-top":4,"padding-bottom":4,style:f({height:`min(var(--tf-height), ${e.items.length*u.value+8}px)`})},{default:x(({item:t})=>[l(D,{item:t,checked:e.checked.has(t.key),onCheck:r[0]||=e=>s(`check`,e)},null,8,[`item`,`checked`])]),_:1},8,[`items`,`item-size`,`style`])):(p(),o(`div`,O,[(p(!0),o(n,null,g(e.items,t=>(p(),i(D,{key:t.key,item:t,checked:e.checked.has(t.key),onCheck:r[1]||=e=>s(`check`,e)},null,8,[`item`,`checked`]))),128))]))}}),[[`__scopeId`,`data-v-2d5e8cab`]]);function A(e,t){if(!t.size)return[];let n=[];for(let r of e)!r.disabled&&t.has(r.key)&&n.push(r.key);return n}function j(e,t){let n=!1;for(let r of e)if(!r.disabled){if(!t.has(r.key))return!1;n=!0}return n}const M={titles:[`可选列表`,`已选列表`],filterable:!1,filterPlaceholder:`搜索...`,showSelectAll:!0,sourceEmptyText:`暂无数据`,targetEmptyText:`未选择任何项`,size:`medium`,virtualScroll:!0},N={class:`c-transfer__panel`},P={class:`c-transfer__header`},F={key:1,class:`c-transfer__title`},I={class:`c-transfer__count`},L={key:0,class:`c-transfer__filter`},R={key:2,class:`c-transfer__empty`},ee={class:`c-transfer__actions`},te=[`disabled`],ne=[`disabled`],re={class:`c-transfer__panel`},ie={class:`c-transfer__header`},z={key:1,class:`c-transfer__title`},B={class:`c-transfer__count`},V={key:0,class:`c-transfer__filter`},H={key:2,class:`c-transfer__empty`};var U=t(u({__name:`index`,props:{data:{},modelValue:{},titles:{default:()=>M.titles},filterable:{type:Boolean,default:M.filterable},filterPlaceholder:{default:M.filterPlaceholder},filterMethod:{},showSelectAll:{type:Boolean,default:M.showSelectAll},sourceEmptyText:{default:M.sourceEmptyText},targetEmptyText:{default:M.targetEmptyText},size:{default:M.size},virtualScroll:{type:Boolean,default:M.virtualScroll}},emits:[`update:modelValue`,`change`],setup(t,{emit:n}){let u=t,f=n,g=r(()=>({...M,...u})),_=r(()=>{let e=new Map;for(let t of u.data)e.set(t.key,t);return e}),S=r(()=>new Set(u.modelValue)),T=r(()=>[..._.value.values()].filter(e=>!S.value.has(e.key))),E=r(()=>{let e=[];for(let t of new Set(u.modelValue)){let n=_.value.get(t);n&&e.push(n)}return e}),D=h(``),O=h(``);function U(e,t){return t.label.toLowerCase().includes(e.toLowerCase())}let W=r(()=>u.filterMethod??U),G=r(()=>{let e=D.value.trim();return e?T.value.filter(t=>W.value(e,t)):T.value}),K=r(()=>{let e=O.value.trim();return e?E.value.filter(t=>W.value(e,t)):E.value}),q=m(new Set),J=m(new Set),Y=r(()=>A(T.value,q)),X=r(()=>A(E.value,J));b([T,E],()=>{let e=new Set(T.value.filter(e=>!e.disabled).map(e=>e.key)),t=new Set(E.value.filter(e=>!e.disabled).map(e=>e.key));for(let t of q)e.has(t)||q.delete(t);for(let e of J)t.has(e)||J.delete(e)});function ae(e){q.has(e)?q.delete(e):q.add(e)}function oe(e){J.has(e)?J.delete(e):J.add(e)}let Z=r(()=>j(G.value,q)),se=r(()=>!Z.value&&G.value.some(e=>q.has(e.key))),Q=r(()=>j(K.value,J)),ce=r(()=>!Q.value&&K.value.some(e=>J.has(e.key)));function le(e){for(let t of G.value)t.disabled||(e?q.add(t.key):q.delete(t.key))}function $(e){for(let t of K.value)t.disabled||(e?J.add(t.key):J.delete(t.key))}function ue(){let e=Y.value;if(e.length===0)return;let t=[...new Set([...u.modelValue,...e])];f(`update:modelValue`,t),f(`change`,t,`right`,e),q.clear()}function de(){let e=X.value;if(e.length===0)return;let t=new Set(e),n=u.modelValue.filter(e=>!t.has(e));f(`update:modelValue`,n),f(`change`,n,`left`,e),J.clear()}return(t,n)=>(p(),o(`div`,{class:d([`c-transfer`,[`is-${g.value.size}`]])},[a(` ================ Source Panel ================ `),s(`div`,N,[s(`div`,P,[g.value.showSelectAll?(p(),i(y(C),{key:0,checked:Z.value,indeterminate:se.value,"onUpdate:checked":le},{default:x(()=>[c(v(g.value.titles?.[0]),1)]),_:1},8,[`checked`,`indeterminate`])):(p(),o(`span`,F,v(g.value.titles?.[0]),1)),s(`span`,I,v(q.size)+` / `+v(T.value.length),1)]),g.value.filterable?(p(),o(`div`,L,[l(y(w),{value:D.value,"onUpdate:value":n[0]||=e=>D.value=e,clearable:``,size:`small`,placeholder:g.value.filterPlaceholder,"input-props":{"aria-label":`搜索可选列表`}},{prefix:x(()=>[l(e,{name:`mdi:magnify`})]),_:1},8,[`value`,`placeholder`])])):a(`v-if`,!0),G.value.length?(p(),i(k,{key:1,items:G.value,checked:q,query:D.value,size:g.value.size,"virtual-scroll":g.value.virtualScroll,onCheck:ae},null,8,[`items`,`checked`,`query`,`size`,`virtual-scroll`])):(p(),o(`div`,R,v(g.value.sourceEmptyText),1))]),a(` ================ Actions ================ `),s(`div`,ee,[s(`button`,{type:`button`,class:d([`c-transfer__btn`,{"is-disabled":Y.value.length===0}]),"aria-label":`移至已选列表`,disabled:Y.value.length===0,onClick:ue},[l(e,{name:`mdi:chevron-right`})],10,te),s(`button`,{type:`button`,class:d([`c-transfer__btn`,{"is-disabled":X.value.length===0}]),"aria-label":`移回可选列表`,disabled:X.value.length===0,onClick:de},[l(e,{name:`mdi:chevron-left`})],10,ne)]),a(` ================ Target Panel ================ `),s(`div`,re,[s(`div`,ie,[g.value.showSelectAll?(p(),i(y(C),{key:0,checked:Q.value,indeterminate:ce.value,"onUpdate:checked":$},{default:x(()=>[c(v(g.value.titles?.[1]),1)]),_:1},8,[`checked`,`indeterminate`])):(p(),o(`span`,z,v(g.value.titles?.[1]),1)),s(`span`,B,v(J.size)+` / `+v(E.value.length),1)]),g.value.filterable?(p(),o(`div`,V,[l(y(w),{value:O.value,"onUpdate:value":n[1]||=e=>O.value=e,clearable:``,size:`small`,placeholder:g.value.filterPlaceholder,"input-props":{"aria-label":`搜索已选列表`}},{prefix:x(()=>[l(e,{name:`mdi:magnify`})]),_:1},8,[`value`,`placeholder`])])):a(`v-if`,!0),K.value.length?(p(),i(k,{key:1,items:K.value,checked:J,query:O.value,size:g.value.size,"virtual-scroll":g.value.virtualScroll,onCheck:oe},null,8,[`items`,`checked`,`query`,`size`,`virtual-scroll`])):(p(),o(`div`,H,v(g.value.targetEmptyText),1))])],2))}}),[[`__scopeId`,`data-v-65658ed2`]]);export{M as n,U as t};
|
package/dist/C_Tree.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import "./useEdgeInteraction.js";
|
|
|
3
3
|
import "./public.js";
|
|
4
4
|
import "./index4.vue.js";
|
|
5
5
|
import { C as TreeNodeData, D as TreeSlots, E as TreeRenderContext, O as TreeUpdateMeta, S as TreeNativeProps, T as TreeProps, _ as StatusType, b as TreeKey, d as _default, f as ActionConfig, g as StatusConfig, h as IconConfig, l as useTreeOperations, m as DropInfo, p as ButtonType, u as presetConfigs, v as TreeEmits, w as TreeOption, x as TreeMode, y as TreeExpose } from "./useTableQuery.js";
|
|
6
|
+
import "./useDraggableLayout.js";
|
|
6
7
|
import "./useDynamicFormState.js";
|
|
7
8
|
import { t as ComponentDensity } from "./density.js";
|
|
8
9
|
import "./index12.vue.js";
|
package/dist/C_Upload.css
CHANGED
|
@@ -285,7 +285,7 @@
|
|
|
285
285
|
.transition[data-v-705892ab]{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;}
|
|
286
286
|
.ease[data-v-705892ab]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
|
|
287
287
|
|
|
288
|
-
.c-upload[data-v-
|
|
288
|
+
.c-upload[data-v-58ca8e42] {
|
|
289
289
|
--c-upload-progress-bg: var(--body-color, #fff);
|
|
290
290
|
--c-upload-progress-border: var(--border-color, #e5e7eb);
|
|
291
291
|
--c-upload-progress-radius: 8px;
|
|
@@ -293,14 +293,14 @@
|
|
|
293
293
|
--c-upload-label-size: 12px;
|
|
294
294
|
width: 100%;
|
|
295
295
|
}
|
|
296
|
-
.c-upload__total-progress[data-v-
|
|
296
|
+
.c-upload__total-progress[data-v-58ca8e42] {
|
|
297
297
|
margin-top: 12px;
|
|
298
298
|
padding: 8px 12px;
|
|
299
299
|
border-radius: var(--c-upload-progress-radius);
|
|
300
300
|
background: var(--c-upload-progress-bg);
|
|
301
301
|
border: 1px solid var(--c-upload-progress-border);
|
|
302
302
|
}
|
|
303
|
-
.c-upload__total-label[data-v-
|
|
303
|
+
.c-upload__total-label[data-v-58ca8e42] {
|
|
304
304
|
display: flex;
|
|
305
305
|
justify-content: space-between;
|
|
306
306
|
margin-bottom: 6px;
|
|
@@ -309,5 +309,5 @@
|
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
/* layer: default */
|
|
312
|
-
.flex[data-v-
|
|
313
|
-
.border[data-v-
|
|
312
|
+
.flex[data-v-58ca8e42]{display:flex;}
|
|
313
|
+
.border[data-v-58ca8e42]{border-width:1px;}
|
package/dist/C_Upload2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-705892ab`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-04f26012`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-32d39ae9`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-7674f0c8`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});
|
|
1
|
+
const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-705892ab`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-04f26012`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-32d39ae9`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1,o(`change`,S())},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-58ca8e42`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});
|
package/dist/C_Upload2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,TransitionGroup 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,normalizeClass as f,onBeforeUnmount as p,onMounted as m,openBlock as h,reactive as g,readonly as _,ref as v,renderList as y,renderSlot as b,toDisplayString as x,unref as S,watch as C,withCtx as w,withKeys as T,withModifiers as E}from"vue";import{NButton as D,NEllipsis as O,NProgress as k,NTag as A}from"naive-ui";import j from"spark-md5";const M=2*1024*1024,N={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},P={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},F={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function I(e){for(let[t,n]of Object.entries(F))if(t!==`default`&&e.startsWith(t))return n;return F.default}function L(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const R=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function z(e){let t=v(0),n=v(0),r=i(()=>t.value>0);async function a(r,i){t.value+=1,n.value=0,i?.(0);let a=new j.ArrayBuffer,o=Math.max(1,Math.trunc(Number(e.value)||1)),s=Math.max(1,Math.ceil(r.size/o));try{if(r.size===0)return a.append(new ArrayBuffer(0)),n.value=100,i?.(100),a.end();for(let e=0;e<s;e+=1){let t=e*o,c=await r.slice(t,t+o).arrayBuffer();a.append(c),n.value=Math.round((e+1)/s*100),i?.(n.value),await R()}return a.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:r,hashProgress:_(n),calculateHash:a}}function B(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):V(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function V(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function H(e){return e instanceof Error?e:Error(String(e))}function U(e){let t=[],n=v(0),r=new Map,i=()=>{n.value=r.size},a=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function o(){for(;r.size<a()&&t.length>0;){let n=t.shift(),{file:a}=n;if(!a.raw||r.has(a.uid))continue;let s=!1,c=e=>{s||(s=!0,r.delete(a.uid),i(),e?.error?n.onError(a.uid,e.error):e&&`response`in e&&n.onSuccess(a.uid,e.response),o())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:a.raw,filename:a.name,onProgress:e=>n.onProgress(a.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};r.set(a.uid,{abort:()=>void 0,settle:c}),i();try{let t=e.customRequest?.value?e.customRequest.value(l):W(l),n=r.get(a.uid);n&&(n.abort=t.abort)}catch(e){c({error:H(e)})}}}function s(e,n,r,i){c(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),o()}function c(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=r.get(e);if(n){n.settle();try{n.abort()}catch{}}}function l(){t.length=0;let e=[...r.values()];r.clear(),i(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return C(e.concurrency,o),{activeCount:_(n),enqueue:s,abort:c,abortAll:l}}function W(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function G(e){let t=i(()=>e.action??``),n=i(()=>e.headers??{}),r=i(()=>e.data??{}),a=i(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:M}),o=i(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),s=i(()=>e.customRequest),c=i(()=>e.instantCheck),l=i(()=>e.uploadedChunksQuery),u=i(()=>e.mergeChunks),d=v((e.defaultFileList??[]).map(e=>({...e}))),f=g(new Set),m=new Map,h=new Set,{hashing:_,hashProgress:y,calculateHash:b}=z(a),x=B({chunkSize:a,concurrency:o,action:t,headers:n,data:r,customRequest:s,uploadedChunksQuery:l,mergeChunks:u}),S=U({concurrency:o,action:t,headers:n,data:r,customRequest:s}),C=i(()=>{let e=d.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function w(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function T(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return h.add(t),t}}function E(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&d.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:w(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:T(r)};n.push(t)}return d.value.push(...n),n}function D(e,t){let n=d.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function O(e){m.set(e,Symbol(e)),x.abortUpload(e),S.abort(e),f.delete(e);let t=d.value.findIndex(t=>t.uid===e);if(t!==-1){let e=d.value[t];j(e.thumbUrl),d.value.splice(t,1)}}function k(){x.abortAll(),S.abortAll(),f.clear(),d.value.forEach(e=>{j(e.thumbUrl)}),d.value=[],m.clear()}async function A(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function j(e){!e||!h.has(e)||(URL.revokeObjectURL(e),h.delete(e))}function N(e,t){return m.get(e)===t&&!f.has(e)&&d.value.some(t=>t.uid===e)}function P(e,t){return b(e.raw,n=>{N(e.uid,t)&&D(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);m.set(n.uid,r),D(n.uid,{status:`validating`,error:void 0});let i;try{i=await A(n.raw)}catch(e){N(n.uid,r)&&D(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){D(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(j(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:T(i)})),!s.value&&!t.value.trim()){D(n.uid,{status:`error`,error:`未配置上传地址`});return}if(c.value&&!n.hash){D(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;D(n.uid,{hash:e});let t=await c.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){D(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){D(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;D(e.uid,{hash:r})}catch{N(e.uid,t)&&D(e.uid,{status:`error`,error:`Hash 计算失败`});return}}D(e.uid,{status:`uploading`,percent:0}),await x.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);D(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&D(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&D(e.uid,{status:`error`,error:n.message})},isPaused:()=>f.has(e.uid)})}function L(e,t){D(e.uid,{status:`uploading`,percent:0}),S.enqueue(e,(e,n)=>{N(e,t)&&D(e,{percent:n})},(e,n)=>{N(e,t)&&D(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&D(e,{status:`error`,error:n.message})})}function R(){d.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function V(){d.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(f.add(e.uid),m.set(e.uid,Symbol(e.uid)),x.abortUpload(e.uid),S.abort(e.uid),D(e.uid,{status:`paused`}))})}function H(){d.value.forEach(e=>{e.status===`paused`&&(f.delete(e.uid),D(e.uid,{status:`pending`}))}),R()}function W(e){let t=d.value.find(t=>t.uid===e);t&&t.status===`error`&&(D(e,{status:`pending`,percent:0,error:void 0}),F(t))}function G(){return d.value.filter(e=>e.status===`success`||e.status===`instant`)}return p(()=>{x.abortAll(),S.abortAll(),m.clear(),d.value.forEach(e=>{j(e.thumbUrl)})}),{fileList:d,totalPercent:C,hashing:_,hashProgress:y,addFiles:E,removeFile:O,clearAll:k,startUpload:R,pauseAll:V,resumeAll:H,retryFile:W,processFile:F,getSuccessList:G}}function K(e,t,n,r,i){let a=v(!1),o=null,s=!1;function c(e){t.value&&(e.preventDefault(),a.value=!0)}function l(e){t.value&&(e.preventDefault(),a.value=!0)}function u(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(a.value=!1)}async function d(e){if(!t.value)return;e.preventDefault(),a.value=!1;let n=e.dataTransfer?.items;if(!n)return;let o=await ee(n,e.dataTransfer);if(s||!t.value)return;let c=J(o,r.value);c.length>0&&i(c)}function f(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let a=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&a.push(e)}}let o=J(a,r.value);o.length>0&&(e.preventDefault(),i(o))}function h(){let t=e.value;!t||o===t||(o=t,t.addEventListener(`dragenter`,c),t.addEventListener(`dragover`,l),t.addEventListener(`dragleave`,u),t.addEventListener(`drop`,d),n.value&&t.addEventListener(`paste`,f))}function g(){let e=o;e&&(e.removeEventListener(`dragenter`,c),e.removeEventListener(`dragover`,l),e.removeEventListener(`dragleave`,u),e.removeEventListener(`drop`,d)),e?.removeEventListener(`paste`,f),o=null}return m(()=>{s=!1,h()}),p(()=>{s=!0,g()}),C([e,t,n],()=>{g(),h()}),{isDragOver:_(a)}}async function ee(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(q))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function q(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(q))).flat()}return[]}function J(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const Y=[`tabindex`,`aria-disabled`,`onKeydown`],X=[`accept`,`multiple`,`webkitdirectory`,`disabled`],Z={class:`upload-area__default`},Q={class:`upload-area__text`},te={key:0},ne={key:1},re={key:0,class:`upload-area__tip`};var ie=t(d({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(t,{expose:r,emit:a}){let d=t,p=a,m=v(),g=v(),{isDragOver:_}=K(m,i(()=>d.draggable&&!d.disabled),i(()=>d.pasteable&&!d.disabled),i(()=>d.accept),e=>p(`files`,e));function y(){d.disabled||g.value?.click()}function C(e){let t=e.target,n=d.disabled?[]:J(Array.from(t.files??[]),d.accept);n.length>0&&p(`files`,n),t.value=``}return r({triggerSelect:y}),(r,i)=>(h(),s(`div`,{ref_key:`areaRef`,ref:m,class:f([`upload-area`,{"upload-area--drag-over":S(_),"upload-area--disabled":t.disabled}]),role:`button`,tabindex:t.disabled?-1:0,"aria-disabled":t.disabled,onClick:y,onKeydown:[T(E(y,[`prevent`]),[`enter`]),T(E(y,[`prevent`]),[`space`])]},[c(`input`,{ref_key:`inputRef`,ref:g,type:`file`,class:`upload-area__input`,accept:t.accept,multiple:t.multiple,webkitdirectory:t.directory||void 0,disabled:t.disabled,onClick:i[0]||=E(()=>{},[`stop`]),onChange:C},null,40,X),b(r.$slots,`default`,{},()=>[c(`div`,Z,[u(e,{name:S(_)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),c(`div`,Q,[S(_)?(h(),s(`span`,te,`释放文件到此处`)):(h(),s(`span`,ne,[i[4]||=l(` 点击或拖拽文件到此区域上传 `,-1),t.pasteable?(h(),s(n,{key:0},[i[1]||=l(` ,支持 `,-1),i[2]||=c(`kbd`,null,`Ctrl+V`,-1),i[3]||=l(` 粘贴 `,-1)],64)):o(`v-if`,!0)]))]),t.tip?(h(),s(`div`,re,x(t.tip),1)):o(`v-if`,!0)])],!0)],42,Y))}}),[[`__scopeId`,`data-v-705892ab`]]);const ae={class:`file-list__thumb`},oe=[`src`,`alt`],se={class:`file-list__info`},ce={class:`file-list__name`},le={class:`file-list__meta`},ue={class:`file-list__size`},de={key:0,class:`file-list__instant`},fe={key:1,class:`file-list__chunk-info`},pe={key:2,class:`file-list__error`},me={class:`file-list__actions`};var he=t(d({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(t,{emit:i}){let d=i;return(i,p)=>(h(),a(r,{name:`file-list`,tag:`div`,class:`file-list`},{default:w(()=>[(h(!0),s(n,null,y(t.fileList,n=>(h(),s(`div`,{key:n.uid,class:f([`file-list__item`,`file-list__item--${n.status}`])},[o(` 缩略图 / 图标 `),c(`div`,ae,[t.showThumbnail&&n.thumbUrl?(h(),s(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,oe)):(h(),a(e,{key:1,name:S(I)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),o(` 文件信息 `),c(`div`,se,[c(`div`,ce,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(n.name),1)]),_:2},1024)]),c(`div`,le,[c(`span`,ue,x(S(L)(n.size)),1),u(S(A),{type:S(P)[n.status]||`default`,size:`tiny`,bordered:!1},{default:w(()=>[l(x(S(N)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?(h(),s(`span`,de,` ⚡ `)):o(`v-if`,!0)]),o(` 进度条 `),n.status===`uploading`||n.status===`hashing`?(h(),a(S(k),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):o(`v-if`,!0),o(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?(h(),s(`div`,fe,` 分片 `+x(n.chunkProgress.uploadedChunks)+`/`+x(n.chunkProgress.totalChunks),1)):o(`v-if`,!0),o(` 错误信息 `),n.status===`error`&&n.error?(h(),s(`div`,pe,x(n.error),1)):o(`v-if`,!0)]),o(` 操作按钮 `),c(`div`,me,[n.status===`error`?(h(),a(S(D),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>d(`retry`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>d(`remove`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}}),[[`__scopeId`,`data-v-04f26012`]]);const ge={key:0,class:`image-preview`},_e=[`src`,`alt`],$={class:`image-preview__overlay`},ve={key:0,class:`image-preview__progress`},ye={class:`image-preview__actions`},be={class:`image-preview__name`};var xe=t(d({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(t,{emit:r}){let d=t,p=r,m=i(()=>d.fileList.filter(e=>e.type?.startsWith(`image/`)));return(t,r)=>m.value.length>0?(h(),s(`div`,ge,[(h(!0),s(n,null,y(m.value,t=>(h(),s(`div`,{key:t.uid,class:f([`image-preview__item`,`image-preview__item--${t.status}`])},[t.thumbUrl?(h(),s(`img`,{key:0,src:t.thumbUrl,alt:t.name,class:`image-preview__img`},null,8,_e)):o(`v-if`,!0),o(` 遮罩层 `),c(`div`,$,[o(` 上传中进度 `),t.status===`uploading`||t.status===`hashing`?(h(),s(`div`,ve,[u(S(k),{type:`circle`,percentage:t.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):t.status===`success`||t.status===`instant`?(h(),s(n,{key:1},[o(` 状态图标 `),u(e,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):t.status===`error`?(h(),a(e,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):o(`v-if`,!0),o(` 操作 `),c(`div`,ye,[t.status===`error`?(h(),a(S(D),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:e=>p(`retry`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:e=>p(`remove`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),o(` 文件名 `),c(`div`,be,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(t.name),1)]),_:2},1024)])],2))),128))])):o(`v-if`,!0)}}),[[`__scopeId`,`data-v-32d39ae9`]]);const Se={class:`c-upload`},Ce={key:0,class:`c-upload__total-progress`},we={class:`c-upload__total-label`};var Te=t(d({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:M},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:r}){let l=e,d=r,f=v(),{fileList:p,totalPercent:m,addFiles:g,removeFile:_,clearAll:y,startUpload:T,pauseAll:E,resumeAll:D,retryFile:O,processFile:A,getSuccessList:j}=G(l),M=i(()=>p.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),N=e=>({...e}),P=()=>p.value.map(N);function F(e){let t=Math.max(0,Math.trunc(Number(l.maxCount)||0));if(t>0&&p.value.length+e.length>t){d(`exceed`,e,P());let n=t-p.value.length;if(n<=0)return;e=e.slice(0,n)}let n=g(e);d(`change`,P()),n.forEach(e=>void A(e))}function I(e){let t=p.value.find(t=>t.uid===e);t&&(d(`remove`,N(t)),_(e),d(`change`,P()))}function L(e){O(e)}let R=new Map,z=!1;return C(p,e=>{let t=new Set(e.map(e=>e.uid));R.forEach((e,n)=>{t.has(n)||R.delete(n)}),e.forEach(e=>{let t=R.get(e.uid);t&&t.percent!==e.percent&&d(`progress`,N(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&d(`success`,N(e),e.response),t&&t.status!==`error`&&e.status===`error`&&d(`error`,N(e),Error(e.error||`上传失败`)),R.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(z||d(`finish`,P()),z=!0):z=!1},{deep:!0}),t({selectFiles:()=>f.value?.triggerSelect(),startUpload:T,pauseAll:E,resumeAll:D,clearAll:()=>{y(),d(`change`,P())},removeFile:e=>{I(e)},retryFile:O,getFileList:P,getSuccessList:()=>j().map(N),get totalPercent(){return m.value}}),(e,t)=>(h(),s(`div`,Se,[o(` 上传区域 `),u(ie,{ref_key:`uploadAreaRef`,ref:f,accept:l.accept,multiple:l.multiple,directory:l.directory,disabled:l.disabled,draggable:l.draggable,pasteable:l.pasteable,tip:l.tip,onFiles:F},{default:w(()=>[b(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),o(` 总进度条 `),M.value?(h(),s(`div`,Ce,[c(`div`,we,[t[0]||=c(`span`,null,`总进度`,-1),c(`span`,null,x(S(m))+`%`,1)]),u(S(k),{percentage:S(m),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):o(`v-if`,!0),o(` 图片预览模式 `),l.listType===`image`?(h(),a(xe,{key:1,"file-list":S(p),onRemove:I,onRetry:L},null,8,[`file-list`])):l.showFileList&&S(p).length>0?(h(),s(n,{key:2},[o(` 文件列表模式 `),u(he,{"file-list":S(p),"show-thumbnail":l.showThumbnail,onRemove:I,onRetry:L},null,8,[`file-list`,`show-thumbnail`])],2112)):o(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-7674f0c8`]]);export{B as a,I as c,U as i,K as n,z as o,G as r,L as s,Te as t};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,TransitionGroup 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,normalizeClass as f,onBeforeUnmount as p,onMounted as m,openBlock as h,reactive as g,readonly as _,ref as v,renderList as y,renderSlot as b,toDisplayString as x,unref as S,watch as C,withCtx as w,withKeys as T,withModifiers as E}from"vue";import{NButton as D,NEllipsis as O,NProgress as k,NTag as A}from"naive-ui";import j from"spark-md5";const M=2*1024*1024,N={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},P={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},F={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function I(e){for(let[t,n]of Object.entries(F))if(t!==`default`&&e.startsWith(t))return n;return F.default}function L(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const R=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function z(e){let t=v(0),n=v(0),r=i(()=>t.value>0);async function a(r,i){t.value+=1,n.value=0,i?.(0);let a=new j.ArrayBuffer,o=Math.max(1,Math.trunc(Number(e.value)||1)),s=Math.max(1,Math.ceil(r.size/o));try{if(r.size===0)return a.append(new ArrayBuffer(0)),n.value=100,i?.(100),a.end();for(let e=0;e<s;e+=1){let t=e*o,c=await r.slice(t,t+o).arrayBuffer();a.append(c),n.value=Math.round((e+1)/s*100),i?.(n.value),await R()}return a.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:r,hashProgress:_(n),calculateHash:a}}function B(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):V(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function V(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function H(e){return e instanceof Error?e:Error(String(e))}function U(e){let t=[],n=v(0),r=new Map,i=()=>{n.value=r.size},a=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function o(){for(;r.size<a()&&t.length>0;){let n=t.shift(),{file:a}=n;if(!a.raw||r.has(a.uid))continue;let s=!1,c=e=>{s||(s=!0,r.delete(a.uid),i(),e?.error?n.onError(a.uid,e.error):e&&`response`in e&&n.onSuccess(a.uid,e.response),o())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:a.raw,filename:a.name,onProgress:e=>n.onProgress(a.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};r.set(a.uid,{abort:()=>void 0,settle:c}),i();try{let t=e.customRequest?.value?e.customRequest.value(l):W(l),n=r.get(a.uid);n&&(n.abort=t.abort)}catch(e){c({error:H(e)})}}}function s(e,n,r,i){c(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),o()}function c(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=r.get(e);if(n){n.settle();try{n.abort()}catch{}}}function l(){t.length=0;let e=[...r.values()];r.clear(),i(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return C(e.concurrency,o),{activeCount:_(n),enqueue:s,abort:c,abortAll:l}}function W(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function G(e){let t=i(()=>e.action??``),n=i(()=>e.headers??{}),r=i(()=>e.data??{}),a=i(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:M}),o=i(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),s=i(()=>e.customRequest),c=i(()=>e.instantCheck),l=i(()=>e.uploadedChunksQuery),u=i(()=>e.mergeChunks),d=v((e.defaultFileList??[]).map(e=>({...e}))),f=g(new Set),m=new Map,h=new Set,{hashing:_,hashProgress:y,calculateHash:b}=z(a),x=B({chunkSize:a,concurrency:o,action:t,headers:n,data:r,customRequest:s,uploadedChunksQuery:l,mergeChunks:u}),S=U({concurrency:o,action:t,headers:n,data:r,customRequest:s}),C=i(()=>{let e=d.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function w(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function T(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return h.add(t),t}}function E(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&d.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:w(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:T(r)};n.push(t)}return d.value.push(...n),n}function D(e,t){let n=d.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function O(e){m.set(e,Symbol(e)),x.abortUpload(e),S.abort(e),f.delete(e);let t=d.value.findIndex(t=>t.uid===e);if(t!==-1){let e=d.value[t];j(e.thumbUrl),d.value.splice(t,1)}}function k(){x.abortAll(),S.abortAll(),f.clear(),d.value.forEach(e=>{j(e.thumbUrl)}),d.value=[],m.clear()}async function A(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function j(e){!e||!h.has(e)||(URL.revokeObjectURL(e),h.delete(e))}function N(e,t){return m.get(e)===t&&!f.has(e)&&d.value.some(t=>t.uid===e)}function P(e,t){return b(e.raw,n=>{N(e.uid,t)&&D(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);m.set(n.uid,r),D(n.uid,{status:`validating`,error:void 0});let i;try{i=await A(n.raw)}catch(e){N(n.uid,r)&&D(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){D(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(j(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:T(i)})),!s.value&&!t.value.trim()){D(n.uid,{status:`error`,error:`未配置上传地址`});return}if(c.value&&!n.hash){D(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;D(n.uid,{hash:e});let t=await c.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){D(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){D(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;D(e.uid,{hash:r})}catch{N(e.uid,t)&&D(e.uid,{status:`error`,error:`Hash 计算失败`});return}}D(e.uid,{status:`uploading`,percent:0}),await x.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);D(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&D(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&D(e.uid,{status:`error`,error:n.message})},isPaused:()=>f.has(e.uid)})}function L(e,t){D(e.uid,{status:`uploading`,percent:0}),S.enqueue(e,(e,n)=>{N(e,t)&&D(e,{percent:n})},(e,n)=>{N(e,t)&&D(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&D(e,{status:`error`,error:n.message})})}function R(){d.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function V(){d.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(f.add(e.uid),m.set(e.uid,Symbol(e.uid)),x.abortUpload(e.uid),S.abort(e.uid),D(e.uid,{status:`paused`}))})}function H(){d.value.forEach(e=>{e.status===`paused`&&(f.delete(e.uid),D(e.uid,{status:`pending`}))}),R()}function W(e){let t=d.value.find(t=>t.uid===e);t&&t.status===`error`&&(D(e,{status:`pending`,percent:0,error:void 0}),F(t))}function G(){return d.value.filter(e=>e.status===`success`||e.status===`instant`)}return p(()=>{x.abortAll(),S.abortAll(),m.clear(),d.value.forEach(e=>{j(e.thumbUrl)})}),{fileList:d,totalPercent:C,hashing:_,hashProgress:y,addFiles:E,removeFile:O,clearAll:k,startUpload:R,pauseAll:V,resumeAll:H,retryFile:W,processFile:F,getSuccessList:G}}function K(e,t,n,r,i){let a=v(!1),o=null,s=!1;function c(e){t.value&&(e.preventDefault(),a.value=!0)}function l(e){t.value&&(e.preventDefault(),a.value=!0)}function u(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(a.value=!1)}async function d(e){if(!t.value)return;e.preventDefault(),a.value=!1;let n=e.dataTransfer?.items;if(!n)return;let o=await ee(n,e.dataTransfer);if(s||!t.value)return;let c=J(o,r.value);c.length>0&&i(c)}function f(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let a=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&a.push(e)}}let o=J(a,r.value);o.length>0&&(e.preventDefault(),i(o))}function h(){let t=e.value;!t||o===t||(o=t,t.addEventListener(`dragenter`,c),t.addEventListener(`dragover`,l),t.addEventListener(`dragleave`,u),t.addEventListener(`drop`,d),n.value&&t.addEventListener(`paste`,f))}function g(){let e=o;e&&(e.removeEventListener(`dragenter`,c),e.removeEventListener(`dragover`,l),e.removeEventListener(`dragleave`,u),e.removeEventListener(`drop`,d)),e?.removeEventListener(`paste`,f),o=null}return m(()=>{s=!1,h()}),p(()=>{s=!0,g()}),C([e,t,n],()=>{g(),h()}),{isDragOver:_(a)}}async function ee(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(q))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function q(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(q))).flat()}return[]}function J(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const Y=[`tabindex`,`aria-disabled`,`onKeydown`],X=[`accept`,`multiple`,`webkitdirectory`,`disabled`],Z={class:`upload-area__default`},Q={class:`upload-area__text`},te={key:0},ne={key:1},re={key:0,class:`upload-area__tip`};var ie=t(d({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(t,{expose:r,emit:a}){let d=t,p=a,m=v(),g=v(),{isDragOver:_}=K(m,i(()=>d.draggable&&!d.disabled),i(()=>d.pasteable&&!d.disabled),i(()=>d.accept),e=>p(`files`,e));function y(){d.disabled||g.value?.click()}function C(e){let t=e.target,n=d.disabled?[]:J(Array.from(t.files??[]),d.accept);n.length>0&&p(`files`,n),t.value=``}return r({triggerSelect:y}),(r,i)=>(h(),s(`div`,{ref_key:`areaRef`,ref:m,class:f([`upload-area`,{"upload-area--drag-over":S(_),"upload-area--disabled":t.disabled}]),role:`button`,tabindex:t.disabled?-1:0,"aria-disabled":t.disabled,onClick:y,onKeydown:[T(E(y,[`prevent`]),[`enter`]),T(E(y,[`prevent`]),[`space`])]},[c(`input`,{ref_key:`inputRef`,ref:g,type:`file`,class:`upload-area__input`,accept:t.accept,multiple:t.multiple,webkitdirectory:t.directory||void 0,disabled:t.disabled,onClick:i[0]||=E(()=>{},[`stop`]),onChange:C},null,40,X),b(r.$slots,`default`,{},()=>[c(`div`,Z,[u(e,{name:S(_)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),c(`div`,Q,[S(_)?(h(),s(`span`,te,`释放文件到此处`)):(h(),s(`span`,ne,[i[4]||=l(` 点击或拖拽文件到此区域上传 `,-1),t.pasteable?(h(),s(n,{key:0},[i[1]||=l(` ,支持 `,-1),i[2]||=c(`kbd`,null,`Ctrl+V`,-1),i[3]||=l(` 粘贴 `,-1)],64)):o(`v-if`,!0)]))]),t.tip?(h(),s(`div`,re,x(t.tip),1)):o(`v-if`,!0)])],!0)],42,Y))}}),[[`__scopeId`,`data-v-705892ab`]]);const ae={class:`file-list__thumb`},oe=[`src`,`alt`],se={class:`file-list__info`},ce={class:`file-list__name`},le={class:`file-list__meta`},ue={class:`file-list__size`},de={key:0,class:`file-list__instant`},fe={key:1,class:`file-list__chunk-info`},pe={key:2,class:`file-list__error`},me={class:`file-list__actions`};var he=t(d({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(t,{emit:i}){let d=i;return(i,p)=>(h(),a(r,{name:`file-list`,tag:`div`,class:`file-list`},{default:w(()=>[(h(!0),s(n,null,y(t.fileList,n=>(h(),s(`div`,{key:n.uid,class:f([`file-list__item`,`file-list__item--${n.status}`])},[o(` 缩略图 / 图标 `),c(`div`,ae,[t.showThumbnail&&n.thumbUrl?(h(),s(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,oe)):(h(),a(e,{key:1,name:S(I)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),o(` 文件信息 `),c(`div`,se,[c(`div`,ce,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(n.name),1)]),_:2},1024)]),c(`div`,le,[c(`span`,ue,x(S(L)(n.size)),1),u(S(A),{type:S(P)[n.status]||`default`,size:`tiny`,bordered:!1},{default:w(()=>[l(x(S(N)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?(h(),s(`span`,de,` ⚡ `)):o(`v-if`,!0)]),o(` 进度条 `),n.status===`uploading`||n.status===`hashing`?(h(),a(S(k),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):o(`v-if`,!0),o(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?(h(),s(`div`,fe,` 分片 `+x(n.chunkProgress.uploadedChunks)+`/`+x(n.chunkProgress.totalChunks),1)):o(`v-if`,!0),o(` 错误信息 `),n.status===`error`&&n.error?(h(),s(`div`,pe,x(n.error),1)):o(`v-if`,!0)]),o(` 操作按钮 `),c(`div`,me,[n.status===`error`?(h(),a(S(D),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>d(`retry`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>d(`remove`,n.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}}),[[`__scopeId`,`data-v-04f26012`]]);const ge={key:0,class:`image-preview`},_e=[`src`,`alt`],$={class:`image-preview__overlay`},ve={key:0,class:`image-preview__progress`},ye={class:`image-preview__actions`},be={class:`image-preview__name`};var xe=t(d({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(t,{emit:r}){let d=t,p=r,m=i(()=>d.fileList.filter(e=>e.type?.startsWith(`image/`)));return(t,r)=>m.value.length>0?(h(),s(`div`,ge,[(h(!0),s(n,null,y(m.value,t=>(h(),s(`div`,{key:t.uid,class:f([`image-preview__item`,`image-preview__item--${t.status}`])},[t.thumbUrl?(h(),s(`img`,{key:0,src:t.thumbUrl,alt:t.name,class:`image-preview__img`},null,8,_e)):o(`v-if`,!0),o(` 遮罩层 `),c(`div`,$,[o(` 上传中进度 `),t.status===`uploading`||t.status===`hashing`?(h(),s(`div`,ve,[u(S(k),{type:`circle`,percentage:t.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):t.status===`success`||t.status===`instant`?(h(),s(n,{key:1},[o(` 状态图标 `),u(e,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):t.status===`error`?(h(),a(e,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):o(`v-if`,!0),o(` 操作 `),c(`div`,ye,[t.status===`error`?(h(),a(S(D),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:e=>p(`retry`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):o(`v-if`,!0),u(S(D),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:e=>p(`remove`,t.uid)},{icon:w(()=>[u(e,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),o(` 文件名 `),c(`div`,be,[u(S(O),{"line-clamp":1},{default:w(()=>[l(x(t.name),1)]),_:2},1024)])],2))),128))])):o(`v-if`,!0)}}),[[`__scopeId`,`data-v-32d39ae9`]]);const Se={class:`c-upload`},Ce={key:0,class:`c-upload__total-progress`},we={class:`c-upload__total-label`};var Te=t(d({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:M},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:r}){let l=e,d=r,f=v(),{fileList:p,totalPercent:m,addFiles:g,removeFile:_,clearAll:y,startUpload:T,pauseAll:E,resumeAll:D,retryFile:O,processFile:A,getSuccessList:j}=G(l),M=i(()=>p.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),N=e=>({...e}),P=()=>p.value.map(N);function F(e){let t=Math.max(0,Math.trunc(Number(l.maxCount)||0));if(t>0&&p.value.length+e.length>t){d(`exceed`,e,P());let n=t-p.value.length;if(n<=0)return;e=e.slice(0,n)}let n=g(e);d(`change`,P()),n.forEach(e=>void A(e))}function I(e){let t=p.value.find(t=>t.uid===e);t&&(d(`remove`,N(t)),_(e),d(`change`,P()))}function L(e){O(e)}let R=new Map,z=!1;return C(p,e=>{let t=new Set(e.map(e=>e.uid));R.forEach((e,n)=>{t.has(n)||R.delete(n)}),e.forEach(e=>{let t=R.get(e.uid);t&&t.percent!==e.percent&&d(`progress`,N(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&d(`success`,N(e),e.response),t&&t.status!==`error`&&e.status===`error`&&d(`error`,N(e),Error(e.error||`上传失败`)),R.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(z||d(`finish`,P()),z=!0):z=!1,d(`change`,P())},{deep:!0}),t({selectFiles:()=>f.value?.triggerSelect(),startUpload:T,pauseAll:E,resumeAll:D,clearAll:()=>{y(),d(`change`,P())},removeFile:e=>{I(e)},retryFile:O,getFileList:P,getSuccessList:()=>j().map(N),get totalPercent(){return m.value}}),(e,t)=>(h(),s(`div`,Se,[o(` 上传区域 `),u(ie,{ref_key:`uploadAreaRef`,ref:f,accept:l.accept,multiple:l.multiple,directory:l.directory,disabled:l.disabled,draggable:l.draggable,pasteable:l.pasteable,tip:l.tip,onFiles:F},{default:w(()=>[b(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),o(` 总进度条 `),M.value?(h(),s(`div`,Ce,[c(`div`,we,[t[0]||=c(`span`,null,`总进度`,-1),c(`span`,null,x(S(m))+`%`,1)]),u(S(k),{percentage:S(m),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):o(`v-if`,!0),o(` 图片预览模式 `),l.listType===`image`?(h(),a(xe,{key:1,"file-list":S(p),onRemove:I,onRetry:L},null,8,[`file-list`])):l.showFileList&&S(p).length>0?(h(),s(n,{key:2},[o(` 文件列表模式 `),u(he,{"file-list":S(p),"show-thumbnail":l.showThumbnail,onRemove:I,onRetry:L},null,8,[`file-list`,`show-thumbnail`])],2112)):o(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-58ca8e42`]]);export{B as a,I as c,U as i,K as n,z as o,G as r,L as s,Te as t};
|
package/dist/C_VideoPlayer.css
CHANGED
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
.px[data-v-9a051cb4]{padding-left:1rem;padding-right:1rem;}
|
|
343
343
|
|
|
344
344
|
/* C_VideoPlayer 组件样式 */
|
|
345
|
-
.c-video-player[data-v-
|
|
345
|
+
.c-video-player[data-v-11b6a582] {
|
|
346
346
|
position: relative;
|
|
347
347
|
width: 100%;
|
|
348
348
|
background: #000;
|
|
@@ -351,25 +351,25 @@
|
|
|
351
351
|
outline: none;
|
|
352
352
|
/* 覆盖 xgplayer v3 默认红色主题(倍速/清晰度选中项改蓝) */
|
|
353
353
|
}
|
|
354
|
-
.c-video-player[data-v-
|
|
355
|
-
.c-video-player[data-v-
|
|
356
|
-
.c-video-player[data-v-
|
|
354
|
+
.c-video-player[data-v-11b6a582] .xgplayer .xg-options-list li:hover,
|
|
355
|
+
.c-video-player[data-v-11b6a582] .xgplayer .xg-options-list li.selected,
|
|
356
|
+
.c-video-player[data-v-11b6a582] .xgplayer-mobile .xg-options-list li.selected {
|
|
357
357
|
color: #409eff !important;
|
|
358
358
|
}
|
|
359
|
-
.c-video-player[data-v-
|
|
359
|
+
.c-video-player[data-v-11b6a582] .xgplayer xg-trigger .time-preview .xg-cur {
|
|
360
360
|
color: #409eff !important;
|
|
361
361
|
}
|
|
362
|
-
.c-video-player[data-v-
|
|
362
|
+
.c-video-player[data-v-11b6a582] .xgplayer .xgplayer-progress-btn.active::before {
|
|
363
363
|
box-shadow: 0 0 3px rgba(64, 152, 255, 0.7) !important;
|
|
364
364
|
}
|
|
365
|
-
.c-video-player__container[data-v-
|
|
365
|
+
.c-video-player__container[data-v-11b6a582] {
|
|
366
366
|
width: 100%;
|
|
367
367
|
height: 100%;
|
|
368
368
|
}
|
|
369
|
-
.c-video-player[data-v-
|
|
369
|
+
.c-video-player[data-v-11b6a582] {
|
|
370
370
|
/* 小窗模式样式 */
|
|
371
371
|
}
|
|
372
|
-
.c-video-player.is-mini[data-v-
|
|
372
|
+
.c-video-player.is-mini[data-v-11b6a582] {
|
|
373
373
|
position: fixed;
|
|
374
374
|
right: 20px;
|
|
375
375
|
bottom: 20px;
|
|
@@ -380,7 +380,7 @@
|
|
|
380
380
|
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
|
|
381
381
|
transition: width 0.3s ease, height 0.3s ease;
|
|
382
382
|
}
|
|
383
|
-
.c-video-player__mini-close[data-v-
|
|
383
|
+
.c-video-player__mini-close[data-v-11b6a582] {
|
|
384
384
|
appearance: none;
|
|
385
385
|
border: 0;
|
|
386
386
|
position: absolute;
|
|
@@ -398,10 +398,10 @@
|
|
|
398
398
|
font-size: 12px;
|
|
399
399
|
z-index: 10;
|
|
400
400
|
}
|
|
401
|
-
.c-video-player__mini-close[data-v-
|
|
401
|
+
.c-video-player__mini-close[data-v-11b6a582]:hover {
|
|
402
402
|
background: rgba(0, 0, 0, 0.8);
|
|
403
403
|
}
|
|
404
|
-
.c-video-player__mini-back[data-v-
|
|
404
|
+
.c-video-player__mini-back[data-v-11b6a582] {
|
|
405
405
|
appearance: none;
|
|
406
406
|
border: 0;
|
|
407
407
|
position: absolute;
|
|
@@ -417,26 +417,26 @@
|
|
|
417
417
|
z-index: 10;
|
|
418
418
|
white-space: nowrap;
|
|
419
419
|
}
|
|
420
|
-
.c-video-player__mini-back[data-v-
|
|
420
|
+
.c-video-player__mini-back[data-v-11b6a582]:hover {
|
|
421
421
|
background: rgba(0, 0, 0, 0.8);
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
/* layer: shortcuts */
|
|
425
|
-
.container[data-v-
|
|
425
|
+
.container[data-v-11b6a582]{width:100%;}
|
|
426
426
|
@media (min-width: 640px){
|
|
427
|
-
.container[data-v-
|
|
427
|
+
.container[data-v-11b6a582]{max-width:640px;}
|
|
428
428
|
}
|
|
429
429
|
@media (min-width: 768px){
|
|
430
|
-
.container[data-v-
|
|
430
|
+
.container[data-v-11b6a582]{max-width:768px;}
|
|
431
431
|
}
|
|
432
432
|
@media (min-width: 1024px){
|
|
433
|
-
.container[data-v-
|
|
433
|
+
.container[data-v-11b6a582]{max-width:1024px;}
|
|
434
434
|
}
|
|
435
435
|
@media (min-width: 1280px){
|
|
436
|
-
.container[data-v-
|
|
436
|
+
.container[data-v-11b6a582]{max-width:1280px;}
|
|
437
437
|
}
|
|
438
438
|
@media (min-width: 1536px){
|
|
439
|
-
.container[data-v-
|
|
439
|
+
.container[data-v-11b6a582]{max-width:1536px;}
|
|
440
440
|
}
|
|
441
441
|
/* layer: default */
|
|
442
|
-
.block[data-v-
|
|
442
|
+
.block[data-v-11b6a582]{display:block;}
|