%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/hr/web/js/
Upload File :
Create Path :
Current File : /var/www/html/hr/web/js/chunk-4917b07f.4d308799.js.map

{"version":3,"sources":["webpack:///./src/components/_file-import-error.vue?df67","webpack:///src/components/_file-import-error.vue","webpack:///./src/components/_file-import-error.vue?2a47","webpack:///./src/components/_file-import-error.vue","webpack:///./node_modules/@flowjs/flow.js/src/flow.js","webpack:///./src/components/_file-import.vue?6d80","webpack:///src/components/_file-import.vue","webpack:///./src/components/_file-import.vue?a8fa","webpack:///./src/components/_file-import.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","error","message","attrs","on","$event","$emit","_l","err","index","key","$t","row","errors","join","staticRenderFns","component","window","document","undefined","ie10plus","navigator","msPointerEnabled","Flow","prototype","event","callback","toLowerCase","events","hasOwnProperty","push","off","fn","arrayRemove","fire","args","Array","slice","call","arguments","preventDefault","each","apply","unshift","webkitReadDataTransfer","$","queue","dataTransfer","items","length","files","readDirectory","reader","readEntries","entries","entry","isFile","fullPath","file","fileReadSuccess","readError","isDirectory","createReader","decrement","relativePath","substring","fileError","addFiles","item","webkitGetAsEntry","getAsFile","generateUniqueIdentifier","custom","opts","webkitRelativePath","fileName","name","size","replace","uploadNextChunk","preventEvents","found","prioritizeFirstAndLastChunk","paused","chunks","status","send","chunk","outstanding","isComplete","async","assignBrowse","domNodes","singleFile","attributes","Element","domNode","input","tagName","type","createElement","setAttribute","extend","style","visibility","position","width","height","appendChild","addEventListener","click","value","e","target","assignDrop","preventEvent","onDrop","unAssignDrop","removeEventListener","isUploading","uploading","_shouldUploadNext","num","should","simultaneousUploads","upload","ret","started","resume","pause","cancel","i","progress","totalDone","totalSize","addFile","fileList","uniqueIdentifier","allowDuplicateUploads","getFromUniqueIdentifier","f","FlowFile","removeFile","splice","abort","getSize","sizeUploaded","timeRemaining","sizeDelta","averageSpeed","Number","POSITIVE_INFINITY","Math","floor","measureSpeed","timeSpan","Date","now","_lastProgressCallback","smoothingFactor","flowObj","speedSmoothingFactor","uploaded","currentSpeed","max","_prevUploadedSize","chunkEvent","progressCallbacksInterval","reset","c","retry","bootstrap","initFileFn","_prevProgress","round","forceChunkSize","ceil","chunkSize","evalOpts","offset","FlowChunk","bytesLoaded","endByte","startByte","percent","preprocessState","readState","delta","getType","split","getExtension","substr","lastIndexOf","getParams","flowChunkNumber","flowChunkSize","flowCurrentChunkSize","flowTotalSize","fileObj","flowIdentifier","flowFilename","flowRelativePath","flowTotalChunks","getTarget","params","indexOf","test","xhr","XMLHttpRequest","testHandler","testMethod","data","prepareXhrRequest","preprocessFinished","computeEndByte","readFinished","bytes","preprocess","read","readFileFn","testChunks","tested","loaded","total","pendingRetry","progressHandler","doneHandler","uploadMethod","method","changeRawDataBeforeSend","isTest","readyState","successStatuses","permanentErrors","retries","maxChunkRetries","responseText","s","paramsMethod","blob","query","v","k","encodeURIComponent","FormData","append","fileParameterName","open","withCredentials","headers","setRequestHeader","version","module","exports","console","warn","support","File","Blob","FileList","webkitSlice","mozSlice","supportDirectory","userAgent","defaults","chunkRetryInterval","onDropStopPropagation","webAPIFileRead","stopPropagation","fileType","function_name","min","lengthComputable","retryInterval","setTimeout","array","context","bind","dst","src","obj","ref","_t"],"mappings":"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","file":"js/chunk-4917b07f.4d308799.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"relative\"},[_c('span',[_vm._v(\" \"+_vm._s(_vm.error.message))]),_c('vs-button',{staticClass:\"absolute top-0 right-0 self-end p-0\",attrs:{\"type\":\"border\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('BaseIcon',{attrs:{\"fixed-width\":\"\",\"name\":\"times\"}})],1)],1),_vm._l((_vm.error.errors),function(err,index){return _c('div',{key:index},[_c('vs-alert',{staticClass:\"my-2\",attrs:{\"color\":\"danger\",\"icon\":\"new_releases\"}},[_vm._v(\" \"+_vm._s(_vm.$t('users.import.error_line', {row: err.row}))+\": \"+_vm._s(err.errors.join(' '))+\" \")])],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div class=\"relative\">\n      <span> {{error.message}}</span>\n      <vs-button @click=\"$emit('close')\" class=\"absolute top-0 right-0 self-end p-0\" type=\"border\">\n        <BaseIcon fixed-width name=\"times\"></BaseIcon>\n      </vs-button>\n    </div>\n\n    <div :key=\"index\" v-for=\"(err, index) in error.errors\">\n      <vs-alert class=\"my-2\" color=\"danger\" icon=\"new_releases\">\n        {{$t('users.import.error_line', {row: err.row})}}: {{err.errors.join(' ')}}\n      </vs-alert>\n    </div>\n  </div>\n</template>\n\n<script>\n  export default {\n    props: {\n      error: {\n        type: Object,\n        required: true\n      }\n    },\n  };\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_file-import-error.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_file-import-error.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_file-import-error.vue?vue&type=template&id=1e4fff3a&\"\nimport script from \"./_file-import-error.vue?vue&type=script&lang=js&\"\nexport * from \"./_file-import-error.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * @license MIT\n */\n(function(window, document, undefined) {'use strict';\n  if (!window || !document) {\n    console.warn('Flowjs needs window and document objects to work');\n    return;\n  }\n  // ie10+\n  var ie10plus = window.navigator.msPointerEnabled;\n  /**\n   * Flow.js is a library providing multiple simultaneous, stable and\n   * resumable uploads via the HTML5 File API.\n   * @param [opts]\n   * @param {number|Function} [opts.chunkSize]\n   * @param {bool} [opts.forceChunkSize]\n   * @param {number} [opts.simultaneousUploads]\n   * @param {bool} [opts.singleFile]\n   * @param {string} [opts.fileParameterName]\n   * @param {number} [opts.progressCallbacksInterval]\n   * @param {number} [opts.speedSmoothingFactor]\n   * @param {Object|Function} [opts.query]\n   * @param {Object|Function} [opts.headers]\n   * @param {bool} [opts.withCredentials]\n   * @param {Function} [opts.preprocess]\n   * @param {string} [opts.method]\n   * @param {string|Function} [opts.testMethod]\n   * @param {string|Function} [opts.uploadMethod]\n   * @param {bool} [opts.prioritizeFirstAndLastChunk]\n   * @param {bool} [opts.allowDuplicateUploads]\n   * @param {string|Function} [opts.target]\n   * @param {number} [opts.maxChunkRetries]\n   * @param {number} [opts.chunkRetryInterval]\n   * @param {Array.<number>} [opts.permanentErrors]\n   * @param {Array.<number>} [opts.successStatuses]\n   * @param {Function} [opts.initFileFn]\n   * @param {Function} [opts.readFileFn]\n   * @param {Function} [opts.generateUniqueIdentifier]\n   * @constructor\n   */\n  function Flow(opts) {\n    /**\n     * Supported by browser?\n     * @type {boolean}\n     */\n    this.support = (\n        typeof File !== 'undefined' &&\n        typeof Blob !== 'undefined' &&\n        typeof FileList !== 'undefined' &&\n        (\n          !!Blob.prototype.slice || !!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice ||\n          false\n        ) // slicing files support\n    );\n\n    if (!this.support) {\n      return ;\n    }\n\n    /**\n     * Check if directory upload is supported\n     * @type {boolean}\n     */\n    this.supportDirectory = (\n        /Chrome/.test(window.navigator.userAgent) ||\n        /Firefox/.test(window.navigator.userAgent) ||\n        /Edge/.test(window.navigator.userAgent)\n    );\n\n    /**\n     * List of FlowFile objects\n     * @type {Array.<FlowFile>}\n     */\n    this.files = [];\n\n    /**\n     * Default options for flow.js\n     * @type {Object}\n     */\n    this.defaults = {\n      chunkSize: 1024 * 1024,\n      forceChunkSize: false,\n      simultaneousUploads: 3,\n      singleFile: false,\n      fileParameterName: 'file',\n      progressCallbacksInterval: 500,\n      speedSmoothingFactor: 0.1,\n      query: {},\n      headers: {},\n      withCredentials: false,\n      preprocess: null,\n      changeRawDataBeforeSend: null,\n      method: 'multipart',\n      testMethod: 'GET',\n      uploadMethod: 'POST',\n      prioritizeFirstAndLastChunk: false,\n      allowDuplicateUploads: false,\n      target: '/',\n      testChunks: true,\n      generateUniqueIdentifier: null,\n      maxChunkRetries: 0,\n      chunkRetryInterval: null,\n      permanentErrors: [404, 413, 415, 500, 501],\n      successStatuses: [200, 201, 202],\n      onDropStopPropagation: false,\n      initFileFn: null,\n      readFileFn: webAPIFileRead\n    };\n\n    /**\n     * Current options\n     * @type {Object}\n     */\n    this.opts = {};\n\n    /**\n     * List of events:\n     *  key stands for event name\n     *  value array list of callbacks\n     * @type {}\n     */\n    this.events = {};\n\n    var $ = this;\n\n    /**\n     * On drop event\n     * @function\n     * @param {MouseEvent} event\n     */\n    this.onDrop = function (event) {\n      if ($.opts.onDropStopPropagation) {\n        event.stopPropagation();\n      }\n      event.preventDefault();\n      var dataTransfer = event.dataTransfer;\n      if (dataTransfer.items && dataTransfer.items[0] &&\n        dataTransfer.items[0].webkitGetAsEntry) {\n        $.webkitReadDataTransfer(event);\n      } else {\n        $.addFiles(dataTransfer.files, event);\n      }\n    };\n\n    /**\n     * Prevent default\n     * @function\n     * @param {MouseEvent} event\n     */\n    this.preventEvent = function (event) {\n      event.preventDefault();\n    };\n\n\n    /**\n     * Current options\n     * @type {Object}\n     */\n    this.opts = Flow.extend({}, this.defaults, opts || {});\n\n  }\n\n  Flow.prototype = {\n    /**\n     * Set a callback for an event, possible events:\n     * fileSuccess(file), fileProgress(file), fileAdded(file, event),\n     * fileRemoved(file), fileRetry(file), fileError(file, message),\n     * complete(), progress(), error(message, file), pause()\n     * @function\n     * @param {string} event\n     * @param {Function} callback\n     */\n    on: function (event, callback) {\n      event = event.toLowerCase();\n      if (!this.events.hasOwnProperty(event)) {\n        this.events[event] = [];\n      }\n      this.events[event].push(callback);\n    },\n\n    /**\n     * Remove event callback\n     * @function\n     * @param {string} [event] removes all events if not specified\n     * @param {Function} [fn] removes all callbacks of event if not specified\n     */\n    off: function (event, fn) {\n      if (event !== undefined) {\n        event = event.toLowerCase();\n        if (fn !== undefined) {\n          if (this.events.hasOwnProperty(event)) {\n            arrayRemove(this.events[event], fn);\n          }\n        } else {\n          delete this.events[event];\n        }\n      } else {\n        this.events = {};\n      }\n    },\n\n    /**\n     * Fire an event\n     * @function\n     * @param {string} event event name\n     * @param {...} args arguments of a callback\n     * @return {bool} value is false if at least one of the event handlers which handled this event\n     * returned false. Otherwise it returns true.\n     */\n    fire: function (event, args) {\n      // `arguments` is an object, not array, in FF, so:\n      args = Array.prototype.slice.call(arguments);\n      event = event.toLowerCase();\n      var preventDefault = false;\n      if (this.events.hasOwnProperty(event)) {\n        each(this.events[event], function (callback) {\n          preventDefault = callback.apply(this, args.slice(1)) === false || preventDefault;\n        }, this);\n      }\n      if (event != 'catchall') {\n        args.unshift('catchAll');\n        preventDefault = this.fire.apply(this, args) === false || preventDefault;\n      }\n      return !preventDefault;\n    },\n\n    /**\n     * Read webkit dataTransfer object\n     * @param event\n     */\n    webkitReadDataTransfer: function (event) {\n      var $ = this;\n      var queue = event.dataTransfer.items.length;\n      var files = [];\n      each(event.dataTransfer.items, function (item) {\n        var entry = item.webkitGetAsEntry();\n        if (!entry) {\n          decrement();\n          return ;\n        }\n        if (entry.isFile) {\n          // due to a bug in Chrome's File System API impl - #149735\n          fileReadSuccess(item.getAsFile(), entry.fullPath);\n        } else {\n          readDirectory(entry.createReader());\n        }\n      });\n      function readDirectory(reader) {\n        reader.readEntries(function (entries) {\n          if (entries.length) {\n            queue += entries.length;\n            each(entries, function(entry) {\n              if (entry.isFile) {\n                var fullPath = entry.fullPath;\n                entry.file(function (file) {\n                  fileReadSuccess(file, fullPath);\n                }, readError);\n              } else if (entry.isDirectory) {\n                readDirectory(entry.createReader());\n              }\n            });\n            readDirectory(reader);\n          } else {\n            decrement();\n          }\n        }, readError);\n      }\n      function fileReadSuccess(file, fullPath) {\n        // relative path should not start with \"/\"\n        file.relativePath = fullPath.substring(1);\n        files.push(file);\n        decrement();\n      }\n      function readError(fileError) {\n        throw fileError;\n      }\n      function decrement() {\n        if (--queue == 0) {\n          $.addFiles(files, event);\n        }\n      }\n    },\n\n    /**\n     * Generate unique identifier for a file\n     * @function\n     * @param {FlowFile} file\n     * @returns {string}\n     */\n    generateUniqueIdentifier: function (file) {\n      var custom = this.opts.generateUniqueIdentifier;\n      if (typeof custom === 'function') {\n        return custom(file);\n      }\n      // Some confusion in different versions of Firefox\n      var relativePath = file.relativePath || file.webkitRelativePath || file.fileName || file.name;\n      return file.size + '-' + relativePath.replace(/[^0-9a-zA-Z_-]/img, '');\n    },\n\n    /**\n     * Upload next chunk from the queue\n     * @function\n     * @returns {boolean}\n     * @private\n     */\n    uploadNextChunk: function (preventEvents) {\n      // In some cases (such as videos) it's really handy to upload the first\n      // and last chunk of a file quickly; this let's the server check the file's\n      // metadata and determine if there's even a point in continuing.\n      var found = false;\n      if (this.opts.prioritizeFirstAndLastChunk) {\n        each(this.files, function (file) {\n          if (!file.paused && file.chunks.length &&\n            file.chunks[0].status() === 'pending') {\n            file.chunks[0].send();\n            found = true;\n            return false;\n          }\n          if (!file.paused && file.chunks.length > 1 &&\n            file.chunks[file.chunks.length - 1].status() === 'pending') {\n            file.chunks[file.chunks.length - 1].send();\n            found = true;\n            return false;\n          }\n        });\n        if (found) {\n          return found;\n        }\n      }\n\n      // Now, simply look for the next, best thing to upload\n      each(this.files, function (file) {\n        if (!file.paused) {\n          each(file.chunks, function (chunk) {\n            if (chunk.status() === 'pending') {\n              chunk.send();\n              found = true;\n              return false;\n            }\n          });\n        }\n        if (found) {\n          return false;\n        }\n      });\n      if (found) {\n        return true;\n      }\n\n      // The are no more outstanding chunks to upload, check is everything is done\n      var outstanding = false;\n      each(this.files, function (file) {\n        if (!file.isComplete()) {\n          outstanding = true;\n          return false;\n        }\n      });\n      if (!outstanding && !preventEvents) {\n        // All chunks have been uploaded, complete\n        async(function () {\n          this.fire('complete');\n        }, this);\n      }\n      return false;\n    },\n\n\n    /**\n     * Assign a browse action to one or more DOM nodes.\n     * @function\n     * @param {Element|Array.<Element>} domNodes\n     * @param {boolean} isDirectory Pass in true to allow directories to\n     * @param {boolean} singleFile prevent multi file upload\n     * @param {Object} attributes set custom attributes:\n     *  http://www.w3.org/TR/html-markup/input.file.html#input.file-attributes\n     *  eg: accept: 'image/*'\n     * be selected (Chrome only).\n     */\n    assignBrowse: function (domNodes, isDirectory, singleFile, attributes) {\n      if (domNodes instanceof Element) {\n        domNodes = [domNodes];\n      }\n\n      each(domNodes, function (domNode) {\n        var input;\n        if (domNode.tagName === 'INPUT' && domNode.type === 'file') {\n          input = domNode;\n        } else {\n          input = document.createElement('input');\n          input.setAttribute('type', 'file');\n          // display:none - not working in opera 12\n          extend(input.style, {\n            visibility: 'hidden',\n            position: 'absolute',\n            width: '1px',\n            height: '1px'\n          });\n          // for opera 12 browser, input must be assigned to a document\n          domNode.appendChild(input);\n          // https://developer.mozilla.org/en/using_files_from_web_applications)\n          // event listener is executed two times\n          // first one - original mouse click event\n          // second - input.click(), input is inside domNode\n          domNode.addEventListener('click', function() {\n            input.click();\n          }, false);\n        }\n        if (!this.opts.singleFile && !singleFile) {\n          input.setAttribute('multiple', 'multiple');\n        }\n        if (isDirectory) {\n          input.setAttribute('webkitdirectory', 'webkitdirectory');\n        }\n        each(attributes, function (value, key) {\n          input.setAttribute(key, value);\n        });\n        // When new files are added, simply append them to the overall list\n        var $ = this;\n        input.addEventListener('change', function (e) {\n       \t  if (e.target.value) {\n            $.addFiles(e.target.files, e);\n            e.target.value = '';\n       \t  }\n        }, false);\n      }, this);\n    },\n\n    /**\n     * Assign one or more DOM nodes as a drop target.\n     * @function\n     * @param {Element|Array.<Element>} domNodes\n     */\n    assignDrop: function (domNodes) {\n      if (typeof domNodes.length === 'undefined') {\n        domNodes = [domNodes];\n      }\n      each(domNodes, function (domNode) {\n        domNode.addEventListener('dragover', this.preventEvent, false);\n        domNode.addEventListener('dragenter', this.preventEvent, false);\n        domNode.addEventListener('drop', this.onDrop, false);\n      }, this);\n    },\n\n    /**\n     * Un-assign drop event from DOM nodes\n     * @function\n     * @param domNodes\n     */\n    unAssignDrop: function (domNodes) {\n      if (typeof domNodes.length === 'undefined') {\n        domNodes = [domNodes];\n      }\n      each(domNodes, function (domNode) {\n        domNode.removeEventListener('dragover', this.preventEvent);\n        domNode.removeEventListener('dragenter', this.preventEvent);\n        domNode.removeEventListener('drop', this.onDrop);\n      }, this);\n    },\n\n    /**\n     * Returns a boolean indicating whether or not the instance is currently\n     * uploading anything.\n     * @function\n     * @returns {boolean}\n     */\n    isUploading: function () {\n      var uploading = false;\n      each(this.files, function (file) {\n        if (file.isUploading()) {\n          uploading = true;\n          return false;\n        }\n      });\n      return uploading;\n    },\n\n    /**\n     * should upload next chunk\n     * @function\n     * @returns {boolean|number}\n     */\n    _shouldUploadNext: function () {\n      var num = 0;\n      var should = true;\n      var simultaneousUploads = this.opts.simultaneousUploads;\n      each(this.files, function (file) {\n        each(file.chunks, function(chunk) {\n          if (chunk.status() === 'uploading') {\n            num++;\n            if (num >= simultaneousUploads) {\n              should = false;\n              return false;\n            }\n          }\n        });\n      });\n      // if should is true then return uploading chunks's length\n      return should && num;\n    },\n\n    /**\n     * Start or resume uploading.\n     * @function\n     */\n    upload: function () {\n      // Make sure we don't start too many uploads at once\n      var ret = this._shouldUploadNext();\n      if (ret === false) {\n        return;\n      }\n      // Kick off the queue\n      this.fire('uploadStart');\n      var started = false;\n      for (var num = 1; num <= this.opts.simultaneousUploads - ret; num++) {\n        started = this.uploadNextChunk(true) || started;\n      }\n      if (!started) {\n        async(function () {\n          this.fire('complete');\n        }, this);\n      }\n    },\n\n    /**\n     * Resume uploading.\n     * @function\n     */\n    resume: function () {\n      each(this.files, function (file) {\n        if (!file.isComplete()) {\n          file.resume();\n        }\n      });\n    },\n\n    /**\n     * Pause uploading.\n     * @function\n     */\n    pause: function () {\n      each(this.files, function (file) {\n        file.pause();\n      });\n    },\n\n    /**\n     * Cancel upload of all FlowFile objects and remove them from the list.\n     * @function\n     */\n    cancel: function () {\n      for (var i = this.files.length - 1; i >= 0; i--) {\n        this.files[i].cancel();\n      }\n    },\n\n    /**\n     * Returns a number between 0 and 1 indicating the current upload progress\n     * of all files.\n     * @function\n     * @returns {number}\n     */\n    progress: function () {\n      var totalDone = 0;\n      var totalSize = 0;\n      // Resume all chunks currently being uploaded\n      each(this.files, function (file) {\n        totalDone += file.progress() * file.size;\n        totalSize += file.size;\n      });\n      return totalSize > 0 ? totalDone / totalSize : 0;\n    },\n\n    /**\n     * Add a HTML5 File object to the list of files.\n     * @function\n     * @param {File} file\n     * @param {Event} [event] event is optional\n     */\n    addFile: function (file, event) {\n      this.addFiles([file], event);\n    },\n\n    /**\n     * Add a HTML5 File object to the list of files.\n     * @function\n     * @param {FileList|Array} fileList\n     * @param {Event} [event] event is optional\n     */\n    addFiles: function (fileList, event) {\n      var files = [];\n      each(fileList, function (file) {\n        // https://github.com/flowjs/flow.js/issues/55\n        if ((!ie10plus || ie10plus && file.size > 0) && !(file.size % 4096 === 0 && (file.name === '.' || file.fileName === '.'))) {\n          var uniqueIdentifier = this.generateUniqueIdentifier(file);\n          if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(uniqueIdentifier)) {\n            var f = new FlowFile(this, file, uniqueIdentifier);\n            if (this.fire('fileAdded', f, event)) {\n              files.push(f);\n            }\n          }\n        }\n      }, this);\n      if (this.fire('filesAdded', files, event)) {\n        each(files, function (file) {\n          if (this.opts.singleFile && this.files.length > 0) {\n            this.removeFile(this.files[0]);\n          }\n          this.files.push(file);\n        }, this);\n        this.fire('filesSubmitted', files, event);\n      }\n    },\n\n\n    /**\n     * Cancel upload of a specific FlowFile object from the list.\n     * @function\n     * @param {FlowFile} file\n     */\n    removeFile: function (file) {\n      for (var i = this.files.length - 1; i >= 0; i--) {\n        if (this.files[i] === file) {\n          this.files.splice(i, 1);\n          file.abort();\n          this.fire('fileRemoved', file);\n        }\n      }\n    },\n\n    /**\n     * Look up a FlowFile object by its unique identifier.\n     * @function\n     * @param {string} uniqueIdentifier\n     * @returns {boolean|FlowFile} false if file was not found\n     */\n    getFromUniqueIdentifier: function (uniqueIdentifier) {\n      var ret = false;\n      each(this.files, function (file) {\n        if (file.uniqueIdentifier === uniqueIdentifier) {\n          ret = file;\n        }\n      });\n      return ret;\n    },\n\n    /**\n     * Returns the total size of all files in bytes.\n     * @function\n     * @returns {number}\n     */\n    getSize: function () {\n      var totalSize = 0;\n      each(this.files, function (file) {\n        totalSize += file.size;\n      });\n      return totalSize;\n    },\n\n    /**\n     * Returns the total size uploaded of all files in bytes.\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = 0;\n      each(this.files, function (file) {\n        size += file.sizeUploaded();\n      });\n      return size;\n    },\n\n    /**\n     * Returns remaining time to upload all files in seconds. Accuracy is based on average speed.\n     * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`\n     * @function\n     * @returns {number}\n     */\n    timeRemaining: function () {\n      var sizeDelta = 0;\n      var averageSpeed = 0;\n      each(this.files, function (file) {\n        if (!file.paused && !file.error) {\n          sizeDelta += file.size - file.sizeUploaded();\n          averageSpeed += file.averageSpeed;\n        }\n      });\n      if (sizeDelta && !averageSpeed) {\n        return Number.POSITIVE_INFINITY;\n      }\n      if (!sizeDelta && !averageSpeed) {\n        return 0;\n      }\n      return Math.floor(sizeDelta / averageSpeed);\n    }\n  };\n\n\n\n\n\n\n  /**\n   * FlowFile class\n   * @name FlowFile\n   * @param {Flow} flowObj\n   * @param {File} file\n   * @param {string} uniqueIdentifier\n   * @constructor\n   */\n  function FlowFile(flowObj, file, uniqueIdentifier) {\n\n    /**\n     * Reference to parent Flow instance\n     * @type {Flow}\n     */\n    this.flowObj = flowObj;\n\n    /**\n     * Used to store the bytes read\n     * @type {Blob|string}\n     */\n    this.bytes = null;\n\n    /**\n     * Reference to file\n     * @type {File}\n     */\n    this.file = file;\n\n    /**\n     * File name. Some confusion in different versions of Firefox\n     * @type {string}\n     */\n    this.name = file.fileName || file.name;\n\n    /**\n     * File size\n     * @type {number}\n     */\n    this.size = file.size;\n\n    /**\n     * Relative file path\n     * @type {string}\n     */\n    this.relativePath = file.relativePath || file.webkitRelativePath || this.name;\n\n    /**\n     * File unique identifier\n     * @type {string}\n     */\n    this.uniqueIdentifier = (uniqueIdentifier === undefined ? flowObj.generateUniqueIdentifier(file) : uniqueIdentifier);\n                        \n    /**\n     * Size of Each Chunk\n     * @type {number}\n     */\n    this.chunkSize = 0;\n\n    /**\n     * List of chunks\n     * @type {Array.<FlowChunk>}\n     */\n    this.chunks = [];\n\n    /**\n     * Indicated if file is paused\n     * @type {boolean}\n     */\n    this.paused = false;\n\n    /**\n     * Indicated if file has encountered an error\n     * @type {boolean}\n     */\n    this.error = false;\n\n    /**\n     * Average upload speed\n     * @type {number}\n     */\n    this.averageSpeed = 0;\n\n    /**\n     * Current upload speed\n     * @type {number}\n     */\n    this.currentSpeed = 0;\n\n    /**\n     * Date then progress was called last time\n     * @type {number}\n     * @private\n     */\n    this._lastProgressCallback = Date.now();\n\n    /**\n     * Previously uploaded file size\n     * @type {number}\n     * @private\n     */\n    this._prevUploadedSize = 0;\n\n    /**\n     * Holds previous progress\n     * @type {number}\n     * @private\n     */\n    this._prevProgress = 0;\n\n    this.bootstrap();\n  }\n\n  FlowFile.prototype = {\n    /**\n     * Update speed parameters\n     * @link http://stackoverflow.com/questions/2779600/how-to-estimate-download-time-remaining-accurately\n     * @function\n     */\n    measureSpeed: function () {\n      var timeSpan = Date.now() - this._lastProgressCallback;\n      if (!timeSpan) {\n        return ;\n      }\n      var smoothingFactor = this.flowObj.opts.speedSmoothingFactor;\n      var uploaded = this.sizeUploaded();\n      // Prevent negative upload speed after file upload resume\n      this.currentSpeed = Math.max((uploaded - this._prevUploadedSize) / timeSpan * 1000, 0);\n      this.averageSpeed = smoothingFactor * this.currentSpeed + (1 - smoothingFactor) * this.averageSpeed;\n      this._prevUploadedSize = uploaded;\n    },\n\n    /**\n     * For internal usage only.\n     * Callback when something happens within the chunk.\n     * @function\n     * @param {FlowChunk} chunk\n     * @param {string} event can be 'progress', 'success', 'error' or 'retry'\n     * @param {string} [message]\n     */\n    chunkEvent: function (chunk, event, message) {\n      switch (event) {\n        case 'progress':\n          if (Date.now() - this._lastProgressCallback <\n            this.flowObj.opts.progressCallbacksInterval) {\n            break;\n          }\n          this.measureSpeed();\n          this.flowObj.fire('fileProgress', this, chunk);\n          this.flowObj.fire('progress');\n          this._lastProgressCallback = Date.now();\n          break;\n        case 'error':\n          this.error = true;\n          this.abort(true);\n          this.flowObj.fire('fileError', this, message, chunk);\n          this.flowObj.fire('error', message, this, chunk);\n          break;\n        case 'success':\n          if (this.error) {\n            return;\n          }\n          this.measureSpeed();\n          this.flowObj.fire('fileProgress', this, chunk);\n          this.flowObj.fire('progress');\n          this._lastProgressCallback = Date.now();\n          if (this.isComplete()) {\n            this.currentSpeed = 0;\n            this.averageSpeed = 0;\n            this.flowObj.fire('fileSuccess', this, message, chunk);\n          }\n          break;\n        case 'retry':\n          this.flowObj.fire('fileRetry', this, chunk);\n          break;\n      }\n    },\n\n    /**\n     * Pause file upload\n     * @function\n     */\n    pause: function() {\n      this.paused = true;\n      this.abort();\n    },\n\n    /**\n     * Resume file upload\n     * @function\n     */\n    resume: function() {\n      this.paused = false;\n      this.flowObj.upload();\n    },\n\n    /**\n     * Abort current upload\n     * @function\n     */\n    abort: function (reset) {\n      this.currentSpeed = 0;\n      this.averageSpeed = 0;\n      var chunks = this.chunks;\n      if (reset) {\n        this.chunks = [];\n      }\n      each(chunks, function (c) {\n        if (c.status() === 'uploading') {\n          c.abort();\n          this.flowObj.uploadNextChunk();\n        }\n      }, this);\n    },\n\n    /**\n     * Cancel current upload and remove from a list\n     * @function\n     */\n    cancel: function () {\n      this.flowObj.removeFile(this);\n    },\n\n    /**\n     * Retry aborted file upload\n     * @function\n     */\n    retry: function () {\n      this.bootstrap();\n      this.flowObj.upload();\n    },\n\n    /**\n     * Clear current chunks and slice file again\n     * @function\n     */\n    bootstrap: function () {\n      if (typeof this.flowObj.opts.initFileFn === \"function\") {\n        this.flowObj.opts.initFileFn(this);\n      }\n\n      this.abort(true);\n      this.error = false;\n      // Rebuild stack of chunks from file\n      this._prevProgress = 0;\n      var round = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor;\n      this.chunkSize = evalOpts(this.flowObj.opts.chunkSize, this);\n      var chunks = Math.max(\n        round(this.size / this.chunkSize), 1\n      );\n      for (var offset = 0; offset < chunks; offset++) {\n        this.chunks.push(\n          new FlowChunk(this.flowObj, this, offset)\n        );\n      }\n    },\n\n    /**\n     * Get current upload progress status\n     * @function\n     * @returns {number} from 0 to 1\n     */\n    progress: function () {\n      if (this.error) {\n        return 1;\n      }\n      if (this.chunks.length === 1) {\n        this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress());\n        return this._prevProgress;\n      }\n      // Sum up progress across everything\n      var bytesLoaded = 0;\n      each(this.chunks, function (c) {\n        // get chunk progress relative to entire file\n        bytesLoaded += c.progress() * (c.endByte - c.startByte);\n      });\n      var percent = bytesLoaded / this.size;\n      // We don't want to lose percentages when an upload is paused\n      this._prevProgress = Math.max(this._prevProgress, percent > 0.9999 ? 1 : percent);\n      return this._prevProgress;\n    },\n\n    /**\n     * Indicates if file is being uploaded at the moment\n     * @function\n     * @returns {boolean}\n     */\n    isUploading: function () {\n      var uploading = false;\n      each(this.chunks, function (chunk) {\n        if (chunk.status() === 'uploading') {\n          uploading = true;\n          return false;\n        }\n      });\n      return uploading;\n    },\n\n    /**\n     * Indicates if file is has finished uploading and received a response\n     * @function\n     * @returns {boolean}\n     */\n    isComplete: function () {\n      var outstanding = false;\n      each(this.chunks, function (chunk) {\n        var status = chunk.status();\n        if (status === 'pending' || status === 'uploading' || status === 'reading' || chunk.preprocessState === 1 || chunk.readState === 1) {\n          outstanding = true;\n          return false;\n        }\n      });\n      return !outstanding;\n    },\n\n    /**\n     * Count total size uploaded\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = 0;\n      each(this.chunks, function (chunk) {\n        size += chunk.sizeUploaded();\n      });\n      return size;\n    },\n\n    /**\n     * Returns remaining time to finish upload file in seconds. Accuracy is based on average speed.\n     * If speed is zero, time remaining will be equal to positive infinity `Number.POSITIVE_INFINITY`\n     * @function\n     * @returns {number}\n     */\n    timeRemaining: function () {\n      if (this.paused || this.error) {\n        return 0;\n      }\n      var delta = this.size - this.sizeUploaded();\n      if (delta && !this.averageSpeed) {\n        return Number.POSITIVE_INFINITY;\n      }\n      if (!delta && !this.averageSpeed) {\n        return 0;\n      }\n      return Math.floor(delta / this.averageSpeed);\n    },\n\n    /**\n     * Get file type\n     * @function\n     * @returns {string}\n     */\n    getType: function () {\n      return this.file.type && this.file.type.split('/')[1];\n    },\n\n    /**\n     * Get file extension\n     * @function\n     * @returns {string}\n     */\n    getExtension: function () {\n      return this.name.substr((~-this.name.lastIndexOf(\".\") >>> 0) + 2).toLowerCase();\n    }\n  };\n\n  /**\n   * Default read function using the webAPI\n   *\n   * @function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk)\n   *\n   */\n  function webAPIFileRead(fileObj, startByte, endByte, fileType, chunk) {\n    var function_name = 'slice';\n\n    if (fileObj.file.slice)\n      function_name =  'slice';\n    else if (fileObj.file.mozSlice)\n      function_name = 'mozSlice';\n    else if (fileObj.file.webkitSlice)\n      function_name = 'webkitSlice';\n\n    chunk.readFinished(fileObj.file[function_name](startByte, endByte, fileType));\n  }\n\n\n  /**\n   * Class for storing a single chunk\n   * @name FlowChunk\n   * @param {Flow} flowObj\n   * @param {FlowFile} fileObj\n   * @param {number} offset\n   * @constructor\n   */\n  function FlowChunk(flowObj, fileObj, offset) {\n\n    /**\n     * Reference to parent flow object\n     * @type {Flow}\n     */\n    this.flowObj = flowObj;\n\n    /**\n     * Reference to parent FlowFile object\n     * @type {FlowFile}\n     */\n    this.fileObj = fileObj;\n\n    /**\n     * File offset\n     * @type {number}\n     */\n    this.offset = offset;\n\n    /**\n     * Indicates if chunk existence was checked on the server\n     * @type {boolean}\n     */\n    this.tested = false;\n\n    /**\n     * Number of retries performed\n     * @type {number}\n     */\n    this.retries = 0;\n\n    /**\n     * Pending retry\n     * @type {boolean}\n     */\n    this.pendingRetry = false;\n\n    /**\n     * Preprocess state\n     * @type {number} 0 = unprocessed, 1 = processing, 2 = finished\n     */\n    this.preprocessState = 0;\n\n    /**\n     * Read state\n     * @type {number} 0 = not read, 1 = reading, 2 = finished\n     */\n    this.readState = 0;\n\n\n    /**\n     * Bytes transferred from total request size\n     * @type {number}\n     */\n    this.loaded = 0;\n\n    /**\n     * Total request size\n     * @type {number}\n     */\n    this.total = 0;\n\n    /**\n     * Size of a chunk\n     * @type {number}\n     */\n    this.chunkSize = this.fileObj.chunkSize;\n\n    /**\n     * Chunk start byte in a file\n     * @type {number}\n     */\n    this.startByte = this.offset * this.chunkSize;\n\n    /**\n      * Compute the endbyte in a file\n      *\n      */\n    this.computeEndByte = function() {\n      var endByte = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);\n      if (this.fileObj.size - endByte < this.chunkSize && !this.flowObj.opts.forceChunkSize) {\n        // The last chunk will be bigger than the chunk size,\n        // but less than 2 * this.chunkSize\n        endByte = this.fileObj.size;\n      }\n      return endByte;\n    }\n\n    /**\n     * Chunk end byte in a file\n     * @type {number}\n     */\n    this.endByte = this.computeEndByte();\n\n    /**\n     * XMLHttpRequest\n     * @type {XMLHttpRequest}\n     */\n    this.xhr = null;\n\n    var $ = this;\n\n    /**\n     * Send chunk event\n     * @param event\n     * @param {...} args arguments of a callback\n     */\n    this.event = function (event, args) {\n      args = Array.prototype.slice.call(arguments);\n      args.unshift($);\n      $.fileObj.chunkEvent.apply($.fileObj, args);\n    };\n    /**\n     * Catch progress event\n     * @param {ProgressEvent} event\n     */\n    this.progressHandler = function(event) {\n      if (event.lengthComputable) {\n        $.loaded = event.loaded ;\n        $.total = event.total;\n      }\n      $.event('progress', event);\n    };\n\n    /**\n     * Catch test event\n     * @param {Event} event\n     */\n    this.testHandler = function(event) {\n      var status = $.status(true);\n      if (status === 'error') {\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else if (status === 'success') {\n        $.tested = true;\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else if (!$.fileObj.paused) {\n        // Error might be caused by file pause method\n        // Chunks does not exist on the server side\n        $.tested = true;\n        $.send();\n      }\n    };\n\n    /**\n     * Upload has stopped\n     * @param {Event} event\n     */\n    this.doneHandler = function(event) {\n      var status = $.status();\n      if (status === 'success' || status === 'error') {\n        delete this.data;\n        $.event(status, $.message());\n        $.flowObj.uploadNextChunk();\n      } else {\n        $.event('retry', $.message());\n        $.pendingRetry = true;\n        $.abort();\n        $.retries++;\n        var retryInterval = $.flowObj.opts.chunkRetryInterval;\n        if (retryInterval !== null) {\n          setTimeout(function () {\n            $.send();\n          }, retryInterval);\n        } else {\n          $.send();\n        }\n      }\n    };\n  }\n\n  FlowChunk.prototype = {\n    /**\n     * Get params for a request\n     * @function\n     */\n    getParams: function () {\n      return {\n        flowChunkNumber: this.offset + 1,\n        flowChunkSize: this.chunkSize,\n        flowCurrentChunkSize: this.endByte - this.startByte,\n        flowTotalSize: this.fileObj.size,\n        flowIdentifier: this.fileObj.uniqueIdentifier,\n        flowFilename: this.fileObj.name,\n        flowRelativePath: this.fileObj.relativePath,\n        flowTotalChunks: this.fileObj.chunks.length\n      };\n    },\n\n    /**\n     * Get target option with query params\n     * @function\n     * @param params\n     * @returns {string}\n     */\n    getTarget: function(target, params){\n      if (params.length == 0) {\n\treturn target;\n      }\n\n      if(target.indexOf('?') < 0) {\n        target += '?';\n      } else {\n        target += '&';\n      }\n      return target + params.join('&');\n    },\n\n    /**\n     * Makes a GET request without any data to see if the chunk has already\n     * been uploaded in a previous session\n     * @function\n     */\n    test: function () {\n      // Set up request and listen for event\n      this.xhr = new XMLHttpRequest();\n      this.xhr.addEventListener(\"load\", this.testHandler, false);\n      this.xhr.addEventListener(\"error\", this.testHandler, false);\n      var testMethod = evalOpts(this.flowObj.opts.testMethod, this.fileObj, this);\n      var data = this.prepareXhrRequest(testMethod, true);\n      this.xhr.send(data);\n    },\n\n    /**\n     * Finish preprocess state\n     * @function\n     */\n    preprocessFinished: function () {\n      // Re-compute the endByte after the preprocess function to allow an\n      // implementer of preprocess to set the fileObj size\n      this.endByte = this.computeEndByte();\n\n      this.preprocessState = 2;\n      this.send();\n    },\n\n    /**\n     * Finish read state\n     * @function\n     */\n    readFinished: function (bytes) {\n      this.readState = 2;\n      this.bytes = bytes;\n      this.send();\n    },\n\n\n    /**\n     * Uploads the actual data in a POST call\n     * @function\n     */\n    send: function () {\n      var preprocess = this.flowObj.opts.preprocess;\n      var read = this.flowObj.opts.readFileFn;\n      if (typeof preprocess === 'function') {\n        switch (this.preprocessState) {\n          case 0:\n            this.preprocessState = 1;\n            preprocess(this);\n            return;\n          case 1:\n            return;\n        }\n      }\n      switch (this.readState) {\n        case 0:\n          this.readState = 1;\n          read(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);\n          return;\n        case 1:\n          return;\n      }\n      if (this.flowObj.opts.testChunks && !this.tested) {\n        this.test();\n        return;\n      }\n\n      this.loaded = 0;\n      this.total = 0;\n      this.pendingRetry = false;\n\n      // Set up request and listen for event\n      this.xhr = new XMLHttpRequest();\n      this.xhr.upload.addEventListener('progress', this.progressHandler, false);\n      this.xhr.addEventListener(\"load\", this.doneHandler, false);\n      this.xhr.addEventListener(\"error\", this.doneHandler, false);\n\n      var uploadMethod = evalOpts(this.flowObj.opts.uploadMethod, this.fileObj, this);\n      var data = this.prepareXhrRequest(uploadMethod, false, this.flowObj.opts.method, this.bytes);\n      var changeRawDataBeforeSend = this.flowObj.opts.changeRawDataBeforeSend;\n      if (typeof changeRawDataBeforeSend === 'function') {\n        data = changeRawDataBeforeSend(this, data);\n      }\n      this.xhr.send(data);\n    },\n\n    /**\n     * Abort current xhr request\n     * @function\n     */\n    abort: function () {\n      // Abort and reset\n      var xhr = this.xhr;\n      this.xhr = null;\n      if (xhr) {\n        xhr.abort();\n      }\n    },\n\n    /**\n     * Retrieve current chunk upload status\n     * @function\n     * @returns {string} 'pending', 'uploading', 'success', 'error'\n     */\n    status: function (isTest) {\n      if (this.readState === 1) {\n        return 'reading';\n      } else if (this.pendingRetry || this.preprocessState === 1) {\n        // if pending retry then that's effectively the same as actively uploading,\n        // there might just be a slight delay before the retry starts\n        return 'uploading';\n      } else if (!this.xhr) {\n        return 'pending';\n      } else if (this.xhr.readyState < 4) {\n        // Status is really 'OPENED', 'HEADERS_RECEIVED'\n        // or 'LOADING' - meaning that stuff is happening\n        return 'uploading';\n      } else {\n        if (this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1) {\n          // HTTP 200, perfect\n\t\t      // HTTP 202 Accepted - The request has been accepted for processing, but the processing has not been completed.\n          return 'success';\n        } else if (this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 ||\n            !isTest && this.retries >= this.flowObj.opts.maxChunkRetries) {\n          // HTTP 413/415/500/501, permanent error\n          return 'error';\n        } else {\n          // this should never happen, but we'll reset and queue a retry\n          // a likely case for this would be 503 service unavailable\n          this.abort();\n          return 'pending';\n        }\n      }\n    },\n\n    /**\n     * Get response from xhr request\n     * @function\n     * @returns {String}\n     */\n    message: function () {\n      return this.xhr ? this.xhr.responseText : '';\n    },\n\n    /**\n     * Get upload progress\n     * @function\n     * @returns {number}\n     */\n    progress: function () {\n      if (this.pendingRetry) {\n        return 0;\n      }\n      var s = this.status();\n      if (s === 'success' || s === 'error') {\n        return 1;\n      } else if (s === 'pending') {\n        return 0;\n      } else {\n        return this.total > 0 ? this.loaded / this.total : 0;\n      }\n    },\n\n    /**\n     * Count total size uploaded\n     * @function\n     * @returns {number}\n     */\n    sizeUploaded: function () {\n      var size = this.endByte - this.startByte;\n      // can't return only chunk.loaded value, because it is bigger than chunk size\n      if (this.status() !== 'success') {\n        size = this.progress() * size;\n      }\n      return size;\n    },\n\n    /**\n     * Prepare Xhr request. Set query, headers and data\n     * @param {string} method GET or POST\n     * @param {bool} isTest is this a test request\n     * @param {string} [paramsMethod] octet or form\n     * @param {Blob} [blob] to send\n     * @returns {FormData|Blob|Null} data to send\n     */\n    prepareXhrRequest: function(method, isTest, paramsMethod, blob) {\n      // Add data from the query options\n      var query = evalOpts(this.flowObj.opts.query, this.fileObj, this, isTest);\n      query = extend(query || {}, this.getParams());\n\n      var target = evalOpts(this.flowObj.opts.target, this.fileObj, this, isTest);\n      var data = null;\n      if (method === 'GET' || paramsMethod === 'octet') {\n        // Add data from the query options\n        var params = [];\n        each(query, function (v, k) {\n          params.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));\n        });\n        target = this.getTarget(target, params);\n        data = blob || null;\n      } else {\n        // Add data from the query options\n        data = new FormData();\n        each(query, function (v, k) {\n          data.append(k, v);\n        });\n        if (typeof blob !== \"undefined\") data.append(this.flowObj.opts.fileParameterName, blob, this.fileObj.file.name);\n      }\n\n      this.xhr.open(method, target, true);\n      this.xhr.withCredentials = this.flowObj.opts.withCredentials;\n\n      // Add data from header options\n      each(evalOpts(this.flowObj.opts.headers, this.fileObj, this, isTest), function (v, k) {\n        this.xhr.setRequestHeader(k, v);\n      }, this);\n\n      return data;\n    }\n  };\n\n  /**\n   * Remove value from array\n   * @param array\n   * @param value\n   */\n  function arrayRemove(array, value) {\n    var index = array.indexOf(value);\n    if (index > -1) {\n      array.splice(index, 1);\n    }\n  }\n\n  /**\n   * If option is a function, evaluate it with given params\n   * @param {*} data\n   * @param {...} args arguments of a callback\n   * @returns {*}\n   */\n  function evalOpts(data, args) {\n    if (typeof data === \"function\") {\n      // `arguments` is an object, not array, in FF, so:\n      args = Array.prototype.slice.call(arguments);\n      data = data.apply(null, args.slice(1));\n    }\n    return data;\n  }\n  Flow.evalOpts = evalOpts;\n\n  /**\n   * Execute function asynchronously\n   * @param fn\n   * @param context\n   */\n  function async(fn, context) {\n    setTimeout(fn.bind(context), 0);\n  }\n\n  /**\n   * Extends the destination object `dst` by copying all of the properties from\n   * the `src` object(s) to `dst`. You can specify multiple `src` objects.\n   * @function\n   * @param {Object} dst Destination object.\n   * @param {...Object} src Source object(s).\n   * @returns {Object} Reference to `dst`.\n   */\n  function extend(dst, src) {\n    each(arguments, function(obj) {\n      if (obj !== dst) {\n        each(obj, function(value, key){\n          dst[key] = value;\n        });\n      }\n    });\n    return dst;\n  }\n  Flow.extend = extend;\n\n  /**\n   * Iterate each element of an object\n   * @function\n   * @param {Array|Object} obj object or an array to iterate\n   * @param {Function} callback first argument is a value and second is a key.\n   * @param {Object=} context Object to become context (`this`) for the iterator function.\n   */\n  function each(obj, callback, context) {\n    if (!obj) {\n      return ;\n    }\n    var key;\n    // Is Array?\n    // Array.isArray won't work, not only arrays can be iterated by index https://github.com/flowjs/ng-flow/issues/236#\n    if (typeof(obj.length) !== 'undefined') {\n      for (key = 0; key < obj.length; key++) {\n        if (callback.call(context, obj[key], key) === false) {\n          return ;\n        }\n      }\n    } else {\n      for (key in obj) {\n        if (obj.hasOwnProperty(key) && callback.call(context, obj[key], key) === false) {\n          return ;\n        }\n      }\n    }\n  }\n  Flow.each = each;\n\n  /**\n   * FlowFile constructor\n   * @type {FlowFile}\n   */\n  Flow.FlowFile = FlowFile;\n\n  /**\n   * FlowFile constructor\n   * @type {FlowChunk}\n   */\n  Flow.FlowChunk = FlowChunk;\n\n  /**\n   * Library version\n   * @type {string}\n   */\n  Flow.version = '<%= version %>';\n\n  if ( typeof module === \"object\" && module && typeof module.exports === \"object\" ) {\n    // Expose Flow as module.exports in loaders that implement the Node\n    // module pattern (including browserify). Do not create the global, since\n    // the user will be storing it themselves locally, and globals are frowned\n    // upon in the Node module world.\n    module.exports = Flow;\n  } else {\n    // Otherwise expose Flow to the global object as usual\n    window.Flow = Flow;\n\n    // Register as a named AMD module, since Flow can be concatenated with other\n    // files that may use define, but not via a proper concatenation script that\n    // understands anonymous AMD modules. A named AMD is safest and most robust\n    // way to register. Lowercase flow is used because AMD module names are\n    // derived from file names, and Flow is normally delivered in a lowercase\n    // file name. Do this after creating the global so that if an AMD module wants\n    // to call noConflict to hide this version of Flow, it will work.\n    if ( typeof define === \"function\" && define.amd ) {\n      define( \"flow\", [], function () { return Flow; } );\n    }\n  }\n})(typeof window !== 'undefined' && window, typeof document !== 'undefined' && document);\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vs-button',{ref:\"button\",staticClass:\"self-end px-3 ml-2\",attrs:{\"loading\":_vm.isUploading,\"type\":\"border\"},on:{\"click\":function($event){!_vm.isUploading && _vm.$emit('click')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <vs-button :loading=\"isUploading\" @click=\"!isUploading && $emit('click')\" class=\"self-end px-3 ml-2\" ref=\"button\"\n             type=\"border\">\n    <slot></slot>\n  </vs-button>\n</template>\n\n<script>\n  import Flow from '@flowjs/flow.js';\n\n  export default {\n    props: {\n      label: {\n        type: String,\n        required: false\n      },\n      options: {\n        type: Object,\n        required: true\n      }\n    },\n    data () {\n      return {\n        isUploading: false,\n        flow: {}\n      };\n    },\n    mounted () {\n      const vm = this;\n      vm.flow = new Flow(vm.options);\n      vm.flow.assignBrowse(vm.$refs.button.$refs.btn, false, true, vm.options.attributes);\n      vm.flow.assignDrop(vm.$refs.button.$refs.btn, false, true, vm.options.attributes);\n\n      vm.flow.on('fileAdded', (file, event) => {\n        vm.isUploading = false;\n        vm.$emit('fileAdded', {\n          file,\n          event\n        });\n      });\n      vm.flow.on('filesSubmitted', () => {\n        if (!vm.options.uploadOnClick) {\n          vm.isUploading = true;\n          vm.flow.upload();\n        }\n        vm.$emit('fileSubmitted', vm.flow);\n      });\n      vm.flow.on('fileSuccess', (file, message) => {\n        vm.isUploading = false;\n        vm.$emit('fileSuccess', {\n          file,\n          message\n        });\n      });\n      vm.flow.on('fileError', (file, message) => {\n        vm.isUploading = false;\n        vm.$emit('fileError', {\n          file,\n          message\n        });\n      });\n    }\n  };\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_file-import.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_file-import.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_file-import.vue?vue&type=template&id=078d50a4&\"\nimport script from \"./_file-import.vue?vue&type=script&lang=js&\"\nexport * from \"./_file-import.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}

Zerion Mini Shell 1.0