{"version":3,"sources":["ng-file-upload-shim.js","ng-file-upload.js","angular-uuid2.js","select.js","d3.min.js","ng-knob.min.js","angular-local-storage.js","tipso.min.js","blurOnEnterDirective.js","preloaderDirective.js","onOffSwitcherDirective.js","numberDirective.js","paginationDirective.js","sliderDirective.js","delayOverlayDirective.js","confirmOnExitDirective.js","tipsoTooltip.js","moneyFormatFilter.js","quantityComponent.js","scaleComponent.js","urlService.js","modelProcessingService.js","processStatusChecker.js","modelService.js","userSettingsService.js","pricingService.js","utils.js","uploadedModelsService.js","directUploadFileService.js","materialsService.js","offlinePriceRequestService.js","httpCancellationDecorator.js","uiService.js","angular-poller.js","previewPopupController.js","imageEventsDirective.js","stripeRotatorDirective.js","processingWorkflowService.js","modelFilePreviewService.js","modelViewerPreviewInfoProvider.js","eventService.js","controllers/previouslyUploadedModelsController.js","controllers/previouslyUploadedModelsWindowController.js","controllers/uploadedModelsPageController.js","iMatMultipleUploadModelApp.js","controllers/dragNDropController.js","controllers/mainController.js","controllers/multipleFileUploadController.js","controllers/productDesignerController.js","controllers/removeAllConfirmationController.js","controllers/resultsController.js","services/generalErrorHandler.js","services/multipleUploadStateManager.js","services/multipleUploadStorage.js","services/multipleUploadTrackEventsService.js","services/productErrorHandler.js","services/productFactory.js","services/productIssueFactory.js","services/productIssueTrackEventService.js","services/productWorkflow.js","services/productWorkflowFactory.js","services/workflow.js","services/workspace.js"],"names":["patchXHR","fnName","newFn","window","XMLHttpRequest","prototype","redefineProp","xhr","prop","fn","Object","defineProperty","get","e","FileAPI","shouldLoad","FormData","forceLoad","initializeUploadListener","__listeners","upload","origAddEventListener","addEventListener","t","apply","this","arguments","orig","m","url","b","__url","message","indexOf","__origError","h","__fileApiXHR","getResponseHeader","getAllResponseHeaders","abort","header","value","val","Function","__requestHeaders","__isFileAPIShim","formData","config","jsonp","cache","complete","err","fileApiXHR","angular","isString","__completed","load","type","loaded","__loaded","total","__total","target","lengthComputable","loadend","undefined","status","statusText","response","resp","responseText","onreadystatechange","onload","progress","_this","setTimeout","noContentTimeout","headers","data","files","i","length","item","name","size","key","hasFlash","append","__isFileAPIBlobShim","push","Blob","ActiveXObject","navigator","mimeTypes","getOffset","obj","left","top","jQuery","offset","offsetParent","offsetLeft","scrollLeft","offsetTop","scrollTop","html5","jsUrl","basePath","index","src","script","document","createElement","allScripts","getElementsByTagName","jsPath","search","substring","staticPath","setAttribute","appendChild","ngfFixIE","elem","fileElem","changeFn","bind","label","parent","attr","removeClass","unbind","evt","fileApiChangeFn","addClass","tagName","toLowerCase","isInputTypeFile","css","offsetWidth","offsetHeight","getFiles","__files_","disableFileInput","disable","FileReader","loadStarted","listeners","removeEventListener","splice","dispatchEvent","list","call","onabort","onerror","onloadstart","onloadend","onprogress","constructEvent","error","result","listener","readAsDataURL","file","readAsText","setRequestHeader","ngFileUpload","module","version","service","$http","$q","$timeout","promisesCount","isResumeSupported","slice","resumeSupported","sendHttp","method","deferred","_deferred","defer","promise","notifyProgress","notify","progressFunc","getNotifyEvent","n","_start","_file","uploadWithAngular","then","r","_chunkSize","_finished","fileSize","Math","min","_end","resolve","reject","disableProgress","__setXHR_","__XHR","xhrFn","resumeSizeUrl","resumeSizeResponseReader","parseInt","toString","resumeSize","success","pause","origXhrFn","copy","clone","hasOwnProperty","isUploadInProgress","rename","ngfName","jsonBlob","JSON","stringify","blob","_ngfBlob","json","toJson","isFile","flashId","internal","addFieldToFormData","isDate","toISOString","floor","toResumeFile","split","replace","_fileKey","isObject","$$ngfCircularDetection","k","objectKey","arrayKey","_isDigested","translateScalars","resumeChunkSize","transformRequest","isArray","fields","formDataAppender","http","ArrayBuffer","defaults","str","parseFloat","urlToBlob","responseType","arrayBufferView","Uint8Array","matches","match","setDefaults","$parse","$compile","UploadExif","resizeWithParams","params","scope","ngModel","promises","emptyPromise","handleFile","f","pattern","validatePattern","resizeIf","width","height","attrGetter","$width","$height","$file","resize","resizedFile","$error","$errorMessages","$errorParam","$ngfValidations","valid","applyModelValidation","all","getAttrWithDefaults","def","attrVal","shouldUpdateOn","modelOptions","updateOn","d","args","rejectPromise","happyPromise","updateModel","fileChange","noDelay","update","invalidFiles","newFiles","dupFiles","isSingleModel","$$ngfPrevValidFiles","$$ngfPrevInvalidFiles","invalidFile","$setViewValue","$files","$newFiles","$duplicateFiles","$invalidFiles","$invalidFile","$event","invalidModel","assign","allNewFiles","prevValidFiles","prevInvalidFiles","v","invalids","valids","resizeAndUpdate","keep","concat","options","debounce","change","resizingFiles","validateAfterResize","resizeVal","isResizeSupported","p","resizeFile","validate","validationResult","validsFiles","invalidsFiles","$modelValue","equals","f1","f2","$ngfOrigSize","isInPrevFiles","j","removeDuplicates","allowInvalid","validFiles","isExifSupported","forEach","applyExifRotation","fixedFile","applyExifRotations","directive","Upload","generatedElems","linkFileSelect","fileChangeAttr","fileList","registerModelChangeValidator","unwatches","$watch","$observe","initialTouchStartY","initialTouchStartX","resetModel","element","updateId","attributes","attribute","bindAttrToFileInput","el","ref","body","createFileInput","touches","changedTouches","originalEvent","clientX","clientY","currentX","currentY","abs","stopPropagation","preventDefault","detectSwipe","contains","ua","androidFixMinorVersion","test","isDelayedClickSupported","userAgent","click","appVersion","ie10SameFileSelectFix","parentNode","replaceWith","removeAttr","$formatters","$on","remove","unwatch","g","restrict","require","link","linkFileDirective","directiveName","resizeParams","isBackground","constructDataUrl","disallowObjectUrl","dataUrl","$ngfDataUrl","$ngfBlobUrl","naturalWidth","clientWidth","naturalHeight","clientHeight","getComputedStyle","style","UploadBase","base64DataUrl","count","urls","ff","$$ngfDataUrlPromise","$$ngfBlobUrlPromise","URL","webkitURL","createObjectURL","blobUrls","blobUrlsTotalSize","maxMemory","blobUrlsMaxMemory","maxLength","blobUrlsMaxQueueSize","revokeObjectURL","fileReader","$compileProvider","imgSrcSanitizationWhitelist","aHrefSanitizationWhitelist","filter","UploadDataUrl","$sce","trustedUrl","trustAsResourceUrl","$ngfDataUrlFilterInProgress","globStringToRegex","regexp","excludes","RegExp","len","exclude","ratioToFloat","xIndex","$dirty","filesArray","$setDirty","markModelAsDirty","validation","$setValidity","getValidationAttr","validationName","dName","toUpperCase","substr","prevLength","ignoredErrors","runAllValidation","validateSync","totalSize","validateAsync","asyncFn","resolveResult","resolveInternal","imageDimensions","mediaDuration","$duration","deffer","values","isValid","$ngfWidth","$ngfHeight","$ngfDimensionPromise","img","on","secondsCounter","checkLoadErrorInCaseOfNoCallback","$ngfDuration","$ngfDurationPromise","duration","checkLoadError","UploadValidate","imagen","quality","ratio","centerCrop","canvasElement","imageElement","imgWidth","imgHeight","removeChild","ratioFloat","dimensions","srcWidth","srcHeight","maxWidth","maxHeight","max","marginX","marginY","calculateAspectRatioFit","getContext","drawImage","toDataURL","dataUrltoBlob","dataurl","origSize","arr","mime","bstr","atob","u8arr","charCodeAt","$ngfName","set","configurable","restoreExif","dropAvailable","div","$window","available","isDisabled","actualDragOverClass","leaveTimeout","dragOverDelay","dataTransfer","effectAllowed","dropEffect","cancel","callback","dClass","delay","accept","items","calculateDragOverClass","clazz","$isDragging","$class","html","getData","allowDir","multiple","maxFiles","Number","MAX_VALUE","maxTotalSize","includeDir","traverseFileTree","entry","path","isDirectory","dirReader","createReader","entries","readEntries","results","Array","location","protocol","webkitGetAsEntry","getAsFile","extractFiles","extractFilesFromHtml","clipboard","clipboardData","metaKey","ctrlKey","linkDrop","model","UploadResize","readAsArrayBuffer","readOrientation","reader","slicedFile","orientation","view","DataView","getUint16","byteLength","marker","getUint32","little","tags","setUint16","fixedArrayBuffer","canvas","ctx","transform","applyTransform","buffer","binary","bytes","String","fromCharCode","btoa","arrayBufferToBase64","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","exec","console","log","factory","s4","random","newuuid","s","join","newguid","KEY","TAB","ENTER","ESC","SPACE","LEFT","UP","RIGHT","DOWN","SHIFT","CTRL","ALT","PAGE_UP","PAGE_DOWN","HOME","END","BACKSPACE","DELETE","COMMAND","MAP","91","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","43","44","45","46","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","96","97","98","99","100","101","102","103","104","105","106","107","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","144","145","186","187","188","189","190","191","192","219","220","221","222","isControl","which","altKey","isFunctionKey","isVerticalMovement","isHorizontalMovement","toSeparator","sep","querySelectorAll","selector","closest","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","parentElement","latestId","uis","constant","theme","searchEnabled","sortable","placeholder","refreshDelay","closeOnSelect","skipFocusser","dropdownPosition","removeSelected","resetSearchInput","generateId","appendToBody","spinnerEnabled","spinnerClass","minErr","$$minErr","Error","attrs","ctrl","transclude","matchItem","query","$document","boundingClientRect","getBoundingClientRect","pageYOffset","documentElement","pageXOffset","uiSelectConfig","RepeatParser","uiSelectMinErr","templateUrl","tElement","compile","tAttrs","repeat","groupByExp","groupBy","groupFilterExp","groupFilter","groups","getGroupNgRepeatExpression","parserResult","parse","choices","repeatExpression","rowsInner","itemName","$select","parseRepeatAttr","disableChoiceExpression","uiDisableChoice","onHighlightCallback","onHighlight","position","newValue","open","activate","activeIndex","tagging","isActivated","minimumInputLength","refresh","$eval","controller","$scope","$element","$filter","$$uisDebounce","$injector","_refreshDelayPromise","EMPTY_SEARCH","paste","refreshing","focus","disabled","selected","focusser","fct","taggingTokens","tokens","lockChoiceExpression","clickTriggeredSelect","$animate","searchInput","_resetSearchInput","collection","predicate","thisArg","findIndex","_findIndex","isEmpty","isUndefined","initSearchValue","avoidReset","close","$broadcast","taggingLabel","container","enabled","animateHandler","phase","off","focusSearchInput","_ensureHighlightVisible","findGroupByName","group","repeatAttr","setItemsFn","groupFn","groupName","isFunction","groupFilterFn","groupNames","_groupsFilter","isGrouped","itemProperty","originalSource","source","createArrayFromObject","origSrc","$uisSource","keys","map","keyName","filters","newVal","oldVal","refreshItems","selectedItems","filteredItems","every","selectedItem","calculateDropdownPos","$watchCollection","isDefined","refreshAttr","refreshPromise","isActive","itemScope","itemIndex","_isItemSelected","selection","disabledItems","_isItemDisabled","isTag","disabledItemIndex","_updateItemDisabled","select","trim","locals","onSelectCallback","$item","$model","modelMapper","$setTouched","setFocus","focusInput","clear","toggle","isLocked","doInitalise","lockedItems","lockedItemIndex","_updateItemLocked","_isItemlocked","sizeWatch","updaterScheduled","highlighted","posY","sizeSearchInput","calculateContainerWidth","updateIfVisible","containerWidth","inputWidth","$$postDigest","noop","$apply","tagged","processed","_handleDropDownSelection","keyCode","triggerHandler","newItem","separator","oldsearch","onResize","find","generatedId","uisOffset","controllerAs","ngClass","combined","inputId","id","ctrls","transcludeFn","onDocumentClick","targetController","$digest","baseTitle","title","focusserTitle","focusserId","onSelect","onRemoveCallback","onRemove","choiceGrouped","tabindex","limit","taggingEval","autofocus","focusOn","transcluded","transcludedMatch","transcludedChoices","transcludedNoChoice","isOpen","after","originalWidth","resetDropdown","dropdown","setDropdownPosUp","offsetDropdown","calculateDropdownPosAfterAnimation","setDropdownPosDown","opacity","opened","needsCalculated","getAttribute","setAllowClear","allow","allowClear","uiLockChoice","hasAttribute","$evalAsync","activeMatchIndex","Date","now","refreshComponent","removeChoice","removedChoice","getPlaceholder","$selectMultiple","_findCaseInsensitiveDupe","origItem","_findApproxDupe","haystack","needle","dupeIndex","tempArr","mockObj","$isEmpty","$parsers","unshift","resultMultiple","inputValue","checkFnMultiple","trackByExp","propsItemNameMatches","oldValue","$render","$viewValue","event","caretPosition","isNumber","selectionStart","last","curr","next","prev","newIndex","getNewActiveMatchIndex","_handleMatchSelection","tagItems","tagItem","stashArr","hasTag","some","itemsWithoutTag","checkFnSingle","uiSelectSort","$ngModel","axis","extend","uiSelectSortOptions","setData","$index","dropTimeout","className","dragOverHandler","offsetY","layerY","offsetX","layerX","dropHandler","droppedItemIndex","_dropHandler","theList","itemToMove","hasClass","from","to","$emit","debounceTime","timeoutPromise","self","onOpenCloseCallback","uisOpenClose","previousState","expression","filterMatch","grouped","run","$templateCache","put","provider","prefix","storageType","cookie","expiry","secure","defaultToCookie","setItem","removeItem","setPrefix","setStorageType","setDefaultToCookie","shouldDefault","setStorageCookie","exp","setStorageCookieDomain","domain","setNotify","itemSet","itemRemove","$get","$rootScope","webStorage","deriveQualifiedKey","underiveQualifiedKey","isKeyPrefixOurs","checkSupport","supported","round","browserSupportsLocalStorage","addToLocalStorage","newvalue","addToCookies","getFromLocalStorage","getFromCookies","getItem","removeFromLocalStorage","consumed","removeFromCookies","browserSupportsCookies","cookieEnabled","daysToExpiry","expiryDate","cookieDomain","setTime","getTime","toGMTString","cookiePath","encodeURIComponent","cookies","thisCookie","storedValues","decodeURIComponent","parsedValue","clearAllFromCookies","prefixLength","handleStorageChangeCallback","attachEvent","detachEvent","isSupported","getStorageType","add","Description","clearAll","regularExpression","prefixRegex","testRegex","lsKey","deriveKey","underiveKey","storage","blurOnEnterDirective","blur","$inject","preloaderDirective","onText","offText","titleText","numberDirective","utils","precision","multiplier","isDigit","charCode","isDelimeterAllowed","isDecimalDelimiter","normalizeNumberString","numberString","firstDelimiterIndex","lastDelimiterIndex","lastIndexOf","modelValue","viewValue","transformedValue","precisionWithMultiplier","LN10","paginationTemplateUrl","pageNumber","totalCount","pageSize","calcPages","pagesCount","start","end","pages","shouldDisplayPagination","isCurrent","setCurrent","hasPrev","hasNext","firstPage","goToFirstPage","lastPage","goToLastPage","sliderDirective","$log","percentageValue","normalizedValue","minValue","maxValue","stepValue","show","template","isDisplayedProgress","onbeforeunload","confirmOnExit","confirmMessage","$locationChangeStartUnbind","current","confirm","imatTooltip","elm","backgroundColor","getTooltipColor","tooltipColor","tipso","useTitle","tooltipWidth","background","content","tooltipText","tooltipSize","tooltipPosition","tooltipDelay","hideDelay","tooltiHideDelay","moneyFormatFilter","amount","currency","formatPrice","QuantityComponentController","vm","quantity","strValue","setQuantity","incrementQuantity","decrementQuantity","valueChanged","onKeyDown","$onInit","$onChanges","changes","currentValue","component","bindings","ScaleComponentController","defaultLayout","scale","scalePercentage","setScale","lengthToSelectedMeasureUnit","originalDimsMm","w","l","selectedUnits","units","toggleUnits","isMmSelected","sliderOptions","enforceStep","hidePointerLabels","hideLimitLabels","showSelectionBar","logScale","customValueToPosition","powValueToPosition","customPositionToValue","powPositionToValue","onEnd","slidingFinished","ceil","step","layout","setUnits","readOnly","newReadOnly","exponent","dataLayer","eventCategory","eventAction","eventLabel","eventValue","dimension","minVal","maxVal","percent","pow","urlService","guard","setHash","setHashParameters","$","param","getHashParameters","hash","removeHashParameters","history","replaceState","href","getCurrentAbsoluteUrl","shorten","argumentIsString","modelProcessingService","baseUrl","modelProcessingStatuses","unknown","code","analyzing","fixing","mediumFixing","advancedFixing","done","modelProcessingResults","succeeded","invalid","failed","aborted","runProcessForBadModel","modelId","canceler","requestUrl","post","getProcessingStatus","getProcessingResult","extendResultInfo","abortProcessing","isModelProcessing","isDone","extendStatusInfo","getProcessStatusUrl","apiObject","isUnknown","isAnalysing","isFixing","isMediumFixing","isAdvancedFixing","isSucceeded","isInvalid","isFailed","isAborted","processStatusChecker","poller","intervalMs","lastStatusCode","waitPromise","statusPoller","argumentsArray","smart","catchError","debug","stop","modelService","createModel","fileId","originalFileName","measureUnit","productTemplateId","FileID","OriginalFileName","MeasureUnits","ProductTemplateID","getModelInfo","isNeedToApproveRepairModel","catch","getModelProductTemplateId","acceptRepair","handleError","declineRepair","isFixedByV3","isFixV3ResultsApproved","userSettingsService","unit","Unit","pricingService","getSalesPrice","materialId","colourId","currencyId","salesPrice","price","formatted","priceDiscounted","unitPrice","unitPriceDiscounted","hasDiscount","details","formatUnavailableMoney","money","stringIsNumber","roundMoney","roundWeight","roundDimensions","dims","sum","iteratee","reduce","a","dateToSqlFormat","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","insert","uploadedModelsService","registerModel","modelID","getModelsByCurrentUser","sortEntries","filterEntries","loadRequest","PageNumber","PageSize","SortEntries","propertyName","direction","FilterEntries","removeModel","directUploadFileService","fileUploader","uuid2","eventService","settings","uploadProgressEventName","uploadFile","argumentIsObject","validateFile","fileID","uploadFileFormData","bucketName","acl","Policy","policy","X-Amz-Signature","signature","X-Amz-Algorithm","X-Amz-Credential","credential","X-Amz-Date","Content-Type","createUploadOptions","uploadPromise","isCanceled","fileName","uploadFailed","notifyUploadProgress","directUploadToCloud","subscribeUploadProgress","subscribe","fileExtension","allowedExtensions","allowedFileExtensions","_","isFileTypeValid","maxFileNameLength","isFileNameLengthValid","maxFileSizeKb","validateFileSize","uploadProgress","materialsService","getMaterials","useCache","request","isBoolean","getMaterialsData","materials","walkByMaterials","material","imageClass","shortName","argumentIsFunction","each","colours","colour","walkByColours","materialName","isExpress","sortBy","orderRank","sort","prepareMaterialsToShow","offlinePriceRequestService","requestPrice","productInfo","requestPrices","productInfos","argumentIsArray","httpCancellationDecorator","wrapper","isCancelled","lastArg","timeout","reason","decorator","uiService","scrollToTop","speed","animate","inject","stopOn","resetOn","neverOverwrite","handleVisibilityChange","pollerConfig","delayOnVisibilityChange","delayAll","resetDelay","stopAll","reset","$interval","pollers","action","idleDelay","Poller","normalDelay","timestamp","tick","$resolved","$promise","stopTimestamp","interval","restart","findPoller","restartAll","PreviewPopupController","modelFilePreviewService","processingWorkflowService","isPopupOpened","isStripeLoaded","isStripeReady","stripePreviewInfo","stripeLoaded","loadStripeFailed","hidePreviewPopup","jobId","waitProcessingWorkflowComplete","getStripePreviewInfo","previewInfo","finally","imageEventsDirective","loadFn","imageLoad","errorFn","imageError","stripeRotatorDirective","initModelRotator","stripeUrl","numberOfFrames","previewUrl","framesNumber","_framesNumber","_frameWidthPercent","_doDrag","_mouseStartXPos","_currentStripeFrameIdx","_initialFrameIdx","_framesPassed","initPlaceholder","backgroundSizePercents","subscribeOnEvents","pointerEnabled","startRotation","pageX","stopRotation","doRotation","msPointerEnabled","documentOnDragStartHandler","mouseXPos","frameOffset","getFramesOffset","setStripeFrameByIdx","currentMouseXPos","frameWidthPercent","sectorWidth","mouseOffset","frameIdx","normalizeStripeFrameIdx","framePosition","frameIdxToSet","statuses","notStarted","inProgress","workflowId","workflowStatusPoller","statusInfo","state","isNotStarted","isInProgress","isComplete","RETRY_COUNT","RETRY_WAIT","previewTypes","thumbnail","stripe","threeD","get3DPreviewInfo","waitResults","getPreviewInfo","getThumbnailPreviewInfo","previewType","sendGetPreviewInfoRequest","flow","sendStartGeneratePreviewRequest","tryGetPreviewInfo","retryCount","modelViewerPreviewInfoProvider","$cacheFactory","modelViewerService","getPreviewInfoByModelId","cachedPreviewInfo","isWebGlSupported","canBeShownBy3DViewer","getModel3DPreviewInfo","eventName","$id","handler","PreviouslyUploadedModelsController","isReady","hasError","isDataLoading","dateRange","startDate","endDate","reload","resetData","resetPaging","resetPageAndRefresh","hasItems","getPagesCount","filtersChanged","operator","imat","FilterOperator","GreaterThanOrEqual","LessThanOrEqual","ContainsLike","getFilters","UploadedModels","Pagination","TotalCount","lastPageNumber","normalizePageNumber","PreviouslyUploadedModelsWindowController","$uibModalInstance","multiselect","isSelected","modelIDs","ModelId","rememberModel","toggleModel","forgetModel","selectOneModelAndClose","getSelectedItemsCount","dismiss","UploadedModelsPageController","prevModelsViewModel","$parent","dateFormat","dataChanged","newPage","oldPage","page","formatedStartDate","dateToString","formatedEndDate","updateDataInUrl","dateMoment","format","parseDateString","dateStr","parsedDate","moment","pageStr","parsedPage","getStoredPage","$translateProvider","$logProvider","localStorageServiceProvider","useSanitizeValueStrategy","preferredLanguage","debugEnabled","dragNDropController","uploadFiles","MainController","workflow","workspace","trackEventsService","generalErrorHandler","stateManager","clearGeneralError","generalError","knobOptions","trackWidth","barWidth","showPreviewPopup","closeErrorPopup","areAllModelsCreated","products","product","cancelProductProcessing","trackAcceptDeclineV3RepairResults","refreshProduct","handle","init","setup","MultipleFileUploadController","$uibModal","selectFiles","trackBrowseFiles","addFromUploadedModels","modelIds","selectModels","trackAddPreviouslyUploadedModels","trackFilesDropped","ProductDesignerController","productIssueTrackEventService","productPropertiesChanged","recalculateProductPrice","onPropertiesChanged","runProductIssueWatching","cancelProcessing","hasFreeSlots","duplicate","applyToAll","getModelProcessingStatusTransKey","get3DLabUrl","languageCode","getMaterialInfoUrl","urlFriendlyName","materialPageUrl","getColourUrl","materialColorsAndFinishesUrl","removeAllConfirmationController","decline","ResultsController","underscore","userCartService","getProductOprs","issue","isOpr","cancelProcessingForProducts","getSuccessProducts","hasNotReadyProducts","riseGeneralError","resetGeneralError","removeAllProducts","isPostingToCart","isPostingToOpr","cartItemCreationSource","getDiscount","discount","getSubtotal","subtotal","areAllModelProcessed","readyProducts","successProducts","addProcessedModelsToCart","ProductInfos","productTemplateID","materialID","colourID","CartItemCreationSource","createAddColdPrintLikeProductsRequest","addColdPrintLikeProducts","trackAddToCart","trackAddToCartEvent","cartPageUrl","oprs","argumentHasValue","createOfflinePriceRequestItem","oprWindow","oprPageUrl","trackRequestPrice","removeAll","createIssue","messageKey","multipleUploadStateManager","multipleUploadStorage","productFactory","createProductInfo","onProductsChanged","storedProducts","filteredProducts","productParams","createByParams","selectProducts","restoreProducts","newProducts","oldProducts","productsInfo","localStorageService","productsKeyName","multipleUploadTrackEventsService","googleTagManagerService","pushToDataLayer","trackPriceRequestByIssueType","isAccepted","issueType","eventActionLabel","productsCount","getProductsWithIssueCount","eventData","productErrorHandler","productIssueFactory","createDimensionsUnderLimit","createDimensionsBelowLimit","createDimensionsAboveLimit","createPriceLimit","createNoOnlinePrice","createPriceError","handlePricingErrors","createInvalidFileType","createInvalidFileSize","createFileNameTooLong","createUploadFileError","createNotAcceptedV3ResultsWarning","createAlreadyHasV3ResultsWarning","createInvalidModelError","createProcessingFailedError","createModelIsAborted","createGeneralError","factoryApi","createByFile","Product","createByModelId","_material","_colour","_scale","_quantity","newProduct","dimsMm","getModelName","uploadedFile","getFileName","filename","lastDotPosition","notifyPropertiesChanged","selectMaterialColour","initMaterialColour","isMaterialColourDraft","muIssueMessagesData","createRemoveModelAction","createTranslatableErrorIssue","messageData","allowedFileTypes","supportedFileTypesPageUrl","maxFileSizeMb","actions","createAction","createAcceptRepairAction","createDeclineRepairAction","createTranslatableQuestionIssue","createRefreshAction","createTranslatableWarningIssue","createScaleToFitAction","scaleToFit","createWarningIssue","helpCenterUrl","titleKey","func","severity","isError","isWarning","isQuestion","priority","trackDimensionsBelowLimitIssue","trackProductIssue","productWorkflow","instance","notifications","tasks","processBadModel","waitProcessingResult","getPreviewInfoAsync","checkProcessingResult","calculatePrice","task","recalculatePrice","Instance","percentages","createModelInBackground","modelCreated","getModelInfoWithoutConditions","modelInfo","checkerPromise","statusPollingIntervalMs","newStatus","thumbnailPreviewInfo","productWorkflowFactory","create","workflowService","productWorkflows","setDefaultMaterialColourForProducts","initMaterialColourForDraftProducts","areModelsCanBeAdded","createProductsByFiles","setDefaultMaterialForProducts","runProductWorkflows","createProductsByModelIds","productId","removeProductById","processRelatedProducts","pw","sourceProduct","getProductById","sourceIndex","getProductIndexById","destProduct","insertProduct","sourceProductMaterial","sourceProductColour","getFreeSlotsCount","itemsToAddCount","maxFilesCount","materialColour","getMaterialColourById","defaultMaterial","addProduct","chain","workspaceService","removeProduct"],"mappings":"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","file":"multiple-upload-3d-model.min.js","sourcesContent":["/**!\r\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\r\n * progress, resize, thumbnail, preview, validation and CORS\r\n * FileAPI Flash shim for old browsers not supporting FormData\r\n * @author Danial \r\n * @version 12.2.12\r\n */\r\n\r\n(function () {\r\n /** @namespace FileAPI.noContentTimeout */\r\n\r\n function patchXHR(fnName, newFn) {\r\n window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\r\n }\r\n\r\n function redefineProp(xhr, prop, fn) {\r\n try {\r\n Object.defineProperty(xhr, prop, {get: fn});\r\n } catch (e) {/*ignore*/\r\n }\r\n }\r\n\r\n if (!window.FileAPI) {\r\n window.FileAPI = {};\r\n }\r\n\r\n if (!window.XMLHttpRequest) {\r\n throw 'AJAX is not supported. XMLHttpRequest is not defined.';\r\n }\r\n\r\n FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\r\n if (FileAPI.shouldLoad) {\r\n var initializeUploadListener = function (xhr) {\r\n if (!xhr.__listeners) {\r\n if (!xhr.upload) xhr.upload = {};\r\n xhr.__listeners = [];\r\n var origAddEventListener = xhr.upload.addEventListener;\r\n xhr.upload.addEventListener = function (t, fn) {\r\n xhr.__listeners[t] = fn;\r\n if (origAddEventListener) origAddEventListener.apply(this, arguments);\r\n };\r\n }\r\n };\r\n\r\n patchXHR('open', function (orig) {\r\n return function (m, url, b) {\r\n initializeUploadListener(this);\r\n this.__url = url;\r\n try {\r\n orig.apply(this, [m, url, b]);\r\n } catch (e) {\r\n if (e.message.indexOf('Access is denied') > -1) {\r\n this.__origError = e;\r\n orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\r\n }\r\n }\r\n };\r\n });\r\n\r\n patchXHR('getResponseHeader', function (orig) {\r\n return function (h) {\r\n return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\r\n };\r\n });\r\n\r\n patchXHR('getAllResponseHeaders', function (orig) {\r\n return function () {\r\n return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\r\n };\r\n });\r\n\r\n patchXHR('abort', function (orig) {\r\n return function () {\r\n return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\r\n };\r\n });\r\n\r\n patchXHR('setRequestHeader', function (orig) {\r\n return function (header, value) {\r\n if (header === '__setXHR_') {\r\n initializeUploadListener(this);\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 this.__requestHeaders = this.__requestHeaders || {};\r\n this.__requestHeaders[header] = value;\r\n orig.apply(this, arguments);\r\n }\r\n };\r\n });\r\n\r\n patchXHR('send', function (orig) {\r\n return function () {\r\n var xhr = this;\r\n if (arguments[0] && arguments[0].__isFileAPIShim) {\r\n var formData = arguments[0];\r\n var config = {\r\n url: xhr.__url,\r\n jsonp: false, //removes the callback form param\r\n cache: true, //removes the ?fileapiXXX in the url\r\n complete: function (err, fileApiXHR) {\r\n if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\r\n // this error seems to be fine the file is being uploaded properly.\r\n err = null;\r\n }\r\n xhr.__completed = true;\r\n if (!err && xhr.__listeners.load)\r\n xhr.__listeners.load({\r\n type: 'load',\r\n loaded: xhr.__loaded,\r\n total: xhr.__total,\r\n target: xhr,\r\n lengthComputable: true\r\n });\r\n if (!err && xhr.__listeners.loadend)\r\n xhr.__listeners.loadend({\r\n type: 'loadend',\r\n loaded: xhr.__loaded,\r\n total: xhr.__total,\r\n target: xhr,\r\n lengthComputable: true\r\n });\r\n if (err === 'abort' && xhr.__listeners.abort)\r\n xhr.__listeners.abort({\r\n type: 'abort',\r\n loaded: xhr.__loaded,\r\n total: xhr.__total,\r\n target: xhr,\r\n lengthComputable: true\r\n });\r\n if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\r\n return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\r\n });\r\n if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\r\n return fileApiXHR.statusText;\r\n });\r\n redefineProp(xhr, 'readyState', function () {\r\n return 4;\r\n });\r\n if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\r\n return fileApiXHR.response;\r\n });\r\n var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\r\n redefineProp(xhr, 'responseText', function () {\r\n return resp;\r\n });\r\n redefineProp(xhr, 'response', function () {\r\n return resp;\r\n });\r\n if (err) redefineProp(xhr, 'err', function () {\r\n return err;\r\n });\r\n xhr.__fileApiXHR = fileApiXHR;\r\n if (xhr.onreadystatechange) xhr.onreadystatechange();\r\n if (xhr.onload) xhr.onload();\r\n },\r\n progress: function (e) {\r\n e.target = xhr;\r\n if (xhr.__listeners.progress) xhr.__listeners.progress(e);\r\n xhr.__total = e.total;\r\n xhr.__loaded = e.loaded;\r\n if (e.total === e.loaded) {\r\n // fix flash issue that doesn't call complete if there is no response text from the server\r\n var _this = this;\r\n setTimeout(function () {\r\n if (!xhr.__completed) {\r\n xhr.getAllResponseHeaders = function () {\r\n };\r\n _this.complete(null, {status: 204, statusText: 'No Content'});\r\n }\r\n }, FileAPI.noContentTimeout || 10000);\r\n }\r\n },\r\n headers: xhr.__requestHeaders\r\n };\r\n config.data = {};\r\n config.files = {};\r\n for (var i = 0; i < formData.data.length; i++) {\r\n var item = formData.data[i];\r\n if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\r\n config.files[item.key] = item.val;\r\n } else {\r\n config.data[item.key] = item.val;\r\n }\r\n }\r\n\r\n setTimeout(function () {\r\n if (!FileAPI.hasFlash) {\r\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\r\n }\r\n xhr.__fileApiXHR = FileAPI.upload(config);\r\n }, 1);\r\n } else {\r\n if (this.__origError) {\r\n throw this.__origError;\r\n }\r\n orig.apply(xhr, arguments);\r\n }\r\n };\r\n });\r\n window.XMLHttpRequest.__isFileAPIShim = true;\r\n window.FormData = FormData = function () {\r\n return {\r\n append: function (key, val, name) {\r\n if (val.__isFileAPIBlobShim) {\r\n val = val.data[0];\r\n }\r\n this.data.push({\r\n key: key,\r\n val: val,\r\n name: name\r\n });\r\n },\r\n data: [],\r\n __isFileAPIShim: true\r\n };\r\n };\r\n\r\n window.Blob = Blob = function (b) {\r\n return {\r\n data: b,\r\n __isFileAPIBlobShim: true\r\n };\r\n };\r\n }\r\n\r\n})();\r\n\r\n(function () {\r\n /** @namespace FileAPI.forceLoad */\r\n /** @namespace window.FileAPI.jsUrl */\r\n /** @namespace window.FileAPI.jsPath */\r\n\r\n function isInputTypeFile(elem) {\r\n return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\r\n }\r\n\r\n function hasFlash() {\r\n try {\r\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\r\n if (fo) return true;\r\n } catch (e) {\r\n if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\r\n }\r\n return false;\r\n }\r\n\r\n function getOffset(obj) {\r\n var left = 0, top = 0;\r\n\r\n if (window.jQuery) {\r\n return jQuery(obj).offset();\r\n }\r\n\r\n if (obj.offsetParent) {\r\n do {\r\n left += (obj.offsetLeft - obj.scrollLeft);\r\n top += (obj.offsetTop - obj.scrollTop);\r\n obj = obj.offsetParent;\r\n } while (obj);\r\n }\r\n return {\r\n left: left,\r\n top: top\r\n };\r\n }\r\n\r\n if (FileAPI.shouldLoad) {\r\n FileAPI.hasFlash = hasFlash();\r\n\r\n //load FileAPI\r\n if (FileAPI.forceLoad) {\r\n FileAPI.html5 = false;\r\n }\r\n\r\n if (!FileAPI.upload) {\r\n var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\r\n if (window.FileAPI.jsUrl) {\r\n jsUrl = window.FileAPI.jsUrl;\r\n } else if (window.FileAPI.jsPath) {\r\n basePath = window.FileAPI.jsPath;\r\n } else {\r\n for (i = 0; i < allScripts.length; i++) {\r\n src = allScripts[i].src;\r\n index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\r\n if (index > -1) {\r\n basePath = src.substring(0, index + 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\r\n script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n\r\n FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\r\n if (!hasFlash()) {\r\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\r\n }\r\n var fixInputStyle = function () {\r\n var label = fileElem.parent();\r\n if (elem.attr('disabled')) {\r\n if (label) label.removeClass('js-fileapi-wrapper');\r\n } else {\r\n if (!fileElem.attr('__ngf_flash_')) {\r\n fileElem.unbind('change');\r\n fileElem.unbind('click');\r\n fileElem.bind('change', function (evt) {\r\n fileApiChangeFn.apply(this, [evt]);\r\n changeFn.apply(this, [evt]);\r\n });\r\n fileElem.attr('__ngf_flash_', 'true');\r\n }\r\n label.addClass('js-fileapi-wrapper');\r\n if (!isInputTypeFile(elem)) {\r\n label.css('position', 'absolute')\r\n .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\r\n .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\r\n .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\r\n .css('overflow', 'hidden').css('z-index', '900000')\r\n .css('visibility', 'visible');\r\n fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\r\n .css('position', 'absolute').css('top', '0px').css('left', '0px');\r\n }\r\n }\r\n };\r\n\r\n elem.bind('mouseenter', fixInputStyle);\r\n\r\n var fileApiChangeFn = function (evt) {\r\n var files = FileAPI.getFiles(evt);\r\n //just a double check for #233\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size === undefined) files[i].size = 0;\r\n if (files[i].name === undefined) files[i].name = 'file';\r\n if (files[i].type === undefined) files[i].type = 'undefined';\r\n }\r\n if (!evt.target) {\r\n evt.target = {};\r\n }\r\n evt.target.files = files;\r\n // if evt.target.files is not writable use helper field\r\n if (evt.target.files !== files) {\r\n evt.__files_ = files;\r\n }\r\n (evt.__files_ || evt.target.files).item = function (i) {\r\n return (evt.__files_ || evt.target.files)[i] || null;\r\n };\r\n };\r\n };\r\n\r\n FileAPI.disableFileInput = function (elem, disable) {\r\n if (disable) {\r\n elem.removeClass('js-fileapi-wrapper');\r\n } else {\r\n elem.addClass('js-fileapi-wrapper');\r\n }\r\n };\r\n }\r\n})();\r\n\r\nif (!window.FileReader) {\r\n window.FileReader = function () {\r\n var _this = this, loadStarted = false;\r\n this.listeners = {};\r\n this.addEventListener = function (type, fn) {\r\n _this.listeners[type] = _this.listeners[type] || [];\r\n _this.listeners[type].push(fn);\r\n };\r\n this.removeEventListener = function (type, fn) {\r\n if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\r\n };\r\n this.dispatchEvent = function (evt) {\r\n var list = _this.listeners[evt.type];\r\n if (list) {\r\n for (var i = 0; i < list.length; i++) {\r\n list[i].call(_this, evt);\r\n }\r\n }\r\n };\r\n this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\r\n\r\n var constructEvent = function (type, evt) {\r\n var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\r\n if (evt.result != null) e.target.result = evt.result;\r\n return e;\r\n };\r\n var listener = function (evt) {\r\n if (!loadStarted) {\r\n loadStarted = true;\r\n if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\r\n }\r\n var e;\r\n if (evt.type === 'load') {\r\n if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\r\n e = constructEvent('load', evt);\r\n if (_this.onload) _this.onload(e);\r\n _this.dispatchEvent(e);\r\n } else if (evt.type === 'progress') {\r\n e = constructEvent('progress', evt);\r\n if (_this.onprogress) _this.onprogress(e);\r\n _this.dispatchEvent(e);\r\n } else {\r\n e = constructEvent('error', evt);\r\n if (_this.onerror) _this.onerror(e);\r\n _this.dispatchEvent(e);\r\n }\r\n };\r\n this.readAsDataURL = function (file) {\r\n FileAPI.readAsDataURL(file, listener);\r\n };\r\n this.readAsText = function (file) {\r\n FileAPI.readAsText(file, listener);\r\n };\r\n };\r\n}\r\n","/**!\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.12\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.12';\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 = {width: elem[0].naturalWidth || elem[0].clientWidth,\r\n height: elem[0].naturalHeight || elem[0].clientHeight};\r\n }\r\n if (size.width === 0 && window.getComputedStyle) {\r\n var style = getComputedStyle(elem[0]);\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 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 ? '