mirror of
https://github.com/ZeroCatDev/Classworks.git
synced 2026-08-12 17:40:32 +00:00
2 lines
6.5 KiB
JavaScript
2 lines
6.5 KiB
JavaScript
import{u as ge,b as O,c as G,d as ke,e as Fe,m as be}from"./VTextField-jDykTfh9.js";import{p as q,j as we,an as De,q as Ie,w as K,u as Ce,aB as Se,aE as Ve,aG as W,a5 as Be}from"./vendor-vuetify-KiFW-YAv.js";import{e as m,o as Ae,j as b,k as h,F as V,m as B,n as Pe,b as A,t as Re,I as Te,s as ze}from"./vendor-vue-Hxtt57UU.js";import{I as $e}from"./index-BvGH7GyK.js";import{V as je}from"./VChip-CyVmT8se.js";function Ee(){function e(o){var i,n;return[...((i=o.dataTransfer)==null?void 0:i.items)??[]].filter(s=>s.kind==="file").map(s=>s.webkitGetAsEntry()).filter(Boolean).length>0||[...((n=o.dataTransfer)==null?void 0:n.files)??[]].length>0}async function r(o){var n,s;const u=[],i=[...((n=o.dataTransfer)==null?void 0:n.items)??[]].filter(a=>a.kind==="file").map(a=>a.webkitGetAsEntry()).filter(Boolean);if(i.length)for(const a of i){const d=await U(a,_(".",a));u.push(...d.map(y=>y.file))}else u.push(...((s=o.dataTransfer)==null?void 0:s.files)??[]);return u}return{handleDrop:r,hasFilesOrFolders:e}}function U(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return new Promise((o,u)=>{e.isFile?e.file(n=>o([{file:n,path:r}]),u):e.isDirectory&&e.createReader().readEntries(async n=>{const s=[];for(const a of n)s.push(...await U(a,_(r,a)));o(s)})})}function _(e,r){return r.isDirectory?`${e}/${r.name}`:e}const Ne=q({filterByType:String},"file-accept");function xe(e){const r=m(()=>e.filterByType?Me(e.filterByType):null);function o(u){if(r.value){const i=u.filter(r.value);return{accepted:i,rejected:u.filter(n=>!i.includes(n))}}return{accepted:u,rejected:[]}}return{filterAccepted:o}}function Me(e){const r=e.split(",").map(n=>n.trim().toLowerCase()),o=r.filter(n=>n.startsWith(".")),u=r.filter(n=>n.endsWith("/*")),i=r.filter(n=>!o.includes(n)&&!u.includes(n));return n=>{var d,y;const s=((d=n.name.split(".").at(-1))==null?void 0:d.toLowerCase())??"",a=((y=n.type.split("/").at(0))==null?void 0:y.toLowerCase())??"";return i.includes(n.type)||o.includes(`.${s}`)||u.includes(`${a}/*`)}}const Le=q({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:e=>typeof e=="boolean"||[1e3,1024].includes(Number(e))},truncateLength:{type:[Number,String],default:22},...Be(be({prependIcon:"$file"}),["direction"]),modelValue:{type:[Array,Object],default:e=>e.multiple?[]:null,validator:e=>K(e).every(r=>r!=null&&typeof r=="object")},...Ne(),...Fe({clearable:!0})},"VFileInput"),Ue=we()({name:"VFileInput",inheritAttrs:!1,props:Le(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0,rejected:e=>!0},setup(e,r){let{attrs:o,emit:u,slots:i}=r;const{t:n}=De(),{filterAccepted:s}=xe(e),a=Ie(e,"modelValue",e.modelValue,t=>K(t),t=>!e.multiple&&Array.isArray(t)?t[0]:t),{isFocused:d,focus:y,blur:H}=ge(e),P=m(()=>typeof e.showSize!="boolean"?e.showSize:void 0),R=m(()=>(a.value??[]).reduce((t,l)=>{let{size:f=0}=l;return t+f},0)),T=m(()=>W(R.value,P.value)),w=m(()=>(a.value??[]).map(t=>{const{name:l="",size:f=0}=t,v=le(l);return e.showSize?`${v} (${W(f,P.value)})`:v})),J=m(()=>{var l;const t=((l=a.value)==null?void 0:l.length)??0;return e.showSize?n(e.counterSizeString,t,T.value):n(e.counterString,t)}),z=A(),$=A(),c=A(),Q=Re(()=>d.value||e.active),j=m(()=>["plain","underlined"].includes(e.variant)),k=ze(!1),{handleDrop:X,hasFilesOrFolders:Y}=Ee();function D(){var t;c.value!==document.activeElement&&((t=c.value)==null||t.focus()),d.value||y()}function Z(t){var l;(l=c.value)==null||l.click()}function ee(t){u("mousedown:control",t)}function te(t){var l;(l=c.value)==null||l.click(),u("click:control",t)}function ne(t){t.stopPropagation(),D(),Te(()=>{a.value=[],Ve(e["onClick:clear"],t)})}function le(t){if(t.length<Number(e.truncateLength))return t;const l=Math.floor((Number(e.truncateLength)-1)/2);return`${t.slice(0,l)}…${t.slice(t.length-l)}`}function ae(t){t.preventDefault(),t.stopImmediatePropagation(),k.value=!0}function ie(t){t.preventDefault(),k.value=!1}async function re(t){if(t.preventDefault(),t.stopImmediatePropagation(),k.value=!1,!c.value||!Y(t))return;const l=await X(t);E(l)}function oe(t){if(!(!t.target||t.repack))if(e.filterByType)E([...t.target.files]);else{const l=t.target;a.value=[...l.files??[]]}}function E(t){const l=new DataTransfer,{accepted:f,rejected:v}=s(t);v.length&&u("rejected",v);for(const C of f)l.items.add(C);c.value.files=l.files,a.value=[...l.files];const I=new Event("change",{bubbles:!0});I.repack=!0,c.value.dispatchEvent(I)}return Ae(a,t=>{(!Array.isArray(t)||!t.length)&&c.value&&(c.value.value="")}),Ce(()=>{var N;const t=!!(i.counter||e.counter),l=e.hideDetails!==!0&&!!(i.details||t&&(e.hideDetails===!1||(N=a.value)!=null&&N.length)),[f,v]=Se(o),{modelValue:I,...C}=O.filterProps(e),ue={...G.filterProps(e),"onClick:clear":ne},se=o.webkitdirectory!==void 0&&o.webkitdirectory!==!1,ce=o.accept?String(o.accept):void 0,de=se?void 0:e.filterByType??ce;return b(O,B({ref:z,modelValue:e.multiple?a.value:a.value[0],class:["v-file-input",{"v-file-input--chips":!!e.chips,"v-file-input--dragging":k.value,"v-file-input--hide":e.hideInput,"v-input--plain-underlined":j.value},e.class],style:e.style,"onClick:prepend":Z},f,C,{centerAffix:!j.value,focused:d.value}),{...i,default:S=>{let{id:F,isDisabled:g,isDirty:x,isReadonly:M,isValid:fe,hasDetails:ve}=S;return b(G,B({ref:$,prependIcon:e.prependIcon,onMousedown:ee,onClick:te,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},ue,{id:F.value,active:Q.value||x.value,dirty:x.value||e.dirty,disabled:g.value,focused:d.value,details:ve.value,error:fe.value===!1,onDragover:ae,onDrop:re}),{...i,default:pe=>{var L;let{props:{class:me,...ye},controlRef:he}=pe;return h(V,null,[h("input",B({ref:p=>c.value=he.value=p,type:"file",accept:de,readonly:M.value,disabled:g.value,multiple:e.multiple,name:e.name,onClick:p=>{p.stopPropagation(),M.value&&p.preventDefault(),D()},onChange:oe,onDragleave:ie,onFocus:D,onBlur:H},ye,v),null),h("div",{class:Pe(me)},[!!((L=a.value)!=null&&L.length)&&!e.hideInput&&(i.selection?i.selection({fileNames:w.value,totalBytes:R.value,totalBytesReadable:T.value}):e.chips?w.value.map(p=>b(je,{key:p,size:"small",text:p},null)):w.value.join(", "))])])}})},details:l?S=>{var F,g;return h(V,null,[(F=i.details)==null?void 0:F.call(i,S),t&&h(V,null,[h("span",null,null),b(ke,{active:!!((g=a.value)!=null&&g.length),value:J.value,disabled:e.disabled},i.counter)])])}:void 0})}),$e({},z,$,c)}});export{Ue as V};
|