loopback-component-storage/example-2.0/client/angular-file-upload.min.js.map

2 lines
154 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///angular-file-upload.min.js","webpack:///webpack/bootstrap 8e42257eef0ea5c40144","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","_FileDirective","events","$destroy","change","uploader","isHTML5","element","removeAttr","getOptions","getFilters","isEmptyAfterSelection","attr","onChange","files","filters","destroy","addToQueue","$inject","url","alias","headers","queue","progress","autoUpload","removeAfterUpload","method","formData","queueLimit","Number","MAX_VALUE","withCredentials","copy","extend","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","replaceWith","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","clone","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\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 // Map of events\n\t this.events = {\n\t $destroy: \"destroy\",\n\t change: \"onChange\"\n\t };\n\t // Name of property inside uploader._directive object\n\t this.prop = \"select\";\n\t\n\t _get(Object.getPrototypeOf(FileSelect.prototype), \"constructor\", this).call(this, options);\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()) this.element.prop(\"value\", null);\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 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 // Map of events\n\t this.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 this.prop = \"drop\";\n\t\n\t _get(Object.getPrototypeOf(FileDrop.prototype), \"constructor\", this).call(this, options);\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\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 // Map of events\n\t this.events = {\n\t $destroy: \"destroy\"\n\t };\n\t // Name of property inside uploader._directive object\n\t this.prop = \"over\";\n\t // Over class\n\t this.overClass = \"nv-file-over\";\n\t\n\t _get(Object.getPrototypeOf(FileOver.prototype), \"constructor\", this).call(this, options);\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 8e42257eef0ea5c40144\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\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 // Map of events\r\n this.events = {\r\n $destroy: 'destroy',\r\n change: 'onChange'\r\n };\r\n // Name of property inside uploader._directive object\r\n this.prop = 'select';\r\n \r\n super(options);\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()) this.element.prop('value', null);\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];\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 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 // Map of events\r\n this.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 this.prop = 'drop';\r\n \r\n super(options);\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\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 // Map of events\r\n this.events = {\r\n $destroy: 'destroy'\r\n };\r\n // Name of property inside uploader._directive object\r\n this.prop = 'over';\r\n // Over class\r\n this.overClass = 'nv-file-over';\r\n \r\n super(options);\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":""}