importtfrom"is-url";importefrom"nanoid/non-secure";importrfrom"is-plain-object";importifrom"vue";import{Provideass,Modelaso,Propasa,Watchasn,Componentasl,Injectash}from"vue-property-decorator";constu=(t,e)=>({classification:t,component:"FormularioInput"+(e||t[0].toUpperCase()+t.substr(1))});vard=Object.assign(Object.assign({},["text","email","number","color","date","hidden","month","password","search","tel","time","url","week","datetime-local"].reduce((t,e)=>Object.assign(Object.assign({},t),{[e]:u("text")}),{})),{range:u("slider"),textarea:u("textarea","TextArea"),checkbox:u("box"),radio:u("box"),submit:u("button"),button:u("button"),select:u("select"),file:u("file"),image:u("file"),group:u("group")});classp{constructor(t,e={},r={}){this.input=t,this.fileList=t.files,this.files=[],this.options=Object.assign({mimes:{}},r),this.results=!1,this.context=e,Array.isArray(this.fileList)?this.rehydrateFileList(this.fileList):this.addFileList(this.fileList)}rehydrateFileList(t){conste=t.reduce((t,e)=>{constr=e[this.options?this.options.fileUrlKey:"url"],i=!(!r||-1===r.lastIndexOf("."))&&r.substr(r.lastIndexOf(".")+1),s=this.options.mimes[i]||!1;returnt.push(Object.assign({},e,r?{name:r.substr(r.lastIndexOf("/")+1||0),type:e.type?e.type:s,previewData:r}:{})),t},[]);this.results=t,this.addFileList(e)}addFileList(t){for(letr=0;r<t.length;r++){consti=t[r],s=e();this.files.push({progress:!1,error:!1,complete:!1,justFinished:!1,name:i.name||"file-upload",file:i,uuid:s,path:!1,removeFile:()=>this.removeFile(s),previewData:i.previewData||!1})}}hasUploader(){return!!this.context.uploader}uploaderIsAxios(){returnthis.hasUploader&&"function"==typeofthis.context.uploader.request&&"function"==typeofthis.context.uploader.get&&"function"==typeofthis.context.uploader.delete&&"function"==typeofthis.context.uploader.post}getUploader(...t){if(this.uploaderIsAxios()){conste=newFormData;if(e.append(this.context.name||"file",t[0]),!1===this.context.uploadUrl)thrownewError("No uploadURL specified: https://vueformulate.com/guide/inputs/file/#props");returnthis.context.uploader.post(this.context.uploadUrl,e,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e=>{t[1](Math.round(100*e.loaded/e.total))}}).then(t=>t.data).catch(t[2])}returnthis.context.uploader(...t)}upload(){returnthis.results?Promise.resolve(this.results):newPromise((t,e)=>{if(!this.hasUploader)returne(newError("No uploader has been defined"));Promise.all(this.files.map(t=>t.path?Promise.resolve(t.path):this.getUploader(t.file,e=>{t.progress=e,e>=100&&(t.complete||(t.justFinished=!0,setTimeout(()=>{t.justFinished=!1},this.options.uploadJustCompleteDuration)),t.complete=!0)},e=>{t.progress=0,t.error=e,t.complete=!0},this.options))).then(e=>{this.results=e,t(e)}).catch(t=>{thrownewError(t)})})}removeFile(t){if(this.files=this.files.filter(e=>e.uuid!==t),this.context.performValidation(),window&&this.fileListinstanceofFileList){constt=newDataTransfer;this.files.map(({file:e})=>t.items.add(e)),this.fileList=t.files,this.input=t}}loadPreviews(){this.files.map(t=>{if(!t.previewData&&window&&window.FileReader&&/^image\//.test(t.file.type)){conste=newFileReader;e.onload=e=>Object.assign(t,{previewData:e.target.result}),e.readAsDataURL(t.file)}})}getFileList(){returnthis.fileList}getFiles(){returnthis.files}toString(){constt=this.files.length?this.files.length+" files":"empty";returnthis.results?JSON.stringify(this.results,null," "):`FileUpload(${t})`}}functionc(t,e){if(t===e)return!0;if(!t||!e)return!1;constr=Object.keys(t);if(Object.keys(e).length!==r.length)return!1;if(tinstanceofDate&&einstanceofDate)returnt.getTime()===e.getTime();if(0===r.length)returnt===e;for(leti=0;i<r.length;i++){consts=r[i];if(t[s]!==e[s])return!1}return!0}functionf(t){return"string"==typeoft?t.replace(/([_][a-z0-9])/gi,e=>0!==t.indexOf(e)&&"_"!==t[t.indexOf(e)-1]?e.toUpperCase().replace("_",""):e):t}functionm(t){return"string"==typeoft&&/^[\^]/.test(t.charAt(0))?[f(t.substr(1)),t.charAt(0)]:[f(t),null]}functiong(t){returnt?"string"==t