{"version":3,"sources":["webpack:///./node_modules/vuelidate/lib/validators/common.js","webpack:///./node_modules/vuelidate/lib/validators/index.js","webpack:///./node_modules/@chatwoot/utils/dist/utils.esm.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/vuelidate/lib/validators/alpha.js","webpack:///./node_modules/vuelidate/lib/withParams.js","webpack:///./node_modules/vuelidate/lib/withParamsBrowser.js","webpack:///./node_modules/vuelidate/lib/validators/alphaNum.js","webpack:///./node_modules/vuelidate/lib/validators/numeric.js","webpack:///./node_modules/vuelidate/lib/validators/between.js","webpack:///./node_modules/vuelidate/lib/validators/ipAddress.js","webpack:///./node_modules/vuelidate/lib/validators/macAddress.js","webpack:///./node_modules/vuelidate/lib/validators/maxLength.js","webpack:///./node_modules/vuelidate/lib/validators/minLength.js","webpack:///./node_modules/vuelidate/lib/validators/required.js","webpack:///./node_modules/vuelidate/lib/validators/requiredIf.js","webpack:///./node_modules/vuelidate/lib/validators/requiredUnless.js","webpack:///./node_modules/vuelidate/lib/validators/sameAs.js","webpack:///./node_modules/vuelidate/lib/validators/url.js","webpack:///./node_modules/vuelidate/lib/validators/or.js","webpack:///./node_modules/vuelidate/lib/validators/and.js","webpack:///./node_modules/vuelidate/lib/validators/not.js","webpack:///./node_modules/vuelidate/lib/validators/minValue.js","webpack:///./node_modules/vuelidate/lib/validators/maxValue.js","webpack:///./node_modules/vuelidate/lib/validators/integer.js","webpack:///./node_modules/vuelidate/lib/validators/decimal.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/vue-clickaway/dist/vue-clickaway.common.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/vuelidate/lib/validators/email.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/vue-upload-component/dist/vue-upload-component.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceToNow/index.js"],"names":["Object","defineProperty","exports","value","req","regex","ref","len","enumerable","get","_withParams","default","obj","__esModule","_typeof","Symbol","iterator","constructor","prototype","Array","isArray","length","undefined","Date","isNaN","getTime","_","String","keys","reference","vm","parentVm","call","type","expr","test","_alpha","_alphaNum","_and","_between","_decimal","_email","helpers","_integer","_ipAddress","_macAddress","_maxLength","_maxValue","_minLength","_minValue","_not","_numeric","_or","_required","_requiredIf","_requiredUnless","_sameAs","_url","_interopRequireDefault","nodeInterop","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","key","hasOwnProperty","desc","set","_interopRequireWildcard","WeakMap","cacheBabelInterop","cacheNodeInterop","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","clearTimeout","window","setTimeout","getContrastingTextColor","bgColor","color","replace","parseInt","slice","formatTime","timeInSeconds","formattedTime","minutes","Math","floor","seconds","hours","_minutes","days","_hours","trimContent","content","maxLength","ellipsis","trimmedContent","substring","parseBoolean","candidate","candidateString","toLowerCase","Boolean","JSON","parse","error","sortAsc","arr","sort","a","b","_quantileForSorted","sorted","q","min","max","clamped","pos","base","rest","getQuantileIntervals","data","intervals","map","interval","fails","whitespaces","module","METHOD_NAME","name","_default","process","env","BUILD","withParams","root","global","vuelidate","paramsOrClosure","maybeValidator","_common","nibbles","split","every","nibbleValid","nibble","match","numeric","separator","parts","hexValid","hex","trim","prop","this","equalTo","eq","_len","validators","_key","_this","_len2","_key2","reduce","valid","fn","validator","classof","TypeError","toInteger","requireObjectCoercible","count","str","result","n","Infinity","RangeError","endOfDay","dirtyDate","date","setHours","differenceInMilliseconds","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","$","$trim","target","proto","forced","forcedStringTrimMethod","Vue","version","util","warn","HANDLER","bind","el","binding","unbind","callback","initialMacrotaskEnded","ev","contains","document","documentElement","addEventListener","removeEventListener","directive","update","oldValue","mixin","directives","onClickaway","assign","dirtyObject","property","factory","sparkMd5","createCommonjsModule","hex_chr","md5cycle","x","k","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","state","toString","md51_array","subarray","Uint8Array","rhex","j","join","toUtf8","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","first","second","byteLength","buffer","hexToBinaryString","bytes","push","substr","SparkMD5","reset","clamp","val","from","to","num","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","classCallCheck","instance","Constructor","createClass","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","create","md5Buffer","fileReader","FileReader","event","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","start","readAsArrayBuffer","findElement","selector","querySelector","dispatchEvent","element","eventInit","disabled","bubbles","cancelable","detail","createEvent","initEvent","toArray$1","BlobRecord","checksum","url","attributes","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","head","getAttribute","getMetaValue","requestDidLoad","requestDidError","send","stringify","blob","status","response","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","delegate","notify","upload","object","methodName","messages","DirectUploadController","input","directUpload","dispatch","hiddenInput","createElement","insertAdjacentElement","parentNode","removeChild","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","DirectUploadsController","form","inputs","querySelectorAll","filter","files","controllers","createDirectUploadControllers","startNextController","controller","shift","forEach","processingAttribute","submitButtonsByForm","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","preventDefault","setAttribute","disable","removeAttribute","enable","button","focus","click","style","display","appendChild","delete","submitForm","ActiveStorage","thisNumberValue","repeat","nativeToFixed","toFixed","pow","acc","multiply","index","c2","divide","dataToString","t","fractionDigits","e","z","number","fractDigits","sign","x2","log","_typeof2","createRequest","options","method","request","body","Promise","resolve","reject","onload","err","onerror","sendRequest","_createClass","ChunkUploadHandler","_classCallCheck","chunks","sessionId","speedInterval","fileSize","startOffset","active","retries","maxRetries","stopChunks","chunksUploading","chunk","abort","stopSpeedCalc","startChunking","promise","action","startBody","phase","mime_type","fileType","fileName","then","res","session_id","end_offset","createChunks","catch","maxActiveChunks","uploadNextChunk","startSpeedCalc","hasChunksToUpload","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","evt","lengthComputable","round","FormData","sendFormRequest","uploadBody","start_offset","uploaded","_this4","finishBody","_this5","speed","lastUploadedBytes","setInterval","uploadedBytes","clearInterval","maxActive","_this6","completedProgress","chunksUploaded","uploadingProgress","normalizeComponent_1","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","InputFile","_vm","_h","$createElement","_self","_c","attrs","$parent","inputId","accept","capture","directory","features","multiple","html5","on","change","methods","addInputFile","navigator","userAgent","$destroy","$el","_extends","source","_toConsumableArray","arr2","CHUNK_DEFAULT_OPTIONS","minSize","handler","script$1","components","maximum","Number","addIndex","postAction","putAction","customAction","Function","drop","dropDirectory","extensions","thread","chunkEnabled","dropActive","uploading","mounted","webkitdirectory","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","success","chunkOptions","className","watch","_active","watchActive","oldMaps","newFile","oldFile","emitFile","clear","emitInput","_files","addFiles","Blob","webkitRelativePath","relativePath","Element","random","emitFilter","newFiles","_newFiles","splice","_i","_file2","_i2","names","__vuex__","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","_i3","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","isPrevent","$emit","code","message","RegExp","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","queryString","uploadXhr","_file","speedTime","speedLoaded","onprogress","speedTime2","now","complete","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","iframe","src","doc","contentWindow","contentDocument","innerHTML","getResponseData","submit","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","dt","types","nodeName","explicitOriginalTarget","fromElement","clientX","clientY","innerWidth","innerHeight","isOldIE","HEAD","getElementsByTagName","styles","FileUpload","class","_t","_v","inject","media","css","group","ids","Set","sources","styleSheet","cssText","textNode","createTextNode","nodes","childNodes","insertBefore","addStyle","freeze","compareAsc","requiredArgs","toDate","diff","differenceInCalendarMonths","yearDiff","getFullYear","monthDiff","getMonth","endOfMonth","month","setFullYear","isLastDayOfMonth","differenceInMonths","difference","abs","getDate","setDate","setMonth","isLastMonthNotFull","differenceInSeconds","cloneObject","MINUTES_IN_DAY","MINUTES_IN_MONTH","formatDistance","dirtyBaseDate","dirtyOptions","locale","comparison","localizeOptions","addSuffix","months","offsetInSeconds","getTimezoneOffsetInMilliseconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","years","formatDistanceToNow"],"mappings":"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","file":"js/19-eaf1df8bdc42131bc129.chunk.js","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.req = exports.regex = exports.ref = exports.len = void 0;\nObject.defineProperty(exports, \"withParams\", {\n enumerable: true,\n get: function get() {\n return _withParams.default;\n }\n});\n\nvar _withParams = _interopRequireDefault(require(\"../withParams\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar req = function req(value) {\n if (Array.isArray(value)) return !!value.length;\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === false) {\n return true;\n }\n\n if (value instanceof Date) {\n return !isNaN(value.getTime());\n }\n\n if (_typeof(value) === 'object') {\n for (var _ in value) {\n return true;\n }\n\n return false;\n }\n\n return !!String(value).length;\n};\n\nexports.req = req;\n\nvar len = function len(value) {\n if (Array.isArray(value)) return value.length;\n\n if (_typeof(value) === 'object') {\n return Object.keys(value).length;\n }\n\n return String(value).length;\n};\n\nexports.len = len;\n\nvar ref = function ref(reference, vm, parentVm) {\n return typeof reference === 'function' ? reference.call(vm, parentVm) : parentVm[reference];\n};\n\nexports.ref = ref;\n\nvar regex = function regex(type, expr) {\n return (0, _withParams.default)({\n type: type\n }, function (value) {\n return !req(value) || expr.test(value);\n });\n};\n\nexports.regex = regex;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"alpha\", {\n enumerable: true,\n get: function get() {\n return _alpha.default;\n }\n});\nObject.defineProperty(exports, \"alphaNum\", {\n enumerable: true,\n get: function get() {\n return _alphaNum.default;\n }\n});\nObject.defineProperty(exports, \"and\", {\n enumerable: true,\n get: function get() {\n return _and.default;\n }\n});\nObject.defineProperty(exports, \"between\", {\n enumerable: true,\n get: function get() {\n return _between.default;\n }\n});\nObject.defineProperty(exports, \"decimal\", {\n enumerable: true,\n get: function get() {\n return _decimal.default;\n }\n});\nObject.defineProperty(exports, \"email\", {\n enumerable: true,\n get: function get() {\n return _email.default;\n }\n});\nexports.helpers = void 0;\nObject.defineProperty(exports, \"integer\", {\n enumerable: true,\n get: function get() {\n return _integer.default;\n }\n});\nObject.defineProperty(exports, \"ipAddress\", {\n enumerable: true,\n get: function get() {\n return _ipAddress.default;\n }\n});\nObject.defineProperty(exports, \"macAddress\", {\n enumerable: true,\n get: function get() {\n return _macAddress.default;\n }\n});\nObject.defineProperty(exports, \"maxLength\", {\n enumerable: true,\n get: function get() {\n return _maxLength.default;\n }\n});\nObject.defineProperty(exports, \"maxValue\", {\n enumerable: true,\n get: function get() {\n return _maxValue.default;\n }\n});\nObject.defineProperty(exports, \"minLength\", {\n enumerable: true,\n get: function get() {\n return _minLength.default;\n }\n});\nObject.defineProperty(exports, \"minValue\", {\n enumerable: true,\n get: function get() {\n return _minValue.default;\n }\n});\nObject.defineProperty(exports, \"not\", {\n enumerable: true,\n get: function get() {\n return _not.default;\n }\n});\nObject.defineProperty(exports, \"numeric\", {\n enumerable: true,\n get: function get() {\n return _numeric.default;\n }\n});\nObject.defineProperty(exports, \"or\", {\n enumerable: true,\n get: function get() {\n return _or.default;\n }\n});\nObject.defineProperty(exports, \"required\", {\n enumerable: true,\n get: function get() {\n return _required.default;\n }\n});\nObject.defineProperty(exports, \"requiredIf\", {\n enumerable: true,\n get: function get() {\n return _requiredIf.default;\n }\n});\nObject.defineProperty(exports, \"requiredUnless\", {\n enumerable: true,\n get: function get() {\n return _requiredUnless.default;\n }\n});\nObject.defineProperty(exports, \"sameAs\", {\n enumerable: true,\n get: function get() {\n return _sameAs.default;\n }\n});\nObject.defineProperty(exports, \"url\", {\n enumerable: true,\n get: function get() {\n return _url.default;\n }\n});\n\nvar _alpha = _interopRequireDefault(require(\"./alpha\"));\n\nvar _alphaNum = _interopRequireDefault(require(\"./alphaNum\"));\n\nvar _numeric = _interopRequireDefault(require(\"./numeric\"));\n\nvar _between = _interopRequireDefault(require(\"./between\"));\n\nvar _email = _interopRequireDefault(require(\"./email\"));\n\nvar _ipAddress = _interopRequireDefault(require(\"./ipAddress\"));\n\nvar _macAddress = _interopRequireDefault(require(\"./macAddress\"));\n\nvar _maxLength = _interopRequireDefault(require(\"./maxLength\"));\n\nvar _minLength = _interopRequireDefault(require(\"./minLength\"));\n\nvar _required = _interopRequireDefault(require(\"./required\"));\n\nvar _requiredIf = _interopRequireDefault(require(\"./requiredIf\"));\n\nvar _requiredUnless = _interopRequireDefault(require(\"./requiredUnless\"));\n\nvar _sameAs = _interopRequireDefault(require(\"./sameAs\"));\n\nvar _url = _interopRequireDefault(require(\"./url\"));\n\nvar _or = _interopRequireDefault(require(\"./or\"));\n\nvar _and = _interopRequireDefault(require(\"./and\"));\n\nvar _not = _interopRequireDefault(require(\"./not\"));\n\nvar _minValue = _interopRequireDefault(require(\"./minValue\"));\n\nvar _maxValue = _interopRequireDefault(require(\"./maxValue\"));\n\nvar _integer = _interopRequireDefault(require(\"./integer\"));\n\nvar _decimal = _interopRequireDefault(require(\"./decimal\"));\n\nvar helpers = _interopRequireWildcard(require(\"./common\"));\n\nexports.helpers = helpers;\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}","import isToday from 'date-fns/isToday';\nimport isYesterday from 'date-fns/isYesterday'; // Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\n/**\r\n * @func Callback function to be called after delay\r\n * @delay Delay for debounce in ms\r\n * @immediate should execute immediately\r\n * @returns debounced callback function\r\n */\n\nvar debounce = function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = null;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = window.setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n/**\r\n * @name Get contrasting text color\r\n * @description Get contrasting text color from a text color\r\n * @param bgColor Background color of text.\r\n * @returns contrasting text color\r\n */\n\n\nvar getContrastingTextColor = function getContrastingTextColor(bgColor) {\n var color = bgColor.replace('#', '');\n var r = parseInt(color.slice(0, 2), 16);\n var g = parseInt(color.slice(2, 4), 16);\n var b = parseInt(color.slice(4, 6), 16); // http://stackoverflow.com/a/3943023/112731\n\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? '#000000' : '#FFFFFF';\n};\n/**\r\n * @name Get formatted date\r\n * @description Get date in today, yesterday or any other date format\r\n * @param date date\r\n * @param todayText Today text\r\n * @param yesterdayText Yesterday text\r\n * @returns formatted date\r\n */\n\n\nvar formatDate = function formatDate(_ref) {\n var date = _ref.date,\n todayText = _ref.todayText,\n yesterdayText = _ref.yesterdayText;\n var dateValue = new Date(date);\n if (isToday(dateValue)) return todayText;\n if (isYesterday(dateValue)) return yesterdayText;\n return date;\n};\n/**\r\n * @name formatTime\r\n * @description Format time to Hour, Minute and Second\r\n * @param timeInSeconds number\r\n * @returns formatted time\r\n */\n\n\nvar formatTime = function formatTime(timeInSeconds) {\n var formattedTime = '';\n\n if (timeInSeconds >= 60 && timeInSeconds < 3600) {\n var minutes = Math.floor(timeInSeconds / 60);\n formattedTime = minutes + \" Min\";\n var seconds = minutes === 60 ? 0 : Math.floor(timeInSeconds % 60);\n return formattedTime + (\"\" + (seconds > 0 ? ' ' + seconds + ' Sec' : ''));\n }\n\n if (timeInSeconds >= 3600 && timeInSeconds < 86400) {\n var hours = Math.floor(timeInSeconds / 3600);\n formattedTime = hours + \" Hr\";\n\n var _minutes = timeInSeconds % 3600 < 60 || hours === 24 ? 0 : Math.floor(timeInSeconds % 3600 / 60);\n\n return formattedTime + (\"\" + (_minutes > 0 ? ' ' + _minutes + ' Min' : ''));\n }\n\n if (timeInSeconds >= 86400) {\n var days = Math.floor(timeInSeconds / 86400);\n formattedTime = days + \" Day\";\n\n var _hours = timeInSeconds % 86400 < 3600 || days >= 364 ? 0 : Math.floor(timeInSeconds % 86400 / 3600);\n\n return formattedTime + (\"\" + (_hours > 0 ? ' ' + _hours + ' Hr' : ''));\n }\n\n return Math.floor(timeInSeconds) + \" Sec\";\n};\n/**\r\n * @name trimContent\r\n * @description Trim a string to max length\r\n * @param content String to trim\r\n * @param maxLength Length of the string to trim, default 1024\r\n * @param ellipsis Boolean to add dots at the end of the string, default false\r\n * @returns trimmed string\r\n */\n\n\nvar trimContent = function trimContent(content, maxLength, ellipsis) {\n if (content === void 0) {\n content = '';\n }\n\n if (maxLength === void 0) {\n maxLength = 1024;\n }\n\n if (ellipsis === void 0) {\n ellipsis = false;\n }\n\n var trimmedContent = content;\n\n if (content.length > maxLength) {\n trimmedContent = content.substring(0, maxLength);\n }\n\n if (ellipsis) {\n trimmedContent = trimmedContent + '...';\n }\n\n return trimmedContent;\n};\n/**\r\n * Function that parses a string boolean value and returns the corresponding boolean value\r\n * @param {string | number} candidate - The string boolean value to be parsed\r\n * @return {boolean} - The parsed boolean value\r\n */\n\n\nfunction parseBoolean(candidate) {\n try {\n // lowercase the string, so TRUE becomes true\n var candidateString = String(candidate).toLowerCase(); // wrap in boolean to ensure that the return value\n // is a boolean even if values like 0 or 1 are passed\n\n return Boolean(JSON.parse(candidateString));\n } catch (error) {\n return false;\n }\n}\n/**\r\n * Sorts an array of numbers in ascending order.\r\n * @param {number[]} arr - The array of numbers to be sorted.\r\n * @returns {number[]} - The sorted array.\r\n */\n\n\nfunction sortAsc(arr) {\n // .slice() is used to create a copy of the array so that the original array is not mutated\n return arr.slice().sort(function (a, b) {\n return a - b;\n });\n}\n/**\r\n * Calculates the quantile value of an array at a specified percentile.\r\n * @param {number[]} arr - The array of numbers to calculate the quantile value from.\r\n * @param {number} q - The percentile to calculate the quantile value for.\r\n * @returns {number} - The quantile value.\r\n */\n\n\nfunction quantile(arr, q) {\n var sorted = sortAsc(arr); // Sort the array in ascending order\n\n return _quantileForSorted(sorted, q); // Calculate the quantile value\n}\n/**\r\n * Clamps a value between a minimum and maximum range.\r\n * @param {number} min - The minimum range.\r\n * @param {number} max - The maximum range.\r\n * @param {number} value - The value to be clamped.\r\n * @returns {number} - The clamped value.\r\n */\n\n\nfunction clamp(min, max, value) {\n if (value < min) {\n return min;\n }\n\n if (value > max) {\n return max;\n }\n\n return value;\n}\n/**\r\n * This method assumes the the array provided is already sorted in ascending order.\r\n * It's a helper method for the quantile method and should not be exported as is.\r\n *\r\n * @param {number[]} arr - The array of numbers to calculate the quantile value from.\r\n * @param {number} q - The percentile to calculate the quantile value for.\r\n * @returns {number} - The quantile value.\r\n */\n\n\nfunction _quantileForSorted(sorted, q) {\n var clamped = clamp(0, 1, q); // Clamp the percentile between 0 and 1\n\n var pos = (sorted.length - 1) * clamped; // Calculate the index of the element at the specified percentile\n\n var base = Math.floor(pos); // Find the index of the closest element to the specified percentile\n\n var rest = pos - base; // Calculate the decimal value between the closest elements\n // Interpolate the quantile value between the closest elements\n // Most libraries don't to the interpolation, but I'm just having fun here\n // also see https://en.wikipedia.org/wiki/Quantile#Estimating_quantiles_from_a_sample\n\n if (sorted[base + 1] !== undefined) {\n // in case the position was a integer, the rest will be 0 and the interpolation will be skipped\n return sorted[base] + rest * (sorted[base + 1] - sorted[base]);\n } // Return the closest element if there is no interpolation possible\n\n\n return sorted[base];\n}\n/**\r\n * Calculates the quantile values for an array of intervals.\r\n * @param {number[]} data - The array of numbers to calculate the quantile values from.\r\n * @param {number[]} intervals - The array of intervals to calculate the quantile values for.\r\n * @returns {number[]} - The array of quantile values for the intervals.\r\n */\n\n\nvar getQuantileIntervals = function getQuantileIntervals(data, intervals) {\n // Sort the array in ascending order before looping through the intervals.\n // depending on the size of the array and the number of intervals, this can speed up the process by at least twice\n // for a random array of 100 numbers and 5 intervals, the speedup is 3x\n var sorted = sortAsc(data);\n return intervals.map(function (interval) {\n return _quantileForSorted(sorted, interval);\n });\n};\n\nexport { clamp, debounce, formatDate, formatTime, getContrastingTextColor, getQuantileIntervals, parseBoolean, quantile, sortAsc, trimContent };","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.regex)('alpha', /^[a-zA-Z]*$/);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar withParams = process.env.BUILD === 'web' ? require('./withParamsBrowser').withParams : require('./params').withParams;\nvar _default = withParams;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.withParams = void 0;\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar root = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nvar fakeWithParams = function fakeWithParams(paramsOrClosure, maybeValidator) {\n if (_typeof(paramsOrClosure) === 'object' && maybeValidator !== undefined) {\n return maybeValidator;\n }\n\n return paramsOrClosure(function () {});\n};\n\nvar withParams = root.vuelidate ? root.vuelidate.withParams : fakeWithParams;\nexports.withParams = withParams;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.regex)('alphaNum', /^[a-zA-Z0-9]*$/);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.regex)('numeric', /^[0-9]*$/);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(min, max) {\n return (0, _common.withParams)({\n type: 'between',\n min: min,\n max: max\n }, function (value) {\n return !(0, _common.req)(value) || (!/\\s/.test(value) || value instanceof Date) && +min <= +value && +max >= +value;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.withParams)({\n type: 'ipAddress'\n}, function (value) {\n if (!(0, _common.req)(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n var nibbles = value.split('.');\n return nibbles.length === 4 && nibbles.every(nibbleValid);\n});\n\nexports.default = _default;\n\nvar nibbleValid = function nibbleValid(nibble) {\n if (nibble.length > 3 || nibble.length === 0) {\n return false;\n }\n\n if (nibble[0] === '0' && nibble !== '0') {\n return false;\n }\n\n if (!nibble.match(/^\\d+$/)) {\n return false;\n }\n\n var numeric = +nibble | 0;\n return numeric >= 0 && numeric <= 255;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ':';\n return (0, _common.withParams)({\n type: 'macAddress'\n }, function (value) {\n if (!(0, _common.req)(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n var parts = typeof separator === 'string' && separator !== '' ? value.split(separator) : value.length === 12 || value.length === 16 ? value.match(/.{2}/g) : null;\n return parts !== null && (parts.length === 6 || parts.length === 8) && parts.every(hexValid);\n });\n};\n\nexports.default = _default;\n\nvar hexValid = function hexValid(hex) {\n return hex.toLowerCase().match(/^[0-9a-f]{2}$/);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(length) {\n return (0, _common.withParams)({\n type: 'maxLength',\n max: length\n }, function (value) {\n return !(0, _common.req)(value) || (0, _common.len)(value) <= length;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(length) {\n return (0, _common.withParams)({\n type: 'minLength',\n min: length\n }, function (value) {\n return !(0, _common.req)(value) || (0, _common.len)(value) >= length;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.withParams)({\n type: 'required'\n}, function (value) {\n if (typeof value === 'string') {\n return (0, _common.req)(value.trim());\n }\n\n return (0, _common.req)(value);\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(prop) {\n return (0, _common.withParams)({\n type: 'requiredIf',\n prop: prop\n }, function (value, parentVm) {\n return (0, _common.ref)(prop, this, parentVm) ? (0, _common.req)(value) : true;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(prop) {\n return (0, _common.withParams)({\n type: 'requiredUnless',\n prop: prop\n }, function (value, parentVm) {\n return !(0, _common.ref)(prop, this, parentVm) ? (0, _common.req)(value) : true;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(equalTo) {\n return (0, _common.withParams)({\n type: 'sameAs',\n eq: equalTo\n }, function (value, parentVm) {\n return value === (0, _common.ref)(equalTo, this, parentVm);\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar urlRegex = /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\n\nvar _default = (0, _common.regex)('url', urlRegex);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default() {\n for (var _len = arguments.length, validators = new Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n return (0, _common.withParams)({\n type: 'or'\n }, function () {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.length > 0 && validators.reduce(function (valid, fn) {\n return valid || fn.apply(_this, args);\n }, false);\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default() {\n for (var _len = arguments.length, validators = new Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n return (0, _common.withParams)({\n type: 'and'\n }, function () {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.length > 0 && validators.reduce(function (valid, fn) {\n return valid && fn.apply(_this, args);\n }, true);\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(validator) {\n return (0, _common.withParams)({\n type: 'not'\n }, function (value, vm) {\n return !(0, _common.req)(value) || !validator.call(this, value, vm);\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(min) {\n return (0, _common.withParams)({\n type: 'minValue',\n min: min\n }, function (value) {\n return !(0, _common.req)(value) || (!/\\s/.test(value) || value instanceof Date) && +value >= +min;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = function _default(max) {\n return (0, _common.withParams)({\n type: 'maxValue',\n max: max\n }, function (value) {\n return !(0, _common.req)(value) || (!/\\s/.test(value) || value instanceof Date) && +value <= +max;\n });\n};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.regex)('integer', /(^[0-9]*$)|(^-[0-9]+$)/);\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar _default = (0, _common.regex)('decimal', /^[-]?\\d*(\\.\\d+)?$/);\n\nexports.default = _default;","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","'use strict';\n\nvar Vue = require('vue');\n\nVue = 'default' in Vue ? Vue['default'] : Vue;\nvar version = '2.1.0';\nvar compatible = /^2\\./.test(Vue.version);\n\nif (!compatible) {\n Vue.util.warn('VueClickaway ' + version + ' only supports Vue 2.x, and does not support Vue ' + Vue.version);\n} // @SECTION: implementation\n\n\nvar HANDLER = '_vue_clickaway_handler';\n\nfunction bind(el, binding) {\n unbind(el);\n var callback = binding.value;\n\n if (typeof callback !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n Vue.util.warn('v-' + binding.name + '=\"' + binding.expression + '\" expects a function value, ' + 'got ' + callback);\n }\n\n return;\n } // @NOTE: Vue binds directives in microtasks, while UI events are dispatched\n // in macrotasks. This causes the listener to be set up before\n // the \"origin\" click event (the event that lead to the binding of\n // the directive) arrives at the document root. To work around that,\n // we ignore events until the end of the \"initial\" macrotask.\n // @REFERENCE: https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/\n // @REFERENCE: https://github.com/simplesmiler/vue-clickaway/issues/8\n\n\n var initialMacrotaskEnded = false;\n setTimeout(function () {\n initialMacrotaskEnded = true;\n }, 0);\n\n el[HANDLER] = function (ev) {\n // @NOTE: IE 5.0+\n // @REFERENCE: https://developer.mozilla.org/en/docs/Web/API/Node/contains\n if (initialMacrotaskEnded && !el.contains(ev.target)) {\n return callback(ev);\n }\n };\n\n document.documentElement.addEventListener('click', el[HANDLER], false);\n}\n\nfunction unbind(el) {\n document.documentElement.removeEventListener('click', el[HANDLER], false);\n delete el[HANDLER];\n}\n\nvar directive = {\n bind: bind,\n update: function update(el, binding) {\n if (binding.value === binding.oldValue) return;\n bind(el, binding);\n },\n unbind: unbind\n};\nvar mixin = {\n directives: {\n onClickaway: directive\n }\n};\nexports.version = version;\nexports.directive = directive;\nexports.mixin = mixin;","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function rhex(n) {\n var s = \"\",\n j;\n\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n\n return s;\n }\n\n function hex(x) {\n var i;\n\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n\n return x.join(\"\");\n }\n\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n function SparkMD5() {\n this.reset();\n }\n\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(this._hash, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n });\n });\n\n var classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n return root.querySelector(selector);\n }\n\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n\n return event;\n }\n\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type,\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n this.xhr.setRequestHeader(\"X-CSRF-Token\", getMetaValue(\"csrf-token\"));\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n\n var id = 0;\n\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n\n return object[methodName].apply(object, messages);\n }\n }\n\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n\n _this.dispatch(\"end\");\n\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var controllers = this.createDirectUploadControllers();\n\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n\n _this.dispatch(\"end\");\n }\n };\n\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n\n function didClick(event) {\n var target = event.target;\n\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n\n submitButtonsByForm.delete(form);\n }\n\n function disable(input) {\n input.disabled = true;\n }\n\n function enable(input) {\n input.disabled = false;\n }\n\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _common = require(\"./common\");\n\nvar emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\n\nvar _default = (0, _common.regex)('email', emailRegex);\n\nexports.default = _default;","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n/*!\n * Name: vue-upload-component\n * Version: 2.8.21\n * Author: Marco Lang\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof2(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.VueUploadComponent = factory();\n})(this, function () {\n 'use strict';\n /**\n * Creates a XHR request\n *\n * @param {Object} options\n */\n\n var createRequest = function createRequest(options) {\n var xhr = new XMLHttpRequest();\n xhr.open(options.method || 'GET', options.url);\n xhr.responseType = 'json';\n\n if (options.headers) {\n Object.keys(options.headers).forEach(function (key) {\n xhr.setRequestHeader(key, options.headers[key]);\n });\n }\n\n return xhr;\n };\n /**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\n\n\n var sendRequest = function sendRequest(xhr, body) {\n return new Promise(function (resolve, reject) {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response;\n\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n\n xhr.send(JSON.stringify(body));\n });\n };\n /**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\n\n\n var sendFormRequest = function sendFormRequest(xhr, data) {\n var body = new FormData();\n\n for (var name in data) {\n body.append(name, data[name]);\n }\n\n return new Promise(function (resolve, reject) {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response;\n\n try {\n response = JSON.parse(xhr.response);\n } catch (err) {\n response = xhr.response;\n }\n\n resolve(response);\n } else {\n reject(xhr.response);\n }\n };\n\n xhr.onerror = function () {\n return reject(xhr.response);\n };\n\n xhr.send(body);\n });\n };\n /**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\n\n\n function request(options) {\n var xhr = createRequest(options);\n return sendRequest(xhr, options.body);\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ChunkUploadHandler = function () {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n function ChunkUploadHandler(file, options) {\n _classCallCheck(this, ChunkUploadHandler);\n\n this.file = file;\n this.options = options;\n this.chunks = [];\n this.sessionId = null;\n this.chunkSize = null;\n this.speedInterval = null;\n }\n /**\n * Gets the max retries from options\n */\n\n\n _createClass(ChunkUploadHandler, [{\n key: 'createChunks',\n\n /**\n * Creates all the chunks in the initial state\n */\n value: function createChunks() {\n this.chunks = [];\n var start = 0;\n var end = this.chunkSize;\n\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n });\n start = end;\n end = start + this.chunkSize;\n }\n }\n /**\n * Updates the progress of the file with the handler's progress\n */\n\n }, {\n key: 'updateFileProgress',\n value: function updateFileProgress() {\n this.file.progress = this.progress;\n }\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this.file.active = false;\n this.stopChunks();\n }\n /**\n * Stops all the current chunks\n */\n\n }, {\n key: 'stopChunks',\n value: function stopChunks() {\n this.chunksUploading.forEach(function (chunk) {\n chunk.xhr.abort();\n chunk.active = false;\n });\n this.stopSpeedCalc();\n }\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n\n }, {\n key: 'resume',\n value: function resume() {\n this.file.active = true;\n this.startChunking();\n }\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n\n }, {\n key: 'upload',\n value: function upload() {\n var _this = this;\n\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n this.start();\n return this.promise;\n }\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n\n }, {\n key: 'start',\n value: function start() {\n var _this2 = this;\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize,\n name: this.fileName\n })\n }).then(function (res) {\n if (res.status !== 'success') {\n _this2.file.response = res;\n return _this2.reject('server');\n }\n\n _this2.sessionId = res.data.session_id;\n _this2.chunkSize = res.data.end_offset;\n\n _this2.createChunks();\n\n _this2.startChunking();\n }).catch(function (res) {\n _this2.file.response = res;\n\n _this2.reject('server');\n });\n }\n /**\n * Starts to upload chunks\n */\n\n }, {\n key: 'startChunking',\n value: function startChunking() {\n for (var i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk();\n }\n\n this.startSpeedCalc();\n }\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n\n }, {\n key: 'uploadNextChunk',\n value: function uploadNextChunk() {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0]);\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish();\n }\n }\n }\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n\n }, {\n key: 'uploadChunk',\n value: function uploadChunk(chunk) {\n var _this3 = this;\n\n chunk.progress = 0;\n chunk.active = true;\n this.updateFileProgress();\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n });\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100);\n }\n }, false);\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(function (res) {\n chunk.active = false;\n\n if (res.status === 'success') {\n chunk.uploaded = true;\n } else {\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n\n return _this3.reject('upload');\n }\n }\n\n _this3.uploadNextChunk();\n }).catch(function () {\n chunk.active = false;\n\n if (chunk.retries-- <= 0) {\n _this3.stopChunks();\n\n return _this3.reject('upload');\n }\n\n _this3.uploadNextChunk();\n });\n }\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n\n }, {\n key: 'finish',\n value: function finish() {\n var _this4 = this;\n\n this.updateFileProgress();\n this.stopSpeedCalc();\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(function (res) {\n _this4.file.response = res;\n\n if (res.status !== 'success') {\n return _this4.reject('server');\n }\n\n _this4.resolve(res);\n }).catch(function (res) {\n _this4.file.response = res;\n\n _this4.reject('server');\n });\n }\n /**\n * Sets an interval to calculate and\n * set upload speed every 3 seconds\n */\n\n }, {\n key: 'startSpeedCalc',\n value: function startSpeedCalc() {\n var _this5 = this;\n\n this.file.speed = 0;\n var lastUploadedBytes = 0;\n\n if (!this.speedInterval) {\n this.speedInterval = window.setInterval(function () {\n var uploadedBytes = _this5.progress / 100 * _this5.fileSize;\n _this5.file.speed = uploadedBytes - lastUploadedBytes;\n lastUploadedBytes = uploadedBytes;\n }, 1000);\n }\n }\n /**\n * Removes the upload speed interval\n */\n\n }, {\n key: 'stopSpeedCalc',\n value: function stopSpeedCalc() {\n this.speedInterval && window.clearInterval(this.speedInterval);\n this.speedInterval = null;\n this.file.speed = 0;\n }\n }, {\n key: 'maxRetries',\n get: function get() {\n return parseInt(this.options.maxRetries, 10);\n }\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n\n }, {\n key: 'maxActiveChunks',\n get: function get() {\n return parseInt(this.options.maxActive, 10);\n }\n /**\n * Gets the file type\n */\n\n }, {\n key: 'fileType',\n get: function get() {\n return this.file.type;\n }\n /**\n * Gets the file size\n */\n\n }, {\n key: 'fileSize',\n get: function get() {\n return this.file.size;\n }\n /**\n * Gets the file name\n */\n\n }, {\n key: 'fileName',\n get: function get() {\n return this.file.name;\n }\n /**\n * Gets action (url) to upload the file\n */\n\n }, {\n key: 'action',\n get: function get() {\n return this.options.action || null;\n }\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n\n }, {\n key: 'startBody',\n get: function get() {\n return this.options.startBody || {};\n }\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n\n }, {\n key: 'uploadBody',\n get: function get() {\n return this.options.uploadBody || {};\n }\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n\n }, {\n key: 'finishBody',\n get: function get() {\n return this.options.finishBody || {};\n }\n /**\n * Gets the headers of the requests from options\n */\n\n }, {\n key: 'headers',\n get: function get() {\n return this.options.headers || {};\n }\n /**\n * Whether it's ready to upload files or not\n */\n\n }, {\n key: 'readyToUpload',\n get: function get() {\n return !!this.chunks;\n }\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n\n }, {\n key: 'progress',\n get: function get() {\n var _this6 = this;\n\n var completedProgress = this.chunksUploaded.length / this.chunks.length * 100;\n var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) {\n return progress + (chunk.progress | 0) / _this6.chunks.length;\n }, 0);\n return Math.min(completedProgress + uploadingProgress, 100);\n }\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n\n }, {\n key: 'chunksToUpload',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !chunk.active && !chunk.uploaded;\n });\n }\n /**\n * Whether there are chunks to upload or not\n */\n\n }, {\n key: 'hasChunksToUpload',\n get: function get() {\n return this.chunksToUpload.length > 0;\n }\n /**\n * Gets all the chunks that are uploading\n */\n\n }, {\n key: 'chunksUploading',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !!chunk.xhr && !!chunk.active;\n });\n }\n /**\n * Gets all the chunks that have finished uploading\n */\n\n }, {\n key: 'chunksUploaded',\n get: function get() {\n return this.chunks.filter(function (chunk) {\n return !!chunk.uploaded;\n });\n }\n }]);\n\n return ChunkUploadHandler;\n }(); //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n //\n\n\n var script = {\n methods: {\n change: function change(e) {\n this.$parent.addInputFile(e.target);\n\n if (e.target.files) {\n e.target.value = '';\n\n if (e.target.files.length && !/safari/i.test(navigator.userAgent)) {\n e.target.type = '';\n e.target.type = 'file';\n }\n } else {\n // ie9 fix #219\n this.$destroy(); // eslint-disable-next-line\n\n new this.constructor({\n parent: this.$parent,\n el: this.$el\n });\n }\n }\n }\n };\n\n function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n /* server only */\n , shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n }\n\n var normalizeComponent_1 = normalizeComponent;\n /* script */\n\n var __vue_script__ = script;\n /* template */\n\n var __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('input', {\n attrs: {\n \"type\": \"file\",\n \"name\": _vm.$parent.name,\n \"id\": _vm.$parent.inputId || _vm.$parent.name,\n \"accept\": _vm.$parent.accept,\n \"capture\": _vm.$parent.capture,\n \"disabled\": _vm.$parent.disabled,\n \"webkitdirectory\": _vm.$parent.directory && _vm.$parent.features.directory,\n \"directory\": _vm.$parent.directory && _vm.$parent.features.directory,\n \"multiple\": _vm.$parent.multiple && _vm.$parent.features.html5\n },\n on: {\n \"change\": _vm.change\n }\n });\n };\n\n var __vue_staticRenderFns__ = [];\n /* style */\n\n var __vue_inject_styles__ = undefined;\n /* scoped */\n\n var __vue_scope_id__ = undefined;\n /* module identifier */\n\n var __vue_module_identifier__ = undefined;\n /* functional template */\n\n var __vue_is_functional_template__ = false;\n /* style inject */\n\n /* style inject SSR */\n\n var InputFile = normalizeComponent_1({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n var _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return _typeof2(obj);\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n var CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n handler: ChunkUploadHandler\n };\n var script$1 = {\n components: {\n InputFile: InputFile\n },\n props: {\n inputId: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n accept: {\n type: String\n },\n capture: {},\n disabled: {},\n multiple: {\n type: Boolean\n },\n maximum: {\n type: Number,\n default: function _default() {\n return this.multiple ? 0 : 1;\n }\n },\n addIndex: {\n type: [Boolean, Number]\n },\n directory: {\n type: Boolean\n },\n postAction: {\n type: String\n },\n putAction: {\n type: String\n },\n customAction: {\n type: Function\n },\n headers: {\n type: Object,\n default: Object\n },\n data: {\n type: Object,\n default: Object\n },\n timeout: {\n type: Number,\n default: 0\n },\n drop: {\n default: false\n },\n dropDirectory: {\n type: Boolean,\n default: true\n },\n size: {\n type: Number,\n default: 0\n },\n extensions: {\n default: Array\n },\n value: {\n type: Array,\n default: Array\n },\n thread: {\n type: Number,\n default: 1\n },\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n // Chunk upload properties\n chunk: {\n type: Object,\n default: function _default() {\n return CHUNK_DEFAULT_OPTIONS;\n }\n }\n },\n data: function data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drop: false\n },\n active: false,\n dropActive: false,\n uploading: 0,\n destroy: false\n };\n },\n\n /**\n * mounted\n * @return {[type]} [description]\n */\n mounted: function mounted() {\n var input = document.createElement('input');\n input.type = 'file';\n input.multiple = true; // html5 特征\n\n if (window.FormData && input.files) {\n // 上传目录特征\n if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n this.features.directory = true;\n } // 拖拽特征\n\n\n if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n this.features.drop = true;\n }\n } else {\n this.features.html5 = false;\n } // files 定位缓存\n\n\n this.maps = {};\n\n if (this.files) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n this.maps[file.id] = file;\n }\n }\n\n this.$nextTick(function () {\n var _this = this; // 更新下父级\n\n\n if (this.$parent) {\n this.$parent.$forceUpdate(); // 拖拽渲染\n\n this.$parent.$nextTick(function () {\n _this.watchDrop(_this.drop);\n });\n } else {\n // 拖拽渲染\n this.watchDrop(this.drop);\n }\n });\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy: function beforeDestroy() {\n // 已销毁\n this.destroy = true; // 设置成不激活\n\n this.active = false; // 销毁拖拽事件\n\n this.watchDrop(false);\n },\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded: function uploaded() {\n var file = void 0;\n\n for (var i = 0; i < this.files.length; i++) {\n file = this.files[i];\n\n if (file.fileObject && !file.error && !file.success) {\n return false;\n }\n }\n\n return true;\n },\n chunkOptions: function chunkOptions() {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk);\n },\n className: function className() {\n return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined, this.disabled ? 'file-uploads-disabled' : undefined];\n }\n },\n watch: {\n active: function active(_active) {\n this.watchActive(_active);\n },\n dropActive: function dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate();\n }\n },\n drop: function drop(value) {\n this.watchDrop(value);\n },\n value: function value(files) {\n if (this.files === files) {\n return;\n }\n\n this.files = files;\n var oldMaps = this.maps; // 重写 maps 缓存\n\n this.maps = {};\n\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n this.maps[file.id] = file;\n } // add, update\n\n\n for (var key in this.maps) {\n var newFile = this.maps[key];\n var oldFile = oldMaps[key];\n\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile);\n }\n } // delete\n\n\n for (var _key in oldMaps) {\n if (!this.maps[_key]) {\n this.emitFile(undefined, oldMaps[_key]);\n }\n }\n }\n },\n methods: {\n // 清空\n clear: function clear() {\n if (this.files.length) {\n var files = this.files;\n this.files = []; // 定位\n\n this.maps = {}; // 事件\n\n this.emitInput();\n\n for (var i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i]);\n }\n }\n\n return true;\n },\n // 选择\n get: function get(id) {\n if (!id) {\n return false;\n }\n\n if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') {\n return this.maps[id.id] || false;\n }\n\n return this.maps[id] || false;\n },\n // 添加\n add: function add(_files) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex;\n var files = _files;\n var isArray = files instanceof Array; // 不是数组整理成数组\n\n if (!isArray) {\n files = [files];\n } // 遍历规范对象\n\n\n var addFiles = [];\n\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file: file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type\n };\n }\n\n var fileObject = false;\n if (file.fileObject === false) ;else if (file.fileObject) {\n fileObject = true;\n } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n fileObject = true;\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true;\n }\n\n if (fileObject) {\n file = _extends({\n fileObject: true,\n size: -1,\n name: 'Filename',\n type: '',\n active: false,\n error: '',\n success: false,\n putAction: this.putAction,\n postAction: this.postAction,\n timeout: this.timeout\n }, file, {\n response: {},\n progress: '0.00',\n // 只读\n speed: 0 // 只读\n // xhr: false, // 只读\n // iframe: false, // 只读\n\n });\n file.data = _extends({}, this.data, file.data ? file.data : {});\n file.headers = _extends({}, this.headers, file.headers ? file.headers : {});\n } // 必须包含 id\n\n\n if (!file.id) {\n file.id = Math.random().toString(36).substr(2);\n }\n\n if (this.emitFilter(file, undefined)) {\n continue;\n } // 最大数量限制\n\n\n if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) {\n break;\n }\n\n addFiles.push(file); // 最大数量限制\n\n if (this.maximum === 1) {\n break;\n }\n } // 没有文件\n\n\n if (!addFiles.length) {\n return false;\n } // 如果是 1 清空\n\n\n if (this.maximum === 1) {\n this.clear();\n } // 添加进去 files\n\n\n var newFiles = void 0;\n\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files);\n } else if (index) {\n var _newFiles;\n\n newFiles = this.files.concat([]);\n\n (_newFiles = newFiles).splice.apply(_newFiles, [index, 0].concat(addFiles));\n } else {\n newFiles = this.files.concat(addFiles);\n }\n\n this.files = newFiles; // 定位\n\n for (var _i = 0; _i < addFiles.length; _i++) {\n var _file2 = addFiles[_i];\n this.maps[_file2.id] = _file2;\n } // 事件\n\n\n this.emitInput();\n\n for (var _i2 = 0; _i2 < addFiles.length; _i2++) {\n this.emitFile(addFiles[_i2], undefined);\n }\n\n return isArray ? addFiles : addFiles[0];\n },\n // 添加表单文件\n addInputFile: function addInputFile(el) {\n var files = [];\n\n if (el.files) {\n for (var i = 0; i < el.files.length; i++) {\n var file = el.files[i];\n files.push({\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name,\n type: file.type,\n file: file\n });\n }\n } else {\n var names = el.value.replace(/\\\\/g, '/').split('/');\n delete el.__vuex__;\n files.push({\n name: names[names.length - 1],\n el: el\n });\n }\n\n return this.add(files);\n },\n // 添加 DataTransfer\n addDataTransfer: function addDataTransfer(dataTransfer) {\n var _this2 = this;\n\n var files = [];\n\n if (dataTransfer.items && dataTransfer.items.length) {\n var items = [];\n\n for (var i = 0; i < dataTransfer.items.length; i++) {\n var item = dataTransfer.items[i];\n\n if (item.getAsEntry) {\n item = item.getAsEntry() || item.getAsFile();\n } else if (item.webkitGetAsEntry) {\n item = item.webkitGetAsEntry() || item.getAsFile();\n } else {\n item = item.getAsFile();\n }\n\n if (item) {\n items.push(item);\n }\n }\n\n return new Promise(function (resolve, reject) {\n var forEach = function forEach(i) {\n var item = items[i]; // 结束 文件数量大于 最大数量\n\n if (!item || _this2.maximum > 0 && files.length >= _this2.maximum) {\n return resolve(_this2.add(files));\n }\n\n _this2.getEntry(item).then(function (results) {\n files.push.apply(files, _toConsumableArray(results));\n forEach(i + 1);\n });\n };\n\n forEach(0);\n });\n }\n\n if (dataTransfer.files.length) {\n for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {\n files.push(dataTransfer.files[_i3]);\n\n if (this.maximum > 0 && files.length >= this.maximum) {\n break;\n }\n }\n\n return Promise.resolve(this.add(files));\n }\n\n return Promise.resolve([]);\n },\n // 获得 entry\n getEntry: function getEntry(entry) {\n var _this3 = this;\n\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return new Promise(function (resolve, reject) {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([{\n size: file.size,\n name: path + file.name,\n type: file.type,\n file: file\n }]);\n });\n } else if (entry.isDirectory && _this3.dropDirectory) {\n var files = [];\n var dirReader = entry.createReader();\n\n var readEntries = function readEntries() {\n dirReader.readEntries(function (entries) {\n var forEach = function forEach(i) {\n if (!entries[i] && i === 0 || _this3.maximum > 0 && files.length >= _this3.maximum) {\n return resolve(files);\n }\n\n if (!entries[i]) {\n return readEntries();\n }\n\n _this3.getEntry(entries[i], path + entry.name + '/').then(function (results) {\n files.push.apply(files, _toConsumableArray(results));\n forEach(i + 1);\n });\n };\n\n forEach(0);\n });\n };\n\n readEntries();\n } else {\n resolve([]);\n }\n });\n },\n replace: function replace(id1, id2) {\n var file1 = this.get(id1);\n var file2 = this.get(id2);\n\n if (!file1 || !file2 || file1 === file2) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index1 = files.indexOf(file1);\n var index2 = files.indexOf(file2);\n\n if (index1 === -1 || index2 === -1) {\n return false;\n }\n\n files[index1] = file2;\n files[index2] = file1;\n this.files = files;\n this.emitInput();\n return true;\n },\n // 移除\n remove: function remove(id) {\n var file = this.get(id);\n\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index = files.indexOf(file);\n\n if (index === -1) {\n console.error('remove', file);\n return false;\n }\n\n files.splice(index, 1);\n this.files = files; // 定位\n\n delete this.maps[file.id]; // 事件\n\n this.emitInput();\n this.emitFile(undefined, file);\n }\n\n return file;\n },\n // 更新\n update: function update(id, data) {\n var file = this.get(id);\n\n if (file) {\n var newFile = _extends({}, file, data); // 停用必须加上错误\n\n\n if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n newFile.error = 'abort';\n }\n\n if (this.emitFilter(newFile, file)) {\n return false;\n }\n\n var files = this.files.concat([]);\n var index = files.indexOf(file);\n\n if (index === -1) {\n console.error('update', file);\n return false;\n }\n\n files.splice(index, 1, newFile);\n this.files = files; // 删除 旧定位 写入 新定位 (已便支持修改id)\n\n delete this.maps[file.id];\n this.maps[newFile.id] = newFile; // 事件\n\n this.emitInput();\n this.emitFile(newFile, file);\n return newFile;\n }\n\n return false;\n },\n // 预处理 事件 过滤器\n emitFilter: function emitFilter(newFile, oldFile) {\n var isPrevent = false;\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true;\n return isPrevent;\n });\n return isPrevent;\n },\n // 处理后 事件 分发\n emitFile: function emitFile(newFile, oldFile) {\n this.$emit('input-file', newFile, oldFile);\n\n if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++; // 激活\n\n this.$nextTick(function () {\n var _this4 = this;\n\n setTimeout(function () {\n _this4.upload(newFile).then(function () {\n // eslint-disable-next-line\n newFile = _this4.get(newFile);\n\n if (newFile && newFile.fileObject) {\n _this4.update(newFile, {\n active: false,\n success: !newFile.error\n });\n }\n }).catch(function (e) {\n _this4.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n });\n });\n }, parseInt(Math.random() * 50 + 50, 10));\n });\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--;\n } // 自动延续激活\n\n\n if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n this.watchActive(true);\n }\n },\n emitInput: function emitInput() {\n this.$emit('input', this.files);\n },\n // 上传\n upload: function upload(id) {\n var file = this.get(id); // 被删除\n\n if (!file) {\n return Promise.reject('not_exists');\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return Promise.reject('file_object');\n } // 有错误直接响应\n\n\n if (file.error) {\n return Promise.reject(file.error);\n } // 已完成直接响应\n\n\n if (file.success) {\n return Promise.resolve(file);\n } // 后缀\n\n\n var extensions = this.extensions;\n\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(function (value) {\n return value.trim();\n }).filter(function (value) {\n return value;\n });\n }\n\n extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i');\n }\n\n if (file.name.search(extensions) === -1) {\n return Promise.reject('extension');\n }\n } // 大小\n\n\n if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n return Promise.reject('size');\n }\n\n if (this.customAction) {\n return this.customAction(file, this);\n }\n\n if (this.features.html5) {\n if (this.shouldUseChunkUpload(file)) {\n return this.uploadChunk(file);\n }\n\n if (file.putAction) {\n return this.uploadPut(file);\n }\n\n if (file.postAction) {\n return this.uploadHtml5(file);\n }\n }\n\n if (file.postAction) {\n return this.uploadHtml4(file);\n }\n\n return Promise.reject('No action configured');\n },\n\n /**\n * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload: function shouldUseChunkUpload(file) {\n return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize;\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk: function uploadChunk(file) {\n var HandlerClass = this.chunkOptions.handler;\n file.chunk = new HandlerClass(file, this.chunkOptions);\n return file.chunk.upload();\n },\n uploadPut: function uploadPut(file) {\n var querys = [];\n var value = void 0;\n\n for (var key in file.data) {\n value = file.data[key];\n\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n\n var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : '';\n var xhr = new XMLHttpRequest();\n xhr.open('PUT', file.putAction + queryString);\n return this.uploadXhr(xhr, file, file.file);\n },\n uploadHtml5: function uploadHtml5(file) {\n var form = new window.FormData();\n var value = void 0;\n\n for (var key in file.data) {\n value = file.data[key];\n\n if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n if (value instanceof File) {\n form.append(key, value, value.name);\n } else {\n form.append(key, JSON.stringify(value));\n }\n } else if (value !== null && value !== undefined) {\n form.append(key, value);\n }\n }\n\n form.append(this.name, file.file, file.file.filename || file.name);\n var xhr = new XMLHttpRequest();\n xhr.open('POST', file.postAction);\n return this.uploadXhr(xhr, file, form);\n },\n uploadXhr: function uploadXhr(xhr, _file, body) {\n var _this5 = this;\n\n var file = _file;\n var speedTime = 0;\n var speedLoaded = 0; // 进度条\n\n xhr.upload.onprogress = function (e) {\n // 还未开始上传 已删除 未激活\n file = _this5.get(file);\n\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return;\n } // 进度 速度 每秒更新一次\n\n\n var speedTime2 = Math.round(Date.now() / 1000);\n\n if (speedTime2 === speedTime) {\n return;\n }\n\n speedTime = speedTime2;\n file = _this5.update(file, {\n progress: (e.loaded / e.total * 100).toFixed(2),\n speed: e.loaded - speedLoaded\n });\n speedLoaded = e.loaded;\n }; // 检查激活状态\n\n\n var interval = setInterval(function () {\n file = _this5.get(file);\n\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n try {\n xhr.abort();\n xhr.timeout = 1;\n } catch (e) {}\n }, 100);\n return new Promise(function (resolve, reject) {\n var complete = void 0;\n\n var fn = function fn(e) {\n // 已经处理过了\n if (complete) {\n return;\n }\n\n complete = true;\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n file = _this5.get(file); // 不存在直接响应\n\n if (!file) {\n return reject('not_exists');\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return reject('file_object');\n } // 有错误自动响应\n\n\n if (file.error) {\n return reject(file.error);\n } // 未激活\n\n\n if (!file.active) {\n return reject('abort');\n } // 已完成 直接相应\n\n\n if (file.success) {\n return resolve(file);\n }\n\n var data = {};\n\n switch (e.type) {\n case 'timeout':\n case 'abort':\n data.error = e.type;\n break;\n\n case 'error':\n if (!xhr.status) {\n data.error = 'network';\n } else if (xhr.status >= 500) {\n data.error = 'server';\n } else if (xhr.status >= 400) {\n data.error = 'denied';\n }\n\n break;\n\n default:\n if (xhr.status >= 500) {\n data.error = 'server';\n } else if (xhr.status >= 400) {\n data.error = 'denied';\n } else {\n data.progress = '100.00';\n }\n\n }\n\n if (xhr.responseText) {\n var contentType = xhr.getResponseHeader('Content-Type');\n\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText);\n } else {\n data.response = xhr.responseText;\n }\n } // 更新\n\n\n file = _this5.update(file, data); // 相应错误\n\n if (file.error) {\n return reject(file.error);\n } // 响应\n\n\n return resolve(file);\n }; // 事件\n\n\n xhr.onload = fn;\n xhr.onerror = fn;\n xhr.onabort = fn;\n xhr.ontimeout = fn; // 超时\n\n if (file.timeout) {\n xhr.timeout = file.timeout;\n } // headers\n\n\n for (var key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key]);\n } // 更新 xhr\n\n\n file = _this5.update(file, {\n xhr: xhr\n }); // 开始上传\n\n xhr.send(body);\n });\n },\n uploadHtml4: function uploadHtml4(_file) {\n var _this6 = this;\n\n var file = _file;\n\n var onKeydown = function onKeydown(e) {\n if (e.keyCode === 27) {\n e.preventDefault();\n }\n };\n\n var iframe = document.createElement('iframe');\n iframe.id = 'upload-iframe-' + file.id;\n iframe.name = 'upload-iframe-' + file.id;\n iframe.src = 'about:blank';\n iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;');\n var form = document.createElement('form');\n form.action = file.postAction;\n form.name = 'upload-form-' + file.id;\n form.setAttribute('method', 'POST');\n form.setAttribute('target', 'upload-iframe-' + file.id);\n form.setAttribute('enctype', 'multipart/form-data');\n var value = void 0;\n var input = void 0;\n\n for (var key in file.data) {\n value = file.data[key];\n\n if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value);\n }\n\n if (value !== null && value !== undefined) {\n input = document.createElement('input');\n input.type = 'hidden';\n input.name = key;\n input.value = value;\n form.appendChild(input);\n }\n }\n\n form.appendChild(file.el);\n document.body.appendChild(iframe).appendChild(form);\n\n var getResponseData = function getResponseData() {\n var doc = void 0;\n\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document;\n }\n } catch (err) {}\n\n if (!doc) {\n try {\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;\n } catch (err) {\n doc = iframe.document;\n }\n }\n\n if (doc && doc.body) {\n return doc.body.innerHTML;\n }\n\n return null;\n };\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n file = _this6.update(file, {\n iframe: iframe\n }); // 不存在\n\n if (!file) {\n return reject('not_exists');\n } // 定时检查\n\n\n var interval = setInterval(function () {\n file = _this6.get(file);\n\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return;\n }\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n }\n\n iframe.onabort({\n type: file ? 'abort' : 'not_exists'\n });\n }, 100);\n var complete = void 0;\n\n var fn = function fn(e) {\n // 已经处理过了\n if (complete) {\n return;\n }\n\n complete = true;\n\n if (interval) {\n clearInterval(interval);\n interval = false;\n } // 关闭 esc 事件\n\n\n document.body.removeEventListener('keydown', onKeydown);\n file = _this6.get(file); // 不存在直接响应\n\n if (!file) {\n return reject('not_exists');\n } // 不是文件对象\n\n\n if (!file.fileObject) {\n return reject('file_object');\n } // 有错误自动响应\n\n\n if (file.error) {\n return reject(file.error);\n } // 未激活\n\n\n if (!file.active) {\n return reject('abort');\n } // 已完成 直接相应\n\n\n if (file.success) {\n return resolve(file);\n }\n\n var response = getResponseData();\n var data = {};\n\n switch (e.type) {\n case 'abort':\n data.error = 'abort';\n break;\n\n case 'error':\n if (file.error) {\n data.error = file.error;\n } else if (response === null) {\n data.error = 'network';\n } else {\n data.error = 'denied';\n }\n\n break;\n\n default:\n if (file.error) {\n data.error = file.error;\n } else if (data === null) {\n data.error = 'network';\n } else {\n data.progress = '100.00';\n }\n\n }\n\n if (response !== null) {\n if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n try {\n response = JSON.parse(response);\n } catch (err) {}\n }\n\n data.response = response;\n } // 更新\n\n\n file = _this6.update(file, data);\n\n if (file.error) {\n return reject(file.error);\n } // 响应\n\n\n return resolve(file);\n }; // 添加事件\n\n\n iframe.onload = fn;\n iframe.onerror = fn;\n iframe.onabort = fn; // 禁止 esc 键\n\n document.body.addEventListener('keydown', onKeydown); // 提交\n\n form.submit();\n }, 50);\n }).then(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe);\n return res;\n }).catch(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe);\n return res;\n });\n },\n watchActive: function watchActive(active) {\n var file = void 0;\n var index = 0;\n\n while (file = this.files[index]) {\n index++;\n if (!file.fileObject) ;else if (active && !this.destroy) {\n if (this.uploading >= this.thread || this.uploading && !this.features.html5) {\n break;\n }\n\n if (!file.active && !file.error && !file.success) {\n this.update(file, {\n active: true\n });\n }\n } else {\n if (file.active) {\n this.update(file, {\n active: false\n });\n }\n }\n }\n\n if (this.uploading === 0) {\n this.active = false;\n }\n },\n watchDrop: function watchDrop(_el) {\n var el = _el;\n\n if (!this.features.drop) {\n return;\n } // 移除挂载\n\n\n if (this.dropElement) {\n try {\n document.removeEventListener('dragenter', this.onDragenter, false);\n document.removeEventListener('dragleave', this.onDragleave, false);\n document.removeEventListener('drop', this.onDocumentDrop, false);\n this.dropElement.removeEventListener('dragover', this.onDragover, false);\n this.dropElement.removeEventListener('drop', this.onDrop, false);\n } catch (e) {}\n }\n\n if (!el) {\n el = false;\n } else if (typeof el === 'string') {\n el = document.querySelector(el) || this.$root.$el.querySelector(el);\n } else if (el === true) {\n el = this.$parent.$el;\n }\n\n this.dropElement = el;\n\n if (this.dropElement) {\n document.addEventListener('dragenter', this.onDragenter, false);\n document.addEventListener('dragleave', this.onDragleave, false);\n document.addEventListener('drop', this.onDocumentDrop, false);\n this.dropElement.addEventListener('dragover', this.onDragover, false);\n this.dropElement.addEventListener('drop', this.onDrop, false);\n }\n },\n onDragenter: function onDragenter(e) {\n e.preventDefault();\n\n if (this.dropActive) {\n return;\n }\n\n if (!e.dataTransfer) {\n return;\n }\n\n var dt = e.dataTransfer;\n\n if (dt.files && dt.files.length) {\n this.dropActive = true;\n } else if (!dt.types) {\n this.dropActive = true;\n } else if (dt.types.indexOf && dt.types.indexOf('Files') !== -1) {\n this.dropActive = true;\n } else if (dt.types.contains && dt.types.contains('Files')) {\n this.dropActive = true;\n }\n },\n onDragleave: function onDragleave(e) {\n e.preventDefault();\n\n if (!this.dropActive) {\n return;\n }\n\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || !e.fromElement && (e.clientX <= 0 || e.clientY <= 0 || e.clientX >= window.innerWidth || e.clientY >= window.innerHeight)) {\n this.dropActive = false;\n }\n },\n onDragover: function onDragover(e) {\n e.preventDefault();\n },\n onDocumentDrop: function onDocumentDrop() {\n this.dropActive = false;\n },\n onDrop: function onDrop(e) {\n e.preventDefault();\n this.addDataTransfer(e.dataTransfer);\n }\n }\n };\n var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n function createInjector(context) {\n return function (id, style) {\n return addStyle(id, style);\n };\n }\n\n var HEAD = document.head || document.getElementsByTagName('head')[0];\n var styles = {};\n\n function addStyle(id, css) {\n var group = isOldIE ? css.media || 'default' : id;\n var style = styles[group] || (styles[group] = {\n ids: new Set(),\n styles: []\n });\n\n if (!style.ids.has(id)) {\n style.ids.add(id);\n var code = css.source;\n\n if (css.map) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n }\n\n if (!style.element) {\n style.element = document.createElement('style');\n style.element.type = 'text/css';\n if (css.media) style.element.setAttribute('media', css.media);\n HEAD.appendChild(style.element);\n }\n\n if ('styleSheet' in style.element) {\n style.styles.push(code);\n style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n } else {\n var index = style.ids.size - 1;\n var textNode = document.createTextNode(code);\n var nodes = style.element.childNodes;\n if (nodes[index]) style.element.removeChild(nodes[index]);\n if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n }\n }\n }\n\n var browser = createInjector;\n /* script */\n\n var __vue_script__$1 = script$1;\n /* template */\n\n var __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('span', {\n class: _vm.className\n }, [_vm._t(\"default\"), _vm._v(\" \"), _c('label', {\n attrs: {\n \"for\": _vm.inputId || _vm.name\n }\n }), _vm._v(\" \"), _c('input-file')], 2);\n };\n\n var __vue_staticRenderFns__$1 = [];\n /* style */\n\n var __vue_inject_styles__$1 = function __vue_inject_styles__(inject) {\n if (!inject) return;\n inject(\"data-v-76d380b6_0\", {\n source: \".file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block}.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%}.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0}\",\n map: undefined,\n media: undefined\n });\n };\n /* scoped */\n\n\n var __vue_scope_id__$1 = undefined;\n /* module identifier */\n\n var __vue_module_identifier__$1 = undefined;\n /* functional template */\n\n var __vue_is_functional_template__$1 = false;\n /* style inject SSR */\n\n var FileUpload = normalizeComponent_1({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, browser, undefined);\n var FileUpload$1 = /*#__PURE__*/Object.freeze({\n default: FileUpload\n });\n\n function getCjsExportFromNamespace(n) {\n return n && n['default'] || n;\n }\n\n var require$$0 = getCjsExportFromNamespace(FileUpload$1);\n var src = require$$0;\n return src;\n});","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - isLastMonthNotFull);\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}"],"sourceRoot":""}