You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
5.7 KiB

/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs = saveAs || "undefined" !== typeof navigator && navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator) || function(a) {
"use strict";
if ("undefined" === typeof navigator || !/MSIE [1-9]\./.test(navigator.userAgent)) {
var k = a.document
, n = k.createElementNS("http://www.w3.org/1999/xhtml", "a")
, w = "download"in n
, x = function(c) {
var e = k.createEvent("MouseEvents");
e.initMouseEvent("click", !0, !1, a, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null);
c.dispatchEvent(e)
}
, q = a.webkitRequestFileSystem
, u = a.requestFileSystem || q || a.mozRequestFileSystem
, y = function(c) {
(a.setImmediate || a.setTimeout)(function() {
throw c;
}, 0)
}
, r = 0
, s = function(c) {
var e = function() {
"string" === typeof c ? (a.URL || a.webkitURL || a).revokeObjectURL(c) : c.remove()
};
a.chrome ? e() : setTimeout(e, 500)
}
, t = function(c, a, d) {
a = [].concat(a);
for (var b = a.length; b--; ) {
var l = c["on" + a[b]];
if ("function" === typeof l)
try {
l.call(c, d || c)
} catch (f) {
y(f)
}
}
}
, m = function(c, e) {
var d = this, b = c.type, l = !1, f, p, k = function() {
t(d, ["writestart", "progress", "write", "writeend"])
}, g = function() {
if (l || !f)
f = (a.URL || a.webkitURL || a).createObjectURL(c);
p ? p.location.href = f : void 0 == a.open(f, "_blank") && "undefined" !== typeof safari && (a.location.href = f);
d.readyState = d.DONE;
k();
s(f)
}, h = function(a) {
return function() {
if (d.readyState !== d.DONE)
return a.apply(this, arguments)
}
}, m = {
create: !0,
exclusive: !1
}, v;
d.readyState = d.INIT;
e || (e = "download");
if (w)
f = (a.URL || a.webkitURL || a).createObjectURL(c),
n.href = f,
n.download = e,
x(n),
d.readyState = d.DONE,
k(),
s(f);
else {
a.chrome && b && "application/octet-stream" !== b && (v = c.slice || c.webkitSlice,
c = v.call(c, 0, c.size, "application/octet-stream"),
l = !0);
q && "download" !== e && (e += ".download");
if ("application/octet-stream" === b || q)
p = a;
u ? (r += c.size,
u(a.TEMPORARY, r, h(function(a) {
a.root.getDirectory("saved", m, h(function(a) {
var b = function() {
a.getFile(e, m, h(function(a) {
a.createWriter(h(function(b) {
b.onwriteend = function(b) {
p.location.href = a.toURL();
d.readyState = d.DONE;
t(d, "writeend", b);
s(a)
}
;
b.onerror = function() {
var a = b.error;
a.code !== a.ABORT_ERR && g()
}
;
["writestart", "progress", "write", "abort"].forEach(function(a) {
b["on" + a] = d["on" + a]
});
b.write(c);
d.abort = function() {
b.abort();
d.readyState = d.DONE
}
;
d.readyState = d.WRITING
}), g)
}), g)
};
a.getFile(e, {
create: !1
}, h(function(a) {
a.remove();
b()
}), h(function(a) {
a.code === a.NOT_FOUND_ERR ? b() : g()
}))
}), g)
}), g)) : g()
}
}
, b = m.prototype;
b.abort = function() {
this.readyState = this.DONE;
t(this, "abort")
}
;
b.readyState = b.INIT = 0;
b.WRITING = 1;
b.DONE = 2;
b.error = b.onwritestart = b.onprogress = b.onwrite = b.onabort = b.onerror = b.onwriteend = null;
return function(a, b) {
return new m(a,b)
}
}
}("undefined" !== typeof self && self || "undefined" !== typeof window && window || this.content);
"undefined" !== typeof module && null !== module ? module.exports = saveAs : "undefined" !== typeof define && null !== define && null != define.amd && define([], function() {
return saveAs
});