{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///angular-file-upload.min.js","webpack:///webpack/bootstrap 4e4cd37cef8307ff6bc2?839d","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/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","_FileDrop","_FileDrop2","_FileOver","_FileOver2","_FileSelect3","_FileSelect4","_FileDrop3","_FileDrop4","_FileOver3","_FileOver4","angular","name","value","directive","run","FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","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","_failFilterIndex","_directives","select","drop","over","unshift","fn","_queueLimitFilter","_folderFilter","prototype","addToQueue","files","_this","list","isArrayLikeObject","arrayOfFilters","_getFilters","count","length","addedFileItems","forEach","some","temp","_isValidFile","fileItem","push","_onAfterAddingFile","filter","_onWhenAddingFileFailed","_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","upload","cancelAll","isFile","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","$$phase","$apply","size","type","file","_this4","every","_isSuccessCode","_transformResponse","headersGetter","_headersGetter","defaults","transformResponse","transformFn","_parseHeaders","val","i","parsed","split","line","slice","trim","toLowerCase","parsedHeaders","_xhrTransport","sendable","_this5","xhr","_xhr","XMLHttpRequest","_file","append","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","bind","html","contentDocument","body","innerHTML","e","_onSuccessItem","unbind","after","submit","_onBeforeUpload","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","nextItem","isDefined","isObject","inherit","source","create","super_","_angular","$inject","fileOrInput","isInput","isElement","fakePathOrObject","postfix","isString","_createFromFakePath","path","lastModifiedDate","lastIndexOf","_createFromObject","$compile","uploader","isSuccess","isError","_replaceNode","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","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 _FileDrop = __webpack_require__(8);\n\t\n\tvar _FileDrop2 = _interopRequireDefault(_FileDrop);\n\t\n\tvar _FileOver = __webpack_require__(9);\n\t\n\tvar _FileOver2 = _interopRequireDefault(_FileOver);\n\t\n\tvar _FileSelect3 = __webpack_require__(10);\n\t\n\tvar _FileSelect4 = _interopRequireDefault(_FileSelect3);\n\t\n\tvar _FileDrop3 = __webpack_require__(11);\n\t\n\tvar _FileDrop4 = _interopRequireDefault(_FileDrop3);\n\t\n\tvar _FileOver3 = __webpack_require__(12);\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).directive('nvFileSelect', _FileSelect4.default).directive('nvFileDrop', _FileDrop4.default).directive('nvFileOver', _FileOver4.default).run(['FileUploader', 'FileLikeObject', 'FileItem', 'FileDirective', 'FileSelect', 'FileDrop', 'FileOver', function (FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver) {\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}]);\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\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 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 element = _angular.element;\n\tfunction __identity(fileUploaderOptions, $rootScope, $http, $window, $timeout, FileLikeObject, FileItem) {\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                _failFilterIndex: -1,\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 list = this.isArrayLikeObject(files) ? files : [files];\n\t            var arrayOfFilters = this._getFilters(filters);\n\t            var count = this.queue.length;\n\t            var addedFileItems = [];\n\t\n\t            forEach(list, function (some /*{File|HTMLInputElement|Object}*/) {\n\t                var temp = new FileLikeObject(some);\n\t\n\t                if (_this._isValidFile(temp, arrayOfFilters, options)) {\n\t                    var fileItem = new FileItem(_this, some, options);\n\t                    addedFileItems.push(fileItem);\n\t                    _this.queue.push(fileItem);\n\t                    _this._onAfterAddingFile(fileItem);\n\t                } else {\n\t                    var filter = arrayOfFilters[_this._failFilterIndex];\n\t                    _this._onWhenAddingFileFailed(temp, filter, options);\n\t                }\n\t            });\n\t\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         * 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         * 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         * Returns \"true\" if file pass all filters\n\t         * @param {File|Object} file\n\t         * @param {Array<Function>} filters\n\t         * @param {Object} options\n\t         * @returns {Boolean}\n\t         * @private\n\t         */\n\t\n\t\n\t        FileUploader.prototype._isValidFile = function _isValidFile(file, filters, options) {\n\t            var _this4 = this;\n\t\n\t            this._failFilterIndex = -1;\n\t            return !filters.length ? true : filters.every(function (filter) {\n\t                _this4._failFilterIndex++;\n\t                return filter.fn.call(_this4, file, options);\n\t            });\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'];\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                this.uploader._onCompleteItem(this, '', 0, []);\n\t                this.uploader._onErrorItem(this, '', 0, []);\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, __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/* 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\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/* 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 __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/* 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, 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/* 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(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 4e4cd37cef8307ff6bc2\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 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    .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        function(FileUploader, FileLikeObject, FileItem, FileDirective, FileSelect, FileDrop, FileOver) {\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        }\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    copy,\n    extend,\n    forEach,\n    isObject,\n    isNumber,\n    isDefined,\n    isArray,\n    element\n    } = angular;\n\n\nexport default function __identity(fileUploaderOptions, $rootScope, $http, $window, $timeout, FileLikeObject, FileItem) {\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                _failFilterIndex: -1,\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            var list = this.isArrayLikeObject(files) ? files: [files];\n            var arrayOfFilters = this._getFilters(filters);\n            var count = this.queue.length;\n            var addedFileItems = [];\n\n            forEach(list, (some /*{File|HTMLInputElement|Object}*/) => {\n                var temp = new FileLikeObject(some);\n\n                if (this._isValidFile(temp, arrayOfFilters, options)) {\n                    var fileItem = new FileItem(this, some, options);\n                    addedFileItems.push(fileItem);\n                    this.queue.push(fileItem);\n                    this._onAfterAddingFile(fileItem);\n                } else {\n                    var filter = arrayOfFilters[this._failFilterIndex];\n                    this._onWhenAddingFileFailed(temp, filter, options);\n                }\n            });\n\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         * 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         * 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         * Returns \"true\" if file pass all filters\n         * @param {File|Object} file\n         * @param {Array<Function>} filters\n         * @param {Object} options\n         * @returns {Boolean}\n         * @private\n         */\n        _isValidFile(file, filters, options) {\n            this._failFilterIndex = -1;\n            return !filters.length ? true : filters.every((filter) => {\n                this._failFilterIndex++;\n                return filter.fn.call(this, file, options);\n            });\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];\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                this.uploader._onCompleteItem(this, '', 0, []);\n                this.uploader._onErrorItem(this, '', 0, []);\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/** 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\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":""}