{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///angular-file-upload.min.js","webpack:///webpack/bootstrap 5b9b3b97b7738c0867db?dbc1","webpack:///./src/index.js?9552","webpack:///./src/config.json?1c25","webpack:///./src/values/options.js?b00e","webpack:///./src/services/FileUploader.js?148d","webpack:///./src/services/FileLikeObject.js?b90b","webpack:///./src/services/FileItem.js?e529","webpack:///./src/services/FileDirective.js?4dd3","webpack:///./src/services/FileSelect.js?5a11","webpack:///./src/services/Pipeline.js?322f","webpack:///./src/services/FileDrop.js?e446","webpack:///./src/services/FileOver.js?26c9","webpack:///./src/directives/FileSelect.js?8405","webpack:///./src/directives/FileDrop.js?82da","webpack:///./src/directives/FileOver.js?6161"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_config","_config2","_options","_options2","_FileUploader","_FileUploader2","_FileLikeObject","_FileLikeObject2","_FileItem","_FileItem2","_FileDirective","_FileDirective2","_FileSelect","_FileSelect2","_Pipeline","_Pipeline2","_FileDrop","_FileDrop2","_FileOver","_FileOver2","_FileSelect3","_FileSelect4","_FileDrop3","_FileDrop4","_FileOver3","_FileOver4","angular","name","value","directive","run","FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","Pipeline","Object","defineProperty","url","alias","headers","queue","progress","autoUpload","removeAfterUpload","method","filters","formData","queueLimit","Number","MAX_VALUE","withCredentials","disableMultipart","_classCallCheck","instance","Constructor","TypeError","__identity","fileUploaderOptions","$rootScope","$http","$window","$timeout","File","FormData","options","settings","copy","extend","isUploading","_nextIndex","_directives","select","drop","over","unshift","fn","_queueLimitFilter","_folderFilter","prototype","addToQueue","files","_this","incomingQueue","isArrayLikeObject","Array","slice","arrayOfFilters","_getFilters","count","length","addedFileItems","next","something","shift","isUndefined","done","fileLikeObject","isFile","pipes","_convertFiltersToPipes","pipeline","onThrown","err","originalFilter","pipe","_err$args","_slicedToArray","args","_onWhenAddingFileFailed","onSuccessful","fileItem","push","_onAfterAddingFile","exec","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","removeFromQueue","index","getIndexOfItem","item","cancel","splice","_destroy","clearQueue","remove","uploadItem","transport","isHTML5","_prepareToUploading","_onBeforeUploadItem","isCancel","cancelItem","_this2","prop","abort","dummy","undefined","onNextTick","_onCancelItem","apply","concat","_onCompleteItem","items","getNotUploadedItems","filter","forEach","upload","cancelAll","constructor","isFileLikeObject","isNumber","indexOf","isUploaded","getReadyItems","isReady","sort","item1","item2","destroy","_this3","key","object","onAfterAddingAll","fileItems","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","response","status","onErrorItem","onCancelItem","onCompleteItem","onCompleteAll","notUploaded","uploaded","ratio","current","Math","round","isArray","names","match","_this4","map","bind","isAsync","$$phase","$apply","size","type","_isSuccessCode","_transformResponse","headersGetter","_headersGetter","defaults","transformResponse","transformFn","_parseHeaders","val","i","parsed","split","line","trim","toLowerCase","parsedHeaders","_xhrTransport","sendable","_this5","xhr","_xhr","XMLHttpRequest","_file","append","file","onprogress","event","lengthComputable","total","_onProgressItem","onload","getAllResponseHeaders","gist","onerror","_onErrorItem","onabort","open","setRequestHeader","send","_iframeTransport","_this6","form","element","iframe","Date","now","input","_input","_form","replaceWith","element_","action","target","enctype","encoding","html","contentDocument","body","innerHTML","e","_onSuccessItem","unbind","after","submit","_onBeforeUpload","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","nextItem","isDefined","isObject","inherit","source","create","super_","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","Symbol","iterator","_angular","$inject","fileOrInput","isInput","isElement","fakePathOrObject","postfix","isString","_createFromFakePath","path","lastModifiedDate","lastIndexOf","_createFromObject","$compile","uploader","some","isSuccess","isError","_replaceNode","message","code","onBeforeUpload","onProgress","onSuccess","onError","onCancel","onComplete","clone","scope","css","_saveLinks","events","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","enumerable","writable","configurable","setPrototypeOf","__proto__","extendedOptions","$destroy","change","removeAttr","getOptions","getFilters","isEmptyAfterSelection","attr","onChange","_toConsumableArray","arr2","from","$q","arguments","Error","deferred","defer","onFulfilled","onRejected","promise","then","isDone","Boolean","_len","_key","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","$parse","link","attributes","$eval"],"mappings":"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","file":"angular-file-upload.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-file-upload\"] = factory();\n\telse\n\t\troot[\"angular-file-upload\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-file-upload\"] = factory();\n\telse\n\t\troot[\"angular-file-upload\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tvar _options = __webpack_require__(2);\n\t\n\tvar _options2 = _interopRequireDefault(_options);\n\t\n\tvar _FileUploader = __webpack_require__(3);\n\t\n\tvar _FileUploader2 = _interopRequireDefault(_FileUploader);\n\t\n\tvar _FileLikeObject = __webpack_require__(4);\n\t\n\tvar _FileLikeObject2 = _interopRequireDefault(_FileLikeObject);\n\t\n\tvar _FileItem = __webpack_require__(5);\n\t\n\tvar _FileItem2 = _interopRequireDefault(_FileItem);\n\t\n\tvar _FileDirective = __webpack_require__(6);\n\t\n\tvar _FileDirective2 = _interopRequireDefault(_FileDirective);\n\t\n\tvar _FileSelect = __webpack_require__(7);\n\t\n\tvar _FileSelect2 = _interopRequireDefault(_FileSelect);\n\t\n\tvar _Pipeline = __webpack_require__(8);\n\t\n\tvar _Pipeline2 = _interopRequireDefault(_Pipeline);\n\t\n\tvar _FileDrop = __webpack_require__(9);\n\t\n\tvar _FileDrop2 = _interopRequireDefault(_FileDrop);\n\t\n\tvar _FileOver = __webpack_require__(10);\n\t\n\tvar _FileOver2 = _interopRequireDefault(_FileOver);\n\t\n\tvar _FileSelect3 = __webpack_require__(11);\n\t\n\tvar _FileSelect4 = _interopRequireDefault(_FileSelect3);\n\t\n\tvar _FileDrop3 = __webpack_require__(12);\n\t\n\tvar _FileDrop4 = _interopRequireDefault(_FileDrop3);\n\t\n\tvar _FileOver3 = __webpack_require__(13);\n\t\n\tvar _FileOver4 = _interopRequireDefault(_FileOver3);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tangular.module(_config2.default.name, []).value('fileUploaderOptions', _options2.default).factory('FileUploader', _FileUploader2.default).factory('FileLikeObject', _FileLikeObject2.default).factory('FileItem', _FileItem2.default).factory('FileDirective', _FileDirective2.default).factory('FileSelect', _FileSelect2.default).factory('FileDrop', _FileDrop2.default).factory('FileOver', _FileOver2.default).factory('Pipeline', _Pipeline2.default).directive('nvFileSelect', _FileSelect4.default).directive('nvFileDrop', _FileDrop4.default).directive('nvFileOver', _FileOver4.default).run(['FileUploader', 'FileLikeObject', 'FileItem', 'FileDirective', 'FileSelect', 'FileDrop', 'FileOver', 'Pipeline', function (FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver, Pipeline) {\n\t    // only for compatibility\n\t    FileUploader.FileLikeObject = FileLikeObject;\n\t    FileUploader.FileItem = FileItem;\n\t    FileUploader.FileDirective = FileDirective;\n\t    FileUploader.FileSelect = FileSelect;\n\t    FileUploader.FileDrop = FileDrop;\n\t    FileUploader.FileOver = FileOver;\n\t    FileUploader.Pipeline = Pipeline;\n\t}]);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\tmodule.exports = {\n\t\t\"name\": \"angularFileUpload\"\n\t};\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = {\n\t    url: '/',\n\t    alias: 'file',\n\t    headers: {},\n\t    queue: [],\n\t    progress: 0,\n\t    autoUpload: false,\n\t    removeAfterUpload: false,\n\t    method: 'POST',\n\t    filters: [],\n\t    formData: [],\n\t    queueLimit: Number.MAX_VALUE,\n\t    withCredentials: false,\n\t    disableMultipart: false\n\t};\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar _angular = angular;\n\tvar bind = _angular.bind;\n\tvar copy = _angular.copy;\n\tvar extend = _angular.extend;\n\tvar forEach = _angular.forEach;\n\tvar isObject = _angular.isObject;\n\tvar isNumber = _angular.isNumber;\n\tvar isDefined = _angular.isDefined;\n\tvar isArray = _angular.isArray;\n\tvar isUndefined = _angular.isUndefined;\n\tvar element = _angular.element;\n\tfunction __identity(fileUploaderOptions, $rootScope, $http, $window, $timeout, FileLikeObject, FileItem, Pipeline) {\n\t    var File = $window.File;\n\t    var FormData = $window.FormData;\n\t\n\t    var FileUploader = function () {\n\t        /**********************\n\t         * PUBLIC\n\t         **********************/\n\t        /**\n\t         * Creates an instance of FileUploader\n\t         * @param {Object} [options]\n\t         * @constructor\n\t         */\n\t\n\t        function FileUploader(options) {\n\t            _classCallCheck(this, FileUploader);\n\t\n\t            var settings = copy(fileUploaderOptions);\n\t\n\t            extend(this, settings, options, {\n\t                isUploading: false,\n\t                _nextIndex: 0,\n\t                _directives: { select: [], drop: [], over: [] }\n\t            });\n\t\n\t            // add default filters\n\t            this.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n\t            this.filters.unshift({ name: 'folder', fn: this._folderFilter });\n\t        }\n\t        /**\n\t         * Adds items to the queue\n\t         * @param {File|HTMLInputElement|Object|FileList|Array<Object>} files\n\t         * @param {Object} [options]\n\t         * @param {Array<Function>|String} filters\n\t         */\n\t\n\t\n\t        FileUploader.prototype.addToQueue = function addToQueue(files, options, filters) {\n\t            var _this = this;\n\t\n\t            var incomingQueue = this.isArrayLikeObject(files) ? Array.prototype.slice.call(files) : [files];\n\t            var arrayOfFilters = this._getFilters(filters);\n\t            var count = this.queue.length;\n\t            var addedFileItems = [];\n\t\n\t            var next = function next() {\n\t                var something = incomingQueue.shift();\n\t\n\t                if (isUndefined(something)) {\n\t                    return done();\n\t                }\n\t\n\t                var fileLikeObject = _this.isFile(something) ? something : new FileLikeObject(something);\n\t                var pipes = _this._convertFiltersToPipes(arrayOfFilters);\n\t                var pipeline = new Pipeline(pipes);\n\t                var onThrown = function onThrown(err) {\n\t                    var originalFilter = err.pipe.originalFilter;\n\t\n\t                    var _err$args = _slicedToArray(err.args, 2);\n\t\n\t                    var fileLikeObject = _err$args[0];\n\t                    var options = _err$args[1];\n\t\n\t                    _this._onWhenAddingFileFailed(fileLikeObject, originalFilter, options);\n\t                    next();\n\t                };\n\t                var onSuccessful = function onSuccessful(fileLikeObject, options) {\n\t                    var fileItem = new FileItem(_this, fileLikeObject, options);\n\t                    addedFileItems.push(fileItem);\n\t                    _this.queue.push(fileItem);\n\t                    _this._onAfterAddingFile(fileItem);\n\t                    next();\n\t                };\n\t                pipeline.onThrown = onThrown;\n\t                pipeline.onSuccessful = onSuccessful;\n\t                pipeline.exec(fileLikeObject, options);\n\t            };\n\t\n\t            var done = function done() {\n\t                if (_this.queue.length !== count) {\n\t                    _this._onAfterAddingAll(addedFileItems);\n\t                    _this.progress = _this._getTotalProgress();\n\t                }\n\t\n\t                _this._render();\n\t                if (_this.autoUpload) _this.uploadAll();\n\t            };\n\t\n\t            next();\n\t        };\n\t        /**\n\t         * Remove items from the queue. Remove last: index = -1\n\t         * @param {FileItem|Number} value\n\t         */\n\t\n\t\n\t        FileUploader.prototype.removeFromQueue = function removeFromQueue(value) {\n\t            var index = this.getIndexOfItem(value);\n\t            var item = this.queue[index];\n\t            if (item.isUploading) item.cancel();\n\t            this.queue.splice(index, 1);\n\t            item._destroy();\n\t            this.progress = this._getTotalProgress();\n\t        };\n\t        /**\n\t         * Clears the queue\n\t         */\n\t\n\t\n\t        FileUploader.prototype.clearQueue = function clearQueue() {\n\t            while (this.queue.length) {\n\t                this.queue[0].remove();\n\t            }\n\t            this.progress = 0;\n\t        };\n\t        /**\n\t         * Uploads a item from the queue\n\t         * @param {FileItem|Number} value\n\t         */\n\t\n\t\n\t        FileUploader.prototype.uploadItem = function uploadItem(value) {\n\t            var index = this.getIndexOfItem(value);\n\t            var item = this.queue[index];\n\t            var transport = this.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n\t\n\t            item._prepareToUploading();\n\t            if (this.isUploading) return;\n\t\n\t            this._onBeforeUploadItem(item);\n\t            if (item.isCancel) return;\n\t\n\t            item.isUploading = true;\n\t            this.isUploading = true;\n\t            this[transport](item);\n\t            this._render();\n\t        };\n\t        /**\n\t         * Cancels uploading of item from the queue\n\t         * @param {FileItem|Number} value\n\t         */\n\t\n\t\n\t        FileUploader.prototype.cancelItem = function cancelItem(value) {\n\t            var _this2 = this;\n\t\n\t            var index = this.getIndexOfItem(value);\n\t            var item = this.queue[index];\n\t            var prop = this.isHTML5 ? '_xhr' : '_form';\n\t            if (!item) return;\n\t            item.isCancel = true;\n\t            if (item.isUploading) {\n\t                // It will call this._onCancelItem() & this._onCompleteItem() asynchronously\n\t                item[prop].abort();\n\t            } else {\n\t                (function () {\n\t                    var dummy = [undefined, 0, {}];\n\t                    var onNextTick = function onNextTick() {\n\t                        _this2._onCancelItem.apply(_this2, [item].concat(dummy));\n\t                        _this2._onCompleteItem.apply(_this2, [item].concat(dummy));\n\t                    };\n\t                    $timeout(onNextTick); // Trigger callbacks asynchronously (setImmediate emulation)\n\t                })();\n\t            }\n\t        };\n\t        /**\n\t         * Uploads all not uploaded items of queue\n\t         */\n\t\n\t\n\t        FileUploader.prototype.uploadAll = function uploadAll() {\n\t            var items = this.getNotUploadedItems().filter(function (item) {\n\t                return !item.isUploading;\n\t            });\n\t            if (!items.length) return;\n\t\n\t            forEach(items, function (item) {\n\t                return item._prepareToUploading();\n\t            });\n\t            items[0].upload();\n\t        };\n\t        /**\n\t         * Cancels all uploads\n\t         */\n\t\n\t\n\t        FileUploader.prototype.cancelAll = function cancelAll() {\n\t            var items = this.getNotUploadedItems();\n\t            forEach(items, function (item) {\n\t                return item.cancel();\n\t            });\n\t        };\n\t        /**\n\t         * Returns \"true\" if value an instance of File\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype.isFile = function isFile(value) {\n\t            return this.constructor.isFile(value);\n\t        };\n\t        /**\n\t         * Returns \"true\" if value an instance of FileLikeObject\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype.isFileLikeObject = function isFileLikeObject(value) {\n\t            return this.constructor.isFileLikeObject(value);\n\t        };\n\t        /**\n\t         * Returns \"true\" if value is array like object\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         */\n\t\n\t\n\t        FileUploader.prototype.isArrayLikeObject = function isArrayLikeObject(value) {\n\t            return this.constructor.isArrayLikeObject(value);\n\t        };\n\t        /**\n\t         * Returns a index of item from the queue\n\t         * @param {Item|Number} value\n\t         * @returns {Number}\n\t         */\n\t\n\t\n\t        FileUploader.prototype.getIndexOfItem = function getIndexOfItem(value) {\n\t            return isNumber(value) ? value : this.queue.indexOf(value);\n\t        };\n\t        /**\n\t         * Returns not uploaded items\n\t         * @returns {Array}\n\t         */\n\t\n\t\n\t        FileUploader.prototype.getNotUploadedItems = function getNotUploadedItems() {\n\t            return this.queue.filter(function (item) {\n\t                return !item.isUploaded;\n\t            });\n\t        };\n\t        /**\n\t         * Returns items ready for upload\n\t         * @returns {Array}\n\t         */\n\t\n\t\n\t        FileUploader.prototype.getReadyItems = function getReadyItems() {\n\t            return this.queue.filter(function (item) {\n\t                return item.isReady && !item.isUploading;\n\t            }).sort(function (item1, item2) {\n\t                return item1.index - item2.index;\n\t            });\n\t        };\n\t        /**\n\t         * Destroys instance of FileUploader\n\t         */\n\t\n\t\n\t        FileUploader.prototype.destroy = function destroy() {\n\t            var _this3 = this;\n\t\n\t            forEach(this._directives, function (key) {\n\t                forEach(_this3._directives[key], function (object) {\n\t                    object.destroy();\n\t                });\n\t            });\n\t        };\n\t        /**\n\t         * Callback\n\t         * @param {Array} fileItems\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onAfterAddingAll = function onAfterAddingAll(fileItems) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} fileItem\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onAfterAddingFile = function onAfterAddingFile(fileItem) {};\n\t        /**\n\t         * Callback\n\t         * @param {File|Object} item\n\t         * @param {Object} filter\n\t         * @param {Object} options\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onWhenAddingFileFailed = function onWhenAddingFileFailed(item, filter, options) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} fileItem\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onBeforeUploadItem = function onBeforeUploadItem(fileItem) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} fileItem\n\t         * @param {Number} progress\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onProgressItem = function onProgressItem(fileItem, progress) {};\n\t        /**\n\t         * Callback\n\t         * @param {Number} progress\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onProgressAll = function onProgressAll(progress) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onSuccessItem = function onSuccessItem(item, response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onErrorItem = function onErrorItem(item, response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onCancelItem = function onCancelItem(item, response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onCompleteItem = function onCompleteItem(item, response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         */\n\t\n\t\n\t        FileUploader.prototype.onCompleteAll = function onCompleteAll() {};\n\t        /**********************\n\t         * PRIVATE\n\t         **********************/\n\t        /**\n\t         * Returns the total progress\n\t         * @param {Number} [value]\n\t         * @returns {Number}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._getTotalProgress = function _getTotalProgress(value) {\n\t            if (this.removeAfterUpload) return value || 0;\n\t\n\t            var notUploaded = this.getNotUploadedItems().length;\n\t            var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n\t            var ratio = 100 / this.queue.length;\n\t            var current = (value || 0) * ratio / 100;\n\t\n\t            return Math.round(uploaded * ratio + current);\n\t        };\n\t        /**\n\t         * Returns array of filters\n\t         * @param {Array<Function>|String} filters\n\t         * @returns {Array<Function>}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._getFilters = function _getFilters(filters) {\n\t            if (!filters) return this.filters;\n\t            if (isArray(filters)) return filters;\n\t            var names = filters.match(/[^\\s,]+/g);\n\t            return this.filters.filter(function (filter) {\n\t                return names.indexOf(filter.name) !== -1;\n\t            });\n\t        };\n\t        /**\n\t        * @param {Array<Function>} filters\n\t        * @returns {Array<Function>}\n\t        * @private\n\t        */\n\t\n\t\n\t        FileUploader.prototype._convertFiltersToPipes = function _convertFiltersToPipes(filters) {\n\t            var _this4 = this;\n\t\n\t            return filters.map(function (filter) {\n\t                var fn = bind(_this4, filter.fn);\n\t                fn.isAsync = filter.fn.length === 3;\n\t                fn.originalFilter = filter;\n\t                return fn;\n\t            });\n\t        };\n\t        /**\n\t         * Updates html\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._render = function _render() {\n\t            if (!$rootScope.$$phase) $rootScope.$apply();\n\t        };\n\t        /**\n\t         * Returns \"true\" if item is a file (not folder)\n\t         * @param {File|FileLikeObject} item\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._folderFilter = function _folderFilter(item) {\n\t            return !!(item.size || item.type);\n\t        };\n\t        /**\n\t         * Returns \"true\" if the limit has not been reached\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._queueLimitFilter = function _queueLimitFilter() {\n\t            return this.queue.length < this.queueLimit;\n\t        };\n\t        /**\n\t         * Checks whether upload successful\n\t         * @param {Number} status\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._isSuccessCode = function _isSuccessCode(status) {\n\t            return status >= 200 && status < 300 || status === 304;\n\t        };\n\t        /**\n\t         * Transforms the server response\n\t         * @param {*} response\n\t         * @param {Object} headers\n\t         * @returns {*}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._transformResponse = function _transformResponse(response, headers) {\n\t            var headersGetter = this._headersGetter(headers);\n\t            forEach($http.defaults.transformResponse, function (transformFn) {\n\t                response = transformFn(response, headersGetter);\n\t            });\n\t            return response;\n\t        };\n\t        /**\n\t         * Parsed response headers\n\t         * @param headers\n\t         * @returns {Object}\n\t         * @see https://github.com/angular/angular.js/blob/master/src/ng/http.js\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._parseHeaders = function _parseHeaders(headers) {\n\t            var parsed = {},\n\t                key,\n\t                val,\n\t                i;\n\t\n\t            if (!headers) return parsed;\n\t\n\t            forEach(headers.split('\\n'), function (line) {\n\t                i = line.indexOf(':');\n\t                key = line.slice(0, i).trim().toLowerCase();\n\t                val = line.slice(i + 1).trim();\n\t\n\t                if (key) {\n\t                    parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n\t                }\n\t            });\n\t\n\t            return parsed;\n\t        };\n\t        /**\n\t         * Returns function that returns headers\n\t         * @param {Object} parsedHeaders\n\t         * @returns {Function}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._headersGetter = function _headersGetter(parsedHeaders) {\n\t            return function (name) {\n\t                if (name) {\n\t                    return parsedHeaders[name.toLowerCase()] || null;\n\t                }\n\t                return parsedHeaders;\n\t            };\n\t        };\n\t        /**\n\t         * The XMLHttpRequest transport\n\t         * @param {FileItem} item\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._xhrTransport = function _xhrTransport(item) {\n\t            var _this5 = this;\n\t\n\t            var xhr = item._xhr = new XMLHttpRequest();\n\t            var sendable;\n\t\n\t            if (!item.disableMultipart) {\n\t                sendable = new FormData();\n\t                forEach(item.formData, function (obj) {\n\t                    forEach(obj, function (value, key) {\n\t                        sendable.append(key, value);\n\t                    });\n\t                });\n\t\n\t                sendable.append(item.alias, item._file, item.file.name);\n\t            } else {\n\t                sendable = item._file;\n\t            }\n\t\n\t            if (typeof item._file.size != 'number') {\n\t                throw new TypeError('The file specified is no longer valid');\n\t            }\n\t\n\t            xhr.upload.onprogress = function (event) {\n\t                var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n\t                _this5._onProgressItem(item, progress);\n\t            };\n\t\n\t            xhr.onload = function () {\n\t                var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());\n\t                var response = _this5._transformResponse(xhr.response, headers);\n\t                var gist = _this5._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n\t                var method = '_on' + gist + 'Item';\n\t                _this5[method](item, response, xhr.status, headers);\n\t                _this5._onCompleteItem(item, response, xhr.status, headers);\n\t            };\n\t\n\t            xhr.onerror = function () {\n\t                var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());\n\t                var response = _this5._transformResponse(xhr.response, headers);\n\t                _this5._onErrorItem(item, response, xhr.status, headers);\n\t                _this5._onCompleteItem(item, response, xhr.status, headers);\n\t            };\n\t\n\t            xhr.onabort = function () {\n\t                var headers = _this5._parseHeaders(xhr.getAllResponseHeaders());\n\t                var response = _this5._transformResponse(xhr.response, headers);\n\t                _this5._onCancelItem(item, response, xhr.status, headers);\n\t                _this5._onCompleteItem(item, response, xhr.status, headers);\n\t            };\n\t\n\t            xhr.open(item.method, item.url, true);\n\t\n\t            xhr.withCredentials = item.withCredentials;\n\t\n\t            forEach(item.headers, function (value, name) {\n\t                xhr.setRequestHeader(name, value);\n\t            });\n\t\n\t            xhr.send(sendable);\n\t        };\n\t        /**\n\t         * The IFrame transport\n\t         * @param {FileItem} item\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._iframeTransport = function _iframeTransport(item) {\n\t            var _this6 = this;\n\t\n\t            var form = element('<form style=\"display: none;\" />');\n\t            var iframe = element('<iframe name=\"iframeTransport' + Date.now() + '\">');\n\t            var input = item._input;\n\t\n\t            if (item._form) item._form.replaceWith(input); // remove old form\n\t            item._form = form; // save link to new form\n\t\n\t            input.prop('name', item.alias);\n\t\n\t            forEach(item.formData, function (obj) {\n\t                forEach(obj, function (value, key) {\n\t                    var element_ = element('<input type=\"hidden\" name=\"' + key + '\" />');\n\t                    element_.val(value);\n\t                    form.append(element_);\n\t                });\n\t            });\n\t\n\t            form.prop({\n\t                action: item.url,\n\t                method: 'POST',\n\t                target: iframe.prop('name'),\n\t                enctype: 'multipart/form-data',\n\t                encoding: 'multipart/form-data' // old IE\n\t            });\n\t\n\t            iframe.bind('load', function () {\n\t                var html = '';\n\t                var status = 200;\n\t\n\t                try {\n\t                    // Fix for legacy IE browsers that loads internal error page\n\t                    // when failed WS response received. In consequence iframe\n\t                    // content access denied error is thrown becouse trying to\n\t                    // access cross domain page. When such thing occurs notifying\n\t                    // with empty response object. See more info at:\n\t                    // http://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object\n\t                    // Note that if non standard 4xx or 5xx error code returned\n\t                    // from WS then response content can be accessed without error\n\t                    // but 'XHR' status becomes 200. In order to avoid confusion\n\t                    // returning response via same 'success' event handler.\n\t\n\t                    // fixed angular.contents() for iframes\n\t                    html = iframe[0].contentDocument.body.innerHTML;\n\t                } catch (e) {\n\t                    // in case we run into the access-is-denied error or we have another error on the server side\n\t                    // (intentional 500,40... errors), we at least say 'something went wrong' -> 500\n\t                    status = 500;\n\t                }\n\t\n\t                var xhr = { response: html, status: status, dummy: true };\n\t                var headers = {};\n\t                var response = _this6._transformResponse(xhr.response, headers);\n\t\n\t                _this6._onSuccessItem(item, response, xhr.status, headers);\n\t                _this6._onCompleteItem(item, response, xhr.status, headers);\n\t            });\n\t\n\t            form.abort = function () {\n\t                var xhr = { status: 0, dummy: true };\n\t                var headers = {};\n\t                var response;\n\t\n\t                iframe.unbind('load').prop('src', 'javascript:false;');\n\t                form.replaceWith(input);\n\t\n\t                _this6._onCancelItem(item, response, xhr.status, headers);\n\t                _this6._onCompleteItem(item, response, xhr.status, headers);\n\t            };\n\t\n\t            input.after(form);\n\t            form.append(input).append(iframe);\n\t\n\t            form[0].submit();\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {File|Object} item\n\t         * @param {Object} filter\n\t         * @param {Object} options\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onWhenAddingFileFailed = function _onWhenAddingFileFailed(item, filter, options) {\n\t            this.onWhenAddingFileFailed(item, filter, options);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onAfterAddingFile = function _onAfterAddingFile(item) {\n\t            this.onAfterAddingFile(item);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {Array<FileItem>} items\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onAfterAddingAll = function _onAfterAddingAll(items) {\n\t            this.onAfterAddingAll(items);\n\t        };\n\t        /**\n\t         *  Inner callback\n\t         * @param {FileItem} item\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onBeforeUploadItem = function _onBeforeUploadItem(item) {\n\t            item._onBeforeUpload();\n\t            this.onBeforeUploadItem(item);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         * @param {Number} progress\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onProgressItem = function _onProgressItem(item, progress) {\n\t            var total = this._getTotalProgress(progress);\n\t            this.progress = total;\n\t            item._onProgress(progress);\n\t            this.onProgressItem(item, progress);\n\t            this.onProgressAll(total);\n\t            this._render();\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onSuccessItem = function _onSuccessItem(item, response, status, headers) {\n\t            item._onSuccess(response, status, headers);\n\t            this.onSuccessItem(item, response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onErrorItem = function _onErrorItem(item, response, status, headers) {\n\t            item._onError(response, status, headers);\n\t            this.onErrorItem(item, response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onCancelItem = function _onCancelItem(item, response, status, headers) {\n\t            item._onCancel(response, status, headers);\n\t            this.onCancelItem(item, response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {FileItem} item\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._onCompleteItem = function _onCompleteItem(item, response, status, headers) {\n\t            item._onComplete(response, status, headers);\n\t            this.onCompleteItem(item, response, status, headers);\n\t\n\t            var nextItem = this.getReadyItems()[0];\n\t            this.isUploading = false;\n\t\n\t            if (isDefined(nextItem)) {\n\t                nextItem.upload();\n\t                return;\n\t            }\n\t\n\t            this.onCompleteAll();\n\t            this.progress = this._getTotalProgress();\n\t            this._render();\n\t        };\n\t        /**********************\n\t         * STATIC\n\t         **********************/\n\t        /**\n\t         * Returns \"true\" if value an instance of File\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.isFile = function isFile(value) {\n\t            return File && value instanceof File;\n\t        };\n\t        /**\n\t         * Returns \"true\" if value an instance of FileLikeObject\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.isFileLikeObject = function isFileLikeObject(value) {\n\t            return value instanceof FileLikeObject;\n\t        };\n\t        /**\n\t         * Returns \"true\" if value is array like object\n\t         * @param {*} value\n\t         * @returns {Boolean}\n\t         */\n\t\n\t\n\t        FileUploader.isArrayLikeObject = function isArrayLikeObject(value) {\n\t            return isObject(value) && 'length' in value;\n\t        };\n\t        /**\n\t         * Inherits a target (Class_1) by a source (Class_2)\n\t         * @param {Function} target\n\t         * @param {Function} source\n\t         */\n\t\n\t\n\t        FileUploader.inherit = function inherit(target, source) {\n\t            target.prototype = Object.create(source.prototype);\n\t            target.prototype.constructor = target;\n\t            target.super_ = source;\n\t        };\n\t\n\t        return FileUploader;\n\t    }();\n\t\n\t    /**********************\n\t     * PUBLIC\n\t     **********************/\n\t    /**\n\t     * Checks a support the html5 uploader\n\t     * @returns {Boolean}\n\t     * @readonly\n\t     */\n\t\n\t\n\t    FileUploader.prototype.isHTML5 = !!(File && FormData);\n\t    /**********************\n\t     * STATIC\n\t     **********************/\n\t    /**\n\t     * @borrows FileUploader.prototype.isHTML5\n\t     */\n\t    FileUploader.isHTML5 = FileUploader.prototype.isHTML5;\n\t\n\t    return FileUploader;\n\t}\n\t\n\t__identity.$inject = ['fileUploaderOptions', '$rootScope', '$http', '$window', '$timeout', 'FileLikeObject', 'FileItem', 'Pipeline'];\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar _angular = angular;\n\tvar copy = _angular.copy;\n\tvar isElement = _angular.isElement;\n\tvar isString = _angular.isString;\n\tfunction __identity() {\n\t\n\t    return function () {\n\t        /**\n\t         * Creates an instance of FileLikeObject\n\t         * @param {File|HTMLInputElement|Object} fileOrInput\n\t         * @constructor\n\t         */\n\t\n\t        function FileLikeObject(fileOrInput) {\n\t            _classCallCheck(this, FileLikeObject);\n\t\n\t            var isInput = isElement(fileOrInput);\n\t            var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;\n\t            var postfix = isString(fakePathOrObject) ? 'FakePath' : 'Object';\n\t            var method = '_createFrom' + postfix;\n\t            this[method](fakePathOrObject);\n\t        }\n\t        /**\n\t         * Creates file like object from fake path string\n\t         * @param {String} path\n\t         * @private\n\t         */\n\t\n\t\n\t        FileLikeObject.prototype._createFromFakePath = function _createFromFakePath(path) {\n\t            this.lastModifiedDate = null;\n\t            this.size = null;\n\t            this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n\t            this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n\t        };\n\t        /**\n\t         * Creates file like object from object\n\t         * @param {File|FileLikeObject} object\n\t         * @private\n\t         */\n\t\n\t\n\t        FileLikeObject.prototype._createFromObject = function _createFromObject(object) {\n\t            this.lastModifiedDate = copy(object.lastModifiedDate);\n\t            this.size = object.size;\n\t            this.type = object.type;\n\t            this.name = object.name;\n\t        };\n\t\n\t        return FileLikeObject;\n\t    }();\n\t}\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar _angular = angular;\n\tvar copy = _angular.copy;\n\tvar extend = _angular.extend;\n\tvar element = _angular.element;\n\tvar isElement = _angular.isElement;\n\tfunction __identity($compile, FileLikeObject) {\n\t\n\t    return function () {\n\t        /**\n\t         * Creates an instance of FileItem\n\t         * @param {FileUploader} uploader\n\t         * @param {File|HTMLInputElement|Object} some\n\t         * @param {Object} options\n\t         * @constructor\n\t         */\n\t\n\t        function FileItem(uploader, some, options) {\n\t            _classCallCheck(this, FileItem);\n\t\n\t            var isInput = isElement(some);\n\t            var input = isInput ? element(some) : null;\n\t            var file = !isInput ? some : null;\n\t\n\t            extend(this, {\n\t                url: uploader.url,\n\t                alias: uploader.alias,\n\t                headers: copy(uploader.headers),\n\t                formData: copy(uploader.formData),\n\t                removeAfterUpload: uploader.removeAfterUpload,\n\t                withCredentials: uploader.withCredentials,\n\t                disableMultipart: uploader.disableMultipart,\n\t                method: uploader.method\n\t            }, options, {\n\t                uploader: uploader,\n\t                file: new FileLikeObject(some),\n\t                isReady: false,\n\t                isUploading: false,\n\t                isUploaded: false,\n\t                isSuccess: false,\n\t                isCancel: false,\n\t                isError: false,\n\t                progress: 0,\n\t                index: null,\n\t                _file: file,\n\t                _input: input\n\t            });\n\t\n\t            if (input) this._replaceNode(input);\n\t        }\n\t        /**********************\n\t         * PUBLIC\n\t         **********************/\n\t        /**\n\t         * Uploads a FileItem\n\t         */\n\t\n\t\n\t        FileItem.prototype.upload = function upload() {\n\t            try {\n\t                this.uploader.uploadItem(this);\n\t            } catch (e) {\n\t                var message = e.name + ':' + e.message;\n\t                this.uploader._onCompleteItem(this, message, e.code, []);\n\t                this.uploader._onErrorItem(this, message, e.code, []);\n\t            }\n\t        };\n\t        /**\n\t         * Cancels uploading of FileItem\n\t         */\n\t\n\t\n\t        FileItem.prototype.cancel = function cancel() {\n\t            this.uploader.cancelItem(this);\n\t        };\n\t        /**\n\t         * Removes a FileItem\n\t         */\n\t\n\t\n\t        FileItem.prototype.remove = function remove() {\n\t            this.uploader.removeFromQueue(this);\n\t        };\n\t        /**\n\t         * Callback\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype.onBeforeUpload = function onBeforeUpload() {};\n\t        /**\n\t         * Callback\n\t         * @param {Number} progress\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype.onProgress = function onProgress(progress) {};\n\t        /**\n\t         * Callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileItem.prototype.onSuccess = function onSuccess(response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileItem.prototype.onError = function onError(response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileItem.prototype.onCancel = function onCancel(response, status, headers) {};\n\t        /**\n\t         * Callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         */\n\t\n\t\n\t        FileItem.prototype.onComplete = function onComplete(response, status, headers) {};\n\t        /**********************\n\t         * PRIVATE\n\t         **********************/\n\t        /**\n\t         * Inner callback\n\t         */\n\t\n\t\n\t        FileItem.prototype._onBeforeUpload = function _onBeforeUpload() {\n\t            this.isReady = true;\n\t            this.isUploading = false;\n\t            this.isUploaded = false;\n\t            this.isSuccess = false;\n\t            this.isCancel = false;\n\t            this.isError = false;\n\t            this.progress = 0;\n\t            this.onBeforeUpload();\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {Number} progress\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._onProgress = function _onProgress(progress) {\n\t            this.progress = progress;\n\t            this.onProgress(progress);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._onSuccess = function _onSuccess(response, status, headers) {\n\t            this.isReady = false;\n\t            this.isUploading = false;\n\t            this.isUploaded = true;\n\t            this.isSuccess = true;\n\t            this.isCancel = false;\n\t            this.isError = false;\n\t            this.progress = 100;\n\t            this.index = null;\n\t            this.onSuccess(response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._onError = function _onError(response, status, headers) {\n\t            this.isReady = false;\n\t            this.isUploading = false;\n\t            this.isUploaded = true;\n\t            this.isSuccess = false;\n\t            this.isCancel = false;\n\t            this.isError = true;\n\t            this.progress = 0;\n\t            this.index = null;\n\t            this.onError(response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._onCancel = function _onCancel(response, status, headers) {\n\t            this.isReady = false;\n\t            this.isUploading = false;\n\t            this.isUploaded = false;\n\t            this.isSuccess = false;\n\t            this.isCancel = true;\n\t            this.isError = false;\n\t            this.progress = 0;\n\t            this.index = null;\n\t            this.onCancel(response, status, headers);\n\t        };\n\t        /**\n\t         * Inner callback\n\t         * @param {*} response\n\t         * @param {Number} status\n\t         * @param {Object} headers\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._onComplete = function _onComplete(response, status, headers) {\n\t            this.onComplete(response, status, headers);\n\t            if (this.removeAfterUpload) this.remove();\n\t        };\n\t        /**\n\t         * Destroys a FileItem\n\t         */\n\t\n\t\n\t        FileItem.prototype._destroy = function _destroy() {\n\t            if (this._input) this._input.remove();\n\t            if (this._form) this._form.remove();\n\t            delete this._form;\n\t            delete this._input;\n\t        };\n\t        /**\n\t         * Prepares to uploading\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._prepareToUploading = function _prepareToUploading() {\n\t            this.index = this.index || ++this.uploader._nextIndex;\n\t            this.isReady = true;\n\t        };\n\t        /**\n\t         * Replaces input element on his clone\n\t         * @param {JQLite|jQuery} input\n\t         * @private\n\t         */\n\t\n\t\n\t        FileItem.prototype._replaceNode = function _replaceNode(input) {\n\t            var clone = $compile(input.clone())(input.scope());\n\t            clone.prop('value', null); // FF fix\n\t            input.css('display', 'none');\n\t            input.after(clone); // remove jquery dependency\n\t        };\n\t\n\t        return FileItem;\n\t    }();\n\t}\n\t\n\t__identity.$inject = ['$compile', 'FileLikeObject'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar _angular = angular;\n\tvar extend = _angular.extend;\n\tfunction __identity() {\n\t    var FileDirective = function () {\n\t        /**\n\t         * Creates instance of {FileDirective} object\n\t         * @param {Object} options\n\t         * @param {Object} options.uploader\n\t         * @param {HTMLElement} options.element\n\t         * @param {Object} options.events\n\t         * @param {String} options.prop\n\t         * @constructor\n\t         */\n\t\n\t        function FileDirective(options) {\n\t            _classCallCheck(this, FileDirective);\n\t\n\t            extend(this, options);\n\t            this.uploader._directives[this.prop].push(this);\n\t            this._saveLinks();\n\t            this.bind();\n\t        }\n\t        /**\n\t         * Binds events handles\n\t         */\n\t\n\t\n\t        FileDirective.prototype.bind = function bind() {\n\t            for (var key in this.events) {\n\t                var prop = this.events[key];\n\t                this.element.bind(key, this[prop]);\n\t            }\n\t        };\n\t        /**\n\t         * Unbinds events handles\n\t         */\n\t\n\t\n\t        FileDirective.prototype.unbind = function unbind() {\n\t            for (var key in this.events) {\n\t                this.element.unbind(key, this.events[key]);\n\t            }\n\t        };\n\t        /**\n\t         * Destroys directive\n\t         */\n\t\n\t\n\t        FileDirective.prototype.destroy = function destroy() {\n\t            var index = this.uploader._directives[this.prop].indexOf(this);\n\t            this.uploader._directives[this.prop].splice(index, 1);\n\t            this.unbind();\n\t            // this.element = null;\n\t        };\n\t        /**\n\t         * Saves links to functions\n\t         * @private\n\t         */\n\t\n\t\n\t        FileDirective.prototype._saveLinks = function _saveLinks() {\n\t            for (var key in this.events) {\n\t                var prop = this.events[key];\n\t                this[prop] = this[prop].bind(this);\n\t            }\n\t        };\n\t\n\t        return FileDirective;\n\t    }();\n\t\n\t    /**\n\t     * Map of events\n\t     * @type {Object}\n\t     */\n\t\n\t\n\t    FileDirective.prototype.events = {};\n\t\n\t    return FileDirective;\n\t}\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _angular = angular;\n\tvar extend = _angular.extend;\n\tfunction __identity($compile, FileDirective) {\n\t\n\t    return function (_FileDirective) {\n\t        _inherits(FileSelect, _FileDirective);\n\t\n\t        /**\n\t         * Creates instance of {FileSelect} object\n\t         * @param {Object} options\n\t         * @constructor\n\t         */\n\t\n\t        function FileSelect(options) {\n\t            _classCallCheck(this, FileSelect);\n\t\n\t            var extendedOptions = extend(options, {\n\t                // Map of events\n\t                events: {\n\t                    $destroy: 'destroy',\n\t                    change: 'onChange'\n\t                },\n\t                // Name of property inside uploader._directive object\n\t                prop: 'select'\n\t            });\n\t\n\t            var _this = _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));\n\t\n\t            if (!_this.uploader.isHTML5) {\n\t                _this.element.removeAttr('multiple');\n\t            }\n\t            _this.element.prop('value', null); // FF fix\n\t            return _this;\n\t        }\n\t        /**\n\t         * Returns options\n\t         * @return {Object|undefined}\n\t         */\n\t\n\t\n\t        FileSelect.prototype.getOptions = function getOptions() {};\n\t        /**\n\t         * Returns filters\n\t         * @return {Array<Function>|String|undefined}\n\t         */\n\t\n\t\n\t        FileSelect.prototype.getFilters = function getFilters() {};\n\t        /**\n\t         * If returns \"true\" then HTMLInputElement will be cleared\n\t         * @returns {Boolean}\n\t         */\n\t\n\t\n\t        FileSelect.prototype.isEmptyAfterSelection = function isEmptyAfterSelection() {\n\t            return !!this.element.attr('multiple');\n\t        };\n\t        /**\n\t         * Event handler\n\t         */\n\t\n\t\n\t        FileSelect.prototype.onChange = function onChange() {\n\t            var files = this.uploader.isHTML5 ? this.element[0].files : this.element[0];\n\t            var options = this.getOptions();\n\t            var filters = this.getFilters();\n\t\n\t            if (!this.uploader.isHTML5) this.destroy();\n\t            this.uploader.addToQueue(files, options, filters);\n\t            if (this.isEmptyAfterSelection()) {\n\t                this.element.prop('value', null);\n\t                this.element.replaceWith($compile(this.element.clone())(this.scope)); // IE fix\n\t            }\n\t        };\n\t\n\t        return FileSelect;\n\t    }(FileDirective);\n\t}\n\t\n\t__identity.$inject = ['$compile', 'FileDirective'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\texports.default = __identity;\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar _angular = angular;\n\tvar bind = _angular.bind;\n\tvar isUndefined = _angular.isUndefined;\n\tfunction __identity($q) {\n\t\n\t  return function () {\n\t    /**\n\t     * @param {Array<Function>} pipes\n\t     */\n\t\n\t    function Pipeline() {\n\t      var pipes = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n\t\n\t      _classCallCheck(this, Pipeline);\n\t\n\t      this.pipes = pipes;\n\t    }\n\t\n\t    Pipeline.prototype.next = function next(args) {\n\t      var pipe = this.pipes.shift();\n\t      if (isUndefined(pipe)) {\n\t        this.onSuccessful.apply(this, _toConsumableArray(args));\n\t        return;\n\t      }\n\t      var err = new Error('The filter has not passed');\n\t      err.pipe = pipe;\n\t      err.args = args;\n\t      if (pipe.isAsync) {\n\t        var deferred = $q.defer();\n\t        var onFulfilled = bind(this, this.next, args);\n\t        var onRejected = bind(this, this.onThrown, err);\n\t        deferred.promise.then(onFulfilled, onRejected);\n\t        pipe.apply(undefined, _toConsumableArray(args).concat([deferred]));\n\t      } else {\n\t        var isDone = Boolean(pipe.apply(undefined, _toConsumableArray(args)));\n\t        if (isDone) {\n\t          this.next(args);\n\t        } else {\n\t          this.onThrown(err);\n\t        }\n\t      }\n\t    };\n\t\n\t    Pipeline.prototype.exec = function exec() {\n\t      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t        args[_key] = arguments[_key];\n\t      }\n\t\n\t      this.next(args);\n\t    };\n\t\n\t    Pipeline.prototype.onThrown = function onThrown(err) {};\n\t\n\t    Pipeline.prototype.onSuccessful = function onSuccessful() {};\n\t\n\t    return Pipeline;\n\t  }();\n\t}\n\t\n\t__identity.$inject = ['$q'];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _angular = angular;\n\tvar extend = _angular.extend;\n\tvar forEach = _angular.forEach;\n\tfunction __identity(FileDirective) {\n\t\n\t    return function (_FileDirective) {\n\t        _inherits(FileDrop, _FileDirective);\n\t\n\t        /**\n\t         * Creates instance of {FileDrop} object\n\t         * @param {Object} options\n\t         * @constructor\n\t         */\n\t\n\t        function FileDrop(options) {\n\t            _classCallCheck(this, FileDrop);\n\t\n\t            var extendedOptions = extend(options, {\n\t                // Map of events\n\t                events: {\n\t                    $destroy: 'destroy',\n\t                    drop: 'onDrop',\n\t                    dragover: 'onDragOver',\n\t                    dragleave: 'onDragLeave'\n\t                },\n\t                // Name of property inside uploader._directive object\n\t                prop: 'drop'\n\t            });\n\t\n\t            return _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));\n\t        }\n\t        /**\n\t         * Returns options\n\t         * @return {Object|undefined}\n\t         */\n\t\n\t\n\t        FileDrop.prototype.getOptions = function getOptions() {};\n\t        /**\n\t         * Returns filters\n\t         * @return {Array<Function>|String|undefined}\n\t         */\n\t\n\t\n\t        FileDrop.prototype.getFilters = function getFilters() {};\n\t        /**\n\t         * Event handler\n\t         */\n\t\n\t\n\t        FileDrop.prototype.onDrop = function onDrop(event) {\n\t            var transfer = this._getTransfer(event);\n\t            if (!transfer) return;\n\t            var options = this.getOptions();\n\t            var filters = this.getFilters();\n\t            this._preventAndStop(event);\n\t            forEach(this.uploader._directives.over, this._removeOverClass, this);\n\t            this.uploader.addToQueue(transfer.files, options, filters);\n\t        };\n\t        /**\n\t         * Event handler\n\t         */\n\t\n\t\n\t        FileDrop.prototype.onDragOver = function onDragOver(event) {\n\t            var transfer = this._getTransfer(event);\n\t            if (!this._haveFiles(transfer.types)) return;\n\t            transfer.dropEffect = 'copy';\n\t            this._preventAndStop(event);\n\t            forEach(this.uploader._directives.over, this._addOverClass, this);\n\t        };\n\t        /**\n\t         * Event handler\n\t         */\n\t\n\t\n\t        FileDrop.prototype.onDragLeave = function onDragLeave(event) {\n\t            if (event.currentTarget === this.element[0]) return;\n\t            this._preventAndStop(event);\n\t            forEach(this.uploader._directives.over, this._removeOverClass, this);\n\t        };\n\t        /**\n\t         * Helper\n\t         */\n\t\n\t\n\t        FileDrop.prototype._getTransfer = function _getTransfer(event) {\n\t            return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n\t        };\n\t        /**\n\t         * Helper\n\t         */\n\t\n\t\n\t        FileDrop.prototype._preventAndStop = function _preventAndStop(event) {\n\t            event.preventDefault();\n\t            event.stopPropagation();\n\t        };\n\t        /**\n\t         * Returns \"true\" if types contains files\n\t         * @param {Object} types\n\t         */\n\t\n\t\n\t        FileDrop.prototype._haveFiles = function _haveFiles(types) {\n\t            if (!types) return false;\n\t            if (types.indexOf) {\n\t                return types.indexOf('Files') !== -1;\n\t            } else if (types.contains) {\n\t                return types.contains('Files');\n\t            } else {\n\t                return false;\n\t            }\n\t        };\n\t        /**\n\t         * Callback\n\t         */\n\t\n\t\n\t        FileDrop.prototype._addOverClass = function _addOverClass(item) {\n\t            item.addOverClass();\n\t        };\n\t        /**\n\t         * Callback\n\t         */\n\t\n\t\n\t        FileDrop.prototype._removeOverClass = function _removeOverClass(item) {\n\t            item.removeOverClass();\n\t        };\n\t\n\t        return FileDrop;\n\t    }(FileDirective);\n\t}\n\t\n\t__identity.$inject = ['FileDirective'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar _angular = angular;\n\tvar extend = _angular.extend;\n\tfunction __identity(FileDirective) {\n\t\n\t    return function (_FileDirective) {\n\t        _inherits(FileOver, _FileDirective);\n\t\n\t        /**\n\t         * Creates instance of {FileDrop} object\n\t         * @param {Object} options\n\t         * @constructor\n\t         */\n\t\n\t        function FileOver(options) {\n\t            _classCallCheck(this, FileOver);\n\t\n\t            var extendedOptions = extend(options, {\n\t                // Map of events\n\t                events: {\n\t                    $destroy: 'destroy'\n\t                },\n\t                // Name of property inside uploader._directive object\n\t                prop: 'over',\n\t                // Over class\n\t                overClass: 'nv-file-over'\n\t            });\n\t\n\t            return _possibleConstructorReturn(this, _FileDirective.call(this, extendedOptions));\n\t        }\n\t        /**\n\t         * Adds over class\n\t         */\n\t\n\t\n\t        FileOver.prototype.addOverClass = function addOverClass() {\n\t            this.element.addClass(this.getOverClass());\n\t        };\n\t        /**\n\t         * Removes over class\n\t         */\n\t\n\t\n\t        FileOver.prototype.removeOverClass = function removeOverClass() {\n\t            this.element.removeClass(this.getOverClass());\n\t        };\n\t        /**\n\t         * Returns over class\n\t         * @returns {String}\n\t         */\n\t\n\t\n\t        FileOver.prototype.getOverClass = function getOverClass() {\n\t            return this.overClass;\n\t        };\n\t\n\t        return FileOver;\n\t    }(FileDirective);\n\t}\n\t\n\t__identity.$inject = ['FileDirective'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction __identity($parse, FileUploader, FileSelect) {\n\t\n\t    return {\n\t        link: function link(scope, element, attributes) {\n\t            var uploader = scope.$eval(attributes.uploader);\n\t\n\t            if (!(uploader instanceof FileUploader)) {\n\t                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n\t            }\n\t\n\t            var object = new FileSelect({\n\t                uploader: uploader,\n\t                element: element,\n\t                scope: scope\n\t            });\n\t\n\t            object.getOptions = $parse(attributes.options).bind(object, scope);\n\t            object.getFilters = function () {\n\t                return attributes.filters;\n\t            };\n\t        }\n\t    };\n\t}\n\t\n\t__identity.$inject = ['$parse', 'FileUploader', 'FileSelect'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction __identity($parse, FileUploader, FileDrop) {\n\t\n\t    return {\n\t        link: function link(scope, element, attributes) {\n\t            var uploader = scope.$eval(attributes.uploader);\n\t\n\t            if (!(uploader instanceof FileUploader)) {\n\t                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n\t            }\n\t\n\t            if (!uploader.isHTML5) return;\n\t\n\t            var object = new FileDrop({\n\t                uploader: uploader,\n\t                element: element\n\t            });\n\t\n\t            object.getOptions = $parse(attributes.options).bind(object, scope);\n\t            object.getFilters = function () {\n\t                return attributes.filters;\n\t            };\n\t        }\n\t    };\n\t}\n\t\n\t__identity.$inject = ['$parse', 'FileUploader', 'FileDrop'];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t    value: true\n\t});\n\texports.default = __identity;\n\t\n\tvar _config = __webpack_require__(1);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction __identity(FileUploader, FileOver) {\n\t\n\t    return {\n\t        link: function link(scope, element, attributes) {\n\t            var uploader = scope.$eval(attributes.uploader);\n\t\n\t            if (!(uploader instanceof FileUploader)) {\n\t                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n\t            }\n\t\n\t            var object = new FileOver({\n\t                uploader: uploader,\n\t                element: element\n\t            });\n\t\n\t            object.getOverClass = function () {\n\t                return attributes.overClass || object.overClass;\n\t            };\n\t        }\n\t    };\n\t}\n\t\n\t__identity.$inject = ['FileUploader', 'FileOver'];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** angular-file-upload.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 5b9b3b97b7738c0867db\n **/","'use strict';\r\n\r\n\r\nimport CONFIG from './config.json';\r\n\r\n\r\nimport options from './values/options'\r\n\r\n\r\nimport serviceFileUploader from './services/FileUploader';\r\nimport serviceFileLikeObject from './services/FileLikeObject';\r\nimport serviceFileItem from './services/FileItem';\r\nimport serviceFileDirective from './services/FileDirective';\r\nimport serviceFileSelect from './services/FileSelect';\r\nimport servicePipeline from './services/Pipeline';\r\nimport serviceFileDrop from './services/FileDrop';\r\nimport serviceFileOver from './services/FileOver';\r\n\r\n\r\nimport directiveFileSelect from './directives/FileSelect';\r\nimport directiveFileDrop from './directives/FileDrop';\r\nimport directiveFileOver from './directives/FileOver';\r\n\r\n\r\nangular\r\n    .module(CONFIG.name, [])\r\n    .value('fileUploaderOptions', options)\r\n    .factory('FileUploader', serviceFileUploader)\r\n    .factory('FileLikeObject', serviceFileLikeObject)\r\n    .factory('FileItem', serviceFileItem)\r\n    .factory('FileDirective', serviceFileDirective)\r\n    .factory('FileSelect', serviceFileSelect)\r\n    .factory('FileDrop', serviceFileDrop)\r\n    .factory('FileOver', serviceFileOver)\r\n    .factory('Pipeline', servicePipeline)\r\n    .directive('nvFileSelect', directiveFileSelect)\r\n    .directive('nvFileDrop', directiveFileDrop)\r\n    .directive('nvFileOver', directiveFileOver)\r\n    .run([\r\n        'FileUploader',\r\n        'FileLikeObject',\r\n        'FileItem',\r\n        'FileDirective',\r\n        'FileSelect',\r\n        'FileDrop',\r\n        'FileOver',\r\n        'Pipeline',\r\n        function(FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver, Pipeline) {\r\n            // only for compatibility\r\n            FileUploader.FileLikeObject = FileLikeObject;\r\n            FileUploader.FileItem = FileItem;\r\n            FileUploader.FileDirective = FileDirective;\r\n            FileUploader.FileSelect = FileSelect;\r\n            FileUploader.FileDrop = FileDrop;\r\n            FileUploader.FileOver = FileOver;\r\n            FileUploader.Pipeline = Pipeline;\r\n        }\r\n    ]);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/","module.exports = {\n\t\"name\": \"angularFileUpload\"\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/config.json\n ** module id = 1\n ** module chunks = 0 1\n **/","'use strict';\n\n\nexport default {\n    url: '/',\n    alias: 'file',\n    headers: {},\n    queue: [],\n    progress: 0,\n    autoUpload: false,\n    removeAfterUpload: false,\n    method: 'POST',\n    filters: [],\n    formData: [],\n    queueLimit: Number.MAX_VALUE,\n    withCredentials: false,\n    disableMultipart: false\n};\n\n\n/** WEBPACK FOOTER **\n ** ./src/values/options.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    bind,\n    copy,\n    extend,\n    forEach,\n    isObject,\n    isNumber,\n    isDefined,\n    isArray,\n    isUndefined,\n    element\n    } = angular;\n\n\nexport default function __identity(fileUploaderOptions, $rootScope, $http, $window, $timeout, FileLikeObject, FileItem, Pipeline) {\n    \n    \n    let {\n        File,\n        FormData\n        } = $window;\n    \n    \n    class FileUploader {\n        /**********************\n         * PUBLIC\n         **********************/\n        /**\n         * Creates an instance of FileUploader\n         * @param {Object} [options]\n         * @constructor\n         */\n        constructor(options) {\n            var settings = copy(fileUploaderOptions);\n            \n            extend(this, settings, options, {\n                isUploading: false,\n                _nextIndex: 0,\n                _directives: {select: [], drop: [], over: []}\n            });\n\n            // add default filters\n            this.filters.unshift({name: 'queueLimit', fn: this._queueLimitFilter});\n            this.filters.unshift({name: 'folder', fn: this._folderFilter});\n        }\n        /**\n         * Adds items to the queue\n         * @param {File|HTMLInputElement|Object|FileList|Array<Object>} files\n         * @param {Object} [options]\n         * @param {Array<Function>|String} filters\n         */\n        addToQueue(files, options, filters) {\n            let incomingQueue = this.isArrayLikeObject(files) ? Array.prototype.slice.call(files): [files];\n            var arrayOfFilters = this._getFilters(filters);\n            var count = this.queue.length;\n            var addedFileItems = [];\n\n            let next = () => {\n                let something = incomingQueue.shift();\n                \n                if (isUndefined(something)) {\n                    return done();\n                }\n                \n                let fileLikeObject = this.isFile(something) ? something : new FileLikeObject(something);\n                let pipes = this._convertFiltersToPipes(arrayOfFilters);\n                let pipeline = new Pipeline(pipes);\n                let onThrown = (err) => {\n                    let {originalFilter} = err.pipe;\n                    let [fileLikeObject, options] = err.args;\n                    this._onWhenAddingFileFailed(fileLikeObject, originalFilter, options);\n                    next();\n                };\n                let onSuccessful = (fileLikeObject, options) => {\n                    let fileItem = new FileItem(this, fileLikeObject, options);\n                    addedFileItems.push(fileItem);\n                    this.queue.push(fileItem);\n                    this._onAfterAddingFile(fileItem);\n                    next();\n                };\n                pipeline.onThrown = onThrown;\n                pipeline.onSuccessful = onSuccessful;\n                pipeline.exec(fileLikeObject, options);\n            };\n                \n            let done = () => {\n                if(this.queue.length !== count) {\n                    this._onAfterAddingAll(addedFileItems);\n                    this.progress = this._getTotalProgress();\n                }\n\n                this._render();\n                if (this.autoUpload) this.uploadAll();\n            };\n            \n            next();\n        }\n        /**\n         * Remove items from the queue. Remove last: index = -1\n         * @param {FileItem|Number} value\n         */\n        removeFromQueue(value) {\n            var index = this.getIndexOfItem(value);\n            var item = this.queue[index];\n            if(item.isUploading) item.cancel();\n            this.queue.splice(index, 1);\n            item._destroy();\n            this.progress = this._getTotalProgress();\n        }\n        /**\n         * Clears the queue\n         */\n        clearQueue() {\n            while(this.queue.length) {\n                this.queue[0].remove();\n            }\n            this.progress = 0;\n        }\n        /**\n         * Uploads a item from the queue\n         * @param {FileItem|Number} value\n         */\n        uploadItem(value) {\n            var index = this.getIndexOfItem(value);\n            var item = this.queue[index];\n            var transport = this.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n\n            item._prepareToUploading();\n            if(this.isUploading) return;\n\n            this._onBeforeUploadItem(item);\n            if (item.isCancel) return;\n\n            item.isUploading = true;\n            this.isUploading = true;\n            this[transport](item);\n            this._render();\n        }\n        /**\n         * Cancels uploading of item from the queue\n         * @param {FileItem|Number} value\n         */\n        cancelItem(value) {\n            var index = this.getIndexOfItem(value);\n            var item = this.queue[index];\n            var prop = this.isHTML5 ? '_xhr' : '_form';\n            if (!item) return;\n            item.isCancel = true;\n            if(item.isUploading) {\n                // It will call this._onCancelItem() & this._onCompleteItem() asynchronously\n                item[prop].abort();\n            } else {\n                let dummy = [undefined, 0, {}];\n                let onNextTick = () => {\n                    this._onCancelItem(item, ...dummy);\n                    this._onCompleteItem(item, ...dummy);\n                };\n                $timeout(onNextTick); // Trigger callbacks asynchronously (setImmediate emulation)\n            }\n        }\n        /**\n         * Uploads all not uploaded items of queue\n         */\n        uploadAll() {\n            var items = this.getNotUploadedItems().filter(item => !item.isUploading);\n            if(!items.length) return;\n\n            forEach(items, item => item._prepareToUploading());\n            items[0].upload();\n        }\n        /**\n         * Cancels all uploads\n         */\n        cancelAll() {\n            var items = this.getNotUploadedItems();\n            forEach(items, item => item.cancel());\n        }\n        /**\n         * Returns \"true\" if value an instance of File\n         * @param {*} value\n         * @returns {Boolean}\n         * @private\n         */\n        isFile(value) {\n            return this.constructor.isFile(value);\n        }\n        /**\n         * Returns \"true\" if value an instance of FileLikeObject\n         * @param {*} value\n         * @returns {Boolean}\n         * @private\n         */\n        isFileLikeObject(value) {\n            return this.constructor.isFileLikeObject(value);\n        }\n        /**\n         * Returns \"true\" if value is array like object\n         * @param {*} value\n         * @returns {Boolean}\n         */\n        isArrayLikeObject(value) {\n            return this.constructor.isArrayLikeObject(value);\n        }\n        /**\n         * Returns a index of item from the queue\n         * @param {Item|Number} value\n         * @returns {Number}\n         */\n        getIndexOfItem(value) {\n            return isNumber(value) ? value : this.queue.indexOf(value);\n        }\n        /**\n         * Returns not uploaded items\n         * @returns {Array}\n         */\n        getNotUploadedItems() {\n            return this.queue.filter(item => !item.isUploaded);\n        }\n        /**\n         * Returns items ready for upload\n         * @returns {Array}\n         */\n        getReadyItems() {\n            return this.queue\n                .filter(item => (item.isReady && !item.isUploading))\n                .sort((item1, item2) => item1.index - item2.index);\n        }\n        /**\n         * Destroys instance of FileUploader\n         */\n        destroy() {\n            forEach(this._directives, (key) => {\n                forEach(this._directives[key], (object) => {\n                    object.destroy();\n                });\n            });\n        }\n        /**\n         * Callback\n         * @param {Array} fileItems\n         */\n        onAfterAddingAll(fileItems) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} fileItem\n         */\n        onAfterAddingFile(fileItem) {\n        }\n        /**\n         * Callback\n         * @param {File|Object} item\n         * @param {Object} filter\n         * @param {Object} options\n         */\n        onWhenAddingFileFailed(item, filter, options) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} fileItem\n         */\n        onBeforeUploadItem(fileItem) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} fileItem\n         * @param {Number} progress\n         */\n        onProgressItem(fileItem, progress) {\n        }\n        /**\n         * Callback\n         * @param {Number} progress\n         */\n        onProgressAll(progress) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onSuccessItem(item, response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onErrorItem(item, response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onCancelItem(item, response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onCompleteItem(item, response, status, headers) {\n        }\n        /**\n         * Callback\n         */\n        onCompleteAll() {\n        }\n        /**********************\n         * PRIVATE\n         **********************/\n        /**\n         * Returns the total progress\n         * @param {Number} [value]\n         * @returns {Number}\n         * @private\n         */\n        _getTotalProgress(value) {\n            if(this.removeAfterUpload) return value || 0;\n\n            var notUploaded = this.getNotUploadedItems().length;\n            var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n            var ratio = 100 / this.queue.length;\n            var current = (value || 0) * ratio / 100;\n\n            return Math.round(uploaded * ratio + current);\n        }\n        /**\n         * Returns array of filters\n         * @param {Array<Function>|String} filters\n         * @returns {Array<Function>}\n         * @private\n         */\n        _getFilters(filters) {\n            if(!filters) return this.filters;\n            if(isArray(filters)) return filters;\n            var names = filters.match(/[^\\s,]+/g);\n            return this.filters\n                .filter(filter => names.indexOf(filter.name) !== -1);\n        }\n       /**\n       * @param {Array<Function>} filters\n       * @returns {Array<Function>}\n       * @private\n       */\n       _convertFiltersToPipes(filters) {\n            return filters\n                .map(filter => {\n                    let fn = bind(this, filter.fn);\n                    fn.isAsync = filter.fn.length === 3;\n                    fn.originalFilter = filter;\n                    return fn;\n                });\n        }\n        /**\n         * Updates html\n         * @private\n         */\n        _render() {\n            if(!$rootScope.$$phase) $rootScope.$apply();\n        }\n        /**\n         * Returns \"true\" if item is a file (not folder)\n         * @param {File|FileLikeObject} item\n         * @returns {Boolean}\n         * @private\n         */\n        _folderFilter(item) {\n            return !!(item.size || item.type);\n        }\n        /**\n         * Returns \"true\" if the limit has not been reached\n         * @returns {Boolean}\n         * @private\n         */\n        _queueLimitFilter() {\n            return this.queue.length < this.queueLimit;\n        }\n        /**\n         * Checks whether upload successful\n         * @param {Number} status\n         * @returns {Boolean}\n         * @private\n         */\n        _isSuccessCode(status) {\n            return (status >= 200 && status < 300) || status === 304;\n        }\n        /**\n         * Transforms the server response\n         * @param {*} response\n         * @param {Object} headers\n         * @returns {*}\n         * @private\n         */\n        _transformResponse(response, headers) {\n            var headersGetter = this._headersGetter(headers);\n            forEach($http.defaults.transformResponse, (transformFn) => {\n                response = transformFn(response, headersGetter);\n            });\n            return response;\n        }\n        /**\n         * Parsed response headers\n         * @param headers\n         * @returns {Object}\n         * @see https://github.com/angular/angular.js/blob/master/src/ng/http.js\n         * @private\n         */\n        _parseHeaders(headers) {\n            var parsed = {}, key, val, i;\n\n            if(!headers) return parsed;\n\n            forEach(headers.split('\\n'), (line) => {\n                i = line.indexOf(':');\n                key = line.slice(0, i).trim().toLowerCase();\n                val = line.slice(i + 1).trim();\n\n                if(key) {\n                    parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n                }\n            });\n\n            return parsed;\n        }\n        /**\n         * Returns function that returns headers\n         * @param {Object} parsedHeaders\n         * @returns {Function}\n         * @private\n         */\n        _headersGetter(parsedHeaders) {\n            return (name) => {\n                if(name) {\n                    return parsedHeaders[name.toLowerCase()] || null;\n                }\n                return parsedHeaders;\n            };\n        }\n        /**\n         * The XMLHttpRequest transport\n         * @param {FileItem} item\n         * @private\n         */\n        _xhrTransport(item) {\n            var xhr = item._xhr = new XMLHttpRequest();\n            var sendable;\n\n            if (!item.disableMultipart) {\n                sendable = new FormData();\n                forEach(item.formData, (obj) => {\n                    forEach(obj, (value, key) => {\n                        sendable.append(key, value);\n                    });\n                });\n\n                sendable.append(item.alias, item._file, item.file.name);\n            }\n            else {\n                sendable = item._file;\n            }\n\n            if(typeof(item._file.size) != 'number') {\n                throw new TypeError('The file specified is no longer valid');\n            }\n\n            xhr.upload.onprogress = (event) => {\n                var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n                this._onProgressItem(item, progress);\n            };\n\n            xhr.onload = () => {\n                var headers = this._parseHeaders(xhr.getAllResponseHeaders());\n                var response = this._transformResponse(xhr.response, headers);\n                var gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n                var method = '_on' + gist + 'Item';\n                this[method](item, response, xhr.status, headers);\n                this._onCompleteItem(item, response, xhr.status, headers);\n            };\n\n            xhr.onerror = () => {\n                var headers = this._parseHeaders(xhr.getAllResponseHeaders());\n                var response = this._transformResponse(xhr.response, headers);\n                this._onErrorItem(item, response, xhr.status, headers);\n                this._onCompleteItem(item, response, xhr.status, headers);\n            };\n\n            xhr.onabort = () => {\n                var headers = this._parseHeaders(xhr.getAllResponseHeaders());\n                var response = this._transformResponse(xhr.response, headers);\n                this._onCancelItem(item, response, xhr.status, headers);\n                this._onCompleteItem(item, response, xhr.status, headers);\n            };\n\n            xhr.open(item.method, item.url, true);\n\n            xhr.withCredentials = item.withCredentials;\n\n            forEach(item.headers, (value, name) => {\n                xhr.setRequestHeader(name, value);\n            });\n\n            xhr.send(sendable);\n        }\n        /**\n         * The IFrame transport\n         * @param {FileItem} item\n         * @private\n         */\n        _iframeTransport(item) {\n            var form = element('<form style=\"display: none;\" />');\n            var iframe = element('<iframe name=\"iframeTransport' + Date.now() + '\">');\n            var input = item._input;\n\n            if(item._form) item._form.replaceWith(input); // remove old form\n            item._form = form; // save link to new form\n\n            input.prop('name', item.alias);\n\n            forEach(item.formData, (obj) => {\n                forEach(obj, (value, key) => {\n                    var element_ = element('<input type=\"hidden\" name=\"' + key + '\" />');\n                    element_.val(value);\n                    form.append(element_);\n                });\n            });\n\n            form.prop({\n                action: item.url,\n                method: 'POST',\n                target: iframe.prop('name'),\n                enctype: 'multipart/form-data',\n                encoding: 'multipart/form-data' // old IE\n            });\n\n            iframe.bind('load', () => {\n                var html = '';\n                var status = 200;\n\n                try {\n                    // Fix for legacy IE browsers that loads internal error page\n                    // when failed WS response received. In consequence iframe\n                    // content access denied error is thrown becouse trying to\n                    // access cross domain page. When such thing occurs notifying\n                    // with empty response object. See more info at:\n                    // http://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object\n                    // Note that if non standard 4xx or 5xx error code returned\n                    // from WS then response content can be accessed without error\n                    // but 'XHR' status becomes 200. In order to avoid confusion\n                    // returning response via same 'success' event handler.\n\n                    // fixed angular.contents() for iframes\n                    html = iframe[0].contentDocument.body.innerHTML;\n                } catch(e) {\n                    // in case we run into the access-is-denied error or we have another error on the server side\n                    // (intentional 500,40... errors), we at least say 'something went wrong' -> 500\n                    status = 500;\n                }\n\n                var xhr = {response: html, status: status, dummy: true};\n                var headers = {};\n                var response = this._transformResponse(xhr.response, headers);\n\n                this._onSuccessItem(item, response, xhr.status, headers);\n                this._onCompleteItem(item, response, xhr.status, headers);\n            });\n\n            form.abort = () => {\n                var xhr = {status: 0, dummy: true};\n                var headers = {};\n                var response;\n\n                iframe.unbind('load').prop('src', 'javascript:false;');\n                form.replaceWith(input);\n\n                this._onCancelItem(item, response, xhr.status, headers);\n                this._onCompleteItem(item, response, xhr.status, headers);\n            };\n\n            input.after(form);\n            form.append(input).append(iframe);\n\n            form[0].submit();\n        }\n        /**\n         * Inner callback\n         * @param {File|Object} item\n         * @param {Object} filter\n         * @param {Object} options\n         * @private\n         */\n        _onWhenAddingFileFailed(item, filter, options) {\n            this.onWhenAddingFileFailed(item, filter, options);\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         */\n        _onAfterAddingFile(item) {\n            this.onAfterAddingFile(item);\n        }\n        /**\n         * Inner callback\n         * @param {Array<FileItem>} items\n         */\n        _onAfterAddingAll(items) {\n            this.onAfterAddingAll(items);\n        }\n        /**\n         *  Inner callback\n         * @param {FileItem} item\n         * @private\n         */\n        _onBeforeUploadItem(item) {\n            item._onBeforeUpload();\n            this.onBeforeUploadItem(item);\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         * @param {Number} progress\n         * @private\n         */\n        _onProgressItem(item, progress) {\n            var total = this._getTotalProgress(progress);\n            this.progress = total;\n            item._onProgress(progress);\n            this.onProgressItem(item, progress);\n            this.onProgressAll(total);\n            this._render();\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onSuccessItem(item, response, status, headers) {\n            item._onSuccess(response, status, headers);\n            this.onSuccessItem(item, response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onErrorItem(item, response, status, headers) {\n            item._onError(response, status, headers);\n            this.onErrorItem(item, response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onCancelItem(item, response, status, headers) {\n            item._onCancel(response, status, headers);\n            this.onCancelItem(item, response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {FileItem} item\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onCompleteItem(item, response, status, headers) {\n            item._onComplete(response, status, headers);\n            this.onCompleteItem(item, response, status, headers);\n\n            var nextItem = this.getReadyItems()[0];\n            this.isUploading = false;\n\n            if(isDefined(nextItem)) {\n                nextItem.upload();\n                return;\n            }\n\n            this.onCompleteAll();\n            this.progress = this._getTotalProgress();\n            this._render();\n        }\n        /**********************\n         * STATIC\n         **********************/\n        /**\n         * Returns \"true\" if value an instance of File\n         * @param {*} value\n         * @returns {Boolean}\n         * @private\n         */\n        static isFile(value) {\n            return (File && value instanceof File);\n        }\n        /**\n         * Returns \"true\" if value an instance of FileLikeObject\n         * @param {*} value\n         * @returns {Boolean}\n         * @private\n         */\n        static isFileLikeObject(value) {\n            return value instanceof FileLikeObject;\n        }\n        /**\n         * Returns \"true\" if value is array like object\n         * @param {*} value\n         * @returns {Boolean}\n         */\n        static isArrayLikeObject(value) {\n            return (isObject(value) && 'length' in value);\n        }\n        /**\n         * Inherits a target (Class_1) by a source (Class_2)\n         * @param {Function} target\n         * @param {Function} source\n         */\n        static inherit(target, source) {\n            target.prototype = Object.create(source.prototype);\n            target.prototype.constructor = target;\n            target.super_ = source;\n        }\n    }\n\n\n    /**********************\n     * PUBLIC\n     **********************/\n    /**\n     * Checks a support the html5 uploader\n     * @returns {Boolean}\n     * @readonly\n     */\n    FileUploader.prototype.isHTML5 = !!(File && FormData);\n    /**********************\n     * STATIC\n     **********************/\n    /**\n     * @borrows FileUploader.prototype.isHTML5\n     */\n    FileUploader.isHTML5 = FileUploader.prototype.isHTML5;\n\n    \n    return FileUploader;\n}\n\n\n__identity.$inject = [\n    'fileUploaderOptions', \n    '$rootScope', \n    '$http', \n    '$window',\n    '$timeout',\n    'FileLikeObject',\n    'FileItem',\n    'Pipeline'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileUploader.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    copy,\n    isElement,\n    isString\n    } = angular;\n\n\nexport default function __identity() {\n    \n    \n    return class FileLikeObject {\n        /**\n         * Creates an instance of FileLikeObject\n         * @param {File|HTMLInputElement|Object} fileOrInput\n         * @constructor\n         */\n        constructor(fileOrInput) {\n            var isInput = isElement(fileOrInput);\n            var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;\n            var postfix = isString(fakePathOrObject) ? 'FakePath' : 'Object';\n            var method = '_createFrom' + postfix;\n            this[method](fakePathOrObject);\n        }\n        /**\n         * Creates file like object from fake path string\n         * @param {String} path\n         * @private\n         */\n        _createFromFakePath(path) {\n            this.lastModifiedDate = null;\n            this.size = null;\n            this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n            this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n        }\n        /**\n         * Creates file like object from object\n         * @param {File|FileLikeObject} object\n         * @private\n         */\n        _createFromObject(object) {\n            this.lastModifiedDate = copy(object.lastModifiedDate);\n            this.size = object.size;\n            this.type = object.type;\n            this.name = object.name;\n        }\n    }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileLikeObject.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    copy,\n    extend,\n    element,\n    isElement\n    } = angular;\n\n\nexport default function __identity($compile, FileLikeObject) {\n    \n    \n    return class FileItem {\n        /**\n         * Creates an instance of FileItem\n         * @param {FileUploader} uploader\n         * @param {File|HTMLInputElement|Object} some\n         * @param {Object} options\n         * @constructor\n         */\n        constructor(uploader, some, options) {\n            var isInput = isElement(some);\n            var input = isInput ? element(some) : null;\n            var file = !isInput ? some : null;\n\n            extend(this, {\n                url: uploader.url,\n                alias: uploader.alias,\n                headers: copy(uploader.headers),\n                formData: copy(uploader.formData),\n                removeAfterUpload: uploader.removeAfterUpload,\n                withCredentials: uploader.withCredentials,\n                disableMultipart: uploader.disableMultipart,\n                method: uploader.method\n            }, options, {\n                uploader: uploader,\n                file: new FileLikeObject(some),\n                isReady: false,\n                isUploading: false,\n                isUploaded: false,\n                isSuccess: false,\n                isCancel: false,\n                isError: false,\n                progress: 0,\n                index: null,\n                _file: file,\n                _input: input\n            });\n\n            if (input) this._replaceNode(input);\n        }\n        /**********************\n         * PUBLIC\n         **********************/\n        /**\n         * Uploads a FileItem\n         */\n        upload() {\n            try {\n                this.uploader.uploadItem(this);\n            } catch(e) {\n                var message = e.name + ':' + e.message;\n                this.uploader._onCompleteItem(this, message, e.code, []);\n                this.uploader._onErrorItem(this, message, e.code, []);\n            }\n        }\n        /**\n         * Cancels uploading of FileItem\n         */\n        cancel() {\n            this.uploader.cancelItem(this);\n        }\n        /**\n         * Removes a FileItem\n         */\n        remove() {\n            this.uploader.removeFromQueue(this);\n        }\n        /**\n         * Callback\n         * @private\n         */\n        onBeforeUpload() {\n        }\n        /**\n         * Callback\n         * @param {Number} progress\n         * @private\n         */\n        onProgress(progress) {\n        }\n        /**\n         * Callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onSuccess(response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onError(response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onCancel(response, status, headers) {\n        }\n        /**\n         * Callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         */\n        onComplete(response, status, headers) {\n        }\n        /**********************\n         * PRIVATE\n         **********************/\n        /**\n         * Inner callback\n         */\n        _onBeforeUpload() {\n            this.isReady = true;\n            this.isUploading = false;\n            this.isUploaded = false;\n            this.isSuccess = false;\n            this.isCancel = false;\n            this.isError = false;\n            this.progress = 0;\n            this.onBeforeUpload();\n        }\n        /**\n         * Inner callback\n         * @param {Number} progress\n         * @private\n         */\n        _onProgress(progress) {\n            this.progress = progress;\n            this.onProgress(progress);\n        }\n        /**\n         * Inner callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onSuccess(response, status, headers) {\n            this.isReady = false;\n            this.isUploading = false;\n            this.isUploaded = true;\n            this.isSuccess = true;\n            this.isCancel = false;\n            this.isError = false;\n            this.progress = 100;\n            this.index = null;\n            this.onSuccess(response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onError(response, status, headers) {\n            this.isReady = false;\n            this.isUploading = false;\n            this.isUploaded = true;\n            this.isSuccess = false;\n            this.isCancel = false;\n            this.isError = true;\n            this.progress = 0;\n            this.index = null;\n            this.onError(response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onCancel(response, status, headers) {\n            this.isReady = false;\n            this.isUploading = false;\n            this.isUploaded = false;\n            this.isSuccess = false;\n            this.isCancel = true;\n            this.isError = false;\n            this.progress = 0;\n            this.index = null;\n            this.onCancel(response, status, headers);\n        }\n        /**\n         * Inner callback\n         * @param {*} response\n         * @param {Number} status\n         * @param {Object} headers\n         * @private\n         */\n        _onComplete(response, status, headers) {\n            this.onComplete(response, status, headers);\n            if(this.removeAfterUpload) this.remove();\n        }\n        /**\n         * Destroys a FileItem\n         */\n        _destroy() {\n            if(this._input) this._input.remove();\n            if(this._form) this._form.remove();\n            delete this._form;\n            delete this._input;\n        }\n        /**\n         * Prepares to uploading\n         * @private\n         */\n        _prepareToUploading() {\n            this.index = this.index || ++this.uploader._nextIndex;\n            this.isReady = true;\n        }\n        /**\n         * Replaces input element on his clone\n         * @param {JQLite|jQuery} input\n         * @private\n         */\n        _replaceNode(input) {\n            var clone = $compile(input.clone())(input.scope());\n            clone.prop('value', null); // FF fix\n            input.css('display', 'none');\n            input.after(clone); // remove jquery dependency\n        }\n    }\n}\n\n\n__identity.$inject = [\n    '$compile',\n    'FileLikeObject'\n];\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileItem.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    extend\n    } = angular;\n\n\nexport default function __identity() {\n\n\n    class FileDirective {\n        /**\n         * Creates instance of {FileDirective} object\n         * @param {Object} options\n         * @param {Object} options.uploader\n         * @param {HTMLElement} options.element\n         * @param {Object} options.events\n         * @param {String} options.prop\n         * @constructor\n         */\n        constructor(options) {\n            extend(this, options);\n            this.uploader._directives[this.prop].push(this);\n            this._saveLinks();\n            this.bind();\n        }\n        /**\n         * Binds events handles\n         */\n        bind() {\n            for(var key in this.events) {\n                var prop = this.events[key];\n                this.element.bind(key, this[prop]);\n            }\n        }\n        /**\n         * Unbinds events handles\n         */\n        unbind() {\n            for(var key in this.events) {\n                this.element.unbind(key, this.events[key]);\n            }\n        }\n        /**\n         * Destroys directive\n         */\n        destroy() {\n            var index = this.uploader._directives[this.prop].indexOf(this);\n            this.uploader._directives[this.prop].splice(index, 1);\n            this.unbind();\n            // this.element = null;\n        }\n        /**\n         * Saves links to functions\n         * @private\n         */\n        _saveLinks() {\n            for(var key in this.events) {\n                var prop = this.events[key];\n                this[prop] = this[prop].bind(this);\n            }\n        }\n    }\n\n\n    /**\n     * Map of events\n     * @type {Object}\n     */\n    FileDirective.prototype.events = {};\n\n\n    return FileDirective;\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileDirective.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    extend\n    } = angular;\n\n\nexport default function __identity($compile, FileDirective) {\n    \n    \n    return class FileSelect extends FileDirective {\n        /**\n         * Creates instance of {FileSelect} object\n         * @param {Object} options\n         * @constructor\n         */\n        constructor(options) {\n            let extendedOptions = extend(options, {\n                // Map of events\n                events: {\n                    $destroy: 'destroy',\n                    change: 'onChange'\n                },\n                // Name of property inside uploader._directive object\n                prop: 'select'\n            });\n            \n            super(extendedOptions);\n            \n            if(!this.uploader.isHTML5) {\n                this.element.removeAttr('multiple');\n            }\n            this.element.prop('value', null); // FF fix\n        }\n        /**\n         * Returns options\n         * @return {Object|undefined}\n         */\n        getOptions() {\n        }\n        /**\n         * Returns filters\n         * @return {Array<Function>|String|undefined}\n         */\n        getFilters() {\n        }\n        /**\n         * If returns \"true\" then HTMLInputElement will be cleared\n         * @returns {Boolean}\n         */\n        isEmptyAfterSelection() {\n            return !!this.element.attr('multiple');\n        }\n        /**\n         * Event handler\n         */\n        onChange() {\n            var files = this.uploader.isHTML5 ? this.element[0].files : this.element[0];\n            var options = this.getOptions();\n            var filters = this.getFilters();\n\n            if(!this.uploader.isHTML5) this.destroy();\n            this.uploader.addToQueue(files, options, filters);\n            if(this.isEmptyAfterSelection()) {\n                this.element.prop('value', null);\n                this.element.replaceWith($compile(this.element.clone())(this.scope)); // IE fix\n            }\n        }\n    }\n}\n\n\n__identity.$inject = [\n    '$compile',\n    'FileDirective'\n];\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileSelect.js\n **/","'use strict';\n\n\nconst {\n  bind,\n  isUndefined\n} = angular;\n\n\nexport default function __identity($q) {\n\n\n  return class Pipeline {\n    /**\n     * @param {Array<Function>} pipes\n     */\n    constructor(pipes = []) {\n      this.pipes = pipes;\n    }\n    next(args) {\n      let pipe = this.pipes.shift();\n      if (isUndefined(pipe)) {\n        this.onSuccessful(...args);\n        return;\n      }\n      let err = new Error('The filter has not passed');\n      err.pipe = pipe;\n      err.args = args;\n      if (pipe.isAsync) {\n        let deferred = $q.defer();\n        let onFulfilled = bind(this, this.next, args);\n        let onRejected = bind(this, this.onThrown, err);\n        deferred.promise.then(onFulfilled, onRejected);\n        pipe(...args, deferred);\n      } else {\n        let isDone = Boolean(pipe(...args));\n        if (isDone) {\n          this.next(args);\n        } else {\n          this.onThrown(err);\n        }\n      }\n    }\n    exec(...args) {\n      this.next(args);\n    }\n    onThrown(err) {\n\n    }\n    onSuccessful(...args) {\n\n    }\n  }\n  \n}\n\n__identity.$inject = [\n  '$q'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/Pipeline.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    extend,\n    forEach\n    } = angular;\n\n\nexport default function __identity(FileDirective) {\n    \n    \n    return class FileDrop extends FileDirective {\n        /**\n         * Creates instance of {FileDrop} object\n         * @param {Object} options\n         * @constructor\n         */\n        constructor(options) {\n            let extendedOptions = extend(options, {\n                // Map of events\n                events: {\n                    $destroy: 'destroy',\n                    drop: 'onDrop',\n                    dragover: 'onDragOver',\n                    dragleave: 'onDragLeave'\n                },\n                // Name of property inside uploader._directive object\n                prop: 'drop'\n            });\n            \n            super(extendedOptions);\n        }\n        /**\n         * Returns options\n         * @return {Object|undefined}\n         */\n        getOptions() {\n        }\n        /**\n         * Returns filters\n         * @return {Array<Function>|String|undefined}\n         */\n        getFilters() {\n        }\n        /**\n         * Event handler\n         */\n        onDrop(event) {\n            var transfer = this._getTransfer(event);\n            if(!transfer) return;\n            var options = this.getOptions();\n            var filters = this.getFilters();\n            this._preventAndStop(event);\n            forEach(this.uploader._directives.over, this._removeOverClass, this);\n            this.uploader.addToQueue(transfer.files, options, filters);\n        }\n        /**\n         * Event handler\n         */\n        onDragOver(event) {\n            var transfer = this._getTransfer(event);\n            if(!this._haveFiles(transfer.types)) return;\n            transfer.dropEffect = 'copy';\n            this._preventAndStop(event);\n            forEach(this.uploader._directives.over, this._addOverClass, this);\n        }\n        /**\n         * Event handler\n         */\n        onDragLeave(event) {\n            if(event.currentTarget === this.element[0]) return;\n            this._preventAndStop(event);\n            forEach(this.uploader._directives.over, this._removeOverClass, this);\n        }\n        /**\n         * Helper\n         */\n        _getTransfer(event) {\n            return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n        }\n        /**\n         * Helper\n         */\n        _preventAndStop(event) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n        /**\n         * Returns \"true\" if types contains files\n         * @param {Object} types\n         */\n        _haveFiles(types) {\n            if(!types) return false;\n            if(types.indexOf) {\n                return types.indexOf('Files') !== -1;\n            } else if(types.contains) {\n                return types.contains('Files');\n            } else {\n                return false;\n            }\n        }\n        /**\n         * Callback\n         */\n        _addOverClass(item) {\n            item.addOverClass();\n        }\n        /**\n         * Callback\n         */\n        _removeOverClass(item) {\n            item.removeOverClass();\n        }\n    }\n}\n\n\n__identity.$inject = [\n    'FileDirective'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileDrop.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nlet {\n    extend\n    } = angular;\n\n\nexport default function __identity(FileDirective) {\n    \n    \n    return class FileOver extends FileDirective {\n        /**\n         * Creates instance of {FileDrop} object\n         * @param {Object} options\n         * @constructor\n         */\n        constructor(options) {\n            let extendedOptions = extend(options, {\n                // Map of events\n                events: {\n                    $destroy: 'destroy'\n                },\n                // Name of property inside uploader._directive object\n                prop: 'over',\n                // Over class\n                overClass: 'nv-file-over'\n            });\n            \n            super(extendedOptions);\n        }\n        /**\n         * Adds over class\n         */\n        addOverClass() {\n            this.element.addClass(this.getOverClass());\n        }\n        /**\n         * Removes over class\n         */\n        removeOverClass() {\n            this.element.removeClass(this.getOverClass());\n        }\n        /**\n         * Returns over class\n         * @returns {String}\n         */\n        getOverClass() {\n            return this.overClass;\n        }\n    }\n}\n\n\n__identity.$inject = [\n    'FileDirective'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/services/FileOver.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nexport default function __identity($parse, FileUploader, FileSelect) {\n\n\n    return {\n        link: (scope, element, attributes) => {\n            var uploader = scope.$eval(attributes.uploader);\n\n            if (!(uploader instanceof FileUploader)) {\n                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n            }\n\n            var object = new FileSelect({\n                uploader: uploader,\n                element: element,\n                scope: scope\n            });\n\n            object.getOptions = $parse(attributes.options).bind(object, scope);\n            object.getFilters = () => attributes.filters;\n        }\n    };\n\n\n}\n\n\n__identity.$inject = [\n    '$parse',\n    'FileUploader',\n    'FileSelect'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/directives/FileSelect.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nexport default function __identity($parse, FileUploader, FileDrop) {\n\n\n    return {\n        link: (scope, element, attributes) => {\n            var uploader = scope.$eval(attributes.uploader);\n\n            if (!(uploader instanceof FileUploader)) {\n                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n            }\n\n            if (!uploader.isHTML5) return;\n\n            var object = new FileDrop({\n                uploader: uploader,\n                element: element\n            });\n\n            object.getOptions = $parse(attributes.options).bind(object, scope);\n            object.getFilters = () => attributes.filters;\n        }\n    };\n\n\n}\n\n\n__identity.$inject = [\n    '$parse',\n    'FileUploader',\n    'FileDrop'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/directives/FileDrop.js\n **/","'use strict';\n\n\nimport CONFIG from './../config.json';\n\n\nexport default function __identity(FileUploader, FileOver) {\n\n\n    return {\n        link: (scope, element, attributes) => {\n            var uploader = scope.$eval(attributes.uploader);\n\n            if (!(uploader instanceof FileUploader)) {\n                throw new TypeError('\"Uploader\" must be an instance of FileUploader');\n            }\n\n            var object = new FileOver({\n                uploader: uploader,\n                element: element\n            });\n\n            object.getOverClass = () => attributes.overClass || object.overClass;\n        }\n    };\n\n\n}\n\n\n__identity.$inject = [\n    'FileUploader',\n    'FileOver'\n];\n\n\n/** WEBPACK FOOTER **\n ** ./src/directives/FileOver.js\n **/"],"sourceRoot":""}