{"version":3,"sources":["ng-file-upload.js","ng-img-crop.js"],"names":["window","XMLHttpRequest","FileAPI","shouldLoad","prototype","setRequestHeader","orig","header","value","val","this","Function","apply","arguments","ngFileUpload","angular","module","version","service","$http","$q","$timeout","sendHttp","config","notifyProgress","e","deferred","notify","promise","progressFunc","getNotifyEvent","n","_start","resumeSupported","loaded","total","_file","size","type","lengthComputable","target","uploadWithAngular","then","r","_chunkSize","_finished","fileSize","Math","min","_end","upload","resolve","reject","method","headers","_deferred","defer","disableProgress","__setXHR_","xhr","addEventListener","__XHR","xhrFn","resumeSizeUrl","get","resp","resumeSizeResponseReader","data","parseInt","toString","resumeSize","success","fn","response","status","error","progress","abort","pause","origXhrFn","promisesCount","copy","obj","clone","key","hasOwnProperty","isResumeSupported","Blob","slice","isUploadInProgress","rename","file","name","ngfName","jsonBlob","isString","JSON","stringify","blob","_ngfBlob","json","toJson","isFile","flashId","internal","toResumeFile","formData","append","floor","addFieldToFormData","undefined","isDate","toISOString","split","replace","_fileKey","isObject","$$ngfCircularDetection","k","objectKey","length","arrayKey","digestConfig","translateScalars","resumeChunkSize","transformRequest","isArray","push","FormData","fields","formDataAppender","_isDigested","http","ArrayBuffer","defaults","str","search","parseFloat","substring","urlToBlob","url","responseType","arrayBufferView","Uint8Array","matches","match","setDefaults","$parse","$compile","UploadExif","applyExifRotations","files","attr","scope","promises","emptyPromise","forEach","f","i","indexOf","attrGetter","$file","happyPromise","applyExifRotation","fixedFile","splice","all","resizeFile","ngModel","resizeVal","isResizeSupported","p","resizeWithParams","params","handleFile","pattern","validatePattern","resizeIf","width","height","$width","$height","resize","resizedFile","$error","$errorMessages","$errorParam","message","$ngfValidations","valid","applyModelValidation","getAttrWithDefaults","def","attrVal","shouldUpdateOn","modelOptions","updateOn","d","args","rejectPromise","result","updateModel","fileChange","evt","noDelay","update","invalidFiles","newFiles","dupFiles","isSingleModel","$$ngfPrevValidFiles","$$ngfPrevInvalidFiles","invalidFile","$setViewValue","$files","$newFiles","$duplicateFiles","$invalidFiles","$invalidFile","$event","invalidModel","assign","removeDuplicates","equals","f1","f2","$ngfOrigSize","isInPrevFiles","j","prevValidFiles","prevInvalidFiles","allNewFiles","toArray","v","resizeAndUpdate","keep","concat","valids","invalids","options","debounce","change","resizingFiles","validateAfterResize","validate","validationResult","validsFiles","invalidsFiles","index","$modelValue","allowInvalid","validFiles","isExifSupported","directive","Upload","isDelayedClickSupported","ua","m","androidFixMinorVersion","test","linkFileSelect","elem","isInputTypeFile","tagName","toLowerCase","fileChangeAttr","changeFn","fileList","__files_","bindAttrToFileInput","fileElem","label","updateId","attributes","attribute","unwatches","$observe","createFileInput","element","css","generatedElems","el","ref","document","body","appendChild","clickHandler","detectSwipe","resetModel","contains","parent","bind","navigator","userAgent","setTimeout","click","touches","changedTouches","originalEvent","initialTouchStartX","clientX","initialTouchStartY","clientY","currentX","currentY","abs","stopPropagation","preventDefault","ie10SameFileSelectFix","parentNode","unbind","replaceWith","removeAttr","registerModelChangeValidator","$watch","appVersion","$formatters","$on","remove","unwatch","g","ngfFixIE","restrict","require","link","getTagType","linkFileDirective","directiveName","resizeParams","isBackground","constructDataUrl","disallowObjectUrl","dataUrl","src","$ngfDataUrl","$ngfBlobUrl","removeClass","addClass","naturalWidth","clientWidth","naturalHeight","clientHeight","getComputedStyle","style","UploadBase","base64DataUrl","count","urls","ff","$$ngfDataUrlPromise","$$ngfBlobUrlPromise","FileReader","URL","webkitURL","createObjectURL","blobUrls","blobUrlsTotalSize","maxMemory","blobUrlsMaxMemory","maxLength","blobUrlsMaxQueueSize","revokeObjectURL","fileReader","onload","onerror","readAsDataURL","$compileProvider","imgSrcSanitizationWhitelist","aHrefSanitizationWhitelist","filter","UploadDataUrl","$sce","trustedUrl","trustAsResourceUrl","$ngfDataUrlFilterInProgress","globStringToRegex","regexp","excludes","RegExp","markModelAsDirty","$dirty","$setDirty","len","exclude","ratioToFloat","xIndex","filesArray","validation","$setValidity","getValidationAttr","validationName","dName","toUpperCase","substr","prevLength","validateSync","ignoredErrors","runAllValidation","validateAsync","asyncFn","resolveResult","resolveInternal","imageDimensions","mediaDuration","$duration","deffer","values","isValid","totalSize","$ngfWidth","$ngfHeight","$ngfDimensionPromise","img","checkLoadErrorInCaseOfNoCallback","secondsCounter","on","getElementsByTagName","$ngfDuration","$ngfDurationPromise","duration","checkLoadError","UploadValidate","calculateAspectRatioFit","srcWidth","srcHeight","maxWidth","maxHeight","centerCrop","ratio","max","marginX","marginY","imagen","quality","canvasElement","createElement","imageElement","setAttribute","imgWidth","imgHeight","removeChild","ratioFloat","imgRatio","dimensions","context","getContext","drawImage","toDataURL","dataUrltoBlob","dataurl","origSize","arr","mime","bstr","atob","u8arr","charCodeAt","Object","defineProperty","$ngfName","set","configurable","restoreExif","linkDrop","$window","isDisabled","extractFilesAndUpdateModel","source","updateOnType","html","getData","extractFiles","items","extractFilesFromHtml","calculateDragOverClass","callback","dClass","delay","dragOverDelay","accept","dataTransfer","allowDir","multiple","traverseFileTree","entry","path","isDirectory","includeDir","dirReader","createReader","entries","readEntries","results","Array","call","maxFiles","maxTotalSize","Number","MAX_VALUE","location","protocol","webkitGetAsEntry","getAsFile","item","available","dropAvailable","actualDragOverClass","leaveTimeout","b","effectAllowed","dropEffect","cancel","clazz","$isDragging","$class","clipboardData","metaKey","ctrlKey","div","model","UploadResize","applyTransform","ctx","orientation","transform","arrayBufferToBase64","buffer","binary","bytes","byteLength","String","fromCharCode","btoa","readAsArrayBuffer","readOrientation","reader","slicedFile","view","DataView","getUint16","offset","marker","getUint32","little","tags","setUint16","fixedArrayBuffer","canvas","resized","ExifRestorer","KEY_STR","encode64","input","chr1","chr2","enc1","enc2","enc3","output","chr3","enc4","isNaN","charAt","restore","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","exifArray","getExifArray","newImageArray","insertExif","seg","x","imageData","buf","separatePoint","mae","ato","array","rawImageArray","head","endPoint","base64test","exec","console","log","crop","factory","CropArea","CropAreaCircle","_boxResizeBaseSize","_boxResizeNormalRatio","_boxResizeHoverRatio","_iconMoveNormalRatio","_iconMoveHoverRatio","_boxResizeNormalSize","_boxResizeHoverSize","_posDragStartX","_posDragStartY","_posResizeStartX","_posResizeStartY","_posResizeStartSize","_boxResizeIsHover","_areaIsHover","_boxResizeIsDragging","_areaIsDragging","_calcCirclePerimeterCoords","angleDegrees","hSize","_size","angleRadians","PI","circlePerimeterX","_x","cos","circlePerimeterY","_y","sin","_calcResizeIconCenterCoords","_isCoordWithinArea","coord","sqrt","_isCoordWithinBoxResize","resizeIconCenterCoords","_drawArea","centerCoords","arc","draw","_cropCanvas","drawIconMove","drawIconResizeBoxNESW","processMouseMove","mouseCurX","mouseCurY","cursor","res","_events","trigger","iFR","iFX","iFY","_minSize","_dontDragOutside","_ctx","processMouseDown","mouseDownX","mouseDownY","processMouseUp","CropAreaSquare","_resizeCtrlBaseRadius","_resizeCtrlNormalRatio","_resizeCtrlHoverRatio","_resizeCtrlNormalRadius","_resizeCtrlHoverRadius","_resizeCtrlIsHover","_resizeCtrlIsDragging","_calcSquareCorners","_calcSquareDimensions","left","top","right","bottom","squareDimensions","_isCoordWithinResizeCtrl","resizeIconsCenterCoords","rect","drawIconResizeCircle","xMulti","yMulti","wasSize","posModifier","hoveredResizeBox","isWithinResizeCtrl","CropCanvas","events","_image","Image","getImage","setImage","getX","setX","getY","setY","y","getSize","setSize","getMinSize","setMinSize","h","w","drawCropArea","shapeArrowNW","shapeArrowNE","shapeArrowSW","shapeArrowSE","shapeArrowN","shapeArrowW","shapeArrowS","shapeArrowE","colors","areaOutline","resizeBoxStroke","resizeBoxFill","resizeBoxArrowFill","resizeCircleStroke","resizeCircleFill","moveIconFill","calcPoint","point","scale","drawFilledPolygon","shape","fillStyle","save","beginPath","pc","pc0","moveTo","lineTo","fill","closePath","circleRadius","scaledCircleRadius","strokeStyle","lineWidth","stroke","drawIconResizeBoxBase","boxSize","scaledBoxSize","fillRect","strokeRect","drawIconResizeBoxNWSE","fnDrawClipPath","xRatio","yRatio","xLeft","yTop","clip","imageHasData","base64ToArrayBuffer","base64","contentType","objectURLToBlob","open","send","getImageData","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","findIPTCinJPEG","exifdata","arrayBuffer","File","debug","dataView","getUint8","readEXIFData","isFieldSegmentStart","nameHeaderLength","startOffset","sectionLength","readIPTCData","fieldValue","fieldName","dataSize","segmentType","segmentSize","segmentStartPos","IptcFieldMap","getInt16","getStringFromDB","readTags","tiffStart","dirStart","strings","bigEnd","entryOffset","tag","readTagValue","vals","numerator","denominator","numValues","valueOffset","getInt32","start","outstr","exifData","gpsData","tiffOffset","firstIFDOffset","TiffTags","ExifIFDPointer","ExifTags","StringValues","Components","GPSInfoIFDPointer","GPSTags","Tags","36864","40960","40961","40962","40963","37121","37122","37500","37510","40964","36867","36868","37520","37521","37522","33434","33437","34850","34852","34855","34856","37377","37378","37379","37380","37381","37382","37383","37384","37385","37396","37386","41483","41484","41486","41487","41488","41492","41493","41495","41728","41729","41730","41985","41986","41987","41988","41989","41990","41991","41992","41993","41994","41995","41996","40965","42016","256","257","34665","34853","258","259","262","274","277","284","530","531","282","283","296","273","278","279","513","514","301","318","319","529","532","306","270","271","272","305","315","33432","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","ExposureProgram","MeteringMode","255","LightSource","Flash","31","32","65","69","71","73","77","79","89","93","95","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","120","110","55","80","85","122","105","116","HTMLImageElement","complete","getTag","getAllTags","a","pretty","strPretty","readFromBinaryFile","$document","cropEXIF","getElementOffset","box","getBoundingClientRect","docElem","documentElement","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","elCanvas","opts","drawScene","clearRect","theArea","minCanvasDims","maxCanvasDims","resImgSize","resImgFormat","resImgQuality","resetCropHost","imageDims","imageRatio","canvasDims","prop","margin-left","margin-top","getChangedTouches","event","isDefined","onMouseMove","pageX","pageY","onMouseDown","onMouseUp","getResultImageDataURI","temp_ctx","temp_canvas","setNewImageSource","imageSource","newImage","crossOrigin","cw","ch","cx","cy","deg","rotate","setMaxDimensions","curWidth","curHeight","ratioNewCurWidth","ratioNewCurHeight","ratioMin","setAreaMinSize","setResultImageSize","setResultImageFormat","format","setResultImageQuality","setAreaType","curSize","curMinSize","curX","curY","AreaClass","destroy","off","names","handler","CropHost","CropPubSub","resultImage","changeOnFly","areaType","areaMinSize","resultImageSize","resultImageFormat","resultImageQuality","onChange","onLoadBegin","onLoadDone","onLoadError","template","controller","$scope","storedResultImage","cropHost","find","updateResultImage","$dataURI","fnSafeApply","$apply"],"mappings":"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","file":"angularFileUpload.min.js","sourcesContent":["/**!\r\n * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,\r\n * progress, resize, thumbnail, preview, validation and CORS\r\n * @author Danial \r\n * @version 12.2.13\r\n */\r\n\r\nif (window.XMLHttpRequest && !(window.FileAPI && FileAPI.shouldLoad)) {\r\n window.XMLHttpRequest.prototype.setRequestHeader = (function (orig) {\r\n return function (header, value) {\r\n if (header === '__setXHR_') {\r\n var val = value(this);\r\n // fix for angular < 1.2.0\r\n if (val instanceof Function) {\r\n val(this);\r\n }\r\n } else {\r\n orig.apply(this, arguments);\r\n }\r\n };\r\n })(window.XMLHttpRequest.prototype.setRequestHeader);\r\n}\r\n\r\nvar ngFileUpload = angular.module('ngFileUpload', []);\r\n\r\nngFileUpload.version = '12.2.13';\r\n\r\nngFileUpload.service('UploadBase', ['$http', '$q', '$timeout', function ($http, $q, $timeout) {\r\n var upload = this;\r\n upload.promisesCount = 0;\r\n\r\n this.isResumeSupported = function () {\r\n return window.Blob && window.Blob.prototype.slice;\r\n };\r\n\r\n var resumeSupported = this.isResumeSupported();\r\n\r\n function sendHttp(config) {\r\n config.method = config.method || 'POST';\r\n config.headers = config.headers || {};\r\n\r\n var deferred = config._deferred = config._deferred || $q.defer();\r\n var promise = deferred.promise;\r\n\r\n function notifyProgress(e) {\r\n if (deferred.notify) {\r\n deferred.notify(e);\r\n }\r\n if (promise.progressFunc) {\r\n $timeout(function () {\r\n promise.progressFunc(e);\r\n });\r\n }\r\n }\r\n\r\n function getNotifyEvent(n) {\r\n if (config._start != null && resumeSupported) {\r\n return {\r\n loaded: n.loaded + config._start,\r\n total: (config._file && config._file.size) || n.total,\r\n type: n.type, config: config,\r\n lengthComputable: true, target: n.target\r\n };\r\n } else {\r\n return n;\r\n }\r\n }\r\n\r\n if (!config.disableProgress) {\r\n config.headers.__setXHR_ = function () {\r\n return function (xhr) {\r\n if (!xhr || !xhr.upload || !xhr.upload.addEventListener) return;\r\n config.__XHR = xhr;\r\n if (config.xhrFn) config.xhrFn(xhr);\r\n xhr.upload.addEventListener('progress', function (e) {\r\n e.config = config;\r\n notifyProgress(getNotifyEvent(e));\r\n }, false);\r\n //fix for firefox not firing upload progress end, also IE8-9\r\n xhr.upload.addEventListener('load', function (e) {\r\n if (e.lengthComputable) {\r\n e.config = config;\r\n notifyProgress(getNotifyEvent(e));\r\n }\r\n }, false);\r\n };\r\n };\r\n }\r\n\r\n function uploadWithAngular() {\r\n $http(config).then(function (r) {\r\n if (resumeSupported && config._chunkSize && !config._finished && config._file) {\r\n var fileSize = config._file && config._file.size || 0;\r\n notifyProgress({\r\n loaded: Math.min(config._end, fileSize),\r\n total: fileSize,\r\n config: config,\r\n type: 'progress'\r\n }\r\n );\r\n upload.upload(config, true);\r\n } else {\r\n if (config._finished) delete config._finished;\r\n deferred.resolve(r);\r\n }\r\n }, function (e) {\r\n deferred.reject(e);\r\n }, function (n) {\r\n deferred.notify(n);\r\n }\r\n );\r\n }\r\n\r\n if (!resumeSupported) {\r\n uploadWithAngular();\r\n } else if (config._chunkSize && config._end && !config._finished) {\r\n config._start = config._end;\r\n config._end += config._chunkSize;\r\n uploadWithAngular();\r\n } else if (config.resumeSizeUrl) {\r\n $http.get(config.resumeSizeUrl).then(function (resp) {\r\n if (config.resumeSizeResponseReader) {\r\n config._start = config.resumeSizeResponseReader(resp.data);\r\n } else {\r\n config._start = parseInt((resp.data.size == null ? resp.data : resp.data.size).toString());\r\n }\r\n if (config._chunkSize) {\r\n config._end = config._start + config._chunkSize;\r\n }\r\n uploadWithAngular();\r\n }, function (e) {\r\n throw e;\r\n });\r\n } else if (config.resumeSize) {\r\n config.resumeSize().then(function (size) {\r\n config._start = size;\r\n if (config._chunkSize) {\r\n config._end = config._start + config._chunkSize;\r\n }\r\n uploadWithAngular();\r\n }, function (e) {\r\n throw e;\r\n });\r\n } else {\r\n if (config._chunkSize) {\r\n config._start = 0;\r\n config._end = config._start + config._chunkSize;\r\n }\r\n uploadWithAngular();\r\n }\r\n\r\n\r\n promise.success = function (fn) {\r\n promise.then(function (response) {\r\n fn(response.data, response.status, response.headers, config);\r\n });\r\n return promise;\r\n };\r\n\r\n promise.error = function (fn) {\r\n promise.then(null, function (response) {\r\n fn(response.data, response.status, response.headers, config);\r\n });\r\n return promise;\r\n };\r\n\r\n promise.progress = function (fn) {\r\n promise.progressFunc = fn;\r\n promise.then(null, null, function (n) {\r\n fn(n);\r\n });\r\n return promise;\r\n };\r\n promise.abort = promise.pause = function () {\r\n if (config.__XHR) {\r\n $timeout(function () {\r\n config.__XHR.abort();\r\n });\r\n }\r\n return promise;\r\n };\r\n promise.xhr = function (fn) {\r\n config.xhrFn = (function (origXhrFn) {\r\n return function () {\r\n if (origXhrFn) origXhrFn.apply(promise, arguments);\r\n fn.apply(promise, arguments);\r\n };\r\n })(config.xhrFn);\r\n return promise;\r\n };\r\n\r\n upload.promisesCount++;\r\n if (promise['finally'] && promise['finally'] instanceof Function) {\r\n promise['finally'](function () {\r\n upload.promisesCount--;\r\n });\r\n }\r\n return promise;\r\n }\r\n\r\n this.isUploadInProgress = function () {\r\n return upload.promisesCount > 0;\r\n };\r\n\r\n this.rename = function (file, name) {\r\n file.ngfName = name;\r\n return file;\r\n };\r\n\r\n this.jsonBlob = function (val) {\r\n if (val != null && !angular.isString(val)) {\r\n val = JSON.stringify(val);\r\n }\r\n var blob = new window.Blob([val], {type: 'application/json'});\r\n blob._ngfBlob = true;\r\n return blob;\r\n };\r\n\r\n this.json = function (val) {\r\n return angular.toJson(val);\r\n };\r\n\r\n function copy(obj) {\r\n var clone = {};\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n clone[key] = obj[key];\r\n }\r\n }\r\n return clone;\r\n }\r\n\r\n this.isFile = function (file) {\r\n return file != null && (file instanceof window.Blob || (file.flashId && file.name && file.size));\r\n };\r\n\r\n this.upload = function (config, internal) {\r\n function toResumeFile(file, formData) {\r\n if (file._ngfBlob) return file;\r\n config._file = config._file || file;\r\n if (config._start != null && resumeSupported) {\r\n if (config._end && config._end >= file.size) {\r\n config._finished = true;\r\n config._end = file.size;\r\n }\r\n var slice = file.slice(config._start, config._end || file.size);\r\n slice.name = file.name;\r\n slice.ngfName = file.ngfName;\r\n if (config._chunkSize) {\r\n formData.append('_chunkSize', config._chunkSize);\r\n formData.append('_currentChunkSize', config._end - config._start);\r\n formData.append('_chunkNumber', Math.floor(config._start / config._chunkSize));\r\n formData.append('_totalSize', config._file.size);\r\n }\r\n return slice;\r\n }\r\n return file;\r\n }\r\n\r\n function addFieldToFormData(formData, val, key) {\r\n if (val !== undefined) {\r\n if (angular.isDate(val)) {\r\n val = val.toISOString();\r\n }\r\n if (angular.isString(val)) {\r\n formData.append(key, val);\r\n } else if (upload.isFile(val)) {\r\n var file = toResumeFile(val, formData);\r\n var split = key.split(',');\r\n if (split[1]) {\r\n file.ngfName = split[1].replace(/^\\s+|\\s+$/g, '');\r\n key = split[0];\r\n }\r\n config._fileKey = config._fileKey || key;\r\n formData.append(key, file, file.ngfName || file.name);\r\n } else {\r\n if (angular.isObject(val)) {\r\n if (val.$$ngfCircularDetection) throw 'ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: ' + key;\r\n\r\n val.$$ngfCircularDetection = true;\r\n try {\r\n for (var k in val) {\r\n if (val.hasOwnProperty(k) && k !== '$$ngfCircularDetection') {\r\n var objectKey = config.objectKey == null ? '[i]' : config.objectKey;\r\n if (val.length && parseInt(k) > -1) {\r\n objectKey = config.arrayKey == null ? objectKey : config.arrayKey;\r\n }\r\n addFieldToFormData(formData, val[k], key + objectKey.replace(/[ik]/g, k));\r\n }\r\n }\r\n } finally {\r\n delete val.$$ngfCircularDetection;\r\n }\r\n } else {\r\n formData.append(key, val);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function digestConfig() {\r\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\r\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\r\n\r\n config.headers = config.headers || {};\r\n config.headers['Content-Type'] = undefined;\r\n config.transformRequest = config.transformRequest ?\r\n (angular.isArray(config.transformRequest) ?\r\n config.transformRequest : [config.transformRequest]) : [];\r\n config.transformRequest.push(function (data) {\r\n var formData = new window.FormData(), key;\r\n data = data || config.fields || {};\r\n if (config.file) {\r\n data.file = config.file;\r\n }\r\n for (key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n var val = data[key];\r\n if (config.formDataAppender) {\r\n config.formDataAppender(formData, key, val);\r\n } else {\r\n addFieldToFormData(formData, val, key);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n });\r\n }\r\n\r\n if (!internal) config = copy(config);\r\n if (!config._isDigested) {\r\n config._isDigested = true;\r\n digestConfig();\r\n }\r\n\r\n return sendHttp(config);\r\n };\r\n\r\n this.http = function (config) {\r\n config = copy(config);\r\n config.transformRequest = config.transformRequest || function (data) {\r\n if ((window.ArrayBuffer && data instanceof window.ArrayBuffer) || data instanceof window.Blob) {\r\n return data;\r\n }\r\n return $http.defaults.transformRequest[0].apply(this, arguments);\r\n };\r\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\r\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\r\n\r\n return sendHttp(config);\r\n };\r\n\r\n this.translateScalars = function (str) {\r\n if (angular.isString(str)) {\r\n if (str.search(/kb/i) === str.length - 2) {\r\n return parseFloat(str.substring(0, str.length - 2) * 1024);\r\n } else if (str.search(/mb/i) === str.length - 2) {\r\n return parseFloat(str.substring(0, str.length - 2) * 1048576);\r\n } else if (str.search(/gb/i) === str.length - 2) {\r\n return parseFloat(str.substring(0, str.length - 2) * 1073741824);\r\n } else if (str.search(/b/i) === str.length - 1) {\r\n return parseFloat(str.substring(0, str.length - 1));\r\n } else if (str.search(/s/i) === str.length - 1) {\r\n return parseFloat(str.substring(0, str.length - 1));\r\n } else if (str.search(/m/i) === str.length - 1) {\r\n return parseFloat(str.substring(0, str.length - 1) * 60);\r\n } else if (str.search(/h/i) === str.length - 1) {\r\n return parseFloat(str.substring(0, str.length - 1) * 3600);\r\n }\r\n }\r\n return str;\r\n };\r\n\r\n this.urlToBlob = function(url) {\r\n var defer = $q.defer();\r\n $http({url: url, method: 'get', responseType: 'arraybuffer'}).then(function (resp) {\r\n var arrayBufferView = new Uint8Array(resp.data);\r\n var type = resp.headers('content-type') || 'image/WebP';\r\n var blob = new window.Blob([arrayBufferView], {type: type});\r\n var matches = url.match(/.*\\/(.+?)(\\?.*)?$/);\r\n if (matches.length > 1) {\r\n blob.name = matches[1];\r\n }\r\n defer.resolve(blob);\r\n }, function (e) {\r\n defer.reject(e);\r\n });\r\n return defer.promise;\r\n };\r\n\r\n this.setDefaults = function (defaults) {\r\n this.defaults = defaults || {};\r\n };\r\n\r\n this.defaults = {};\r\n this.version = ngFileUpload.version;\r\n}\r\n\r\n]);\r\n\r\nngFileUpload.service('Upload', ['$parse', '$timeout', '$compile', '$q', 'UploadExif', function ($parse, $timeout, $compile, $q, UploadExif) {\r\n var upload = UploadExif;\r\n upload.getAttrWithDefaults = function (attr, name) {\r\n if (attr[name] != null) return attr[name];\r\n var def = upload.defaults[name];\r\n return (def == null ? def : (angular.isString(def) ? def : JSON.stringify(def)));\r\n };\r\n\r\n upload.attrGetter = function (name, attr, scope, params) {\r\n var attrVal = this.getAttrWithDefaults(attr, name);\r\n if (scope) {\r\n try {\r\n if (params) {\r\n return $parse(attrVal)(scope, params);\r\n } else {\r\n return $parse(attrVal)(scope);\r\n }\r\n } catch (e) {\r\n // hangle string value without single qoute\r\n if (name.search(/min|max|pattern/i)) {\r\n return attrVal;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n } else {\r\n return attrVal;\r\n }\r\n };\r\n\r\n upload.shouldUpdateOn = function (type, attr, scope) {\r\n var modelOptions = upload.attrGetter('ngfModelOptions', attr, scope);\r\n if (modelOptions && modelOptions.updateOn) {\r\n return modelOptions.updateOn.split(' ').indexOf(type) > -1;\r\n }\r\n return true;\r\n };\r\n\r\n upload.emptyPromise = function () {\r\n var d = $q.defer();\r\n var args = arguments;\r\n $timeout(function () {\r\n d.resolve.apply(d, args);\r\n });\r\n return d.promise;\r\n };\r\n\r\n upload.rejectPromise = function () {\r\n var d = $q.defer();\r\n var args = arguments;\r\n $timeout(function () {\r\n d.reject.apply(d, args);\r\n });\r\n return d.promise;\r\n };\r\n\r\n upload.happyPromise = function (promise, data) {\r\n var d = $q.defer();\r\n promise.then(function (result) {\r\n d.resolve(result);\r\n }, function (error) {\r\n $timeout(function () {\r\n throw error;\r\n });\r\n d.resolve(data);\r\n });\r\n return d.promise;\r\n };\r\n\r\n function applyExifRotations(files, attr, scope) {\r\n var promises = [upload.emptyPromise()];\r\n angular.forEach(files, function (f, i) {\r\n if (f.type.indexOf('image/jpeg') === 0 && upload.attrGetter('ngfFixOrientation', attr, scope, {$file: f})) {\r\n promises.push(upload.happyPromise(upload.applyExifRotation(f), f).then(function (fixedFile) {\r\n files.splice(i, 1, fixedFile);\r\n }));\r\n }\r\n });\r\n return $q.all(promises);\r\n }\r\n\r\n function resizeFile(files, attr, scope, ngModel) {\r\n var resizeVal = upload.attrGetter('ngfResize', attr, scope);\r\n if (!resizeVal || !upload.isResizeSupported() || !files.length) return upload.emptyPromise();\r\n if (resizeVal instanceof Function) {\r\n var defer = $q.defer();\r\n return resizeVal(files).then(function (p) {\r\n resizeWithParams(p, files, attr, scope, ngModel).then(function (r) {\r\n defer.resolve(r);\r\n }, function (e) {\r\n defer.reject(e);\r\n });\r\n }, function (e) {\r\n defer.reject(e);\r\n });\r\n } else {\r\n return resizeWithParams(resizeVal, files, attr, scope, ngModel);\r\n }\r\n }\r\n\r\n function resizeWithParams(params, files, attr, scope, ngModel) {\r\n var promises = [upload.emptyPromise()];\r\n\r\n function handleFile(f, i) {\r\n if (f.type.indexOf('image') === 0) {\r\n if (params.pattern && !upload.validatePattern(f, params.pattern)) return;\r\n params.resizeIf = function (width, height) {\r\n return upload.attrGetter('ngfResizeIf', attr, scope,\r\n {$width: width, $height: height, $file: f});\r\n };\r\n var promise = upload.resize(f, params);\r\n promises.push(promise);\r\n promise.then(function (resizedFile) {\r\n files.splice(i, 1, resizedFile);\r\n }, function (e) {\r\n f.$error = 'resize';\r\n (f.$errorMessages = (f.$errorMessages || {})).resize = true;\r\n f.$errorParam = (e ? (e.message ? e.message : e) + ': ' : '') + (f && f.name);\r\n ngModel.$ngfValidations.push({name: 'resize', valid: false});\r\n upload.applyModelValidation(ngModel, files);\r\n });\r\n }\r\n }\r\n\r\n for (var i = 0; i < files.length; i++) {\r\n handleFile(files[i], i);\r\n }\r\n return $q.all(promises);\r\n }\r\n\r\n upload.updateModel = function (ngModel, attr, scope, fileChange, files, evt, noDelay) {\r\n function update(files, invalidFiles, newFiles, dupFiles, isSingleModel) {\r\n attr.$$ngfPrevValidFiles = files;\r\n attr.$$ngfPrevInvalidFiles = invalidFiles;\r\n var file = files && files.length ? files[0] : null;\r\n var invalidFile = invalidFiles && invalidFiles.length ? invalidFiles[0] : null;\r\n\r\n if (ngModel) {\r\n upload.applyModelValidation(ngModel, files);\r\n ngModel.$setViewValue(isSingleModel ? file : files);\r\n }\r\n\r\n if (fileChange) {\r\n $parse(fileChange)(scope, {\r\n $files: files,\r\n $file: file,\r\n $newFiles: newFiles,\r\n $duplicateFiles: dupFiles,\r\n $invalidFiles: invalidFiles,\r\n $invalidFile: invalidFile,\r\n $event: evt\r\n });\r\n }\r\n\r\n var invalidModel = upload.attrGetter('ngfModelInvalid', attr);\r\n if (invalidModel) {\r\n $timeout(function () {\r\n $parse(invalidModel).assign(scope, isSingleModel ? invalidFile : invalidFiles);\r\n });\r\n }\r\n $timeout(function () {\r\n // scope apply changes\r\n });\r\n }\r\n\r\n var allNewFiles, dupFiles = [], prevValidFiles, prevInvalidFiles,\r\n invalids = [], valids = [];\r\n\r\n function removeDuplicates() {\r\n function equals(f1, f2) {\r\n return f1.name === f2.name && (f1.$ngfOrigSize || f1.size) === (f2.$ngfOrigSize || f2.size) &&\r\n f1.type === f2.type;\r\n }\r\n\r\n function isInPrevFiles(f) {\r\n var j;\r\n for (j = 0; j < prevValidFiles.length; j++) {\r\n if (equals(f, prevValidFiles[j])) {\r\n return true;\r\n }\r\n }\r\n for (j = 0; j < prevInvalidFiles.length; j++) {\r\n if (equals(f, prevInvalidFiles[j])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n if (files) {\r\n allNewFiles = [];\r\n dupFiles = [];\r\n for (var i = 0; i < files.length; i++) {\r\n if (isInPrevFiles(files[i])) {\r\n dupFiles.push(files[i]);\r\n } else {\r\n allNewFiles.push(files[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function toArray(v) {\r\n return angular.isArray(v) ? v : [v];\r\n }\r\n\r\n function resizeAndUpdate() {\r\n function updateModel() {\r\n $timeout(function () {\r\n update(keep ? prevValidFiles.concat(valids) : valids,\r\n keep ? prevInvalidFiles.concat(invalids) : invalids,\r\n files, dupFiles, isSingleModel);\r\n }, options && options.debounce ? options.debounce.change || options.debounce : 0);\r\n }\r\n\r\n var resizingFiles = validateAfterResize ? allNewFiles : valids;\r\n resizeFile(resizingFiles, attr, scope, ngModel).then(function () {\r\n if (validateAfterResize) {\r\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\r\n .then(function (validationResult) {\r\n valids = validationResult.validsFiles;\r\n invalids = validationResult.invalidsFiles;\r\n updateModel();\r\n });\r\n } else {\r\n updateModel();\r\n }\r\n }, function () {\r\n for (var i = 0; i < resizingFiles.length; i++) {\r\n var f = resizingFiles[i];\r\n if (f.$error === 'resize') {\r\n var index = valids.indexOf(f);\r\n if (index > -1) {\r\n valids.splice(index, 1);\r\n invalids.push(f);\r\n }\r\n updateModel();\r\n }\r\n }\r\n });\r\n }\r\n\r\n prevValidFiles = attr.$$ngfPrevValidFiles || [];\r\n prevInvalidFiles = attr.$$ngfPrevInvalidFiles || [];\r\n if (ngModel && ngModel.$modelValue) {\r\n prevValidFiles = toArray(ngModel.$modelValue);\r\n }\r\n\r\n var keep = upload.attrGetter('ngfKeep', attr, scope);\r\n allNewFiles = (files || []).slice(0);\r\n if (keep === 'distinct' || upload.attrGetter('ngfKeepDistinct', attr, scope) === true) {\r\n removeDuplicates(attr, scope);\r\n }\r\n\r\n var isSingleModel = !keep && !upload.attrGetter('ngfMultiple', attr, scope) && !upload.attrGetter('multiple', attr);\r\n\r\n if (keep && !allNewFiles.length) return;\r\n\r\n upload.attrGetter('ngfBeforeModelChange', attr, scope, {\r\n $files: files,\r\n $file: files && files.length ? files[0] : null,\r\n $newFiles: allNewFiles,\r\n $duplicateFiles: dupFiles,\r\n $event: evt\r\n });\r\n\r\n var validateAfterResize = upload.attrGetter('ngfValidateAfterResize', attr, scope);\r\n\r\n var options = upload.attrGetter('ngfModelOptions', attr, scope);\r\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\r\n .then(function (validationResult) {\r\n if (noDelay) {\r\n update(allNewFiles, [], files, dupFiles, isSingleModel);\r\n } else {\r\n if ((!options || !options.allowInvalid) && !validateAfterResize) {\r\n valids = validationResult.validFiles;\r\n invalids = validationResult.invalidFiles;\r\n } else {\r\n valids = allNewFiles;\r\n }\r\n if (upload.attrGetter('ngfFixOrientation', attr, scope) && upload.isExifSupported()) {\r\n applyExifRotations(valids, attr, scope).then(function () {\r\n resizeAndUpdate();\r\n });\r\n } else {\r\n resizeAndUpdate();\r\n }\r\n }\r\n });\r\n };\r\n\r\n return upload;\r\n}]);\r\n\r\nngFileUpload.directive('ngfSelect', ['$parse', '$timeout', '$compile', 'Upload', function ($parse, $timeout, $compile, Upload) {\r\n var generatedElems = [];\r\n\r\n function isDelayedClickSupported(ua) {\r\n // fix for android native browser < 4.4 and safari windows\r\n var m = ua.match(/Android[^\\d]*(\\d+)\\.(\\d+)/);\r\n if (m && m.length > 2) {\r\n var v = Upload.defaults.androidFixMinorVersion || 4;\r\n return parseInt(m[1]) < 4 || (parseInt(m[1]) === v && parseInt(m[2]) < v);\r\n }\r\n\r\n // safari on windows\r\n return ua.indexOf('Chrome') === -1 && /.*Windows.*Safari.*/.test(ua);\r\n }\r\n\r\n function linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, upload) {\r\n /** @namespace attr.ngfSelect */\r\n /** @namespace attr.ngfChange */\r\n /** @namespace attr.ngModel */\r\n /** @namespace attr.ngfModelOptions */\r\n /** @namespace attr.ngfMultiple */\r\n /** @namespace attr.ngfCapture */\r\n /** @namespace attr.ngfValidate */\r\n /** @namespace attr.ngfKeep */\r\n var attrGetter = function (name, scope) {\r\n return upload.attrGetter(name, attr, scope);\r\n };\r\n\r\n function isInputTypeFile() {\r\n return elem[0].tagName.toLowerCase() === 'input' && attr.type && attr.type.toLowerCase() === 'file';\r\n }\r\n\r\n function fileChangeAttr() {\r\n return attrGetter('ngfChange') || attrGetter('ngfSelect');\r\n }\r\n\r\n function changeFn(evt) {\r\n if (upload.shouldUpdateOn('change', attr, scope)) {\r\n var fileList = evt.__files_ || (evt.target && evt.target.files), files = [];\r\n /* Handle duplicate call in IE11 */\r\n if (!fileList) return;\r\n for (var i = 0; i < fileList.length; i++) {\r\n files.push(fileList[i]);\r\n }\r\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(),\r\n files.length ? files : null, evt);\r\n }\r\n }\r\n\r\n upload.registerModelChangeValidator(ngModel, attr, scope);\r\n\r\n var unwatches = [];\r\n if (attrGetter('ngfMultiple')) {\r\n unwatches.push(scope.$watch(attrGetter('ngfMultiple'), function () {\r\n fileElem.attr('multiple', attrGetter('ngfMultiple', scope));\r\n }));\r\n }\r\n if (attrGetter('ngfCapture')) {\r\n unwatches.push(scope.$watch(attrGetter('ngfCapture'), function () {\r\n fileElem.attr('capture', attrGetter('ngfCapture', scope));\r\n }));\r\n }\r\n if (attrGetter('ngfAccept')) {\r\n unwatches.push(scope.$watch(attrGetter('ngfAccept'), function () {\r\n fileElem.attr('accept', attrGetter('ngfAccept', scope));\r\n }));\r\n }\r\n unwatches.push(attr.$observe('accept', function () {\r\n fileElem.attr('accept', attrGetter('accept'));\r\n }));\r\n function bindAttrToFileInput(fileElem, label) {\r\n function updateId(val) {\r\n fileElem.attr('id', 'ngf-' + val);\r\n label.attr('id', 'ngf-label-' + val);\r\n }\r\n\r\n for (var i = 0; i < elem[0].attributes.length; i++) {\r\n var attribute = elem[0].attributes[i];\r\n if (attribute.name !== 'type' && attribute.name !== 'class' && attribute.name !== 'style') {\r\n if (attribute.name === 'id') {\r\n updateId(attribute.value);\r\n unwatches.push(attr.$observe('id', updateId));\r\n } else {\r\n fileElem.attr(attribute.name, (!attribute.value && (attribute.name === 'required' ||\r\n attribute.name === 'multiple')) ? attribute.name : attribute.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function createFileInput() {\r\n if (isInputTypeFile()) {\r\n return elem;\r\n }\r\n\r\n var fileElem = angular.element('');\r\n\r\n var label = angular.element('');\r\n label.css('visibility', 'hidden').css('position', 'absolute').css('overflow', 'hidden')\r\n .css('width', '0px').css('height', '0px').css('border', 'none')\r\n .css('margin', '0px').css('padding', '0px').attr('tabindex', '-1');\r\n bindAttrToFileInput(fileElem, label);\r\n\r\n generatedElems.push({el: elem, ref: label});\r\n\r\n document.body.appendChild(label.append(fileElem)[0]);\r\n\r\n return fileElem;\r\n }\r\n\r\n function clickHandler(evt) {\r\n if (elem.attr('disabled')) return false;\r\n if (attrGetter('ngfSelectDisabled', scope)) return;\r\n\r\n var r = detectSwipe(evt);\r\n // prevent the click if it is a swipe\r\n if (r != null) return r;\r\n\r\n resetModel(evt);\r\n\r\n // fix for md when the element is removed from the DOM and added back #460\r\n try {\r\n if (!isInputTypeFile() && !document.body.contains(fileElem[0])) {\r\n generatedElems.push({el: elem, ref: fileElem.parent()});\r\n document.body.appendChild(fileElem.parent()[0]);\r\n fileElem.bind('change', changeFn);\r\n }\r\n } catch (e) {/*ignore*/\r\n }\r\n\r\n if (isDelayedClickSupported(navigator.userAgent)) {\r\n setTimeout(function () {\r\n fileElem[0].click();\r\n }, 0);\r\n } else {\r\n fileElem[0].click();\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n var initialTouchStartY = 0;\r\n var initialTouchStartX = 0;\r\n\r\n function detectSwipe(evt) {\r\n var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\r\n if (touches) {\r\n if (evt.type === 'touchstart') {\r\n initialTouchStartX = touches[0].clientX;\r\n initialTouchStartY = touches[0].clientY;\r\n return true; // don't block event default\r\n } else {\r\n // prevent scroll from triggering event\r\n if (evt.type === 'touchend') {\r\n var currentX = touches[0].clientX;\r\n var currentY = touches[0].clientY;\r\n if ((Math.abs(currentX - initialTouchStartX) > 20) ||\r\n (Math.abs(currentY - initialTouchStartY) > 20)) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n var fileElem = elem;\r\n\r\n function resetModel(evt) {\r\n if (upload.shouldUpdateOn('click', attr, scope) && fileElem.val()) {\r\n fileElem.val(null);\r\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(), null, evt, true);\r\n }\r\n }\r\n\r\n if (!isInputTypeFile()) {\r\n fileElem = createFileInput();\r\n }\r\n fileElem.bind('change', changeFn);\r\n\r\n if (!isInputTypeFile()) {\r\n elem.bind('click touchstart touchend', clickHandler);\r\n } else {\r\n elem.bind('click', resetModel);\r\n }\r\n\r\n function ie10SameFileSelectFix(evt) {\r\n if (fileElem && !fileElem.attr('__ngf_ie10_Fix_')) {\r\n if (!fileElem[0].parentNode) {\r\n fileElem = null;\r\n return;\r\n }\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n fileElem.unbind('click');\r\n var clone = fileElem.clone();\r\n fileElem.replaceWith(clone);\r\n fileElem = clone;\r\n fileElem.attr('__ngf_ie10_Fix_', 'true');\r\n fileElem.bind('change', changeFn);\r\n fileElem.bind('click', ie10SameFileSelectFix);\r\n fileElem[0].click();\r\n return false;\r\n } else {\r\n fileElem.removeAttr('__ngf_ie10_Fix_');\r\n }\r\n }\r\n\r\n if (navigator.appVersion.indexOf('MSIE 10') !== -1) {\r\n fileElem.bind('click', ie10SameFileSelectFix);\r\n }\r\n\r\n if (ngModel) ngModel.$formatters.push(function (val) {\r\n if (val == null || val.length === 0) {\r\n if (fileElem.val()) {\r\n fileElem.val(null);\r\n }\r\n }\r\n return val;\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n if (!isInputTypeFile()) fileElem.parent().remove();\r\n angular.forEach(unwatches, function (unwatch) {\r\n unwatch();\r\n });\r\n });\r\n\r\n $timeout(function () {\r\n for (var i = 0; i < generatedElems.length; i++) {\r\n var g = generatedElems[i];\r\n if (!document.body.contains(g.el[0])) {\r\n generatedElems.splice(i, 1);\r\n g.ref.remove();\r\n }\r\n }\r\n });\r\n\r\n if (window.FileAPI && window.FileAPI.ngfFixIE) {\r\n window.FileAPI.ngfFixIE(elem, fileElem, changeFn);\r\n }\r\n }\r\n\r\n return {\r\n restrict: 'AEC',\r\n require: '?ngModel',\r\n link: function (scope, elem, attr, ngModel) {\r\n linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, Upload);\r\n }\r\n };\r\n}]);\r\n\r\n(function () {\r\n\r\n ngFileUpload.service('UploadDataUrl', ['UploadBase', '$timeout', '$q', function (UploadBase, $timeout, $q) {\r\n var upload = UploadBase;\r\n upload.base64DataUrl = function (file) {\r\n if (angular.isArray(file)) {\r\n var d = $q.defer(), count = 0;\r\n angular.forEach(file, function (f) {\r\n upload.dataUrl(f, true)['finally'](function () {\r\n count++;\r\n if (count === file.length) {\r\n var urls = [];\r\n angular.forEach(file, function (ff) {\r\n urls.push(ff.$ngfDataUrl);\r\n });\r\n d.resolve(urls, file);\r\n }\r\n });\r\n });\r\n return d.promise;\r\n } else {\r\n return upload.dataUrl(file, true);\r\n }\r\n };\r\n upload.dataUrl = function (file, disallowObjectUrl) {\r\n if (!file) return upload.emptyPromise(file, file);\r\n if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\r\n return upload.emptyPromise(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl, file);\r\n }\r\n var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\r\n if (p) return p;\r\n\r\n var deferred = $q.defer();\r\n $timeout(function () {\r\n if (window.FileReader && file &&\r\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\r\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\r\n //prefer URL.createObjectURL for handling refrences to files of all sizes\r\n //since it doesn´t build a large string in memory\r\n var URL = window.URL || window.webkitURL;\r\n if (URL && URL.createObjectURL && !disallowObjectUrl) {\r\n var url;\r\n try {\r\n url = URL.createObjectURL(file);\r\n } catch (e) {\r\n $timeout(function () {\r\n file.$ngfBlobUrl = '';\r\n deferred.reject();\r\n });\r\n return;\r\n }\r\n $timeout(function () {\r\n file.$ngfBlobUrl = url;\r\n if (url) {\r\n deferred.resolve(url, file);\r\n upload.blobUrls = upload.blobUrls || [];\r\n upload.blobUrlsTotalSize = upload.blobUrlsTotalSize || 0;\r\n upload.blobUrls.push({url: url, size: file.size});\r\n upload.blobUrlsTotalSize += file.size || 0;\r\n var maxMemory = upload.defaults.blobUrlsMaxMemory || 268435456;\r\n var maxLength = upload.defaults.blobUrlsMaxQueueSize || 200;\r\n while ((upload.blobUrlsTotalSize > maxMemory || upload.blobUrls.length > maxLength) && upload.blobUrls.length > 1) {\r\n var obj = upload.blobUrls.splice(0, 1)[0];\r\n URL.revokeObjectURL(obj.url);\r\n upload.blobUrlsTotalSize -= obj.size;\r\n }\r\n }\r\n });\r\n } else {\r\n var fileReader = new FileReader();\r\n fileReader.onload = function (e) {\r\n $timeout(function () {\r\n file.$ngfDataUrl = e.target.result;\r\n deferred.resolve(e.target.result, file);\r\n $timeout(function () {\r\n delete file.$ngfDataUrl;\r\n }, 1000);\r\n });\r\n };\r\n fileReader.onerror = function () {\r\n $timeout(function () {\r\n file.$ngfDataUrl = '';\r\n deferred.reject();\r\n });\r\n };\r\n fileReader.readAsDataURL(file);\r\n }\r\n } else {\r\n $timeout(function () {\r\n file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\r\n deferred.reject();\r\n });\r\n }\r\n });\r\n\r\n if (disallowObjectUrl) {\r\n p = file.$$ngfDataUrlPromise = deferred.promise;\r\n } else {\r\n p = file.$$ngfBlobUrlPromise = deferred.promise;\r\n }\r\n p['finally'](function () {\r\n delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\r\n });\r\n return p;\r\n };\r\n return upload;\r\n }]);\r\n\r\n function getTagType(el) {\r\n if (el.tagName.toLowerCase() === 'img') return 'image';\r\n if (el.tagName.toLowerCase() === 'audio') return 'audio';\r\n if (el.tagName.toLowerCase() === 'video') return 'video';\r\n return /./;\r\n }\r\n\r\n function linkFileDirective(Upload, $timeout, scope, elem, attr, directiveName, resizeParams, isBackground) {\r\n function constructDataUrl(file) {\r\n var disallowObjectUrl = Upload.attrGetter('ngfNoObjectUrl', attr, scope);\r\n Upload.dataUrl(file, disallowObjectUrl)['finally'](function () {\r\n $timeout(function () {\r\n var src = (disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl;\r\n if (isBackground) {\r\n elem.css('background-image', 'url(\\'' + (src || '') + '\\')');\r\n } else {\r\n elem.attr('src', src);\r\n }\r\n if (src) {\r\n elem.removeClass('ng-hide');\r\n } else {\r\n elem.addClass('ng-hide');\r\n }\r\n });\r\n });\r\n }\r\n\r\n $timeout(function () {\r\n var unwatch = scope.$watch(attr[directiveName], function (file) {\r\n var size = resizeParams;\r\n if (directiveName === 'ngfThumbnail') {\r\n if (!size) {\r\n size = {\r\n width: elem[0].naturalWidth || elem[0].clientWidth,\r\n height: elem[0].naturalHeight || elem[0].clientHeight\r\n };\r\n }\r\n if (size.width === 0 && window.getComputedStyle) {\r\n var style = getComputedStyle(elem[0]);\r\n if (style.width && style.width.indexOf('px') > -1 && style.height && style.height.indexOf('px') > -1) {\r\n size = {\r\n width: parseInt(style.width.slice(0, -2)),\r\n height: parseInt(style.height.slice(0, -2))\r\n };\r\n }\r\n }\r\n }\r\n\r\n if (angular.isString(file)) {\r\n elem.removeClass('ng-hide');\r\n if (isBackground) {\r\n return elem.css('background-image', 'url(\\'' + file + '\\')');\r\n } else {\r\n return elem.attr('src', file);\r\n }\r\n }\r\n if (file && file.type && file.type.search(getTagType(elem[0])) === 0 &&\r\n (!isBackground || file.type.indexOf('image') === 0)) {\r\n if (size && Upload.isResizeSupported()) {\r\n size.resizeIf = function (width, height) {\r\n return Upload.attrGetter('ngfResizeIf', attr, scope,\r\n {$width: width, $height: height, $file: file});\r\n };\r\n Upload.resize(file, size).then(\r\n function (f) {\r\n constructDataUrl(f);\r\n }, function (e) {\r\n throw e;\r\n }\r\n );\r\n } else {\r\n constructDataUrl(file);\r\n }\r\n } else {\r\n elem.addClass('ng-hide');\r\n }\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n unwatch();\r\n });\r\n });\r\n }\r\n\r\n\r\n /** @namespace attr.ngfSrc */\r\n /** @namespace attr.ngfNoObjectUrl */\r\n ngFileUpload.directive('ngfSrc', ['Upload', '$timeout', function (Upload, $timeout) {\r\n return {\r\n restrict: 'AE',\r\n link: function (scope, elem, attr) {\r\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfSrc',\r\n Upload.attrGetter('ngfResize', attr, scope), false);\r\n }\r\n };\r\n }]);\r\n\r\n /** @namespace attr.ngfBackground */\r\n /** @namespace attr.ngfNoObjectUrl */\r\n ngFileUpload.directive('ngfBackground', ['Upload', '$timeout', function (Upload, $timeout) {\r\n return {\r\n restrict: 'AE',\r\n link: function (scope, elem, attr) {\r\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfBackground',\r\n Upload.attrGetter('ngfResize', attr, scope), true);\r\n }\r\n };\r\n }]);\r\n\r\n /** @namespace attr.ngfThumbnail */\r\n /** @namespace attr.ngfAsBackground */\r\n /** @namespace attr.ngfSize */\r\n /** @namespace attr.ngfNoObjectUrl */\r\n ngFileUpload.directive('ngfThumbnail', ['Upload', '$timeout', function (Upload, $timeout) {\r\n return {\r\n restrict: 'AE',\r\n link: function (scope, elem, attr) {\r\n var size = Upload.attrGetter('ngfSize', attr, scope);\r\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfThumbnail', size,\r\n Upload.attrGetter('ngfAsBackground', attr, scope));\r\n }\r\n };\r\n }]);\r\n\r\n ngFileUpload.config(['$compileProvider', function ($compileProvider) {\r\n if ($compileProvider.imgSrcSanitizationWhitelist) $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\r\n if ($compileProvider.aHrefSanitizationWhitelist) $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\r\n }]);\r\n\r\n ngFileUpload.filter('ngfDataUrl', ['UploadDataUrl', '$sce', function (UploadDataUrl, $sce) {\r\n return function (file, disallowObjectUrl, trustedUrl) {\r\n if (angular.isString(file)) {\r\n return $sce.trustAsResourceUrl(file);\r\n }\r\n var src = file && ((disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl);\r\n if (file && !src) {\r\n if (!file.$ngfDataUrlFilterInProgress && angular.isObject(file)) {\r\n file.$ngfDataUrlFilterInProgress = true;\r\n UploadDataUrl.dataUrl(file, disallowObjectUrl);\r\n }\r\n return '';\r\n }\r\n if (file) delete file.$ngfDataUrlFilterInProgress;\r\n return (file && src ? (trustedUrl ? $sce.trustAsResourceUrl(src) : src) : file) || '';\r\n };\r\n }]);\r\n\r\n})();\r\n\r\nngFileUpload.service('UploadValidate', ['UploadDataUrl', '$q', '$timeout', function (UploadDataUrl, $q, $timeout) {\r\n var upload = UploadDataUrl;\r\n\r\n function globStringToRegex(str) {\r\n var regexp = '', excludes = [];\r\n if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') {\r\n regexp = str.substring(1, str.length - 1);\r\n } else {\r\n var split = str.split(',');\r\n if (split.length > 1) {\r\n for (var i = 0; i < split.length; i++) {\r\n var r = globStringToRegex(split[i]);\r\n if (r.regexp) {\r\n regexp += '(' + r.regexp + ')';\r\n if (i < split.length - 1) {\r\n regexp += '|';\r\n }\r\n } else {\r\n excludes = excludes.concat(r.excludes);\r\n }\r\n }\r\n } else {\r\n if (str.indexOf('!') === 0) {\r\n excludes.push('^((?!' + globStringToRegex(str.substring(1)).regexp + ').)*$');\r\n } else {\r\n if (str.indexOf('.') === 0) {\r\n str = '*' + str;\r\n }\r\n regexp = '^' + str.replace(new RegExp('[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\-]', 'g'), '\\\\$&') + '$';\r\n regexp = regexp.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\r\n }\r\n }\r\n }\r\n return {regexp: regexp, excludes: excludes};\r\n }\r\n\r\n upload.validatePattern = function (file, val) {\r\n if (!val) {\r\n return true;\r\n }\r\n var pattern = globStringToRegex(val), valid = true;\r\n if (pattern.regexp && pattern.regexp.length) {\r\n var regexp = new RegExp(pattern.regexp, 'i');\r\n valid = (file.type != null && regexp.test(file.type)) ||\r\n (file.name != null && regexp.test(file.name));\r\n }\r\n var len = pattern.excludes.length;\r\n while (len--) {\r\n var exclude = new RegExp(pattern.excludes[len], 'i');\r\n valid = valid && (file.type == null || exclude.test(file.type)) &&\r\n (file.name == null || exclude.test(file.name));\r\n }\r\n return valid;\r\n };\r\n\r\n upload.ratioToFloat = function (val) {\r\n var r = val.toString(), xIndex = r.search(/[x:]/i);\r\n if (xIndex > -1) {\r\n r = parseFloat(r.substring(0, xIndex)) / parseFloat(r.substring(xIndex + 1));\r\n } else {\r\n r = parseFloat(r);\r\n }\r\n return r;\r\n };\r\n\r\n upload.registerModelChangeValidator = function (ngModel, attr, scope) {\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (files) {\r\n if (ngModel.$dirty) {\r\n var filesArray = files;\r\n if (files && !angular.isArray(files)) {\r\n filesArray = [files];\r\n }\r\n upload.validate(filesArray, 0, ngModel, attr, scope).then(function () {\r\n upload.applyModelValidation(ngModel, filesArray);\r\n });\r\n }\r\n return files;\r\n });\r\n }\r\n };\r\n\r\n function markModelAsDirty(ngModel, files) {\r\n if (files != null && !ngModel.$dirty) {\r\n if (ngModel.$setDirty) {\r\n ngModel.$setDirty();\r\n } else {\r\n ngModel.$dirty = true;\r\n }\r\n }\r\n }\r\n\r\n upload.applyModelValidation = function (ngModel, files) {\r\n markModelAsDirty(ngModel, files);\r\n angular.forEach(ngModel.$ngfValidations, function (validation) {\r\n ngModel.$setValidity(validation.name, validation.valid);\r\n });\r\n };\r\n\r\n upload.getValidationAttr = function (attr, scope, name, validationName, file) {\r\n var dName = 'ngf' + name[0].toUpperCase() + name.substr(1);\r\n var val = upload.attrGetter(dName, attr, scope, {$file: file});\r\n if (val == null) {\r\n val = upload.attrGetter('ngfValidate', attr, scope, {$file: file});\r\n if (val) {\r\n var split = (validationName || name).split('.');\r\n val = val[split[0]];\r\n if (split.length > 1) {\r\n val = val && val[split[1]];\r\n }\r\n }\r\n }\r\n return val;\r\n };\r\n\r\n upload.validate = function (files, prevLength, ngModel, attr, scope) {\r\n ngModel = ngModel || {};\r\n ngModel.$ngfValidations = ngModel.$ngfValidations || [];\r\n\r\n angular.forEach(ngModel.$ngfValidations, function (v) {\r\n v.valid = true;\r\n });\r\n\r\n var attrGetter = function (name, params) {\r\n return upload.attrGetter(name, attr, scope, params);\r\n };\r\n\r\n var ignoredErrors = (upload.attrGetter('ngfIgnoreInvalid', attr, scope) || '').split(' ');\r\n var runAllValidation = upload.attrGetter('ngfRunAllValidations', attr, scope);\r\n\r\n if (files == null || files.length === 0) {\r\n return upload.emptyPromise({'validFiles': files, 'invalidFiles': []});\r\n }\r\n\r\n files = files.length === undefined ? [files] : files.slice(0);\r\n var invalidFiles = [];\r\n\r\n function validateSync(name, validationName, fn) {\r\n if (files) {\r\n var i = files.length, valid = null;\r\n while (i--) {\r\n var file = files[i];\r\n if (file) {\r\n var val = upload.getValidationAttr(attr, scope, name, validationName, file);\r\n if (val != null) {\r\n if (!fn(file, val, i)) {\r\n if (ignoredErrors.indexOf(name) === -1) {\r\n file.$error = name;\r\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\r\n file.$errorParam = val;\r\n if (invalidFiles.indexOf(file) === -1) {\r\n invalidFiles.push(file);\r\n }\r\n if (!runAllValidation) {\r\n files.splice(i, 1);\r\n }\r\n valid = false;\r\n } else {\r\n files.splice(i, 1);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (valid !== null) {\r\n ngModel.$ngfValidations.push({name: name, valid: valid});\r\n }\r\n }\r\n }\r\n\r\n validateSync('pattern', null, upload.validatePattern);\r\n validateSync('minSize', 'size.min', function (file, val) {\r\n return file.size + 0.1 >= upload.translateScalars(val);\r\n });\r\n validateSync('maxSize', 'size.max', function (file, val) {\r\n return file.size - 0.1 <= upload.translateScalars(val);\r\n });\r\n var totalSize = 0;\r\n validateSync('maxTotalSize', null, function (file, val) {\r\n totalSize += file.size;\r\n if (totalSize > upload.translateScalars(val)) {\r\n files.splice(0, files.length);\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n validateSync('validateFn', null, function (file, r) {\r\n return r === true || r === null || r === '';\r\n });\r\n\r\n if (!files.length) {\r\n return upload.emptyPromise({'validFiles': [], 'invalidFiles': invalidFiles});\r\n }\r\n\r\n function validateAsync(name, validationName, type, asyncFn, fn) {\r\n function resolveResult(defer, file, val) {\r\n function resolveInternal(fn) {\r\n if (fn()) {\r\n if (ignoredErrors.indexOf(name) === -1) {\r\n file.$error = name;\r\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\r\n file.$errorParam = val;\r\n if (invalidFiles.indexOf(file) === -1) {\r\n invalidFiles.push(file);\r\n }\r\n if (!runAllValidation) {\r\n var i = files.indexOf(file);\r\n if (i > -1) files.splice(i, 1);\r\n }\r\n defer.resolve(false);\r\n } else {\r\n var j = files.indexOf(file);\r\n if (j > -1) files.splice(j, 1);\r\n defer.resolve(true);\r\n }\r\n } else {\r\n defer.resolve(true);\r\n }\r\n }\r\n\r\n if (val != null) {\r\n asyncFn(file, val).then(function (d) {\r\n resolveInternal(function () {\r\n return !fn(d, val);\r\n });\r\n }, function () {\r\n resolveInternal(function () {\r\n return attrGetter('ngfValidateForce', {$file: file});\r\n });\r\n });\r\n } else {\r\n defer.resolve(true);\r\n }\r\n }\r\n\r\n var promises = [upload.emptyPromise(true)];\r\n if (files) {\r\n files = files.length === undefined ? [files] : files;\r\n angular.forEach(files, function (file) {\r\n var defer = $q.defer();\r\n promises.push(defer.promise);\r\n if (type && (file.type == null || file.type.search(type) !== 0)) {\r\n defer.resolve(true);\r\n return;\r\n }\r\n if (name === 'dimensions' && upload.attrGetter('ngfDimensions', attr) != null) {\r\n upload.imageDimensions(file).then(function (d) {\r\n resolveResult(defer, file,\r\n attrGetter('ngfDimensions', {$file: file, $width: d.width, $height: d.height}));\r\n }, function () {\r\n defer.resolve(false);\r\n });\r\n } else if (name === 'duration' && upload.attrGetter('ngfDuration', attr) != null) {\r\n upload.mediaDuration(file).then(function (d) {\r\n resolveResult(defer, file,\r\n attrGetter('ngfDuration', {$file: file, $duration: d}));\r\n }, function () {\r\n defer.resolve(false);\r\n });\r\n } else {\r\n resolveResult(defer, file,\r\n upload.getValidationAttr(attr, scope, name, validationName, file));\r\n }\r\n });\r\n }\r\n var deffer = $q.defer();\r\n $q.all(promises).then(function (values) {\r\n var isValid = true;\r\n for (var i = 0; i < values.length; i++) {\r\n if (!values[i]) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n ngModel.$ngfValidations.push({name: name, valid: isValid});\r\n deffer.resolve(isValid);\r\n });\r\n return deffer.promise;\r\n }\r\n\r\n var deffer = $q.defer();\r\n var promises = [];\r\n\r\n promises.push(validateAsync('maxHeight', 'height.max', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return d.height <= val;\r\n }));\r\n promises.push(validateAsync('minHeight', 'height.min', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return d.height >= val;\r\n }));\r\n promises.push(validateAsync('maxWidth', 'width.max', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return d.width <= val;\r\n }));\r\n promises.push(validateAsync('minWidth', 'width.min', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return d.width >= val;\r\n }));\r\n promises.push(validateAsync('dimensions', null, /image/,\r\n function (file, val) {\r\n return upload.emptyPromise(val);\r\n }, function (r) {\r\n return r;\r\n }));\r\n promises.push(validateAsync('ratio', null, /image/,\r\n this.imageDimensions, function (d, val) {\r\n var split = val.toString().split(','), valid = false;\r\n for (var i = 0; i < split.length; i++) {\r\n if (Math.abs((d.width / d.height) - upload.ratioToFloat(split[i])) < 0.01) {\r\n valid = true;\r\n }\r\n }\r\n return valid;\r\n }));\r\n promises.push(validateAsync('maxRatio', 'ratio.max', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return (d.width / d.height) - upload.ratioToFloat(val) < 0.0001;\r\n }));\r\n promises.push(validateAsync('minRatio', 'ratio.min', /image/,\r\n this.imageDimensions, function (d, val) {\r\n return (d.width / d.height) - upload.ratioToFloat(val) > -0.0001;\r\n }));\r\n promises.push(validateAsync('maxDuration', 'duration.max', /audio|video/,\r\n this.mediaDuration, function (d, val) {\r\n return d <= upload.translateScalars(val);\r\n }));\r\n promises.push(validateAsync('minDuration', 'duration.min', /audio|video/,\r\n this.mediaDuration, function (d, val) {\r\n return d >= upload.translateScalars(val);\r\n }));\r\n promises.push(validateAsync('duration', null, /audio|video/,\r\n function (file, val) {\r\n return upload.emptyPromise(val);\r\n }, function (r) {\r\n return r;\r\n }));\r\n\r\n promises.push(validateAsync('validateAsyncFn', null, null,\r\n function (file, val) {\r\n return val;\r\n }, function (r) {\r\n return r === true || r === null || r === '';\r\n }));\r\n\r\n $q.all(promises).then(function () {\r\n\r\n if (runAllValidation) {\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i];\r\n if (file.$error) {\r\n files.splice(i--, 1);\r\n }\r\n }\r\n }\r\n\r\n runAllValidation = false;\r\n validateSync('maxFiles', null, function (file, val, i) {\r\n return prevLength + i < val;\r\n });\r\n\r\n deffer.resolve({'validFiles': files, 'invalidFiles': invalidFiles});\r\n });\r\n return deffer.promise;\r\n };\r\n\r\n upload.imageDimensions = function (file) {\r\n if (file.$ngfWidth && file.$ngfHeight) {\r\n var d = $q.defer();\r\n $timeout(function () {\r\n d.resolve({width: file.$ngfWidth, height: file.$ngfHeight});\r\n });\r\n return d.promise;\r\n }\r\n if (file.$ngfDimensionPromise) return file.$ngfDimensionPromise;\r\n\r\n var deferred = $q.defer();\r\n $timeout(function () {\r\n if (file.type.indexOf('image') !== 0) {\r\n deferred.reject('not image');\r\n return;\r\n }\r\n upload.dataUrl(file).then(function (dataUrl) {\r\n var img = angular.element('').attr('src', dataUrl)\r\n .css('visibility', 'hidden').css('position', 'fixed')\r\n .css('max-width', 'none !important').css('max-height', 'none !important');\r\n\r\n function success() {\r\n var width = img[0].naturalWidth || img[0].clientWidth;\r\n var height = img[0].naturalHeight || img[0].clientHeight;\r\n img.remove();\r\n file.$ngfWidth = width;\r\n file.$ngfHeight = height;\r\n deferred.resolve({width: width, height: height});\r\n }\r\n\r\n function error() {\r\n img.remove();\r\n deferred.reject('load error');\r\n }\r\n\r\n img.on('load', success);\r\n img.on('error', error);\r\n\r\n var secondsCounter = 0;\r\n function checkLoadErrorInCaseOfNoCallback() {\r\n $timeout(function () {\r\n if (img[0].parentNode) {\r\n if (img[0].clientWidth) {\r\n success();\r\n } else if (secondsCounter++ > 10) {\r\n error();\r\n } else {\r\n checkLoadErrorInCaseOfNoCallback();\r\n }\r\n }\r\n }, 1000);\r\n }\r\n\r\n checkLoadErrorInCaseOfNoCallback();\r\n\r\n angular.element(document.getElementsByTagName('body')[0]).append(img);\r\n }, function () {\r\n deferred.reject('load error');\r\n });\r\n });\r\n\r\n file.$ngfDimensionPromise = deferred.promise;\r\n file.$ngfDimensionPromise['finally'](function () {\r\n delete file.$ngfDimensionPromise;\r\n });\r\n return file.$ngfDimensionPromise;\r\n };\r\n\r\n upload.mediaDuration = function (file) {\r\n if (file.$ngfDuration) {\r\n var d = $q.defer();\r\n $timeout(function () {\r\n d.resolve(file.$ngfDuration);\r\n });\r\n return d.promise;\r\n }\r\n if (file.$ngfDurationPromise) return file.$ngfDurationPromise;\r\n\r\n var deferred = $q.defer();\r\n $timeout(function () {\r\n if (file.type.indexOf('audio') !== 0 && file.type.indexOf('video') !== 0) {\r\n deferred.reject('not media');\r\n return;\r\n }\r\n upload.dataUrl(file).then(function (dataUrl) {\r\n var el = angular.element(file.type.indexOf('audio') === 0 ? '