2020-04-16 16:22:58 +03:00
|
|
|
import t from"is-url";import e from"nanoid/non-secure";import r from"is-plain-object";import{en as o}from"@braid/vue-formulate-i18n";var n=function(t,e){return{classification:t,component:"FormulateInput"+(e||t[0].toUpperCase()+t.substr(1))}},i=Object.assign({},["text","email","number","color","date","hidden","month","password","search","tel","time","url","week","datetime-local"].reduce((function(t,e){var r;return Object.assign({},t,((r={})[e]=n("text"),r))}),{}),{range:n("slider"),textarea:n("textarea","TextArea"),checkbox:n("box"),radio:n("box"),submit:n("button"),button:n("button"),select:n("select"),file:n("file"),image:n("file"),group:n("group")}),s=function(t,e,r){void 0===r&&(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)};function a(t,e){var r={};for(var o in t)r[o]=e(o,t[o]);return r}function l(t,e){if(t===e)return!0;if(!t||!e)return!1;var r=Object.keys(t),o=Object.keys(e),n=r.length;if(o.length!==n)return!1;for(var i=0;i<n;i++){var s=r[i];if(t[s]!==e[s])return!1}return!0}function u(t){return"string"==typeof t?t.replace(/([_][a-z0-9])/gi,(function(e){return 0!==t.indexOf(e)&&"_"!==t[t.indexOf(e)-1]?e.toUpperCase().replace("_",""):e})):t}function c(t){return t?"string"==typeof t?[t]:Array.isArray(t)?t:"object"==typeof t?Object.values(t):[]:[]}function d(t,e){return"string"==typeof t?d(t.split("|"),e):Array.isArray(t)?t.map((function(t){return function(t,e){if("function"==typeof t)return[t,[]];if(Array.isArray(t)&&t.length){var r=u((t=t.map((function(t){return t}))).shift());if("string"==typeof r&&e.hasOwnProperty(r))return[e[r],t,r];if("function"==typeof r)return[r,t,r]}if("string"==typeof t){var o=t.split(":"),n=u(o.shift());if(e.hasOwnProperty(n))return[e[n],o.length?o.join(":").split(","):[],n];throw new Error("Unknown validation rule "+t)}return!1}(t,e)})).filter((function(t){return!!t})):[]}function p(t){switch(typeof t){case"symbol":case"number":case"string":case"boolean":case"undefined":return!0;default:return null===t}}s.prototype.rehydrateFileList=function(t){var e=this,r=t.reduce((function(t,r){var o=r[e.options?e.options.fileUrlKey:"url"],n=!(!o||-1===o.lastIndexOf("."))&&o.substr(o.lastIndexOf(".")+1),i=e.options.mimes[n]||!1;return t.push(Object.assign({},r,o?{name:o.substr(o.lastIndexOf("/")+1||0),type:r.type?r.type:i,previewData:o}:{})),t}),[]);this.results=t,this.addFileList(r)},s.prototype.addFileList=function(t){for(var r=this,o=function(o){var n=t[o],i=e();r.files.push({progress:!1,error:!1,complete:!1,justFinished:!1,name:n.name||"file-upload",file:n,uuid:i,path:!1,removeFile:function(){this.removeFile(i)}.bind(r),previewData:n.previewData||!1})},n=0;n<t.length;n++)o(n)},s.prototype.hasUploader=function(){return!!this.context.uploader},s.prototype.uploaderIsAxios=function(){return!(!this.hasUploader||"function"!=typeof this.context.uploader.request||"function"!=typeof this.context.uploader.get||"function"!=typeof this.context.uploader.delete||"function"!=typeof this.context.uploader.post)},s.prototype.getUploader=function(){for(var t,e=[],r=arguments.length;r--;)e[r]=arguments[r];if(this.uploaderIsAxios()){var o=new FormData;if(o.append(this.context.name||"file",e[0]),!1===this.context.uploadUrl)throw new Error("No uploadURL specified: https://vueformulate.com/guide/inputs/file/#props");return this.context.uploader.post(this.context.uploadUrl,o,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(t){e[1](Math.round(100*t.loaded/t.total))}}).then((function(t){return t.data})).catch((function(t){return e[2](t)}))}return(t=this.context).uploader.apply(t,e)},s.prototype.upload=function(){var t=this;return this.results?Promise.resolve(this.results):new Promise((function(e,r){if(!t.hasUploader)return r(new Error("No uploader has been defined"));Promise.all(t.files.map((function(e){return e.path?Promise.resolve(e.path):t.getUploader(e.file,(function(r){e.progress=r,r>=100&&(e.complete||(e.justFinished
|