@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines • 64.6 kB
JavaScript
(function(U,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js"),require("vue-i18n"),require("../locale/index.umd.js"),require("../dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js","vue-i18n","../locale/index.umd.js","../dynamic-resolver/index.umd.js"],n):(U=typeof globalThis<"u"?globalThis:U||self,n(U.uploader={},U.Vue,U.LodashES,U.common,U.vueI18n,U.locale,U.dynamicResolver))})(this,function(U,n,I,ce,je,Ue,$e){"use strict";var Ut=Object.defineProperty;var $t=(U,n,I)=>n in U?Ut(U,n,{enumerable:!0,configurable:!0,writable:!0,value:I}):U[n]=I;var Z=(U,n,I)=>$t(U,typeof n!="symbol"?n+"":n,I);const ze={checked:{type:Boolean,default:!1},id:{type:String,default:""},disabled:{type:Boolean,default:!1}},qe={showInfo:{type:Boolean,default:!0},status:{type:String,default:"normal"},percent:{type:Number,default:0},maxWidth:{type:Number,default:0}},Le={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:""}},_e=n.defineComponent({name:"FUploadProgress",props:qe,setup(t,e){const{showInfo:o,status:r,maxWidth:i,percent:a}=n.toRefs(t);return()=>n.createVNode("div",{class:["f-progress upload-progress","upload-progress-status-"+r.value,"f-progress-status-"+r.value,"upload-progress-line",o.value?"upload-progress-show-info":""]},[n.createVNode("div",{class:"upload-progress-outer",style:{"max-width":i.value>0?i.value+"px":"auto"}},[n.createVNode("div",{class:"upload-progress-inner"},[n.createVNode("div",{class:"upload-progress-bg f-progress-bg",style:{width:a.value+"%"}},null)])]),o.value?n.createVNode("span",{class:"upload-progress-text"},[r.value==="error"||r.value==="success"?n.createVNode("span",{class:["upload-progress-text-icon f-icon","f-icon-"+r.value]},null):n.createVNode(n.Fragment,null,[a.value,n.createTextVNode("%")])]):""])}}),de=n.defineComponent({name:"FPreviewCheckbox",props:ze,emits:["checkedChange"],setup(t,e){const{disabled:o}=n.toRefs(t),r=n.ref(t.checked),i=a=>{a.stopPropagation(),o.value||(r.value=!r.value,e.emit("checkedChange",{checked:r.value,id:t.id}))};return n.watch(()=>t.checked,a=>{r.value=a}),()=>n.createVNode("div",{class:"preview-checkbox d-inline-flex align-middle"},[n.createVNode("div",{class:"custom-control custom-checkbox f-checkradio-single m-0"},[n.createVNode("input",{title:"custom-control-input",class:"custom-control-input",type:"checkbox",disabled:o.value,checked:r.value},null),n.createVNode("label",{class:"custom-control-label",onClick:a=>i(a),onMousedown:a=>a.stopPropagation()},null)])])}}),ue=n.defineComponent({name:"FFileSelect",props:Le,emits:["change","stateChange"],setup(t,e){const o=n.inject("uploaderService");o.setUploadContext(e);const r=n.getCurrentInstance(),i=n.ref("*");let a;const l=()=>{a.files&&(e.emit("change",a.files),o.handleFiles(a.files),a.value=null)};function f(){a.value=null,o.reset()}n.watch(()=>t.disabled,()=>{f()}),n.watch(()=>t.uploadedCount,h=>{o.setOptions({uploadedCount:h})}),n.watch(()=>t.extendConfig,h=>{o.setExtendServerConfig(h)});function T(h){h&&h.stopPropagation(),a.click()}function v(h){o.handleUploadEvent(h)}return n.onMounted(()=>{var h,d;a=(h=r==null?void 0:r.proxy)==null?void 0:h.$refs.uploadInput,f(),o.setOptions(t.options),o.setExtendServerConfig(t.extendConfig),i.value=(((d=t.options)==null?void 0:d.allowedContentTypes)||["*"]).join(",")}),n.onUnmounted(()=>{}),e.expose({handleUploadEvent:v}),()=>n.createVNode(n.Fragment,null,[n.createVNode("input",{ref:"uploadInput",type:"file",class:"ffileupload--browser",disabled:t.disabled,multiple:t.enableMulti,accept:i.value,onChange:()=>l(),style:"width: 10px",title:"uploadInput"},null),n.createVNode("div",{class:["upload-container",t.disabled?"f-state-disabled":""],onClick:h=>T(h),title:t.selectText},[n.createVNode("i",{class:"f-icon f-icon-upload upload-icon",style:"top: 2px;position: relative;"},null),t.selectText])])}});function pe(t,e){let o;function r(d){const{properties:p,title:b,ignore:c}=d,s=c&&Array.isArray(c),m=Object.keys(p).reduce((F,E)=>((!s||!c.find(S=>S===E))&&(F[E]=p[E].type==="object"&&p[E].properties?r(p[E]):I.cloneDeep(p[E].default)),F),{});if(b&&(!s||!c.find(F=>F==="id"))){const F=b.toLowerCase().replace(/-/g,"_");m.id=`${F}_${Math.random().toString().slice(2,6)}`}return m}function i(d){const{properties:p,title:b,required:c}=d;if(c&&Array.isArray(c)){const s=c.reduce((m,F)=>(m[F]=p[F].type==="object"&&p[F].properties?r(p[F]):I.cloneDeep(p[F].default),m),{});if(b&&c.find(m=>m==="id")){const m=b.toLowerCase().replace(/-/g,"_");s.id=`${m}_${Math.random().toString().slice(2,6)}`}return s}return{type:b}}function a(d,p={},b){const c=t[d];if(c){let s=i(c);const m=e[d];return s=m?m({getSchemaByType:a},s,p,b):s,o!=null&&o.appendIdentifyForNewControl&&o.appendIdentifyForNewControl(s),s}return null}function l(d,p){const b=r(p);return Object.keys(b).reduce((c,s)=>(Object.prototype.hasOwnProperty.call(d,s)&&(c[s]&&I.isPlainObject(c[s])&&I.isPlainObject(d[s]||!d[s])?Object.assign(c[s],d[s]||{}):c[s]=d[s]),c),b),b}function f(d,p){return Object.keys(d).filter(c=>d[c]!=null).reduce((c,s)=>{if(p.has(s)){const m=p.get(s);if(typeof m=="string")c[m]=d[s];else{const F=m(s,d[s],d);Object.assign(c,F)}}else c[s]=d[s];return c},{})}function T(d,p,b=new Map){const c=l(d,p);return f(c,b)}function v(d){var b;const p=d.type;if(p){const c=t[p];if(!c)return d;const s=l(d,c),m=((b=d.editor)==null?void 0:b.type)||"";if(m){const F=t[m],E=l(d.editor,F);s.editor=E}return s}return d}function h(d){o=d}return{getSchemaByType:a,resolveSchemaWithDefaultValue:v,resolveSchemaToProps:T,mappingSchemaToProps:f,setDesignerContext:h}}const fe={},me={},{getSchemaByType:zt,resolveSchemaWithDefaultValue:Qe,resolveSchemaToProps:We,mappingSchemaToProps:Ge,setDesignerContext:qt}=pe(fe,me);function Ye(t={}){function e(v,h,d,p){if(typeof d=="number")return p[v].length===d;if(typeof d=="object"){const b=Object.keys(d)[0],c=d[b];if(b==="not")return Number(p[v].length)!==Number(c);if(b==="moreThan")return Number(p[v].length)>=Number(c);if(b==="lessThan")return Number(p[v].length)<=Number(c)}return!1}function o(v,h,d,p){return p[v]&&p[v].propertyValue&&String(p[v].propertyValue.value)===String(d)}const r=new Map([["length",e],["getProperty",o]]);Object.keys(t).reduce((v,h)=>(v.set(h,t[h]),v),r);function i(v,h){const d=v;return typeof h=="number"?[{target:d,operator:"length",param:null,value:Number(h)}]:typeof h=="boolean"?[{target:d,operator:"getProperty",param:v,value:!!h}]:typeof h=="object"?Object.keys(h).map(p=>{if(p==="length")return{target:d,operator:"length",param:null,value:h[p]};const b=p,c=h[p];return{target:d,operator:"getProperty",param:b,value:c}}):[]}function a(v){return Object.keys(v).reduce((d,p)=>{const b=i(p,v[p]);return d.push(...b),d},[])}function l(v,h){if(r.has(v.operator)){const d=r.get(v.operator);return d&&d(v.target,v.param,v.value,h)||!1}return!1}function f(v,h){return a(v).reduce((b,c)=>b&&l(c,h),!0)}function T(v,h){const d=Object.keys(v),p=d.includes("allOf"),b=d.includes("anyOf"),c=p||b,F=(c?v[c?p?"allOf":"anyOf":"allOf"]:[v]).map(S=>f(S,h));return p?!F.includes(!1):F.includes(!0)}return{parseValueSchema:T}}const Xe={convertTo:(t,e,o,r)=>{t.appearance||(t.appearance={}),t.appearance[e]=o},convertFrom:(t,e,o)=>t.appearance?t.appearance[e]:t[e]},Je={convertFrom:(t,e,o)=>t.buttons&&t.buttons.length?`共 ${t.buttons.length} 项`:"无"},Ze={convertTo:(t,e,o,r)=>{t.editor&&(t.editor[e]=o)},convertFrom:(t,e,o)=>t.editor&&Object.prototype.hasOwnProperty.call(t.editor,e)?t.editor[e]:t[e]},he={button:{type:"button",name:"按钮"},"response-toolbar":{type:"response-toolbar",name:"工具栏"},"response-toolbar-item":{type:"response-toolbar-item",name:"按钮"},"content-container":{type:"content-container",name:"容器"},"input-group":{type:"input-group",name:"文本"},textarea:{type:"textarea",name:"多行文本"},lookup:{type:"lookup",name:"帮助"},"number-spinner":{type:"number-spinner",name:"数值"},"date-picker":{type:"date-picker",name:"日期"},switch:{type:"switch",name:"开关"},"radio-group":{type:"radio-group",name:"单选组"},"check-box":{type:"check-box",name:"复选框"},"check-group":{type:"check-group",name:"复选框组"},"combo-list":{type:"combo-list",name:"下拉列表"},"response-form":{type:"response-form",name:"卡片面板"},"response-layout":{type:"response-layout",name:"布局容器",icon:"response-layout-3"},"response-layout-item":{type:"response-layout-item",name:"布局",icon:"response-layout-1"},"tree-grid":{type:"tree-grid",name:"树表格"},"tree-grid-column":{type:"tree-grid-column",name:"树表格列"},"data-grid":{type:"data-grid",name:"表格"},"data-grid-column":{type:"data-grid-column",name:"表格列"},module:{type:"Module",name:"模块"},component:{type:"component",name:"组件"},tabs:{type:"tabs",name:"标签页"},"tab-page":{type:"tab-page",name:"标签页项",dependentParentControl:"Tab"},"tab-toolbar-item":{type:"tab-toolbar-item",name:"标签页工具栏按钮"},"html-template":{type:"html-template",name:"模板容器"},"time-picker":{type:"time-picker",name:"时间选择"},section:{type:"section",name:"分组面板"},"section-toolbar":{type:"section-toolbar",name:"分组面板工具栏"},"section-toolbar-item":{type:"section-toolbar-item",name:"分组面板按钮"},splitter:{type:"splitter",name:"分栏面板"},"splitter-pane":{type:"splitter-pane",name:"分栏面板项",dependentParentControl:"Splitter"},"component-ref":{type:"component-ref",name:"组件引用节点"},uploader:{type:"uploader",name:"附件上传"},"page-header":{type:"page-header",name:"页头"},"page-footer":{type:"page-footer",name:"页脚"},"tab-toolbar":{type:"tab-toolbar",name:"标签页工具栏"},fieldset:{type:"fieldset",name:"分组"},"query-solution":{type:"query-solution",name:"筛选方案"},drawer:{type:"drawer",name:"抽屉"},"external-container":{type:"external-container",name:"外部容器",icon:"content-container"},"list-nav":{type:"list-nav",name:"列表导航"},"list-view":{type:"list-view",name:"列表"},"filter-bar":{type:"filter-bar",name:"筛选条"},"language-textbox":{type:"language-textbox",name:"多语输入框"}},Ie={convertFrom:(t,e,o)=>{var i;const r=t.editor&&t.editor[e]?t.editor[e]:t[e];return((i=he[r])==null?void 0:i.name)||r}},Ke={convertTo:(t,e,o,r)=>{t[e]=t[e]},convertFrom:(t,e,o)=>t.editor?o.getRealEditorType(t.editor.type):""},et={convertTo:(t,e,o,r)=>{(t.type==="data-grid-column"||t.type==="tree-grid-column")&&(t.formatter?t.formatter[e]=o:t.formatter={[e]:o})},convertFrom:(t,e,o)=>{if(t.formatter){if(e==="trueText")return t.formatter.trueText;if(e==="falseText")return t.formatter.falseText;if(e==="prefix")return t.formatter.prefix;if(e==="suffix")return t.formatter.suffix;if(e==="precision")return t.formatter.precision;if(e==="decimal")return t.formatter.decimal;if(e==="thousand")return t.formatter.thousand;if(e==="tempDateFormat")return t.formatter.dateFormat==="yyyy年MM月dd日"?"yearMonthDay":t.formatter.dateFormat==="yyyy-MM-dd HH:mm:ss"?"yyyy-MM-ddTHH:mm:ss":t.formatter.dateFormat==="yyyy/MM/dd HH:mm:ss"?"yyyy/MM/ddTHH:mm:ss":t.formatter.dateFormat==="yyyy年MM月dd日 HH时mm分ss秒"?"yearMonthDayHourMinuteSecond":t.formatter.tempDateFormat||t.formatter.dateFormat||"yyyy-MM-dd";if(e==="customFormat")return t.formatter.customFormat;if(e==="type")return t.formatter.type||"none"}return"none"}},tt={convertTo:(t,e,o,r)=>{t.command?t.command[e]=o:t.command={[e]:o},e==="enable"&&o&&(t.command.commands||(t.command.commands=[{text:"编辑",type:"primary",command:"edit"},{text:"删除",type:"danger",command:"remove"}]))},convertFrom:(t,e,o)=>t.command&&e==="enable"?t.command.enable:""},nt={convertTo:(t,e,o,r)=>{t.column?t.column[e]=o:t.column={[e]:o},e==="fitColumns"&&o&&(t.column.fitMode||(t.column.fitMode="average"))},convertFrom:(t,e,o)=>{if(t.column){if(e==="fitColumns")return t.column.fitColumns;if(e==="fitMode")return t.column.fitMode}return""}},ot={convertTo:(t,e,o,r)=>{t.summary?t.summary[e]=o:t.summary={[e]:o},e==="enable"&&o&&(t.summary?t.summary.groupFields||(t.summary.groupFields=[]):t.summary={enable:o,groupFields:[]})},convertFrom:(t,e,o)=>t.summary&&e==="enable"?t.summary.enable:t.type==="data-grid-column"?t.enableSummary===void 0?!1:t.enableSummary:""},rt={convertTo:(t,e,o,r)=>{t.group?t.group[e]=o:t.group={[e]:o},e==="enable"&&o&&(t.group?t.group.groupFields||(t.group.groupFields=[]):t.group={enable:o,groupFields:[],showSummary:!1})},convertFrom:(t,e,o)=>{if(t.group){if(e==="enable")return t.group.enable;if(e==="showSummary")return t.group.showSummary}}},at={convertFrom:(t,e)=>t.binding?t.binding.path:"",convertTo:(t,e,o)=>{if(o&&o.length>0){const r=o[0];t.binding||(t.binding={}),t.binding.type="Form",t.binding.path=r.bindingField,t.binding.field=r.id,t.binding.fullPath=r.path,t.path=r.bindingPath}}},it={convertTo:(t,e,o,r)=>{t.pagination||(t.pagination={}),t.pagination[e]=o},convertFrom:(t,e,o)=>t.pagination?t.pagination[e]:t[e]},lt={convertTo:(t,e,o,r)=>{t.rowNumber||(t.rowNumber={}),t.rowNumber[e]=o},convertFrom:(t,e,o)=>t.rowNumber?t.rowNumber[e]:t[e]},st={convertTo:(t,e,o,r)=>{t.selection||(t.selection={}),t.selection[e]=o},convertFrom:(t,e,o)=>t.selection?t.selection[e]:t[e]},ct={convertFrom:(t,e,o)=>t[e]&&t[e].length?`共 ${t[e].length} 项`:""},dt={convertFrom:(t,e)=>t[e]||"",convertTo:(t,e,o)=>{t[e]=o}},ut={convertTo:(t,e,o,r)=>{t.size||(t.size={}),t.size[e]=o},convertFrom:(t,e,o)=>t.size?t.size[e]:t[e]},pt={convertFrom:(t,e,o)=>{var r,i;return(r=t.formatter)!=null&&r.data&&e==="formatterEnumData"&&!t.formatterEnumData?(i=t.formatter)==null?void 0:i.data:t.formatterEnumData}},ft={convertTo:(t,e,o,r)=>{t.sort||(t.sort={}),t.sort[e]=o},convertFrom:(t,e,o)=>{var r,i;if(e==="mode")return((r=t.sort)==null?void 0:r.mode)||"client";if(e==="multiSort")return!!((i=t.sort)!=null&&i.multiSort)}},mt={convertTo:(t,e,o,r)=>{t.filter||(t.filter={}),t.filter[e]=o},convertFrom:(t,e,o)=>{var r;if(e==="mode")return((r=t.filter)==null?void 0:r.mode)||"client"}},ht={convertTo:(t,e,o,r)=>{t.rowOption?t.rowOption[e]=o:t.rowOption={[e]:o}},convertFrom:(t,e,o)=>{if(t.rowOption){if(e==="customRowStyle")return t.rowOption.customRowStyle;if(e==="customCellStyle")return t.rowOption.customCellStyle}return""}};function ge(t,e,o){const r=new Map([["/converter/appearance.converter",Xe],["/converter/buttons.converter",Je],["/converter/property-editor.converter",Ze],["/converter/items-count.converter",ct],["/converter/type.converter",Ie],["/converter/change-editor.converter",Ke],["/converter/change-formatter.converter",et],["/converter/column-command.converter",tt],["/converter/column-option.converter",nt],["/converter/summary.converter",ot],["/converter/group.converter",rt],["/converter/form-group-label.converter",dt],["/converter/field-selector.converter",at],["/converter/pagination.converter",it],["/converter/row-number.converter",lt],["/converter/grid-selection.converter",st],["/converter/size.converter",ut],["/converter/change-formatter-enum.converter",pt],["/converter/grid-sort.converter",ft],["/converter/grid-filter.converter",mt],["/converter/row-option.converter",ht]]),i=new Map([["string",{type:"input-group",enableClear:!1}],["boolean",{type:"combo-list",textField:"name",valueField:"value",idField:"value",enableClear:!1,editable:!1,data:[{value:!0,name:"是"},{value:!1,name:"否"}]}],["enum",{type:"combo-list",maxHeight:128,enableClear:!1,editable:!1}],["array",{type:"button-edit"}],["number",{type:"number-spinner",placeholder:""}],["events-editor",{type:"events-editor",hide:!0}]]),a=Ye();function l(c,s){return()=>a.parseValueSchema(c,s)}function f(c,s,m){return c.includes("visible")&&s.visible!==void 0?typeof s.visible=="boolean"?()=>!!s.visible:s.visible===void 0?!0:l(s.visible,m):()=>!0}function T(c,s,m){return c.includes("readonly")&&s.readonly!==void 0?typeof s.readonly=="boolean"?()=>!!s.readonly:l(s.readonly,m):()=>!1}function v(c,s){const m=c.$converter||s;return typeof m=="string"&&m&&r.has(m)?r.get(m)||null:m||null}function h(c,s,m,F,E,S="",x=""){return Object.keys(c).map(A=>{const z=n.ref(1),q=A,w=c[A],$=Object.keys(w),_=w.title,y=w.type,D=i.get(y)||{type:"input-group",enableClear:!1},M=w.editor?Object.assign({},D,w.editor):Object.assign({},D),C=f($,w,s),N=T($,w,s);M.readonly=M.readonly===void 0?N():M.readonly;const R=w.type==="cascade"?h(w.properties,s,m,F,E,S,x):[],Q=!0;let O=v(w,x);const G=n.computed({get(){if(z.value){if(["class","style"].find(W=>W===q)&&!O&&(O=r.get("/converter/appearance.converter")||null),O&&O.convertFrom)return O.convertFrom(m,A,E,S);const k=m[A];return Object.prototype.hasOwnProperty.call(w,"defaultValue")&&(k===void 0||typeof k=="string"&&k==="")?w.type==="boolean"?w.defaultValue:w.defaultValue||"":k}return null},set(k){z.value+=1,O&&O.convertTo?(O.convertTo(F,A,k,E,S),O.convertTo(m,A,k,E,S)):(F[A]=k,m[A]=k)}}),{refreshPanelAfterChanged:X,description:ee,isExpand:u,parentPropertyID:V}=w,H={propertyID:q,propertyName:_,propertyType:y,propertyValue:G,editor:M,visible:C,readonly:N,cascadeConfig:R,hideCascadeTitle:Q,refreshPanelAfterChanged:X,description:ee,isExpand:u,parentPropertyID:V};return s[q]=H,H})}function d(c,s,m={}){const F={},E=t[c];return E&&E.categories?Object.keys(E.categories).map(x=>{const B=E.categories[x],A=B==null?void 0:B.title,z=h(B.properties||{},F,{},m,s);return{categoryId:x,categoryName:A,properties:z}}):[]}function p(c,s,m,F,E=""){const S=s.$ref.schema,x=s.$ref.converter,B=m[S],A=B.type,z=o(B),q={},w=t[A];if(w&&w.categories){const $=w.categories[c],_=$==null?void 0:$.title;x&&Object.keys($.properties).forEach(M=>{$.properties[M].$converter=x});const y=($==null?void 0:$.properties)||{},D=h(y,q,z,B,F,E);return{categoryId:c,categoryName:_,properties:D}}return{categoryId:c,categoryName:"",properties:[]}}function b(c,s,m,F,E){const S=c.type,x=o(c),B={};let A=E||t[S];if(A&&Object.keys(A).length===0&&m&&m.getPropConfig&&(A=m.getPropConfig(F)),A&&A.categories){const z=[];return Object.keys(A.categories).map(q=>{const w=A.categories[q];if(w.$ref){z.push(p(q,w,c,s,F));return}const $=w==null?void 0:w.title,_=w==null?void 0:w.tabId,y=w==null?void 0:w.tabName,D=w==null?void 0:w.hide,M=w==null?void 0:w.hideTitle,C=h(w.properties||{},B,x,c,s,F,w.$converter),{setPropertyRelates:N}=w,R=w==null?void 0:w.parentPropertyID;z.push({categoryId:q,categoryName:$,tabId:_,tabName:y,hide:D,properties:C,hideTitle:M,setPropertyRelates:N,parentPropertyID:R})}),z}return[]}return{getPropertyConfigBySchema:b,getPropertyConfigByType:d,propertyConverterMap:r}}const ve={},ye={};ge(ve,ye,Qe);const be={},we={},{getSchemaByType:Lt,resolveSchemaWithDefaultValue:gt,resolveSchemaToProps:_t,mappingSchemaToProps:Qt,setDesignerContext:Wt}=pe(be,we),Ne={},Ve={};ge(Ne,Ve,gt);function vt(t,e,o=new Map,r=(l,f,T,v)=>f,i={},a=l=>l){return fe[e.title]=e,me[e.title]=r,ve[e.title]=i,ye[e.title]=a,be[e.title]=e,we[e.title]=r,Ne[e.title]=i,Ve[e.title]=a,(l={},f=!0)=>{if(!f)return Ge(l,o);const T=We(l,e,o),v=Object.keys(t).reduce((h,d)=>(h[d]=t[d].default,h),{});return Object.assign(v,T)}}const yt={$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 bt(t,e){return{customClass:e.class,customStyle:e.style}}const wt=new Map([["appearance",bt]]);function Nt(t,e,o){return e}const Vt={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:[]}}}}}},oe={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=vt(oe,yt,wt,Nt,Vt);var J=(t=>(t[t.Queue=0]="Queue",t[t.Uploading=1]="Uploading",t[t.Done=2]="Done",t[t.Cancelled=3]="Cancelled",t[t.Remove=4]="Remove",t[t.Error=5]="Error",t))(J||{});class Te{constructor(e={},o={}){Z(this,"uploadConfig");Z(this,"removeConfig");const r={type:"config",url:"",timeout:0,headers:null,data:{}};this.uploadConfig=Object.assign({},r,e),this.removeConfig=Object.assign({},r,o)}}function le(t,e){const{formatTo:o}=ce.useDateFormat();return o(t,e)}function Se(t,e){if(!e)return"";let o="";return t.indexOf(".")===-1&&e.hasOwnProperty(t)?o=e[t]:o=t.split(".").reduce((r,i)=>r?r[i]:null,e),o}function Tt(t){return(e,o)=>{if(!e.hasOwnProperty(t)||e[t]===void 0||e[t]===null)return 1;if(!o.hasOwnProperty(t)||o[t]===void 0||o[t]===null)return-1;if(t!=="createTime"){let a="",l="";return t.indexOf(".")>-1?(a=Se(t,e),l=Se(t,o)):(a=e[t],l=o[t]),a>l?1:-1}const r=new Date(e[t]),i=new Date(o[t]);return r.getTime()>i.getTime()?-1:1}}function Fe(t){return(t||[]).findIndex(o=>o==="*")===-1}function xe(t){return t!=="0 Byte"}function te(t){if(t===0)return"0 Byte";const e=1024,o=["Bytes","KB","MB","GB","TB","PB"],r=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/e**r).toFixed(2))+" "+o[r]}function Ce(t,e){return t&&(t.hasOwnProperty("allowedContentTypes")&&(e.allowedContentTypes=t.allowedContentTypes||["*"],e.allowedContentTypes=e.allowedContentTypes&&e.allowedContentTypes.length>0?e.allowedContentTypes:["*"]),t.hasOwnProperty("maxUploads")&&(e.maxUploads=t.maxUploads||0),t.hasOwnProperty("maxFileSize")&&(e.maxFileSize=te(1024*1024*(parseInt(String(t.maxFileSize),10)||1)))),e}function ke(t){let e="ffilepreview--filetype";if(!t)return e+"-any";const o=t.lastIndexOf(".");let r="";switch(o>-1&&(r=t.substring(o+1).toLocaleLowerCase()),r){case"pdf":e+="-pdf";break;case"jpeg":case"jpg":case"gif":case"svg":case"png":case"bmp":e+="-img";break;case"ppt":case"pptx":e+="-ppt";break;case"doc":case"docx":e+="-doc";break;case"xls":case"xlsx":e+="-xls";break;case"txt":e+="-txt";break;case"zip":e+="-zip";break;case"wps":e+="-wps";break;case"wpt":e+="-wpt";break;default:e+="-any"}return e}function Ee(t){var e;if(t.type==="done")return 100;if(t.file&&t.file.progress){if(t.file.progress.status===J.Uploading){const o=((e=t.file.progress.data)==null?void 0:e.percentage)||5;return o>5?o:5}return 5}return 5}function St(t){let e=t;return t?(typeof t=="string"&&(e=parseInt(t,10)),te(e)):"0 Byte"}const Ft=()=>Math.random().toString(36).substring(7);function De(t,e){return{fileIndex:e,id:Ft(),name:t.name,size:t.size,type:t.type,form:new FormData,progress:{status:J.Queue,data:{percentage:0,speed:0,speedHuman:`${te(0)}/s`,startTime:null,endTime:null,eta:null,etaHuman:null}},lastModifiedDate:le(new Date(t.lastModified),"yyyy-MM-dd HH:mm:ss"),nativeFile:t}}function Me(t){const e=[];return t.forEach(o=>{const r={id:"",name:"",size:0,type:"",extend:null,extendHeaders:null,createTime:""};for(const i in r){const a=i.replace("extend","response").replace("createTime","lastModifiedDate");o.hasOwnProperty(a)&&(a==="lastModifiedDate"?r[i]=le(o[a],"yyyy-MM-dd HH:mm:ss"):r[i]=o[a])}e.push(r)}),e}function xt(t,e){return t?e<=t*1024*1024:!0}function Ct(t){return t.find(e=>e==="*")!==void 0}function kt(t,e){if(!t||t.length===0||Ct(t))return!0;if(e.lastIndexOf(".")<0)return!1;const o=e.substr(e.lastIndexOf("."));return t.findIndex(r=>r.toLowerCase()===o.toLowerCase())>-1}function Et(t){if(t)return t.split(`
`).map(e=>e.split(/: */,2)).filter(e=>e[0]).reduce((e,o)=>(e[o[0]]=o[1],e),{})}function Pe(t){return new Date(t*1e3).toISOString().substr(11,8)}class Dt extends Te{upload(e,o,r,i){const a=e[0];return new Promise((l,f)=>{var F,E;const T=o.url||r.url||"",v=o.method||"POST",h=o.data||{},d=o.headers||{},p=new XMLHttpRequest,b=new Date().getTime();let c=((F=a.progress)==null?void 0:F.data)&&a.progress.data.startTime||b,s=0,m=null;p.upload.addEventListener("progress",S=>{var x;if(S.lengthComputable){const B=Math.round(S.loaded*100/S.total),A=new Date().getTime()-b;s=Math.round(S.loaded/A*1e3),c=((x=a.progress)==null?void 0:x.data)&&a.progress.data.startTime||new Date().getTime(),m=Math.ceil((S.total-S.loaded)/s),a.progress={status:J.Uploading,data:{percentage:B,speed:s,speedHuman:`${te(s)}/s`,startTime:c,endTime:null,eta:m,etaHuman:Pe(m)}},i({type:"uploading",files:[a]})}},!1),p.upload.addEventListener("error",S=>{f(S)}),p.onreadystatechange=()=>{if(p.readyState===XMLHttpRequest.DONE){const S=Math.round(a.size/(new Date().getTime()-c)*1e3);a.progress={status:J.Done,data:{percentage:100,speed:S,speedHuman:`${te(S)}/s`,startTime:c,endTime:new Date().getTime(),eta:m,etaHuman:Pe(m||0)}},a.responseStatus=p.status;try{a.response=JSON.parse(p.response)}catch{a.response=p.response}a.responseHeaders=Et(p.getAllResponseHeaders()),l({type:"done",files:[a]})}},p.open(v,T,!0),p.withCredentials=!!o.withCredentials;try{const S=a.nativeFile;Object.keys(d).forEach(B=>p.setRequestHeader(B,d[B]));let x;o.includeWebKitFormBoundary!==!1?(Object.keys(h).forEach(B=>{var A;return(A=a.form)==null?void 0:A.append(B,h[B])}),(E=a.form)==null||E.append(o.fieldName||"file",S,S.name),x=a.form):x=S,p.send(x)}catch(S){f(S)}return()=>{p.abort()}})}remove(e,o,r,i){return new Promise((a,l)=>{a({type:"removed",files:e})})}}const Mt={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}},Pt={showCloseButton:{type:Boolean,default:!0},animate:{type:String,default:"fadeIn"},options:{type:Object}},se=n.defineComponent({name:"Toast",props:Pt,emits:["close","click"],setup:(t,e)=>{const{locale:o,t:r}=je.useI18n(),i=n.ref(t.animate),a="fadeOut",l=n.computed(()=>t.options),f=n.ref(!1),T=n.computed(()=>l.value.title&&l.value.message),v=n.computed(()=>!l.value.title&&l.value.message),h=n.computed(()=>{const x={animated:f.value,toast:!0,"toast--only-content":v.value};return x[t.animate]=!1,x[a]=f.value,x["toasty-type-"+l.value.type]=!0,l.value.theme&&(x[l.value.theme]=!0),x}),d=n.computed(()=>{const A=`f-icon-${l.value&&l.value.type?l.value.type.replace("toasty-type-",""):"default"}`,z={"f-icon":!0};return z[A]=!0,z}),p=n.computed(()=>l.value.title||l.value.message),b=n.computed(()=>t.showCloseButton),c=n.computed(()=>!!l.value.buttons||!!e.slots.default),s=n.computed(()=>o.value==="en"?{wordBreak:"keep-all",overflowWrap:"break-word"}:{});function m(x){x.stopPropagation(),x.preventDefault(),f.value=!1,setTimeout(()=>{e.emit("close",l.value)},200)}function F(x,B){}function E(x){return`f-preten-link ${x.customClass?x.customClass:""}`}n.watch(i,()=>{i.value});const S=()=>{var x;return n.createVNode(n.Fragment,null,[n.createVNode("div",{class:"after-toast-msg text-right"},[!e.slots.default&&((x=l.value.buttons)==null?void 0:x.map(B=>n.createVNode("span",{class:E(B),onClick:A=>void 0},[B.text]))),e.slots.default&&e.slots.default()])])};return()=>n.createVNode("div",{class:h.value,style:"min-height:44px"},[b.value&&n.createVNode("button",{title:r("messageBox.close"),class:"toast-close f-btn-icon f-bare",onClick:m},[n.createVNode("span",{class:"f-icon modal_close"},null)]),p.value&&n.createVNode("section",{class:"modal-tips"},[n.createVNode("div",{class:"float-left modal-tips-iconwrap"},[n.createVNode("span",{class:d.value},null)]),n.createVNode("div",{class:"modal-tips-content"},[T.value&&n.createVNode(n.Fragment,null,[n.createVNode("h5",{class:"toast-title modal-tips-title",innerHTML:l.value.title},null),n.createVNode("p",{class:"toast-msg",innerHTML:l.value.message,style:s.value},null),c.value&&S()]),v.value&&(l.value.buttons?n.createVNode("div",{class:"toast-title-btns-wrapper d-flex"},[n.createVNode("h5",{class:"toast-title modal-tips-title only-toast-msg",style:s.value,innerHTML:l.value.message},null),n.createVNode("div",{class:"after-toast-title text-right ml-auto"},[S()])]):n.createVNode("h5",{class:"toast-title modal-tips-title only-toast-msg",style:s.value,innerHTML:l.value.message},null))])])])}}),re=n.defineComponent({name:"Notify",props:Mt,emits:["close","empty"],setup(t,e){const o=n.computed(()=>({"farris-notify":!0})),r={left:12,right:12,top:20,bottom:12},i=n.ref(),a=n.ref(t.options),l=n.ref(t.showCloseButton),f=n.computed(()=>t.position||"bottom-right"),T=n.computed(()=>t.timeout!=null?t.timeout:3e3),v=n.computed(()=>{const p=t.bottom?t.bottom:r.bottom,b=t.top?t.top:r.top,c={transition:"all 0.2s ease",left:f.value.indexOf("left")>-1?`${t.left?t.left:r.left}px`:"",right:f.value.indexOf("right")>-1?`${t.right?t.right:r.right}px`:"",top:f.value.indexOf("top")>-1?`${b}px`:"",bottom:f.value.indexOf("bottom")>-1?`${p}px`:""};return f.value.indexOf("center")>-1&&(c.left="50%",c.marginLeft="calc(-24rem / 2)",f.value==="center-center"&&(c.top="50%",c.transform="translate(-50%, -50%)")),c});function h(p){e.emit("close")}T.value&&setTimeout(()=>{h()},T.value),e.expose({closeToast:h,container:i,notifyPosition:f});function d(p,b){h()}return()=>n.createVNode("div",{class:o.value,style:v.value,ref:i},[n.createVNode(se,{options:a.value,showCloseButton:l.value,animate:t.animate,onClose:p=>d(p,a.value)},null)])}});class Be{constructor(){Z(this,"notifyRefs",[]);Z(this,"globalConfig",n.reactive({}))}escapeAllHtml(e){if(typeof e!="string"||!e)return"";const o=document.createElement("div");return o.textContent=e||"",o.innerHTML.replace(/\\n/g,"<br>").replace(/\\t/g," ").replace(/\\r/g,"")}createNotifyInstance(e){const o=this,i=Object.assign({timeout:3e3,position:"bottom-right",showCloseButton:!0,safeHtml:!0},this.globalConfig,{...e}),a=document.createElement("div");a.style.display="contents";const l=n.createApp({setup(){var v;const f=n.ref();function T(){f.value.container.style.transform="scale(0)",setTimeout(()=>{o.updateNotifyPositionForClose(i,f),l.unmount()},220)}if(i.position.indexOf("top")>-1){const h=o.getNotifyInstances(i.position),d=h[h.length-1];if(d){const p=d.value.container.getBoundingClientRect();i.top=p.bottom}}return i.safeHtml&&((v=i.options)!=null&&v.message)&&(i.options.message=o.escapeAllHtml(i.options.message)),n.onUnmounted(()=>{document.body.removeChild(a)}),n.onMounted(()=>{o.updateNotifyPositionForCreate(i,f)}),()=>n.createVNode(n.Transition,{mode:"out-in",name:"fade",appear:!0},{default:()=>[n.createVNode(re,n.mergeProps({ref:f},i,{onClose:T}),null)]})}});return l.provide("NotifyService",this),document.body.appendChild(a),l.use(Ue.LocaleService.i18n),l.mount(a),l}getNotifyInstances(e){return this.notifyRefs.filter(o=>o.value.notifyPosition===e)}updateNotifyPositionForCreate(e,o){if(this.notifyRefs&&this.notifyRefs.length){const r=window.innerHeight;e.position.indexOf("bottom")>-1&&this.getNotifyInstances(e.position).forEach(i=>{const a=i.value.container.getBoundingClientRect();i.value.container.style.bottom=a.height+r-a.bottom+"px"})}this.notifyRefs=[...this.notifyRefs,o]}updateNotifyPositionForClose(e,o){const r=this.notifyRefs.indexOf(o);if(e.position.indexOf("top")>-1){const i=this.getNotifyInstances(e.position),a=i.indexOf(o);i.slice(a+1).forEach(l=>{l.value.container.style.top=l.value.container.offsetTop-l.value.container.offsetHeight+"px"})}r>-1&&this.notifyRefs.splice(r,1)}show(e){return this.createNotifyInstance(e)}buildNotifyProps(e,o){let r="",i="",a,l,f;typeof o=="string"?r=o:o&&(r=o.message||"",i=o.title||"",l=o.position||null,f=o.showCloseButton!=null?o.showCloseButton:null,a=o.timeout!=null?o.timeout:null);const v={options:{type:e,message:r,title:i}};return l!=null&&(v.position=l),f!=null&&(v.showCloseButton=f),a!=null&&(v.timeout=a),v}info(e){const o=this.buildNotifyProps("info",e);return this.show(o)}success(e){const o=this.buildNotifyProps("success",e);return this.show(o)}warning(e){const o=this.buildNotifyProps("warning",e);return this.show(o)}error(e){const o=this.buildNotifyProps("error",e);return this.show(o)}close(e){e&&e.unmount()}closeAll(){this.notifyRefs.forEach(e=>{e==null||e.value.closeToast()}),this.notifyRefs.length=0}}const Bt=Symbol("NOTIFY_SERVICE_TOKEN");re.install=t=>{t.component(re.name,re),t.component(se.name,se);const e=new Be;t.provide(Bt,e),t.provide("FNotifyService",e)};const He={getNotify:(t="")=>{let e;return t&&n.inject(t,null)&&(e=n.inject(t)),e||(e=new Be),e},getServerAPI:(t="")=>{let e;if(t&&n.inject(t,null)){const o=n.inject(t);o&&o()&&(e=o())}return e||(e=new Dt),e}};function Ae(t,e,o){const r=He.getNotify(t.notifyServiceToken),i=n.ref(t.fileInfos),{disabled:a,uploadVisible:l,uploadDisabled:f,previewVisible:T,orderField:v,previewEnableMulti:h,downloadButtonDisable:d,previewColumns:p,uploadEnableMulti:b,previewButtonDisable:c}=n.toRefs(t),s=n.ref(!1),m=n.ref([]),F=n.computed(()=>m.value.length),E=n.ref([]),S=n.ref("");function x(u){(!u.length||m.value.length!==u.length)&&(s.value=!1);const H=[...u.map(k=>(k.hasOwnProperty("size")||(k.size=void 0),k.hasOwnProperty("createTime")||(k.createTime=void 0),h.value&&(k.checked=!!m.value.find(W=>W.id===k.id)||s.value),k))];return H.sort(Tt(v.value)),h.value&&(m.value=[...H].filter(k=>k.checked)),H}const B=n.ref(x(i.value));n.watch(()=>t.fileInfos,u=>{B.value=x(u)});const A=(u,V)=>{u.stopImmediatePropagation(),e.emit("fileDownloadEvent",{fileInfos:[V],name:""})},z=(u,V)=>{u.stopImmediatePropagation(),!c.value&&e.emit("filePreviewEvent",V)},q=(u,V,H)=>{V.checked&&(m.value=m.value.filter(k=>k.id!==V.id)),e.emit("fileRemoveEvent",V),H.handleUploadEvent({type:"remove",file:V})},w=(u,V="preview")=>u.formatter?!0:V==="preview"?["state","name","action","size","createTime"].findIndex(k=>k===u.field)>-1:V==="upload"?["state","name","size"].findIndex(k=>k===u.field)>-1:!1,$=u=>!(u.field==="state"&&(f.value||!l.value)),_=u=>u.lastIndexOf(".")>0?u.substring(0,u.lastIndexOf(".")):"",y=u=>{if(u.stopImmediatePropagation(),F.value>1){let V="";V=_(m.value[0].name),e.emit("fileDownloadEvent",{fileInfos:m.value,name:V})}},D=u=>{u.stopImmediatePropagation(),e.emit("fileRemoveEvent",m.value)},M=u=>{const V=B.value;u.checked?(V.forEach(H=>{H.checked=!0}),m.value=[...B.value],s.value=!0):(m.value=[],V.forEach(H=>{H.checked=!1}),s.value=!1),e.emit("previewMultiSelectedEvent",m.value)},C=(u,V)=>{u&&(u.stopImmediatePropagation(),u.stopPropagation()),(!S.value||V.id!==S.value)&&(S.value=V.id,e.emit("selectedEvent",V))},N=u=>{const V=m.value.findIndex(W=>W.id===u.id),H=V>-1,k=B.value.find(W=>W.id===u.id);k&&(k.checked=u.checked),u.checked&&!H&&k&&m.value.push(k),!u.checked&&H&&m.value.splice(V,1),B.value.length>0&&(m.value.length===B.value.length?s.value=!0:s.value=!1),C(null,k),e.emit("previewMultiSelectedEvent",m.value)},R=u=>{var V;(V=o==null?void 0:o.value)==null||V.handleUploadEvent(u)},Q=u=>{R({type:"upload",file:u})},O=(u,V)=>{let H=[];u.files&&u.files.length>0?H=u.files:typeof u.file<"u"&&(H=[u.file]),V=V||u.type,H.map(k=>{const W=E.value.findIndex(K=>{var ae;return typeof k<"u"&&((ae=K==null?void 0:K.file)==null?void 0:ae.id)===k.id});W>-1&&(E.value[W]={type:V,file:k})})},G=u=>{if(u.files){const V=u.files.map(H=>H.id);E.value=E.value.filter(H=>!(V.findIndex(W=>{var K;return W===((K=H==null?void 0:H.file)==null?void 0:K.id)})>-1)),R({type:"hide",id:V.join(",")})}},X=u=>{let V="warning";(u.type==="cancelled"||u.type==="removed")&&(V="success");const H=u.hasOwnProperty("message")?u.message:"";r.show({options:{type:V,message:H},position:"top-center"})},ee=u=>{if(u.type==="addedToQueue"&&typeof u.file<"u")E.value.push({type:u.type,file:u.file}),Q(u.file);else if(u.type==="start")O(u,"start");else if(u.type==="done"){O(u,"done");const V=(u.files||[]).map(H=>({checked:!1,id:H.id,name:H.name,size:H.size,createTime:le(new Date,"yyyy-MM-dd HH:mm:ss")}));i.value=[...V,...B.value],G(u),e.emit("fUploadDoneEvent",Me(u.files||[])),e.emit("uploadDoneEvent",Me(u.files||[]))}else if(u.type==="cancelled"||u.type==="removed"||u.type==="error"){const V=i.value.filter(H=>u.files&&u.files.findIndex(k=>H.id===k.id)<0);i.value=[...V],X(u)}else u.type==="rejected"&&typeof u.file<"u"&&X(u)};return n.onUnmounted(()=>{}),{disabled:a,uploadVisible:l,uploadDisabled:f,downloadButtonDisable:d,previewVisible:T,previewColumns:p,uploadFiles:E,innerFileInfos:B,previewEnableMulti:h,previewMultiSelectedLength:F,previewSelectAllBtnChecked:s,uploadEnableMulti:b,previewCurrentId:S,multiFileRemoveHandler:D,previewMultiSelectChangeHandler:N,fileMultiDownloadHandler:y,selectOrCancelAllHandler:M,hasColumnHtmlFunc:w,showPreviewStateColumn:$,rowSelectedHandler:C,fileDownloadHandler:A,filePreviewHandler:z,fileRemoveHandler:q,handleStateChange:ee}}class Ht{constructor(e,o){Z(this,"queue");Z(this,"uploadOpts",{allowedContentTypes:["*"],maxUploads:0,maxFileSize:12,concurrency:Number.POSITIVE_INFINITY,uploadedCount:0});Z(this,"extendServerConfig",null);Z(this,"uploadServerSer");Z(this,"uploadContext",null);this.stateChangeRecord=e,this.serverToken=o,this.queue=[],this.uploadServerSer=He.getServerAPI(this.serverToken)}setUploadContext(e){this.uploadContext=e}handleResultFromServer(e){var o,r;switch(e.type){case"removed":this.queue=this.queue.filter(i=>{var a;return((a=i.progress)==null?void 0:a.status)!==J.Remove}),e.hasOwnProperty("message")||(e.message="被删除"),this.stateChangeRecord.value=e;break;case"error":this.queue=this.queue.filter(i=>e.files&&e.files.findIndex(a=>i.id===a.id)<0),(o=this.uploadContext)==null||o.emit("stateChange",e);break;default:(r=this.uploadContext)==null||r.emit("stateChange",e)}}setOptions(e){e&&(this.uploadOpts=Object.assign(this.uploadOpts,e))}handleFiles(e){var r;const o=Array.from(e).reduce((i,a,l)=>{var v;const f=i.length+this.queue.length+1,T=this.rejectedReason(a.name,f,a.size);if(T.allowed)i=i.concat(a);else{const h=De(a,l);(v=this.uploadContext)==null||v.emit("stateChange",{type:"rejected",file:h,message:T.message})}return i},[]);[].map.call(o,(i,a)=>{var f;const l=De(i,a);this.queue.push(l),(f=this.uploadContext)==null||f.emit("stateChange",{type:"addedToQueue",file:l})}),(r=this.uploadContext)==null||r.emit("stateChange",{type:"allAddedToQueue"})}rejectedReason(e,o,r){let i=!1,a="";return this.queue.findIndex(f=>f.name===e)>-1?a="上传失败:已存在同名文件":this.uploadOpts.allowedContentTypes&&!kt(this.uploadOpts.allowedContentTypes,e)?a=`上传失败:只允许上传${this.uploadOpts.allowedContentTypes.join(",")}类型的文档`:this.exceedMaxUpload(o)?a=`上传失败:文件总个数超出${this.uploadOpts.maxUploads}限制`:xt(this.uploadOpts.maxFileSize,r)?r===0?a="上传失败:不允许文件为空":i=!0:a=`上传失败:单个文件大小超出${this.uploadOpts.maxFileSize}MB的限制`,{allowed:i,message:a}}exceedMaxUpload(e=0){if(!this.uploadOpts||!this.uploadOpts.maxUploads)return!1;const o=this.uploadOpts.uploadedCount||0;return this.uploadOpts.maxUploads>0&&(this.uploadOpts.maxUploads<=o||e+o>this.uploadOpts.maxUploads)}handleUploadEvent(e){var o,r;switch(e.type){case"upload":const i=this.queue.findIndex(f=>f===e.file);i!==-1&&e.file&&this.serverMethod({files:[this.queue[i]],event:e});break;case"remove":if(!((o=e==null?void 0:e.file)!=null&&o.id))return;const a=this.queue.findIndex(f=>{var T;return f.id===((T=e==null?void 0:e.file)==null?void 0:T.id)});if(a!==-1&&this.queue[a]&&this.queue[a].progress){const{progress:f}=this.queue[a];f&&(f.status=J.Remove)}this.serverMethod({files:[e.file],event:e});break;case"removeAll":const l=this.queue.filter(f=>{var T;return((T=f==null?void 0:f.progress)==null?void 0:T.status)===J.Queue});l.length&&((r=this.uploadContext)==null||r.emit("stateChange",{type:"cancelled",files:l,message:"删除附件成功"}),this.queue=this.queue.filter(f=>{var T;return((T=f==null?void 0:f.progress)==null?void 0:T.status)!==J.Queue})),this.queue.length&&(e.type="remove",this.queue.forEach(f=>{f.progress&&(f.progress.status=J.Remove)}),this.serverMethod({files:this.queue,event:e}));break}}setExtendServerConfig(e){this.extendServerConfig=e}serverMethod(e){let o;switch(e.event.type){case"upload":o=this.upload(e.files,e.event,r=>this.handleResultFromServer(r));break;case"removeAll":case"remove":o=this.remove(e.files,e.event,r=>this.handleResultFromServer(r));break;default:o=null}o&&o.then(r=>{this.handleResultFromServer(r)}).catch(r=>{this.handleResultFromServer(r)})}upload(e,o,r){var i;return(i=this.uploadContext)==null||i.emit("stateChange",{type:"start",files:e}),this.uploadServerSer.upload(e,o,this.extendServerConfig,r)}remove(e,o,r){return this.uploadServerSer.remove(e,o,this.extendServerConfig,r)}reset(){this.queue=[]}destroyed(){this.reset()}}const ne=n.defineComponent({name:"FUploader",components:{"f-upload-progress":_e,"f-preview-checkbox":de,"f-file-select":ue},props:oe,emits:["filePreviewEvent","fileDownloadEvent","previewMultiSelectedEvent","selectedEvent","fileRemoveEvent","fileRemovedEvent","fUploadDoneEvent","uploadDoneEvent"],setup(t,e){const o=n.ref(),r=new Ht(o,t.uploadServerToken);n.provide("uploaderService",r);const i=n.ref(t.customInfo),a=Ce(t.uploadOptions,{allowedContentTypes:["*"],maxUploads:0,maxFileSize:"12MB"}),l=n.ref(null),{disabled:f,uploadVisible:T,uploadDisabled:v,downloadButtonDisable:h,previewVisible:d,previewColumns:p,uploadFiles:b,innerFileInfos:c,previewEnableMulti:s,previewMultiSelectedLength:m,previewSelectAllBtnChecked:F,uploadEnableMulti:E,previewCurrentId:S,multiFileRemoveHandler:x,previewMultiSelectChangeHandler:B,fileMultiDownloadHandler:A,selectOrCancelAllHandler:z,rowSelectedHandler:q,hasColumnHtmlFunc:w,showPreviewStateColumn:$,fileDownloadHandler:_,filePreviewHandler:y,fileRemoveHandler:D,handleStateChange:M}=Ae(t,e,l);n.watch(o,g=>{switch(M(g),g.type){case"removed":e.emit("fileRemovedEvent",g.files[0]);break}});const C=n.computed(()=>c.value.length>0);function N(){var g;return Fe((a==null?void 0:a.allowedContentTypes)||[])?n.createVNode("li",null,[n.createVNode("span",null,[n.createTextVNode("支持类型:")]),n.createVNode("span",{class:"support-info--item-detail",style:"margin-right:4px;"},[(g=a.allowedContentTypes)==null?void 0:g.join(""),n.createTextVNode(",")])]):""}function R(){return xe((a==null?void 0:a.maxFileSize)||"")?n.createVNode("li",null,[n.createVNode("span",null,[n.createTextVNode("单个文件限制:")]),n.createVNode("span",{class:"support-info--item-detail"},[a.maxFileSize,n.createTextVNode(", ")])]):""}function Q(){return((a==null?void 0:a.maxUploads)||0)>0&&n.createVNode("li",null,[n.createVNode("span",null,[n.createTextVNode("文件总数限制:")]),n.createVNode("span",{class:"support-info--item-detail"},[a.maxUploads,n.createTextVNode("个")])])}function O(){return T.value&&!v.value&&!f.value?n.createVNode("div",{class:"ffileupload--support-info"},[i.value?n.createVNode("ul",{class:"support-info--wrapper"},[n.createVNode("li",null,[n.createVNode("span",{class:"support-info--item-detail",innerHTML:i.value},null)])]):n.createVNode("ul",{class:"support-info--wrapper"},[N(),R(),Q()])]):null}function G(g){var P,j,Y;return n.createVNode("div",{class:"uploadAndpreview--title-container"},[n.createVNode("div",{class:"ffilepreview--item-icon"},[n.createVNode("span",{class:["ffilepreview--filetype-icon",ke(((P=g.file)==null?void 0:P.name)||"")]},null)]),n.createVNode("div",{class:"uploadAndpreview--right"},[n.createVNode("a",{class:"item-content--title",title:(j=g.file)==null?void 0:j.name},[((Y=g.file)==null?void 0:Y.name)||"无名称"]),n.createVNode(n.resolveComponent("f-upload-progress"),{status:g.type==="done"?"success":"active",percent:Ee(g),maxWidth:300},null)])])}function X(g){return n.createVNode("div",{class:"uploadAndpreview--title-container"},[n.createVNode("div",{class:"ffilepreview--item-icon"},[n.createVNode("span",{class:["ffilepreview--filetype-icon",ke(g.name)]},null)]),n.createVNode("div",{class:"uploadAndpreview--right"},[n.createVNode("a",{class:["item-content--title","previewButtonDisable.value?'no-preview':''"],title:g.name,onClick:P=>y(P,g)},[g.name])])])}function ee(g,P,j){return n.createVNode("div",{class:"uploadAndpreview--filesize-container"},[g==="preview"&&j?n.createVNode("span",null,[St(j.size)]):null,g==="upload"&&P?n.createVNode("span",null,[Ee(P)]):null])}function u(g,P){return P&&P.type==="error"?n.createVNode("div",{class:"uploadAndpreview--state-container"},[n.createVNode("p",{class:"upload-state--uploaded"},[n.createVNode("i",{class:"f-icon f-icon-message_warning text-danger"},null),n.createVNode("span",null,[n.createTextVNode("存在异常")])])]):n.createVNode("div",{class:"uploadAndpreview--state-container"},[g==="upload"?P&&P.type!=="done"?n.createVNode("p",{class:"upload-state--uploading"},[n.createVNode("i",{class:"f-icon f-icon-clock text-warning"},null),n.createVNode("span",null,[n.createTextVNode("正在上传...")])]):n.createVNode("p",{class:"upload-state--uploaded"},[n.createVNode("i",{class:"f-icon f-icon-success text-success"},null),n.createVNode("span",null,[n.createTextVNode("上传成功")])]):g==="preview"?n.createVNode("p",{class:"upload-state--uploaded"},[n.createVNode("i",{class:"f-icon f-icon-success text-success"},null),n.createVNode("span",null,[n.createTextVNode("已上传")])]):""])}function V(g){return n.createVNode("div",{class:"uploadAndpreview--action-container"},[h.value?"":n.createVNode("button",{class:"btn preview-btn",title:"下载",onClick:P=>_(P,g)},[n.createVNode("span",{class:"f-icon f-icon-enclosure_download"},null)]),t.previewButtonDisable?"":n.createVNode("button",{class:"btn preview-btn",title:"预览",onClick:P=>y(P,g)},[n.createVNode("span",{class:"f-icon f-icon-enclosure_browse"},null)]),t.deleteButtonDisable?"":n.createVNode("button",{class:"btn preview-btn",title:"删除",onClick:P=>D(P,g,r)},[n.createVNode("span",{class:"f-icon f-icon-enclosure_delete",style:"top: -1px"},null)])])}function H(g){return n.createVNode("div",{class:"uploadAndpreview--date-container"},[g.createTime||""])}function k(g,P,j,Y){let L;if(g=g||"preview",Y.formatter)return L=Y.formatter(j[Y.field]||"",g,g==="preview"?j:P,Y),L;if(g==="preview"&&j)switch(Y.field){case"state":L=u("preview",null);break;case"name":L=X(j);break;case"action":L=V(j);break;case"size":L=ee(g,P,j);break;case"createTime":L=H(j);break;default:L=`<div>${j[Y.field]||""} </div>`}if(g==="upload"&&P)switch(Y.field){case"state":L=u("upload",P);break;case"name":L=G(P);break;case"size":L=ee(g,P,j);break;default:L=""}return L}function W(){return T.value?n.createVNode("div",{class:"header--left-container"},[n.createVNode(n.resolveComponent("f-file-select"),{ref:l,disabled:v.value,selectText:t