-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathfiledrop-min.js
More file actions
1 lines (1 loc) · 16.2 KB
/
filedrop-min.js
File metadata and controls
1 lines (1 loc) · 16.2 KB
1
window.fd=window.fd||{},function(t,n){t.randomID=function(e){return(e||"fd")+"_"+(1e4*Math.random()).toFixed()},t.uniqueID=function(e){do var n=t.randomID(e);while(t.byID(n));return n},t.byID=function(e){return t.isTag(e)?e:document.getElementById(e)},t.isTag=function(e,t){return"object"==typeof e&&e&&1==e.nodeType&&(!t||e.tagName.toUpperCase()==t.toUpperCase())},t.newXHR=function(){try{return new XMLHttpRequest}catch(e){for(var t=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],n=0;n<t.length;n++)try{return new ActiveXObject(t[n])}catch(e){}}throw"Cannot create XMLHttpRequest."},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.toArray=function(e,n){return null===e||"undefined"==typeof e?[]:(t.isArray(e)||"object"==typeof e&&"callee"in e||(e=[e]),Array.prototype.slice.call(e,n||0))},t.addEvent=function(e,t,n){return e&&t&&n&&(e.attachEvent?(e["e"+t+n]=n,e[t+n]=function(){e["e"+t+n](window.event)},e.attachEvent("on"+t,e[t+n])):e.addEventListener(t,n,!1)),e},t.stopEvent=function(e){return e.cancelBubble=!0,e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e},t.setClass=function(e,n,r){return(e=t.byID(e))&&null!=n&&("undefined"==typeof r||r?t.hasClass(e,n)||(e.className+=" "+n):e.className=e.className.replace(t.classRegExp(n)," ")),e},t.hasClass=function(e,n){return t.classRegExp(n).test((t.byID(e)||{}).className)},t.classRegExp=function(e){return""==e||"object"==typeof e?/$o_O/:new RegExp("(^|\\s+)"+e+"(\\s+|$)","gi")},t.extend=function(e,t,n){e=e||{},t=t||{};for(var r in t)(n||"undefined"==typeof e[r])&&(e[r]=t[r]);return e},t.callAll=function(e,n,r){var a;if(n=t.toArray(n),"function"==typeof e&&(e=[e]),t.isArray(e))for(var i=0;i<e.length&&("function"!=typeof e[i]||(a=e[i].apply(r||this,n),null==a));i++);else if(e)throw"FileDrop event list must be either an Array, Function, undefined or null but "+typeof e+" was given.";return a},t.callAllOfObject=function(e,n,r){if(t.logging&&t.hasConsole){var a=e.events[n]?e.events[n].length||0:0;console.info("FileDrop "+n+" event ("+a+") args:"),console.dir([r])}var i=[t.onObjectCall].concat(e.events.any),o=t.callAll(i,[n].concat(t.toArray(r)),e);return null!=o?o:t.callAll(e.events[n],r,e)},t.appendEventsToObject=function(e,n){if(t.addEventsToObject(this,!1,arguments))return this;switch(arguments.length){case 0:return t.extend({},this.events);case 1:if(null===e)return this.events={},this;if(t.isArray(e)){for(var r={},a=0;a<e.length;a++)r[e[a]]=t.toArray(this.events[e[a]]);return r}if("function"==typeof e)return t.funcNS(e);if("string"==typeof e)return t.toArray(this.events[e]);case 2:if(e=t.toArray(e),null===n){for(var a=0;a<e.length;a++){var i=t.splitNS(e[a]);if(i[0])if(i[1]){if(this.events[i[0]])for(var o=this.events[i[0]].length-1;o>=0;o--)t.funcNS(this.events[i[0]][o])==i[1]&&this.events[i[0]].splice(o,1)}else this.events[i[0]]=[];else for(var l in this.events)arguments.callee.call(this,[l+":"+i[1]],null)}return this}}throw"Bad parameters for FileDrop event()."},t.previewToObject=function(e,n){if(t.addEventsToObject(this,!0,arguments))return this;throw"Bad parameters for FileDrop preview()."},t.addEventsToObject=function(e,n,r){var a=r[0],i=r[1];switch(r.length){case 1:if(a&&"object"==typeof a&&!t.isArray(a)){for(var o in a)arguments.callee(e,n,[o,a[o]]);return!0}case 2:if("function"==typeof i||t.isArray(i)){a=t.toArray(a),i=t.toArray(i);for(var l=n?"unshift":"push",s=0;s<a.length;s++){for(var u=t.splitNS(a[s]),f=0;f<i.length;f++)t.funcNS(i[f],u[1]);e.events[u[0]]=e.events[u[0]]||[],e.events[u[0]][l].apply(e.events[u[0]],i)}return!0}}},t.funcNS=function(e,n){return"function"!=typeof e?e:1==arguments.length?(e[t.nsProp]||"").toString():(e[t.nsProp]=(n||"").toString(),e)},t.splitNS=function(e){return(e||"").match(/^([^:]*):?(.*)$/).slice(1)},t.extend(t,{logging:!0,hasConsole:"console"in window&&console.log&&console.dir,onObjectCall:null,all:[],isIE6:!1,isIE9:!1,isChrome:(navigator.vendor||"").indexOf("Google")!=-1,nsProp:"_fdns"}),t.DropHandle=function(e,n){var r=this;if(r.el=e=t.byID(e),!e)throw"Cannot locate DOM node given to new FileDrop class.";r.opt={zoneClass:"fd-zone",inputClass:"fd-file",iframe:{url:"",callbackParam:"fd-callback",fileParam:"fd-file"},input:null,recreateInput:!0,fullDocDragDetect:!1,multiple:!1,dropEffect:"copy"},t.all.push(r),r.filedrop=null;var a=r.opt.iframe;t.extend(r.opt,n,!0),t.extend(r.opt.iframe,a),t.isChrome&&(r.opt.fullDocDragDetect=!0),r.events={any:[],dragEnter:[],dragLeave:[],dragOver:[],dragEnd:[],dragExit:[],upload:[],uploadElsewhere:[],inputSetup:[],iframeSetup:[],iframeDone:[]},r.on=r.events,r.zone=r.el,r.hook=function(e){r.opt.input&&(r.opt.input=r.opt.input||r.prepareInput(e),r.opt.input&&t.callAllOfObject(r,"inputSetup",r.opt.input)),r.hookDragOn(e),r.hookDropOn(e)},r.hookDragOn=function(e){r.opt.fullDocDragDetect?(r.delegate(document.body,"dragEnter"),t.addEvent(document,"dragleave",function(e){(0==e.clientX&&0==e.clientY||t.isTag(e.relatedTarget,"html"))&&(t.stopEvent(e),t.callAllOfObject(r,"dragLeave",e))})):(r.delegate(e,"dragEnter"),r.delegate(e,"dragLeave")),r.delegate(e,"dragOver"),r.delegate(e,"dragEnd"),r.delegate(e,"dragExit")},r.hookDropOn=function(e){t.isIE9||r.delegate(e,"drop","upload")},r.delegate=function(e,n,a){t.addEvent(e,n.toLowerCase(),function(e){t.stopEvent(e),t.callAllOfObject(r,a||n,e)})},r.prepareInput=function(e){var n=r.findInputRecursive(e)||r.createInputAt(e);if(n){for(var a=n.parentNode;a&&!t.isTag(a,"form");)a=a.parentNode;if(!a)throw"FileDrop file input has no parent form element.";var i=a?a.getAttribute("target"):"";if(i&&t.isTag(t.byID(i),"iframe"))return{file:n,form:a}}return!1},r.findInputRecursive=function(e){for(var n=0;n<e.childNodes.length;n++){var a=e.childNodes[n];if(t.isTag(a,"input")&&"file"==a.getAttribute("type")&&t.hasClass(a,r.opt.inputClass))return a;if(a=arguments.callee(a))return a}},r.createInputAt=function(e){do var n=t.randomID();while(t.byID(n));var a=document.createElement("div");a.innerHTML='<iframe src="javascript:false" name="'+n+'"></iframe><form method="post" enctype="multipart/form-data"><input type="hidden" name="'+r.opt.iframe.callbackParam+'" /><input type="file" name="'+r.opt.iframe.fileParam+'" /></form>',a.firstChild.setAttribute("id",n),a.firstChild.style.display="none",a.lastChild.setAttribute("target",n);for(var i=e.firstChild;i&&(!t.isTag(i)||t.isTag(i,"legend"));)i=i.nextSibling;return i?e.insertBefore(a,i):e.appendChild(a),a.lastChild.lastChild},r.abortIFrame=function(){if(r.opt.input.form){var e=t.byID(r.opt.input.form.getAttribute("target"));e&&e.setAttribute("src","javascript:false")}},r.sendViaIFrame=function(e){e=e||r.opt.iframe.url;var n=(r.opt.input||{}).form;if(e&&n){do var a=t.randomID();while(a in window);window[a]=function(n){"object"!=typeof n&&(n={response:n,responseXML:"",responseText:(n||"").toString(),readyState:4,status:200,statusText:"OK",getAllResponseHeaders:function(){return""},getResponseHeader:function(){return""},setRequestHeader:function(){return this},statusCode:function(){return this},abort:function(){return this}}),t.extend(n,{iframe:!0,url:e}),t.callAllOfObject(r,"iframeDone",n),r.resetForm()};for(var i=n.firstChild;i&&(!t.isTag(i,"input")||i.name!=r.opt.iframe.callbackParam);)i=i.nextSibling;return i?i.value=a:e=e.replace(/[?&]+$/,"")+(e.indexOf("?")==-1?"?":"&")+r.opt.iframe.callbackParam+"="+a,n.setAttribute("action",e),t.callAllOfObject(r,"iframeSetup",n),n.submit(),!0}},r.resetForm=function(){var e=r.opt.input&&r.opt.input.file;if(e&&(e.value="",r.opt.recreateInput)){var n=r.opt.input.file=e.cloneNode(!0);e.parentNode.replaceChild(n,e),t.callAllOfObject(r,"inputSetup",[r.opt.input,e])}},r.multiple=function(e){return r.opt.input&&"undefined"!=typeof e&&(e?r.opt.input.file.setAttribute("multiple","multiple"):r.opt.input.file.removeAttribute("multiple")),r.opt.input&&!!r.opt.input.file.getAttribute("multiple")},r.event=function(e,n){return t.appendEventsToObject.apply(r,arguments)},r.preview=function(e,n){return t.previewToObject.apply(r,arguments)},r.onInputSetup=function(n,a){a?(n.file.clearAttributes&&n.file.clearAttributes(),n.file.mergeAttributes&&n.file.mergeAttributes(a)):r.multiple(r.opt.multiple),t.setClass(n.file,r.opt.inputClass),r.delegate(n.file,"change","upload");var i=n.file.parentNode;if(i&&i.style.display.match(/^(static)?$/)&&(i.style.position="relative"),t.isTag(e,"fieldset")){var o=document.createElement("div");o.style.position="relative",o.style.overflow="hidden",e.parentNode.insertBefore(o,e),o.appendChild(e)}},r.onDragOver=function(e){t.stopEvent(e),e.dataTransfer&&(e.dataTransfer.dropEffect=r.opt.dropEffect)},r.onUpload=function(){for(var e=0;e<t.all.length;e++)t.all[e]!==r&&t.all[e].events&&t.callAllOfObject(t.all[e],"uploadElsewhere",r)},r.event({inputSetup:r.onInputSetup,dragOver:r.onDragOver,upload:r.onUpload}),t.setClass(e,r.opt.zoneClass),r.hook(e)},t.FileDrop=function(e,n){function r(n){return function(){t.setClass(e,a.opt.dragOverClass,n)}}var a=this;e=t.byID(e),a.handle=new t.DropHandle(e,n),a.handle.filedrop=a,t.extend(a.handle.opt,{dragOverClass:"over"}),t.extend(a.handle.opt.iframe,{force:!1}),t.extend(a.handle.events,{send:[],fileSetup:[]}),a.onUpload=function(e){var n=!a.opt.iframe.force&&a.eventFiles(e,!0);n?n.length>0&&t.callAllOfObject(a,"send",[n]):!a.handle.sendViaIFrame()&&t.hasConsole&&console.warn("FileDrop fallback upload triggered but iframe options were not configured - doing nothing.")},a.eventFiles=function(e,n){var r=new t.FileList(e);if(e.dataTransfer&&(e.dataTransfer.length||e.dataTransfer.files))var i=e.dataTransfer;else var i=e.target&&e.target.files||e.srcElement&&e.srcElement.files;if(i){var o=i.items||[];i.files&&(i=i.files);for(var l={},s=0;s<i.length;s++){var u=new t.File(i[s]);l[u.name]&&"image.jpg"!=u.name||(l[u.name]=!0,u.setNativeEntry(o[s]),t.callAllOfObject(a,"fileSetup",u),(u.size>0||u.nativeEntry)&&r.push(u))}}else n&&(r=!1);return r},t.extend(a,a.handle),a.event({upload:a.onUpload,send:a.resetForm,dragEnter:r(!0),dragLeave:r(!1),uploadElsewhere:r(!1)}),a.preview({upload:r(!1)})},t.FileList=function(e){var n=this;n.dropEffect=e&&e.dropEffect||"",n.length=0,e=null,n.push=function(e){return n[n.length++]=e,n},n.pop=function(){if(n.length>0){var e=n.last();return delete n[--n.length],e}},n.first=function(){return n[0]},n.last=function(){return n[n.length-1]},n.remove=function(e){for(;e<n.length-1;e++)n[e]=n[e+1];return se.f.pop(),n},n.clear=function(){for(var e=0;e<n.length;e++)delete n[e];return n.length=0,n},n.reverse=function(){for(var e=0;e<Math.floor(n.length/2);e++)n[e]=n[n.length-e-1];return n},n.concat=function(e){for(var r=new t.FileList,a=0;a<n.length;a++)r[a]=n[a];for(var a=0;e&&a<e.length;a++)r[n.length+a+1]=e[a];return r.length=n.length+(e||[]).length,n},n.sort=function(e,t){for(var r=0;r<n.length;r++)for(var a=0;a<n.length;a++)if(e.call(t||this,n[r],n[a],r,a)<0){var i=n[r];n[r]=n[a],n[a]=i}return n},n.sortBy=function(e,t){for(var r=[],a=0;a<n.length;a++)r.push([a,e.call(t||this,n[a],a)]);r.sort(function(e,t){return e[1]>t[1]?1:e[1]<t[1]?-1:0});for(var a=0;a<r.length;a++)n[a]=r[a][0];return n},n.find=function(e,t){for(var r=0;r<n.length;r++){var a=e.call(t||this,n[r],r);if(null!=a)return n[r]}},n.each=function(e,t){return n.find(function(){e.apply(this,arguments)},t),n},n.invoke=function(e,n){var r=t.toArray(arguments,1);return this.each(function(t){t[e].apply(t,r)})},n.abort=function(){return this.invoke("abort")},n.findCompare=function(e,t){var r,a,i=null;return n.each(function(n){(null==i||i<(a=e.call(t,r)))&&(r=n)},t),r},n.filter=function(e,r){var a=new t.FileList;return n.each(function(t){e.apply(this,arguments)&&a.push(t)},r),a},n.largest=function(){return n.findCompare(function(e){return e.size})},n.smallest=function(){return n.findCompare(function(e){return-e.size})},n.oldest=function(){return n.findCompare(function(e){return-e.modDate.getTime()})},n.newest=function(){return n.findCompare(function(e){return e.modDate})},n.ofType=function(e){return e+=e.indexOf("/")==-1?"/":"$",e=new RegExp("^"+e,"i"),n.filter(function(t){return e.test(t.type)})},n.images=function(){return n.ofType("image")},n.named=function(e){return"string"==typeof e?n.find(function(t){return t.name==e}):n.filter(function(t){return e.test(t.name)})}},t.FileList.prototype.length=0,t.FileList.prototype.splice=Array.prototype.splice,t.File=function(n){var r=this;r.nativeFile=n,r.nativeEntry=null,r.name=n.fileName||n.name||"",r.size=n.fileSize||n.size||0,r.type=r.mime=n.fileType||n.type||"",r.modDate=n.lastModifiedDate||new Date,r.xhr=null,r.opt={extraHeaders:!0,xRequestedWith:!0,method:"POST"},r.events={any:[],xhrSetup:[],xhrSend:[],progress:[],done:[],error:[]},r.events.sendXHR=r.events.xhrSend,r.abort=function(){return r.xhr&&r.xhr.abort&&r.xhr.abort(),r},r.sendTo=function(e,n){if(n=t.extend(n,r.opt),n.url=e,r.size)if(window.FileReader){var a=new FileReader;a.onload=function(e){r.sendDataReadyTo(n,e)},a.onerror=function(e){t.callAllOfObject(r,"error",[e])},a.readAsArrayBuffer(r.nativeFile)}else r.sendDataReadyTo(n);else t.hasConsole&&console.warn("Trying to send an empty FileDrop.File.");return r},r.sendDataReadyTo=function(e,n){if(r.abort(),r.xhr=t.newXHR(),r.hookXHR(r.xhr),r.xhr.open(e.method,e.url,!0),r.xhr.overrideMimeType&&r.xhr.overrideMimeType("application/octet-stream"),r.xhr.setRequestHeader("Content-Type","application/octet-stream"),e.extraHeaders){r.xhr.setRequestHeader("X-File-Name",encodeURIComponent(r.name)),r.xhr.setRequestHeader("X-File-Size",r.size),r.xhr.setRequestHeader("X-File-Type",r.type),r.xhr.setRequestHeader("X-File-Date",r.modDate.toGMTString());var a=e.xRequestedWith;if(a===!0){var i=window.FileReader?"FileAPI":"Webkit";a="FileDrop-XHR-"+i}a&&r.xhr.setRequestHeader("X-Requested-With",a)}t.callAllOfObject(r,"xhrSetup",[r.xhr,e]);var o=n&&n.target&&n.target.result?n.target.result:r.nativeFile;return t.callAllOfObject(r,"xhrSend",[r.xhr,o,e]),r.xhr},r.hookXHR=function(e){var n=e.upload||e;e.onreadystatechange=function(n){if(4==e.readyState){try{var a=200==e.status?"done":"error"}catch(n){var a="error"}var i="error"==a?[n,e]:[e,n];t.callAllOfObject(r,a,i)}},n.onprogress=function(n){var a=n.lengthComputable?n.loaded:null;t.callAllOfObject(r,"progress",[a,n.total||null,e,n])}},r.readData=function(e,t,n){return r.read({onDone:e,onError:t,func:n})},r.readDataURL=function(e,t){return r.readData(e,t||!1,"uri")},r.readDataURI=r.readDataURL,r.read=function(n){function a(e,t){"object"==typeof t||(t.message=t),t.fdError=e,n.onError!==!1&&(n.onError||n.onDone).apply(this,arguments)}if(t.extend(n,{onDone:new Function,onError:null,blob:r.nativeFile,func:"",start:0,end:null,mime:""}),!window.FileReader)return a("support",e);(n.start>0||null!=n.end&&n.end)&&(n.blob.slice?(null==n.end&&(n.end=n.blob.size||n.blob.fileSize),n.blob=n.blob.slice(n.start,n.end,n.mime)):t.hasConsole&&console.warn("File Blob/slice() are unsupported - operating on entire File."));var i=new FileReader;i.onerror=function(e){a("read",e)},i.onload=function(e){e.target&&e.target.result?("readAsBinaryString"==n.func&&(e.target.result=String.fromCharCode.apply(null,new Uint8Array(e.target.result))),n.onDone(e.target.result)):i.onerror(e)};var o=n.func;if(t.isArray(o)){var l=o[0];return o[0]=n.blob,i[l].apply(i,o)}if(o&&"bin"!=o){if("url"==o||"uri"==o||"src"==o)o="readAsDataURL";else if("array"==o)o="readAsArrayBuffer";else if("text"==o)o="readAsText";else if("read"!=o.substr(0,4))return i.readAsText(n.blob,o)}else o="readAsBinaryString";return"readAsBinaryString"==o&&(o="readAsArrayBuffer"),i[o](n.blob)},r.listEntries=function(e,n){function a(t){l-=t,0==l&&e&&(e(o),e=null)}if(r.nativeEntry&&r.nativeEntry.isDirectory){n=n||new Function;var i=r.nativeEntry.createReader(),o=new t.FileList,l=0;return i.readEntries(function(e){for(var r=0;r<e.length;r++){var s=e[r];s.file?(l++,s.file(function(e){var n=new t.File(e);n.setNativeEntry(s),o.push(n),a(1)},function(){o.push(t.File.fromEntry(s)),a(1),n.apply(this,arguments)})):o.push(t.File.fromEntry(s))}r?i.readEntries(arguments.callee,n):a(0)},n),!0}},r.setNativeEntry=function(e){r.nativeEntry=e&&e.webkitGetAsEntry&&e.webkitGetAsEntry()},r.event=function(e,n){return t.appendEventsToObject.apply(r,arguments)},r.preview=function(e,n){return t.previewToObject.apply(r,arguments)},r.onXhrSend=function(e,t){e.send(t)},r.event({xhrSend:r.onXhrSend})},t.File.fromEntry=function(e){var n=new t.File(e);return n.setNativeEntry(e),n.nativeFile=null,n},n.FileDrop=t.FileDrop}(window.fd,window);