UNPKG

magix-components

Version:
1 lines 2.62 kB
define("mx-uploader/index",["magix","$","../mx-runner/index"],function(e,t,n){var r=e("magix"),i=e("$"),a=e("../mx-runner/index");r.applyStyle("K",".fD{position:relative;overflow:hidden}.fE{left:0;top:0;bottom:0;right:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:100px;filter:alpha(opacity=0)}.fF,.fE{position:absolute}.fF{left:-999999px}");var o=r.Base.extend({destroy:function(){this.__cw=1}}),p=o.extend({__fc:function(e,t,n,o){var p=e.form,c=this,f=r.guid("up");p||(i("body").append('<div id="'+f+'_temp" class="fF"><form target="'+f+'"></form></div>'),(p=i("#"+f+"_temp").find("form")).append(e),p=p[0]);var d=0,s=2e3;if(e.files){s=0;for(var l=0;l<e.files.length;l++)s+=e.files[l].size;(s/=1e3)<2e3&&(s=2e3)}var u=1e3/s,m=function(){d<1&&(o(d),d+=u+20*Math.random()*u)};a.__aH(100,m),i('<iframe name="'+f+'" id="'+f+'" style="display:none;"></iframe>').insertAfter(p).on("load",function(e){if(a.__aI(m),!c.__cw){o(1);var t=e.target,r=i(t.contentWindow.document.body);r.find("script").remove();var p=i.trim(r.text());i(t).remove(),i("#"+f+"_temp").remove();try{n(null,new Function("return "+p)())}catch(e){n(e)}}}).on("error",function(e){a.__aI(m),c.__cw||(i("#"+f+"_temp").remove(),n(e))}),p.target=f,p.action=t.get("action"),p.method="POST",p.enctype="multipart/form-data",p.submit()}}),c=o.extend({__fc:function(e,t,n,r){for(var i=new FormData,a=this,o=e.files,p=0;p<o.length;p++)i.append(t.get("name"),o[p]);var c=new XMLHttpRequest;c.open("post",t.get("action"),!0),c.onload=function(){if(!a.__cw)try{n(null,new Function("return "+c.responseText)())}catch(e){n(e)}},c.onerror=function(e){a.__cw||(e.message="network error",n(e))},c.upload.onprogress=function(e){r(e.lengthComputable?e.loaded/e.total:0)},c.send(i)}});n.exports=r.View.extend({init:function(e){var t=this;t.updater.set({name:e.name||"file",action:e.action||"",multiple:e.multiple,accept:e.accept});var n;n=window.FormData?c:p,t.capture("transport",new n)},render:function(){var e=this,t="file_"+e.id,n=i("#"+t);n.length&&n.remove();var r=e.updater.get();i("#"+e.id).append(e.wrapEvent('<input id="'+t+'" type="file" class="fE" mx-change="__fd()" name="'+r.name+'" />')).addClass("fD"),n=i("#"+t),r.multiple&&n.attr("multiple","multiple"),r.accept&&n.prop("accept",r.accept)},"__fd<change>":function(e){var t=this,n=i("#"+t.id),r=i.Event("start",{files:e.eventTarget.files});n.trigger(r),r.isDefaultPrevented()?t.render():(t.capture("transport").__fc(e.target,t.updater,function(e,t){e?n.trigger({type:"error",error:e}):n.trigger({type:"success",response:t})},function(e){n.trigger({type:"progress",percent:e})}),t.render())}})});