@volverjs/ui-vue
Version:
@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.
2 lines (1 loc) • 21.7 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("@vueuse/core"),require("vuedraggable"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@vueuse/core","vuedraggable","@iconify/vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvInputFile=t(e.vue,e.core,e.Sortable,e.vue$1)}(this,function(e,t,o,l){"use strict";const a="add",n="edit",r="download",i={prefix:"normal"};var u=(e=>(e.local="local",e.session="session",e))(u||{}),s=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(s||{}),d=(e=>(e.before="before",e.after="after",e))(d||{}),c=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(c||{}),v=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(v||{});const f=Symbol.for("volver"),p=Symbol.for("buttonGroup"),m=Symbol.for("dropdownTrigger"),g=Symbol.for("dropdownAction"),b={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},y={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},h={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},k={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},S={disabled:{type:Boolean,default:!1}},B={required:{type:Boolean,default:!1}},L={active:{type:Boolean,default:!1}},w={current:{type:Boolean,default:!1}},V={pressed:{type:Boolean,default:!1}},A={label:{type:[String,Number],default:void 0}},C={readonly:{type:Boolean,default:!1}},$={modifiers:{type:[String,Array],default:void 0}},N={hintLabel:{type:String,default:""}},O={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:d.before,validation:e=>Object.values(d).includes(e)}},x={unselectable:{type:Boolean,default:!0}},_={id:[String,Number]};s.bottom;const I={..._,name:{type:String,required:!0}},P={...S,...A,...V,...L,...w,...b,type:{type:String,default:c.button,validator:e=>Object.values(c).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:v.button}};u.local;const R={...I,...$,...y,...h,...N,...A,...k,...C,...S,...B,...O,modelValue:{type:Object},progress:{type:[Number,String],default:void 0},placeholder:{type:String,default:void 0},accept:{type:String,default:"*"},multiple:{type:Boolean,default:!1},capture:{type:String,default:void 0,validation:e=>void 0===e||["user","environment"].includes(e)},max:{type:[Number,String],default:void 0},dropArea:{type:Boolean,default:!1},sortable:{type:Boolean,default:!1},labelAdd:{type:String,default:"Add file"},iconAdd:{type:[String,Object],default:a},labelReplace:{type:String,default:"Replace file"},iconReplace:{type:[String,Object],default:n},labelDownload:{type:String,default:"Downlaod file"},iconDownload:{type:[String,Object],default:r},labelRemove:{type:String,default:"Remove file"}};function j(e,t,o){return E(e,t)}function E(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){const o=Array.isArray(e),l=Array.isArray(t);let a,n,r;if(o&&l){if(n=e.length,n!==t.length)return!1;for(a=n;0!==a--;)if(!E(e[a],t[a]))return!1;return!0}if(o!==l)return!1;const i=e instanceof Date,u=t instanceof Date;if(i!==u)return!1;if(i&&u)return e.getTime()===t.getTime();const s=e instanceof RegExp,d=t instanceof RegExp;if(s!==d)return!1;if(s&&d)return e.toString()===t.toString();const c=Object.keys(e);if(n=c.length,n!==Object.keys(t).length)return!1;for(a=n;0!==a--;)if(!Object.prototype.hasOwnProperty.call(t,c[a]))return!1;for(a=n;0!==a--;)if(r=c[a],!E(e[r],t[r]))return!1;return!0}return Number.isNaN(e)&&Number.isNaN(t)}function D(e,t){if(null!=e&&t&&t.length)for(const o of t)if(j(e,o))return!0;return!1}function M(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e).join(" "):e}const F={...P,..._,...$,...x,...k,...O,iconPosition:{type:String,default:s.left,validator:e=>Object.values(s).includes(e)},loadingIcon:{type:String,default:"eos-icons:bubble-loading"},toggle:{type:Boolean,default:!1},value:{type:[String,Number,Boolean],default:void 0},uncheckedValue:{type:[String,Number,Boolean],default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0}};function T(t,o){const{group:l,isInGroup:a,getGroupOrLocalRef:n}=function(t){const o=e.inject(t,void 0),l=e.computed(()=>void 0!==o);return{group:o,isInGroup:l,getGroupOrLocalRef:function(t,l,a){const n=o?.[t];if(n)return e.computed({get:()=>n.value,set(e){n.value=e}});const r=e.toRef(l,t);return e.computed({get:()=>r.value,set(e){a&&a(`update:${t}`,e)}})}}}(p),{id:r,iconPosition:i,icon:u,label:s,pressed:d}=e.toRefs(t),c=n("modelValue",t,o),v=n("toggle",t),f=n("unselectable",t),m=e.computed(()=>l?.multiple.value??!1),g=e.computed(()=>{let e=t.modifiers,o=l?.modifiers.value;const a=new Set;return e&&(Array.isArray(e)||(e=e.split(" ")),e.forEach(e=>a.add(e))),o&&(Array.isArray(o)||(o=o.split(" ")),o.forEach(e=>a.add(e))),Array.from(a)}),b=e.computed(()=>Boolean(t.disabled||l?.disabled.value));return{group:l,isInGroup:a,modelValue:c,toggle:v,unselectable:f,multiple:m,modifiers:g,disabled:b,id:r,pressed:d,iconPosition:i,icon:u,label:s}}const z=P;function U(){return e.inject(f,void 0)}const q=e.defineComponent({name:"VvAction",props:z,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:l}){const a=t,n=l,r=e.getCurrentInstance(),i=U(),u=e.ref(null);o({$el:u});const{reference:s,bus:d,aria:c,expanded:f}=e.inject(m,{});e.watch(()=>u.value,e=>{s&&(s.value=e)});const p=e.computed(()=>a.pressed||f?.value),{role:b}=e.inject(g,{}),y=e.computed(()=>{switch(!0){case a.disabled:return v.button;case void 0!==a.to:return i?.nuxt?e.resolveComponent(v.nuxtLink):v.routerLink;case void 0!==a.href:return v.a;default:return a.defaultTag}}),h=e.computed(()=>{const e={...c?.value,ariaPressed:!!p.value||void 0,ariaLabel:a.ariaLabel,role:b?.value};switch(y.value){case v.a:return{...e,href:a.href,target:a.target,rel:a.rel};case v.routerLink:case v.nuxtLink:return{...e,to:a.to,target:a.target};case v.button:return{...e,type:a.type,disabled:a.disabled};default:return e}});function k(e){a.disabled?e.preventDefault():r?.vnode.props?.onClick?n("click",e):d?.emit("click",e)}function S(e){r?.vnode.props?.onMouseover?n("mouseover",e):d?.emit("mouseover",e)}function B(e){r?.vnode.props?.onMouseleave?n("mouseleave",e):d?.emit("mouseleave",e)}return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y)),e.mergeProps(e.unref(h),{ref_key:"element",ref:u,class:{active:t.active,pressed:e.unref(p),disabled:t.disabled,current:t.current},onClickPassive:k,onMouseoverPassive:S,onMouseleavePassive:B}),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.label),1)])]),_:3},16,["class"]))}});function G(t,o,l){return e.computed(()=>{const a={[t]:!0},n="string"==typeof o?.value?o.value.split(" "):o?.value;return n&&Array.isArray(n)&&n.forEach(e=>{e&&(a[`${t}--${e}`]=!0)}),l&&Object.keys(l.value).forEach(o=>{a[`${t}--${o}`]=e.unref(l.value[o])}),a})}const H=e.defineComponent({name:"VvIcon",props:e.mergeDefaults({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},i),setup(t){const o=t,a=e.computed(()=>"string"==typeof o.rotate?Number.parseFloat(o.rotate):o.rotate),n=e.ref(!0),r=U(),{modifiers:i}=e.toRefs(o),u=G("vv-icon",i),s=e.computed(()=>o.provider||r?.iconsProvider),d=e.computed(()=>{const e=o.name??"",t=`@${s.value}:${o.prefix}:${e}`;if(l.iconLoaded(t))return t;const a=r?.iconsCollections.find(t=>{const o=`@${s.value}:${t.prefix}:${e}`;return l.iconLoaded(o)});return a?`@${s.value}:${a.prefix}:${e}`:e});function c(e){const t=function(e){let t;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");t=(new e).window}return(t?new t.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),a=t?.innerHTML.trim()||"";t&&a&&l.addIcon(`@${s.value}:${o.prefix}:${o.name}`,{body:a,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return r&&o.src&&!l.iconLoaded(`@${s.value}:${o.prefix}:${o.name}`)&&(n.value=!1,r.fetchIcon(o.src).then(e=>{e&&(c(e),n.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),o.svg&&c(o.svg),(o,r)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(l.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:e.unref(a),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function J(t){return e.computed(()=>String(t?.value||e.useId()))}function W(t,o){const l=e.computed(()=>"string"==typeof t?.value?{name:t?.value}:t?.value),a=e.computed(()=>o?.value===d.before?l.value:void 0),n=e.computed(()=>o?.value===d.after?l.value:void 0),r=e.computed(()=>o?.value===s.left?l.value:void 0),i=e.computed(()=>o?.value===s.right?l.value:void 0),u=e.computed(()=>o?.value===s.top?l.value:void 0),c=e.computed(()=>o?.value===s.bottom?l.value:void 0);return{hasIcon:l,hasIconLeft:r,hasIconRight:i,hasIconTop:u,hasIconBottom:c,hasIconBefore:a,hasIconAfter:n}}const K={key:1,class:"vv-button__label"},Y={key:1,class:"vv-button__label"},Z=e.defineComponent({name:"VvButton",inheritAttrs:!1,props:F,emits:["update:modelValue"],setup(t,{expose:o,emit:l}){const a=t,n=l,r=e.useAttrs(),i=e.useSlots(),{id:u,modifiers:d,iconPosition:c,icon:v,label:f,modelValue:p,disabled:m,toggle:g,unselectable:b}=T(a,n),y=J(u),h=e.computed(()=>r?.name||y.value),k=e.ref(null);o({$el:e.computed(()=>k.value?.$el)});const S=e.computed(()=>g.value?Array.isArray(p.value)?D(h.value,p.value):j(h.value,p.value):a.pressed),B=G("vv-button",d,e.computed(()=>({reverse:[s.right,s.bottom].includes(c.value),column:[s.top,s.bottom].includes(c.value),"icon-only":Boolean(v?.value&&!f?.value&&!i.default)}))),{hasIcon:L}=W(v),w=e.computed(()=>void 0!==a.value?a.value:h.value),V=e.computed(()=>{if(g.value)return{onClick:A}});function A(){if(g.value){if(Array.isArray(p.value))return D(w.value,p.value)?void(b.value&&(p.value=p.value.filter(e=>e!==w.value))):void p.value.push(w.value);if(w.value===p.value&&b.value)return void(p.value=a.uncheckedValue);p.value=w.value}}return(t,o)=>(e.openBlock(),e.createBlock(q,e.mergeProps({...e.unref(r),...e.unref(V),disabled:e.unref(m),pressed:e.unref(S),active:t.active,type:t.type,to:t.to,href:t.href,target:t.target,rel:t.rel,ariaLabel:t.ariaLabel},{id:e.unref(y),ref_key:"element",ref:k,class:e.unref(B)}),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",{},()=>[t.loading?e.renderSlot(t.$slots,"loading",{key:0},()=>[t.loadingIcon?(e.openBlock(),e.createBlock(H,{key:0,class:"vv-button__loading-icon",name:t.loadingIcon},null,8,["name"])):e.createCommentVNode("v-if",!0),t.loadingLabel?(e.openBlock(),e.createElementBlock("span",K,e.toDisplayString(t.loadingLabel),1)):e.createCommentVNode("v-if",!0)]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.renderSlot(t.$slots,"before"),e.unref(L)?(e.openBlock(),e.createBlock(H,e.mergeProps({key:0},e.unref(L),{class:"vv-button__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.unref(f)?(e.openBlock(),e.createElementBlock("span",Y,[e.renderSlot(t.$slots,"label",{},()=>[e.createTextVNode(e.toDisplayString(e.unref(f)),1)])])):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"after")],64))])]),_:3},16,["id","class"]))}});const Q=["for"],X={class:"vv-input-file__preview"},ee=["src","alt"],te={class:"vv-input-file__wrapper"},oe=["id","readonly","disabled","required","placeholder","aria-describedby","aria-invalid","aria-errormessage","multiple","accept","capture","name"],le=["value"],ae=["onClick"],ne=["title","onClick"],re={class:"vv-input-file__item-name"},ie={class:"vv-input-file__item-info"},ue=["title","disabled","onClick"];return e.defineComponent({name:"VvInputFile",props:R,emits:["remove","download","update:modelValue"],setup(l,{emit:a}){const n=l,r=a,i=e.useSlots(),u=function(t,o,l){const a=U(),n=e.computed(()=>{if(a&&a.defaults.value?.[t])return a.defaults.value[t]});return e.computed(()=>{if(void 0===n.value)return l;const e=n.value,t=o,a=l;return Object.keys(t).reduce((o,l)=>{const n=a[l];if(o[l]=n,l in e){if(Array.isArray(t[l])){const a=t[l];a.length&&a[0]===n&&(o[l]=e[l])}if("function"==typeof t[l]&&(0,t[l])()===n&&(o[l]=e[l]),"object"==typeof t[l]){let a=t[l].default;"function"==typeof a&&(a=a()),"object"==typeof a?JSON.stringify(a)===JSON.stringify(n)&&(o[l]=e[l]):a===n&&(o[l]=e[l])}}return o},{})})}("VvInputFile",R,n),{modifiers:s,id:d,readonly:c,disabled:v,icon:f,iconPosition:p,iconDownload:m}=e.toRefs(n),g=J(d),b=e.computed(()=>`${g.value}-hint`),y=e.computed(()=>{if(!n.progress)return!1;const e="string"==typeof n.progress?Number.parseInt(n.progress):n.progress;return e>0&&e<100}),{hasIconBefore:h,hasIconAfter:k}=W(f,p),{hasIcon:S}=W(m),B=G("vv-input-file",s,e.computed(()=>({valid:!0===n.valid,invalid:!0===n.invalid,loading:n.loading&&!y.value,disabled:n.disabled,required:n.required,readonly:n.readonly,dragging:I.value,"icon-before":!!h.value,"icon-after":!!k.value,"drop-area":x.value}))),{HintSlot:L,hasHintLabelOrSlot:w,hasInvalidLabelOrSlot:V,hintSlotScope:A}=function(t,o){const l=e.computed(()=>e.isRef(t)?t.value:t),a=e.computed(()=>M(l.value.invalidLabel)),n=e.computed(()=>M(l.value.validLabel)),r=e.computed(()=>l.value.loadingLabel),i=e.computed(()=>l.value.hintLabel),u=e.computed(()=>Boolean(l.value.loading&&(o.loading||r.value))),s=e.computed(()=>!u.value&&Boolean(l.value.invalid&&(o.invalid||a.value))),d=e.computed(()=>!u.value&&!s.value&&Boolean(l.value.valid&&(o.valid||n.value))),c=e.computed(()=>!u.value&&!s.value&&!d.value&&Boolean(o.hint||i.value)),v=e.computed(()=>s.value||d.value||u.value||c.value),f=e.computed(()=>({modelValue:l.value.modelValue,valid:l.value.valid,invalid:l.value.invalid,loading:l.value.loading})),p=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:v,invalidLabel:a,validLabel:n,loadingLabel:r,hintLabel:i,hasInvalidLabelOrSlot:s,hasValidLabelOrSlot:d,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){if(this.isVisible){let t;return this.hasInvalidLabelOrSlot&&(t="alert"),this.hasValidLabelOrSlot&&(t="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:t},this.$slots.loading?.()??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.invalid?.()??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.valid?.()??this.validLabel):e.h(this.tag,{role:t},this.$slots.hint?.()??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:s,hasHintLabelOrSlot:c,hasValidLabelOrSlot:d,hasLoadingLabelOrSlot:u,hintSlotScope:f,HintSlot:p}}(u,i),C=t.useVModel(n,"modelValue",r),$=e.computed({get:()=>C.value&&(Array.isArray(C.value)||C.value?.name)?Array.isArray(C.value)?C.value:[C.value]:[],set:e=>{_.value?C.value=e:C.value=e?.[0]}}),N=e.computed(()=>n.disabled||n.readonly),O=e.computed(()=>"string"==typeof n.max?Number.parseInt(n.max):n.max),x=e.computed(()=>n.dropArea&&!N.value),_=e.computed(()=>!!n.multiple&&(!O.value||O.value-$.value.length>1)),I=e.ref(!1),P=e.ref();function j(){I.value=!0}function E(){I.value=!1}function D(e){e.dataTransfer?.files&&(I.value=!1,T(e.dataTransfer?.files))}function F(){P.value?.files&&(T(P.value.files),P.value.value="")}function T(e){const t=function(e,t){if(!t||""===t.trim()||"*"===t)return Array.from(e);const{mimeTypes:o,extensions:l,wildcards:a}=function(e){const t=[],o=[],l=[],a=e?.split(",").map(e=>e.trim().toLowerCase());return a?.length&&a.forEach(e=>{e.startsWith(".")?o.push(e):e.includes("/*")?l.push(e.replace("/*","")):t.push(e)}),{mimeTypes:t,extensions:o,wildcards:l}}(t);return Array.from(e).filter(e=>{const t=e.type.toLowerCase(),n=`.${e.name.split(".").pop()?.toLowerCase()}`,r=o.includes(t),i=a.some(e=>t.startsWith(`${e}/`)),u=l.some(e=>n===e.toLowerCase());return r||i||u})}(e,n.accept);if(!n.multiple)return Array.isArray(C.value)?void(C.value=t):void(C.value=t[0]);let o=[];o=!Array.isArray(C.value)&&C.value?[C.value]:C.value&&Array.isArray(C.value)?[...C.value]:o;for(const l of t){if(O.value&&o.length>=O.value)break;o.push(l)}C.value=o,q.value=o.length-1}function z(){P.value&&(N.value||P.value.click())}const q=e.ref(0),K=["image/jpeg","image/png"],Y=e.computed(()=>{if(0===$.value.length)return;if(!$.value[q.value])return;if($.value[q.value]instanceof File){const e=$.value[q.value];if(!K.includes(e.type))return;return URL.createObjectURL(e)}const e=$.value[q.value];return e.thumbnailUrl?e.thumbnailUrl:K.includes(e.type)?e.url:void 0});function se(e,t){if(!e)return;if(0===e)return"0 Bytes";const o=Math.floor(Math.log(e)/Math.log(1024));return`${Number.parseFloat((e/1024**o).toFixed(2))} ${["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][o]}`}e.watch(Y,(e,t)=>{t&&URL.revokeObjectURL(t)}),e.onBeforeUnmount(()=>{Y.value&&URL.revokeObjectURL(Y.value)});const de=e.computed(()=>0===$.value.length||_.value?n.labelAdd:n.labelReplace),ce=e.computed(()=>0===$.value.length||_.value?n.iconAdd:n.iconReplace);function ve({newIndex:e}){null!==e&&(q.value=e)}return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(B))},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(g)},e.toDisplayString(t.label),9,Q)):e.createCommentVNode("v-if",!0),x.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"vv-input-file__drop-area",onDragenter:e.withModifiers(j,["prevent","stop"]),onDragleave:e.withModifiers(E,["prevent","stop"]),onDrop:e.withModifiers(D,["prevent","stop"]),onDragover:l[0]||(l[0]=e.withModifiers(()=>{},["prevent","stop"])),onClick:e.withModifiers(z,["stop"])},[e.renderSlot(t.$slots,"drop-area",{},()=>[e.createElementVNode("picture",X,[Y.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:Y.value,alt:$.value[q.value].name},null,8,ee)):e.createCommentVNode("v-if",!0)]),e.unref(c)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(Z,{key:0,modifiers:"action",label:Y.value?void 0:de.value,title:Y.value?de.value:void 0,disabled:e.unref(v),class:e.normalizeClass({"vv-input-file__drop-area-action":Y.value}),icon:ce.value,onClick:e.withModifiers(z,["stop"])},null,8,["label","title","disabled","class","icon"]))])],32)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",te,[e.unref(h)?(e.openBlock(),e.createBlock(H,e.normalizeProps(e.mergeProps({key:0},e.unref(h))),null,16)):e.createCommentVNode("v-if",!0),e.createElementVNode("input",{id:e.unref(g),ref_key:"inputEl",ref:P,type:"file",readonly:e.unref(c),disabled:e.unref(v),required:t.required,placeholder:t.placeholder,"aria-describedby":e.unref(w)?b.value:void 0,"aria-invalid":t.invalid,"aria-errormessage":e.unref(V)?b.value:void 0,multiple:_.value,accept:t.accept,capture:t.capture,name:t.name,onChange:F},null,40,oe),y.value?(e.openBlock(),e.createElementBlock("progress",{key:1,class:"vv-input-file__progress",value:t.progress,max:"100"},e.toDisplayString(t.progress)+"% ",9,le)):e.createCommentVNode("v-if",!0),e.unref(k)?(e.openBlock(),e.createBlock(H,e.normalizeProps(e.mergeProps({key:2},e.unref(k))),null,16)):e.createCommentVNode("v-if",!0)]),e.createVNode(e.unref(o),{modelValue:$.value,"onUpdate:modelValue":l[1]||(l[1]=e=>$.value=e),tag:"ul",class:"vv-input-file__list","item-key":"name",move:()=>t.sortable,onEnd:ve},{item:e.withCtx(({element:o,index:l})=>[e.createElementVNode("li",{class:e.normalizeClass(["vv-input-file__item",{active:l===q.value&&x.value&&$.value.length>1,"cursor-move":t.sortable}]),onClick:e.withModifiers(e=>function(e){q.value=e}(l),["stop"])},[e.unref(S)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"vv-input-file__item-action",title:t.labelDownload,onClick:e.withModifiers(e=>function(e){r("download",e);const t=e instanceof File?URL.createObjectURL(e):e.url;if(!t)return;const o=document.createElement("a");o.href=t,o.setAttribute("download",e.name),document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(o.href)}(o),["stop"])},[e.createVNode(H,e.normalizeProps(e.guardReactiveProps(e.unref(S))),null,16)],8,ne)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",re,e.toDisplayString(o.name),1),e.createElementVNode("small",ie,e.toDisplayString(se(o.size)),1),e.unref(c)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"vv-input-file__item-remove",title:t.labelRemove,disabled:e.unref(v),onClick:e.withModifiers(e=>function(e){const t=Array.isArray(C.value)?C.value[e]:C.value;if(!t)return;if(r("remove",t),!Array.isArray(C.value))return void(C.value=void 0);q.value===e&&(q.value=0);const o=[...C.value];o.splice(e,1),C.value=o}(l),["stop"])},null,8,ue))],10,ae)]),_:1},8,["modelValue","move"]),e.createVNode(e.unref(L),{id:b.value,class:"vv-input-file__hint"},e.createSlots({_:2},[t.$slots.hint?{name:"hint",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps(e.unref(A))))]),key:"0"}:void 0,t.$slots.loading?{name:"loading",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"loading",e.normalizeProps(e.guardReactiveProps(e.unref(A))))]),key:"1"}:void 0,t.$slots.valid?{name:"valid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"valid",e.normalizeProps(e.guardReactiveProps(e.unref(A))))]),key:"2"}:void 0,t.$slots.invalid?{name:"invalid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"invalid",e.normalizeProps(e.guardReactiveProps(e.unref(A))))]),key:"3"}:void 0]),1032,["id"])],2))}})});