diff options
Diffstat (limited to 'vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js')
-rw-r--r-- | vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js | 294 |
1 files changed, 154 insertions, 140 deletions
diff --git a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js index f75cf2b10..d4d32570c 100644 --- a/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js +++ b/vendor/blueimp/jquery-file-upload/js/jquery.fileupload.js @@ -12,7 +12,7 @@ /* global define, require */ /* eslint-disable new-cap */ -(function (factory) { +(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // Register as an anonymous AMD module: @@ -24,7 +24,7 @@ // Browser globals: factory(window.jQuery); } -})(function ($) { +})(function($) { 'use strict'; // Detect file input support, based on @@ -64,7 +64,7 @@ */ function getDragHandler(type) { var isDragOver = type === 'dragover'; - return function (e) { + return function(e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var dataTransfer = e.dataTransfer; if ( @@ -185,11 +185,11 @@ // Translation function, gets the message key to be translated // and an object with context specific data as arguments: - i18n: function (message, context) { + i18n: function(message, context) { // eslint-disable-next-line no-param-reassign message = this.messages[message] || message.toString(); if (context) { - $.each(context, function (key, value) { + $.each(context, function(key, value) { // eslint-disable-next-line no-param-reassign message = message.replace('{' + key + '}', value); }); @@ -202,7 +202,7 @@ // value properties, a function returning such an array, a FormData // object (for XHR file uploads), or a simple object. // The form of the first fileInput is given as parameter to the function: - formData: function (form) { + formData: function(form) { return form.serializeArray(); }, @@ -217,12 +217,12 @@ // and allows you to override plugin options as well as define ajax settings. // // Listeners for this callback can also be bound the following way: - // .on('fileuploadadd', func); + // .bind('fileuploadadd', func); // // data.submit() returns a Promise object and allows to attach additional // handlers using jQuery's Deferred callbacks: // data.submit().done(func).fail(func).always(func); - add: function (e, data) { + add: function(e, data) { if (e.isDefaultPrevented()) { return false; } @@ -231,7 +231,7 @@ (data.autoUpload !== false && $(this).fileupload('option', 'autoUpload')) ) { - data.process().done(function () { + data.process().done(function() { data.submit(); }); } @@ -240,58 +240,58 @@ // Other callbacks: // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .on('fileuploadsubmit', func); + // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); // Callback for the start of each file upload request: - // send: function (e, data) {}, // .on('fileuploadsend', func); + // send: function (e, data) {}, // .bind('fileuploadsend', func); // Callback for successful uploads: - // done: function (e, data) {}, // .on('fileuploaddone', func); + // done: function (e, data) {}, // .bind('fileuploaddone', func); // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .on('fileuploadfail', func); + // fail: function (e, data) {}, // .bind('fileuploadfail', func); // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .on('fileuploadalways', func); + // always: function (e, data) {}, // .bind('fileuploadalways', func); // Callback for upload progress events: - // progress: function (e, data) {}, // .on('fileuploadprogress', func); + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); // Callback for global upload progress events: - // progressall: function (e, data) {}, // .on('fileuploadprogressall', func); + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .on('fileuploadstart', func); + // start: function (e) {}, // .bind('fileuploadstart', func); // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .on('fileuploadstop', func); + // stop: function (e) {}, // .bind('fileuploadstop', func); // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .on('fileuploadchange', func); + // change: function (e, data) {}, // .bind('fileuploadchange', func); // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .on('fileuploadpaste', func); + // paste: function (e, data) {}, // .bind('fileuploadpaste', func); // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .on('fileuploaddrop', func); + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .on('fileuploaddragover', func); + // dragover: function (e) {}, // .bind('fileuploaddragover', func); // Callback before the start of each chunk upload request (before form data initialization): - // chunkbeforesend: function (e, data) {}, // .on('fileuploadchunkbeforesend', func); + // chunkbeforesend: function (e, data) {}, // .bind('fileuploadchunkbeforesend', func); // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .on('fileuploadchunksend', func); + // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .on('fileuploadchunkdone', func); + // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .on('fileuploadchunkfail', func); + // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .on('fileuploadchunkalways', func); + // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); // The plugin options are used as settings object for the ajax calls. // The following are jQuery ajax settings required for the file uploads: @@ -313,16 +313,16 @@ _blobSlice: $.support.blobSlice && - function () { + function() { var slice = this.slice || this.webkitSlice || this.mozSlice; return slice.apply(this, arguments); }, - _BitrateTimer: function () { + _BitrateTimer: function() { this.timestamp = Date.now ? Date.now() : new Date().getTime(); this.loaded = 0; this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { + this.getBitrate = function(now, loaded, interval) { var timeDiff = now - this.timestamp; if (!this.bitrate || !interval || timeDiff > interval) { this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; @@ -333,7 +333,7 @@ }; }, - _isXHRUpload: function (options) { + _isXHRUpload: function(options) { return ( !options.forceIframeTransport && ((!options.multipart && $.support.xhrFileUpload) || @@ -341,7 +341,7 @@ ); }, - _getFormData: function (options) { + _getFormData: function(options) { var formData; if ($.type(options.formData) === 'function') { return options.formData(options.form); @@ -351,7 +351,7 @@ } if ($.type(options.formData) === 'object') { formData = []; - $.each(options.formData, function (name, value) { + $.each(options.formData, function(name, value) { formData.push({ name: name, value: value }); }); return formData; @@ -359,15 +359,15 @@ return []; }, - _getTotal: function (files) { + _getTotal: function(files) { var total = 0; - $.each(files, function (index, file) { + $.each(files, function(index, file) { total += file.size || 1; }); return total; }, - _initProgressObject: function (obj) { + _initProgressObject: function(obj) { var progress = { loaded: 0, total: 0, @@ -380,7 +380,7 @@ } }, - _initResponseObject: function (obj) { + _initResponseObject: function(obj) { var prop; if (obj._response) { for (prop in obj._response) { @@ -393,7 +393,7 @@ } }, - _onProgress: function (e, data) { + _onProgress: function(e, data) { if (e.lengthComputable) { var now = Date.now ? Date.now() : new Date().getTime(), loaded; @@ -442,13 +442,13 @@ } }, - _initProgressListener: function (options) { + _initProgressListener: function(options) { var that = this, xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); // Accesss to the native XHR object is required to add event listeners // for the upload progress event: if (xhr.upload) { - $(xhr.upload).on('progress', function (e) { + $(xhr.upload).bind('progress', function(e) { var oe = e.originalEvent; // Make sure the progress event properties get copied over: e.lengthComputable = oe.lengthComputable; @@ -456,30 +456,30 @@ e.total = oe.total; that._onProgress(e, options); }); - options.xhr = function () { + options.xhr = function() { return xhr; }; } }, - _deinitProgressListener: function (options) { + _deinitProgressListener: function(options) { var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); if (xhr.upload) { - $(xhr.upload).off('progress'); + $(xhr.upload).unbind('progress'); } }, - _isInstanceOf: function (type, obj) { + _isInstanceOf: function(type, obj) { // Cross-frame instanceof check return Object.prototype.toString.call(obj) === '[object ' + type + ']'; }, - _getUniqueFilename: function (name, map) { + _getUniqueFilename: function(name, map) { // eslint-disable-next-line no-param-reassign name = String(name); if (map[name]) { // eslint-disable-next-line no-param-reassign - name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function ( + name = name.replace(/(?: \(([\d]+)\))?(\.[^.]+)?$/, function( _, p1, p2 @@ -494,7 +494,7 @@ return name; }, - _initXHRData: function (options) { + _initXHRData: function(options) { var that = this, formData, file = options.files[0], @@ -530,7 +530,7 @@ value: options.blob }); } else { - $.each(options.files, function (index, file) { + $.each(options.files, function(index, file) { formData.push({ name: ($.type(options.paramName) === 'array' && @@ -545,7 +545,7 @@ formData = options.formData; } else { formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { + $.each(this._getFormData(options), function(index, field) { formData.append(field.name, field.value); }); } @@ -556,7 +556,7 @@ file.uploadName || file.name ); } else { - $.each(options.files, function (index, file) { + $.each(options.files, function(index, file) { // This check allows the tests to run with // dummy objects: if ( @@ -587,8 +587,10 @@ options.blob = null; }, - _initIframeSettings: function (options) { - var targetHost = $('<a></a>').prop('href', options.url).prop('host'); + _initIframeSettings: function(options) { + var targetHost = $('<a></a>') + .prop('href', options.url) + .prop('host'); // Setting the dataType to iframe enables the iframe transport: options.dataType = 'iframe ' + (options.dataType || ''); // The iframe transport accepts a serialized array as form data: @@ -602,7 +604,7 @@ } }, - _initDataSettings: function (options) { + _initDataSettings: function(options) { if (this._isXHRUpload(options)) { if (!this._chunkedUpload(options, true)) { if (!options.data) { @@ -620,12 +622,12 @@ } }, - _getParamName: function (options) { + _getParamName: function(options) { var fileInput = $(options.fileInput), paramName = options.paramName; if (!paramName) { paramName = []; - fileInput.each(function () { + fileInput.each(function() { var input = $(this), name = input.prop('name') || 'files[]', i = (input.prop('files') || [1]).length; @@ -643,7 +645,7 @@ return paramName; }, - _initFormSettings: function (options) { + _initFormSettings: function(options) { // Retrieve missing options from the input field and the // associated form, if available: if (!options.form || !options.form.length) { @@ -677,7 +679,7 @@ } }, - _getAJAXSettings: function (data) { + _getAJAXSettings: function(data) { var options = $.extend({}, this.options, data); this._initFormSettings(options); this._initDataSettings(options); @@ -686,7 +688,7 @@ // jQuery 1.6 doesn't provide .state(), // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { + _getDeferredState: function(deferred) { if (deferred.state) { return deferred.state(); } @@ -701,7 +703,7 @@ // Maps jqXHR callbacks to the equivalent // methods of the given Promise object: - _enhancePromise: function (promise) { + _enhancePromise: function(promise) { promise.success = promise.done; promise.error = promise.fail; promise.complete = promise.always; @@ -710,7 +712,7 @@ // Creates and returns a Promise object enhanced with // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { + _getXHRPromise: function(resolveOrReject, context, args) { var dfd = $.Deferred(), promise = dfd.promise(); // eslint-disable-next-line no-param-reassign @@ -725,19 +727,23 @@ }, // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { + _addConvenienceMethods: function(e, data) { var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); + getPromise = function(args) { + return $.Deferred() + .resolveWith(that, args) + .promise(); }; - data.process = function (resolveFunc, rejectFunc) { + data.process = function(resolveFunc, rejectFunc) { if (resolveFunc || rejectFunc) { data._processQueue = this._processQueue = ( this._processQueue || getPromise([this]) ) - .then(function () { + .then(function() { if (data.errorThrown) { - return $.Deferred().rejectWith(that, [data]).promise(); + return $.Deferred() + .rejectWith(that, [data]) + .promise(); } return getPromise(arguments); }) @@ -745,7 +751,7 @@ } return this._processQueue || getPromise([this]); }; - data.submit = function () { + data.submit = function() { if (this.state() !== 'pending') { data.jqXHR = this.jqXHR = that._trigger( @@ -756,7 +762,7 @@ } return this.jqXHR || that._getXHRPromise(); }; - data.abort = function () { + data.abort = function() { if (this.jqXHR) { return this.jqXHR.abort(); } @@ -764,7 +770,7 @@ that._trigger('fail', null, this); return that._getXHRPromise(false); }; - data.state = function () { + data.state = function() { if (this.jqXHR) { return that._getDeferredState(this.jqXHR); } @@ -772,24 +778,24 @@ return that._getDeferredState(this._processQueue); } }; - data.processing = function () { + data.processing = function() { return ( !this.jqXHR && this._processQueue && that._getDeferredState(this._processQueue) === 'pending' ); }; - data.progress = function () { + data.progress = function() { return this._progress; }; - data.response = function () { + data.response = function() { return this._response; }; }, // Parses the Range header from the server response // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { + _getUploadedBytes: function(jqXHR) { var range = jqXHR.getResponseHeader('Range'), parts = range && range.split('-'), upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10); @@ -801,7 +807,7 @@ // If the second parameter is true, only tests if the file // should be uploaded in chunks, but does not invoke any // upload requests: - _chunkedUpload: function (options, testOnly) { + _chunkedUpload: function(options, testOnly) { options.uploadedBytes = options.uploadedBytes || 0; var that = this, file = options.files[0], @@ -835,7 +841,7 @@ ]); } // The chunk upload method: - upload = function () { + upload = function() { // Clone the options object for each chunk upload: var o = $.extend({}, options), currentLoaded = o._progress.loaded; @@ -861,7 +867,7 @@ (that._trigger('chunksend', null, o) !== false && $.ajax(o)) || that._getXHRPromise(false, o.context) ) - .done(function (result, textStatus, jqXHR) { + .done(function(result, textStatus, jqXHR) { ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize; // Create a progress event if no final progress event // with loaded equaling total has been triggered @@ -890,7 +896,7 @@ dfd.resolveWith(o.context, [result, textStatus, jqXHR]); } }) - .fail(function (jqXHR, textStatus, errorThrown) { + .fail(function(jqXHR, textStatus, errorThrown) { o.jqXHR = jqXHR; o.textStatus = textStatus; o.errorThrown = errorThrown; @@ -898,19 +904,19 @@ that._trigger('chunkalways', null, o); dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]); }) - .always(function () { + .always(function() { that._deinitProgressListener(o); }); }; this._enhancePromise(promise); - promise.abort = function () { + promise.abort = function() { return jqXHR.abort(); }; upload(); return promise; }, - _beforeSend: function (e, data) { + _beforeSend: function(e, data) { if (this._active === 0) { // the start callback is triggered when an upload starts // and no other uploads are currently running, @@ -936,7 +942,7 @@ this._progress.total += data.total; }, - _onDone: function (result, textStatus, jqXHR, options) { + _onDone: function(result, textStatus, jqXHR, options) { var total = options._progress.total, response = options._response; if (options._progress.loaded < total) { @@ -957,7 +963,7 @@ this._trigger('done', null, options); }, - _onFail: function (jqXHR, textStatus, errorThrown, options) { + _onFail: function(jqXHR, textStatus, errorThrown, options) { var response = options._response; if (options.recalculateProgress) { // Remove the failed (error or abort) file upload from @@ -971,13 +977,13 @@ this._trigger('fail', null, options); }, - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + _onAlways: function(jqXHRorResult, textStatus, jqXHRorError, options) { // jqXHRorResult, textStatus and jqXHRorError are added to the // options object via done and fail callbacks this._trigger('always', null, options); }, - _onSend: function (e, data) { + _onSend: function(e, data) { if (!data.submit) { this._addConvenienceMethods(e, data); } @@ -987,7 +993,7 @@ slot, pipe, options = that._getAJAXSettings(data), - send = function () { + send = function() { that._sending += 1; // Set timer for bitrate progress calculation: options._bitrateTimer = new that._BitrateTimer(); @@ -1004,13 +1010,13 @@ that._chunkedUpload(options) || $.ajax(options) ) - .done(function (result, textStatus, jqXHR) { + .done(function(result, textStatus, jqXHR) { that._onDone(result, textStatus, jqXHR, options); }) - .fail(function (jqXHR, textStatus, errorThrown) { + .fail(function(jqXHR, textStatus, errorThrown) { that._onFail(jqXHR, textStatus, errorThrown, options); }) - .always(function (jqXHRorResult, textStatus, jqXHRorError) { + .always(function(jqXHRorResult, textStatus, jqXHRorError) { that._deinitProgressListener(options); that._onAlways( jqXHRorResult, @@ -1060,7 +1066,7 @@ // Return the piped Promise object, enhanced with an abort method, // which is delegated to the jqXHR object of the current upload, // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { + pipe.abort = function() { aborted = [undefined, 'abort', 'abort']; if (!jqXHR) { if (slot) { @@ -1075,7 +1081,7 @@ return send(); }, - _onAdd: function (e, data) { + _onAdd: function(e, data) { var that = this, result = true, options = $.extend({}, this.options, data), @@ -1138,7 +1144,7 @@ paramNameSet = paramName; } data.originalFiles = files; - $.each(fileSet || files, function (index, element) { + $.each(fileSet || files, function(index, element) { var newData = $.extend({}, data); newData.files = fileSet ? element : [element]; newData.paramName = paramNameSet[index]; @@ -1155,13 +1161,15 @@ return result; }, - _replaceFileInput: function (data) { + _replaceFileInput: function(data) { var input = data.fileInput, inputClone = input.clone(true), restoreFocus = input.is(document.activeElement); // Add a reference for the new cloned file input to the data argument: data.fileInputClone = inputClone; - $('<form></form>').append(inputClone)[0].reset(); + $('<form></form>') + .append(inputClone)[0] + .reset(); // Detaching allows to insert the fileInput on another form // without loosing the file input value: input.after(inputClone).detach(); @@ -1171,11 +1179,11 @@ inputClone.focus(); } // Avoid memory leaks with the detached file input: - $.cleanData(input.off('remove')); + $.cleanData(input.unbind('remove')); // Replace the original file input element in the fileInput // elements set with the clone, which has been copied including // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { + this.options.fileInput = this.options.fileInput.map(function(i, el) { if (el === input[0]) { return inputClone[0]; } @@ -1188,12 +1196,12 @@ } }, - _handleFileTreeEntry: function (entry, path) { + _handleFileTreeEntry: function(entry, path) { var that = this, dfd = $.Deferred(), entries = [], dirReader, - errorHandler = function (e) { + errorHandler = function(e) { if (e && !e.entry) { e.entry = entry; } @@ -1203,16 +1211,16 @@ // to be returned together in one set: dfd.resolve([e]); }, - successHandler = function (entries) { + successHandler = function(entries) { that ._handleFileTreeEntries(entries, path + entry.name + '/') - .done(function (files) { + .done(function(files) { dfd.resolve(files); }) .fail(errorHandler); }, - readEntries = function () { - dirReader.readEntries(function (results) { + readEntries = function() { + dirReader.readEntries(function(results) { if (!results.length) { successHandler(entries); } else { @@ -1229,7 +1237,7 @@ entry._file.relativePath = path; dfd.resolve(entry._file); } else { - entry.file(function (file) { + entry.file(function(file) { file.relativePath = path; dfd.resolve(file); }, errorHandler); @@ -1245,21 +1253,21 @@ return dfd.promise(); }, - _handleFileTreeEntries: function (entries, path) { + _handleFileTreeEntries: function(entries, path) { var that = this; return $.when .apply( $, - $.map(entries, function (entry) { + $.map(entries, function(entry) { return that._handleFileTreeEntry(entry, path); }) ) - .then(function () { + .then(function() { return Array.prototype.concat.apply([], arguments); }); }, - _getDroppedFiles: function (dataTransfer) { + _getDroppedFiles: function(dataTransfer) { // eslint-disable-next-line no-param-reassign dataTransfer = dataTransfer || {}; var items = dataTransfer.items; @@ -1269,7 +1277,7 @@ (items[0].webkitGetAsEntry || items[0].getAsEntry) ) { return this._handleFileTreeEntries( - $.map(items, function (item) { + $.map(items, function(item) { var entry; if (item.webkitGetAsEntry) { entry = item.webkitGetAsEntry(); @@ -1283,10 +1291,12 @@ }) ); } - return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise(); + return $.Deferred() + .resolve($.makeArray(dataTransfer.files)) + .promise(); }, - _getSingleFileInputFiles: function (fileInput) { + _getSingleFileInputFiles: function(fileInput) { // eslint-disable-next-line no-param-reassign fileInput = $(fileInput); var entries = @@ -1300,7 +1310,9 @@ if (!files.length) { value = fileInput.prop('value'); if (!value) { - return $.Deferred().resolve([]).promise(); + return $.Deferred() + .resolve([]) + .promise(); } // If the files property is not available, the browser does not // support the File API and we add a pseudo File object with @@ -1308,32 +1320,34 @@ files = [{ name: value.replace(/^.*\\/, '') }]; } else if (files[0].name === undefined && files[0].fileName) { // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { + $.each(files, function(index, file) { file.name = file.fileName; file.size = file.fileSize; }); } - return $.Deferred().resolve(files).promise(); + return $.Deferred() + .resolve(files) + .promise(); }, - _getFileInputFiles: function (fileInput) { + _getFileInputFiles: function(fileInput) { if (!(fileInput instanceof $) || fileInput.length === 1) { return this._getSingleFileInputFiles(fileInput); } return $.when .apply($, $.map(fileInput, this._getSingleFileInputFiles)) - .then(function () { + .then(function() { return Array.prototype.concat.apply([], arguments); }); }, - _onChange: function (e) { + _onChange: function(e) { var that = this, data = { fileInput: $(e.target), form: $(e.target.form) }; - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { data.files = files; if (that.options.replaceFileInput) { that._replaceFileInput(data); @@ -1350,14 +1364,14 @@ }); }, - _onPaste: function (e) { + _onPaste: function(e) { var items = e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.items, data = { files: [] }; if (items && items.length) { - $.each(items, function (index, item) { + $.each(items, function(index, item) { var file = item.getAsFile && item.getAsFile(); if (file) { data.files.push(file); @@ -1375,14 +1389,14 @@ } }, - _onDrop: function (e) { + _onDrop: function(e) { e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; var that = this, dataTransfer = e.dataTransfer, data = {}; if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { + this._getDroppedFiles(dataTransfer).always(function(files) { data.files = files; if ( that._trigger( @@ -1403,7 +1417,7 @@ _onDragLeave: getDragHandler('dragleave'), - _initEventHandlers: function () { + _initEventHandlers: function() { if (this._isXHRUpload(this.options)) { this._on(this.options.dropZone, { dragover: this._onDragOver, @@ -1424,17 +1438,17 @@ } }, - _destroyEventHandlers: function () { + _destroyEventHandlers: function() { this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); this._off(this.options.pasteZone, 'paste'); this._off(this.options.fileInput, 'change'); }, - _destroy: function () { + _destroy: function() { this._destroyEventHandlers(); }, - _setOption: function (key, value) { + _setOption: function(key, value) { var reinit = $.inArray(key, this._specialOptions) !== -1; if (reinit) { this._destroyEventHandlers(); @@ -1446,7 +1460,7 @@ } }, - _initSpecialOptions: function () { + _initSpecialOptions: function() { var options = this.options; if (options.fileInput === undefined) { options.fileInput = this.element.is('input[type="file"]') @@ -1463,14 +1477,14 @@ } }, - _getRegExp: function (str) { + _getRegExp: function(str) { var parts = str.split('/'), modifiers = parts.pop(); parts.shift(); return new RegExp(parts.join('/'), modifiers); }, - _isRegExpOption: function (key, value) { + _isRegExpOption: function(key, value) { return ( key !== 'url' && $.type(value) === 'string' && @@ -1478,17 +1492,17 @@ ); }, - _initDataAttributes: function () { + _initDataAttributes: function() { var that = this, options = this.options, data = this.element.data(); // Initialize options set via HTML5 data-attributes: - $.each(this.element[0].attributes, function (index, attr) { + $.each(this.element[0].attributes, function(index, attr) { var key = attr.name.toLowerCase(), value; if (/^data-/.test(key)) { // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { + key = key.slice(5).replace(/-[a-z]/g, function(str) { return str.charAt(1).toUpperCase(); }); value = data[key]; @@ -1500,7 +1514,7 @@ }); }, - _create: function () { + _create: function() { this._initDataAttributes(); this._initSpecialOptions(); this._slots = []; @@ -1512,7 +1526,7 @@ // This method is exposed to the widget API and allows to query // the number of active uploads: - active: function () { + active: function() { return this._active; }, @@ -1520,7 +1534,7 @@ // the widget upload progress. // It returns an object with loaded, total and bitrate properties // for the running uploads: - progress: function () { + progress: function() { return this._progress; }, @@ -1528,13 +1542,13 @@ // using the fileupload API. The data parameter accepts an object which // must have a files property and can contain additional options: // .fileupload('add', {files: filesList}); - add: function (data) { + add: function(data) { var that = this; if (!data || this.options.disabled) { return; } if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { data.files = files; that._onAdd(null, data); }); @@ -1549,7 +1563,7 @@ // must have a files or fileInput property and can contain additional options: // .fileupload('send', {files: filesList}); // The method returns a Promise object for the file upload call. - send: function (data) { + send: function(data) { if (data && !this.options.disabled) { if (data.fileInput && !data.files) { var that = this, @@ -1557,7 +1571,7 @@ promise = dfd.promise(), jqXHR, aborted; - promise.abort = function () { + promise.abort = function() { aborted = true; if (jqXHR) { return jqXHR.abort(); @@ -1565,7 +1579,7 @@ dfd.reject(null, 'abort', 'abort'); return promise; }; - this._getFileInputFiles(data.fileInput).always(function (files) { + this._getFileInputFiles(data.fileInput).always(function(files) { if (aborted) { return; } @@ -1576,10 +1590,10 @@ data.files = files; jqXHR = that._onSend(null, data); jqXHR.then( - function (result, textStatus, jqXHR) { + function(result, textStatus, jqXHR) { dfd.resolve(result, textStatus, jqXHR); }, - function (jqXHR, textStatus, errorThrown) { + function(jqXHR, textStatus, errorThrown) { dfd.reject(jqXHR, textStatus, errorThrown); } ); |