1983 lines
87 KiB
JavaScript
1983 lines
87 KiB
JavaScript
"use strict";
|
|
function _possibleConstructorReturn(a, b) {
|
|
if (!a)
|
|
throw new ReferenceError(
|
|
"this hasn't been initialised - super() hasn't been called");
|
|
return !b || "object" != typeof b && "function" != typeof b ? a : b
|
|
}
|
|
function _inherits(a, b) {
|
|
if ("function" != typeof b && null !== b)
|
|
throw new TypeError(
|
|
"Super expression must either be null or a function, not " + typeof b);
|
|
a.prototype = Object.create(b && b.prototype, {
|
|
constructor : {value : a, enumerable : !1, writable : !0, configurable : !0}
|
|
}),
|
|
b && (Object.setPrototypeOf ? Object.setPrototypeOf(a, b) : a.__proto__ = b)
|
|
}
|
|
function _classCallCheck(a, b) {
|
|
if (!(a instanceof b))
|
|
throw new TypeError("Cannot call a class as a function")
|
|
}
|
|
function __guard__(a, b) { return void 0 !== a && null !== a ? b(a) : void 0 }
|
|
function __guardMethod__(a, b, c) {
|
|
return void 0 !== a && null !== a && "function" == typeof a[b] ? c(a, b)
|
|
: void 0
|
|
}
|
|
var _createClass = function() {
|
|
function a(a, b) {
|
|
for (var c = 0; c < b.length; c++) {
|
|
var d = b[c];
|
|
d.enumerable = d.enumerable || !1, d.configurable = !0,
|
|
"value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
|
|
}
|
|
}
|
|
return function(b, c, d) { return c && a(b.prototype, c), d && a(b, d), b }
|
|
}(), Emitter = function() {
|
|
function a() { _classCallCheck(this, a) }
|
|
return _createClass(a,
|
|
[
|
|
{
|
|
key : "on",
|
|
value : function(a, b) {
|
|
return this._callbacks = this._callbacks || {},
|
|
this._callbacks[a] ||
|
|
(this._callbacks[a] = []),
|
|
this._callbacks[a].push(b), this
|
|
}
|
|
},
|
|
{
|
|
key : "emit",
|
|
value : function(a) {
|
|
this._callbacks = this._callbacks || {};
|
|
var b = this._callbacks[a];
|
|
if (b) {
|
|
for (var c = arguments.length,
|
|
d = Array(c > 1 ? c - 1 : 0), e = 1;
|
|
e < c; e++)
|
|
d[e - 1] = arguments[e];
|
|
for (var f = b, g = 0, f = f;;) {
|
|
var h;
|
|
if (g >= f.length)
|
|
break;
|
|
h = f[g++];
|
|
h.apply(this, d)
|
|
}
|
|
}
|
|
return this
|
|
}
|
|
},
|
|
{
|
|
key : "off",
|
|
value : function(a, b) {
|
|
if (!this._callbacks || 0 === arguments.length)
|
|
return this._callbacks = {}, this;
|
|
var c = this._callbacks[a];
|
|
if (!c)
|
|
return this;
|
|
if (1 === arguments.length)
|
|
return delete this._callbacks[a], this;
|
|
for (var d = 0; d < c.length; d++) {
|
|
if (c[d] === b) {
|
|
c.splice(d, 1);
|
|
break
|
|
}
|
|
}
|
|
return this
|
|
}
|
|
}
|
|
]),
|
|
a
|
|
}(), Dropzone = function(a) {
|
|
function b(a, c) {
|
|
_classCallCheck(this, b);
|
|
var d = _possibleConstructorReturn(
|
|
this, (b.__proto__ || Object.getPrototypeOf(b)).call(this)),
|
|
e = void 0, f = void 0;
|
|
if (d.element = a, d.version = b.version,
|
|
d.defaultOptions.previewTemplate =
|
|
d.defaultOptions.previewTemplate.replace(/\n*/g, ""),
|
|
d.clickableElements = [], d.listeners = [], d.files = [],
|
|
"string" == typeof d.element &&
|
|
(d.element = document.querySelector(d.element)),
|
|
!d.element || null == d.element.nodeType)
|
|
throw new Error("Invalid dropzone element.");
|
|
if (d.element.dropzone)
|
|
throw new Error("Dropzone already attached.");
|
|
b.instances.push(d), d.element.dropzone = d;
|
|
var g = null != (f = b.optionsForElement(d.element)) ? f : {};
|
|
if (d.options = b.extend({}, d.defaultOptions, g, null != c ? c : {}),
|
|
d.options.forceFallback || !b.isBrowserSupported()) {
|
|
var h;
|
|
return h = d.options.fallback.call(d), _possibleConstructorReturn(d, h)
|
|
}
|
|
if (null == d.options.url &&
|
|
(d.options.url = d.element.getAttribute("action")),
|
|
!d.options.url)
|
|
throw new Error("No URL provided.");
|
|
if (d.options.acceptedFiles && d.options.acceptedMimeTypes)
|
|
throw new Error(
|
|
"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
|
|
if (d.options.uploadMultiple && d.options.chunking)
|
|
throw new Error("You cannot set both: uploadMultiple and chunking.");
|
|
return d.options.acceptedMimeTypes &&
|
|
(d.options.acceptedFiles = d.options.acceptedMimeTypes,
|
|
delete d.options.acceptedMimeTypes),
|
|
null != d.options.renameFilename &&
|
|
(d.options.renameFile = function(
|
|
a) { return d.options.renameFilename.call(d, a.name, a) }),
|
|
d.options.method = d.options.method.toUpperCase(),
|
|
(e = d.getExistingFallback()) && e.parentNode &&
|
|
e.parentNode.removeChild(e),
|
|
!1 !== d.options.previewsContainer &&
|
|
(d.options.previewsContainer
|
|
? d.previewsContainer = b.getElement(
|
|
d.options.previewsContainer, "previewsContainer")
|
|
: d.previewsContainer = d.element),
|
|
d.options.clickable && (!0 === d.options.clickable
|
|
? d.clickableElements = [ d.element ]
|
|
: d.clickableElements = b.getElements(
|
|
d.options.clickable, "clickable")),
|
|
d.init(), d
|
|
}
|
|
return _inherits(b, a),
|
|
_createClass(
|
|
b, null,
|
|
[
|
|
{
|
|
key : "initClass",
|
|
value : function() {
|
|
this.prototype
|
|
.Emitter = Emitter,
|
|
this.prototype.events =
|
|
[
|
|
"drop",
|
|
"dragstart",
|
|
"dragend",
|
|
"dragenter",
|
|
"dragover",
|
|
"dragleave",
|
|
"addedfile",
|
|
"addedfiles",
|
|
"removedfile",
|
|
"thumbnail",
|
|
"error",
|
|
"errormultiple",
|
|
"processing",
|
|
"processingmultiple",
|
|
"uploadprogress",
|
|
"totaluploadprogress",
|
|
"sending",
|
|
"sendingmultiple",
|
|
"success",
|
|
"successmultiple",
|
|
"canceled",
|
|
"canceledmultiple",
|
|
"complete",
|
|
"completemultiple",
|
|
"reset",
|
|
"maxfilesexceeded",
|
|
"maxfilesreached",
|
|
"queuecomplete"
|
|
],
|
|
this.prototype.defaultOptions = {
|
|
url : null,
|
|
method : "post",
|
|
withCredentials : !1,
|
|
timeout : 3e4,
|
|
parallelUploads : 2,
|
|
uploadMultiple : !1,
|
|
chunking : !1,
|
|
forceChunking : !1,
|
|
chunkSize : 2e6,
|
|
parallelChunkUploads : !1,
|
|
retryChunks : !1,
|
|
retryChunksLimit : 3,
|
|
maxFilesize : 256,
|
|
paramName : "file",
|
|
createImageThumbnails : !0,
|
|
maxThumbnailFilesize : 10,
|
|
thumbnailWidth : 120,
|
|
thumbnailHeight : 120,
|
|
thumbnailMethod : "crop",
|
|
resizeWidth : null,
|
|
resizeHeight : null,
|
|
resizeMimeType : null,
|
|
resizeQuality : .8,
|
|
resizeMethod : "contain",
|
|
filesizeBase : 1e3,
|
|
maxFiles : null,
|
|
headers : null,
|
|
clickable : !0,
|
|
ignoreHiddenFiles : !0,
|
|
acceptedFiles : null,
|
|
acceptedMimeTypes : null,
|
|
autoProcessQueue : !0,
|
|
autoQueue : !0,
|
|
addRemoveLinks : !1,
|
|
previewsContainer : null,
|
|
hiddenInputContainer : "body",
|
|
capture : null,
|
|
renameFilename : null,
|
|
renameFile : null,
|
|
forceFallback : !1,
|
|
dictDefaultMessage : "Drop files here to upload",
|
|
dictFallbackMessage :
|
|
"Your browser does not support drag'n'drop file uploads.",
|
|
dictFallbackText :
|
|
"Please use the fallback form below to upload your files like in the olden days.",
|
|
dictFileTooBig :
|
|
"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",
|
|
dictInvalidFileType : "You can't upload files of this type.",
|
|
dictResponseError : "Server responded with {{statusCode}} code.",
|
|
dictCancelUpload : "Cancel upload",
|
|
dictCancelUploadConfirmation :
|
|
"Are you sure you want to cancel this upload?",
|
|
dictRemoveFile : "Remove file",
|
|
dictRemoveFileConfirmation : null,
|
|
dictMaxFilesExceeded : "You can not upload any more files.",
|
|
dictFileSizeUnits :
|
|
{tb : "TB", gb : "GB", mb : "MB", kb : "KB", b : "b"},
|
|
init : function() {},
|
|
params : function(a, b, c) {
|
|
if (c)
|
|
return {
|
|
dzuuid: c.file.upload.uuid, dzchunkindex: c.index,
|
|
dztotalfilesize: c.file.size,
|
|
dzchunksize: this.options.chunkSize,
|
|
dztotalchunkcount: c.file.upload.totalChunkCount,
|
|
dzchunkbyteoffset: c.index * this.options.chunkSize
|
|
}
|
|
},
|
|
accept : function(a, b) { return b() },
|
|
chunksUploaded : function(a, b) { b() },
|
|
fallback : function() {
|
|
var a = void 0;
|
|
this.element.className =
|
|
this.element.className + " dz-browser-not-supported";
|
|
for (var c = this.element.getElementsByTagName("div"), d = 0,
|
|
c = c;
|
|
;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
if (/(^| )dz-message($| )/.test(f.className)) {
|
|
a = f, f.className = "dz-message";
|
|
break
|
|
}
|
|
}
|
|
a || (a = b.createElement(
|
|
'<div class="dz-message"><span></span></div>'),
|
|
this.element.appendChild(a));
|
|
var g = a.getElementsByTagName("span")[0];
|
|
return g && (null != g.textContent
|
|
? g.textContent = this.options.dictFallbackMessage
|
|
: null != g.innerText &&
|
|
(g.innerText =
|
|
this.options.dictFallbackMessage)),
|
|
this.element.appendChild(this.getFallbackForm())
|
|
},
|
|
resize : function(a, b, c, d) {
|
|
var e = {
|
|
srcX : 0,
|
|
srcY : 0,
|
|
srcWidth : a.width,
|
|
srcHeight : a.height
|
|
},
|
|
f = a.width / a.height;
|
|
null == b && null == c ? (b = e.srcWidth, c = e.srcHeight)
|
|
: null == b ? b = c * f
|
|
: null == c && (c = b / f),
|
|
b = Math.min(b, e.srcWidth),
|
|
c = Math.min(c, e.srcHeight);
|
|
var g = b / c;
|
|
if (e.srcWidth > b || e.srcHeight > c)
|
|
if ("crop" === d)
|
|
f > g ? (e.srcHeight = a.height, e.srcWidth = e.srcHeight * g)
|
|
: (e.srcWidth = a.width, e.srcHeight = e.srcWidth / g);
|
|
else {
|
|
if ("contain" !== d)
|
|
throw new Error("Unknown resizeMethod '" + d + "'");
|
|
f > g ? c = b / f : b = c * f
|
|
}
|
|
return e.srcX = (a.width - e.srcWidth) / 2,
|
|
e.srcY = (a.height - e.srcHeight) / 2, e.trgWidth = b,
|
|
e.trgHeight = c, e
|
|
},
|
|
transformFile : function(a, b) {
|
|
return (this.options.resizeWidth || this.options.resizeHeight) &&
|
|
a.type.match(/image.*/)
|
|
? this.resizeImage(a, this.options.resizeWidth,
|
|
this.options.resizeHeight,
|
|
this.options.resizeMethod, b)
|
|
: b(a)
|
|
},
|
|
previewTemplate :
|
|
'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Check</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Error</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',
|
|
drop : function(
|
|
a) { return this.element.classList.remove("dz-drag-hover") },
|
|
dragstart : function(a) {},
|
|
dragend : function(
|
|
a) { return this.element.classList.remove("dz-drag-hover") },
|
|
dragenter : function(
|
|
a) { return this.element.classList.add("dz-drag-hover") },
|
|
dragover : function(
|
|
a) { return this.element.classList.add("dz-drag-hover") },
|
|
dragleave : function(
|
|
a) { return this.element.classList.remove("dz-drag-hover") },
|
|
paste : function(a) {},
|
|
reset : function() {
|
|
return this.element.classList.remove("dz-started")
|
|
},
|
|
addedfile : function(a) {
|
|
var c = this;
|
|
if (this.element === this.previewsContainer &&
|
|
this.element.classList.add("dz-started"),
|
|
this.previewsContainer) {
|
|
|
|
// TODO: find scrollbox eleemnt, if not exist, create one
|
|
|
|
var scrollbox = this.previewsContainer.querySelector(".scrollbox");
|
|
if (scrollbox == null) {
|
|
scrollbox = document.createElement("div");
|
|
scrollbox.setAttribute("class", "scrollbox");
|
|
this.previewsContainer.appendChild(scrollbox);
|
|
}
|
|
console.log(scrollbox)
|
|
|
|
a.previewElement =
|
|
b.createElement(this.options.previewTemplate.trim()),
|
|
a.previewTemplate = a.previewElement,
|
|
scrollbox.appendChild(a.previewElement);
|
|
for (var d = a.previewElement.querySelectorAll("[data-dz-name]"),
|
|
e = 0, d = d;
|
|
;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g = f;
|
|
g.textContent = a.name
|
|
}
|
|
for (var h = a.previewElement.querySelectorAll("[data-dz-size]"),
|
|
i = 0, h = h;
|
|
!(i >= h.length);)
|
|
g = h[i++], g.innerHTML = this.filesize(a.size);
|
|
this.options.addRemoveLinks &&
|
|
(a._removeLink = b.createElement(
|
|
'<a class="dz-remove" href="javascript:undefined;" data-dz-remove>' +
|
|
this.options.dictRemoveFile + "</a>"),
|
|
a.previewElement.appendChild(a._removeLink));
|
|
for (
|
|
var j =
|
|
function(d) {
|
|
return d.preventDefault(), d.stopPropagation(),
|
|
a.status === b.UPLOADING
|
|
? b.confirm(
|
|
c.options
|
|
.dictCancelUploadConfirmation,
|
|
function() {
|
|
return c.removeFile(a)
|
|
})
|
|
: c.options.dictRemoveFileConfirmation
|
|
? b.confirm(
|
|
c.options
|
|
.dictRemoveFileConfirmation,
|
|
function() {
|
|
return c.removeFile(a)
|
|
})
|
|
: c.removeFile(a)
|
|
},
|
|
k = a.previewElement.querySelectorAll(
|
|
"[data-dz-remove]"),
|
|
l = 0, k = k;
|
|
;) {
|
|
var m;
|
|
if (l >= k.length)
|
|
break;
|
|
m = k[l++];
|
|
m.addEventListener("click", j)
|
|
}
|
|
}
|
|
},
|
|
removedfile : function(a) {
|
|
return null != a.previewElement &&
|
|
null != a.previewElement.parentNode &&
|
|
a.previewElement.parentNode.removeChild(
|
|
a.previewElement),
|
|
this._updateMaxFilesReachedClass()
|
|
},
|
|
thumbnail : function(a, b) {
|
|
if (a.previewElement) {
|
|
a.previewElement.classList.remove("dz-file-preview");
|
|
for (var c = a.previewElement.querySelectorAll(
|
|
"[data-dz-thumbnail]"),
|
|
d = 0, c = c;
|
|
;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
f.alt = a.name, f.src = b
|
|
}
|
|
return setTimeout(function() {
|
|
return a.previewElement.classList.add("dz-image-preview")
|
|
}, 1)
|
|
}
|
|
},
|
|
error : function(a, b) {
|
|
if (a.previewElement) {
|
|
a.previewElement.classList.add("dz-error"),
|
|
"String" != typeof b && b.error && (b = b.error);
|
|
for (var c = a.previewElement.querySelectorAll(
|
|
"[data-dz-errormessage]"),
|
|
d = 0, c = c;
|
|
;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
e.textContent = b
|
|
}
|
|
}
|
|
},
|
|
errormultiple : function() {},
|
|
processing : function(a) {
|
|
if (a.previewElement &&
|
|
(a.previewElement.classList.add("dz-processing"),
|
|
a._removeLink))
|
|
return a._removeLink.textContent = this.options.dictCancelUpload
|
|
},
|
|
processingmultiple : function() {},
|
|
uploadprogress : function(a, b, c) {
|
|
if (a.previewElement)
|
|
for (var d = a.previewElement.querySelectorAll(
|
|
"[data-dz-uploadprogress]"),
|
|
e = 0, d = d;
|
|
;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g = f;
|
|
"PROGRESS" === g.nodeName ? g.value = b
|
|
: g.style.width = b + "%"
|
|
}
|
|
},
|
|
totaluploadprogress : function() {},
|
|
sending : function() {},
|
|
sendingmultiple : function() {},
|
|
success : function(a) {
|
|
if (a.previewElement)
|
|
return a.previewElement.classList.add("dz-success")
|
|
},
|
|
successmultiple : function() {},
|
|
canceled : function(
|
|
a) { return this.emit("error", a, "Upload canceled.") },
|
|
canceledmultiple : function() {},
|
|
complete : function(a) {
|
|
if (a._removeLink &&
|
|
(a._removeLink.textContent = this.options.dictRemoveFile),
|
|
a.previewElement)
|
|
return a.previewElement.classList.add("dz-complete")
|
|
},
|
|
completemultiple : function() {},
|
|
maxfilesexceeded : function() {},
|
|
maxfilesreached : function() {},
|
|
queuecomplete : function() {},
|
|
addedfiles : function() {}
|
|
},
|
|
this.prototype._thumbnailQueue = [],
|
|
this.prototype._processingThumbnail = !1
|
|
}
|
|
},
|
|
{
|
|
key : "extend",
|
|
value : function(a) {
|
|
for (var b = arguments.length, c = Array(b > 1 ? b - 1 : 0),
|
|
d = 1;
|
|
d < b; d++)
|
|
c[d - 1] = arguments[d];
|
|
for (var e = c, f = 0, e = e;;) {
|
|
var g;
|
|
if (f >= e.length)
|
|
break;
|
|
g = e[f++];
|
|
var h = g;
|
|
for (var i in h) {
|
|
var j = h[i];
|
|
a[i] = j
|
|
}
|
|
}
|
|
return a
|
|
}
|
|
}
|
|
]),
|
|
_createClass(
|
|
b,
|
|
[
|
|
{
|
|
key : "getAcceptedFiles",
|
|
value : function() {
|
|
return this.files.filter(function(a) { return a.accepted })
|
|
.map(function(a) { return a })
|
|
}
|
|
},
|
|
{
|
|
key : "getRejectedFiles",
|
|
value : function() {
|
|
return this.files.filter(function(a) { return !a.accepted })
|
|
.map(function(a) { return a })
|
|
}
|
|
},
|
|
{
|
|
key : "getFilesWithStatus",
|
|
value : function(a) {
|
|
return this.files
|
|
.filter(function(b) { return b.status === a })
|
|
.map(function(a) { return a })
|
|
}
|
|
},
|
|
{
|
|
key : "getQueuedFiles",
|
|
value : function() { return this.getFilesWithStatus(b.QUEUED) }
|
|
},
|
|
{
|
|
key : "getUploadingFiles",
|
|
value :
|
|
function() { return this.getFilesWithStatus(b.UPLOADING) }
|
|
},
|
|
{
|
|
key : "getAddedFiles",
|
|
value : function() { return this.getFilesWithStatus(b.ADDED) }
|
|
},
|
|
{
|
|
key : "getActiveFiles",
|
|
value : function() {
|
|
return this.files
|
|
.filter(function(a) {
|
|
return a.status === b.UPLOADING ||
|
|
a.status === b.QUEUED
|
|
})
|
|
.map(function(a) { return a })
|
|
}
|
|
},
|
|
{
|
|
key : "init",
|
|
value : function() {
|
|
var a = this;
|
|
if ("form" === this.element.tagName &&
|
|
this.element.setAttribute("enctype",
|
|
"multipart/form-data"),
|
|
this.element.classList.contains("dropzone") &&
|
|
!this.element.querySelector(".dz-message") &&
|
|
this.element.appendChild(b.createElement(
|
|
'<div class="dz-default dz-message"><span>' +
|
|
this.options.dictDefaultMessage +
|
|
"</span></div>")),
|
|
this.clickableElements.length) {
|
|
!function b() {
|
|
return a.hiddenFileInput &&
|
|
a.hiddenFileInput.parentNode.removeChild(
|
|
a.hiddenFileInput),
|
|
a.hiddenFileInput =
|
|
document.createElement("input"),
|
|
a.hiddenFileInput.setAttribute("type", "file"),
|
|
(null === a.options.maxFiles ||
|
|
a.options.maxFiles > 1) &&
|
|
a.hiddenFileInput.setAttribute("multiple",
|
|
"multiple"),
|
|
a.hiddenFileInput.className = "dz-hidden-input",
|
|
null !== a.options.acceptedFiles &&
|
|
a.hiddenFileInput.setAttribute(
|
|
"accept", a.options.acceptedFiles),
|
|
null !== a.options.capture &&
|
|
a.hiddenFileInput.setAttribute(
|
|
"capture", a.options.capture),
|
|
a.hiddenFileInput.style.visibility = "hidden",
|
|
a.hiddenFileInput.style.position = "absolute",
|
|
a.hiddenFileInput.style.top = "0",
|
|
a.hiddenFileInput.style.left = "0",
|
|
a.hiddenFileInput.style.height = "0",
|
|
a.hiddenFileInput.style.width = "0",
|
|
document
|
|
.querySelector(a.options.hiddenInputContainer)
|
|
.appendChild(a.hiddenFileInput),
|
|
a.hiddenFileInput.addEventListener(
|
|
"change", function() {
|
|
var c = a.hiddenFileInput.files;
|
|
if (c.length)
|
|
for (var d = c, e = 0, d = d;;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g = f;
|
|
a.addFile(g)
|
|
}
|
|
return a.emit("addedfiles", c), b()
|
|
})
|
|
}()
|
|
}
|
|
this.URL =
|
|
null !== window.URL ? window.URL : window.webkitURL;
|
|
for (var c = this.events, d = 0, c = c;;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
this.on(f, this.options[f])
|
|
}
|
|
this.on("uploadprogress",
|
|
function() { return a.updateTotalUploadProgress() }),
|
|
this.on(
|
|
"removedfile",
|
|
function() { return a.updateTotalUploadProgress() }),
|
|
this.on("canceled",
|
|
function(b) { return a.emit("complete", b) }),
|
|
this.on("complete", function(b) {
|
|
if (0 === a.getAddedFiles().length &&
|
|
0 === a.getUploadingFiles().length &&
|
|
0 === a.getQueuedFiles().length)
|
|
return setTimeout(
|
|
function() { return a.emit("queuecomplete") }, 0)
|
|
});
|
|
var g = function(a) {
|
|
return a.stopPropagation(), a.preventDefault
|
|
? a.preventDefault()
|
|
: a.returnValue = !1
|
|
};
|
|
return this.listeners = [ {
|
|
element : this.element,
|
|
events : {
|
|
dragstart : function(
|
|
b) { return a.emit("dragstart", b) },
|
|
dragenter : function(
|
|
b) { return g(b), a.emit("dragenter", b) },
|
|
dragover : function(b) {
|
|
var c = void 0;
|
|
try {
|
|
c = b.dataTransfer.effectAllowed
|
|
} catch (a) {
|
|
}
|
|
return b.dataTransfer.dropEffect =
|
|
"move" === c || "linkMove" === c
|
|
? "move"
|
|
: "copy",
|
|
g(b), a.emit("dragover", b)
|
|
},
|
|
dragleave : function(
|
|
b) { return a.emit("dragleave", b) },
|
|
drop : function(b) { return g(b), a.drop(b) },
|
|
dragend : function(
|
|
b) { return a.emit("dragend", b) }
|
|
}
|
|
} ],
|
|
this.clickableElements.forEach(function(c) {
|
|
return a.listeners.push({
|
|
element : c,
|
|
events : {
|
|
click : function(d) {
|
|
return (c !== a.element ||
|
|
d.target === a.element ||
|
|
b.elementInside(
|
|
d.target, a.element.querySelector(
|
|
".dz-message"))) &&
|
|
a.hiddenFileInput.click(),
|
|
!0
|
|
}
|
|
}
|
|
})
|
|
}),
|
|
this.enable(), this.options.init.call(this)
|
|
}
|
|
},
|
|
{
|
|
key : "destroy",
|
|
value : function() {
|
|
return this.disable(), this.removeAllFiles(!0),
|
|
(null != this.hiddenFileInput
|
|
? this.hiddenFileInput.parentNode
|
|
: void 0) &&
|
|
(this.hiddenFileInput.parentNode.removeChild(
|
|
this.hiddenFileInput),
|
|
this.hiddenFileInput = null),
|
|
delete this.element.dropzone,
|
|
b.instances.splice(b.instances.indexOf(this), 1)
|
|
}
|
|
},
|
|
{
|
|
key : "updateTotalUploadProgress",
|
|
value : function() {
|
|
var a = void 0, b = 0, c = 0;
|
|
if (this.getActiveFiles().length) {
|
|
for (var d = this.getActiveFiles(), e = 0, d = d;;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g = f;
|
|
b += g.upload.bytesSent, c += g.upload.total
|
|
}
|
|
a = 100 * b / c
|
|
} else
|
|
a = 100;
|
|
return this.emit("totaluploadprogress", a, c, b)
|
|
}
|
|
},
|
|
{
|
|
key : "_getParamName",
|
|
value : function(a) {
|
|
return "function" == typeof this.options.paramName
|
|
? this.options.paramName(a)
|
|
: this.options.paramName +
|
|
(this.options.uploadMultiple ? "[" + a + "]"
|
|
: "")
|
|
}
|
|
},
|
|
{
|
|
key : "_renameFile",
|
|
value : function(a) {
|
|
return "function" != typeof this.options.renameFile
|
|
? a.name
|
|
: this.options.renameFile(a)
|
|
}
|
|
},
|
|
{
|
|
key : "getFallbackForm",
|
|
value : function() {
|
|
var a = void 0, c = void 0;
|
|
if (a = this.getExistingFallback())
|
|
return a;
|
|
var d = '<div class="dz-fallback">';
|
|
this.options.dictFallbackText &&
|
|
(d += "<p>" + this.options.dictFallbackText + "</p>"),
|
|
d += '<input type="file" name="' +
|
|
this._getParamName(0) + '" ' +
|
|
(this.options.uploadMultiple ? 'multiple="multiple"'
|
|
: void 0) +
|
|
' /><input type="submit" value="Upload!"></div>';
|
|
var e = b.createElement(d);
|
|
return "FORM" !== this.element.tagName
|
|
? (c = b.createElement(
|
|
'<form action="' + this.options.url +
|
|
'" enctype="multipart/form-data" method="' +
|
|
this.options.method + '"></form>'),
|
|
c.appendChild(e))
|
|
: (this.element.setAttribute(
|
|
"enctype", "multipart/form-data"),
|
|
this.element.setAttribute(
|
|
"method", this.options.method)),
|
|
null != c ? c : e
|
|
}
|
|
},
|
|
{
|
|
key : "getExistingFallback",
|
|
value : function() {
|
|
for (var a = [ "div", "form" ], b = 0; b < a.length; b++) {
|
|
var c, d = a[b];
|
|
if (c = function(a) {
|
|
for (var b = a, c = 0, b = b;;) {
|
|
var d;
|
|
if (c >= b.length)
|
|
break;
|
|
d = b[c++];
|
|
var e = d;
|
|
if (/(^| )fallback($| )/.test(e.className))
|
|
return e
|
|
}
|
|
}(this.element.getElementsByTagName(d)))
|
|
return c
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "setupEventListeners",
|
|
value : function() {
|
|
return this.listeners.map(function(a) {
|
|
return function() {
|
|
var b = [];
|
|
for (var c in a.events) {
|
|
var d = a.events[c];
|
|
b.push(a.element.addEventListener(c, d, !1))
|
|
}
|
|
return b
|
|
}()
|
|
})
|
|
}
|
|
},
|
|
{
|
|
key : "removeEventListeners",
|
|
value : function() {
|
|
return this.listeners.map(function(a) {
|
|
return function() {
|
|
var b = [];
|
|
for (var c in a.events) {
|
|
var d = a.events[c];
|
|
b.push(a.element.removeEventListener(c, d, !1))
|
|
}
|
|
return b
|
|
}()
|
|
})
|
|
}
|
|
},
|
|
{
|
|
key : "disable",
|
|
value : function() {
|
|
var a = this;
|
|
return this.clickableElements.forEach(function(
|
|
a) { return a.classList.remove("dz-clickable") }),
|
|
this.removeEventListeners(),
|
|
this.files.map(function(
|
|
b) { return a.cancelUpload(b) })
|
|
}
|
|
},
|
|
{
|
|
key : "enable",
|
|
value : function() {
|
|
return this.clickableElements.forEach(function(
|
|
a) { return a.classList.add("dz-clickable") }),
|
|
this.setupEventListeners()
|
|
}
|
|
},
|
|
{
|
|
key : "filesize",
|
|
value : function(a) {
|
|
var b = 0, c = "b";
|
|
if (a > 0) {
|
|
for (var d = [ "tb", "gb", "mb", "kb", "b" ], e = 0;
|
|
e < d.length; e++) {
|
|
var f = d[e];
|
|
if (a >=
|
|
Math.pow(this.options.filesizeBase, 4 - e) / 10) {
|
|
b = a / Math.pow(this.options.filesizeBase, 4 - e),
|
|
c = f;
|
|
break
|
|
}
|
|
}
|
|
b = Math.round(10 * b) / 10
|
|
}
|
|
return "<strong>" + b + "</strong> " +
|
|
this.options.dictFileSizeUnits[c]
|
|
}
|
|
},
|
|
{
|
|
key : "_updateMaxFilesReachedClass",
|
|
value : function() {
|
|
return null != this.options.maxFiles &&
|
|
this.getAcceptedFiles().length >=
|
|
this.options.maxFiles
|
|
? (this.getAcceptedFiles().length ===
|
|
this.options.maxFiles &&
|
|
this.emit("maxfilesreached", this.files),
|
|
this.element.classList.add(
|
|
"dz-max-files-reached"))
|
|
: this.element.classList.remove(
|
|
"dz-max-files-reached")
|
|
}
|
|
},
|
|
{
|
|
key : "drop",
|
|
value : function(a) {
|
|
if (a.dataTransfer) {
|
|
this.emit("drop", a);
|
|
var b = a.dataTransfer.files;
|
|
if (this.emit("addedfiles", b), b.length) {
|
|
var c = a.dataTransfer.items;
|
|
c && c.length && null != c[0].webkitGetAsEntry
|
|
? this._addFilesFromItems(c)
|
|
: this.handleFiles(b)
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "paste",
|
|
value : function(a) {
|
|
if (null != __guard__(null != a ? a.clipboardData : void 0,
|
|
function(a) { return a.items })) {
|
|
this.emit("paste", a);
|
|
var b = a.clipboardData.items;
|
|
return b.length ? this._addFilesFromItems(b) : void 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "handleFiles",
|
|
value : function(a) {
|
|
var b = this;
|
|
return a.map(function(a) { return b.addFile(a) })
|
|
}
|
|
},
|
|
{
|
|
key : "_addFilesFromItems",
|
|
value : function(a) {
|
|
var b = this;
|
|
return function() {
|
|
for (var c = [], d = a, e = 0, d = d;;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g, h = f;
|
|
null != h.webkitGetAsEntry && (g = h.webkitGetAsEntry())
|
|
? g.isFile ? c.push(b.addFile(h.getAsFile()))
|
|
: g.isDirectory
|
|
? c.push(b._addFilesFromDirectory(g, g.name))
|
|
: c.push(void 0)
|
|
: null != h.getAsFile &&
|
|
(null == h.kind || "file" === h.kind)
|
|
? c.push(b.addFile(h.getAsFile()))
|
|
: c.push(void 0)
|
|
}
|
|
return c
|
|
}()
|
|
}
|
|
},
|
|
{
|
|
key : "_addFilesFromDirectory",
|
|
value : function(a, b) {
|
|
var c = this, d = a.createReader(), e = function(a) {
|
|
return __guardMethod__(console, "log",
|
|
function(b) { return b.log(a) })
|
|
};
|
|
return function a() {
|
|
return d.readEntries(function(d) {
|
|
if (d.length > 0) {
|
|
for (var e = d, f = 0, e = e;;) {
|
|
var g;
|
|
if (f >= e.length)
|
|
break;
|
|
g = e[f++];
|
|
var h = g;
|
|
h.isFile ? h.file(function(a) {
|
|
if (!c.options.ignoreHiddenFiles ||
|
|
"." !== a.name.substring(0, 1))
|
|
return a.fullPath = b + "/" + a.name,
|
|
c.addFile(a)
|
|
})
|
|
: h.isDirectory && c._addFilesFromDirectory(
|
|
h, b + "/" + h.name)
|
|
}
|
|
a()
|
|
}
|
|
return null
|
|
}, e)
|
|
}()
|
|
}
|
|
},
|
|
{
|
|
key : "accept",
|
|
value : function(a, c) {
|
|
return a.size > 1024 * this.options.maxFilesize * 1024
|
|
? c(this.options.dictFileTooBig
|
|
.replace(
|
|
"{{filesize}}",
|
|
Math.round(a.size / 1024 / 10.24) /
|
|
100)
|
|
.replace("{{maxFilesize}}",
|
|
this.options.maxFilesize))
|
|
: b.isValidFile(a, this.options.acceptedFiles)
|
|
? null != this.options.maxFiles &&
|
|
this.getAcceptedFiles().length >=
|
|
this.options.maxFiles
|
|
? (c(this.options.dictMaxFilesExceeded
|
|
.replace("{{maxFiles}}",
|
|
this.options.maxFiles)),
|
|
this.emit("maxfilesexceeded", a))
|
|
: this.options.accept.call(this, a, c)
|
|
: c(this.options.dictInvalidFileType)
|
|
}
|
|
},
|
|
{
|
|
key : "addFile",
|
|
value : function(a) {
|
|
var c = this;
|
|
return a.upload = {
|
|
uuid : b.uuidv4(),
|
|
progress : 0,
|
|
total : a.size,
|
|
bytesSent : 0,
|
|
filename : this._renameFile(a),
|
|
chunked : this.options.chunking &&
|
|
(this.options.forceChunking ||
|
|
a.size > this.options.chunkSize),
|
|
totalChunkCount :
|
|
Math.ceil(a.size / this.options.chunkSize)
|
|
},
|
|
this.files.push(a), a.status = b.ADDED,
|
|
this.emit("addedfile", a), this._enqueueThumbnail(a),
|
|
this.accept(a, function(b) {
|
|
return b ? (a.accepted = !1,
|
|
c._errorProcessing([ a ], b))
|
|
: (a.accepted = !0, c.options.autoQueue &&
|
|
c.enqueueFile(a)),
|
|
c._updateMaxFilesReachedClass()
|
|
})
|
|
}
|
|
},
|
|
{
|
|
key : "enqueueFiles",
|
|
value : function(a) {
|
|
for (var b = a, c = 0, b = b;;) {
|
|
var d;
|
|
if (c >= b.length)
|
|
break;
|
|
d = b[c++];
|
|
var e = d;
|
|
this.enqueueFile(e)
|
|
}
|
|
return null
|
|
}
|
|
},
|
|
{
|
|
key : "enqueueFile",
|
|
value : function(a) {
|
|
var c = this;
|
|
if (a.status !== b.ADDED || !0 !== a.accepted)
|
|
throw new Error(
|
|
"This file can't be queued because it has already been processed or was rejected.");
|
|
if (a.status = b.QUEUED, this.options.autoProcessQueue)
|
|
return setTimeout(function() { return c.processQueue() },
|
|
0)
|
|
}
|
|
},
|
|
{
|
|
key : "_enqueueThumbnail",
|
|
value : function(a) {
|
|
var b = this;
|
|
if (this.options.createImageThumbnails &&
|
|
a.type.match(/image.*/) &&
|
|
a.size <=
|
|
1024 * this.options.maxThumbnailFilesize * 1024)
|
|
return this._thumbnailQueue.push(a),
|
|
setTimeout(function() {
|
|
return b._processThumbnailQueue()
|
|
}, 0)
|
|
}
|
|
},
|
|
{
|
|
key : "_processThumbnailQueue",
|
|
value : function() {
|
|
var a = this;
|
|
if (!this._processingThumbnail &&
|
|
0 !== this._thumbnailQueue.length) {
|
|
this._processingThumbnail = !0;
|
|
var b = this._thumbnailQueue.shift();
|
|
return this.createThumbnail(
|
|
b, this.options.thumbnailWidth,
|
|
this.options.thumbnailHeight,
|
|
this.options.thumbnailMethod, !0, function(c) {
|
|
return a.emit("thumbnail", b, c),
|
|
a._processingThumbnail = !1,
|
|
a._processThumbnailQueue()
|
|
})
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "removeFile",
|
|
value : function(a) {
|
|
if (a.status === b.UPLOADING && this.cancelUpload(a),
|
|
this.files = without(this.files, a),
|
|
this.emit("removedfile", a), 0 === this.files.length)
|
|
return this.emit("reset")
|
|
}
|
|
},
|
|
{
|
|
key : "removeAllFiles",
|
|
value : function(a) {
|
|
null == a && (a = !1);
|
|
for (var c = this.files.slice(), d = 0, c = c;;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
(f.status !== b.UPLOADING || a) && this.removeFile(f)
|
|
}
|
|
return null
|
|
}
|
|
},
|
|
{
|
|
key : "resizeImage",
|
|
value : function(a, c, d, e, f) {
|
|
var g = this;
|
|
return this.createThumbnail(a, c, d, e, !1, function(c, d) {
|
|
if (null === d)
|
|
return f(a);
|
|
var e = g.options.resizeMimeType;
|
|
null == e && (e = a.type);
|
|
var h = d.toDataURL(e, g.options.resizeQuality);
|
|
return "image/jpeg" !== e && "image/jpg" !== e ||
|
|
(h = ExifRestore.restore(a.dataURL, h)),
|
|
f(b.dataURItoBlob(h))
|
|
})
|
|
}
|
|
},
|
|
{
|
|
key : "createThumbnail",
|
|
value : function(a, b, c, d, e, f) {
|
|
var g = this, h = new FileReader;
|
|
return h.onload = function() {
|
|
return a.dataURL = h.result,
|
|
"image/svg+xml" === a.type ? void (null != f &&
|
|
f(h.result))
|
|
: g.createThumbnailFromUrl(
|
|
a, b, c, d, e, f)
|
|
}, h.readAsDataURL(a)
|
|
}
|
|
},
|
|
{
|
|
key : "createThumbnailFromUrl",
|
|
value : function(a, b, c, d, e, f, g) {
|
|
var h = this, i = document.createElement("img");
|
|
return g && (i.crossOrigin = g), i.onload = function() {
|
|
var g = function(a) { return a(1) };
|
|
return "undefined" != typeof EXIF && null !== EXIF && e &&
|
|
(g =
|
|
function(a) {
|
|
return EXIF.getData(i, function() {
|
|
return a(
|
|
EXIF.getTag(this, "Orientation"))
|
|
})
|
|
}),
|
|
g(function(e) {
|
|
a.width = i.width, a.height = i.height;
|
|
var g = h.options.resize.call(h, a, b, c, d),
|
|
j = document.createElement("canvas"),
|
|
k = j.getContext("2d");
|
|
switch (j.width = g.trgWidth,
|
|
j.height = g.trgHeight,
|
|
e > 4 && (j.width = g.trgHeight,
|
|
j.height = g.trgWidth),
|
|
e) {
|
|
case 2:
|
|
k.translate(j.width, 0), k.scale(-1, 1);
|
|
break;
|
|
case 3:
|
|
k.translate(j.width, j.height),
|
|
k.rotate(Math.PI);
|
|
break;
|
|
case 4:
|
|
k.translate(0, j.height), k.scale(1, -1);
|
|
break;
|
|
case 5:
|
|
k.rotate(.5 * Math.PI), k.scale(1, -1);
|
|
break;
|
|
case 6:
|
|
k.rotate(.5 * Math.PI),
|
|
k.translate(0, -j.height);
|
|
break;
|
|
case 7:
|
|
k.rotate(.5 * Math.PI),
|
|
k.translate(j.width, -j.height),
|
|
k.scale(-1, 1);
|
|
break;
|
|
case 8:
|
|
k.rotate(-.5 * Math.PI),
|
|
k.translate(-j.width, 0)
|
|
}
|
|
drawImageIOSFix(k, i, null != g.srcX ? g.srcX : 0,
|
|
null != g.srcY ? g.srcY : 0,
|
|
g.srcWidth, g.srcHeight,
|
|
null != g.trgX ? g.trgX : 0,
|
|
null != g.trgY ? g.trgY : 0,
|
|
g.trgWidth, g.trgHeight);
|
|
var l = j.toDataURL("image/png");
|
|
if (null != f)
|
|
return f(l, j)
|
|
})
|
|
}, null != f && (i.onerror = f), i.src = a.dataURL
|
|
}
|
|
},
|
|
{
|
|
key : "processQueue",
|
|
value : function() {
|
|
var a = this.options.parallelUploads,
|
|
b = this.getUploadingFiles().length, c = b;
|
|
if (!(b >= a)) {
|
|
var d = this.getQueuedFiles();
|
|
if (d.length > 0) {
|
|
if (this.options.uploadMultiple)
|
|
return this.processFiles(d.slice(0, a - b));
|
|
for (; c < a;) {
|
|
if (!d.length)
|
|
return;
|
|
this.processFile(d.shift()), c++
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "processFile",
|
|
value : function(a) { return this.processFiles([ a ]) }
|
|
},
|
|
{
|
|
key : "processFiles",
|
|
value : function(a) {
|
|
for (var c = a, d = 0, c = c;;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
f.processing = !0, f.status = b.UPLOADING,
|
|
this.emit("processing", f)
|
|
}
|
|
return this.options.uploadMultiple &&
|
|
this.emit("processingmultiple", a),
|
|
this.uploadFiles(a)
|
|
}
|
|
},
|
|
{
|
|
key : "_getFilesWithXhr",
|
|
value : function(a) {
|
|
return this.files.filter(function(b) { return b.xhr === a })
|
|
.map(function(a) { return a })
|
|
}
|
|
},
|
|
{
|
|
key : "cancelUpload",
|
|
value : function(a) {
|
|
if (a.status === b.UPLOADING) {
|
|
for (var c = this._getFilesWithXhr(a.xhr), d = c, e = 0,
|
|
d = d;
|
|
;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
f.status = b.CANCELED
|
|
}
|
|
void 0 !== a.xhr && a.xhr.abort();
|
|
for (var g = c, h = 0, g = g;;) {
|
|
var i;
|
|
if (h >= g.length)
|
|
break;
|
|
i = g[h++];
|
|
var j = i;
|
|
this.emit("canceled", j)
|
|
}
|
|
this.options.uploadMultiple &&
|
|
this.emit("canceledmultiple", c)
|
|
} else
|
|
a.status !== b.ADDED && a.status !== b.QUEUED ||
|
|
(a.status = b.CANCELED, this.emit("canceled", a),
|
|
this.options.uploadMultiple &&
|
|
this.emit("canceledmultiple", [ a ]));
|
|
if (this.options.autoProcessQueue)
|
|
return this.processQueue()
|
|
}
|
|
},
|
|
{
|
|
key : "resolveOption",
|
|
value : function(a) {
|
|
if ("function" == typeof a) {
|
|
for (var b = arguments.length,
|
|
c = Array(b > 1 ? b - 1 : 0), d = 1;
|
|
d < b; d++)
|
|
c[d - 1] = arguments[d];
|
|
return a.apply(this, c)
|
|
}
|
|
return a
|
|
}
|
|
},
|
|
{
|
|
key : "uploadFile",
|
|
value : function(a) { return this.uploadFiles([ a ]) }
|
|
},
|
|
{
|
|
key : "uploadFiles",
|
|
value : function(a) {
|
|
var c = this;
|
|
this._transformFiles(a, function(d) {
|
|
if (a[0].upload.chunked) {
|
|
var e = a[0], f = d[0], g = 0;
|
|
e.upload.chunks = [];
|
|
var h = function() {
|
|
for (var d = 0; void 0 !== e.upload.chunks[d];)
|
|
d++;
|
|
if (!(d >= e.upload.totalChunkCount)) {
|
|
g++;
|
|
var h = d * c.options.chunkSize,
|
|
i = Math.min(h + c.options.chunkSize, e.size),
|
|
j = {
|
|
name : c._getParamName(0),
|
|
data : f.webkitSlice ? f.webkitSlice(h, i)
|
|
: f.slice(h, i),
|
|
filename : e.upload.filename,
|
|
chunkIndex : d
|
|
};
|
|
e.upload.chunks[d] = {
|
|
file : e,
|
|
index : d,
|
|
dataBlock : j,
|
|
status : b.UPLOADING,
|
|
progress : 0,
|
|
retries : 0
|
|
},
|
|
c._uploadData(a, [ j ])
|
|
}
|
|
};
|
|
if (e.upload.finishedChunkUpload = function(d) {
|
|
var f = !0;
|
|
d.status = b.SUCCESS, d.dataBlock = null;
|
|
for (var g = 0; g < e.upload.totalChunkCount;
|
|
g++) {
|
|
if (void 0 === e.upload.chunks[g])
|
|
return h();
|
|
e.upload.chunks[g].status !== b.SUCCESS &&
|
|
(f = !1)
|
|
}
|
|
f &&
|
|
c.options.chunksUploaded(
|
|
e, function() { c._finished(a, "", null) })
|
|
}, c.options.parallelChunkUploads)
|
|
for (var i = 0; i < e.upload.totalChunkCount; i++)
|
|
h();
|
|
else
|
|
h()
|
|
} else {
|
|
for (var j = [], k = 0; k < a.length; k++)
|
|
j[k] = {
|
|
name : c._getParamName(k),
|
|
data : d[k],
|
|
filename : a[k].upload.filename
|
|
};
|
|
c._uploadData(a, j)
|
|
}
|
|
})
|
|
}
|
|
},
|
|
{
|
|
key : "_getChunk",
|
|
value : function(a, b) {
|
|
for (var c = 0; c < a.upload.totalChunkCount; c++)
|
|
if (void 0 !== a.upload.chunks[c] &&
|
|
a.upload.chunks[c].xhr === b)
|
|
return a.upload.chunks[c]
|
|
}
|
|
},
|
|
{
|
|
key : "_uploadData",
|
|
value : function(a, c) {
|
|
for (var d = this, e = new XMLHttpRequest, f = a, g = 0,
|
|
f = f;
|
|
;) {
|
|
var h;
|
|
if (g >= f.length)
|
|
break;
|
|
h = f[g++];
|
|
h.xhr = e
|
|
}
|
|
a[0].upload.chunked &&
|
|
(a[0].upload.chunks[c[0].chunkIndex].xhr = e);
|
|
var i = this.resolveOption(this.options.method, a),
|
|
j = this.resolveOption(this.options.url, a);
|
|
e.open(i, j, !0),
|
|
e.timeout = this.resolveOption(this.options.timeout, a),
|
|
e.withCredentials = !!this.options.withCredentials,
|
|
e.onload = function(b) { d._finishedUploading(a, e, b) },
|
|
e.onerror = function() { d._handleUploadError(a, e) },
|
|
(null != e.upload ? e.upload : e).onprogress = function(
|
|
b) { return d._updateFilesUploadProgress(a, e, b) };
|
|
var k = {
|
|
Accept : "application/json",
|
|
"Cache-Control" : "no-cache",
|
|
"X-Requested-With" : "XMLHttpRequest"
|
|
};
|
|
this.options.headers && b.extend(k, this.options.headers);
|
|
for (var l in k) {
|
|
var m = k[l];
|
|
m && e.setRequestHeader(l, m)
|
|
}
|
|
var n = new FormData;
|
|
if (this.options.params) {
|
|
var o = this.options.params;
|
|
"function" == typeof o &&
|
|
(o = o.call(this, a, e,
|
|
a[0].upload.chunked
|
|
? this._getChunk(a[0], e)
|
|
: null));
|
|
for (var p in o) {
|
|
var q = o[p];
|
|
n.append(p, q)
|
|
}
|
|
}
|
|
for (var r = a, s = 0, r = r;;) {
|
|
var t;
|
|
if (s >= r.length)
|
|
break;
|
|
t = r[s++];
|
|
var u = t;
|
|
this.emit("sending", u, e, n)
|
|
}
|
|
this.options.uploadMultiple &&
|
|
this.emit("sendingmultiple", a, e, n),
|
|
this._addFormElementData(n);
|
|
for (var v = 0; v < c.length; v++) {
|
|
var w = c[v];
|
|
n.append(w.name, w.data, w.filename)
|
|
}
|
|
this.submitRequest(e, n, a)
|
|
}
|
|
},
|
|
{
|
|
key : "_transformFiles",
|
|
value : function(a, b) {
|
|
for (var c = this, d = [], e = 0, f = 0; f < a.length; f++)
|
|
!function(f) {
|
|
c.options.transformFile.call(
|
|
c, a[f],
|
|
function(c) { d[f] = c, ++e === a.length && b(d) })
|
|
}(f)
|
|
}
|
|
},
|
|
{
|
|
key : "_addFormElementData",
|
|
value : function(a) {
|
|
if ("FORM" === this.element.tagName)
|
|
for (var b = this.element.querySelectorAll(
|
|
"input, textarea, select, button"),
|
|
c = 0, b = b;
|
|
;) {
|
|
var d;
|
|
if (c >= b.length)
|
|
break;
|
|
d = b[c++];
|
|
var e = d, f = e.getAttribute("name"),
|
|
g = e.getAttribute("type");
|
|
if (g && (g = g.toLowerCase()),
|
|
void 0 !== f && null !== f)
|
|
if ("SELECT" === e.tagName &&
|
|
e.hasAttribute("multiple"))
|
|
for (var h = e.options, i = 0, h = h;;) {
|
|
var j;
|
|
if (i >= h.length)
|
|
break;
|
|
j = h[i++];
|
|
var k = j;
|
|
k.selected && a.append(f, k.value)
|
|
}
|
|
else
|
|
(!g || "checkbox" !== g && "radio" !== g ||
|
|
e.checked) &&
|
|
a.append(f, e.value)
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "_updateFilesUploadProgress",
|
|
value : function(a, b, c) {
|
|
var d = void 0;
|
|
if (void 0 !== c) {
|
|
if (d = 100 * c.loaded / c.total, a[0].upload.chunked) {
|
|
var e = a[0], f = this._getChunk(e, b);
|
|
f.progress = d, f.total = c.total,
|
|
f.bytesSent = c.loaded;
|
|
e.upload.progress = 0, e.upload.total = 0,
|
|
e.upload.bytesSent = 0;
|
|
for (var g = 0; g < e.upload.totalChunkCount; g++)
|
|
void 0 !== e.upload.chunks[g] &&
|
|
void 0 !== e.upload.chunks[g].progress &&
|
|
(e.upload.progress += e.upload.chunks[g].progress,
|
|
e.upload.total += e.upload.chunks[g].total,
|
|
e.upload.bytesSent +=
|
|
e.upload.chunks[g].bytesSent);
|
|
e.upload.progress =
|
|
e.upload.progress / e.upload.totalChunkCount
|
|
} else
|
|
for (var h = a, i = 0, h = h;;) {
|
|
var j;
|
|
if (i >= h.length)
|
|
break;
|
|
j = h[i++];
|
|
var k = j;
|
|
k.upload.progress = d, k.upload.total = c.total,
|
|
k.upload.bytesSent = c.loaded
|
|
}
|
|
for (var l = a, m = 0, l = l;;) {
|
|
var n;
|
|
if (m >= l.length)
|
|
break;
|
|
n = l[m++];
|
|
var o = n;
|
|
this.emit("uploadprogress", o, o.upload.progress,
|
|
o.upload.bytesSent)
|
|
}
|
|
} else {
|
|
var p = !0;
|
|
d = 100;
|
|
for (var q = a, r = 0, q = q;;) {
|
|
var s;
|
|
if (r >= q.length)
|
|
break;
|
|
s = q[r++];
|
|
var t = s;
|
|
100 === t.upload.progress &&
|
|
t.upload.bytesSent === t.upload.total ||
|
|
(p = !1),
|
|
t.upload.progress = d,
|
|
t.upload.bytesSent = t.upload.total
|
|
}
|
|
if (p)
|
|
return;
|
|
for (var u = a, v = 0, u = u;;) {
|
|
var w;
|
|
if (v >= u.length)
|
|
break;
|
|
w = u[v++];
|
|
var x = w;
|
|
this.emit("uploadprogress", x, d, x.upload.bytesSent)
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "_finishedUploading",
|
|
value : function(a, c, d) {
|
|
var e = void 0;
|
|
if (a[0].status !== b.CANCELED && 4 === c.readyState) {
|
|
if ("arraybuffer" !== c.responseType &&
|
|
"blob" !== c.responseType &&
|
|
(e = c.responseText,
|
|
c.getResponseHeader("content-type") &&
|
|
~c.getResponseHeader("content-type")
|
|
.indexOf("application/json")))
|
|
try {
|
|
e = JSON.parse(e)
|
|
} catch (a) {
|
|
d = a, e = "Invalid JSON response from server."
|
|
}
|
|
this._updateFilesUploadProgress(a),
|
|
200 <= c.status && c.status < 300
|
|
? a[0].upload.chunked
|
|
? a[0].upload.finishedChunkUpload(
|
|
this._getChunk(a[0], c))
|
|
: this._finished(a, e, d)
|
|
: this._handleUploadError(a, c, e)
|
|
}
|
|
}
|
|
},
|
|
{
|
|
key : "_handleUploadError",
|
|
value : function(a, c, d) {
|
|
if (a[0].status !== b.CANCELED) {
|
|
if (a[0].upload.chunked && this.options.retryChunks) {
|
|
var e = this._getChunk(a[0], c);
|
|
if (e.retries++ < this.options.retryChunksLimit)
|
|
return void this._uploadData(a, [ e.dataBlock ]);
|
|
console.warn("Retried this chunk too often. Giving up.")
|
|
}
|
|
for (var f = a, g = 0, f = f;;) {
|
|
if (g >= f.length)
|
|
break;
|
|
f[g++];
|
|
this._errorProcessing(
|
|
a,
|
|
d || this.options.dictResponseError.replace(
|
|
"{{statusCode}}", c.status),
|
|
c)
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{key : "submitRequest", value : function(a, b, c) { a.send(b) }},
|
|
{
|
|
key : "_finished",
|
|
value : function(a, c, d) {
|
|
for (var e = a, f = 0, e = e;;) {
|
|
var g;
|
|
if (f >= e.length)
|
|
break;
|
|
g = e[f++];
|
|
var h = g;
|
|
h.status = b.SUCCESS, this.emit("success", h, c, d),
|
|
this.emit("complete", h)
|
|
}
|
|
if (this.options.uploadMultiple &&
|
|
(this.emit("successmultiple", a, c, d),
|
|
this.emit("completemultiple", a)),
|
|
this.options.autoProcessQueue)
|
|
return this.processQueue()
|
|
}
|
|
},
|
|
{
|
|
key : "_errorProcessing",
|
|
value : function(a, c, d) {
|
|
for (var e = a, f = 0, e = e;;) {
|
|
var g;
|
|
if (f >= e.length)
|
|
break;
|
|
g = e[f++];
|
|
var h = g;
|
|
h.status = b.ERROR, this.emit("error", h, c, d),
|
|
this.emit("complete", h)
|
|
}
|
|
if (this.options.uploadMultiple &&
|
|
(this.emit("errormultiple", a, c, d),
|
|
this.emit("completemultiple", a)),
|
|
this.options.autoProcessQueue)
|
|
return this.processQueue()
|
|
}
|
|
}
|
|
],
|
|
[ {
|
|
key : "uuidv4",
|
|
value : function() {
|
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
|
|
/[xy]/g, function(a) {
|
|
var b = 16 * Math.random() | 0;
|
|
return ("x" === a ? b : 3 & b | 8).toString(16)
|
|
})
|
|
}
|
|
} ]),
|
|
b
|
|
}(Emitter);
|
|
Dropzone.initClass(),
|
|
Dropzone.version = "5.2.0", Dropzone.options = {},
|
|
Dropzone.optionsForElement =
|
|
function(a) {
|
|
return a.getAttribute("id")
|
|
? Dropzone.options[camelize(a.getAttribute("id"))]
|
|
: void 0
|
|
},
|
|
Dropzone.instances = [],
|
|
Dropzone.forElement =
|
|
function(a) {
|
|
if ("string" == typeof a && (a = document.querySelector(a)),
|
|
null == (null != a ? a.dropzone : void 0))
|
|
throw new Error(
|
|
"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
|
|
return a.dropzone
|
|
},
|
|
Dropzone.autoDiscover = !0,
|
|
Dropzone.discover =
|
|
function() {
|
|
var a = void 0;
|
|
if (document.querySelectorAll)
|
|
a = document.querySelectorAll(".dropzone");
|
|
else {
|
|
a = [];
|
|
var b = function(b) {
|
|
return function() {
|
|
for (var c = [], d = b, e = 0, d = d;;) {
|
|
var f;
|
|
if (e >= d.length)
|
|
break;
|
|
f = d[e++];
|
|
var g = f;
|
|
/(^| )dropzone($| )/.test(g.className) ? c.push(a.push(g))
|
|
: c.push(void 0)
|
|
}
|
|
return c
|
|
}()
|
|
};
|
|
b(document.getElementsByTagName("div")),
|
|
b(document.getElementsByTagName("form"))
|
|
}
|
|
return function() {
|
|
for (var b = [], c = a, d = 0, c = c;;) {
|
|
var e;
|
|
if (d >= c.length)
|
|
break;
|
|
e = c[d++];
|
|
var f = e;
|
|
!1 !== Dropzone.optionsForElement(f) ? b.push(new Dropzone(f))
|
|
: b.push(void 0)
|
|
}
|
|
return b
|
|
}()
|
|
},
|
|
Dropzone.blacklistedBrowsers =
|
|
[ /opera.*(Macintosh|Windows Phone).*version\/12/i ],
|
|
Dropzone.isBrowserSupported = function() {
|
|
var a = !0;
|
|
if (window.File && window.FileReader && window.FileList && window.Blob &&
|
|
window.FormData && document.querySelector)
|
|
if ("classList" in document.createElement("a"))
|
|
for (var b = Dropzone.blacklistedBrowsers, c = 0, b = b;;) {
|
|
var d;
|
|
if (c >= b.length)
|
|
break;
|
|
d = b[c++];
|
|
var e = d;
|
|
e.test(navigator.userAgent) && (a = !1)
|
|
}
|
|
else
|
|
a = !1;
|
|
else
|
|
a = !1;
|
|
return a
|
|
}, Dropzone.dataURItoBlob = function(a) {
|
|
for (var b = atob(a.split(",")[1]),
|
|
c = a.split(",")[0].split(":")[1].split(";")[0],
|
|
d = new ArrayBuffer(b.length), e = new Uint8Array(d), f = 0,
|
|
g = b.length, h = 0 <= g;
|
|
h ? f <= g : f >= g; h ? f++ : f--)
|
|
e[f] = b.charCodeAt(f);
|
|
return new Blob([ d ], {type : c})
|
|
};
|
|
var without = function(a, b) {
|
|
return a.filter(function(a) { return a !== b }).map(function(a) { return a })
|
|
}, camelize = function(a) {
|
|
return a.replace(/[\-_](\w)/g,
|
|
function(a) { return a.charAt(1).toUpperCase() })
|
|
};
|
|
Dropzone.createElement =
|
|
function(a) {
|
|
var b = document.createElement("div");
|
|
return b.innerHTML = a, b.childNodes[0]
|
|
},
|
|
Dropzone.elementInside =
|
|
function(a, b) {
|
|
if (a === b)
|
|
return !0;
|
|
for (; a = a.parentNode;)
|
|
if (a === b)
|
|
return !0;
|
|
return !1
|
|
},
|
|
Dropzone.getElement =
|
|
function(a, b) {
|
|
var c = void 0;
|
|
if ("string" == typeof a ? c = document.querySelector(a)
|
|
: null != a.nodeType && (c = a),
|
|
null == c)
|
|
throw new Error(
|
|
"Invalid `" + b +
|
|
"` option provided. Please provide a CSS selector or a plain HTML element.");
|
|
return c
|
|
},
|
|
Dropzone.getElements =
|
|
function(a, b) {
|
|
var c = void 0, d = void 0;
|
|
if (a instanceof Array) {
|
|
d = [];
|
|
try {
|
|
for (var e = a, f = 0, e = e; !(f >= e.length);)
|
|
c = e[f++], d.push(this.getElement(c, b))
|
|
} catch (a) {
|
|
d = null
|
|
}
|
|
} else if ("string" == typeof a) {
|
|
d = [];
|
|
for (var g = document.querySelectorAll(a), h = 0, g = g;
|
|
!(h >= g.length);)
|
|
c = g[h++], d.push(c)
|
|
} else
|
|
null != a.nodeType && (d = [ a ]);
|
|
if (null == d || !d.length)
|
|
throw new Error(
|
|
"Invalid `" + b +
|
|
"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");
|
|
return d
|
|
},
|
|
Dropzone.confirm = function(
|
|
a, b, c) { return window.confirm(a) ? b()
|
|
: null != c ? c()
|
|
: void 0 },
|
|
Dropzone.isValidFile =
|
|
function(a, b) {
|
|
if (!b)
|
|
return !0;
|
|
b = b.split(",");
|
|
for (var c = a.type, d = c.replace(/\/.*$/, ""), e = b, f = 0, e = e;;) {
|
|
var g;
|
|
if (f >= e.length)
|
|
break;
|
|
g = e[f++];
|
|
var h = g;
|
|
if (h = h.trim(), "." === h.charAt(0)) {
|
|
if (-1 !== a.name.toLowerCase().indexOf(h.toLowerCase(),
|
|
a.name.length - h.length))
|
|
return !0
|
|
} else if (/\/\*$/.test(h)) {
|
|
if (d === h.replace(/\/.*$/, ""))
|
|
return !0
|
|
} else if (c === h)
|
|
return !0
|
|
}
|
|
return !1
|
|
},
|
|
"undefined" != typeof jQuery && null !== jQuery &&
|
|
(jQuery.fn.dropzone =
|
|
function(a) {
|
|
return this.each(function() { return new Dropzone(this, a) })
|
|
}),
|
|
"undefined" != typeof module &&null !== module ? module.exports = Dropzone
|
|
: window.Dropzone = Dropzone,
|
|
Dropzone.ADDED = "added", Dropzone.QUEUED = "queued",
|
|
Dropzone.ACCEPTED = Dropzone.QUEUED, Dropzone.UPLOADING = "uploading",
|
|
Dropzone.PROCESSING = Dropzone.UPLOADING, Dropzone.CANCELED = "canceled",
|
|
Dropzone.ERROR = "error", Dropzone.SUCCESS = "success";
|
|
var detectVerticalSquash = function(a) {
|
|
var b = (a.naturalWidth, a.naturalHeight),
|
|
c = document.createElement("canvas");
|
|
c.width = 1, c.height = b;
|
|
var d = c.getContext("2d");
|
|
d.drawImage(a, 0, 0);
|
|
for (var e = d.getImageData(1, 0, 1, b), f = e.data, g = 0, h = b, i = b;
|
|
i > g;) {
|
|
0 === f[4 * (i - 1) + 3] ? h = i : g = i, i = h + g >> 1
|
|
}
|
|
var j = i / b;
|
|
return 0 === j ? 1 : j
|
|
}, drawImageIOSFix = function(a, b, c, d, e, f, g, h, i, j) {
|
|
var k = detectVerticalSquash(b);
|
|
return a.drawImage(b, c, d, e, f, g, h, i, j / k)
|
|
}, ExifRestore = function() {
|
|
function a() { _classCallCheck(this, a) }
|
|
return _createClass(
|
|
a, null,
|
|
[
|
|
{
|
|
key : "initClass",
|
|
value : function() {
|
|
this.KEY_STR =
|
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|
}
|
|
},
|
|
{
|
|
key : "encode64",
|
|
value : function(a) {
|
|
for (var b = "", c = void 0, d = void 0, e = "", f = void 0,
|
|
g = void 0, h = void 0, i = "", j = 0;
|
|
;)
|
|
if (c = a[j++], d = a[j++], e = a[j++], f = c >> 2,
|
|
g = (3 & c) << 4 | d >> 4, h = (15 & d) << 2 | e >> 6,
|
|
i = 63 & e,
|
|
isNaN(d) ? h = i = 64 : isNaN(e) && (i = 64),
|
|
b = b + this.KEY_STR.charAt(f) +
|
|
this.KEY_STR.charAt(g) + this.KEY_STR.charAt(h) +
|
|
this.KEY_STR.charAt(i),
|
|
c = d = e = "", f = g = h = i = "", !(j < a.length))
|
|
break;
|
|
return b
|
|
}
|
|
},
|
|
{
|
|
key : "restore",
|
|
value : function(a, b) {
|
|
if (!a.match("data:image/jpeg;base64,"))
|
|
return b;
|
|
var c = this.decode64(
|
|
a.replace("data:image/jpeg;base64,", "")),
|
|
d = this.slice2Segments(c),
|
|
e = this.exifManipulation(b, d);
|
|
return "data:image/jpeg;base64," + this.encode64(e)
|
|
}
|
|
},
|
|
{
|
|
key : "exifManipulation",
|
|
value : function(a, b) {
|
|
var c = this.getExifArray(b), d = this.insertExif(a, c);
|
|
return new Uint8Array(d)
|
|
}
|
|
},
|
|
{
|
|
key : "getExifArray",
|
|
value : function(a) {
|
|
for (var b = void 0, c = 0; c < a.length;) {
|
|
if (b = a[c], 255 === b[0] & 225 === b[1])
|
|
return b;
|
|
c++
|
|
}
|
|
return []
|
|
}
|
|
},
|
|
{
|
|
key : "insertExif",
|
|
value : function(a, b) {
|
|
var c = a.replace("data:image/jpeg;base64,", ""),
|
|
d = this.decode64(c), e = d.indexOf(255, 3),
|
|
f = d.slice(0, e), g = d.slice(e), h = f;
|
|
return h = h.concat(b), h = h.concat(g)
|
|
}
|
|
},
|
|
{
|
|
key : "slice2Segments",
|
|
value : function(a) {
|
|
for (var b = 0, c = [];;) {
|
|
var d;
|
|
if (255 === a[b] & 218 === a[b + 1])
|
|
break;
|
|
if (255 === a[b] & 216 === a[b + 1])
|
|
b += 2;
|
|
else {
|
|
d = 256 * a[b + 2] + a[b + 3];
|
|
var e = b + d + 2, f = a.slice(b, e);
|
|
c.push(f), b = e
|
|
}
|
|
if (b > a.length)
|
|
break
|
|
}
|
|
return c
|
|
}
|
|
},
|
|
{
|
|
key : "decode64",
|
|
value : function(a) {
|
|
var b = void 0, c = void 0, d = "", e = void 0, f = void 0,
|
|
g = void 0, h = "", i = 0, j = [],
|
|
k = /[^A-Za-z0-9\+\/\=]/g;
|
|
for (
|
|
k.exec(a) &&
|
|
console.warn(
|
|
"There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),
|
|
a = a.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
;)
|
|
if (e = this.KEY_STR.indexOf(a.charAt(i++)),
|
|
f = this.KEY_STR.indexOf(a.charAt(i++)),
|
|
g = this.KEY_STR.indexOf(a.charAt(i++)),
|
|
h = this.KEY_STR.indexOf(a.charAt(i++)),
|
|
b = e << 2 | f >> 4, c = (15 & f) << 4 | g >> 2,
|
|
d = (3 & g) << 6 | h, j.push(b), 64 !== g && j.push(c),
|
|
64 !== h && j.push(d), b = c = d = "",
|
|
e = f = g = h = "", !(i < a.length))
|
|
break;
|
|
return j
|
|
}
|
|
}
|
|
]),
|
|
a
|
|
}();
|
|
ExifRestore.initClass();
|
|
var contentLoaded = function(a, b) {
|
|
var c = !1, d = !0, e = a.document, f = e.documentElement,
|
|
g = e.addEventListener ? "addEventListener" : "attachEvent",
|
|
h = e.addEventListener ? "removeEventListener" : "detachEvent",
|
|
i = e.addEventListener ? "" : "on", j = function d(f) {
|
|
if ("readystatechange" !== f.type || "complete" === e.readyState)
|
|
return ("load" === f.type ? a : e)[h](i + f.type, d, !1),
|
|
!c && (c = !0) ? b.call(a, f.type || f) : void 0
|
|
};
|
|
if ("complete" !== e.readyState) {
|
|
if (e.createEventObject && f.doScroll) {
|
|
try {
|
|
d = !a.frameElement
|
|
} catch (a) {
|
|
}
|
|
d && function a() {
|
|
try {
|
|
f.doScroll("left")
|
|
} catch (b) {
|
|
return void setTimeout(a, 50)
|
|
}
|
|
return j("poll")
|
|
}()
|
|
}
|
|
return e[g](i + "DOMContentLoaded", j, !1),
|
|
e[g](i + "readystatechange", j, !1), a[g](i + "load", j, !1)
|
|
}
|
|
};
|
|
Dropzone._autoDiscoverFunction = function() {
|
|
if (Dropzone.autoDiscover)
|
|
return Dropzone.discover()
|
|
}, contentLoaded(window, Dropzone._autoDiscoverFunction);
|