UNPKG

vxe-pc-ui

Version:
1 lines • 25.9 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_vn=require("../..//ui/src/vn"),_log=require("../../ui/src/log"),_dom=require("../../ui/src/dom"),_util=require("./util"),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeUpload",props:{modelValue:[Array,String,Object],showList:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showList},moreConfig:Object,readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},mode:{type:String,default:()=>(0,_ui.getConfig)().upload.mode},imageTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageTypes,!0)},imageConfig:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageConfig,!0)},imageStyle:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageStyle,!0)},fileTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.fileTypes,!0)},dragSort:Boolean,dragToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.dragToUpload,!0)},pasteToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.pasteToUpload,!0)},keyField:String,singleMode:Boolean,urlMode:Boolean,multiple:Boolean,limitSize:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitSize},showLimitSize:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitSize},limitSizeText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitSizeText},limitCount:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitCount},showLimitCount:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitCount},limitCountText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitCountText},nameField:{type:String,default:()=>(0,_ui.getConfig)().upload.nameField},typeField:{type:String,default:()=>(0,_ui.getConfig)().upload.typeField},urlField:{type:String,default:()=>(0,_ui.getConfig)().upload.urlField},sizeField:{type:String,default:()=>(0,_ui.getConfig)().upload.sizeField},showErrorStatus:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showErrorStatus},showProgress:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showProgress},progressText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.progressText},autoHiddenButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.autoHiddenButton},showUploadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showUploadButton},buttonText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.buttonText},buttonIcon:{type:String,default:()=>(0,_ui.getConfig)().upload.buttonIcon},showButtonText:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonText},showButtonIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonIcon},showRemoveButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showRemoveButton},showDownloadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showDownloadButton},showPreview:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showPreview},showTip:{type:Boolean,default:()=>null},tipText:[String,Number,Function],hintText:String,previewMethod:Function,uploadMethod:Function,beforeRemoveMethod:Function,removeMethod:Function,beforeDownloadMethod:Function,downloadMethod:Function,getUrlMethod:Function,getThumbnailUrlMethod:Function,size:{type:String,default:()=>(0,_ui.getConfig)().upload.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","add","remove","remove-fail","download","download-fail","upload-success","upload-error","sort-dragend"],setup(U,e){const{emit:u,slots:w}=e,b=(0,_vue.inject)("$xeForm",null),T=(0,_vue.inject)("xeFormItemInfo",null),a=(0,_vue.inject)("$xeTable",null);var t=_xeUtils.default.uniqueId();const j=(0,_ui.useSize)(U)["computeSize"],g=(0,_vue.ref)(),p=(0,_vue.ref)(),c=(0,_vue.ref)(),m=(0,_vue.ref)(),M=(0,_vue.reactive)({isDragUploadStatus:!1,showMorePopup:!1,isActivated:!1,fileList:[],fileCacheMaps:{},isDragMove:!1,dragIndex:-1,dragTipText:""}),r={imagePreviewTypes:["jpg","jpeg","png","gif"],prevDragIndex:-1},i={refElem:g},y=(0,_vue.computed)(()=>{var e=U["readonly"];return null===e?!!b&&b.props.readonly:e}),I=(0,_vue.computed)(()=>{var e=U["disabled"];return null===e?!!b&&b.props.disabled:e}),D=(0,_vue.computed)(()=>U.keyField||"_X_KEY"),_=(0,_vue.computed)(()=>"image"===U.mode),S=(0,_vue.computed)(()=>U.nameField||"name"),B=(0,_vue.computed)(()=>U.typeField||"type"),E=(0,_vue.computed)(()=>U.urlField||"url"),V=(0,_vue.computed)(()=>U.sizeField||"size"),$=(0,_vue.computed)(()=>1024*_xeUtils.default.toNumber(U.limitSize)*1024),L=(0,_vue.computed)(()=>U.multiple?_xeUtils.default.toNumber(U.limitCount):1),f=(0,_vue.computed)(()=>{var e=U["multiple"],t=M["fileList"],o=L.value;return e?!o||t.length>=o:1<=t.length}),q=(0,_vue.computed)(()=>{var e=_xeUtils.default.toNumber(U.limitSize);return e?1048576<e?e/1048576+"T":1024<e?e/1024+"G":e+"M":""}),G=(0,_vue.computed)(()=>{var{showTip:e,tipText:t}=U;return _xeUtils.default.isBoolean(e)||(e=(0,_ui.getConfig)().upload.showTip,_xeUtils.default.isBoolean(e))?e:!!t}),H=(0,_vue.computed)(()=>{var{limitSize:e,fileTypes:t,multiple:o,limitCount:a}=U,i=U.tipText||U.hintText,l=_.value,u=q.value;return _xeUtils.default.isString(i)?i:_xeUtils.default.isFunction(i)?""+i({}):(i=[],l?(o&&a&&i.push((0,_ui.getI18n)("vxe.upload.imgCountHint",[a])),e&&u&&i.push((0,_ui.getI18n)("vxe.upload.imgSizeHint",[u]))):(t&&t.length&&i.push((0,_ui.getI18n)("vxe.upload.fileTypeHint",[t.join("/")])),e&&u&&i.push((0,_ui.getI18n)("vxe.upload.fileSizeHint",[u])),o&&a&&i.push((0,_ui.getI18n)("vxe.upload.fileCountHint",[a]))),i.join((0,_ui.getI18n)("vxe.base.comma")))}),l=(0,_vue.computed)(()=>Object.assign({},U.imageConfig||U.imageStyle)),Y=(0,_vue.computed)(()=>{var{width:e,height:t}=l.value,o={};return e&&(o.width=(0,_dom.toCssUnit)(e)),t&&(o.height=(0,_dom.toCssUnit)(t)),o}),Q=(0,_vue.computed)(()=>Object.assign({showMoreButton:!0},U.moreConfig)),d={},h={xID:t,props:U,context:e,reactData:M,internalData:r,getRefMaps:()=>i,getComputeMaps:()=>d},P=()=>_xeUtils.default.uniqueId(),N=e=>{return e[D.value]},s=()=>{var{modelValue:e,multiple:t}=U,o=y.value;const i=D.value,l=S.value,u=B.value,n=E.value,r=V.value;e=e?(e?_xeUtils.default.isArray(e)?e:[e]:[]).map(e=>{if(!e||_xeUtils.default.isString(e)){var t=""+(e||""),o=_xeUtils.default.parseUrl(e);const a=(o?o.searchQuery[l]:"")||decodeURIComponent(""+(t||"")).split("/").pop()||"";return{[l]:a,[u]:(o?o.searchQuery[u]:"")||F(a),[n]:t,[r]:_xeUtils.default.toNumber(o?o.searchQuery[r]:0)||0,[i]:P()}}const a=e[l]||"";return e[l]=a,e[u]=e[u]||F(a),e[n]=e[n]||"",e[r]=e[r]||0,e[i]=e[i]||P(),e}):[];M.fileList=o||t?e:e.slice(0,1)},F=e=>{var t=e.lastIndexOf(".");return 0<t?e.substring(t+1).toLowerCase():""},O=(e,t,o)=>{u(e,(0,_ui.createEvent)(o,{$upload:h},t))},A=e=>{var{singleMode:t,urlMode:o}=U;const a=E.value,i=S.value;let l=e?e.slice(0):[];o&&(l=l.map(e=>{var t=e[a];if(t&&!_xeUtils.default.parseUrl(t).searchQuery[i])return""+t+(-1===t.indexOf("?")?"?":"&")+i+"="+encodeURIComponent(e[i]||"");return t})),u("update:modelValue",t?l[0]||null:l)},X=e=>{var t=U.getThumbnailUrlMethod||(0,_ui.getConfig)().upload.getThumbnailUrlMethod;return t?t({$upload:h,option:e}):n(e)},n=e=>{var t=U.getUrlMethod||(0,_ui.getConfig)().upload.getUrlMethod,o=E.value;return t?t({$upload:h,option:e}):e[o]},W=(e,t)=>{var o=U.previewMethod||(0,_ui.getConfig)().upload.previewMethod;if(U.showPreview)if(o)o({$upload:h,option:t});else{var a=t;var{imageTypes:o,showDownloadButton:t}=U;const l=B.value,u=U.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;var i=r["imagePreviewTypes"];i.concat(o||[]).some(e=>(""+e).toLowerCase()===(""+a[l]).toLowerCase())&&_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage({urlList:[n(a)],showDownloadButton:t,beforeDownloadMethod:u?()=>u({$upload:h,option:a}):void 0})}},K=(e,t,o)=>{var a=U["showDownloadButton"];const i=M["fileList"],l=U.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;U.showPreview&&_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage({urlList:i.map(e=>n(e)),activeIndex:o,showDownloadButton:a,beforeDownloadMethod:l?({index:e})=>l({$upload:h,option:i[e]}):void 0})},J=(o,e)=>{const a=U["showErrorStatus"],i=N(o);var t=U.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod;return t?Promise.resolve(t({$upload:h,file:e,option:o,updateProgress(e){var t=M["fileCacheMaps"],t=t[N(o)];t&&(t.percent=Math.max(0,Math.min(99,_xeUtils.default.toNumber(e))))}})).then(e=>{var t=M["fileCacheMaps"],t=t[i];t&&(t.percent=100),Object.assign(o,e),O("upload-success",{option:o,data:e},null)}).catch(e=>{var t=M["fileCacheMaps"],t=t[i];t&&(t.status="error"),a?Object.assign(o,e):M.fileList=M.fileList.filter(e=>N(e)!==i),O("upload-error",{option:o,data:e},null)}).finally(()=>{var e=M["fileCacheMaps"],e=e[i];e&&(e.loading=!1)}):(t=M["fileCacheMaps"],(e=t[i])&&(e.loading=!1),Promise.resolve())},Z=e=>{const{uploadMethod:t,urlMode:o}=U;var a,i=M["fileCacheMaps"],i=i[N(e)];(t||(0,_ui.getConfig)().upload.uploadMethod)&&i&&(a=i.file,i.loading=!0,i.status="",i.percent=0,J(e,a).then(()=>{o&&A(M.fileList)}))},v=(t,a)=>{var{multiple:e,urlMode:o,showLimitSize:i,limitSizeText:l,showLimitCount:u,limitCountText:n}=U,r=M["fileList"];const d=U.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod,s=D.value,v=S.value,p=B.value,g=E.value,c=V.value;var m=$.value;const _=L.value;var f=q.value;let h=t;if(e&&_){if(u&&r.length>=_)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:n?""+(_xeUtils.default.isFunction(n)?n({maxCount:_}):n):(0,_ui.getI18n)("vxe.upload.overCountErr",[_])}));const y=h.length-(_-r.length);if(u&&0<y){const I=h.slice(_-r.length);n?_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:""+(_xeUtils.default.isFunction(n)?n({maxCount:_}):n)}):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",width:null,slots:{default(){return(0,_vue.h)("div",{class:"vxe-upload--file-message-over-error"},[(0,_vue.h)("div",{},(0,_ui.getI18n)("vxe.upload.overCountExtraErr",[_,y])),(0,_vue.h)("div",{class:"vxe-upload--file-message-over-extra"},I.map((e,t)=>(0,_vue.h)("div",{key:t,class:"vxe-upload--file-message-over-extra-item"},e.name)))])}}})}h=h.slice(0,_-r.length)}if(i&&m)for(let e=0;e<t.length;e++)if(t[0].size>m)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:l?""+(_xeUtils.default.isFunction(l)?l({maxSize:m}):l):(0,_ui.getI18n)("vxe.upload.overSizeErr",[f])}));const x=Object.assign({},M.fileCacheMaps),C=e?r:[],w=[];h.forEach(e=>{var t=e["name"],o=P(),t={[v]:t,[p]:F(t),[c]:e.size,[g]:URL.createObjectURL(e),[s]:o},o=(d&&(x[o]={file:e,loading:!0,status:"",percent:0}),(0,_vue.reactive)(t));d&&w.push(J(o,e)),C.push(o),O("add",{option:o},a)}),M.fileList=C,M.fileCacheMaps=x,Promise.all(o?w:[]).then(()=>{A(C),b&&T&&b.triggerItemEvent(a,T.itemConfig.field,C)})},ee=t=>{var{multiple:e,imageTypes:o,fileTypes:a}=U,i=I.value,l=_.value;return i?Promise.resolve({status:!1,files:[],file:null}):(0,_util.readLocalFile)({multiple:e,types:l?o:a}).then(e=>(v(e.files,t),e))},te=e=>{ee(e).catch(()=>{})},oe=(e,t,o)=>{var a=M["fileList"];a.splice(o,1),A(a),b&&T&&b.triggerItemEvent(e,T.itemConfig.field,a),O("remove",{option:t},e)},ae=(t,o,a)=>{var e=U.beforeRemoveMethod||(0,_ui.getConfig)().upload.beforeRemoveMethod;const i=U.removeMethod||(0,_ui.getConfig)().upload.removeMethod;Promise.resolve(!e||e({$upload:h,option:o})).then(e=>{e?i?Promise.resolve(i({$upload:h,option:o})).then(()=>{oe(t,o,a)}).catch(e=>e):oe(t,o,a):O("remove-fail",{option:o},t)})},ie=(e,t)=>{O("download",{option:t},e)},le=(t,o)=>{var e=U.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;const a=U.downloadMethod||(0,_ui.getConfig)().upload.downloadMethod;Promise.resolve(!e||e({$upload:h,option:o})).then(e=>{e?a?Promise.resolve(a({$upload:h,option:o})).then(()=>{ie(t,o)}).catch(e=>e):ie(t,o):O("download-fail",{option:o},t)})},ue=e=>{var t,o,a,i=e.currentTarget,{clientX:e,clientY:l}=e;i&&({x:i,y:t,height:o,width:a}=i.getBoundingClientRect(),e<i||i+a<e||l<t||t+o<l)&&(M.isDragUploadStatus=!1)},ne=e=>{var t=e.dataTransfer;t&&(t=t["items"],t)&&t.length&&(e.preventDefault(),M.isDragUploadStatus=!0)},re=(e,t)=>{var o=U["imageTypes"],a=r["imagePreviewTypes"];if(_.value){const i=a.concat(o&&o.length?o:[]);t=t.filter(e=>{const t=(""+(e.type.split("/")[1]||"")).toLowerCase();return!!i.some(e=>(""+e).toLowerCase()===t)})}t.length?v(t,e):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:(0,_ui.getI18n)("vxe.upload.uploadTypeErr")})},de=e=>{var t=e.dataTransfer;t&&(t=t["items"],t)&&t.length&&(e.preventDefault(),(t=se(t)).length)&&re(e,t),M.isDragUploadStatus=!1},se=e=>{const t=[];return _xeUtils.default.arrayEach(e,e=>{e=e.getAsFile();e&&t.push(e)}),t},x=()=>{const s=y.value,v=_.value;_ui.VxeUI.modal&&_ui.VxeUI.modal.open({title:s?(0,_ui.getI18n)("vxe.upload.morePopup.readTitle"):(0,_ui.getI18n)("vxe.upload.morePopup."+(v?"imageTitle":"fileTitle")),width:660,height:500,escClosable:!0,showMaximize:!0,resize:!0,maskClosable:!0,slots:{default(){var{showErrorStatus:e,dragToUpload:t,dragSort:o}=U,{isActivated:a,isDragMove:i,isDragUploadStatus:l,dragIndex:u}=M;const n=M["fileList"];var r=I.value,d={};return t&&-1===u&&(d.onDragover=ne,d.onDragleave=ue,d.onDrop=de),(0,_vue.h)("div",Object.assign({ref:p,class:["vxe-upload--more-popup",{"is--readonly":s,"is--disabled":r,"is--active":a,"show--error":e,"is--drag":l}]},d),[v?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(i?"":"-disabled"),tag:"div",class:"vxe-upload--image-more-list"},{default:()=>k(n,!0).concat(R(!0))}):(0,_vue.h)("div",{class:"vxe-upload--image-more-list"},k(n,!0).concat(R(!0))):(0,_vue.h)("div",{class:"vxe-upload--file-more-list"},[z(!0),o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(i?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>C(n,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},C(n,!0))]),o?(0,_vue.h)("div",{ref:m,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(h),l?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(h)])}},onShow(){M.showMorePopup=!0},onHide(){M.showMorePopup=!1}})},ve=(e,t,o)=>{var a,i=M["showMorePopup"],l=g.value,u=p.value,u=i?u:l;u&&(l=u.getBoundingClientRect(),u=c.value,a=m.value,i=i?a:u)&&(a=t.getBoundingClientRect(),i.style.display="block",i.style.top=Math.max(1,a.y-l.y)+"px",i.style.left=Math.max(1,a.x-l.x)+"px",i.style.height=a.height+"px",i.style.width=a.width-1+"px",i.setAttribute("drag-pos",o))},pe=e=>{e.stopPropagation(),e.dataTransfer&&e.dataTransfer.setDragImage((0,_dom.getTpImg)(),0,0);const t=e.currentTarget;e=t.parentElement,e=_xeUtils.default.findIndexOf(Array.from(e.children),e=>t===e);M.isDragMove=!0,M.dragIndex=e,setTimeout(()=>{M.isDragMove=!1},500)},ge=t=>{t.stopPropagation(),t.preventDefault();var o=M["dragIndex"];if(-1!==o){var a=_.value;const l=t.currentTarget;var i=l.parentElement,i=_xeUtils.default.findIndexOf(Array.from(i.children),e=>l===e);let e="";e=a?t.clientX-l.getBoundingClientRect().x<l.clientWidth/2?"left":"right":t.clientY-l.getBoundingClientRect().y<l.clientHeight/2?"top":"bottom",o===i?ve(0,l,e):(ve(0,l,e),r.prevDragIndex=i,r.prevDragPos=e)}},ce=e=>{var{fileList:t,dragIndex:o}=M,{prevDragIndex:a,prevDragPos:i}=r,l="bottom"===i||"right"===i?1:0,u=t[o];const n=t[a];u&&n&&(t.splice(o,1),a=_xeUtils.default.findIndexOf(t,e=>n===e)+l,t.splice(a,0,u),O("sort-dragend",{oldItem:u,newItem:n,dragPos:i,offsetIndex:l,_index:{newIndex:a,oldIndex:o}},e)),t=c.value,u=m.value,t&&(t.style.display=""),u&&(u.style.display=""),M.dragIndex=-1},me=e=>{a&&e.stopPropagation(),M.isActivated=!0},_e=e=>{var t=U["pasteToUpload"],o=M["isActivated"];o&&t&&(o=e.clipboardData||e.originalEvent.clipboardData)&&(t=o["items"],t)&&(o=se(t)).length&&(e.preventDefault(),re(e,o))},fe=e=>{var t=g.value,o=p.value;let a=(0,_dom.getEventTargetNode)(e,t).flag;!a&&o&&(o=(t=o.parentElement||o)&&t.parentElement,a=(0,_dom.getEventTargetNode)(e,o).flag),M.isActivated=a},he=()=>{M.isActivated=!1};t={dispatchEvent:O,choose(){return ee(null)}};Object.assign(h,t,{});const C=(e,u)=>{const{showRemoveButton:n,showDownloadButton:r,showProgress:d,progressText:s,showPreview:v,showErrorStatus:p,dragSort:g}=U,c=M["fileCacheMaps"],m=I.value,_=y.value,f=S.value,h=B.value,x=w.corner,C={};return g&&1<e.length&&(C.onDragstart=pe,C.onDragover=ge,C.onDragend=ce),e.map((t,o)=>{var e=N(t),a=c[e];const i=a&&a.loading,l=a&&"error"===a.status;return(0,_vue.h)("div",Object.assign({key:g?e:o,class:["vxe-upload--file-item",{"is--preview":v,"is--loading":i,"is--error":l}],fileid:e,draggable:!!g||null},C),[(0,_vue.h)("div",{class:"vxe-upload--file-item-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)()["UPLOAD_FILE_TYPE_"+(""+t[h]).toLocaleUpperCase()]||(0,_ui.getIcon)().UPLOAD_FILE_TYPE_DEFAULT})]),(0,_vue.h)("div",{class:"vxe-upload--file-item-name",onClick(e){i||l||W(e,t)}},""+(t[f]||"")),i?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]):(0,_vue.createCommentVNode)(),d&&i&&a?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-text"},s?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(s)?s({}):s),{percent:a.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[a.percent])):(0,_vue.createCommentVNode)(),p&&l?(0,_vue.h)("div",{class:"vxe-upload--image-item-error"},[(0,_vue.h)(_button.default,{icon:(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD,mode:"text",status:"primary",content:(0,_ui.getI18n)("vxe.upload.reUpload"),onClick(){Z(t)}})]):(0,_vue.createCommentVNode)(),(0,_vue.h)("div",{class:"vxe-upload--file-item-btn-wrapper"},[x?(0,_vue.h)("div",{class:"vxe-upload--file-item-corner"},(0,_vn.getSlotVNs)(x({option:t,isMoreView:u,readonly:_}))):(0,_vue.createCommentVNode)(),r&&!i?(0,_vue.h)("div",{class:"vxe-upload--file-item-download-btn",onClick(e){le(e,t)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_DOWNLOAD})]):(0,_vue.createCommentVNode)(),!n||_||m||i?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{class:"vxe-upload--file-item-remove-btn",onClick(e){ae(e,t,o)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_REMOVE})])])])})},z=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:a,showButtonText:i,showButtonIcon:l,autoHiddenButton:u}=U,n=I.value,r=y.value,d=G.value,s=H.value,v=f.value,p=w.default,g=w.tip||w.hint;return r||!t?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{class:"vxe-upload--file-action"},[u&&v?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{class:"vxe-upload--file-action-btn",onClick:te},p?(0,_vn.getSlotVNs)(p({$upload:h})):[(0,_vue.h)(_button.default,{class:"vxe-upload--file-action-button",content:e||i?o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.fileBtnText"):"",icon:l?a||(0,_ui.getIcon)().UPLOAD_FILE_ADD:"",disabled:n})]),d&&(s||g)?(0,_vue.h)("div",{class:"vxe-upload--file-action-tip"},g?(0,_vn.getSlotVNs)(g({$upload:h})):""+s):(0,_vue.createCommentVNode)()])},k=(e,u)=>{const{showRemoveButton:n,showProgress:r,progressText:d,showPreview:s,showErrorStatus:v,dragSort:p}=U,g=M["fileCacheMaps"],c=I.value,m=y.value,_=l.value,f=Y.value,h=w.corner,x={onMousedown:me};return p&&1<e.length&&(x.onDragstart=pe,x.onDragover=ge,x.onDragend=ce),e.map((t,o)=>{var e=N(t),a=g[e];const i=a&&a.loading,l=a&&"error"===a.status;return(0,_vue.h)("div",Object.assign({key:p?e:o,class:["vxe-upload--image-item",{"is--preview":s,"is--circle":_.circle,"is--loading":i,"is--error":l}],fileid:e,draggable:!!p||null},x),[(0,_vue.h)("div",{class:"vxe-upload--image-item-box",style:u?null:f,title:(0,_ui.getI18n)("vxe.upload.viewItemTitle"),onClick(e){i||l||K(e,t,o)}},[i&&a?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading"},[(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]),r?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-text"},d?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(d)?d({}):d),{percent:a.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[a.percent])):(0,_vue.createCommentVNode)()]):(0,_vue.createCommentVNode)(),i?(0,_vue.createCommentVNode)():l&&v?(0,_vue.h)("div",{class:"vxe-upload--image-item-error"},[(0,_vue.h)(_button.default,{icon:(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD,mode:"text",status:"primary",content:(0,_ui.getI18n)("vxe.upload.reUpload"),onClick(){Z(t)}})]):(0,_vue.h)("div",{class:"vxe-upload--image-item-img-wrapper"},[(0,_vue.h)("img",{class:"vxe-upload--image-item-img",src:X(t)})]),(0,_vue.h)("div",{class:"vxe-upload--image-item-btn-wrapper",onClick(e){e.stopPropagation()}},[h?(0,_vue.h)("div",{class:"vxe-upload--file-item-corner"},(0,_vn.getSlotVNs)(h({option:t,isMoreView:u,readonly:m}))):(0,_vue.createCommentVNode)(),!n||m||c||i?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{class:"vxe-upload--image-item-remove-btn",onClick(e){e.stopPropagation(),ae(e,t,o)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_IMAGE_REMOVE})])])])])})},R=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:a,showButtonText:i,showButtonIcon:l,autoHiddenButton:u}=U,n=y.value,r=G.value,d=H.value,s=f.value,v=Y.value,p=w.default,g=w.tip||w.hint;return n||!t||u&&s?(0,_vue.createCommentVNode)():(0,_vue.h)("div",{key:"action",class:"vxe-upload--image-action"},[(0,_vue.h)("div",{class:"vxe-upload--image-action-btn",onClick:te},p?p({$upload:h}):[(0,_vue.h)("div",{class:"vxe-upload--image-action-box",style:e?null:v},[l?(0,_vue.h)("div",{class:"vxe-upload--image-action-icon"},[(0,_vue.h)("i",{class:a||(0,_ui.getIcon)().UPLOAD_IMAGE_ADD})]):(0,_vue.createCommentVNode)(),e||i?(0,_vue.h)("div",{class:"vxe-upload--image-action-content"},o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.imgBtnText")):(0,_vue.createCommentVNode)(),r&&(d||g)?(0,_vue.h)("div",{class:"vxe-upload--image-action-hint"},g?(0,_vn.getSlotVNs)(g({$upload:h})):""+d):(0,_vue.createCommentVNode)()])])])};const o=(0,_vue.ref)(0);return(0,_vue.watch)(()=>U.modelValue?U.modelValue.length:0,()=>{o.value++}),(0,_vue.watch)(()=>U.modelValue,()=>{o.value++}),(0,_vue.watch)(o,()=>{s()}),(0,_vue.onMounted)(()=>{"development"===process.env.NODE_ENV&&(U.multiple&&U.singleMode&&(0,_log.errLog)("vxe.error.errConflicts",["multiple","single-mode"]),U.imageStyle)&&(0,_log.warnLog)("vxe.error.delProp",["image-style","image-config"]),U.dragSort&&(0,_dom.initTpImg)(),_ui.globalEvents.on(h,"paste",_e),_ui.globalEvents.on(h,"mousedown",fe),_ui.globalEvents.on(h,"blur",he)}),(0,_vue.onUnmounted)(()=>{M.isDragUploadStatus=!1,_ui.globalEvents.off(h,"paste"),_ui.globalEvents.off(h,"mousedown"),_ui.globalEvents.off(h,"blur")}),s(),h.renderVN=()=>{var{showErrorStatus:e,dragToUpload:t,pasteToUpload:o,dragSort:a}=U,{isDragUploadStatus:i,showMorePopup:l,isActivated:u,dragIndex:n}=M,r=j.value,d=I.value,s=y.value,v=_.value,p={onMousedown:me};return t&&-1===n&&(p.onDragover=ne,p.onDragleave=ue,p.onDrop=de),(0,_vue.h)("div",Object.assign({ref:g,class:["vxe-upload",{["size--"+r]:r,"is--active":u,"is--readonly":s,"is--disabled":d,"is--paste":o,"show--error":e,"is--drag":i}]},p),[(v?()=>{var{showList:e,dragSort:t}=U;const{fileList:o,isDragMove:a}=M,{maxCount:i,showMoreButton:l}=Q.value;let u=o,n=0;return i&&o.length>i&&(n=o.length-i,u=o.slice(0,i)),(0,_vue.h)("div",{key:"image",class:"vxe-upload--image-wrapper"},e?[t?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(a?"":"-disabled"),tag:"div",class:"vxe-upload--image-list"},{default:()=>k(u,!1).concat([l&&n?(0,_vue.h)("div",{key:"om",class:"vxe-upload--image-over-more"},[(0,_vue.h)(_button.default,{mode:"text",content:(0,_ui.getI18n)("vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_vue.createCommentVNode)(),R(!1)])}):(0,_vue.h)("div",{class:"vxe-upload--image-list"},k(u,!1).concat([l&&n?(0,_vue.h)("div",{class:"vxe-upload--image-over-more"},[(0,_vue.h)(_button.default,{mode:"text",content:(0,_ui.getI18n)("vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_vue.createCommentVNode)(),R(!1)]))]:[(0,_vue.h)("div",{class:"vxe-upload--image-list"},[R(!1)])])}:()=>{var{showList:e,moreConfig:t,dragSort:o}=U,{fileList:a,isDragMove:i}=M,{maxCount:l,showMoreButton:u,layout:n}=Q.value,n="horizontal"===n;let r=a,d=0;return l&&a.length>l&&(d=a.length-l,r=a.slice(0,l)),(0,_vue.h)("div",{key:"all",class:"vxe-upload--file-wrapper"},e?[u&&t&&n?(0,_vue.createCommentVNode)():z(!0),r.length||u&&n?(0,_vue.h)("div",{class:["vxe-upload--file-list-wrapper",{"is--horizontal":n}]},[r.length?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(i?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>C(r,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},C(r,!1)):(0,_vue.createCommentVNode)(),u&&d?(0,_vue.h)("div",{class:"vxe-upload--file-over-more"},[(0,_vue.h)(_button.default,{mode:"text",content:(0,_ui.getI18n)("vxe.upload.moreBtnText",[a.length]),status:"primary",onClick:x})]):(0,_vue.createCommentVNode)(),u&&t&&n?z(!1):(0,_vue.createCommentVNode)()]):(0,_vue.createCommentVNode)()]:[z(!1)])})(),a?(0,_vue.h)("div",{ref:c,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(h),i&&!l?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(h)])},h},render(){return this.renderVN()}});