forked from bitbof/webchemy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
filesaver.js
11 lines (11 loc) · 5.68 KB
/
filesaver.js
1
2
3
4
5
6
7
8
9
10
11
/*! @source http://purl.eligrey.com/github/BlobBuilder.js/blob/master/BlobBuilder.js */
var BlobBuilder=BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder||function(c){var n=function(a){return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]},h=function(){this.data=[]},f=function(a,b,e){this.data=a;this.size=a.length;this.type=b;this.encoding=e},j=h.prototype,k=f.prototype,p=c.FileReaderSync,q=function(a){this.code=this[this.name=a]},r="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),
l=r.length,d=c.URL||c.webkitURL||c,s=d.createObjectURL,t=d.revokeObjectURL,m=d,u=c.btoa,v=c.atob,w=!1,x=function(a){w=!a},y=c.ArrayBuffer,g=c.Uint8Array;for(h.fake=k.fake=!0;l--;)q.prototype[r[l]]=l+1;try{g&&x.apply(0,new g(1))}catch(z){}d.createObjectURL||(m=c.URL={});m.createObjectURL=function(a){var b=a.type;null===b&&(b="application/octet-stream");if(a instanceof f)return b="data:"+b,"base64"===a.encoding?b+";base64,"+a.data:"URI"===a.encoding?b+","+decodeURIComponent(a.data):u?b+";base64,"+u(a.data):
b+","+encodeURIComponent(a.data);if(s)return s.call(d,a)};m.revokeObjectURL=function(a){"data:"!==a.substring(0,5)&&t&&t.call(d,a)};j.append=function(a){var b=this.data;if(g&&a instanceof y)if(w)b.push(String.fromCharCode.apply(String,new g(a)));else{b="";a=new g(a);for(var e=0,c=a.length;e<c;e++)b+=String.fromCharCode(a[e])}else if("Blob"===n(a)||"File"===n(a))if(p)e=new p,b.push(e.readAsBinaryString(a));else throw new q("NOT_READABLE_ERR");else a instanceof f?"base64"===a.encoding&&v?b.push(v(a.data)):
"URI"===a.encoding?b.push(decodeURIComponent(a.data)):"raw"===a.encoding&&b.push(a.data):("string"!==typeof a&&(a+=""),b.push(unescape(encodeURIComponent(a))))};j.getBlob=function(a){arguments.length||(a=null);return new f(this.data.join(""),a,"raw")};j.toString=function(){return"[object BlobBuilder]"};k.slice=function(a,b,c){var d=arguments.length;3>d&&(c=null);return new f(this.data.slice(a,1<d?b:this.data.length),c,this.encoding)};k.toString=function(){return"[object Blob]"};return h}(self);
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */
(function(f){var k=f.Uint8Array,b=f.HTMLCanvasElement,n=/\s*;\s*base64\s*(?:;|$)/i,m,p=function(f){for(var g=f.length,a=new k(3*(g/4)|0),h=0,e=0,c=[0,0],d=0,j=0,l,b;g--;)b=f.charCodeAt(h++),l=m[b-43],255!==l&&void 0!==l&&(c[1]=c[0],c[0]=b,j=j<<6|l,d++,4===d&&(a[e++]=j>>>16,61!==c[1]&&(a[e++]=j>>>8),61!==c[0]&&(a[e++]=j),d=0));return a.buffer};k&&(m=new k([62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,
-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]));b&&!b.prototype.toBlob&&(b.prototype.toBlob=function(b,g){g||(g="image/png");if(this.mozGetAsFile)b(this.mozGetAsFile("canvas",g));else{var a=Array.prototype.slice.call(arguments,1),h=this.toDataURL.apply(this,a),e=h.indexOf(","),a=h.substring(e+1),h=n.test(h.substring(0,e)),e=f.BlobBuilder||f.WebKitBlobBuilder||f.MozBlobBuilder,c=new e,d;e.fake?(d=c.getBlob(g),d.encoding=h?"base64":"URI",d.data=a,d.size=a.length):
k&&(h?c.append(p(a)):c.append(decodeURIComponent(a)),d=c.getBlob(g));b(d)}})})(self);
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||function(a){"use strict";var b=a.document,c=function(){return a.URL||a.webkitURL||a},d=a.URL||a.webkitURL||a,e=b.createElementNS("http://www.w3.org/1999/xhtml","a"),f="download"in e,g=function(c){var d=b.createEvent("MouseEvents");return d.initMouseEvent("click",!0,!1,a,0,0,0,0,0,!1,!1,!1,!1,0,null),c.dispatchEvent(d)},h=a.webkitRequestFileSystem,i=a.requestFileSystem||h||a.mozRequestFileSystem,j=function(b){(a.setImmediate||a.setTimeout)(function(){throw b},0)},k="application/octet-stream",l=0,m=[],n=function(){for(var a=m.length;a--;){var b=m[a];"string"==typeof b?d.revokeObjectURL(b):b.remove()}m.length=0},o=function(a,b,c){b=[].concat(b);for(var d=b.length;d--;){var e=a["on"+b[d]];if("function"==typeof e)try{e.call(a,c||a)}catch(f){j(f)}}},p=function(b,d){var q,r,x,j=this,n=b.type,p=!1,s=function(){var a=c().createObjectURL(b);return m.push(a),a},t=function(){o(j,"writestart progress write writeend".split(" "))},u=function(){(p||!q)&&(q=s(b)),r&&(r.location.href=q),j.readyState=j.DONE,t()},v=function(a){return function(){return j.readyState!==j.DONE?a.apply(this,arguments):void 0}},w={create:!0,exclusive:!1};return j.readyState=j.INIT,d||(d="download"),f&&(q=s(b),e.href=q,e.download=d,g(e))?(j.readyState=j.DONE,t(),void 0):(a.chrome&&n&&n!==k&&(x=b.slice||b.webkitSlice,b=x.call(b,0,b.size,k),p=!0),h&&"download"!==d&&(d+=".download"),r=n===k||h?a:a.open(),i?(l+=b.size,i(a.TEMPORARY,l,v(function(a){a.root.getDirectory("saved",w,v(function(a){var c=function(){a.getFile(d,w,v(function(a){a.createWriter(v(function(c){c.onwriteend=function(b){r.location.href=a.toURL(),m.push(a),j.readyState=j.DONE,o(j,"writeend",b)},c.onerror=function(){var a=c.error;a.code!==a.ABORT_ERR&&u()},"writestart progress write abort".split(" ").forEach(function(a){c["on"+a]=j["on"+a]}),c.write(b),j.abort=function(){c.abort(),j.readyState=j.DONE},j.readyState=j.WRITING}),u)}),u)};a.getFile(d,{create:!1},v(function(a){a.remove(),c()}),v(function(a){a.code===a.NOT_FOUND_ERR?c():u()}))}),u)}),u),void 0):(u(),void 0))},q=p.prototype,r=function(a,b){return new p(a,b)};return q.abort=function(){var a=this;a.readyState=a.DONE,o(a,"abort")},q.readyState=q.INIT=0,q.WRITING=1,q.DONE=2,q.error=q.onwritestart=q.onprogress=q.onwrite=q.onabort=q.onerror=q.onwriteend=null,a.addEventListener("unload",n,!1),r}(self);