Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

angular-file-upload-module

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-file-upload-module - nuget Package Compare versions

Comparing version
2.1.1
to
1.1.5
+1332
Content/Scripts/angular-file-upload.js
/*
angular-file-upload v1.1.5
https://github.com/nervgh/angular-file-upload
*/
(function(angular, factory) {
if (typeof define === 'function' && define.amd) {
define('angular-file-upload', ['angular'], function(angular) {
return factory(angular);
});
} else {
return factory(angular);
}
}(typeof angular === 'undefined' ? null : angular, function(angular) {
var module = angular.module('angularFileUpload', []);
'use strict';
/**
* Classes
*
* FileUploader
* FileUploader.FileLikeObject
* FileUploader.FileItem
* FileUploader.FileDirective
* FileUploader.FileSelect
* FileUploader.FileDrop
* FileUploader.FileOver
*/
module
.value('fileUploaderOptions', {
url: '/',
alias: 'file',
headers: {},
queue: [],
progress: 0,
autoUpload: false,
removeAfterUpload: false,
method: 'POST',
filters: [],
formData: [],
queueLimit: Number.MAX_VALUE,
withCredentials: false
})
.factory('FileUploader', ['fileUploaderOptions', '$rootScope', '$http', '$window', '$compile',
function(fileUploaderOptions, $rootScope, $http, $window, $compile) {
/**
* Creates an instance of FileUploader
* @param {Object} [options]
* @constructor
*/
function FileUploader(options) {
var settings = angular.copy(fileUploaderOptions);
angular.extend(this, settings, options, {
isUploading: false,
_nextIndex: 0,
_failFilterIndex: -1,
_directives: {select: [], drop: [], over: []}
});
// add default filters
this.filters.unshift({name: 'queueLimit', fn: this._queueLimitFilter});
this.filters.unshift({name: 'folder', fn: this._folderFilter});
}
/**********************
* PUBLIC
**********************/
/**
* Checks a support the html5 uploader
* @returns {Boolean}
* @readonly
*/
FileUploader.prototype.isHTML5 = !!($window.File && $window.FormData);
/**
* Adds items to the queue
* @param {File|HTMLInputElement|Object|FileList|Array<Object>} files
* @param {Object} [options]
* @param {Array<Function>|String} filters
*/
FileUploader.prototype.addToQueue = function(files, options, filters) {
var list = this.isArrayLikeObject(files) ? files: [files];
var arrayOfFilters = this._getFilters(filters);
var count = this.queue.length;
var addedFileItems = [];
angular.forEach(list, function(some /*{File|HTMLInputElement|Object}*/) {
var temp = new FileUploader.FileLikeObject(some);
if (this._isValidFile(temp, arrayOfFilters, options)) {
var fileItem = new FileUploader.FileItem(this, some, options);
addedFileItems.push(fileItem);
this.queue.push(fileItem);
this._onAfterAddingFile(fileItem);
} else {
var filter = this.filters[this._failFilterIndex];
this._onWhenAddingFileFailed(temp, filter, options);
}
}, this);
if(this.queue.length !== count) {
this._onAfterAddingAll(addedFileItems);
this.progress = this._getTotalProgress();
}
this._render();
if (this.autoUpload) this.uploadAll();
};
/**
* Remove items from the queue. Remove last: index = -1
* @param {FileItem|Number} value
*/
FileUploader.prototype.removeFromQueue = function(value) {
var index = this.getIndexOfItem(value);
var item = this.queue[index];
if (item.isUploading) item.cancel();
this.queue.splice(index, 1);
item._destroy();
this.progress = this._getTotalProgress();
};
/**
* Clears the queue
*/
FileUploader.prototype.clearQueue = function() {
while(this.queue.length) {
this.queue[0].remove();
}
this.progress = 0;
};
/**
* Uploads a item from the queue
* @param {FileItem|Number} value
*/
FileUploader.prototype.uploadItem = function(value) {
var index = this.getIndexOfItem(value);
var item = this.queue[index];
var transport = this.isHTML5 ? '_xhrTransport' : '_iframeTransport';
item._prepareToUploading();
if(this.isUploading) return;
this.isUploading = true;
this[transport](item);
};
/**
* Cancels uploading of item from the queue
* @param {FileItem|Number} value
*/
FileUploader.prototype.cancelItem = function(value) {
var index = this.getIndexOfItem(value);
var item = this.queue[index];
var prop = this.isHTML5 ? '_xhr' : '_form';
if (item && item.isUploading) item[prop].abort();
};
/**
* Uploads all not uploaded items of queue
*/
FileUploader.prototype.uploadAll = function() {
var items = this.getNotUploadedItems().filter(function(item) {
return !item.isUploading;
});
if (!items.length) return;
angular.forEach(items, function(item) {
item._prepareToUploading();
});
items[0].upload();
};
/**
* Cancels all uploads
*/
FileUploader.prototype.cancelAll = function() {
var items = this.getNotUploadedItems();
angular.forEach(items, function(item) {
item.cancel();
});
};
/**
* Returns "true" if value an instance of File
* @param {*} value
* @returns {Boolean}
* @private
*/
FileUploader.prototype.isFile = function(value) {
var fn = $window.File;
return (fn && value instanceof fn);
};
/**
* Returns "true" if value an instance of FileLikeObject
* @param {*} value
* @returns {Boolean}
* @private
*/
FileUploader.prototype.isFileLikeObject = function(value) {
return value instanceof FileUploader.FileLikeObject;
};
/**
* Returns "true" if value is array like object
* @param {*} value
* @returns {Boolean}
*/
FileUploader.prototype.isArrayLikeObject = function(value) {
return (angular.isObject(value) && 'length' in value);
};
/**
* Returns a index of item from the queue
* @param {Item|Number} value
* @returns {Number}
*/
FileUploader.prototype.getIndexOfItem = function(value) {
return angular.isNumber(value) ? value : this.queue.indexOf(value);
};
/**
* Returns not uploaded items
* @returns {Array}
*/
FileUploader.prototype.getNotUploadedItems = function() {
return this.queue.filter(function(item) {
return !item.isUploaded;
});
};
/**
* Returns items ready for upload
* @returns {Array}
*/
FileUploader.prototype.getReadyItems = function() {
return this.queue
.filter(function(item) {
return (item.isReady && !item.isUploading);
})
.sort(function(item1, item2) {
return item1.index - item2.index;
});
};
/**
* Destroys instance of FileUploader
*/
FileUploader.prototype.destroy = function() {
angular.forEach(this._directives, function(key) {
angular.forEach(this._directives[key], function(object) {
object.destroy();
}, this);
}, this);
};
/**
* Callback
* @param {Array} fileItems
*/
FileUploader.prototype.onAfterAddingAll = function(fileItems) {};
/**
* Callback
* @param {FileItem} fileItem
*/
FileUploader.prototype.onAfterAddingFile = function(fileItem) {};
/**
* Callback
* @param {File|Object} item
* @param {Object} filter
* @param {Object} options
* @private
*/
FileUploader.prototype.onWhenAddingFileFailed = function(item, filter, options) {};
/**
* Callback
* @param {FileItem} fileItem
*/
FileUploader.prototype.onBeforeUploadItem = function(fileItem) {};
/**
* Callback
* @param {FileItem} fileItem
* @param {Number} progress
*/
FileUploader.prototype.onProgressItem = function(fileItem, progress) {};
/**
* Callback
* @param {Number} progress
*/
FileUploader.prototype.onProgressAll = function(progress) {};
/**
* Callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileUploader.prototype.onSuccessItem = function(item, response, status, headers) {};
/**
* Callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileUploader.prototype.onErrorItem = function(item, response, status, headers) {};
/**
* Callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileUploader.prototype.onCancelItem = function(item, response, status, headers) {};
/**
* Callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileUploader.prototype.onCompleteItem = function(item, response, status, headers) {};
/**
* Callback
*/
FileUploader.prototype.onCompleteAll = function() {};
/**********************
* PRIVATE
**********************/
/**
* Returns the total progress
* @param {Number} [value]
* @returns {Number}
* @private
*/
FileUploader.prototype._getTotalProgress = function(value) {
if(this.removeAfterUpload) return value || 0;
var notUploaded = this.getNotUploadedItems().length;
var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
var ratio = 100 / this.queue.length;
var current = (value || 0) * ratio / 100;
return Math.round(uploaded * ratio + current);
};
/**
* Returns array of filters
* @param {Array<Function>|String} filters
* @returns {Array<Function>}
* @private
*/
FileUploader.prototype._getFilters = function(filters) {
if (angular.isUndefined(filters)) return this.filters;
if (angular.isArray(filters)) return filters;
var names = filters.match(/[^\s,]+/g);
return this.filters.filter(function(filter) {
return names.indexOf(filter.name) !== -1;
}, this);
};
/**
* Updates html
* @private
*/
FileUploader.prototype._render = function() {
if (!$rootScope.$$phase) $rootScope.$apply();
};
/**
* Returns "true" if item is a file (not folder)
* @param {File|FileLikeObject} item
* @returns {Boolean}
* @private
*/
FileUploader.prototype._folderFilter = function(item) {
return !!(item.size || item.type);
};
/**
* Returns "true" if the limit has not been reached
* @returns {Boolean}
* @private
*/
FileUploader.prototype._queueLimitFilter = function() {
return this.queue.length < this.queueLimit;
};
/**
* Returns "true" if file pass all filters
* @param {File|Object} file
* @param {Array<Function>} filters
* @param {Object} options
* @returns {Boolean}
* @private
*/
FileUploader.prototype._isValidFile = function(file, filters, options) {
this._failFilterIndex = -1;
return !filters.length ? true : filters.every(function(filter) {
this._failFilterIndex++;
return filter.fn.call(this, file, options);
}, this);
};
/**
* Checks whether upload successful
* @param {Number} status
* @returns {Boolean}
* @private
*/
FileUploader.prototype._isSuccessCode = function(status) {
return (status >= 200 && status < 300) || status === 304;
};
/**
* Transforms the server response
* @param {*} response
* @param {Object} headers
* @returns {*}
* @private
*/
FileUploader.prototype._transformResponse = function(response, headers) {
var headersGetter = this._headersGetter(headers);
angular.forEach($http.defaults.transformResponse, function(transformFn) {
response = transformFn(response, headersGetter);
});
return response;
};
/**
* Parsed response headers
* @param headers
* @returns {Object}
* @see https://github.com/angular/angular.js/blob/master/src/ng/http.js
* @private
*/
FileUploader.prototype._parseHeaders = function(headers) {
var parsed = {}, key, val, i;
if (!headers) return parsed;
angular.forEach(headers.split('\n'), function(line) {
i = line.indexOf(':');
key = line.slice(0, i).trim().toLowerCase();
val = line.slice(i + 1).trim();
if (key) {
parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
}
});
return parsed;
};
/**
* Returns function that returns headers
* @param {Object} parsedHeaders
* @returns {Function}
* @private
*/
FileUploader.prototype._headersGetter = function(parsedHeaders) {
return function(name) {
if (name) {
return parsedHeaders[name.toLowerCase()] || null;
}
return parsedHeaders;
};
};
/**
* The XMLHttpRequest transport
* @param {FileItem} item
* @private
*/
FileUploader.prototype._xhrTransport = function(item) {
var xhr = item._xhr = new XMLHttpRequest();
var form = new FormData();
var that = this;
that._onBeforeUploadItem(item);
angular.forEach(item.formData, function(obj) {
angular.forEach(obj, function(value, key) {
form.append(key, value);
});
});
form.append(item.alias, item._file, item.file.name);
xhr.upload.onprogress = function(event) {
var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
that._onProgressItem(item, progress);
};
xhr.onload = function() {
var headers = that._parseHeaders(xhr.getAllResponseHeaders());
var response = that._transformResponse(xhr.response, headers);
var gist = that._isSuccessCode(xhr.status) ? 'Success' : 'Error';
var method = '_on' + gist + 'Item';
that[method](item, response, xhr.status, headers);
that._onCompleteItem(item, response, xhr.status, headers);
};
xhr.onerror = function() {
var headers = that._parseHeaders(xhr.getAllResponseHeaders());
var response = that._transformResponse(xhr.response, headers);
that._onErrorItem(item, response, xhr.status, headers);
that._onCompleteItem(item, response, xhr.status, headers);
};
xhr.onabort = function() {
var headers = that._parseHeaders(xhr.getAllResponseHeaders());
var response = that._transformResponse(xhr.response, headers);
that._onCancelItem(item, response, xhr.status, headers);
that._onCompleteItem(item, response, xhr.status, headers);
};
xhr.open(item.method, item.url, true);
xhr.withCredentials = item.withCredentials;
angular.forEach(item.headers, function(value, name) {
xhr.setRequestHeader(name, value);
});
xhr.send(form);
this._render();
};
/**
* The IFrame transport
* @param {FileItem} item
* @private
*/
FileUploader.prototype._iframeTransport = function(item) {
var form = angular.element('<form style="display: none;" />');
var iframe = angular.element('<iframe name="iframeTransport' + Date.now() + '">');
var input = item._input;
var that = this;
if (item._form) item._form.replaceWith(input); // remove old form
item._form = form; // save link to new form
that._onBeforeUploadItem(item);
input.prop('name', item.alias);
angular.forEach(item.formData, function(obj) {
angular.forEach(obj, function(value, key) {
var element = angular.element('<input type="hidden" name="' + key + '" />');
element.val(value);
form.append(element);
});
});
form.prop({
action: item.url,
method: 'POST',
target: iframe.prop('name'),
enctype: 'multipart/form-data',
encoding: 'multipart/form-data' // old IE
});
iframe.bind('load', function() {
try {
// Fix for legacy IE browsers that loads internal error page
// when failed WS response received. In consequence iframe
// content access denied error is thrown becouse trying to
// access cross domain page. When such thing occurs notifying
// with empty response object. See more info at:
// http://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object
// Note that if non standard 4xx or 5xx error code returned
// from WS then response content can be accessed without error
// but 'XHR' status becomes 200. In order to avoid confusion
// returning response via same 'success' event handler.
// fixed angular.contents() for iframes
var html = iframe[0].contentDocument.body.innerHTML;
} catch (e) {}
var xhr = {response: html, status: 200, dummy: true};
var headers = {};
var response = that._transformResponse(xhr.response, headers);
that._onSuccessItem(item, response, xhr.status, headers);
that._onCompleteItem(item, response, xhr.status, headers);
});
form.abort = function() {
var xhr = {status: 0, dummy: true};
var headers = {};
var response;
iframe.unbind('load').prop('src', 'javascript:false;');
form.replaceWith(input);
that._onCancelItem(item, response, xhr.status, headers);
that._onCompleteItem(item, response, xhr.status, headers);
};
input.after(form);
form.append(input).append(iframe);
form[0].submit();
this._render();
};
/**
* Inner callback
* @param {File|Object} item
* @param {Object} filter
* @param {Object} options
* @private
*/
FileUploader.prototype._onWhenAddingFileFailed = function(item, filter, options) {
this.onWhenAddingFileFailed(item, filter, options);
};
/**
* Inner callback
* @param {FileItem} item
*/
FileUploader.prototype._onAfterAddingFile = function(item) {
this.onAfterAddingFile(item);
};
/**
* Inner callback
* @param {Array<FileItem>} items
*/
FileUploader.prototype._onAfterAddingAll = function(items) {
this.onAfterAddingAll(items);
};
/**
* Inner callback
* @param {FileItem} item
* @private
*/
FileUploader.prototype._onBeforeUploadItem = function(item) {
item._onBeforeUpload();
this.onBeforeUploadItem(item);
};
/**
* Inner callback
* @param {FileItem} item
* @param {Number} progress
* @private
*/
FileUploader.prototype._onProgressItem = function(item, progress) {
var total = this._getTotalProgress(progress);
this.progress = total;
item._onProgress(progress);
this.onProgressItem(item, progress);
this.onProgressAll(total);
this._render();
};
/**
* Inner callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileUploader.prototype._onSuccessItem = function(item, response, status, headers) {
item._onSuccess(response, status, headers);
this.onSuccessItem(item, response, status, headers);
};
/**
* Inner callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileUploader.prototype._onErrorItem = function(item, response, status, headers) {
item._onError(response, status, headers);
this.onErrorItem(item, response, status, headers);
};
/**
* Inner callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileUploader.prototype._onCancelItem = function(item, response, status, headers) {
item._onCancel(response, status, headers);
this.onCancelItem(item, response, status, headers);
};
/**
* Inner callback
* @param {FileItem} item
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileUploader.prototype._onCompleteItem = function(item, response, status, headers) {
item._onComplete(response, status, headers);
this.onCompleteItem(item, response, status, headers);
var nextItem = this.getReadyItems()[0];
this.isUploading = false;
if(angular.isDefined(nextItem)) {
nextItem.upload();
return;
}
this.onCompleteAll();
this.progress = this._getTotalProgress();
this._render();
};
/**********************
* STATIC
**********************/
/**
* @borrows FileUploader.prototype.isFile
*/
FileUploader.isFile = FileUploader.prototype.isFile;
/**
* @borrows FileUploader.prototype.isFileLikeObject
*/
FileUploader.isFileLikeObject = FileUploader.prototype.isFileLikeObject;
/**
* @borrows FileUploader.prototype.isArrayLikeObject
*/
FileUploader.isArrayLikeObject = FileUploader.prototype.isArrayLikeObject;
/**
* @borrows FileUploader.prototype.isHTML5
*/
FileUploader.isHTML5 = FileUploader.prototype.isHTML5;
/**
* Inherits a target (Class_1) by a source (Class_2)
* @param {Function} target
* @param {Function} source
*/
FileUploader.inherit = function(target, source) {
target.prototype = Object.create(source.prototype);
target.prototype.constructor = target;
target.super_ = source;
};
FileUploader.FileLikeObject = FileLikeObject;
FileUploader.FileItem = FileItem;
FileUploader.FileDirective = FileDirective;
FileUploader.FileSelect = FileSelect;
FileUploader.FileDrop = FileDrop;
FileUploader.FileOver = FileOver;
// ---------------------------
/**
* Creates an instance of FileLikeObject
* @param {File|HTMLInputElement|Object} fileOrInput
* @constructor
*/
function FileLikeObject(fileOrInput) {
var isInput = angular.isElement(fileOrInput);
var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
var postfix = angular.isString(fakePathOrObject) ? 'FakePath' : 'Object';
var method = '_createFrom' + postfix;
this[method](fakePathOrObject);
}
/**
* Creates file like object from fake path string
* @param {String} path
* @private
*/
FileLikeObject.prototype._createFromFakePath = function(path) {
this.lastModifiedDate = null;
this.size = null;
this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
};
/**
* Creates file like object from object
* @param {File|FileLikeObject} object
* @private
*/
FileLikeObject.prototype._createFromObject = function(object) {
this.lastModifiedDate = angular.copy(object.lastModifiedDate);
this.size = object.size;
this.type = object.type;
this.name = object.name;
};
// ---------------------------
/**
* Creates an instance of FileItem
* @param {FileUploader} uploader
* @param {File|HTMLInputElement|Object} some
* @param {Object} options
* @constructor
*/
function FileItem(uploader, some, options) {
var isInput = angular.isElement(some);
var input = isInput ? angular.element(some) : null;
var file = !isInput ? some : null;
angular.extend(this, {
url: uploader.url,
alias: uploader.alias,
headers: angular.copy(uploader.headers),
formData: angular.copy(uploader.formData),
removeAfterUpload: uploader.removeAfterUpload,
withCredentials: uploader.withCredentials,
method: uploader.method
}, options, {
uploader: uploader,
file: new FileUploader.FileLikeObject(some),
isReady: false,
isUploading: false,
isUploaded: false,
isSuccess: false,
isCancel: false,
isError: false,
progress: 0,
index: null,
_file: file,
_input: input
});
if (input) this._replaceNode(input);
}
/**********************
* PUBLIC
**********************/
/**
* Uploads a FileItem
*/
FileItem.prototype.upload = function() {
this.uploader.uploadItem(this);
};
/**
* Cancels uploading of FileItem
*/
FileItem.prototype.cancel = function() {
this.uploader.cancelItem(this);
};
/**
* Removes a FileItem
*/
FileItem.prototype.remove = function() {
this.uploader.removeFromQueue(this);
};
/**
* Callback
* @private
*/
FileItem.prototype.onBeforeUpload = function() {};
/**
* Callback
* @param {Number} progress
* @private
*/
FileItem.prototype.onProgress = function(progress) {};
/**
* Callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileItem.prototype.onSuccess = function(response, status, headers) {};
/**
* Callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileItem.prototype.onError = function(response, status, headers) {};
/**
* Callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileItem.prototype.onCancel = function(response, status, headers) {};
/**
* Callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
*/
FileItem.prototype.onComplete = function(response, status, headers) {};
/**********************
* PRIVATE
**********************/
/**
* Inner callback
*/
FileItem.prototype._onBeforeUpload = function() {
this.isReady = true;
this.isUploading = true;
this.isUploaded = false;
this.isSuccess = false;
this.isCancel = false;
this.isError = false;
this.progress = 0;
this.onBeforeUpload();
};
/**
* Inner callback
* @param {Number} progress
* @private
*/
FileItem.prototype._onProgress = function(progress) {
this.progress = progress;
this.onProgress(progress);
};
/**
* Inner callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileItem.prototype._onSuccess = function(response, status, headers) {
this.isReady = false;
this.isUploading = false;
this.isUploaded = true;
this.isSuccess = true;
this.isCancel = false;
this.isError = false;
this.progress = 100;
this.index = null;
this.onSuccess(response, status, headers);
};
/**
* Inner callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileItem.prototype._onError = function(response, status, headers) {
this.isReady = false;
this.isUploading = false;
this.isUploaded = true;
this.isSuccess = false;
this.isCancel = false;
this.isError = true;
this.progress = 0;
this.index = null;
this.onError(response, status, headers);
};
/**
* Inner callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileItem.prototype._onCancel = function(response, status, headers) {
this.isReady = false;
this.isUploading = false;
this.isUploaded = false;
this.isSuccess = false;
this.isCancel = true;
this.isError = false;
this.progress = 0;
this.index = null;
this.onCancel(response, status, headers);
};
/**
* Inner callback
* @param {*} response
* @param {Number} status
* @param {Object} headers
* @private
*/
FileItem.prototype._onComplete = function(response, status, headers) {
this.onComplete(response, status, headers);
if (this.removeAfterUpload) this.remove();
};
/**
* Destroys a FileItem
*/
FileItem.prototype._destroy = function() {
if (this._input) this._input.remove();
if (this._form) this._form.remove();
delete this._form;
delete this._input;
};
/**
* Prepares to uploading
* @private
*/
FileItem.prototype._prepareToUploading = function() {
this.index = this.index || ++this.uploader._nextIndex;
this.isReady = true;
};
/**
* Replaces input element on his clone
* @param {JQLite|jQuery} input
* @private
*/
FileItem.prototype._replaceNode = function(input) {
var clone = $compile(input.clone())(input.scope());
clone.prop('value', null); // FF fix
input.css('display', 'none');
input.after(clone); // remove jquery dependency
};
// ---------------------------
/**
* Creates instance of {FileDirective} object
* @param {Object} options
* @param {Object} options.uploader
* @param {HTMLElement} options.element
* @param {Object} options.events
* @param {String} options.prop
* @constructor
*/
function FileDirective(options) {
angular.extend(this, options);
this.uploader._directives[this.prop].push(this);
this._saveLinks();
this.bind();
}
/**
* Map of events
* @type {Object}
*/
FileDirective.prototype.events = {};
/**
* Binds events handles
*/
FileDirective.prototype.bind = function() {
for(var key in this.events) {
var prop = this.events[key];
this.element.bind(key, this[prop]);
}
};
/**
* Unbinds events handles
*/
FileDirective.prototype.unbind = function() {
for(var key in this.events) {
this.element.unbind(key, this.events[key]);
}
};
/**
* Destroys directive
*/
FileDirective.prototype.destroy = function() {
var index = this.uploader._directives[this.prop].indexOf(this);
this.uploader._directives[this.prop].splice(index, 1);
this.unbind();
// this.element = null;
};
/**
* Saves links to functions
* @private
*/
FileDirective.prototype._saveLinks = function() {
for(var key in this.events) {
var prop = this.events[key];
this[prop] = this[prop].bind(this);
}
};
// ---------------------------
FileUploader.inherit(FileSelect, FileDirective);
/**
* Creates instance of {FileSelect} object
* @param {Object} options
* @constructor
*/
function FileSelect(options) {
FileSelect.super_.apply(this, arguments);
if(!this.uploader.isHTML5) {
this.element.removeAttr('multiple');
}
this.element.prop('value', null); // FF fix
}
/**
* Map of events
* @type {Object}
*/
FileSelect.prototype.events = {
$destroy: 'destroy',
change: 'onChange'
};
/**
* Name of property inside uploader._directive object
* @type {String}
*/
FileSelect.prototype.prop = 'select';
/**
* Returns options
* @return {Object|undefined}
*/
FileSelect.prototype.getOptions = function() {};
/**
* Returns filters
* @return {Array<Function>|String|undefined}
*/
FileSelect.prototype.getFilters = function() {};
/**
* If returns "true" then HTMLInputElement will be cleared
* @returns {Boolean}
*/
FileSelect.prototype.isEmptyAfterSelection = function() {
return !!this.element.attr('multiple');
};
/**
* Event handler
*/
FileSelect.prototype.onChange = function() {
var files = this.uploader.isHTML5 ? this.element[0].files : this.element[0];
var options = this.getOptions();
var filters = this.getFilters();
if (!this.uploader.isHTML5) this.destroy();
this.uploader.addToQueue(files, options, filters);
if (this.isEmptyAfterSelection()) this.element.prop('value', null);
};
// ---------------------------
FileUploader.inherit(FileDrop, FileDirective);
/**
* Creates instance of {FileDrop} object
* @param {Object} options
* @constructor
*/
function FileDrop(options) {
FileDrop.super_.apply(this, arguments);
}
/**
* Map of events
* @type {Object}
*/
FileDrop.prototype.events = {
$destroy: 'destroy',
drop: 'onDrop',
dragover: 'onDragOver',
dragleave: 'onDragLeave'
};
/**
* Name of property inside uploader._directive object
* @type {String}
*/
FileDrop.prototype.prop = 'drop';
/**
* Returns options
* @return {Object|undefined}
*/
FileDrop.prototype.getOptions = function() {};
/**
* Returns filters
* @return {Array<Function>|String|undefined}
*/
FileDrop.prototype.getFilters = function() {};
/**
* Event handler
*/
FileDrop.prototype.onDrop = function(event) {
var transfer = this._getTransfer(event);
if (!transfer) return;
var options = this.getOptions();
var filters = this.getFilters();
this._preventAndStop(event);
angular.forEach(this.uploader._directives.over, this._removeOverClass, this);
this.uploader.addToQueue(transfer.files, options, filters);
};
/**
* Event handler
*/
FileDrop.prototype.onDragOver = function(event) {
var transfer = this._getTransfer(event);
if(!this._haveFiles(transfer.types)) return;
transfer.dropEffect = 'copy';
this._preventAndStop(event);
angular.forEach(this.uploader._directives.over, this._addOverClass, this);
};
/**
* Event handler
*/
FileDrop.prototype.onDragLeave = function(event) {
if (event.currentTarget !== this.element[0]) return;
this._preventAndStop(event);
angular.forEach(this.uploader._directives.over, this._removeOverClass, this);
};
/**
* Helper
*/
FileDrop.prototype._getTransfer = function(event) {
return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;
};
/**
* Helper
*/
FileDrop.prototype._preventAndStop = function(event) {
event.preventDefault();
event.stopPropagation();
};
/**
* Returns "true" if types contains files
* @param {Object} types
*/
FileDrop.prototype._haveFiles = function(types) {
if (!types) return false;
if (types.indexOf) {
return types.indexOf('Files') !== -1;
} else if(types.contains) {
return types.contains('Files');
} else {
return false;
}
};
/**
* Callback
*/
FileDrop.prototype._addOverClass = function(item) {
item.addOverClass();
};
/**
* Callback
*/
FileDrop.prototype._removeOverClass = function(item) {
item.removeOverClass();
};
// ---------------------------
FileUploader.inherit(FileOver, FileDirective);
/**
* Creates instance of {FileDrop} object
* @param {Object} options
* @constructor
*/
function FileOver(options) {
FileOver.super_.apply(this, arguments);
}
/**
* Map of events
* @type {Object}
*/
FileOver.prototype.events = {
$destroy: 'destroy'
};
/**
* Name of property inside uploader._directive object
* @type {String}
*/
FileOver.prototype.prop = 'over';
/**
* Over class
* @type {string}
*/
FileOver.prototype.overClass = 'nv-file-over';
/**
* Adds over class
*/
FileOver.prototype.addOverClass = function() {
this.element.addClass(this.getOverClass());
};
/**
* Removes over class
*/
FileOver.prototype.removeOverClass = function() {
this.element.removeClass(this.getOverClass());
};
/**
* Returns over class
* @returns {String}
*/
FileOver.prototype.getOverClass = function() {
return this.overClass;
};
return FileUploader;
}])
.directive('nvFileSelect', ['$parse', 'FileUploader', function($parse, FileUploader) {
return {
link: function(scope, element, attributes) {
var uploader = scope.$eval(attributes.uploader);
if (!(uploader instanceof FileUploader)) {
throw new TypeError('"Uploader" must be an instance of FileUploader');
}
var object = new FileUploader.FileSelect({
uploader: uploader,
element: element
});
object.getOptions = $parse(attributes.options).bind(object, scope);
object.getFilters = function() {return attributes.filters;};
}
};
}])
.directive('nvFileDrop', ['$parse', 'FileUploader', function($parse, FileUploader) {
return {
link: function(scope, element, attributes) {
var uploader = scope.$eval(attributes.uploader);
if (!(uploader instanceof FileUploader)) {
throw new TypeError('"Uploader" must be an instance of FileUploader');
}
if (!uploader.isHTML5) return;
var object = new FileUploader.FileDrop({
uploader: uploader,
element: element
});
object.getOptions = $parse(attributes.options).bind(object, scope);
object.getFilters = function() {return attributes.filters;};
}
};
}])
.directive('nvFileOver', ['FileUploader', function(FileUploader) {
return {
link: function(scope, element, attributes) {
var uploader = scope.$eval(attributes.uploader);
if (!(uploader instanceof FileUploader)) {
throw new TypeError('"Uploader" must be an instance of FileUploader');
}
var object = new FileUploader.FileOver({
uploader: uploader,
element: element
});
object.getOverClass = function() {
return attributes.overClass || this.overClass;
};
}
};
}])
return module;
}));
{"version":3,"file":"angular-file-upload.min.js","sources":["angular-file-upload.js"],"names":["angular","factory","define","amd","module","value","url","alias","headers","queue","progress","autoUpload","removeAfterUpload","method","filters","formData","queueLimit","Number","MAX_VALUE","withCredentials","fileUploaderOptions","$rootScope","$http","$window","$compile","FileUploader","options","settings","copy","extend","this","isUploading","_nextIndex","_failFilterIndex","_directives","select","drop","over","unshift","name","fn","_queueLimitFilter","_folderFilter","FileLikeObject","fileOrInput","isInput","isElement","fakePathOrObject","postfix","isString","FileItem","uploader","some","input","element","file","isReady","isUploaded","isSuccess","isCancel","isError","index","_file","_input","_replaceNode","FileDirective","prop","push","_saveLinks","bind","FileSelect","super_","apply","arguments","isHTML5","removeAttr","FileDrop","FileOver","prototype","File","FormData","addToQueue","files","list","isArrayLikeObject","arrayOfFilters","_getFilters","count","length","addedFileItems","forEach","temp","_isValidFile","fileItem","_onAfterAddingFile","filter","_onWhenAddingFileFailed","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","removeFromQueue","getIndexOfItem","item","cancel","splice","_destroy","clearQueue","remove","uploadItem","transport","_prepareToUploading","cancelItem","abort","items","getNotUploadedItems","upload","cancelAll","isFile","isFileLikeObject","isObject","isNumber","indexOf","getReadyItems","sort","item1","item2","destroy","key","object","onAfterAddingAll","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","onErrorItem","onCancelItem","onCompleteItem","onCompleteAll","notUploaded","uploaded","ratio","current","Math","round","isUndefined","isArray","names","match","$$phase","$apply","size","type","every","call","_isSuccessCode","status","_transformResponse","response","headersGetter","_headersGetter","defaults","transformResponse","transformFn","_parseHeaders","val","i","parsed","split","line","slice","trim","toLowerCase","parsedHeaders","_xhrTransport","xhr","_xhr","XMLHttpRequest","form","that","_onBeforeUploadItem","obj","append","onprogress","event","lengthComputable","loaded","total","_onProgressItem","onload","getAllResponseHeaders","gist","_onCompleteItem","onerror","_onErrorItem","onabort","_onCancelItem","open","setRequestHeader","send","_iframeTransport","iframe","Date","now","_form","replaceWith","action","target","enctype","encoding","html","contentDocument","body","innerHTML","e","dummy","_onSuccessItem","unbind","after","submit","_onBeforeUpload","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","nextItem","isDefined","inherit","source","Object","create","constructor","_createFromFakePath","path","lastModifiedDate","lastIndexOf","_createFromObject","onBeforeUpload","onProgress","onSuccess","onError","onCancel","onComplete","clone","scope","css","events","$destroy","change","getOptions","getFilters","isEmptyAfterSelection","attr","onChange","dragover","dragleave","onDrop","transfer","_getTransfer","_preventAndStop","_removeOverClass","onDragOver","_haveFiles","types","dropEffect","_addOverClass","onDragLeave","currentTarget","dataTransfer","originalEvent","preventDefault","stopPropagation","contains","addOverClass","removeOverClass","overClass","addClass","getOverClass","removeClass","directive","$parse","link","attributes","$eval","TypeError"],"mappings":"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"}

Sorry, the diff of this file is not supported yet

+13
-14

@@ -1,15 +0,14 @@

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>angular-file-upload-module</id>
<version>2.1.1</version>
<title>angular-file-upload-module</title>
<authors>Alex</authors>
<owners>beaudetious</owners>
<projectUrl>https://github.com/nervgh/angular-file-upload</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Angular File Upload is a module for the AngularJS framework. Supports drag-n-drop upload, upload progress, validation filters and a file upload queue. It supports native HTML5 uploads, but degrades to a legacy iframe upload method for older browsers. Works with any server side platform which supports standard HTML form uploads.</description>
<releaseNotes>Fixes for old IE</releaseNotes>
<tags>angular-file-upload angular file upload angularjs module</tags>
</metadata>
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>angular-file-upload-module</id>
<version>1.1.5</version>
<title>angular-file-upload-module</title>
<authors>Alex</authors>
<owners>beaudetious</owners>
<projectUrl>https://github.com/nervgh/angular-file-upload</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Angular File Upload is a module for the AngularJS framework. Supports drag-n-drop upload, upload progress, validation filters and a file upload queue. It supports native HTML5 uploads, but degrades to a legacy iframe upload method for older browsers. Works with any server side platform which supports standard HTML form uploads.</description>
<tags>angular-file-upload angular file upload angularjs module</tags>
</metadata>
</package>
/*
angular-file-upload v2.1.1
angular-file-upload v1.1.5
https://github.com/nervgh/angular-file-upload
*/
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports["angular-file-upload"]=t():e["angular-file-upload"]=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=r(n(2)),o=r(n(3)),s=r(n(4)),a=r(n(5)),u=r(n(6)),l=r(n(7)),c=r(n(1)),f=r(n(8)),p=r(n(9)),d=r(n(10)),v=r(n(11)),h=r(n(12));angular.module(i.name,[]).value("fileUploaderOptions",o).factory("FileUploader",s).factory("FileLikeObject",a).factory("FileItem",u).factory("FileDirective",l).factory("FileSelect",c).factory("FileDrop",f).factory("FileOver",p).directive("nvFileSelect",d).directive("nvFileDrop",v).directive("nvFileOver",h).run(["FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver",function(e,t,n,r,i,o,s){e.FileLikeObject=t,e.FileItem=n,e.FileDirective=r,e.FileSelect=i,e.FileDrop=o,e.FileOver=s}])},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function u(e,t,n){var r=Object.getOwnPropertyDescriptor(e,t);if(void 0===r){var i=Object.getPrototypeOf(e);return null===i?void 0:u(i,t,n)}if("value"in r&&r.writable)return r.value;var o=r.get;return void 0===o?void 0:o.call(n)},s=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)},a=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")};r(n(2));e.exports=function(e){var t=function(e){function t(e){a(this,t),this.events={$destroy:"destroy",change:"onChange"},this.prop="select",o(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e),this.uploader.isHTML5||this.element.removeAttr("multiple"),this.element.prop("value",null)}return s(t,e),i(t,{getOptions:{value:function(){}},getFilters:{value:function(){}},isEmptyAfterSelection:{value:function(){return!!this.element.attr("multiple")}},onChange:{value:function(){var e=this.uploader.isHTML5?this.element[0].files:this.element[0],t=this.getOptions(),n=this.getFilters();this.uploader.isHTML5||this.destroy(),this.uploader.addToQueue(e,t,n),this.isEmptyAfterSelection()&&this.element.prop("value",null)}}}),t}(e);return t},e.exports.$inject=["FileDirective"]},function(e,t){e.exports={name:"angularFileUpload"}},function(e,t){"use strict";e.exports={url:"/",alias:"file",headers:{},queue:[],progress:0,autoUpload:!1,removeAfterUpload:!1,method:"POST",filters:[],formData:[],queueLimit:Number.MAX_VALUE,withCredentials:!1}},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},s=(r(n(2)),angular.copy),a=angular.extend,u=angular.forEach,l=angular.isObject,c=angular.isNumber,f=angular.isDefined,p=angular.isArray,d=angular.element;e.exports=function(e,t,n,r,v,h){var m=r.File,_=r.FormData,g=function(){function r(t){o(this,r);var n=s(e);a(this,n,t,{isUploading:!1,_nextIndex:0,_failFilterIndex:-1,_directives:{select:[],drop:[],over:[]}}),this.filters.unshift({name:"queueLimit",fn:this._queueLimitFilter}),this.filters.unshift({name:"folder",fn:this._folderFilter})}return i(r,{addToQueue:{value:function(e,t,n){var r=this,i=this.isArrayLikeObject(e)?e:[e],o=this._getFilters(n),s=this.queue.length,a=[];u(i,function(e){var n=new v(e);if(r._isValidFile(n,o,t)){var i=new h(r,e,t);a.push(i),r.queue.push(i),r._onAfterAddingFile(i)}else{var s=o[r._failFilterIndex];r._onWhenAddingFileFailed(n,s,t)}}),this.queue.length!==s&&(this._onAfterAddingAll(a),this.progress=this._getTotalProgress()),this._render(),this.autoUpload&&this.uploadAll()}},removeFromQueue:{value:function(e){var t=this.getIndexOfItem(e),n=this.queue[t];n.isUploading&&n.cancel(),this.queue.splice(t,1),n._destroy(),this.progress=this._getTotalProgress()}},clearQueue:{value:function(){for(;this.queue.length;)this.queue[0].remove();this.progress=0}},uploadItem:{value:function(e){var t=this.getIndexOfItem(e),n=this.queue[t],r=this.isHTML5?"_xhrTransport":"_iframeTransport";n._prepareToUploading(),this.isUploading||(this.isUploading=!0,this[r](n))}},cancelItem:{value:function(e){var t=this.getIndexOfItem(e),n=this.queue[t],r=this.isHTML5?"_xhr":"_form";n&&n.isUploading&&n[r].abort()}},uploadAll:{value:function(){var e=this.getNotUploadedItems().filter(function(e){return!e.isUploading});e.length&&(u(e,function(e){return e._prepareToUploading()}),e[0].upload())}},cancelAll:{value:function(){var e=this.getNotUploadedItems();u(e,function(e){return e.cancel()})}},isFile:{value:function(e){return this.constructor.isFile(e)}},isFileLikeObject:{value:function(e){return this.constructor.isFileLikeObject(e)}},isArrayLikeObject:{value:function(e){return this.constructor.isArrayLikeObject(e)}},getIndexOfItem:{value:function(e){return c(e)?e:this.queue.indexOf(e)}},getNotUploadedItems:{value:function(){return this.queue.filter(function(e){return!e.isUploaded})}},getReadyItems:{value:function(){return this.queue.filter(function(e){return e.isReady&&!e.isUploading}).sort(function(e,t){return e.index-t.index})}},destroy:{value:function(){var e=this;u(this._directives,function(t){u(e._directives[t],function(e){e.destroy()})})}},onAfterAddingAll:{value:function(e){}},onAfterAddingFile:{value:function(e){}},onWhenAddingFileFailed:{value:function(e,t,n){}},onBeforeUploadItem:{value:function(e){}},onProgressItem:{value:function(e,t){}},onProgressAll:{value:function(e){}},onSuccessItem:{value:function(e,t,n,r){}},onErrorItem:{value:function(e,t,n,r){}},onCancelItem:{value:function(e,t,n,r){}},onCompleteItem:{value:function(e,t,n,r){}},onCompleteAll:{value:function(){}},_getTotalProgress:{value:function(e){if(this.removeAfterUpload)return e||0;var t=this.getNotUploadedItems().length,n=t?this.queue.length-t:this.queue.length,r=100/this.queue.length,i=(e||0)*r/100;return Math.round(n*r+i)}},_getFilters:{value:function(e){if(!e)return this.filters;if(p(e))return e;var t=e.match(/[^\s,]+/g);return this.filters.filter(function(e){return-1!==t.indexOf(e.name)})}},_render:{value:function(){t.$$phase||t.$apply()}},_folderFilter:{value:function(e){return!(!e.size&&!e.type)}},_queueLimitFilter:{value:function(){return this.queue.length<this.queueLimit}},_isValidFile:{value:function(e,t,n){var r=this;return this._failFilterIndex=-1,t.length?t.every(function(t){return r._failFilterIndex++,t.fn.call(r,e,n)}):!0}},_isSuccessCode:{value:function(e){return e>=200&&300>e||304===e}},_transformResponse:{value:function(e,t){var r=this._headersGetter(t);return u(n.defaults.transformResponse,function(t){e=t(e,r)}),e}},_parseHeaders:{value:function(e){var t,n,r,i={};return e?(u(e.split("\n"),function(e){r=e.indexOf(":"),t=e.slice(0,r).trim().toLowerCase(),n=e.slice(r+1).trim(),t&&(i[t]=i[t]?i[t]+", "+n:n)}),i):i}},_headersGetter:{value:function(e){return function(t){return t?e[t.toLowerCase()]||null:e}}},_xhrTransport:{value:function(e){var t=this,n=e._xhr=new XMLHttpRequest,r=new _;if(this._onBeforeUploadItem(e),u(e.formData,function(e){u(e,function(e,t){r.append(t,e)})}),"number"!=typeof e._file.size)throw new TypeError("The file specified is no longer valid");r.append(e.alias,e._file,e.file.name),n.upload.onprogress=function(n){var r=Math.round(n.lengthComputable?100*n.loaded/n.total:0);t._onProgressItem(e,r)},n.onload=function(){var r=t._parseHeaders(n.getAllResponseHeaders()),i=t._transformResponse(n.response,r),o=t._isSuccessCode(n.status)?"Success":"Error",s="_on"+o+"Item";t[s](e,i,n.status,r),t._onCompleteItem(e,i,n.status,r)},n.onerror=function(){var r=t._parseHeaders(n.getAllResponseHeaders()),i=t._transformResponse(n.response,r);t._onErrorItem(e,i,n.status,r),t._onCompleteItem(e,i,n.status,r)},n.onabort=function(){var r=t._parseHeaders(n.getAllResponseHeaders()),i=t._transformResponse(n.response,r);t._onCancelItem(e,i,n.status,r),t._onCompleteItem(e,i,n.status,r)},n.open(e.method,e.url,!0),n.withCredentials=e.withCredentials,u(e.headers,function(e,t){n.setRequestHeader(t,e)}),n.send(r),this._render()}},_iframeTransport:{value:function(e){var t=this,n=d('<form style="display: none;" />'),r=d('<iframe name="iframeTransport'+Date.now()+'">'),i=e._input;e._form&&e._form.replaceWith(i),e._form=n,this._onBeforeUploadItem(e),i.prop("name",e.alias),u(e.formData,function(e){u(e,function(e,t){var r=d('<input type="hidden" name="'+t+'" />');r.val(e),n.append(r)})}),n.prop({action:e.url,method:"POST",target:r.prop("name"),enctype:"multipart/form-data",encoding:"multipart/form-data"}),r.bind("load",function(){var n="",i=200;try{n=r[0].contentDocument.body.innerHTML}catch(o){i=500}var s={response:n,status:i,dummy:!0},a={},u=t._transformResponse(s.response,a);t._onSuccessItem(e,u,s.status,a),t._onCompleteItem(e,u,s.status,a)}),n.abort=function(){var o,s={status:0,dummy:!0},a={};r.unbind("load").prop("src","javascript:false;"),n.replaceWith(i),t._onCancelItem(e,o,s.status,a),t._onCompleteItem(e,o,s.status,a)},i.after(n),n.append(i).append(r),n[0].submit(),this._render()}},_onWhenAddingFileFailed:{value:function(e,t,n){this.onWhenAddingFileFailed(e,t,n)}},_onAfterAddingFile:{value:function(e){this.onAfterAddingFile(e)}},_onAfterAddingAll:{value:function(e){this.onAfterAddingAll(e)}},_onBeforeUploadItem:{value:function(e){e._onBeforeUpload(),this.onBeforeUploadItem(e)}},_onProgressItem:{value:function(e,t){var n=this._getTotalProgress(t);this.progress=n,e._onProgress(t),this.onProgressItem(e,t),this.onProgressAll(n),this._render()}},_onSuccessItem:{value:function(e,t,n,r){e._onSuccess(t,n,r),this.onSuccessItem(e,t,n,r)}},_onErrorItem:{value:function(e,t,n,r){e._onError(t,n,r),this.onErrorItem(e,t,n,r)}},_onCancelItem:{value:function(e,t,n,r){e._onCancel(t,n,r),this.onCancelItem(e,t,n,r)}},_onCompleteItem:{value:function(e,t,n,r){e._onComplete(t,n,r),this.onCompleteItem(e,t,n,r);var i=this.getReadyItems()[0];return this.isUploading=!1,f(i)?void i.upload():(this.onCompleteAll(),this.progress=this._getTotalProgress(),void this._render())}}},{isFile:{value:function(e){return m&&e instanceof m}},isFileLikeObject:{value:function(e){return e instanceof v}},isArrayLikeObject:{value:function(e){return l(e)&&"length"in e}},inherit:{value:function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.super_=t}}}),r}();return g.prototype.isHTML5=!(!m||!_),g.isHTML5=g.prototype.isHTML5,g},e.exports.$inject=["fileUploaderOptions","$rootScope","$http","$window","FileLikeObject","FileItem"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},s=(r(n(2)),angular.copy),a=angular.isElement,u=angular.isString;e.exports=function(){var e=function(){function e(t){o(this,e);var n=a(t),r=n?t.value:t,i=u(r)?"FakePath":"Object",s="_createFrom"+i;this[s](r)}return i(e,{_createFromFakePath:{value:function(e){this.lastModifiedDate=null,this.size=null,this.type="like/"+e.slice(e.lastIndexOf(".")+1).toLowerCase(),this.name=e.slice(e.lastIndexOf("/")+e.lastIndexOf("\\")+2)}},_createFromObject:{value:function(e){this.lastModifiedDate=s(e.lastModifiedDate),this.size=e.size,this.type=e.type,this.name=e.name}}}),e}();return e},e.exports.$inject=[]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},s=(r(n(2)),angular.copy),a=angular.extend,u=angular.element,l=angular.isElement;e.exports=function(e,t){var n=function(){function n(e,r,i){o(this,n);var c=l(r),f=c?u(r):null,p=c?null:r;a(this,{url:e.url,alias:e.alias,headers:s(e.headers),formData:s(e.formData),removeAfterUpload:e.removeAfterUpload,withCredentials:e.withCredentials,method:e.method},i,{uploader:e,file:new t(r),isReady:!1,isUploading:!1,isUploaded:!1,isSuccess:!1,isCancel:!1,isError:!1,progress:0,index:null,_file:p,_input:f}),f&&this._replaceNode(f)}return i(n,{upload:{value:function(){try{this.uploader.uploadItem(this)}catch(e){this.uploader._onCompleteItem(this,"",0,[]),this.uploader._onErrorItem(this,"",0,[])}}},cancel:{value:function(){this.uploader.cancelItem(this)}},remove:{value:function(){this.uploader.removeFromQueue(this)}},onBeforeUpload:{value:function(){}},onProgress:{value:function(e){}},onSuccess:{value:function(e,t,n){}},onError:{value:function(e,t,n){}},onCancel:{value:function(e,t,n){}},onComplete:{value:function(e,t,n){}},_onBeforeUpload:{value:function(){this.isReady=!0,this.isUploading=!0,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!1,this.isError=!1,this.progress=0,this.onBeforeUpload()}},_onProgress:{value:function(e){this.progress=e,this.onProgress(e)}},_onSuccess:{value:function(e,t,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!0,this.isCancel=!1,this.isError=!1,this.progress=100,this.index=null,this.onSuccess(e,t,n)}},_onError:{value:function(e,t,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!1,this.isCancel=!1,this.isError=!0,this.progress=0,this.index=null,this.onError(e,t,n)}},_onCancel:{value:function(e,t,n){this.isReady=!1,this.isUploading=!1,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!0,this.isError=!1,this.progress=0,this.index=null,this.onCancel(e,t,n)}},_onComplete:{value:function(e,t,n){this.onComplete(e,t,n),this.removeAfterUpload&&this.remove()}},_destroy:{value:function(){this._input&&this._input.remove(),this._form&&this._form.remove(),delete this._form,delete this._input}},_prepareToUploading:{value:function(){this.index=this.index||++this.uploader._nextIndex,this.isReady=!0}},_replaceNode:{value:function(t){var n=e(t.clone())(t.scope());n.prop("value",null),t.css("display","none"),t.after(n)}}}),n}();return n},e.exports.$inject=["$compile","FileLikeObject"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},s=(r(n(2)),angular.extend);e.exports=function(){var e=function(){function e(t){o(this,e),s(this,t),this.uploader._directives[this.prop].push(this),this._saveLinks(),this.bind()}return i(e,{bind:{value:function(){for(var e in this.events){var t=this.events[e];this.element.bind(e,this[t])}}},unbind:{value:function(){for(var e in this.events)this.element.unbind(e,this.events[e])}},destroy:{value:function(){var e=this.uploader._directives[this.prop].indexOf(this);this.uploader._directives[this.prop].splice(e,1),this.unbind()}},_saveLinks:{value:function(){for(var e in this.events){var t=this.events[e];this[t]=this[t].bind(this)}}}}),e}();return e.prototype.events={},e},e.exports.$inject=[]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function l(e,t,n){var r=Object.getOwnPropertyDescriptor(e,t);if(void 0===r){var i=Object.getPrototypeOf(e);return null===i?void 0:l(i,t,n)}if("value"in r&&r.writable)return r.value;var o=r.get;return void 0===o?void 0:o.call(n)},s=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)},a=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},u=(r(n(2)),angular.forEach);e.exports=function(e){var t=function(e){function t(e){a(this,t),this.events={$destroy:"destroy",drop:"onDrop",dragover:"onDragOver",dragleave:"onDragLeave"},this.prop="drop",o(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e)}return s(t,e),i(t,{getOptions:{value:function(){}},getFilters:{value:function(){}},onDrop:{value:function(e){var t=this._getTransfer(e);if(t){var n=this.getOptions(),r=this.getFilters();this._preventAndStop(e),u(this.uploader._directives.over,this._removeOverClass,this),this.uploader.addToQueue(t.files,n,r)}}},onDragOver:{value:function(e){var t=this._getTransfer(e);this._haveFiles(t.types)&&(t.dropEffect="copy",this._preventAndStop(e),u(this.uploader._directives.over,this._addOverClass,this))}},onDragLeave:{value:function(e){e.currentTarget!==this.element[0]&&(this._preventAndStop(e),u(this.uploader._directives.over,this._removeOverClass,this))}},_getTransfer:{value:function(e){return e.dataTransfer?e.dataTransfer:e.originalEvent.dataTransfer}},_preventAndStop:{value:function(e){e.preventDefault(),e.stopPropagation()}},_haveFiles:{value:function(e){return e?e.indexOf?-1!==e.indexOf("Files"):e.contains?e.contains("Files"):!1:!1}},_addOverClass:{value:function(e){e.addOverClass()}},_removeOverClass:{value:function(e){e.removeOverClass()}}}),t}(e);return t},e.exports.$inject=["FileDirective"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e},i=function(){function e(e,t){for(var n in t){var r=t[n];r.configurable=!0,r.value&&(r.writable=!0)}Object.defineProperties(e,t)}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=function u(e,t,n){var r=Object.getOwnPropertyDescriptor(e,t);if(void 0===r){var i=Object.getPrototypeOf(e);return null===i?void 0:u(i,t,n)}if("value"in r&&r.writable)return r.value;var o=r.get;return void 0===o?void 0:o.call(n)},s=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)},a=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")};r(n(2));e.exports=function(e){var t=function(e){function t(e){a(this,t),this.events={$destroy:"destroy"},this.prop="over",this.overClass="nv-file-over",o(Object.getPrototypeOf(t.prototype),"constructor",this).call(this,e)}return s(t,e),i(t,{addOverClass:{value:function(){this.element.addClass(this.getOverClass())}},removeOverClass:{value:function(){this.element.removeClass(this.getOverClass())}},getOverClass:{value:function(){return this.overClass}}}),t}(e);return t},e.exports.$inject=["FileDirective"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e};r(n(2));e.exports=function(e,t,n){return{link:function(r,i,o){var s=r.$eval(o.uploader);if(!(s instanceof t))throw new TypeError('"Uploader" must be an instance of FileUploader');var a=new n({uploader:s,element:i});a.getOptions=e(o.options).bind(a,r),a.getFilters=function(){return o.filters}}}},e.exports.$inject=["$parse","FileUploader","FileSelect"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e};r(n(2));e.exports=function(e,t,n){return{link:function(r,i,o){var s=r.$eval(o.uploader);if(!(s instanceof t))throw new TypeError('"Uploader" must be an instance of FileUploader');if(s.isHTML5){var a=new n({uploader:s,element:i});a.getOptions=e(o.options).bind(a,r),a.getFilters=function(){return o.filters}}}}},e.exports.$inject=["$parse","FileUploader","FileDrop"]},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e["default"]:e};r(n(2));e.exports=function(e,t){return{link:function(n,r,i){var o=n.$eval(i.uploader);if(!(o instanceof e))throw new TypeError('"Uploader" must be an instance of FileUploader');var s=new t({uploader:o,element:r});s.getOverClass=function(){return i.overClass||s.overClass}}}},e.exports.$inject=["FileUploader","FileOver"]}])});
//# sourceMappingURL=angular-file-upload.min.js.map
!function(a,b){return"function"==typeof define&&define.amd?(define("angular-file-upload",["angular"],function(a){return b(a)}),void 0):b(a)}("undefined"==typeof angular?null:angular,function(a){var b=a.module("angularFileUpload",[]);return b.value("fileUploaderOptions",{url:"/",alias:"file",headers:{},queue:[],progress:0,autoUpload:!1,removeAfterUpload:!1,method:"POST",filters:[],formData:[],queueLimit:Number.MAX_VALUE,withCredentials:!1}).factory("FileUploader",["fileUploaderOptions","$rootScope","$http","$window","$compile",function(b,c,d,e,f){function g(c){var d=a.copy(b);a.extend(this,d,c,{isUploading:!1,_nextIndex:0,_failFilterIndex:-1,_directives:{select:[],drop:[],over:[]}}),this.filters.unshift({name:"queueLimit",fn:this._queueLimitFilter}),this.filters.unshift({name:"folder",fn:this._folderFilter})}function h(b){var c=a.isElement(b),d=c?b.value:b,e=a.isString(d)?"FakePath":"Object",f="_createFrom"+e;this[f](d)}function i(b,c,d){var e=a.isElement(c),f=e?a.element(c):null,h=e?null:c;a.extend(this,{url:b.url,alias:b.alias,headers:a.copy(b.headers),formData:a.copy(b.formData),removeAfterUpload:b.removeAfterUpload,withCredentials:b.withCredentials,method:b.method},d,{uploader:b,file:new g.FileLikeObject(c),isReady:!1,isUploading:!1,isUploaded:!1,isSuccess:!1,isCancel:!1,isError:!1,progress:0,index:null,_file:h,_input:f}),f&&this._replaceNode(f)}function j(b){a.extend(this,b),this.uploader._directives[this.prop].push(this),this._saveLinks(),this.bind()}function k(){k.super_.apply(this,arguments),this.uploader.isHTML5||this.element.removeAttr("multiple"),this.element.prop("value",null)}function l(){l.super_.apply(this,arguments)}function m(){m.super_.apply(this,arguments)}return g.prototype.isHTML5=!(!e.File||!e.FormData),g.prototype.addToQueue=function(b,c,d){var e=this.isArrayLikeObject(b)?b:[b],f=this._getFilters(d),h=this.queue.length,i=[];a.forEach(e,function(a){var b=new g.FileLikeObject(a);if(this._isValidFile(b,f,c)){var d=new g.FileItem(this,a,c);i.push(d),this.queue.push(d),this._onAfterAddingFile(d)}else{var e=this.filters[this._failFilterIndex];this._onWhenAddingFileFailed(b,e,c)}},this),this.queue.length!==h&&(this._onAfterAddingAll(i),this.progress=this._getTotalProgress()),this._render(),this.autoUpload&&this.uploadAll()},g.prototype.removeFromQueue=function(a){var b=this.getIndexOfItem(a),c=this.queue[b];c.isUploading&&c.cancel(),this.queue.splice(b,1),c._destroy(),this.progress=this._getTotalProgress()},g.prototype.clearQueue=function(){for(;this.queue.length;)this.queue[0].remove();this.progress=0},g.prototype.uploadItem=function(a){var b=this.getIndexOfItem(a),c=this.queue[b],d=this.isHTML5?"_xhrTransport":"_iframeTransport";c._prepareToUploading(),this.isUploading||(this.isUploading=!0,this[d](c))},g.prototype.cancelItem=function(a){var b=this.getIndexOfItem(a),c=this.queue[b],d=this.isHTML5?"_xhr":"_form";c&&c.isUploading&&c[d].abort()},g.prototype.uploadAll=function(){var b=this.getNotUploadedItems().filter(function(a){return!a.isUploading});b.length&&(a.forEach(b,function(a){a._prepareToUploading()}),b[0].upload())},g.prototype.cancelAll=function(){var b=this.getNotUploadedItems();a.forEach(b,function(a){a.cancel()})},g.prototype.isFile=function(a){var b=e.File;return b&&a instanceof b},g.prototype.isFileLikeObject=function(a){return a instanceof g.FileLikeObject},g.prototype.isArrayLikeObject=function(b){return a.isObject(b)&&"length"in b},g.prototype.getIndexOfItem=function(b){return a.isNumber(b)?b:this.queue.indexOf(b)},g.prototype.getNotUploadedItems=function(){return this.queue.filter(function(a){return!a.isUploaded})},g.prototype.getReadyItems=function(){return this.queue.filter(function(a){return a.isReady&&!a.isUploading}).sort(function(a,b){return a.index-b.index})},g.prototype.destroy=function(){a.forEach(this._directives,function(b){a.forEach(this._directives[b],function(a){a.destroy()},this)},this)},g.prototype.onAfterAddingAll=function(){},g.prototype.onAfterAddingFile=function(){},g.prototype.onWhenAddingFileFailed=function(){},g.prototype.onBeforeUploadItem=function(){},g.prototype.onProgressItem=function(){},g.prototype.onProgressAll=function(){},g.prototype.onSuccessItem=function(){},g.prototype.onErrorItem=function(){},g.prototype.onCancelItem=function(){},g.prototype.onCompleteItem=function(){},g.prototype.onCompleteAll=function(){},g.prototype._getTotalProgress=function(a){if(this.removeAfterUpload)return a||0;var b=this.getNotUploadedItems().length,c=b?this.queue.length-b:this.queue.length,d=100/this.queue.length,e=(a||0)*d/100;return Math.round(c*d+e)},g.prototype._getFilters=function(b){if(a.isUndefined(b))return this.filters;if(a.isArray(b))return b;var c=b.match(/[^\s,]+/g);return this.filters.filter(function(a){return-1!==c.indexOf(a.name)},this)},g.prototype._render=function(){c.$$phase||c.$apply()},g.prototype._folderFilter=function(a){return!(!a.size&&!a.type)},g.prototype._queueLimitFilter=function(){return this.queue.length<this.queueLimit},g.prototype._isValidFile=function(a,b,c){return this._failFilterIndex=-1,b.length?b.every(function(b){return this._failFilterIndex++,b.fn.call(this,a,c)},this):!0},g.prototype._isSuccessCode=function(a){return a>=200&&300>a||304===a},g.prototype._transformResponse=function(b,c){var e=this._headersGetter(c);return a.forEach(d.defaults.transformResponse,function(a){b=a(b,e)}),b},g.prototype._parseHeaders=function(b){var c,d,e,f={};return b?(a.forEach(b.split("\n"),function(a){e=a.indexOf(":"),c=a.slice(0,e).trim().toLowerCase(),d=a.slice(e+1).trim(),c&&(f[c]=f[c]?f[c]+", "+d:d)}),f):f},g.prototype._headersGetter=function(a){return function(b){return b?a[b.toLowerCase()]||null:a}},g.prototype._xhrTransport=function(b){var c=b._xhr=new XMLHttpRequest,d=new FormData,e=this;e._onBeforeUploadItem(b),a.forEach(b.formData,function(b){a.forEach(b,function(a,b){d.append(b,a)})}),d.append(b.alias,b._file,b.file.name),c.upload.onprogress=function(a){var c=Math.round(a.lengthComputable?100*a.loaded/a.total:0);e._onProgressItem(b,c)},c.onload=function(){var a=e._parseHeaders(c.getAllResponseHeaders()),d=e._transformResponse(c.response,a),f=e._isSuccessCode(c.status)?"Success":"Error",g="_on"+f+"Item";e[g](b,d,c.status,a),e._onCompleteItem(b,d,c.status,a)},c.onerror=function(){var a=e._parseHeaders(c.getAllResponseHeaders()),d=e._transformResponse(c.response,a);e._onErrorItem(b,d,c.status,a),e._onCompleteItem(b,d,c.status,a)},c.onabort=function(){var a=e._parseHeaders(c.getAllResponseHeaders()),d=e._transformResponse(c.response,a);e._onCancelItem(b,d,c.status,a),e._onCompleteItem(b,d,c.status,a)},c.open(b.method,b.url,!0),c.withCredentials=b.withCredentials,a.forEach(b.headers,function(a,b){c.setRequestHeader(b,a)}),c.send(d),this._render()},g.prototype._iframeTransport=function(b){var c=a.element('<form style="display: none;" />'),d=a.element('<iframe name="iframeTransport'+Date.now()+'">'),e=b._input,f=this;b._form&&b._form.replaceWith(e),b._form=c,f._onBeforeUploadItem(b),e.prop("name",b.alias),a.forEach(b.formData,function(b){a.forEach(b,function(b,d){var e=a.element('<input type="hidden" name="'+d+'" />');e.val(b),c.append(e)})}),c.prop({action:b.url,method:"POST",target:d.prop("name"),enctype:"multipart/form-data",encoding:"multipart/form-data"}),d.bind("load",function(){try{var a=d[0].contentDocument.body.innerHTML}catch(c){}var e={response:a,status:200,dummy:!0},g={},h=f._transformResponse(e.response,g);f._onSuccessItem(b,h,e.status,g),f._onCompleteItem(b,h,e.status,g)}),c.abort=function(){var a,g={status:0,dummy:!0},h={};d.unbind("load").prop("src","javascript:false;"),c.replaceWith(e),f._onCancelItem(b,a,g.status,h),f._onCompleteItem(b,a,g.status,h)},e.after(c),c.append(e).append(d),c[0].submit(),this._render()},g.prototype._onWhenAddingFileFailed=function(a,b,c){this.onWhenAddingFileFailed(a,b,c)},g.prototype._onAfterAddingFile=function(a){this.onAfterAddingFile(a)},g.prototype._onAfterAddingAll=function(a){this.onAfterAddingAll(a)},g.prototype._onBeforeUploadItem=function(a){a._onBeforeUpload(),this.onBeforeUploadItem(a)},g.prototype._onProgressItem=function(a,b){var c=this._getTotalProgress(b);this.progress=c,a._onProgress(b),this.onProgressItem(a,b),this.onProgressAll(c),this._render()},g.prototype._onSuccessItem=function(a,b,c,d){a._onSuccess(b,c,d),this.onSuccessItem(a,b,c,d)},g.prototype._onErrorItem=function(a,b,c,d){a._onError(b,c,d),this.onErrorItem(a,b,c,d)},g.prototype._onCancelItem=function(a,b,c,d){a._onCancel(b,c,d),this.onCancelItem(a,b,c,d)},g.prototype._onCompleteItem=function(b,c,d,e){b._onComplete(c,d,e),this.onCompleteItem(b,c,d,e);var f=this.getReadyItems()[0];return this.isUploading=!1,a.isDefined(f)?(f.upload(),void 0):(this.onCompleteAll(),this.progress=this._getTotalProgress(),this._render(),void 0)},g.isFile=g.prototype.isFile,g.isFileLikeObject=g.prototype.isFileLikeObject,g.isArrayLikeObject=g.prototype.isArrayLikeObject,g.isHTML5=g.prototype.isHTML5,g.inherit=function(a,b){a.prototype=Object.create(b.prototype),a.prototype.constructor=a,a.super_=b},g.FileLikeObject=h,g.FileItem=i,g.FileDirective=j,g.FileSelect=k,g.FileDrop=l,g.FileOver=m,h.prototype._createFromFakePath=function(a){this.lastModifiedDate=null,this.size=null,this.type="like/"+a.slice(a.lastIndexOf(".")+1).toLowerCase(),this.name=a.slice(a.lastIndexOf("/")+a.lastIndexOf("\\")+2)},h.prototype._createFromObject=function(b){this.lastModifiedDate=a.copy(b.lastModifiedDate),this.size=b.size,this.type=b.type,this.name=b.name},i.prototype.upload=function(){this.uploader.uploadItem(this)},i.prototype.cancel=function(){this.uploader.cancelItem(this)},i.prototype.remove=function(){this.uploader.removeFromQueue(this)},i.prototype.onBeforeUpload=function(){},i.prototype.onProgress=function(){},i.prototype.onSuccess=function(){},i.prototype.onError=function(){},i.prototype.onCancel=function(){},i.prototype.onComplete=function(){},i.prototype._onBeforeUpload=function(){this.isReady=!0,this.isUploading=!0,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!1,this.isError=!1,this.progress=0,this.onBeforeUpload()},i.prototype._onProgress=function(a){this.progress=a,this.onProgress(a)},i.prototype._onSuccess=function(a,b,c){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!0,this.isCancel=!1,this.isError=!1,this.progress=100,this.index=null,this.onSuccess(a,b,c)},i.prototype._onError=function(a,b,c){this.isReady=!1,this.isUploading=!1,this.isUploaded=!0,this.isSuccess=!1,this.isCancel=!1,this.isError=!0,this.progress=0,this.index=null,this.onError(a,b,c)},i.prototype._onCancel=function(a,b,c){this.isReady=!1,this.isUploading=!1,this.isUploaded=!1,this.isSuccess=!1,this.isCancel=!0,this.isError=!1,this.progress=0,this.index=null,this.onCancel(a,b,c)},i.prototype._onComplete=function(a,b,c){this.onComplete(a,b,c),this.removeAfterUpload&&this.remove()},i.prototype._destroy=function(){this._input&&this._input.remove(),this._form&&this._form.remove(),delete this._form,delete this._input},i.prototype._prepareToUploading=function(){this.index=this.index||++this.uploader._nextIndex,this.isReady=!0},i.prototype._replaceNode=function(a){var b=f(a.clone())(a.scope());b.prop("value",null),a.css("display","none"),a.after(b)},j.prototype.events={},j.prototype.bind=function(){for(var a in this.events){var b=this.events[a];this.element.bind(a,this[b])}},j.prototype.unbind=function(){for(var a in this.events)this.element.unbind(a,this.events[a])},j.prototype.destroy=function(){var a=this.uploader._directives[this.prop].indexOf(this);this.uploader._directives[this.prop].splice(a,1),this.unbind()},j.prototype._saveLinks=function(){for(var a in this.events){var b=this.events[a];this[b]=this[b].bind(this)}},g.inherit(k,j),k.prototype.events={$destroy:"destroy",change:"onChange"},k.prototype.prop="select",k.prototype.getOptions=function(){},k.prototype.getFilters=function(){},k.prototype.isEmptyAfterSelection=function(){return!!this.element.attr("multiple")},k.prototype.onChange=function(){var a=this.uploader.isHTML5?this.element[0].files:this.element[0],b=this.getOptions(),c=this.getFilters();this.uploader.isHTML5||this.destroy(),this.uploader.addToQueue(a,b,c),this.isEmptyAfterSelection()&&this.element.prop("value",null)},g.inherit(l,j),l.prototype.events={$destroy:"destroy",drop:"onDrop",dragover:"onDragOver",dragleave:"onDragLeave"},l.prototype.prop="drop",l.prototype.getOptions=function(){},l.prototype.getFilters=function(){},l.prototype.onDrop=function(b){var c=this._getTransfer(b);if(c){var d=this.getOptions(),e=this.getFilters();this._preventAndStop(b),a.forEach(this.uploader._directives.over,this._removeOverClass,this),this.uploader.addToQueue(c.files,d,e)}},l.prototype.onDragOver=function(b){var c=this._getTransfer(b);this._haveFiles(c.types)&&(c.dropEffect="copy",this._preventAndStop(b),a.forEach(this.uploader._directives.over,this._addOverClass,this))},l.prototype.onDragLeave=function(b){b.currentTarget===this.element[0]&&(this._preventAndStop(b),a.forEach(this.uploader._directives.over,this._removeOverClass,this))},l.prototype._getTransfer=function(a){return a.dataTransfer?a.dataTransfer:a.originalEvent.dataTransfer},l.prototype._preventAndStop=function(a){a.preventDefault(),a.stopPropagation()},l.prototype._haveFiles=function(a){return a?a.indexOf?-1!==a.indexOf("Files"):a.contains?a.contains("Files"):!1:!1},l.prototype._addOverClass=function(a){a.addOverClass()},l.prototype._removeOverClass=function(a){a.removeOverClass()},g.inherit(m,j),m.prototype.events={$destroy:"destroy"},m.prototype.prop="over",m.prototype.overClass="nv-file-over",m.prototype.addOverClass=function(){this.element.addClass(this.getOverClass())},m.prototype.removeOverClass=function(){this.element.removeClass(this.getOverClass())},m.prototype.getOverClass=function(){return this.overClass},g}]).directive("nvFileSelect",["$parse","FileUploader",function(a,b){return{link:function(c,d,e){var f=c.$eval(e.uploader);if(!(f instanceof b))throw new TypeError('"Uploader" must be an instance of FileUploader');var g=new b.FileSelect({uploader:f,element:d});g.getOptions=a(e.options).bind(g,c),g.getFilters=function(){return e.filters}}}}]).directive("nvFileDrop",["$parse","FileUploader",function(a,b){return{link:function(c,d,e){var f=c.$eval(e.uploader);if(!(f instanceof b))throw new TypeError('"Uploader" must be an instance of FileUploader');if(f.isHTML5){var g=new b.FileDrop({uploader:f,element:d});g.getOptions=a(e.options).bind(g,c),g.getFilters=function(){return e.filters}}}}}]).directive("nvFileOver",["FileUploader",function(a){return{link:function(b,c,d){var e=b.$eval(d.uploader);if(!(e instanceof a))throw new TypeError('"Uploader" must be an instance of FileUploader');var f=new a.FileOver({uploader:e,element:c});f.getOverClass=function(){return d.overClass||this.overClass}}}}]),b});
//# sourceMappingURL=angular-file-upload.min.map

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet