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