UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

3 lines (2 loc) 51 kB
(function(M,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js"],e):(M=typeof globalThis<"u"?globalThis:M||self,e(M.uploader={},M.Vue,M.LodashES,M.common))})(this,function(M,e,Y,de){"use strict";var dt=Object.defineProperty;var ut=(M,e,Y)=>e in M?dt(M,e,{enumerable:!0,configurable:!0,writable:!0,value:Y}):M[e]=Y;var W=(M,e,Y)=>ut(M,typeof e!="symbol"?e+"":e,Y);const Ae={checked:{type:Boolean,default:!1},id:{type:String,default:""},disabled:{type:Boolean,default:!1}},Pe={showInfo:{type:Boolean,default:!0},status:{type:String,default:"normal"},percent:{type:Number,default:0},maxWidth:{type:Number,default:0}},Me={selectText:{type:String,default:"选择文件"},disabled:{type:Boolean,default:!1},enableMulti:{type:Boolean,default:!0},accept:{type:String,default:"*"},options:{type:Object,default:{}},uploadedCount:{type:Number,default:0},extendConfig:{type:Object,default:{}},uploadServerToken:{type:String,default:""}},He=e.defineComponent({name:"FUploadProgress",props:Pe,setup(n,t){const{showInfo:a,status:l,maxWidth:i,percent:o}=e.toRefs(n);return()=>e.createVNode("div",{class:["f-progress upload-progress","upload-progress-status-"+l.value,"f-progress-status-"+l.value,"upload-progress-line",a.value?"upload-progress-show-info":""]},[e.createVNode("div",{class:"upload-progress-outer",style:{"max-width":i.value>0?i.value+"px":"auto"}},[e.createVNode("div",{class:"upload-progress-inner"},[e.createVNode("div",{class:"upload-progress-bg f-progress-bg",style:{width:o.value+"%"}},null)])]),a.value?e.createVNode("span",{class:"upload-progress-text"},[l.value==="error"||l.value==="success"?e.createVNode("span",{class:["upload-progress-text-icon f-icon","f-icon-"+l.value]},null):e.createVNode(e.Fragment,null,[o.value,e.createTextVNode("%")])]):""])}}),ue=e.defineComponent({name:"FPreviewCheckbox",props:Ae,emits:["checkedChange"],setup(n,t){const{disabled:a}=e.toRefs(n),l=e.ref(n.checked),i=o=>{o.stopPropagation(),a.value||(l.value=!l.value,t.emit("checkedChange",{checked:l.value,id:n.id}))};return e.watch(()=>n.checked,o=>{l.value=o}),()=>e.createVNode("div",{class:"preview-checkbox d-inline-flex align-middle"},[e.createVNode("div",{class:"custom-control custom-checkbox f-checkradio-single m-0"},[e.createVNode("input",{title:"custom-control-input",class:"custom-control-input",type:"checkbox",disabled:a.value,checked:l.value},null),e.createVNode("label",{class:"custom-control-label",onClick:o=>i(o),onMousedown:o=>o.stopPropagation()},null)])])}}),pe=e.defineComponent({name:"FFileSelect",props:Me,emits:["change","stateChange"],setup(n,t){const a=e.inject("uploaderService");a.setUploadContext(t);const l=e.getCurrentInstance(),i=e.ref("*");let o;const c=()=>{o.files&&(t.emit("change",o.files),a.handleFiles(o.files),o.value=null)};function r(){o.value=null,a.reset()}e.watch(()=>n.disabled,()=>{r()}),e.watch(()=>n.uploadedCount,u=>{a.setOptions({uploadedCount:u})}),e.watch(()=>n.extendConfig,u=>{a.setExtendServerConfig(u)});function g(u){u&&u.stopPropagation(),o.click()}function p(u){a.handleUploadEvent(u)}return e.onMounted(()=>{var u,m;o=(u=l==null?void 0:l.proxy)==null?void 0:u.$refs.uploadInput,r(),a.setOptions(n.options),a.setExtendServerConfig(n.extendConfig),i.value=(((m=n.options)==null?void 0:m.allowedContentTypes)||["*"]).join(",")}),e.onUnmounted(()=>{}),t.expose({handleUploadEvent:p}),()=>e.createVNode(e.Fragment,null,[e.createVNode("input",{ref:"uploadInput",type:"file",class:"ffileupload--browser",disabled:n.disabled,multiple:n.enableMulti,accept:i.value,onChange:()=>c(),style:"width: 10px",title:"uploadInput"},null),e.createVNode("div",{class:["upload-container",n.disabled?"f-state-disabled":""],onClick:u=>g(u),title:n.selectText},[e.createVNode("i",{class:"f-icon f-icon-upload upload-icon",style:"top: 2px;position: relative;"},null),n.selectText])])}}),fe={},me={};function oe(n){const{properties:t,title:a,ignore:l}=n,i=l&&Array.isArray(l),o=Object.keys(t).reduce((c,r)=>((!i||!l.find(g=>g===r))&&(c[r]=t[r].type==="object"&&t[r].properties?oe(t[r]):Y.cloneDeep(t[r].default)),c),{});if(a&&(!i||!l.find(c=>c==="id"))){const c=a.toLowerCase().replace(/-/g,"_");o.id=`${c}_${Math.random().toString().slice(2,6)}`}return o}function Oe(n){const{properties:t,title:a,required:l}=n;if(l&&Array.isArray(l)){const i=l.reduce((o,c)=>(o[c]=t[c].type==="object"&&t[c].properties?oe(t[c]):Y.cloneDeep(t[c].default),o),{});if(a&&l.find(o=>o==="id")){const o=a.toLowerCase().replace(/-/g,"_");i.id=`${o}_${Math.random().toString().slice(2,6)}`}return i}return{type:a}}function he(n,t={},a){const l=fe[n];if(l){let i=Oe(l);const o=me[n];return i=o?o({getSchemaByType:he},i,t,a):i,i}return null}function Re(n,t){const a=oe(t);return Object.keys(a).reduce((l,i)=>(Object.prototype.hasOwnProperty.call(n,i)&&(l[i]&&Y.isPlainObject(l[i])&&Y.isPlainObject(n[i]||!n[i])?Object.assign(l[i],n[i]||{}):l[i]=n[i]),l),a),a}function ge(n,t){return Object.keys(n).filter(l=>n[l]!=null).reduce((l,i)=>{if(t.has(i)){const o=t.get(i);if(typeof o=="string")l[o]=n[i];else{const c=o(i,n[i],n);Object.assign(l,c)}}else l[i]=n[i];return l},{})}function je(n,t,a=new Map){const l=Re(n,t);return ge(l,a)}function Ue(n={}){function t(p,u,m,f){if(typeof m=="number")return f[p].length===m;if(typeof m=="object"){const T=Object.keys(m)[0],N=m[T];if(T==="not")return Number(f[p].length)!==Number(N);if(T==="moreThan")return Number(f[p].length)>=Number(N);if(T==="lessThan")return Number(f[p].length)<=Number(N)}return!1}function a(p,u,m,f){return f[p]&&f[p].propertyValue&&String(f[p].propertyValue.value)===String(m)}const l=new Map([["length",t],["getProperty",a]]);Object.keys(n).reduce((p,u)=>(p.set(u,n[u]),p),l);function i(p,u){const m=p;return typeof u=="number"?[{target:m,operator:"length",param:null,value:Number(u)}]:typeof u=="boolean"?[{target:m,operator:"getProperty",param:p,value:!!u}]:typeof u=="object"?Object.keys(u).map(f=>{if(f==="length")return{target:m,operator:"length",param:null,value:u[f]};const T=f,N=u[f];return{target:m,operator:"getProperty",param:T,value:N}}):[]}function o(p){return Object.keys(p).reduce((m,f)=>{const T=i(f,p[f]);return m.push(...T),m},[])}function c(p,u){if(l.has(p.operator)){const m=l.get(p.operator);return m&&m(p.target,p.param,p.value,u)||!1}return!1}function r(p,u){return o(p).reduce((T,N)=>T&&c(N,u),!0)}function g(p,u){const m=Object.keys(p),f=m.includes("allOf"),T=m.includes("anyOf"),N=f||T,C=(N?p[N?f?"allOf":"anyOf":"allOf"]:[p]).map(v=>r(v,u));return f?!C.includes(!1):C.includes(!0)}return{parseValueSchema:g}}const ze={},Le={};Ue();function qe(n,t,a=new Map,l=(c,r,g,p)=>r,i={},o=c=>c){return fe[t.title]=t,me[t.title]=l,ze[t.title]=i,Le[t.title]=o,(c={},r=!0)=>{if(!r)return ge(c,a);const g=je(c,t,a),p=Object.keys(n).reduce((u,m)=>(u[m]=n[m].default,u),{});return Object.assign(p,g)}}const $e={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/uploader.schema.json",title:"uploader",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for uploader",type:"string"},type:{description:"The type string of uploader",type:"string",default:"uploader"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disable:{type:"boolean",default:!1},placeholder:{description:"",type:"string",default:""},readonly:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},visible:{description:"",type:"boolean",default:!0}},required:["id","type"]};function _e(n,t){return{customClass:t.class,customStyle:t.style}}const Qe=new Map([["appearance",_e]]);function We(n,t,a){return t}const Ye={title:"uploader",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}},appearance:{description:"外观",title:"外观",properties:{contentFill:{description:"内容填充",title:"内容填充",type:"boolean"}}},server:{description:"服务器配置",title:"服务器配置",properties:{rootId:{description:"附件服务器根目录",title:"附件服务器根目录",type:"string"},formId:{description:"必填,根据【附件信息】业务字段所在位置区分:1、在子表,二级目录建议绑定主表ID。2:在主表:二级目录建议填写当前表数据ID",title:"二级目录",type:"string"}}},upload:{description:"上传配置",title:"上传配置",properties:{uploadVisible:{description:"上传按钮是否可见",title:"上传是否可见",type:"boolean"},uploadDisabled:{description:"禁用时,上传按钮可见,但不可用",title:"上传是否禁用",type:"boolean"},allowEmpty:{description:"运行时是否允许不上传附件",title:"是否允许为空",type:"boolean"},uploadSelectText:{description:"选择文件按钮文本",title:"选择文件按钮文本",type:"string"},uploadOptions:{description:"附件上传配置",title:"附件上传配置",type:"cascade",isExpand:!0,properties:{maxUploads:{description:"值为0时表示不限制上传个数",title:"最大上传个数",type:"number"},maxFileSize:{description:"单个附件最大值(MB)",title:"单个附件最大值(MB)",type:"number"},allowedContentTypes:{description:"允许上传附件类型",title:"允许上传附件类型",type:"string"},notAllowedCharsInFileName:{description:"文件名禁用字符",title:"文件名禁用字符",type:"string"}}},enableUploadedCount:{description:"是否启用已上传个数限制",title:"是否启用已上传个数限制",type:"select",editor:{type:"waiting for modification",enum:[]}},uploadEnableMulti:{description:"是否启用多选附件上传",title:"是否启用多选附件上传",type:"select",editor:{type:"waiting for modification",enum:[]}},enableSliceUpload:{description:"是否启用分片上传",title:"是否启用分片上传",type:"select",editor:{type:"waiting for modification",enum:[]}},chunkSize:{description:"分片上传时,每片的大小。单位:M",title:"分片大小(M)",type:"number"}}},preview:{description:"附件预览",title:"附件预览",properties:{previewVisible:{description:"预览是否可见",title:"预览是否可见",type:"boolean"},previewReadonly:{description:"预览是否只读",title:"预览是否只读",type:"boolean"},fieldIdKey:{description:"附件ID字段",title:"附件ID字段",type:"string",editor:{type:"field-selector"}},fileNameKey:{description:"附件名称字段",title:"附件名称字段",type:"string",editor:{type:"field-selector"}},previewEnableMulti:{description:"是否启用批量操作",title:"是否启用批量操作",type:"boolean"},noDelete:{description:"是否禁止删除附件",title:"是否禁止删除附件",type:"boolean"},noPreview:{description:"是否禁止预览",title:"是否禁止预览",type:"boolean"},previewDateFormat:{description:"附件上传时间字段的格式化设置,请注意此属性仅针对附件上传时间一个字段,若有自定义预览列,请在预览列编辑器中单独设置时间格式。",title:"附件上传时间格式化",type:"select",editor:{type:"waiting for modification",enum:[]}},fileSortOrderKey:{description:"排序字段",title:"排序字段",type:"string"},orderType:{description:"排序类型",title:"排序类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}}}},ee={contentFill:{type:Boolean,default:!1},orderField:{type:String,default:"createTime"},previewColumns:{type:Array,default:[{field:"name",width:200,title:"文件名",checkbox:!0},{field:"size",width:100,title:"大小"},{field:"createTime",width:100,title:"日期"},{field:"state",width:100,title:"状态"},{field:"action",width:100,title:"操作"}]},previewVisible:{type:Boolean,default:!0},previewEnableMulti:{type:Boolean,default:!0},previewDefaultRename:{type:String,default:""},uploadDisabled:{type:Boolean,default:!1},uploadVisible:{type:Boolean,default:!0},uploadSelectText:{type:String,default:"选择文件"},uploadEnableMulti:{type:Boolean,default:!0},uploadedCount:{type:Number,default:0},disabled:{type:Boolean,default:!1},downloadButtonDisable:{type:Boolean,default:!1},previewButtonDisable:{type:Boolean,default:!1},deleteButtonDisable:{type:Boolean,default:!1},customInfo:{type:String,default:""},fileInfos:{type:Array,default:[]},uploadOptions:{type:Object,default:null},extendConfig:{type:Object,default:{}},uploadServerToken:{type:String,default:""},notifyServiceToken:{type:String,default:""}},ie=qe(ee,$e,Qe,We,Ye);var _=(n=>(n[n.Queue=0]="Queue",n[n.Uploading=1]="Uploading",n[n.Done=2]="Done",n[n.Cancelled=3]="Cancelled",n[n.Remove=4]="Remove",n[n.Error=5]="Error",n))(_||{});class ye{constructor(t={},a={}){W(this,"uploadConfig");W(this,"removeConfig");const l={type:"config",url:"",timeout:0,headers:null,data:{}};this.uploadConfig=Object.assign({},l,t),this.removeConfig=Object.assign({},l,a)}}function se(n,t){const{formatTo:a}=de.useDateFormat();return a(n,t)}function we(n,t){if(!t)return"";let a="";return n.indexOf(".")===-1&&t.hasOwnProperty(n)?a=t[n]:a=n.split(".").reduce((l,i)=>l?l[i]:null,t),a}function Xe(n){return(t,a)=>{if(!t.hasOwnProperty(n)||t[n]===void 0||t[n]===null)return 1;if(!a.hasOwnProperty(n)||a[n]===void 0||a[n]===null)return-1;if(n!=="createTime"){let o="",c="";return n.indexOf(".")>-1?(o=we(n,t),c=we(n,a)):(o=t[n],c=a[n]),o>c?1:-1}const l=new Date(t[n]),i=new Date(a[n]);return l.getTime()>i.getTime()?-1:1}}function be(n){return(n||[]).findIndex(a=>a==="*")===-1}function Ne(n){return n!=="0 Byte"}function Z(n){if(n===0)return"0 Byte";const t=1024,a=["Bytes","KB","MB","GB","TB","PB"],l=Math.floor(Math.log(n)/Math.log(t));return parseFloat((n/t**l).toFixed(2))+" "+a[l]}function ve(n,t){return n&&(n.hasOwnProperty("allowedContentTypes")&&(t.allowedContentTypes=n.allowedContentTypes||["*"],t.allowedContentTypes=t.allowedContentTypes&&t.allowedContentTypes.length>0?t.allowedContentTypes:["*"]),n.hasOwnProperty("maxUploads")&&(t.maxUploads=n.maxUploads||0),n.hasOwnProperty("maxFileSize")&&(t.maxFileSize=Z(1024*1024*(parseInt(String(n.maxFileSize),10)||1)))),t}function Ve(n){let t="ffilepreview--filetype";if(!n)return t+"-any";const a=n.lastIndexOf(".");let l="";switch(a>-1&&(l=n.substring(a+1).toLocaleLowerCase()),l){case"pdf":t+="-pdf";break;case"jpeg":case"jpg":case"gif":case"svg":case"png":case"bmp":t+="-img";break;case"ppt":case"pptx":t+="-ppt";break;case"doc":case"docx":t+="-doc";break;case"xls":case"xlsx":t+="-xls";break;case"txt":t+="-txt";break;case"zip":t+="-zip";break;case"wps":t+="-wps";break;case"wpt":t+="-wpt";break;default:t+="-any"}return t}function xe(n){var t;if(n.type==="done")return 100;if(n.file&&n.file.progress){if(n.file.progress.status===_.Uploading){const a=((t=n.file.progress.data)==null?void 0:t.percentage)||5;return a>5?a:5}return 5}return 5}function Ge(n){let t=n;return n?(typeof n=="string"&&(t=parseInt(n,10)),Z(t)):"0 Byte"}const Je=()=>Math.random().toString(36).substring(7);function Te(n,t){return{fileIndex:t,id:Je(),name:n.name,size:n.size,type:n.type,form:new FormData,progress:{status:_.Queue,data:{percentage:0,speed:0,speedHuman:`${Z(0)}/s`,startTime:null,endTime:null,eta:null,etaHuman:null}},lastModifiedDate:se(new Date(n.lastModified),"yyyy-MM-dd HH:mm:ss"),nativeFile:n}}function Ce(n){const t=[];return n.forEach(a=>{const l={id:"",name:"",size:0,type:"",extend:null,extendHeaders:null,createTime:""};for(const i in l){const o=i.replace("extend","response").replace("createTime","lastModifiedDate");a.hasOwnProperty(o)&&(o==="lastModifiedDate"?l[i]=se(a[o],"yyyy-MM-dd HH:mm:ss"):l[i]=a[o])}t.push(l)}),t}function Ze(n,t){return n?t<=n*1024*1024:!0}function Ie(n){return n.find(t=>t==="*")!==void 0}function Ke(n,t){if(!n||n.length===0||Ie(n))return!0;if(t.lastIndexOf(".")<0)return!1;const a=t.substr(t.lastIndexOf("."));return n.findIndex(l=>l.toLowerCase()===a.toLowerCase())>-1}function et(n){if(n)return n.split(` `).map(t=>t.split(/: */,2)).filter(t=>t[0]).reduce((t,a)=>(t[a[0]]=a[1],t),{})}function Se(n){return new Date(n*1e3).toISOString().substr(11,8)}class tt extends ye{upload(t,a,l,i){const o=t[0];return new Promise((c,r)=>{var C,P;const g=a.url||l.url||"",p=a.method||"POST",u=a.data||{},m=a.headers||{},f=new XMLHttpRequest,T=new Date().getTime();let N=((C=o.progress)==null?void 0:C.data)&&o.progress.data.startTime||T,E=0,w=null;f.upload.addEventListener("progress",v=>{var H;if(v.lengthComputable){const D=Math.round(v.loaded*100/v.total),q=new Date().getTime()-T;E=Math.round(v.loaded/q*1e3),N=((H=o.progress)==null?void 0:H.data)&&o.progress.data.startTime||new Date().getTime(),w=Math.ceil((v.total-v.loaded)/E),o.progress={status:_.Uploading,data:{percentage:D,speed:E,speedHuman:`${Z(E)}/s`,startTime:N,endTime:null,eta:w,etaHuman:Se(w)}},i({type:"uploading",files:[o]})}},!1),f.upload.addEventListener("error",v=>{r(v)}),f.onreadystatechange=()=>{if(f.readyState===XMLHttpRequest.DONE){const v=Math.round(o.size/(new Date().getTime()-N)*1e3);o.progress={status:_.Done,data:{percentage:100,speed:v,speedHuman:`${Z(v)}/s`,startTime:N,endTime:new Date().getTime(),eta:w,etaHuman:Se(w||0)}},o.responseStatus=f.status;try{o.response=JSON.parse(f.response)}catch{o.response=f.response}o.responseHeaders=et(f.getAllResponseHeaders()),c({type:"done",files:[o]})}},f.open(p,g,!0),f.withCredentials=!!a.withCredentials;try{const v=o.nativeFile;Object.keys(m).forEach(D=>f.setRequestHeader(D,m[D]));let H;a.includeWebKitFormBoundary!==!1?(Object.keys(u).forEach(D=>{var q;return(q=o.form)==null?void 0:q.append(D,u[D])}),(P=o.form)==null||P.append(a.fieldName||"file",v,v.name),H=o.form):H=v,f.send(H)}catch(v){r(v)}return()=>{f.abort()}})}remove(t,a,l,i){return new Promise((o,c)=>{o({type:"removed",files:t})})}}const nt={showCloseButton:{type:Boolean,default:!0},position:{type:String,default:"top-center"},timeout:{type:Number,default:3e3},theme:{type:String,default:"bootstrap"},left:{type:Number},right:{type:Number},top:{type:Number},bottom:{type:Number},id:{type:String},animate:{type:String,default:"fadeIn"},options:{type:Object},safeHtml:{type:Boolean,default:!0}},at={showCloseButton:{type:Boolean,default:!0},animate:{type:String,default:"fadeIn"},options:{type:Object}},re=e.defineComponent({name:"Toast",props:at,emits:["close","click"],setup:(n,t)=>{const a=e.ref(n.animate),l="fadeOut",i=e.computed(()=>n.options),o=e.ref(!1),c=e.computed(()=>{const C={animated:o.value,toast:!0};return C[n.animate]=!1,C[l]=o.value,C[i.value.type]=!0,i.value.theme&&(C[i.value.theme]=!0),C}),r=e.computed(()=>{const v=`f-icon-${i.value&&i.value.type?i.value.type.replace("toasty-type-",""):"default"}`,H={"f-icon":!0};return H[v]=!0,H}),g=e.computed(()=>i.value.title||i.value.message),p=e.computed(()=>i.value.title&&i.value.message),u=e.computed(()=>!i.value.title&&i.value.message),m=e.computed(()=>n.showCloseButton),f=e.computed(()=>!!i.value.buttons||!!t.slots.default);function T(C){C.stopPropagation(),C.preventDefault(),o.value=!1,setTimeout(()=>{t.emit("close",i.value)},200)}function N(C,P){}function E(C){return`f-preten-link ${C.customClass?C.customClass:""}`}e.watch(a,()=>{a.value});const w=()=>{var C;return e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"after-toast-msg text-right"},[!t.slots.default&&((C=i.value.buttons)==null?void 0:C.map(P=>e.createVNode("span",{class:E(P),onClick:v=>void 0},[P.text]))),t.slots.default&&t.slots.default()])])};return()=>e.createVNode("div",{class:c.value,style:"min-height:44px"},[m.value&&e.createVNode("button",{title:"关闭",class:"toast-close f-btn-icon f-bare",onClick:T},[e.createVNode("span",{class:"f-icon modal_close"},null)]),g.value&&e.createVNode("section",{class:"modal-tips"},[e.createVNode("div",{class:"float-left modal-tips-iconwrap"},[e.createVNode("span",{class:r.value},null)]),e.createVNode("div",{class:"modal-tips-content"},[p.value&&e.createVNode(e.Fragment,null,[e.createVNode("h5",{class:"toast-title modal-tips-title",innerHTML:i.value.title},null),e.createVNode("p",{class:"toast-msg",innerHTML:i.value.message},null),f.value&&w()]),u.value&&(i.value.buttons?e.createVNode("div",{class:"toast-title-btns-wrapper d-flex"},[e.createVNode("h5",{class:"toast-title modal-tips-title only-toast-msg",innerHTML:i.value.message},null),e.createVNode("div",{class:"after-toast-title text-right ml-auto"},[w()])]):e.createVNode("h5",{class:"toast-title modal-tips-title only-toast-msg",innerHTML:i.value.message},null))])])])}}),te=e.defineComponent({name:"Notify",props:nt,emits:["close","empty"],setup(n,t){const a=e.computed(()=>({"farris-notify":!0})),l={left:12,right:12,top:20,bottom:12},i=e.ref(),o=e.ref(n.options),c=e.ref(n.showCloseButton),r=e.computed(()=>n.position||"bottom-right"),g=e.computed(()=>n.timeout!=null?n.timeout:3e3),p=e.computed(()=>{const f=n.bottom?n.bottom:l.bottom,T=n.top?n.top:l.top,N={transition:"all 0.2s ease",left:r.value.indexOf("left")>-1?`${n.left?n.left:l.left}px`:"",right:r.value.indexOf("right")>-1?`${n.right?n.right:l.right}px`:"",top:r.value.indexOf("top")>-1?`${T}px`:"",bottom:r.value.indexOf("bottom")>-1?`${f}px`:""};return r.value.indexOf("center")>-1&&(N.left="50%",N.marginLeft="calc(-24rem / 2)",r.value==="center-center"&&(N.top="50%",N.transform="translate(-50%, -50%)")),N});function u(f){t.emit("close")}g.value&&setTimeout(()=>{u()},g.value),t.expose({closeToast:u,container:i,notifyPosition:r});function m(f,T){u()}return()=>e.createVNode("div",{class:a.value,style:p.value,ref:i},[e.createVNode(re,{options:o.value,showCloseButton:c.value,animate:n.animate,onClose:f=>m(f,o.value)},null)])}});class Fe{constructor(){W(this,"notifyRefs",[]);W(this,"globalConfig",e.reactive({}))}escapeAllHtml(t){if(typeof t!="string"||!t)return"";const a=document.createElement("div");return a.textContent=t||"",a.innerHTML.replace(/ /g,"&nbsp;").replace(/\\n/g,"<br>").replace(/\\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").replace(/\\r/g,"")}createNotifyInstance(t){const a=this,i=Object.assign({timeout:3e3,position:"bottom-right",showCloseButton:!0,safeHtml:!0},this.globalConfig,{...t}),o=document.createElement("div");o.style.display="contents";const c=e.createApp({setup(){var p;const r=e.ref();function g(){r.value.container.style.transform="scale(0)",setTimeout(()=>{a.updateNotifyPositionForClose(i,r),c.unmount()},220)}if(i.position.indexOf("top")>-1){const u=a.getNotifyInstances(i.position),m=u[u.length-1];if(m){const f=m.value.container.getBoundingClientRect();i.top=f.bottom}}return i.safeHtml&&((p=i.options)!=null&&p.message)&&(i.options.message=a.escapeAllHtml(i.options.message)),e.onUnmounted(()=>{document.body.removeChild(o)}),e.onMounted(()=>{a.updateNotifyPositionForCreate(i,r)}),()=>e.createVNode(e.Transition,{mode:"out-in",name:"fade",appear:!0},{default:()=>[e.createVNode(te,e.mergeProps({ref:r},i,{onClose:g}),null)]})}});return c.provide("NotifyService",this),document.body.appendChild(o),c.mount(o),c}getNotifyInstances(t){return this.notifyRefs.filter(a=>a.value.notifyPosition===t)}updateNotifyPositionForCreate(t,a){if(this.notifyRefs&&this.notifyRefs.length){const l=window.innerHeight;t.position.indexOf("bottom")>-1&&this.getNotifyInstances(t.position).forEach(i=>{const o=i.value.container.getBoundingClientRect();i.value.container.style.bottom=o.height+l-o.bottom+"px"})}this.notifyRefs=[...this.notifyRefs,a]}updateNotifyPositionForClose(t,a){const l=this.notifyRefs.indexOf(a);if(t.position.indexOf("top")>-1){const i=this.getNotifyInstances(t.position),o=i.indexOf(a);i.slice(o+1).forEach(c=>{c.value.container.style.top=c.value.container.offsetTop-c.value.container.offsetHeight+"px"})}l>-1&&this.notifyRefs.splice(l,1)}show(t){return this.createNotifyInstance(t)}buildNotifyProps(t,a){let l="",i="",o,c,r;typeof a=="string"?l=a:a&&(l=a.message||"",i=a.title||"",c=a.position||null,r=a.showCloseButton!=null?a.showCloseButton:null,o=a.timeout!=null?a.timeout:null);const p={options:{type:t,message:l,title:i}};return c!=null&&(p.position=c),r!=null&&(p.showCloseButton=r),o!=null&&(p.timeout=o),p}info(t){const a=this.buildNotifyProps("info",t);return this.show(a)}success(t){const a=this.buildNotifyProps("success",t);return this.show(a)}warning(t){const a=this.buildNotifyProps("warning",t);return this.show(a)}error(t){const a=this.buildNotifyProps("error",t);return this.show(a)}close(t){t&&t.unmount()}closeAll(){this.notifyRefs.forEach(t=>{t==null||t.value.closeToast()}),this.notifyRefs.length=0}}const lt=Symbol("NOTIFY_SERVICE_TOKEN");te.install=n=>{n.component(te.name,te),n.component(re.name,re);const t=new Fe;n.provide(lt,t),n.provide("FNotifyService",t)};const ke={getNotify:(n="")=>{let t;return n&&e.inject(n,null)&&(t=e.inject(n)),t||(t=new Fe),t},getServerAPI:(n="")=>{let t;if(n&&e.inject(n,null)){const a=e.inject(n);a&&a()&&(t=a())}return t||(t=new tt),t}};function Ee(n,t,a){const l=ke.getNotify(n.notifyServiceToken),i=e.ref(n.fileInfos),{disabled:o,uploadVisible:c,uploadDisabled:r,previewVisible:g,orderField:p,previewEnableMulti:u,downloadButtonDisable:m,previewColumns:f,uploadEnableMulti:T,previewButtonDisable:N}=e.toRefs(n),E=e.ref(!1),w=e.ref([]),C=e.computed(()=>w.value.length),P=e.ref([]),v=e.ref("");function H(s){(!s.length||w.value.length!==s.length)&&(E.value=!1);const b=[...s.map(x=>(x.hasOwnProperty("size")||(x.size=void 0),x.hasOwnProperty("createTime")||(x.createTime=void 0),u.value&&(x.checked=!!w.value.find($=>$.id===x.id)||E.value),x))];return b.sort(Xe(p.value)),u.value&&(w.value=[...b].filter(x=>x.checked)),b}const D=e.ref(H(i.value));e.watch(()=>n.fileInfos,s=>{D.value=H(s)});const q=(s,h)=>{s.stopImmediatePropagation(),t.emit("fileDownloadEvent",{fileInfos:[h],name:""})},X=(s,h)=>{s.stopImmediatePropagation(),!N.value&&t.emit("filePreviewEvent",h)},V=(s,h,b)=>{h.checked&&(w.value=w.value.filter(x=>x.id!==h.id)),t.emit("fileRemoveEvent",h),b.handleUploadEvent({type:"remove",file:h})},B=(s,h="preview")=>s.formatter?!0:h==="preview"?["state","name","action","size","createTime"].findIndex(x=>x===s.field)>-1:h==="upload"?["state","name","size"].findIndex(x=>x===s.field)>-1:!1,k=s=>!(s.field==="state"&&(r.value||!c.value)),A=s=>s.lastIndexOf(".")>0?s.substring(0,s.lastIndexOf(".")):"",O=s=>{if(s.stopImmediatePropagation(),C.value>1){let h="";h=A(w.value[0].name),t.emit("fileDownloadEvent",{fileInfos:w.value,name:h})}},Q=s=>{s.stopImmediatePropagation(),t.emit("fileRemoveEvent",w.value)},J=s=>{const h=D.value;s.checked?(h.forEach(b=>{b.checked=!0}),w.value=[...D.value],E.value=!0):(w.value=[],h.forEach(b=>{b.checked=!1}),E.value=!1),t.emit("previewMultiSelectedEvent",w.value)},R=(s,h)=>{s&&(s.stopImmediatePropagation(),s.stopPropagation()),(!v.value||h.id!==v.value)&&(v.value=h.id,t.emit("selectedEvent",h))},S=s=>{const h=w.value.findIndex($=>$.id===s.id),b=h>-1,x=D.value.find($=>$.id===s.id);x&&(x.checked=s.checked),s.checked&&!b&&x&&w.value.push(x),!s.checked&&b&&w.value.splice(h,1),D.value.length>0&&(w.value.length===D.value.length?E.value=!0:E.value=!1),R(null,x),t.emit("previewMultiSelectedEvent",w.value)},z=s=>{var h;(h=a==null?void 0:a.value)==null||h.handleUploadEvent(s)},K=s=>{z({type:"upload",file:s})},j=(s,h)=>{let b=[];s.files&&s.files.length>0?b=s.files:typeof s.file<"u"&&(b=[s.file]),h=h||s.type,b.map(x=>{const $=P.value.findIndex(G=>{var le;return typeof x<"u"&&((le=G==null?void 0:G.file)==null?void 0:le.id)===x.id});$>-1&&(P.value[$]={type:h,file:x})})},ce=s=>{if(s.files){const h=s.files.map(b=>b.id);P.value=P.value.filter(b=>!(h.findIndex($=>{var G;return $===((G=b==null?void 0:b.file)==null?void 0:G.id)})>-1)),z({type:"hide",id:h.join(",")})}},ne=s=>{let h="warning";(s.type==="cancelled"||s.type==="removed")&&(h="success");const b=s.hasOwnProperty("message")?s.message:"";l.show({options:{type:h,message:b},position:"top-center"})},ae=s=>{if(s.type==="addedToQueue"&&typeof s.file<"u")P.value.push({type:s.type,file:s.file}),K(s.file);else if(s.type==="start")j(s,"start");else if(s.type==="done"){j(s,"done");const h=(s.files||[]).map(b=>({checked:!1,id:b.id,name:b.name,size:b.size,createTime:se(new Date,"yyyy-MM-dd HH:mm:ss")}));i.value=[...h,...D.value],ce(s),t.emit("fUploadDoneEvent",Ce(s.files||[])),t.emit("uploadDoneEvent",Ce(s.files||[]))}else if(s.type==="cancelled"||s.type==="removed"||s.type==="error"){const h=i.value.filter(b=>s.files&&s.files.findIndex(x=>b.id===x.id)<0);i.value=[...h],ne(s)}else s.type==="rejected"&&typeof s.file<"u"&&ne(s)};return e.onUnmounted(()=>{}),{disabled:o,uploadVisible:c,uploadDisabled:r,downloadButtonDisable:m,previewVisible:g,previewColumns:f,uploadFiles:P,innerFileInfos:D,previewEnableMulti:u,previewMultiSelectedLength:C,previewSelectAllBtnChecked:E,uploadEnableMulti:T,previewCurrentId:v,multiFileRemoveHandler:Q,previewMultiSelectChangeHandler:S,fileMultiDownloadHandler:O,selectOrCancelAllHandler:J,hasColumnHtmlFunc:B,showPreviewStateColumn:k,rowSelectedHandler:R,fileDownloadHandler:q,filePreviewHandler:X,fileRemoveHandler:V,handleStateChange:ae}}class ot{constructor(t,a){W(this,"queue");W(this,"uploadOpts",{allowedContentTypes:["*"],maxUploads:0,maxFileSize:12,concurrency:Number.POSITIVE_INFINITY,uploadedCount:0});W(this,"extendServerConfig",null);W(this,"uploadServerSer");W(this,"uploadContext",null);this.stateChangeRecord=t,this.serverToken=a,this.queue=[],this.uploadServerSer=ke.getServerAPI(this.serverToken)}setUploadContext(t){this.uploadContext=t}handleResultFromServer(t){var a,l;switch(t.type){case"removed":this.queue=this.queue.filter(i=>{var o;return((o=i.progress)==null?void 0:o.status)!==_.Remove}),t.hasOwnProperty("message")||(t.message="被删除"),this.stateChangeRecord.value=t;break;case"error":this.queue=this.queue.filter(i=>t.files&&t.files.findIndex(o=>i.id===o.id)<0),(a=this.uploadContext)==null||a.emit("stateChange",t);break;default:(l=this.uploadContext)==null||l.emit("stateChange",t)}}setOptions(t){t&&(this.uploadOpts=Object.assign(this.uploadOpts,t))}handleFiles(t){var l;const a=Array.from(t).reduce((i,o,c)=>{var p;const r=i.length+this.queue.length+1,g=this.rejectedReason(o.name,r,o.size);if(g.allowed)i=i.concat(o);else{const u=Te(o,c);(p=this.uploadContext)==null||p.emit("stateChange",{type:"rejected",file:u,message:g.message})}return i},[]);[].map.call(a,(i,o)=>{var r;const c=Te(i,o);this.queue.push(c),(r=this.uploadContext)==null||r.emit("stateChange",{type:"addedToQueue",file:c})}),(l=this.uploadContext)==null||l.emit("stateChange",{type:"allAddedToQueue"})}rejectedReason(t,a,l){let i=!1,o="";return this.queue.findIndex(r=>r.name===t)>-1?o="上传失败:已存在同名文件":this.uploadOpts.allowedContentTypes&&!Ke(this.uploadOpts.allowedContentTypes,t)?o=`上传失败:只允许上传${this.uploadOpts.allowedContentTypes.join(",")}类型的文档`:this.exceedMaxUpload(a)?o=`上传失败:文件总个数超出${this.uploadOpts.maxUploads}限制`:Ze(this.uploadOpts.maxFileSize,l)?l===0?o="上传失败:不允许文件为空":i=!0:o=`上传失败:单个文件大小超出${this.uploadOpts.maxFileSize}MB的限制`,{allowed:i,message:o}}exceedMaxUpload(t=0){if(!this.uploadOpts||!this.uploadOpts.maxUploads)return!1;const a=this.uploadOpts.uploadedCount||0;return this.uploadOpts.maxUploads>0&&(this.uploadOpts.maxUploads<=a||t+a>this.uploadOpts.maxUploads)}handleUploadEvent(t){var a,l;switch(t.type){case"upload":const i=this.queue.findIndex(r=>r===t.file);i!==-1&&t.file&&this.serverMethod({files:[this.queue[i]],event:t});break;case"remove":if(!((a=t==null?void 0:t.file)!=null&&a.id))return;const o=this.queue.findIndex(r=>{var g;return r.id===((g=t==null?void 0:t.file)==null?void 0:g.id)});if(o!==-1&&this.queue[o]&&this.queue[o].progress){const{progress:r}=this.queue[o];r&&(r.status=_.Remove)}this.serverMethod({files:[t.file],event:t});break;case"removeAll":const c=this.queue.filter(r=>{var g;return((g=r==null?void 0:r.progress)==null?void 0:g.status)===_.Queue});c.length&&((l=this.uploadContext)==null||l.emit("stateChange",{type:"cancelled",files:c,message:"删除附件成功"}),this.queue=this.queue.filter(r=>{var g;return((g=r==null?void 0:r.progress)==null?void 0:g.status)!==_.Queue})),this.queue.length&&(t.type="remove",this.queue.forEach(r=>{r.progress&&(r.progress.status=_.Remove)}),this.serverMethod({files:this.queue,event:t}));break}}setExtendServerConfig(t){this.extendServerConfig=t}serverMethod(t){let a;switch(t.event.type){case"upload":a=this.upload(t.files,t.event,l=>this.handleResultFromServer(l));break;case"removeAll":case"remove":a=this.remove(t.files,t.event,l=>this.handleResultFromServer(l));break;default:a=null}a&&a.then(l=>{this.handleResultFromServer(l)}).catch(l=>{this.handleResultFromServer(l)})}upload(t,a,l){var i;return(i=this.uploadContext)==null||i.emit("stateChange",{type:"start",files:t}),this.uploadServerSer.upload(t,a,this.extendServerConfig,l)}remove(t,a,l){return this.uploadServerSer.remove(t,a,this.extendServerConfig,l)}reset(){this.queue=[]}destroyed(){this.reset()}}const I=e.defineComponent({name:"FUploader",components:{"f-upload-progress":He,"f-preview-checkbox":ue,"f-file-select":pe},props:ee,emits:["filePreviewEvent","fileDownloadEvent","previewMultiSelectedEvent","selectedEvent","fileRemoveEvent","fileRemovedEvent","fUploadDoneEvent","uploadDoneEvent"],setup(n,t){const a=e.ref(),l=new ot(a,n.uploadServerToken);e.provide("uploaderService",l);const i=e.ref(n.customInfo),o=ve(n.uploadOptions,{allowedContentTypes:["*"],maxUploads:0,maxFileSize:"12MB"}),c=e.ref(null),{disabled:r,uploadVisible:g,uploadDisabled:p,downloadButtonDisable:u,previewVisible:m,previewColumns:f,uploadFiles:T,innerFileInfos:N,previewEnableMulti:E,previewMultiSelectedLength:w,previewSelectAllBtnChecked:C,uploadEnableMulti:P,previewCurrentId:v,multiFileRemoveHandler:H,previewMultiSelectChangeHandler:D,fileMultiDownloadHandler:q,selectOrCancelAllHandler:X,rowSelectedHandler:V,hasColumnHtmlFunc:B,showPreviewStateColumn:k,fileDownloadHandler:A,filePreviewHandler:O,fileRemoveHandler:Q,handleStateChange:J}=Ee(n,t,c);e.watch(a,d=>{switch(J(d),d.type){case"removed":t.emit("fileRemovedEvent",d.files[0]);break}});const R=e.computed(()=>N.value.length>0);function S(){var d;return be((o==null?void 0:o.allowedContentTypes)||[])?e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("支持类型:")]),e.createVNode("span",{class:"support-info--item-detail",style:"margin-right:4px;"},[(d=o.allowedContentTypes)==null?void 0:d.join(""),e.createTextVNode(",")])]):""}function z(){return Ne((o==null?void 0:o.maxFileSize)||"")?e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("单个文件限制:")]),e.createVNode("span",{class:"support-info--item-detail"},[o.maxFileSize,e.createTextVNode(",   ")])]):""}function K(){return((o==null?void 0:o.maxUploads)||0)>0&&e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("文件总数限制:")]),e.createVNode("span",{class:"support-info--item-detail"},[o.maxUploads,e.createTextVNode("个")])])}function j(){return g.value&&!p.value&&!r.value?e.createVNode("div",{class:"ffileupload--support-info"},[i.value?e.createVNode("ul",{class:"support-info--wrapper"},[e.createVNode("li",null,[e.createVNode("span",{class:"support-info--item-detail",innerHTML:i.value},null)])]):e.createVNode("ul",{class:"support-info--wrapper"},[S(),z(),K()])]):null}function ce(d){var y,F,L;return e.createVNode("div",{class:"uploadAndpreview--title-container"},[e.createVNode("div",{class:"ffilepreview--item-icon"},[e.createVNode("span",{class:["ffilepreview--filetype-icon",Ve(((y=d.file)==null?void 0:y.name)||"")]},null)]),e.createVNode("div",{class:"uploadAndpreview--right"},[e.createVNode("a",{class:"item-content--title",title:(F=d.file)==null?void 0:F.name},[((L=d.file)==null?void 0:L.name)||"无名称"]),e.createVNode(e.resolveComponent("f-upload-progress"),{status:d.type==="done"?"success":"active",percent:xe(d),maxWidth:300},null)])])}function ne(d){return e.createVNode("div",{class:"uploadAndpreview--title-container"},[e.createVNode("div",{class:"ffilepreview--item-icon"},[e.createVNode("span",{class:["ffilepreview--filetype-icon",Ve(d.name)]},null)]),e.createVNode("div",{class:"uploadAndpreview--right"},[e.createVNode("a",{class:["item-content--title","previewButtonDisable.value?'no-preview':''"],title:d.name,onClick:y=>O(y,d)},[d.name])])])}function ae(d,y,F){return e.createVNode("div",{class:"uploadAndpreview--filesize-container"},[d==="preview"&&F?e.createVNode("span",null,[Ge(F.size)]):null,d==="upload"&&y?e.createVNode("span",null,[xe(y)]):null])}function s(d,y){return y&&y.type==="error"?e.createVNode("div",{class:"uploadAndpreview--state-container"},[e.createVNode("p",{class:"upload-state--uploaded"},[e.createVNode("i",{class:"f-icon f-icon-message_warning text-danger"},null),e.createVNode("span",null,[e.createTextVNode("存在异常")])])]):e.createVNode("div",{class:"uploadAndpreview--state-container"},[d==="upload"?y&&y.type!=="done"?e.createVNode("p",{class:"upload-state--uploading"},[e.createVNode("i",{class:"f-icon f-icon-clock text-warning"},null),e.createVNode("span",null,[e.createTextVNode("正在上传...")])]):e.createVNode("p",{class:"upload-state--uploaded"},[e.createVNode("i",{class:"f-icon f-icon-success text-success"},null),e.createVNode("span",null,[e.createTextVNode("上传成功")])]):d==="preview"?e.createVNode("p",{class:"upload-state--uploaded"},[e.createVNode("i",{class:"f-icon f-icon-success text-success"},null),e.createVNode("span",null,[e.createTextVNode("已上传")])]):""])}function h(d){return e.createVNode("div",{class:"uploadAndpreview--action-container"},[u.value?"":e.createVNode("button",{class:"btn preview-btn",title:"下载",onClick:y=>A(y,d)},[e.createVNode("span",{class:"f-icon f-icon-enclosure_download"},null)]),n.previewButtonDisable?"":e.createVNode("button",{class:"btn preview-btn",title:"预览",onClick:y=>O(y,d)},[e.createVNode("span",{class:"f-icon f-icon-enclosure_browse"},null)]),n.deleteButtonDisable?"":e.createVNode("button",{class:"btn preview-btn",title:"删除",onClick:y=>Q(y,d,l)},[e.createVNode("span",{class:"f-icon f-icon-enclosure_delete",style:"top: -1px"},null)])])}function b(d){return e.createVNode("div",{class:"uploadAndpreview--date-container"},[d.createTime||""])}function x(d,y,F,L){let U;if(d=d||"preview",L.formatter)return U=L.formatter(F[L.field]||"",d,d==="preview"?F:y,L),U;if(d==="preview"&&F)switch(L.field){case"state":U=s("preview",null);break;case"name":U=ne(F);break;case"action":U=h(F);break;case"size":U=ae(d,y,F);break;case"createTime":U=b(F);break;default:U=`<div>${F[L.field]||""} </div>`}if(d==="upload"&&y)switch(L.field){case"state":U=s("upload",y);break;case"name":U=ce(y);break;case"size":U=ae(d,y,F);break;default:U=""}return U}function $(){return g.value?e.createVNode("div",{class:"header--left-container"},[e.createVNode(e.resolveComponent("f-file-select"),{ref:c,disabled:p.value,selectText:n.selectText,uploadedCount:n.uploadedCount,uploadServerToken:n.uploadServerToken,enableMulti:P.value,options:n.uploadOptions,extendConfig:n.extendConfig,onStateChange:d=>J(d)},null)]):null}function G(){return!g.value&&m.value&&R.value?e.createVNode("div",{class:"header--left-container header--countInfo"},[e.createVNode("p",{class:"m-0"},[e.createTextVNode("共"),e.createVNode("span",{class:"count"},[T.value.length+N.value.length]),e.createTextVNode("个附件"),w.value>0?e.createVNode(e.Fragment,null,[e.createTextVNode("(已选"),e.createVNode("span",{class:"count-selected"},[w.value]),e.createTextVNode("个)")]):""])]):null}function le(){return(!u.value||!n.deleteButtonDisable)&&m.value&&R.value?e.createVNode("div",{class:"header--right-container"},[u.value?null:e.createVNode("button",{class:"btn btn-primary f-btn-ml",disabled:w.value===0,onClick:F=>q(F)},[e.createTextVNode("下载")]),n.deleteButtonDisable.value?null:e.createVNode("button",{class:"btn btn-secondary f-btn-ml",disabled:w.value===0,onClick:F=>H(F)},[e.createTextVNode("删除")])]):null}function Be(){return f.value.map(d=>k(d)?e.createVNode("th",{style:{width:d.width?d.width+"px":"auto"},class:[!r.value&&d.checkbox&&d.checkbox?"td--hascheckbox":""]},[!r.value&&E.value&&d.checkbox?e.createVNode(e.resolveComponent("f-preview-checkbox"),{class:"preview-checkbox",id:"previewMultiBtn",checked:C.value,onCheckedChange:y=>X(y)},null):null,d.title]):null)}function ct(){return T.value.map(d=>{var y;return e.createVNode("tr",{class:"uploadAndpreview--upload-item",id:"uploadAndpreview--upload-item"+(((y=d==null?void 0:d.file)==null?void 0:y.id)||"")},[f.value.map(F=>{var L;return e.createVNode("td",{class:[!r.value&&F.checkbox&&F.checkbox?"td--hascheckbox":""]},[E.value&&F.checkbox?e.createVNode(e.resolveComponent("f-preview-checkbox"),{id:(L=d==null?void 0:d.file)==null?void 0:L.id,checked:d.checked,disabled:d.type!=="done",class:"preview-checkbox",onCheckedChange:U=>D(U)},null):null,B(F,"upload")?x("upload",d,null,F):null])})])})}function De(){return N.value.map(d=>e.createVNode("tr",{class:["uploadAndpreview--preview-item",v.value===d.id?"uploadAndpreview--currentfile":""],id:"uploadAndpreview--preview-item"+d.id,onClick:y=>V(y,d)},[f.value.map(y=>k(y)?e.createVNode("td",{class:[!r.value&&y.checkbox&&y.checkbox?"td--hascheckbox":""]},[!r.value&&E.value&&y.checkbox?e.createVNode(e.resolveComponent("f-preview-checkbox"),{id:d.id,checked:d.checked,class:"preview-checkbox",onCheckedChange:F=>D(F)},null):null,B(y,"preview")?x("preview",null,d,y):e.createVNode("div",{class:"text-truncate",innerHTML:x("preview",null,d,y)},null)]):null)]))}return()=>r.value?e.createVNode("div",{class:"fv-upload-and-preview"},[R.value?null:j(),m.value?e.createVNode("div",{class:"uploadAndpreview--content"},[R.value?e.createVNode("table",{class:"table table-bordered uploadAndpreview--table"},[e.createVNode("thead",null,[Be()]),e.createVNode("tbody",null,[De()])]):e.createVNode("p",{class:"uploadAndpreview--nodata"},[e.createTextVNode("无附件信息")])]):null,R.value?j():null]):e.createVNode("div",{class:"fv-upload-and-preview"},[e.createVNode("div",{class:"uploadAndpreview--header"},[$(),G(),le()]),R.value?null:j(),m.value||g.value?e.createVNode("div",{class:"uploadAndpreview--content"},[(u.value||!g.value)&&T.value.length===0&&!R.value?e.createVNode("p",{class:"uploadAndpreview--nodata"},[e.createTextVNode("无附件信息")]):"",T.value.length>0||R?e.createVNode("table",{class:"table table-bordered uploadAndpreview--table"},[e.createVNode("thead",null,[Be()]),e.createVNode("tbody",null,[ct(),De()])]):null]):null,R.value?j():null])}});function it(n,t,a){var X;const l="",i="",o=e.ref();function c(){return(t==null?void 0:t.schema.componentType)!=="frame"}function r(){return!1}function g(){return(t==null?void 0:t.schema.componentType)!=="frame"}function p(){return(t==null?void 0:t.schema.componentType)==="frame"}function u(V){if(!V||!V.value)return null;if(V.value.schema&&V.value.schema.type==="component")return V.value;const B=e.ref(V==null?void 0:V.value.parent),k=u(B);return k||null}function m(V=t){var O;const{componentInstance:B,designerItemElementRef:k}=V;if(!B||!B.value)return null;const{getCustomButtons:A}=B.value;return B.value.canMove||A&&((O=A())!=null&&O.length)?k:m(V.parent)}function f(V){return!!a}function T(){return(t==null?void 0:t.schema.label)||(t==null?void 0:t.schema.title)||(t==null?void 0:t.schema.name)}function N(){}function E(V,B){var k;!V||!B||(k=t==null?void 0:t.setupContext)==null||k.emit("dragEnd")}function w(V,B){const{componentType:k}=V;let A=he(k,V,B);const O=k.toLowerCase().replace(/-/g,"_");return A&&!A.id&&A.type===k&&(A.id=`${O}_${Math.random().toString().slice(2,6)}`),A}function C(V){}function P(...V){}function v(V){if(!V)return;const B=t==null?void 0:t.schema,{formSchemaUtils:k}=V;if(B&&k.getExpressions().length){const A=k.getExpressions().findIndex(O=>O.target===B.id);A>-1&&k.getExpressions().splice(A,1)}}function H(V){v(V),t!=null&&t.schema.contents&&t.schema.contents.map(B=>{let k=B.id;B.type==="component-ref"&&(k=B.component);const A=n.value.querySelectorAll(`#${k}-design-item`);A!=null&&A.length&&Array.from(A).map(O=>{var Q;(Q=O==null?void 0:O.componentInstance)!=null&&Q.value.onRemoveComponent&&O.componentInstance.value.onRemoveComponent(V)})})}function D(){}function q(V){}return o.value={canMove:c(),canSelectParent:r(),canDelete:g(),canNested:!p(),contents:t==null?void 0:t.schema.contents,elementRef:n,parent:(X=t==null?void 0:t.parent)==null?void 0:X.componentInstance,schema:t==null?void 0:t.schema,styles:l,designerClass:i,canAccepts:f,getBelongedComponentInstance:u,getDraggableDesignItemElement:m,getDraggingDisplayText:T,getPropConfig:P,getDragScopeElement:N,onAcceptMovedChildElement:E,onChildElementMovedOut:C,addNewChildComponentSchema:w,triggerBelongedComponentToMoveWhenMoved:e.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:e.ref(!1),onRemoveComponent:H,getCustomButtons:D,onPropertyChanged:q},o}const st=e.defineComponent({name:"FUploaderDesign",components:{"f-preview-checkbox":ue,"f-file-select":pe},props:ee,emits:["filePreviewEvent","fileDownloadEvent","previewMultiSelectedEvent","selectedEvent","fileRemoveEvent","fUploadDoneEvent","uploadDoneEvent"],setup(n,t){const a=e.ref(n.customInfo),l=ve(n.uploadOptions,{allowedContentTypes:["*"],maxUploads:0,maxFileSize:"12MB"}),i=e.ref(null),o=[{id:"attach01",name:""},{id:"attach02",name:""}],{disabled:c,uploadVisible:r,uploadDisabled:g,downloadButtonDisable:p,previewVisible:u,previewColumns:m,previewEnableMulti:f,previewCurrentId:T,showPreviewStateColumn:N}=Ee(n,t,i);function E(){var S;return be((l==null?void 0:l.allowedContentTypes)||[])?e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("支持类型:")]),e.createVNode("span",{class:"support-info--item-detail",style:"margin-right:4px;"},[(S=l.allowedContentTypes)==null?void 0:S.join(""),e.createTextVNode(",")])]):null}function w(){return Ne((l==null?void 0:l.maxFileSize)||"")?e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("单个文件限制:")]),e.createVNode("span",{class:"support-info--item-detail"},[l.maxFileSize,e.createTextVNode(",   ")])]):null}function C(){return((l==null?void 0:l.maxUploads)||0)>0?e.createVNode("li",null,[e.createVNode("span",null,[e.createTextVNode("文件总数限制:")]),e.createVNode("span",{class:"support-info--item-detail"},[l.maxUploads,e.createTextVNode("个")])]):null}function P(){return r.value&&!g.value&&!c.value?e.createVNode("div",{class:"ffileupload--support-info"},[a.value?e.createVNode("ul",{class:"support-info--wrapper"},[e.createVNode("li",null,[e.createVNode("span",{class:"support-info--item-detail",innerHTML:a.value},null)])]):e.createVNode("ul",{class:"support-info--wrapper"},[E(),w(),C()])]):null}function v(S){return e.createVNode("div",{class:"uploadAndpreview--title-container"},[e.createVNode("div",{class:"ffilepreview--item-icon"},[e.createVNode("span",{class:"ffilepreview--filetype-icon"},null)]),e.createVNode("div",{class:"uploadAndpreview--right"},[e.createVNode("span",{class:"ffilepreview--preview-block"},null)])])}function H(S){return e.createVNode("div",{class:"uploadAndpreview--filesize-container"},[e.createVNode("span",{class:"ffilepreview--preview-block"},null)])}function D(){return e.createVNode("div",{class:"uploadAndpreview--state-container"},[e.createVNode("p",{class:"upload-state--uploaded"},[e.createVNode("i",{class:"f-icon f-icon-success text-success"},null),e.createVNode("span",null,[e.createTextVNode("已上传")])])])}function q(S){return e.createVNode("div",{class:"uploadAndpreview--action-container"},[p.value?"":e.createVNode("button",{class:"btn preview-btn",title:"下载"},[e.createVNode("span",{class:"f-icon f-icon-enclosure_download"},null)]),n.previewButtonDisable?"":e.createVNode("button",{class:"btn preview-btn",title:"预览"},[e.createVNode("span",{class:"f-icon f-icon-enclosure_browse"},null)]),n.deleteButtonDisable?"":e.createVNode("button",{class:"btn preview-btn",title:"删除"},[e.createVNode("span",{class:"f-icon f-icon-enclosure_delete",style:"top: -1px"},null)])])}function X(S){return e.createVNode("div",{class:"uploadAndpreview--date-container"},[e.createTextVNode(" "),e.createVNode("span",{class:"ffilepreview--preview-block"},null)])}function V(S,z,K){let j=null;if(S=S||"preview",S==="preview"&&z)switch(K.field){case"state":j=D();break;case"name":j=v();break;case"action":j=q();break;case"size":j=H();break;case"createTime":j=X();break;default:j=e.createVNode("span",{class:"ffilepreview--preview-block"},null)}return j}function B(){return r.value?e.createVNode("div",{class:"header--left-container"},[e.createVNode(e.resolveComponent("f-file-select"),{ref:i,disabled:g.value,selectText:n.selectText},null)]):null}function k(){return(!p.value||!n.deleteButtonDisable)&&u.value?e.createVNode("div",{class:"header--right-container"},[p.value?null:e.createVNode("button",{class:"btn btn-primary f-btn-ml",disabled:!0},[e.createTextVNode("下载")]),n.deleteButtonDisable.value?null:e.createVNode("button",{class:"btn btn-secondary f-btn-ml",disabled:!0},[e.createTextVNode("删除")])]):null}function A(){return m.value.map(S=>N(S)?e.createVNode("th",{style:{width:S.width?S.width+"px":"auto"},class:[!c.value&&S.checkbox&&S.checkbox?"td--hascheckbox":""]},[!c.value&&f.value&&S.checkbox?e.createVNode(e.resolveComponent("f-preview-checkbox"),{class:"preview-checkbox",id:"previewMultiBtn"},null):null,S.title]):null)}function O(){return o.map(S=>e.createVNode("tr",{class:["uploadAndpreview--preview-item",T.value===S.id?"uploadAndpreview--currentfile":""],id:"uploadAndpreview--preview-item"+S.id},[m.value.map(z=>N(z)?e.createVNode("td",{class:[!c.value&&z.checkbox&&z.checkbox?"td--hascheckbox":""]},[!c.value&&f.value&&z.checkbox?e.createVNode(e.resolveComponent("f-preview-checkbox"),{class:"preview-checkbox"},null):null,V("preview",S,z)]):null)]))}e.onBeforeMount(()=>{});const Q=e.ref(),J=e.inject("design-item-context"),R=it(Q,J);return e.onMounted(()=>{Q.value.componentInstance=R}),t.expose(R.value),()=>e.createVNode("div",{class:"fv-upload-and-preview",ref:Q},[u.value||r.value?e.createVNode(e.Fragment,null,[c.value?null:e.createVNode("div",{class:"uploadAndpreview--header"},[B(),k()]),e.createVNode("div",{class:"uploadAndpreview--content"},[e.createVNode("table",{class:"table table-bordered uploadAndpreview--table"},[e.createVNode("thead",null,[A()]),e.createVNode("tbody",null,[O()])])]),P()]):null])}});I.register=(n,t,a,l)=>{n.uploader=I,t.uploader=ie},I.registerDesigner=(n,t,a)=>{n.uploader=st,t.uploader=ie};const rt=de.withInstall(I);M.FUploader=I,M.UploadServerAPI=ye,M.default=rt,M.propsResolver=ie,M.uploaderProps=ee,Object.defineProperties(M,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});