{"version":3,"sources":["webpack://ipfw/./node_modules/bootstrap-fileinput/js/fileinput.js","webpack://ipfw/./node_modules/bootstrap-fileinput/js/locales/ja.js","webpack://ipfw/./node_modules/bootstrap/dist/js/bootstrap.js","webpack://ipfw/./node_modules/popper.js/dist/esm/popper.js"],"names":["factory","$","fn","fileinputLocales","fileinputThemes","fileinputBsVersion","window","Alert","VERSION","bootstrap","String","prototype","setTokens","replacePairs","key","re","str","this","toString","hasOwnProperty","RegExp","replace","Array","flatMap","lambda","concat","map","$h","FileInput","FRAMES","SORT_CSS","INIT_FLAG","OBJECT_PARAMS","DEFAULT_PREVIEW","MODAL_ID","MODAL_EVENTS","logMessages","ajaxError","badDroppedFiles","badExifParser","badInputType","exifWarning","invalidChunkSize","invalidThumb","noResumableSupport","noUploadUrl","retryStatus","chunkQueueError","resumableMaxRetriesReached","resumableRetryError","resumableAborting","resumableRequestError","objUrl","URL","webkitURL","isBs","ver","chk","trim","parseInt","charAt","defaultButtonCss","fill","now","Date","getTime","round","num","parseFloat","isNaN","Math","floor","getArray","obj","i","arr","len","length","push","getFileRelativePath","file","newPath","relativePath","webkitRelativePath","getFileName","getFileId","generateFileId","size","encodeURIComponent","getFrameSelector","id","selector","getZoomSelector","getFrameElement","$element","find","getZoomElement","getElapsed","seconds","delta","out","result","structure","year","month","week","day","hour","minute","second","getObjectKeys","forEach","each","value","substring","debounce","func","delay","inDebounce","args","arguments","context","clearTimeout","setTimeout","apply","stopEvent","e","stopPropagation","preventDefault","fileName","name","createObjectURL","data","revokeObjectURL","compare","input","exact","undefined","match","isIE","div","status","navigator","appName","test","userAgent","document","createElement","innerHTML","getElementsByTagName","body","appendChild","parentNode","removeChild","canOrientImage","$el","$img","css","width","height","insertAfter","flag","remove","canAssignFilesToInput","type","files","err","getDragDropFolders","items","item","folders","webkitGetAsEntry","isDirectory","initModal","$modal","$body","appendTo","isFunction","v","isEmpty","isString","isArray","isPlainObject","isEmptyObject","a","Object","call","ifSet","needle","haystack","def","cleanArray","filter","spliceArray","index","reverseOrder","newArr","j","extend","reverse","getNum","hasFileAPISupport","File","FileReader","hasDragDropSupport","draggable","ondragstart","ondrop","hasFileUploadSupport","FormData","hasBlobSupport","Blob","Boolean","hasArrayBufferViewSupport","Uint8Array","hasResumableUploadSupport","webkitSlice","mozSlice","slice","dataURI2Blob","dataURI","byteStr","arrayBuffer","intArray","mimeStr","bb","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","canBlob","atob","ArrayBuffer","split","indexOf","decodeURIComponent","charCodeAt","append","getBlob","arrayBuffer2String","buffer","TextDecoder","decode","c","char2","char3","array","fromCharCode","isHtml","childNodes","nodeType","isSvg","getMimeType","signature","contents","addCss","removeClass","addClass","getElement","options","param","tag","parseHTML","uniqId","random","pow","cspBuffer","CSP_ATTRIB","domElementsStyles","stash","htmlString","self","outerDom","elem","$elem","styleDeclaration","style","styles","removeAttr","attr","values","keys","itm","join","domElement","setHtml","buf","html","htmlEncode","undefVal","replaceTags","tags","cleanMemory","$thumb","is","findFileName","filePath","sepIndex","lastIndexOf","pop","checkFullScreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggleFullScreen","maximize","doc","de","documentElement","isFullScreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","moveArray","oldIndex","newIndex","k","splice","closeButton","getRotation","setTransform","el","val","transform","webkitTransform","getObjectSize","whenAll","rejectContexts","rejectValues","resolveContexts","updateFunc","s","resolveValues","deferred","Deferred","failed","remaining","contexts","notifyWith","promise","done","fail","resolveWith","element","$parent","parent","_validate","isPreviewable","isIE9","isIE10","_init","_listen","constructor","_cleanup","reader","clearFileStack","fileBatchCompleted","isError","isDuplicateError","isPersistentError","cancelling","paused","lastProgress","_initAjax","_isAborted","tm","taskManager","pool","addPool","TasksPool","getPool","addTask","logic","Task","tp","cancelled","cancelledDeferrer","tasks","run","maxThreads","task","enqueue","callback","tasksList","tasksDone","resolve","reject","tasksDeferredList","argv","when","always","notify","shift","cancel","tk","unshift","runWithContext","ajaxQueue","ajaxRequests","ajaxAborted","refreshMode","f","$cont","t","tmp","errorCloseButton","maxTotalFileCount","maxFileCount","rtl","previewZoomButtonIcons","prev","next","maxAjaxThreads","resumableUploadOptions","_initFileManager","autoOrientImage","autoOrientImageInitial","duplicateErrors","$form","closest","_initTemplateDefaults","uploadFileAttr","_getLayoutTemplate","progressTemplate","progressClass","progressInfoTemplate","progressInfoClass","progressPauseTemplate","progressPauseClass","progressCompleteTemplate","progressCompleteClass","progressErrorTemplate","progressErrorClass","isDisabled","isClickable","browseOnZoneClick","showPreview","dropZoneEnabled","defaultPreviewContent","isAjaxUpload","uploadUrl","slug","slugCallback","_slugDefault","mainTemplate","showCaption","captionTemplate","previewGenericTemplate","_getPreviewTemplate","imageCanvas","resizeImage","maxImageWidth","maxImageHeight","imageCanvasContext","getContext","namespace","$container","_createContainer","_refreshContainer","$dropZone","$progress","$btnUpload","$captionContainer","$caption","msgPlaceholder","filePlural","fileSingle","$captionIcon","$previewContainer","$preview","$previewStatus","$errorContainer","_validateDisabled","msgErrorClass","_errorsExist","hide","_resetErrors","previewInitId","_initPreviewCache","_initPreview","_initPreviewActions","hasClass","insertBefore","_setFileDropZoneTitle","disable","_initZoom","hideThumbnailContent","uploadStartTime","fileManager","stack","filesProcessed","errors","loadedImages","totalImages","totalFiles","totalSize","uploadedSize","stats","bpsLog","bps","initStats","started","getUploadStats","loaded","total","fm","elapsed","speeds","ceil","pendingBytes","bitrateUpdateDelay","beg","n","sort","b","fileId","bitrate","_getSize","exists","inArray","getIdList","count","getTotalSize","getFileStack","add","getId","nameFmt","_getFileName","sizeFmt","_getThumbFileId","removeFile","move","idFrom","idTo","list","isPending","isProcessed","clear","clearImages","addImage","config","removeImage","getImageIdList","getImageCount","_getFileId","getIndex","getThumb","_getThumbs","$t","getThumbIndex","getFile","fmt","getFirstFile","ids","setFile","setProcessed","getProgress","setProgress","pct","progress","_setUploadData","fd","uploadParamNames","_initResumableUpload","rm","opts","logs","enableResumableUpload","fallback","_log","chunkSize","resumableManager","init","error","fileIndex","completed","$btnDelete","chunkCount","getTotalChunks","setAjaxError","jqXHR","textStatus","errorThrown","isTest","responseJSON","showErrorLog","text","responseText","reset","chunksProcessed","msg","tokens","$prog","hasThumb","params","skipErrorsAndProceed","_setProgress","_setThumbStatus","_initUploadSuccess","_raise","_setPreviewError","msgProgressError","max","maxRetries","msgResumableUploadRetriesExceeded","_showFileError","check","processedResumables","getUploadedSize","checkAborted","intervalId","clearInterval","unlock","upload","setInterval","lock","processUpload","$initThumbs","_initSortable","_clearFileInput","previewCache","initialPreview","content","initialPreviewConfig","initialPreviewThumbTags","_getExtraData","processDelay","uploadResumable","pushAjax","fnBefore","fnSuccess","fnError","fnComplete","outData","testUrl","fileSize","fileRelativePath","_getOutData","chunksUploaded","_ajaxSubmit","retry","deferrer","sendAjax","msgs","logError","blob","chunkIndex","chunkSizeStart","fileBlob","retryCount","show","filename","chunk","tMain1","tMain2","tPreview","tFileIcon","tClose","tCaption","tBtnDefault","tBtnLink","tBtnBrowse","tModalMain","tModal","tProgress","tSize","tFooter","tActions","tActionDelete","tActionUpload","tActionDownload","tActionZoom","tActionDrag","tIndicator","tTagBef","tTagBef1","tTagBef2","tTagAft","tGeneric","tHtml","tImage","tText","tOffice","tGdocs","tVideo","tAudio","tFlash","tObject","tPdf","tOther","tStyle","tZoomCache","vDefaultDim","tStats","tModalLabel","renderObject","mime","defBtnCss1","_isPdfRendered","pdfRendererTemplate","_encodeURI","pdfRendererUrl","defaults","layoutTemplates","main1","main2","preview","close","fileIcon","caption","modalMain","modal","footer","indicator","actions","actionDelete","actionUpload","actionDownload","actionZoom","actionDrag","btnDefault","btnLink","btnBrowse","zoomCache","previewMarkupTags","tagBefore1","tagBefore2","tagAfter","previewContentTemplates","generic","image","office","gdocs","video","audio","flash","object","pdf","other","allowedPreviewTypes","previewTemplates","previewSettings","previewSettingsSmall","previewZoomSettings","mimeTypeAliases","fileTypeSettings","vType","vName","fileActionSettings","showRemove","showUpload","showDownload","showZoom","showDrag","removeIcon","removeErrorClass","removeTitle","uploadIcon","uploadClass","uploadTitle","uploadRetryIcon","uploadRetryTitle","downloadIcon","downloadClass","downloadTitle","zoomIcon","zoomClass","zoomTitle","dragIcon","dragClass","dragTitle","dragSettings","indicatorNew","indicatorSuccess","indicatorError","indicatorLoading","indicatorPaused","indicatorNewTitle","indicatorSuccessTitle","indicatorErrorTitle","indicatorLoadingTitle","indicatorPausedTitle","setting","_initPreviewTemplates","tagBef","tagAft","initialPreviewDelimiter","skipNull","get","$tmp","cat","ftr","fname","ftype","frameClass","ind","asData","initialPreviewAsData","title","alt","parseTemplate","dat","fclass","fc","_generatePreviewTemplate","zoomData","initialPreviewFileType","frameAttr","clean","set","unset","rev","reversePreviewOrder","_getMsgSelected","url","fs","initPreviewShowDel","initialPreviewShowDelete","downloadInitialUrl","initialPreviewDownloadUrl","dUrl","downloadUrl","dFil","initPreviewShowDwl","sDel","sDwl","sZm","sDrg","dis","_renderFileActions","_renderThumbProgress","useLib","usePdfRenderer","_handler","event","ns","ev","off","on","vUrl","encodeUrl","encodeURI","showConsoleLogs","console","log","alert","$err","_errorHandler","evt","target","showError","_showError","code","NOT_FOUND_ERR","msgFileNotFound","SECURITY_ERR","msgFileSecured","NOT_READABLE_ERR","msgFileNotReadable","ABORT_ERR","msgFilePreviewAborted","msgFilePreviewError","_addError","$error","getFrames","fadeOut","_setValidationError","fade","history","retainErrorHistory","_showFolderError","msgFoldersNotAllowed","fadeIn","fadeDelay","fId","_noFilesError","label","minFileCount","msgFilesTooLess","_updateFileDetails","_parseError","operation","textPre","errText","errMsg","msgUploadAborted","showAjaxErrorDetails","msgAjaxError","_parseFileType","types","isValid","_getPreviewIcon","ext","previewFileIconSettings","toLowerCase","previewFileExtSettings","previewFileIcon","_parseFilePreviewIcon","icn","previewFileIconClass","Event","trigger","isDefaultPrevented","_listenFullScreen","$btnFull","$btnBord","_maximizeZoomDialog","fullScreenEv","_initFileSelected","proxy","_change","paste","showBrowse","$btnFile","_browse","keyCode","which","pause","_initDragDrop","_submitForm","_uploadClick","screen","innerWidth","innerHeight","focus","_autoFitContent","_initClickable","_refreshPreview","sel","clientWidth","settings","_scanDroppedItems","path","dirReader","readDir","errorHandler","isFile","createReader","readEntries","entries","$zone","_zoneDragEnter","_zoneDragLeave","_zoneDrop","_zoneDragDropInit","dt","originalEvent","dataTransfer","hasFiles","effectAllowed","dropEffect","Files","_dropFiles","changeTriggered","$btn","isEnabled","_isFileSelectionValid","_abort","_clearPreview","showUploadedThumbs","_resetUpload","_validateDefaultPreview","beginGrab","endGrab","$html","Sortable","handle","dataIdAttr","animation","scroll","forceFallback","onChoose","onStart","onUnchoose","onEnd","onSort","$first","exceedsLast","$item","slideUp","slideDown","previewId","sortable","destroy","create","_setPreviewContent","_initPreviewImageOrientations","$zoomImg","exif","Orientation","_getZoom","setImageOrientation","isInit","cap","initialCaption","_setCaption","_initCaption","_setInitThumbAttr","_getZoomButton","previewZoomButtonClasses","previewZoomButtonTitles","_getModalContent","msgZoomModalHeading","_listenModalEvent","getParams","sourceEvent","$dialog","modalId","_setTabIndex","_initZoomButtons","$last","thumbs","toArray","$prev","$next","$head","$foot","h","outerHeight","_resizeZoomDialog","fullScreen","zoomModalHeight","_setZoomContent","$frame","animate","$content","tmplt","$dataEl","$zoomPreview","$btnTogh","clone","_zoomSlideShow","ht","$header","$floatBar","$actions","resize","vId","vPrevKey","vNextKey","_showModal","backdrop","_zoomPreview","dir","$targFrame","thumbsData","_initZoomButton","_inputFileCount","getFileList","readFiles","_clearObjects","$srcFrm","$tmpFrm","$tmpEl","before","after","uploadCache","_hideProgress","_resetCanvas","overwriteInitial","clearRect","_hasInitialPreview","_resetPreview","$div","hasSuc","hasErr","removeFromPreviewOnError","includeProcessed","_clearDefaultPreview","_resetPreviewThumbs","isAjax","template","customLayoutTags","templates","customPreviewTags","formdata","responseData","filesData","filenames","filescount","getFilesCount","extra","response","processing","strFiles","msgSelected","msgProcessing","msgNoFilesSelected","_getFrame","skipWarning","_getThumbId","uploadExtraData","_initXhr","xhrobj","position","lengthComputable","_setFileUploadStats","_getStats","progressDelay","addEventListener","_initAjaxSettings","_ajaxSettings","ajaxSettings","_ajaxDeleteSettings","ajaxDeleteSettings","_mergeAjaxCallback","funcName","srcFunc","targFunc","mergeAjaxCallbacks","mergeAjaxDeleteCallbacks","ajaxTask","JSON","stringify","uploadUrlThumb","xhr","dataType","cache","processData","contentType","ajax","_mergeArray","prop","arr1","arr2","allFiles","$newCache","hasInitData","_getUploadCacheIndex","$newThumb","_resetCaption","_initSuccessThumbs","$remove","_updateInitialPreview","u","_getThumbFile","_uploadSingle","isBatch","chkComplete","uploadFailed","updateUploadLog","hasPostData","op","ajaxOperations","uploadThumb","fileObj","triggerReset","errCount","uploadAsync","retryErrorUploads","abort","_setProgressCancelled","pid","msgUploadError","msgAjaxProgressError","_setFileData","preProcess","preProcessUpload","_uploadBatch","setAllUploaded","uploadBatch","$thumbs","errorkeys","uploadFileCount","ctr","_uploadExtraOnly","uploadExtra","_deleteFileIndex","$nFrame","nInd","incomplete","_initFileActions","hasError","_validateMinCount","deleteExtraData","btnRemove","origClass","errClass","resetProgress","deleteUrl","vKey","deleteThumb","extraData","msgDeleteError","Promise","then","_hideFileIcon","_showFileIcon","bytes","sizes","fileSizeGetter","isNumeric","toFixed","_getFileType","foot","templ","attrs","getContent","zoomContent","styleAttribs","screenW","typeCss","_renderFileFooter","forcePrevIcon","preferIconicPreview","forceZoomIcon","preferIconicZoomPreview","newCat","d","zoom","frameCss","sanitizeZoomCache","_addToPreview","prepend","_previewDefault","_setThumbAttr","_previewFile","theFile","fileInfo","fsize","iData","_validateImageOrientation","numFiles","skipRaiseEvent","nFiles","_initCapStatus","icon","$indicator","msgCancelled","p","min","pctLimit","progressUploadThreshold","msgUploadThreshold","msgUploadEnd","_hasFiles","dropZoneTitle","dropZoneClickTitle","dropZoneTitleClass","pendingTime","showUploadStats","msgPendingTime","time","msgCalculatingTime","uploadSpeed","_setResumableProgress","_toggleResumableProgress","message","percent","pctTot","totUpSize","totSize","totStats","totLoaded","currUplSize","currTotSize","cfg","validateInitialCount","_getFileCount","fileCount","includeInitial","defaultValue","_getFileNames","keepFile","removeFrame","_refreshUploadButton","_checkDimensions","dim","$imgEl","limit","naturalWidth","naturalHeight","_getExifObj","exifObj","piexif","load","details","$mark","invalidImg","invalidZoomImg","isHidden","zoomOnly","img","zoomImg","offsetHeight","w","offsetWidth","r","offsetAngle","atan","origFactor","sqrt","scale","cos","PI","abs","_validateImage","ImageIFD","w1","w2","one","thumb","typ","siz","validated","imgData","_validateAllImages","counter","numImgs","minSize","resizeIfSizeMoreThan","_getResizedImage","chkWidth","chkHeight","throwError","exifStr","evParams","ratio","maxWidth","maxHeight","isValidImage","canvas","resizeDefaultImageType","resizePreference","drawImage","toDataURL","resizeQuality","dump","insert","msgImageResizeError","msgImageResizeException","_showProgress","_initBrowse","$tmpZone","$tar","parents","blur","msgValidationError","msgNo","msgValidationErrorClass","msgValidationErrorIcon","attribs","_renderMain","theme","readonly","tabIndexConfig","dropCss","showClose","previewClass","captionClass","mainClass","_renderButton","btnType","showCancel","showPause","buttonLabelClass","msgUploadBegin","rem","drg","upl","tInd","previewThumbTags","showUpl","showDwn","showDel","disabled","dFile","btnZoom","btnDrag","btnDelete","btnUpload","btnDownload","otherButtons","otherActionButtons","focusCaptionOnBrowse","_setLoading","tfiles","initCount","isDragDrop","isSingleUpl","maxCount","maxTotCount","inclAll","flagSingle","mesg","p1","p2","maxCountCheck","m","all","msgTotalFilesTooMany","msgFilesTooMany","autoReplace","abortData","abortMessage","_resetFileStack","cnt","required","msgFileRequired","_canPreview","allowedTypes","allowedMimes","allowedExts","mimes","allowedPreviewMimeTypes","exts","allowedPreviewExtensions","dTypes","disabledPreviewTypes","dMimes","disabledPreviewMimeTypes","dExts","disabledPreviewExtensions","maxSize","maxFilePreviewSize","expAllExt","expDisExt","addToStack","getFilesSize","$cap","readFile","$status","msgLoading","msgProgress","fileTypes","allowedFileTypes","typLen","fileExt","allowedFileExtensions","strExt","fSizeKB","typ1","typ2","canLoad","isImage","txtFlag","fnImage","fileExtExpr","previewData","strTypes","fileReaderAborted","knownTypes","processFileLoaded","isImageResized","msgFileTypes","msgInvalidFileName","msgDuplicateFile","maxFileSize","msgSizeTooLarge","minFileSize","msgSizeTooSmall","msgInvalidFileType","msgInvalidFileExtension","extensions","onerror","onload","hex","uint","byte","readImage","newReader","theFileNew","enable","readAsDataURL","onprogress","fact","readAsArrayBuffer","selectMode","resume","msgUploadResume","clipboardData","msgPaused","focusCaptionOnClear","totLen","hasExtraData","msgUploadEmpty","removeData","refresh","frameId","getExif","cssFilter","$frames","getPreview","fileinput","option","retvals","opt","l","lang","language","en","IFRAME_ATTRIBS","defBtnCss2","ua","webkit","toggleheader","fullscreen","borderless","browseIcon","browseClass","cancelIcon","cancelClass","pauseIcon","pauseClass","queueDelay","minImageWidth","minImageHeight","progressThumbClass","previewFileType","elCaptionContainer","elCaptionText","elPreviewContainer","elPreviewImage","elPreviewStatus","elErrorContainer","textEncoding","isIE11","MSInputMethodContext","documentMode","browse","browseLabel","removeLabel","cancelLabel","cancelTitle","pauseLabel","pauseTitle","uploadLabel","msgImageWidthSmall","msgImageHeightSmall","msgImageWidthLarge","msgImageHeightLarge","Constructor","ready","$input","exports","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_createClass","protoProps","staticProps","_extends","assign","source","_inheritsLoose","subClass","superClass","__proto__","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","getSpecialTransitionEndEvent","bindType","delegateType","handleObj","handler","transitionEndEmulator","duration","_this","called","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","special","getUID","prefix","getElementById","getSelectorFromElement","getAttribute","hrefAttr","querySelector","_","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","property","expectedTypes","valueType","Error","toUpperCase","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","TypeError","version","jquery","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","detach","_jQueryInterface","_handleDismiss","alertInstance","noConflict","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE","SELECTOR_BUTTON","EVENT_CLICK_DATA_API$1","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","checked","classList","contains","activeElement","hasAttribute","setAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","buttons","querySelectorAll","_i","_len","_button","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$2","JQUERY_NO_CONFLICT$2","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$1","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","_updateInterval","visibilityState","bind","to","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","start","pointerType","clientX","touches","end","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API$3","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","complete","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$2","offset","flip","boundary","reference","display","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","update","scheduleUpdate","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$5","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE$1","Default$3","DefaultType$3","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$5","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","className","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","rect","left","right","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","area","br","col","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","attributes","whitelistedAttributes","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","container","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HOVER_STATE_SHOW","HOVER_STATE_OUT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","empty","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$5","SELECTOR_TITLE","SELECTOR_CONTENT","Event$1","Popover","_Tooltip","_getContent","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$6","JQUERY_NO_CONFLICT$8","Default$6","method","DefaultType$6","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$2","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","top","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","node","scrollSpys","$spy","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$7","JQUERY_NO_CONFLICT$9","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK_DATA_API$6","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE$3","CLASS_NAME_DISABLED$1","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$6","SELECTOR_DROPDOWN$1","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_ACTIVE$2","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE$4","SELECTOR_DROPDOWN_TOGGLE$1","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","CLASS_NAME_FADE$5","CLASS_NAME_HIDE","CLASS_NAME_SHOW$7","CLASS_NAME_SHOWING","DefaultType$7","autohide","Default$7","SELECTOR_DATA_DISMISS$1","Toast","_clearTimeout","_close","Scrollspy","isBrowser","timeoutDuration","longerTimeoutBrowsers","scheduled","functionToCheck","getStyleComputedProperty","defaultView","getComputedStyle","getParentNode","host","getScrollParent","_getStyleComputedProp","overflow","overflowX","getReferenceNode","referenceNode","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","subtract","scrollLeft","modifier","bottom","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","defineProperties","getClientRect","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","findIndex","cur","warn","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","removeEventListener","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","mergeWithPrevious","reduce","toValue","index2","Defaults","shiftvariation","_data$offsets","isVertical","shiftOffsets","transformProp","popperStyles","priority","primary","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","requestAnimationFrame","Utils","g","PopperUtils"],"mappings":"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","file":"js/581-a13cc417fcccfdf57e35.js","sourcesContent":["/*!\r\n * bootstrap-fileinput v5.2.2\r\n * http://plugins.krajee.com/file-input\r\n *\r\n * Author: Kartik Visweswaran\r\n * Copyright: 2014 - 2021, Kartik Visweswaran, Krajee.com\r\n *\r\n * Licensed under the BSD-3-Clause\r\n * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md\r\n */\r\n(function (factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else {\r\n if (typeof module === 'object' && module.exports) {\r\n //noinspection NpmUsedModulesInstalled\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n factory(window.jQuery);\r\n }\r\n }\r\n}(function ($) {\r\n 'use strict';\r\n $.fn.fileinputLocales = {};\r\n $.fn.fileinputThemes = {};\r\n if (!$.fn.fileinputBsVersion) {\r\n $.fn.fileinputBsVersion = (window.Alert && window.Alert.VERSION) ||\r\n (window.bootstrap && window.bootstrap.Alert && bootstrap.Alert.VERSION) || '3.x.x';\r\n }\r\n String.prototype.setTokens = function (replacePairs) {\r\n var str = this.toString(), key, re;\r\n for (key in replacePairs) {\r\n if (replacePairs.hasOwnProperty(key)) {\r\n re = new RegExp('\\{' + key + '\\}', 'g');\r\n str = str.replace(re, replacePairs[key]);\r\n }\r\n }\r\n return str;\r\n };\r\n\r\n if (!Array.prototype.flatMap) { // polyfill flatMap\r\n Array.prototype.flatMap = function (lambda) {\r\n return [].concat(this.map(lambda));\r\n };\r\n }\r\n\r\n var $h, FileInput;\r\n\r\n // fileinput helper object for all global variables and internal helper methods\r\n $h = {\r\n FRAMES: '.kv-preview-thumb',\r\n SORT_CSS: 'file-sortable',\r\n INIT_FLAG: 'init-',\r\n OBJECT_PARAMS: '\\n' +\r\n '\\n' +\r\n '\\n' +\r\n '\\n' +\r\n '\\n' +\r\n '\\n',\r\n DEFAULT_PREVIEW: '
\\n' +\r\n '{previewFileIcon}\\n' +\r\n '
',\r\n MODAL_ID: 'kvFileinputModal',\r\n MODAL_EVENTS: ['show', 'shown', 'hide', 'hidden', 'loaded'],\r\n logMessages: {\r\n ajaxError: '{status}: {error}. Error Details: {text}.',\r\n badDroppedFiles: 'Error scanning dropped files!',\r\n badExifParser: 'Error loading the piexif.js library. {details}',\r\n badInputType: 'The input \"type\" must be set to \"file\" for initializing the \"bootstrap-fileinput\" plugin.',\r\n exifWarning: 'To avoid this warning, either set \"autoOrientImage\" to \"false\" OR ensure you have loaded ' +\r\n 'the \"piexif.js\" library correctly on your page before the \"fileinput.js\" script.',\r\n invalidChunkSize: 'Invalid upload chunk size: \"{chunkSize}\". Resumable uploads are disabled.',\r\n invalidThumb: 'Invalid thumb frame with id: \"{id}\".',\r\n noResumableSupport: 'The browser does not support resumable or chunk uploads.',\r\n noUploadUrl: 'The \"uploadUrl\" is not set. Ajax uploads and resumable uploads have been disabled.',\r\n retryStatus: 'Retrying upload for chunk # {chunk} for {filename}... retry # {retry}.',\r\n chunkQueueError: 'Could not push task to ajax pool for chunk index # {index}.',\r\n resumableMaxRetriesReached: 'Maximum resumable ajax retries ({n}) reached.',\r\n resumableRetryError: 'Could not retry the resumable request (try # {n})... aborting.',\r\n resumableAborting: 'Aborting / cancelling the resumable request.',\r\n resumableRequestError: 'Error processing resumable request. {msg}'\r\n\r\n },\r\n objUrl: window.URL || window.webkitURL,\r\n isBs: function (ver) {\r\n var chk = $.trim(($.fn.fileinputBsVersion || '') + '');\r\n ver = parseInt(ver, 10);\r\n if (!chk) {\r\n return ver === 4;\r\n }\r\n return ver === parseInt(chk.charAt(0), 10);\r\n\r\n },\r\n defaultButtonCss: function (fill) {\r\n return 'btn-default btn-' + (fill ? '' : 'outline-') + 'secondary';\r\n },\r\n now: function () {\r\n return new Date().getTime();\r\n },\r\n round: function (num) {\r\n num = parseFloat(num);\r\n return isNaN(num) ? 0 : Math.floor(Math.round(num));\r\n },\r\n getArray: function (obj) {\r\n var i, arr = [], len = obj && obj.length || 0;\r\n for (i = 0; i < len; i++) {\r\n arr.push(obj[i]);\r\n }\r\n return arr;\r\n },\r\n getFileRelativePath: function (file) {\r\n /** @namespace file.relativePath */\r\n /** @namespace file.webkitRelativePath */\r\n return String(file.newPath || file.relativePath || file.webkitRelativePath || $h.getFileName(file) || null);\r\n\r\n },\r\n getFileId: function (file, generateFileId) {\r\n var relativePath = $h.getFileRelativePath(file);\r\n if (typeof generateFileId === 'function') {\r\n return generateFileId(file);\r\n }\r\n if (!file) {\r\n return null;\r\n }\r\n if (!relativePath) {\r\n return null;\r\n }\r\n return (file.size + '_' + encodeURIComponent(relativePath).replace(/%/g, '_'));\r\n },\r\n getFrameSelector: function (id, selector) {\r\n selector = selector || '';\r\n return '[id=\"' + id + '\"]' + selector;\r\n },\r\n getZoomSelector: function (id, selector) {\r\n return $h.getFrameSelector('zoom-' + id, selector);\r\n },\r\n getFrameElement: function ($element, id, selector) {\r\n return $element.find($h.getFrameSelector(id, selector));\r\n },\r\n getZoomElement: function ($element, id, selector) {\r\n return $element.find($h.getZoomSelector(id, selector));\r\n },\r\n getElapsed: function (seconds) {\r\n var delta = seconds, out = '', result = {}, structure = {\r\n year: 31536000,\r\n month: 2592000,\r\n week: 604800, // uncomment row to ignore\r\n day: 86400, // feel free to add your own row\r\n hour: 3600,\r\n minute: 60,\r\n second: 1\r\n };\r\n $h.getObjectKeys(structure).forEach(function (key) {\r\n result[key] = Math.floor(delta / structure[key]);\r\n delta -= result[key] * structure[key];\r\n });\r\n $.each(result, function (key, value) {\r\n if (value > 0) {\r\n out += (out ? ' ' : '') + value + key.substring(0, 1);\r\n }\r\n });\r\n return out;\r\n },\r\n debounce: function (func, delay) {\r\n var inDebounce;\r\n return function () {\r\n var args = arguments, context = this;\r\n clearTimeout(inDebounce);\r\n inDebounce = setTimeout(function () {\r\n func.apply(context, args);\r\n }, delay);\r\n };\r\n },\r\n stopEvent: function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n },\r\n getFileName: function (file) {\r\n /** @namespace file.fileName */\r\n return file ? (file.fileName || file.name || '') : ''; // some confusion in different versions of Firefox\r\n },\r\n createObjectURL: function (data) {\r\n if ($h.objUrl && $h.objUrl.createObjectURL && data) {\r\n return $h.objUrl.createObjectURL(data);\r\n }\r\n return '';\r\n },\r\n revokeObjectURL: function (data) {\r\n if ($h.objUrl && $h.objUrl.revokeObjectURL && data) {\r\n $h.objUrl.revokeObjectURL(data);\r\n }\r\n },\r\n compare: function (input, str, exact) {\r\n return input !== undefined && (exact ? input === str : input.match(str));\r\n },\r\n isIE: function (ver) {\r\n var div, status;\r\n // check for IE versions < 11\r\n if (navigator.appName !== 'Microsoft Internet Explorer') {\r\n return false;\r\n }\r\n if (ver === 10) {\r\n return new RegExp('msie\\\\s' + ver, 'i').test(navigator.userAgent);\r\n }\r\n div = document.createElement('div');\r\n div.innerHTML = '';\r\n status = div.getElementsByTagName('i').length;\r\n document.body.appendChild(div);\r\n div.parentNode.removeChild(div);\r\n return status;\r\n },\r\n canOrientImage: function ($el) {\r\n var $img = $(document.createElement('img')).css({width: '1px', height: '1px'}).insertAfter($el),\r\n flag = $img.css('image-orientation');\r\n $img.remove();\r\n return !!flag;\r\n },\r\n canAssignFilesToInput: function () {\r\n var input = document.createElement('input');\r\n try {\r\n input.type = 'file';\r\n input.files = null;\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n },\r\n getDragDropFolders: function (items) {\r\n var i, item, len = items ? items.length : 0, folders = 0;\r\n if (len > 0 && items[0].webkitGetAsEntry()) {\r\n for (i = 0; i < len; i++) {\r\n item = items[i].webkitGetAsEntry();\r\n if (item && item.isDirectory) {\r\n folders++;\r\n }\r\n }\r\n }\r\n return folders;\r\n },\r\n initModal: function ($modal) {\r\n var $body = $('body');\r\n if ($body.length) {\r\n $modal.appendTo($body);\r\n }\r\n },\r\n isFunction: function (v) {\r\n return typeof v === 'function';\r\n },\r\n isEmpty: function (value, trim) {\r\n if (value === undefined || value === null || value === '') {\r\n return true;\r\n }\r\n if ($h.isString(value) && trim) {\r\n return $.trim(value) === '';\r\n }\r\n if ($h.isArray(value)) {\r\n return value.length === 0;\r\n }\r\n if ($.isPlainObject(value) && $.isEmptyObject(value)) {\r\n return true\r\n }\r\n return false;\r\n },\r\n isArray: function (a) {\r\n return Array.isArray(a) || Object.prototype.toString.call(a) === '[object Array]';\r\n },\r\n isString: function (a) {\r\n return Object.prototype.toString.call(a) === '[object String]';\r\n },\r\n ifSet: function (needle, haystack, def) {\r\n def = def || '';\r\n return (haystack && typeof haystack === 'object' && needle in haystack) ? haystack[needle] : def;\r\n },\r\n cleanArray: function (arr) {\r\n if (!(arr instanceof Array)) {\r\n arr = [];\r\n }\r\n return arr.filter(function (e) {\r\n return (e !== undefined && e !== null);\r\n });\r\n },\r\n spliceArray: function (arr, index, reverseOrder) {\r\n var i, j = 0, out = [], newArr;\r\n if (!(arr instanceof Array)) {\r\n return [];\r\n }\r\n newArr = $.extend(true, [], arr);\r\n if (reverseOrder) {\r\n newArr.reverse();\r\n }\r\n for (i = 0; i < newArr.length; i++) {\r\n if (i !== index) {\r\n out[j] = newArr[i];\r\n j++;\r\n }\r\n }\r\n if (reverseOrder) {\r\n out.reverse();\r\n }\r\n return out;\r\n },\r\n getNum: function (num, def) {\r\n def = def || 0;\r\n if (typeof num === 'number') {\r\n return num;\r\n }\r\n if (typeof num === 'string') {\r\n num = parseFloat(num);\r\n }\r\n return isNaN(num) ? def : num;\r\n },\r\n hasFileAPISupport: function () {\r\n return !!(window.File && window.FileReader);\r\n },\r\n hasDragDropSupport: function () {\r\n var div = document.createElement('div');\r\n /** @namespace div.draggable */\r\n /** @namespace div.ondragstart */\r\n /** @namespace div.ondrop */\r\n return !$h.isIE(9) &&\r\n (div.draggable !== undefined || (div.ondragstart !== undefined && div.ondrop !== undefined));\r\n },\r\n hasFileUploadSupport: function () {\r\n return $h.hasFileAPISupport() && window.FormData;\r\n },\r\n hasBlobSupport: function () {\r\n try {\r\n return !!window.Blob && Boolean(new Blob());\r\n } catch (e) {\r\n return false;\r\n }\r\n },\r\n hasArrayBufferViewSupport: function () {\r\n try {\r\n return new Blob([new Uint8Array(100)]).size === 100;\r\n } catch (e) {\r\n return false;\r\n }\r\n },\r\n hasResumableUploadSupport: function () {\r\n /** @namespace Blob.prototype.webkitSlice */\r\n /** @namespace Blob.prototype.mozSlice */\r\n return $h.hasFileUploadSupport() && $h.hasBlobSupport() && $h.hasArrayBufferViewSupport() &&\r\n (!!Blob.prototype.webkitSlice || !!Blob.prototype.mozSlice || !!Blob.prototype.slice || false);\r\n },\r\n dataURI2Blob: function (dataURI) {\r\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder ||\r\n window.MSBlobBuilder, canBlob = $h.hasBlobSupport(), byteStr, arrayBuffer, intArray, i, mimeStr, bb,\r\n canProceed = (canBlob || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array;\r\n if (!canProceed) {\r\n return null;\r\n }\r\n if (dataURI.split(',')[0].indexOf('base64') >= 0) {\r\n byteStr = atob(dataURI.split(',')[1]);\r\n } else {\r\n byteStr = decodeURIComponent(dataURI.split(',')[1]);\r\n }\r\n arrayBuffer = new ArrayBuffer(byteStr.length);\r\n intArray = new Uint8Array(arrayBuffer);\r\n for (i = 0; i < byteStr.length; i += 1) {\r\n intArray[i] = byteStr.charCodeAt(i);\r\n }\r\n mimeStr = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n if (canBlob) {\r\n return new Blob([$h.hasArrayBufferViewSupport() ? intArray : arrayBuffer], {type: mimeStr});\r\n }\r\n bb = new BlobBuilder();\r\n bb.append(arrayBuffer);\r\n return bb.getBlob(mimeStr);\r\n },\r\n arrayBuffer2String: function (buffer) {\r\n if (window.TextDecoder) {\r\n return new TextDecoder('utf-8').decode(buffer);\r\n }\r\n var array = Array.prototype.slice.apply(new Uint8Array(buffer)), out = '', i = 0, len, c, char2, char3;\r\n len = array.length;\r\n while (i < len) {\r\n c = array[i++];\r\n switch (c >> 4) { // jshint ignore:line\r\n case 0:\r\n case 1:\r\n case 2:\r\n case 3:\r\n case 4:\r\n case 5:\r\n case 6:\r\n case 7:\r\n // 0xxxxxxx\r\n out += String.fromCharCode(c);\r\n break;\r\n case 12:\r\n case 13:\r\n // 110x xxxx 10xx xxxx\r\n char2 = array[i++];\r\n out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F)); // jshint ignore:line\r\n break;\r\n case 14:\r\n // 1110 xxxx 10xx xxxx 10xx xxxx\r\n char2 = array[i++];\r\n char3 = array[i++];\r\n out += String.fromCharCode(((c & 0x0F) << 12) | // jshint ignore:line\r\n ((char2 & 0x3F) << 6) | // jshint ignore:line\r\n ((char3 & 0x3F) << 0)); // jshint ignore:line\r\n break;\r\n }\r\n }\r\n return out;\r\n },\r\n isHtml: function (str) {\r\n var a = document.createElement('div');\r\n a.innerHTML = str;\r\n for (var c = a.childNodes, i = c.length; i--;) {\r\n if (c[i].nodeType === 1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n isSvg: function (str) {\r\n return str.match(/^\\s*<\\?xml/i) && (str.match(/' + str + ''));\r\n },\r\n uniqId: function () {\r\n return (new Date().getTime() + Math.floor(Math.random() * Math.pow(10, 15))).toString(36);\r\n },\r\n cspBuffer: {\r\n CSP_ATTRIB: 'data-csp-01928735', // a randomly named temporary attribute to store the CSP elem id\r\n domElementsStyles: {},\r\n stash: function (htmlString) {\r\n var self = this, outerDom = $.parseHTML('
' + htmlString + '
'), $el = $(outerDom);\r\n $el.find('[style]').each(function (key, elem) {\r\n var $elem = $(elem), styleDeclaration = $elem[0].style, id = $h.uniqId(), styles = {};\r\n if (styleDeclaration && styleDeclaration.length) {\r\n $(styleDeclaration).each(function () {\r\n styles[this] = styleDeclaration[this];\r\n });\r\n self.domElementsStyles[id] = styles;\r\n $elem.removeAttr('style').attr(self.CSP_ATTRIB, id);\r\n }\r\n });\r\n $el.filter('*').removeAttr('style'); // make sure all style attr are removed\r\n var values = Object.values ? Object.values(outerDom) : Object.keys(outerDom).map(function (itm) {\r\n return outerDom[itm];\r\n });\r\n return values.flatMap(function (elem) {\r\n return elem.innerHTML;\r\n }).join('');\r\n },\r\n apply: function (domElement) {\r\n var self = this, $el = $(domElement);\r\n $el.find('[' + self.CSP_ATTRIB + ']').each(function (key, elem) {\r\n var $elem = $(elem), id = $elem.attr(self.CSP_ATTRIB), styles = self.domElementsStyles[id];\r\n if (styles) {\r\n $elem.css(styles);\r\n }\r\n $elem.removeAttr(self.CSP_ATTRIB);\r\n });\r\n self.domElementsStyles = {};\r\n }\r\n },\r\n setHtml: function ($elem, htmlString) {\r\n var buf = $h.cspBuffer;\r\n $elem.html(buf.stash(htmlString));\r\n buf.apply($elem);\r\n return $elem;\r\n },\r\n htmlEncode: function (str, undefVal) {\r\n if (str === undefined) {\r\n return undefVal || null;\r\n }\r\n return str.replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n },\r\n replaceTags: function (str, tags) {\r\n var out = str;\r\n if (!tags) {\r\n return out;\r\n }\r\n $.each(tags, function (key, value) {\r\n if (typeof value === 'function') {\r\n value = value();\r\n }\r\n out = out.split(key).join(value);\r\n });\r\n return out;\r\n },\r\n cleanMemory: function ($thumb) {\r\n var data = $thumb.is('img') ? $thumb.attr('src') : $thumb.find('source').attr('src');\r\n $h.revokeObjectURL(data);\r\n },\r\n findFileName: function (filePath) {\r\n var sepIndex = filePath.lastIndexOf('/');\r\n if (sepIndex === -1) {\r\n sepIndex = filePath.lastIndexOf('\\\\');\r\n }\r\n return filePath.split(filePath.substring(sepIndex, sepIndex + 1)).pop();\r\n },\r\n checkFullScreen: function () {\r\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement ||\r\n document.msFullscreenElement;\r\n },\r\n toggleFullScreen: function (maximize) {\r\n var doc = document, de = doc.documentElement, isFullScreen = $h.checkFullScreen();\r\n if (de && maximize && !isFullScreen) {\r\n if (de.requestFullscreen) {\r\n de.requestFullscreen();\r\n } else {\r\n if (de.msRequestFullscreen) {\r\n de.msRequestFullscreen();\r\n } else {\r\n if (de.mozRequestFullScreen) {\r\n de.mozRequestFullScreen();\r\n } else {\r\n if (de.webkitRequestFullscreen) {\r\n de.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (isFullScreen) {\r\n if (doc.exitFullscreen) {\r\n doc.exitFullscreen();\r\n } else {\r\n if (doc.msExitFullscreen) {\r\n doc.msExitFullscreen();\r\n } else {\r\n if (doc.mozCancelFullScreen) {\r\n doc.mozCancelFullScreen();\r\n } else {\r\n if (doc.webkitExitFullscreen) {\r\n doc.webkitExitFullscreen();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n moveArray: function (arr, oldIndex, newIndex, reverseOrder) {\r\n var newArr = $.extend(true, [], arr);\r\n if (reverseOrder) {\r\n newArr.reverse();\r\n }\r\n if (newIndex >= newArr.length) {\r\n var k = newIndex - newArr.length;\r\n while ((k--) + 1) {\r\n newArr.push(undefined);\r\n }\r\n }\r\n newArr.splice(newIndex, 0, newArr.splice(oldIndex, 1)[0]);\r\n if (reverseOrder) {\r\n newArr.reverse();\r\n }\r\n return newArr;\r\n },\r\n closeButton: function (css) {\r\n css = ($h.isBs(5) ? 'btn-close' : 'close') + (css ? ' ' + css : '');\r\n return '';\r\n },\r\n getRotation: function (value) {\r\n switch (value) {\r\n case 2:\r\n return 'rotateY(180deg)';\r\n case 3:\r\n return 'rotate(180deg)';\r\n case 4:\r\n return 'rotate(180deg) rotateY(180deg)';\r\n case 5:\r\n return 'rotate(270deg) rotateY(180deg)';\r\n case 6:\r\n return 'rotate(90deg)';\r\n case 7:\r\n return 'rotate(90deg) rotateY(180deg)';\r\n case 8:\r\n return 'rotate(270deg)';\r\n default:\r\n return '';\r\n }\r\n },\r\n setTransform: function (el, val) {\r\n if (!el) {\r\n return;\r\n }\r\n el.style.transform = val;\r\n el.style.webkitTransform = val;\r\n el.style['-moz-transform'] = val;\r\n el.style['-ms-transform'] = val;\r\n el.style['-o-transform'] = val;\r\n },\r\n getObjectKeys: function (obj) {\r\n var keys = [];\r\n if (obj) {\r\n $.each(obj, function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n },\r\n getObjectSize: function (obj) {\r\n return $h.getObjectKeys(obj).length;\r\n },\r\n /**\r\n * Small dependency injection for the task manager\r\n * https://gist.github.com/fearphage/4341799\r\n */\r\n whenAll: function (array) {\r\n var s = [].slice, resolveValues = arguments.length === 1 && $h.isArray(array) ? array : s.call(arguments),\r\n deferred = $.Deferred(), i, failed = 0, value, length = resolveValues.length,\r\n remaining = length, rejectContexts, rejectValues, resolveContexts, updateFunc;\r\n rejectContexts = rejectValues = resolveContexts = Array(length);\r\n updateFunc = function (index, contexts, values) {\r\n return function () {\r\n if (values !== resolveValues) {\r\n failed++;\r\n }\r\n deferred.notifyWith(contexts[index] = this, values[index] = s.call(arguments));\r\n if (!(--remaining)) {\r\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\r\n }\r\n };\r\n };\r\n for (i = 0; i < length; i++) {\r\n if ((value = resolveValues[i]) && $.isFunction(value.promise)) {\r\n value.promise()\r\n .done(updateFunc(i, resolveContexts, resolveValues))\r\n .fail(updateFunc(i, rejectContexts, rejectValues));\r\n } else {\r\n deferred.notifyWith(this, value);\r\n --remaining;\r\n }\r\n }\r\n if (!remaining) {\r\n deferred.resolveWith(resolveContexts, resolveValues);\r\n }\r\n return deferred.promise();\r\n }\r\n };\r\n FileInput = function (element, options) {\r\n var self = this;\r\n self.$element = $(element);\r\n self.$parent = self.$element.parent();\r\n if (!self._validate()) {\r\n return;\r\n }\r\n self.isPreviewable = $h.hasFileAPISupport();\r\n self.isIE9 = $h.isIE(9);\r\n self.isIE10 = $h.isIE(10);\r\n if (self.isPreviewable || self.isIE9) {\r\n self._init(options);\r\n self._listen();\r\n }\r\n self.$element.removeClass('file-loading');\r\n };\r\n\r\n FileInput.prototype = {\r\n constructor: FileInput,\r\n _cleanup: function () {\r\n var self = this;\r\n self.reader = null;\r\n self.clearFileStack();\r\n self.fileBatchCompleted = true;\r\n self.isError = false;\r\n self.isDuplicateError = false;\r\n self.isPersistentError = false;\r\n self.cancelling = false;\r\n self.paused = false;\r\n self.lastProgress = 0;\r\n self._initAjax();\r\n },\r\n _isAborted: function () {\r\n var self = this;\r\n return self.cancelling || self.paused;\r\n },\r\n _initAjax: function () {\r\n var self = this, tm = self.taskManager = {\r\n pool: {},\r\n addPool: function (id) {\r\n return (tm.pool[id] = new tm.TasksPool(id));\r\n },\r\n getPool: function (id) {\r\n return tm.pool[id];\r\n },\r\n addTask: function (id, logic) { // add standalone task directly from task manager\r\n return new tm.Task(id, logic);\r\n },\r\n TasksPool: function (id) {\r\n var tp = this;\r\n tp.id = id;\r\n tp.cancelled = false;\r\n tp.cancelledDeferrer = $.Deferred();\r\n tp.tasks = {};\r\n tp.addTask = function (id, logic) {\r\n return (tp.tasks[id] = new tm.Task(id, logic));\r\n };\r\n tp.size = function () {\r\n return $h.getObjectSize(tp.tasks);\r\n };\r\n tp.run = function (maxThreads) {\r\n var i = 0, failed = false, task, tasksList = $h.getObjectKeys(tp.tasks).map(function (key) {\r\n return tp.tasks[key];\r\n }), tasksDone = [], deferred = $.Deferred(), enqueue, callback;\r\n\r\n if (tp.cancelled) {\r\n tp.cancelledDeferrer.resolve();\r\n return deferred.reject();\r\n }\r\n // if run all at once\r\n if (!maxThreads) {\r\n var tasksDeferredList = $h.getObjectKeys(tp.tasks).map(function (key) {\r\n return tp.tasks[key].deferred;\r\n });\r\n // when all are done\r\n $h.whenAll(tasksDeferredList).done(function () {\r\n var argv = $h.getArray(arguments);\r\n if (!tp.cancelled) {\r\n deferred.resolve.apply(null, argv);\r\n tp.cancelledDeferrer.reject();\r\n } else {\r\n deferred.reject.apply(null, argv);\r\n tp.cancelledDeferrer.resolve();\r\n }\r\n }).fail(function () {\r\n var argv = $h.getArray(arguments);\r\n deferred.reject.apply(null, argv);\r\n if (!tp.cancelled) {\r\n tp.cancelledDeferrer.reject();\r\n } else {\r\n tp.cancelledDeferrer.resolve();\r\n }\r\n });\r\n // run all tasks\r\n $.each(tp.tasks, function (id) {\r\n task = tp.tasks[id];\r\n task.run();\r\n });\r\n return deferred;\r\n }\r\n enqueue = function (task) {\r\n $.when(task.deferred)\r\n .fail(function () {\r\n failed = true;\r\n callback.apply(null, arguments);\r\n })\r\n .always(callback);\r\n };\r\n callback = function () {\r\n var argv = $h.getArray(arguments);\r\n // notify a task just ended\r\n deferred.notify(argv);\r\n tasksDone.push(argv);\r\n if (tp.cancelled) {\r\n deferred.reject.apply(null, tasksDone);\r\n tp.cancelledDeferrer.resolve();\r\n return;\r\n }\r\n if (tasksDone.length === tp.size()) {\r\n if (failed) {\r\n deferred.reject.apply(null, tasksDone);\r\n } else {\r\n deferred.resolve.apply(null, tasksDone);\r\n }\r\n }\r\n // if there are any tasks remaining\r\n if (tasksList.length) {\r\n task = tasksList.shift();\r\n enqueue(task);\r\n task.run();\r\n }\r\n };\r\n // run the first \"maxThreads\" tasks\r\n while (tasksList.length && i++ < maxThreads) {\r\n task = tasksList.shift();\r\n enqueue(task);\r\n task.run();\r\n }\r\n return deferred;\r\n };\r\n tp.cancel = function () {\r\n tp.cancelled = true;\r\n return tp.cancelledDeferrer;\r\n };\r\n },\r\n Task: function (id, logic) {\r\n var tk = this;\r\n tk.id = id;\r\n tk.deferred = $.Deferred();\r\n tk.logic = logic;\r\n tk.context = null;\r\n tk.run = function () {\r\n var argv = $h.getArray(arguments);\r\n argv.unshift(tk.deferred); // add deferrer as first argument\r\n logic.apply(tk.context, argv); // run task\r\n return tk.deferred; // return deferrer\r\n };\r\n tk.runWithContext = function (context) {\r\n tk.context = context;\r\n return tk.run();\r\n };\r\n }\r\n };\r\n self.ajaxQueue = [];\r\n self.ajaxRequests = [];\r\n self.ajaxAborted = false;\r\n },\r\n _init: function (options, refreshMode) {\r\n var self = this, f, $el = self.$element, $cont, t, tmp;\r\n self.options = options;\r\n self.canOrientImage = $h.canOrientImage($el);\r\n $.each(options, function (key, value) {\r\n switch (key) {\r\n case 'minFileCount':\r\n case 'maxFileCount':\r\n case 'maxTotalFileCount':\r\n case 'minFileSize':\r\n case 'maxFileSize':\r\n case 'maxFilePreviewSize':\r\n case 'resizeQuality':\r\n case 'resizeIfSizeMoreThan':\r\n case 'progressUploadThreshold':\r\n case 'initialPreviewCount':\r\n case 'zoomModalHeight':\r\n case 'minImageHeight':\r\n case 'maxImageHeight':\r\n case 'minImageWidth':\r\n case 'maxImageWidth':\r\n self[key] = $h.getNum(value);\r\n break;\r\n default:\r\n self[key] = value;\r\n break;\r\n }\r\n });\r\n if (self.errorCloseButton === undefined) {\r\n self.errorCloseButton = $h.closeButton('kv-error-close' + ($h.isBs(5) ? ' float-end' : ''));\r\n }\r\n if (self.maxTotalFileCount > 0 && self.maxTotalFileCount < self.maxFileCount) {\r\n self.maxTotalFileCount = self.maxFileCount;\r\n }\r\n if (self.rtl) { // swap buttons for rtl\r\n tmp = self.previewZoomButtonIcons.prev;\r\n self.previewZoomButtonIcons.prev = self.previewZoomButtonIcons.next;\r\n self.previewZoomButtonIcons.next = tmp;\r\n }\r\n // validate chunk threads to not exceed maxAjaxThreads\r\n if (!isNaN(self.maxAjaxThreads) && self.maxAjaxThreads < self.resumableUploadOptions.maxThreads) {\r\n self.resumableUploadOptions.maxThreads = self.maxAjaxThreads;\r\n }\r\n self._initFileManager();\r\n if (typeof self.autoOrientImage === 'function') {\r\n self.autoOrientImage = self.autoOrientImage();\r\n }\r\n if (typeof self.autoOrientImageInitial === 'function') {\r\n self.autoOrientImageInitial = self.autoOrientImageInitial();\r\n }\r\n if (!refreshMode) {\r\n self._cleanup();\r\n }\r\n self.duplicateErrors = [];\r\n self.$form = $el.closest('form');\r\n self._initTemplateDefaults();\r\n self.uploadFileAttr = !$h.isEmpty($el.attr('name')) ? $el.attr('name') : 'file_data';\r\n t = self._getLayoutTemplate('progress');\r\n self.progressTemplate = t.replace('{class}', self.progressClass);\r\n self.progressInfoTemplate = t.replace('{class}', self.progressInfoClass);\r\n self.progressPauseTemplate = t.replace('{class}', self.progressPauseClass);\r\n self.progressCompleteTemplate = t.replace('{class}', self.progressCompleteClass);\r\n self.progressErrorTemplate = t.replace('{class}', self.progressErrorClass);\r\n self.isDisabled = $el.attr('disabled') || $el.attr('readonly');\r\n if (self.isDisabled) {\r\n $el.attr('disabled', true);\r\n }\r\n self.isClickable = self.browseOnZoneClick && self.showPreview &&\r\n (self.dropZoneEnabled || !$h.isEmpty(self.defaultPreviewContent));\r\n self.isAjaxUpload = $h.hasFileUploadSupport() && !$h.isEmpty(self.uploadUrl);\r\n self.dropZoneEnabled = $h.hasDragDropSupport() && self.dropZoneEnabled;\r\n if (!self.isAjaxUpload) {\r\n self.dropZoneEnabled = self.dropZoneEnabled && $h.canAssignFilesToInput();\r\n }\r\n self.slug = typeof options.slugCallback === 'function' ? options.slugCallback : self._slugDefault;\r\n self.mainTemplate = self.showCaption ? self._getLayoutTemplate('main1') : self._getLayoutTemplate('main2');\r\n self.captionTemplate = self._getLayoutTemplate('caption');\r\n self.previewGenericTemplate = self._getPreviewTemplate('generic');\r\n if (!self.imageCanvas && self.resizeImage && (self.maxImageWidth || self.maxImageHeight)) {\r\n self.imageCanvas = document.createElement('canvas');\r\n self.imageCanvasContext = self.imageCanvas.getContext('2d');\r\n }\r\n if ($h.isEmpty($el.attr('id'))) {\r\n $el.attr('id', $h.uniqId());\r\n }\r\n self.namespace = '.fileinput_' + $el.attr('id').replace(/-/g, '_');\r\n if (self.$container === undefined) {\r\n self.$container = self._createContainer();\r\n } else {\r\n self._refreshContainer();\r\n }\r\n $cont = self.$container;\r\n self.$dropZone = $cont.find('.file-drop-zone');\r\n self.$progress = $cont.find('.kv-upload-progress');\r\n self.$btnUpload = $cont.find('.fileinput-upload');\r\n self.$captionContainer = $h.getElement(options, 'elCaptionContainer', $cont.find('.file-caption'));\r\n self.$caption = $h.getElement(options, 'elCaptionText', $cont.find('.file-caption-name'));\r\n if (!$h.isEmpty(self.msgPlaceholder)) {\r\n f = $el.attr('multiple') ? self.filePlural : self.fileSingle;\r\n self.$caption.attr('placeholder', self.msgPlaceholder.replace('{files}', f));\r\n }\r\n self.$captionIcon = self.$captionContainer.find('.file-caption-icon');\r\n self.$previewContainer = $h.getElement(options, 'elPreviewContainer', $cont.find('.file-preview'));\r\n self.$preview = $h.getElement(options, 'elPreviewImage', $cont.find('.file-preview-thumbnails'));\r\n self.$previewStatus = $h.getElement(options, 'elPreviewStatus', $cont.find('.file-preview-status'));\r\n self.$errorContainer = $h.getElement(options, 'elErrorContainer',\r\n self.$previewContainer.find('.kv-fileinput-error'));\r\n self._validateDisabled();\r\n if (!$h.isEmpty(self.msgErrorClass)) {\r\n $h.addCss(self.$errorContainer, self.msgErrorClass);\r\n }\r\n if (!refreshMode) {\r\n self._resetErrors();\r\n self.$errorContainer.hide();\r\n self.previewInitId = 'thumb-' + $el.attr('id');\r\n self._initPreviewCache();\r\n self._initPreview(true);\r\n self._initPreviewActions();\r\n if (self.$parent.hasClass('file-loading')) {\r\n self.$container.insertBefore(self.$parent);\r\n self.$parent.remove();\r\n }\r\n } else {\r\n if (!self._errorsExist()) {\r\n self.$errorContainer.hide();\r\n }\r\n }\r\n self._setFileDropZoneTitle();\r\n if ($el.attr('disabled')) {\r\n self.disable();\r\n }\r\n self._initZoom();\r\n if (self.hideThumbnailContent) {\r\n $h.addCss(self.$preview, 'hide-content');\r\n }\r\n },\r\n _initFileManager: function () {\r\n var self = this;\r\n self.uploadStartTime = $h.now();\r\n self.fileManager = {\r\n stack: {},\r\n filesProcessed: [],\r\n errors: [],\r\n loadedImages: {},\r\n totalImages: 0,\r\n totalFiles: null,\r\n totalSize: null,\r\n uploadedSize: 0,\r\n stats: {},\r\n bpsLog: [],\r\n bps: 0,\r\n initStats: function (id) {\r\n var data = {started: $h.now()};\r\n if (id) {\r\n self.fileManager.stats[id] = data;\r\n } else {\r\n self.fileManager.stats = data;\r\n }\r\n },\r\n getUploadStats: function (id, loaded, total) {\r\n var fm = self.fileManager,\r\n started = id ? fm.stats[id] && fm.stats[id].started || $h.now() : self.uploadStartTime,\r\n elapsed = ($h.now() - started) / 1000,\r\n speeds = ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'],\r\n bps = Math.ceil(elapsed ? loaded / elapsed : 0),\r\n pendingBytes = total - loaded, out, delay = fm.bpsLog.length ? self.bitrateUpdateDelay : 0;\r\n setTimeout(function () {\r\n var i, j = 0, n = 0, len, beg;\r\n fm.bpsLog.push(bps);\r\n fm.bpsLog.sort(function (a, b) {\r\n return a - b;\r\n });\r\n len = fm.bpsLog.length;\r\n beg = len > 10 ? len - 10 : Math.ceil(len / 2);\r\n for (i = len; i > beg; i--) {\r\n n = parseFloat(fm.bpsLog[i]);\r\n j++;\r\n }\r\n fm.bps = (j > 0 ? n / j : 0) * 64;\r\n }, delay);\r\n out = {\r\n fileId: id,\r\n started: started,\r\n elapsed: elapsed,\r\n loaded: loaded,\r\n total: total,\r\n bps: fm.bps,\r\n bitrate: self._getSize(fm.bps, speeds),\r\n pendingBytes: pendingBytes\r\n };\r\n if (id) {\r\n fm.stats[id] = out;\r\n } else {\r\n fm.stats = out;\r\n }\r\n return out;\r\n },\r\n exists: function (id) {\r\n return $.inArray(id, self.fileManager.getIdList()) !== -1;\r\n },\r\n count: function () {\r\n return self.fileManager.getIdList().length;\r\n },\r\n total: function () {\r\n var fm = self.fileManager;\r\n if (!fm.totalFiles) {\r\n fm.totalFiles = fm.count();\r\n }\r\n return fm.totalFiles;\r\n },\r\n getTotalSize: function () {\r\n var fm = self.fileManager;\r\n if (fm.totalSize) {\r\n return fm.totalSize;\r\n }\r\n fm.totalSize = 0;\r\n $.each(self.getFileStack(), function (id, f) {\r\n var size = parseFloat(f.size);\r\n fm.totalSize += isNaN(size) ? 0 : size;\r\n });\r\n return fm.totalSize;\r\n },\r\n add: function (file, id) {\r\n if (!id) {\r\n id = self.fileManager.getId(file);\r\n }\r\n if (!id) {\r\n return;\r\n }\r\n self.fileManager.stack[id] = {\r\n file: file,\r\n name: $h.getFileName(file),\r\n relativePath: $h.getFileRelativePath(file),\r\n size: file.size,\r\n nameFmt: self._getFileName(file, ''),\r\n sizeFmt: self._getSize(file.size)\r\n };\r\n },\r\n remove: function ($thumb) {\r\n var id = self._getThumbFileId($thumb);\r\n self.fileManager.removeFile(id);\r\n },\r\n removeFile: function (id) {\r\n var fm = self.fileManager;\r\n if (!id) {\r\n return;\r\n }\r\n delete fm.stack[id];\r\n delete fm.loadedImages[id];\r\n },\r\n move: function (idFrom, idTo) {\r\n var result = {}, stack = self.fileManager.stack;\r\n if (!idFrom && !idTo || idFrom === idTo) {\r\n return;\r\n }\r\n $.each(stack, function (k, v) {\r\n if (k !== idFrom) {\r\n result[k] = v;\r\n }\r\n if (k === idTo) {\r\n result[idFrom] = stack[idFrom];\r\n }\r\n });\r\n self.fileManager.stack = result;\r\n },\r\n list: function () {\r\n var files = [];\r\n $.each(self.getFileStack(), function (k, v) {\r\n if (v && v.file) {\r\n files.push(v.file);\r\n }\r\n });\r\n return files;\r\n },\r\n isPending: function (id) {\r\n return $.inArray(id, self.fileManager.filesProcessed) === -1 && self.fileManager.exists(id);\r\n },\r\n isProcessed: function () {\r\n var filesProcessed = true, fm = self.fileManager;\r\n $.each(self.getFileStack(), function (id) {\r\n if (fm.isPending(id)) {\r\n filesProcessed = false;\r\n }\r\n });\r\n return filesProcessed;\r\n },\r\n clear: function () {\r\n var fm = self.fileManager;\r\n self.isDuplicateError = false;\r\n self.isPersistentError = false;\r\n fm.totalFiles = null;\r\n fm.totalSize = null;\r\n fm.uploadedSize = 0;\r\n fm.stack = {};\r\n fm.errors = [];\r\n fm.filesProcessed = [];\r\n fm.stats = {};\r\n fm.bpsLog = [];\r\n fm.bps = 0;\r\n fm.clearImages();\r\n },\r\n clearImages: function () {\r\n self.fileManager.loadedImages = {};\r\n self.fileManager.totalImages = 0;\r\n },\r\n addImage: function (id, config) {\r\n self.fileManager.loadedImages[id] = config;\r\n },\r\n removeImage: function (id) {\r\n delete self.fileManager.loadedImages[id];\r\n },\r\n getImageIdList: function () {\r\n return $h.getObjectKeys(self.fileManager.loadedImages);\r\n },\r\n getImageCount: function () {\r\n return self.fileManager.getImageIdList().length;\r\n },\r\n getId: function (file) {\r\n return self._getFileId(file);\r\n },\r\n getIndex: function (id) {\r\n return self.fileManager.getIdList().indexOf(id);\r\n },\r\n getThumb: function (id) {\r\n var $thumb = null;\r\n self._getThumbs().each(function () {\r\n var $t = $(this);\r\n if (self._getThumbFileId($t) === id) {\r\n $thumb = $t;\r\n }\r\n });\r\n return $thumb;\r\n },\r\n getThumbIndex: function ($thumb) {\r\n var id = self._getThumbFileId($thumb);\r\n return self.fileManager.getIndex(id);\r\n },\r\n getIdList: function () {\r\n return $h.getObjectKeys(self.fileManager.stack);\r\n },\r\n getFile: function (id) {\r\n return self.fileManager.stack[id] || null;\r\n },\r\n getFileName: function (id, fmt) {\r\n var file = self.fileManager.getFile(id);\r\n if (!file) {\r\n return '';\r\n }\r\n return fmt ? (file.nameFmt || '') : file.name || '';\r\n },\r\n getFirstFile: function () {\r\n var ids = self.fileManager.getIdList(), id = ids && ids.length ? ids[0] : null;\r\n return self.fileManager.getFile(id);\r\n },\r\n setFile: function (id, file) {\r\n if (self.fileManager.getFile(id)) {\r\n self.fileManager.stack[id].file = file;\r\n } else {\r\n self.fileManager.add(file, id);\r\n }\r\n },\r\n setProcessed: function (id) {\r\n self.fileManager.filesProcessed.push(id);\r\n },\r\n getProgress: function () {\r\n var total = self.fileManager.total(), filesProcessed = self.fileManager.filesProcessed.length;\r\n if (!total) {\r\n return 0;\r\n }\r\n return Math.ceil(filesProcessed / total * 100);\r\n\r\n },\r\n setProgress: function (id, pct) {\r\n var f = self.fileManager.getFile(id);\r\n if (!isNaN(pct) && f) {\r\n f.progress = pct;\r\n }\r\n }\r\n };\r\n },\r\n _setUploadData: function (fd, config) {\r\n var self = this;\r\n $.each(config, function (key, value) {\r\n var param = self.uploadParamNames[key] || key;\r\n if ($h.isArray(value)) {\r\n fd.append(param, value[0], value[1]);\r\n } else {\r\n fd.append(param, value);\r\n }\r\n });\r\n },\r\n _initResumableUpload: function () {\r\n var self = this, opts = self.resumableUploadOptions, logs = $h.logMessages, rm, fm = self.fileManager;\r\n if (!self.enableResumableUpload) {\r\n return;\r\n }\r\n if (opts.fallback !== false && typeof opts.fallback !== 'function') {\r\n opts.fallback = function (s) {\r\n s._log(logs.noResumableSupport);\r\n s.enableResumableUpload = false;\r\n };\r\n }\r\n if (!$h.hasResumableUploadSupport() && opts.fallback !== false) {\r\n opts.fallback(self);\r\n return;\r\n }\r\n if (!self.uploadUrl && self.enableResumableUpload) {\r\n self._log(logs.noUploadUrl);\r\n self.enableResumableUpload = false;\r\n return;\r\n\r\n }\r\n opts.chunkSize = parseFloat(opts.chunkSize);\r\n if (opts.chunkSize <= 0 || isNaN(opts.chunkSize)) {\r\n self._log(logs.invalidChunkSize, {chunkSize: opts.chunkSize});\r\n self.enableResumableUpload = false;\r\n return;\r\n }\r\n rm = self.resumableManager = {\r\n init: function (id, f, index) {\r\n rm.logs = [];\r\n rm.stack = [];\r\n rm.error = '';\r\n rm.id = id;\r\n rm.file = f.file;\r\n rm.fileName = f.name;\r\n rm.fileIndex = index;\r\n rm.completed = false;\r\n rm.lastProgress = 0;\r\n if (self.showPreview) {\r\n rm.$thumb = fm.getThumb(id) || null;\r\n rm.$progress = rm.$btnDelete = null;\r\n if (rm.$thumb && rm.$thumb.length) {\r\n rm.$progress = rm.$thumb.find('.file-thumb-progress');\r\n rm.$btnDelete = rm.$thumb.find('.kv-file-remove');\r\n }\r\n }\r\n rm.chunkSize = opts.chunkSize * 1024;\r\n rm.chunkCount = rm.getTotalChunks();\r\n },\r\n setAjaxError: function (jqXHR, textStatus, errorThrown, isTest) {\r\n if (jqXHR.responseJSON && jqXHR.responseJSON.error) {\r\n errorThrown = jqXHR.responseJSON.error.toString();\r\n }\r\n if (!isTest) {\r\n rm.error = errorThrown;\r\n }\r\n if (opts.showErrorLog) {\r\n self._log(logs.ajaxError, {\r\n status: jqXHR.status,\r\n error: errorThrown,\r\n text: jqXHR.responseText || ''\r\n });\r\n }\r\n },\r\n reset: function () {\r\n rm.stack = [];\r\n rm.chunksProcessed = {};\r\n },\r\n setProcessed: function (status) {\r\n var id = rm.id, msg, $thumb = rm.$thumb, $prog = rm.$progress, hasThumb = $thumb && $thumb.length,\r\n params = {id: hasThumb ? $thumb.attr('id') : '', index: fm.getIndex(id), fileId: id}, tokens,\r\n skipErrorsAndProceed = self.resumableUploadOptions.skipErrorsAndProceed;\r\n rm.completed = true;\r\n rm.lastProgress = 0;\r\n if (hasThumb) {\r\n $thumb.removeClass('file-uploading');\r\n }\r\n if (status === 'success') {\r\n fm.uploadedSize += rm.file.size;\r\n if (self.showPreview) {\r\n self._setProgress(101, $prog);\r\n self._setThumbStatus($thumb, 'Success');\r\n self._initUploadSuccess(rm.chunksProcessed[id].data, $thumb);\r\n }\r\n fm.removeFile(id);\r\n delete rm.chunksProcessed[id];\r\n self._raise('fileuploaded', [params.id, params.index, params.fileId]);\r\n if (fm.isProcessed()) {\r\n self._setProgress(101);\r\n }\r\n } else {\r\n if (status !== 'cancel') {\r\n if (self.showPreview) {\r\n self._setThumbStatus($thumb, 'Error');\r\n self._setPreviewError($thumb, true);\r\n self._setProgress(101, $prog, self.msgProgressError);\r\n self._setProgress(101, self.$progress, self.msgProgressError);\r\n self.cancelling = !skipErrorsAndProceed;\r\n }\r\n if (!self.$errorContainer.find('li[data-file-id=\"' + params.fileId + '\"]').length) {\r\n tokens = {file: rm.fileName, max: opts.maxRetries, error: rm.error};\r\n msg = self.msgResumableUploadRetriesExceeded.setTokens(tokens);\r\n $.extend(params, tokens);\r\n self._showFileError(msg, params, 'filemaxretries');\r\n if (skipErrorsAndProceed) {\r\n fm.removeFile(id);\r\n delete rm.chunksProcessed[id];\r\n if (fm.isProcessed()) {\r\n self._setProgress(101);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (fm.isProcessed()) {\r\n rm.reset();\r\n }\r\n },\r\n check: function () {\r\n var status = true;\r\n $.each(rm.logs, function (index, value) {\r\n if (!value) {\r\n status = false;\r\n return false;\r\n }\r\n });\r\n },\r\n processedResumables: function () {\r\n var logs = rm.logs, i, count = 0;\r\n if (!logs || !logs.length) {\r\n return 0;\r\n }\r\n for (i = 0; i < logs.length; i++) {\r\n if (logs[i] === true) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n },\r\n getUploadedSize: function () {\r\n var size = rm.processedResumables() * rm.chunkSize;\r\n return size > rm.file.size ? rm.file.size : size;\r\n },\r\n getTotalChunks: function () {\r\n var chunkSize = parseFloat(rm.chunkSize);\r\n if (!isNaN(chunkSize) && chunkSize > 0) {\r\n return Math.ceil(rm.file.size / chunkSize);\r\n }\r\n return 0;\r\n },\r\n getProgress: function () {\r\n var chunksProcessed = rm.processedResumables(), total = rm.chunkCount;\r\n if (total === 0) {\r\n return 0;\r\n }\r\n return Math.ceil(chunksProcessed / total * 100);\r\n },\r\n checkAborted: function (intervalId) {\r\n if (self._isAborted()) {\r\n clearInterval(intervalId);\r\n self.unlock();\r\n }\r\n },\r\n upload: function () {\r\n var ids = fm.getIdList(), flag = 'new', intervalId;\r\n intervalId = setInterval(function () {\r\n var id;\r\n rm.checkAborted(intervalId);\r\n if (flag === 'new') {\r\n self.lock();\r\n flag = 'processing';\r\n id = ids.shift();\r\n fm.initStats(id);\r\n if (fm.stack[id]) {\r\n rm.init(id, fm.stack[id], fm.getIndex(id));\r\n rm.processUpload();\r\n }\r\n }\r\n if (!fm.isPending(id) && rm.completed) {\r\n flag = 'new';\r\n }\r\n if (fm.isProcessed()) {\r\n var $initThumbs = self.$preview.find('.file-preview-initial');\r\n if ($initThumbs.length) {\r\n $h.addCss($initThumbs, $h.SORT_CSS);\r\n self._initSortable();\r\n }\r\n clearInterval(intervalId);\r\n self._clearFileInput();\r\n self.unlock();\r\n setTimeout(function () {\r\n var data = self.previewCache.data;\r\n if (data) {\r\n self.initialPreview = data.content;\r\n self.initialPreviewConfig = data.config;\r\n self.initialPreviewThumbTags = data.tags;\r\n }\r\n self._raise('filebatchuploadcomplete', [\r\n self.initialPreview,\r\n self.initialPreviewConfig,\r\n self.initialPreviewThumbTags,\r\n self._getExtraData()\r\n ]);\r\n }, self.processDelay);\r\n }\r\n }, self.processDelay);\r\n },\r\n uploadResumable: function () {\r\n var i, pool, tm = self.taskManager, total = rm.chunkCount;\r\n pool = tm.addPool(rm.id);\r\n for (i = 0; i < total; i++) {\r\n rm.logs[i] = !!(rm.chunksProcessed[rm.id] && rm.chunksProcessed[rm.id][i]);\r\n if (!rm.logs[i]) {\r\n rm.pushAjax(i, 0);\r\n }\r\n }\r\n pool.run(opts.maxThreads)\r\n .done(function () {\r\n rm.setProcessed('success');\r\n })\r\n .fail(function () {\r\n rm.setProcessed(pool.cancelled ? 'cancel' : 'error');\r\n });\r\n },\r\n processUpload: function () {\r\n var fd, f, id = rm.id, fnBefore, fnSuccess, fnError, fnComplete, outData;\r\n if (!opts.testUrl) {\r\n rm.uploadResumable();\r\n return;\r\n }\r\n fd = new FormData();\r\n f = fm.stack[id];\r\n self._setUploadData(fd, {\r\n fileId: id,\r\n fileName: f.fileName,\r\n fileSize: f.size,\r\n fileRelativePath: f.relativePath,\r\n chunkSize: rm.chunkSize,\r\n chunkCount: rm.chunkCount\r\n });\r\n fnBefore = function (jqXHR) {\r\n outData = self._getOutData(fd, jqXHR);\r\n self._raise('filetestbeforesend', [id, fm, rm, outData]);\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n outData = self._getOutData(fd, jqXHR, data);\r\n var pNames = self.uploadParamNames, chunksUploaded = pNames.chunksUploaded || 'chunksUploaded',\r\n params = [id, fm, rm, outData];\r\n if (!data[chunksUploaded] || !$h.isArray(data[chunksUploaded])) {\r\n self._raise('filetesterror', params);\r\n } else {\r\n if (!rm.chunksProcessed[id]) {\r\n rm.chunksProcessed[id] = {};\r\n }\r\n $.each(data[chunksUploaded], function (key, index) {\r\n rm.logs[index] = true;\r\n rm.chunksProcessed[id][index] = true;\r\n });\r\n rm.chunksProcessed[id].data = data;\r\n self._raise('filetestsuccess', params);\r\n }\r\n rm.uploadResumable();\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n outData = self._getOutData(fd, jqXHR);\r\n self._raise('filetestajaxerror', [id, fm, rm, outData]);\r\n rm.setAjaxError(jqXHR, textStatus, errorThrown, true);\r\n rm.uploadResumable();\r\n };\r\n fnComplete = function () {\r\n self._raise('filetestcomplete', [id, fm, rm, self._getOutData(fd)]);\r\n };\r\n self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex, opts.testUrl);\r\n },\r\n pushAjax: function (index, retry) {\r\n var tm = self.taskManager, pool = tm.getPool(rm.id);\r\n pool.addTask(pool.size() + 1, function (deferrer) {\r\n // use fifo chunk stack\r\n var arr = rm.stack.shift(), index;\r\n index = arr[0];\r\n if (!rm.chunksProcessed[rm.id] || !rm.chunksProcessed[rm.id][index]) {\r\n rm.sendAjax(index, arr[1], deferrer);\r\n } else {\r\n self._log(logs.chunkQueueError, {index: index});\r\n }\r\n });\r\n rm.stack.push([index, retry]);\r\n },\r\n sendAjax: function (index, retry, deferrer) {\r\n var f, chunkSize = rm.chunkSize, id = rm.id, file = rm.file, $thumb = rm.$thumb,\r\n msgs = $h.logMessages, $btnDelete = rm.$btnDelete, logError = function (msg, tokens) {\r\n if (tokens) {\r\n msg = msg.setTokens(tokens);\r\n }\r\n msg = msgs.resumableRequestError.setTokens({msg: msg});\r\n self._log(msg);\r\n deferrer.reject(msg);\r\n };\r\n if (rm.chunksProcessed[id] && rm.chunksProcessed[id][index]) {\r\n return;\r\n }\r\n if (retry > opts.maxRetries) {\r\n logError(msgs.resumableMaxRetriesReached, {n: opts.maxRetries});\r\n rm.setProcessed('error');\r\n return;\r\n }\r\n var fd, outData, fnBefore, fnSuccess, fnError, fnComplete, slice = file.slice ? 'slice' :\r\n (file.mozSlice ? 'mozSlice' : (file.webkitSlice ? 'webkitSlice' : 'slice')),\r\n blob = file[slice](chunkSize * index, chunkSize * (index + 1));\r\n fd = new FormData();\r\n f = fm.stack[id];\r\n self._setUploadData(fd, {\r\n chunkCount: rm.chunkCount,\r\n chunkIndex: index,\r\n chunkSize: chunkSize,\r\n chunkSizeStart: chunkSize * index,\r\n fileBlob: [blob, rm.fileName],\r\n fileId: id,\r\n fileName: rm.fileName,\r\n fileRelativePath: f.relativePath,\r\n fileSize: file.size,\r\n retryCount: retry\r\n });\r\n if (rm.$progress && rm.$progress.length) {\r\n rm.$progress.show();\r\n }\r\n fnBefore = function (jqXHR) {\r\n outData = self._getOutData(fd, jqXHR);\r\n if (self.showPreview) {\r\n if (!$thumb.hasClass('file-preview-success')) {\r\n self._setThumbStatus($thumb, 'Loading');\r\n $h.addCss($thumb, 'file-uploading');\r\n }\r\n $btnDelete.attr('disabled', true);\r\n }\r\n self._raise('filechunkbeforesend', [id, index, retry, fm, rm, outData]);\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n if (self._isAborted()) {\r\n logError(msgs.resumableAborting);\r\n return;\r\n }\r\n outData = self._getOutData(fd, jqXHR, data);\r\n var paramNames = self.uploadParamNames, chunkIndex = paramNames.chunkIndex || 'chunkIndex',\r\n params = [id, index, retry, fm, rm, outData];\r\n if (data.error) {\r\n if (opts.showErrorLog) {\r\n self._log(logs.retryStatus, {\r\n retry: retry + 1,\r\n filename: rm.fileName,\r\n chunk: index\r\n });\r\n }\r\n self._raise('filechunkerror', params);\r\n rm.pushAjax(index, retry + 1);\r\n rm.error = data.error;\r\n logError(data.error);\r\n } else {\r\n rm.logs[data[chunkIndex]] = true;\r\n if (!rm.chunksProcessed[id]) {\r\n rm.chunksProcessed[id] = {};\r\n }\r\n rm.chunksProcessed[id][data[chunkIndex]] = true;\r\n rm.chunksProcessed[id].data = data;\r\n deferrer.resolve.call(null, data);\r\n self._raise('filechunksuccess', params);\r\n rm.check();\r\n }\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n if (self._isAborted()) {\r\n logError(msgs.resumableAborting);\r\n return;\r\n }\r\n outData = self._getOutData(fd, jqXHR);\r\n rm.setAjaxError(jqXHR, textStatus, errorThrown);\r\n self._raise('filechunkajaxerror', [id, index, retry, fm, rm, outData]);\r\n rm.pushAjax(index, retry + 1); // push another task\r\n logError(msgs.resumableRetryError, {n: retry - 1}); // resolve the current task\r\n };\r\n fnComplete = function () {\r\n if (!self._isAborted()) {\r\n self._raise('filechunkcomplete', [id, index, retry, fm, rm, self._getOutData(fd)]);\r\n }\r\n };\r\n self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, fd, id, rm.fileIndex);\r\n }\r\n };\r\n rm.reset();\r\n },\r\n _initTemplateDefaults: function () {\r\n var self = this, tMain1, tMain2, tPreview, tFileIcon, tClose, tCaption, tBtnDefault, tBtnLink, tBtnBrowse,\r\n tModalMain, tModal, tProgress, tSize, tFooter, tActions, tActionDelete, tActionUpload, tActionDownload,\r\n tActionZoom, tActionDrag, tIndicator, tTagBef, tTagBef1, tTagBef2, tTagAft, tGeneric, tHtml, tImage,\r\n tText, tOffice, tGdocs, tVideo, tAudio, tFlash, tObject, tPdf, tOther, tStyle, tZoomCache, vDefaultDim,\r\n tStats, tModalLabel, renderObject = function (type, mime) {\r\n return '\\n' + $h.DEFAULT_PREVIEW + '\\n\\n';\r\n }, defBtnCss1 = 'btn btn-sm btn-kv ' + $h.defaultButtonCss();\r\n tMain1 = '{preview}\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n ' \\n' +\r\n '
\\n' + '{caption}\\n' +\r\n ($h.isBs(5) ? '' : '
\\n') +\r\n ' {remove}\\n' +\r\n ' {cancel}\\n' +\r\n ' {pause}\\n' +\r\n ' {upload}\\n' +\r\n ' {browse}\\n' +\r\n ($h.isBs(5) ? '' : '
\\n') +\r\n '
'\r\n '
';\r\n tMain2 = '{preview}\\n
\\n
\\n' +\r\n '{remove}\\n{cancel}\\n{upload}\\n{browse}\\n';\r\n tPreview = '
\\n' +\r\n ' {close}' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
';\r\n tClose = $h.closeButton('fileinput-remove');\r\n tFileIcon = '';\r\n // noinspection HtmlUnknownAttribute\r\n tCaption = '\\n';\r\n //noinspection HtmlUnknownAttribute\r\n tBtnDefault = '';\r\n //noinspection HtmlUnknownTarget,HtmlUnknownAttribute\r\n tBtnLink = '{icon} {label}';\r\n //noinspection HtmlUnknownAttribute\r\n tBtnBrowse = '
{icon} {label}
';\r\n tModalLabel = $h.MODAL_ID + 'Label';\r\n tModalMain = '
';\r\n tModal = '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
{heading}
\\n' +\r\n ' \\n' +\r\n '
{toggleheader}{fullscreen}{borderless}{close}
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n' + '{prev} {next}\\n' +\r\n '
\\n' +\r\n '
\\n' +\r\n '
\\n';\r\n tProgress = '
\\n' +\r\n '
\\n' +\r\n ' {status}\\n' +\r\n '
\\n' +\r\n '
{stats}';\r\n tStats = '
' +\r\n '{pendingTime} ' +\r\n '{uploadSpeed}' +\r\n '
';\r\n tSize = ' ({sizeText})';\r\n tFooter = '
\\n' +\r\n ' \\n' +\r\n ' {progress}\\n{indicator}\\n{actions}\\n' +\r\n '
';\r\n tActions = '
\\n' +\r\n ' \\n' +\r\n '
\\n' +\r\n '{drag}\\n' +\r\n '
';\r\n //noinspection HtmlUnknownAttribute\r\n tActionDelete = '\\n';\r\n tActionUpload = '';\r\n tActionDownload = '{downloadIcon}';\r\n tActionZoom = '';\r\n tActionDrag = '{dragIcon}';\r\n tIndicator = '
{indicator}
';\r\n tTagBef = '
\\n';\r\n tTagBef2 = tTagBef + ' title=\"{caption}\">
\\n';\r\n tTagAft = '
{footer}\\n{zoomCache}
\\n';\r\n tGeneric = '{content}\\n';\r\n tStyle = ' {style}';\r\n tHtml = renderObject('html', 'text/html');\r\n tText = renderObject('text', 'text/plain;charset=UTF-8');\r\n tPdf = renderObject('pdf', 'application/pdf');\r\n tImage = '\"{alt}\"'\\n';\r\n tOffice = '';\r\n tGdocs = '';\r\n tVideo = '\\n';\r\n tAudio = '\\n';\r\n tFlash = '\\n';\r\n tObject = '\\n' + '\\n' +\r\n $h.OBJECT_PARAMS + ' ' + $h.DEFAULT_PREVIEW + '\\n\\n';\r\n tOther = '
\\n' + $h.DEFAULT_PREVIEW + '\\n
\\n';\r\n tZoomCache = '
{zoomContent}
';\r\n vDefaultDim = {width: '100%', height: '100%', 'min-height': '480px'};\r\n if (self._isPdfRendered()) {\r\n tPdf = self.pdfRendererTemplate.replace('{renderer}', self._encodeURI(self.pdfRendererUrl));\r\n }\r\n self.defaults = {\r\n layoutTemplates: {\r\n main1: tMain1,\r\n main2: tMain2,\r\n preview: tPreview,\r\n close: tClose,\r\n fileIcon: tFileIcon,\r\n caption: tCaption,\r\n modalMain: tModalMain,\r\n modal: tModal,\r\n progress: tProgress,\r\n stats: tStats,\r\n size: tSize,\r\n footer: tFooter,\r\n indicator: tIndicator,\r\n actions: tActions,\r\n actionDelete: tActionDelete,\r\n actionUpload: tActionUpload,\r\n actionDownload: tActionDownload,\r\n actionZoom: tActionZoom,\r\n actionDrag: tActionDrag,\r\n btnDefault: tBtnDefault,\r\n btnLink: tBtnLink,\r\n btnBrowse: tBtnBrowse,\r\n zoomCache: tZoomCache\r\n },\r\n previewMarkupTags: {\r\n tagBefore1: tTagBef1,\r\n tagBefore2: tTagBef2,\r\n tagAfter: tTagAft\r\n },\r\n previewContentTemplates: {\r\n generic: tGeneric,\r\n html: tHtml,\r\n image: tImage,\r\n text: tText,\r\n office: tOffice,\r\n gdocs: tGdocs,\r\n video: tVideo,\r\n audio: tAudio,\r\n flash: tFlash,\r\n object: tObject,\r\n pdf: tPdf,\r\n other: tOther\r\n },\r\n allowedPreviewTypes: ['image', 'html', 'text', 'video', 'audio', 'flash', 'pdf', 'object'],\r\n previewTemplates: {},\r\n previewSettings: {\r\n image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'},\r\n html: {width: '213px', height: '160px'},\r\n text: {width: '213px', height: '160px'},\r\n office: {width: '213px', height: '160px'},\r\n gdocs: {width: '213px', height: '160px'},\r\n video: {width: '213px', height: '160px'},\r\n audio: {width: '100%', height: '30px'},\r\n flash: {width: '213px', height: '160px'},\r\n object: {width: '213px', height: '160px'},\r\n pdf: {width: '100%', height: '160px', 'position': 'relative'},\r\n other: {width: '213px', height: '160px'}\r\n },\r\n previewSettingsSmall: {\r\n image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'},\r\n html: {width: '100%', height: '160px'},\r\n text: {width: '100%', height: '160px'},\r\n office: {width: '100%', height: '160px'},\r\n gdocs: {width: '100%', height: '160px'},\r\n video: {width: '100%', height: 'auto'},\r\n audio: {width: '100%', height: '30px'},\r\n flash: {width: '100%', height: 'auto'},\r\n object: {width: '100%', height: 'auto'},\r\n pdf: {width: '100%', height: '160px'},\r\n other: {width: '100%', height: '160px'}\r\n },\r\n previewZoomSettings: {\r\n image: {width: 'auto', height: 'auto', 'max-width': '100%', 'max-height': '100%'},\r\n html: vDefaultDim,\r\n text: vDefaultDim,\r\n office: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'},\r\n gdocs: {width: '100%', height: '100%', 'max-width': '100%', 'min-height': '480px'},\r\n video: {width: 'auto', height: '100%', 'max-width': '100%'},\r\n audio: {width: '100%', height: '30px'},\r\n flash: {width: 'auto', height: '480px'},\r\n object: {width: 'auto', height: '100%', 'max-width': '100%', 'min-height': '480px'},\r\n pdf: vDefaultDim,\r\n other: {width: 'auto', height: '100%', 'min-height': '480px'}\r\n },\r\n mimeTypeAliases: {\r\n 'video/quicktime': 'video/mp4'\r\n },\r\n fileTypeSettings: {\r\n image: function (vType, vName) {\r\n return ($h.compare(vType, 'image.*') && !$h.compare(vType, /(tiff?|wmf)$/i) ||\r\n $h.compare(vName, /\\.(gif|png|jpe?g)$/i));\r\n },\r\n html: function (vType, vName) {\r\n return $h.compare(vType, 'text/html') || $h.compare(vName, /\\.(htm|html)$/i);\r\n },\r\n office: function (vType, vName) {\r\n return $h.compare(vType, /(word|excel|powerpoint|office)$/i) ||\r\n $h.compare(vName, /\\.(docx?|xlsx?|pptx?|pps|potx?)$/i);\r\n },\r\n gdocs: function (vType, vName) {\r\n return $h.compare(vType, /(word|excel|powerpoint|office|iwork-pages|tiff?)$/i) ||\r\n $h.compare(vName,\r\n /\\.(docx?|xlsx?|pptx?|pps|potx?|rtf|ods|odt|pages|ai|dxf|ttf|tiff?|wmf|e?ps)$/i);\r\n },\r\n text: function (vType, vName) {\r\n return $h.compare(vType, 'text.*') || $h.compare(vName, /\\.(xml|javascript)$/i) ||\r\n $h.compare(vName, /\\.(txt|md|nfo|ini|json|php|js|css)$/i);\r\n },\r\n video: function (vType, vName) {\r\n return $h.compare(vType, 'video.*') && ($h.compare(vType, /(ogg|mp4|mp?g|mov|webm|3gp)$/i) ||\r\n $h.compare(vName, /\\.(og?|mp4|webm|mp?g|mov|3gp)$/i));\r\n },\r\n audio: function (vType, vName) {\r\n return $h.compare(vType, 'audio.*') && ($h.compare(vName, /(ogg|mp3|mp?g|wav)$/i) ||\r\n $h.compare(vName, /\\.(og?|mp3|mp?g|wav)$/i));\r\n },\r\n flash: function (vType, vName) {\r\n return $h.compare(vType, 'application/x-shockwave-flash', true) || $h.compare(vName,\r\n /\\.(swf)$/i);\r\n },\r\n pdf: function (vType, vName) {\r\n return $h.compare(vType, 'application/pdf', true) || $h.compare(vName, /\\.(pdf)$/i);\r\n },\r\n object: function () {\r\n return true;\r\n },\r\n other: function () {\r\n return true;\r\n }\r\n },\r\n fileActionSettings: {\r\n showRemove: true,\r\n showUpload: true,\r\n showDownload: true,\r\n showZoom: true,\r\n showDrag: true,\r\n removeIcon: '',\r\n removeClass: defBtnCss1,\r\n removeErrorClass: 'btn btn-sm btn-kv btn-danger',\r\n removeTitle: 'Remove file',\r\n uploadIcon: '',\r\n uploadClass: defBtnCss1,\r\n uploadTitle: 'Upload file',\r\n uploadRetryIcon: '',\r\n uploadRetryTitle: 'Retry upload',\r\n downloadIcon: '',\r\n downloadClass: defBtnCss1,\r\n downloadTitle: 'Download file',\r\n zoomIcon: '',\r\n zoomClass: defBtnCss1,\r\n zoomTitle: 'View Details',\r\n dragIcon: '',\r\n dragClass: 'text-primary',\r\n dragTitle: 'Move / Rearrange',\r\n dragSettings: {},\r\n indicatorNew: '',\r\n indicatorSuccess: '',\r\n indicatorError: '',\r\n indicatorLoading: '',\r\n indicatorPaused: '',\r\n indicatorNewTitle: 'Not uploaded yet',\r\n indicatorSuccessTitle: 'Uploaded',\r\n indicatorErrorTitle: 'Upload Error',\r\n indicatorLoadingTitle: 'Uploading …',\r\n indicatorPausedTitle: 'Upload Paused'\r\n }\r\n };\r\n $.each(self.defaults, function (key, setting) {\r\n if (key === 'allowedPreviewTypes') {\r\n if (self.allowedPreviewTypes === undefined) {\r\n self.allowedPreviewTypes = setting;\r\n }\r\n return;\r\n }\r\n self[key] = $.extend(true, {}, setting, self[key]);\r\n });\r\n self._initPreviewTemplates();\r\n },\r\n _initPreviewTemplates: function () {\r\n var self = this, tags = self.previewMarkupTags, tagBef, tagAft = tags.tagAfter;\r\n $.each(self.previewContentTemplates, function (key, value) {\r\n if ($h.isEmpty(self.previewTemplates[key])) {\r\n tagBef = tags.tagBefore2;\r\n if (key === 'generic' || key === 'image') {\r\n tagBef = tags.tagBefore1;\r\n }\r\n if (self._isPdfRendered() && key === 'pdf') {\r\n tagBef = tagBef.replace('kv-file-content', 'kv-file-content kv-pdf-rendered');\r\n }\r\n self.previewTemplates[key] = tagBef + value + tagAft;\r\n }\r\n });\r\n },\r\n _initPreviewCache: function () {\r\n var self = this;\r\n self.previewCache = {\r\n data: {},\r\n init: function () {\r\n var content = self.initialPreview;\r\n if (content.length > 0 && !$h.isArray(content)) {\r\n content = content.split(self.initialPreviewDelimiter);\r\n }\r\n self.previewCache.data = {\r\n content: content,\r\n config: self.initialPreviewConfig,\r\n tags: self.initialPreviewThumbTags\r\n };\r\n },\r\n count: function (skipNull) {\r\n if (!self.previewCache.data || !self.previewCache.data.content) {\r\n return 0;\r\n }\r\n if (skipNull) {\r\n var chk = self.previewCache.data.content.filter(function (n) {\r\n return n !== null;\r\n });\r\n return chk.length;\r\n }\r\n return self.previewCache.data.content.length;\r\n },\r\n get: function (i, isDisabled) {\r\n var ind = $h.INIT_FLAG + i, data = self.previewCache.data, config = data.config[i],\r\n content = data.content[i], out, $tmp, cat, ftr,\r\n fname, ftype, frameClass, asData = $h.ifSet('previewAsData', config, self.initialPreviewAsData),\r\n a = config ? {title: config.title || null, alt: config.alt || null} : {title: null, alt: null},\r\n parseTemplate = function (cat, dat, fname, ftype, ftr, ind, fclass, t) {\r\n var fc = ' file-preview-initial ' + $h.SORT_CSS + (fclass ? ' ' + fclass : ''),\r\n id = self.previewInitId + '-' + ind,\r\n fileId = config && config.fileId || id;\r\n /** @namespace config.zoomData */\r\n return self._generatePreviewTemplate(cat, dat, fname, ftype, id, fileId, false, null, fc,\r\n ftr, ind, t, a, config && config.zoomData || dat);\r\n };\r\n if (!content || !content.length) {\r\n return '';\r\n }\r\n isDisabled = isDisabled === undefined ? true : isDisabled;\r\n cat = $h.ifSet('type', config, self.initialPreviewFileType || 'generic');\r\n fname = $h.ifSet('filename', config, $h.ifSet('caption', config));\r\n ftype = $h.ifSet('filetype', config, cat);\r\n ftr = self.previewCache.footer(i, isDisabled, (config && config.size || null));\r\n frameClass = $h.ifSet('frameClass', config);\r\n if (asData) {\r\n out = parseTemplate(cat, content, fname, ftype, ftr, ind, frameClass);\r\n } else {\r\n out = parseTemplate('generic', content, fname, ftype, ftr, ind, frameClass, cat)\r\n .setTokens({'content': data.content[i]});\r\n }\r\n if (data.tags.length && data.tags[i]) {\r\n out = $h.replaceTags(out, data.tags[i]);\r\n }\r\n /** @namespace config.frameAttr */\r\n if (!$h.isEmpty(config) && !$h.isEmpty(config.frameAttr)) {\r\n $tmp = $h.createElement(out);\r\n $tmp.find('.file-preview-initial').attr(config.frameAttr);\r\n out = $tmp.html();\r\n $tmp.remove();\r\n }\r\n return out;\r\n },\r\n clean: function (data) {\r\n data.content = $h.cleanArray(data.content);\r\n data.config = $h.cleanArray(data.config);\r\n data.tags = $h.cleanArray(data.tags);\r\n self.previewCache.data = data;\r\n },\r\n add: function (content, config, tags, append) {\r\n var data = self.previewCache.data, index;\r\n if (!content || !content.length) {\r\n return 0;\r\n }\r\n index = content.length - 1;\r\n if (!$h.isArray(content)) {\r\n content = content.split(self.initialPreviewDelimiter);\r\n }\r\n if (append && data.content) {\r\n index = data.content.push(content[0]) - 1;\r\n data.config[index] = config;\r\n data.tags[index] = tags;\r\n } else {\r\n data.content = content;\r\n data.config = config;\r\n data.tags = tags;\r\n }\r\n self.previewCache.clean(data);\r\n return index;\r\n },\r\n set: function (content, config, tags, append) {\r\n var data = self.previewCache.data, i, chk;\r\n if (!content || !content.length) {\r\n return;\r\n }\r\n if (!$h.isArray(content)) {\r\n content = content.split(self.initialPreviewDelimiter);\r\n }\r\n chk = content.filter(function (n) {\r\n return n !== null;\r\n });\r\n if (!chk.length) {\r\n return;\r\n }\r\n if (data.content === undefined) {\r\n data.content = [];\r\n }\r\n if (data.config === undefined) {\r\n data.config = [];\r\n }\r\n if (data.tags === undefined) {\r\n data.tags = [];\r\n }\r\n if (append) {\r\n for (i = 0; i < content.length; i++) {\r\n if (content[i]) {\r\n data.content.push(content[i]);\r\n }\r\n }\r\n for (i = 0; i < config.length; i++) {\r\n if (config[i]) {\r\n data.config.push(config[i]);\r\n }\r\n }\r\n for (i = 0; i < tags.length; i++) {\r\n if (tags[i]) {\r\n data.tags.push(tags[i]);\r\n }\r\n }\r\n } else {\r\n data.content = content;\r\n data.config = config;\r\n data.tags = tags;\r\n }\r\n self.previewCache.clean(data);\r\n },\r\n unset: function (index) {\r\n var chk = self.previewCache.count(), rev = self.reversePreviewOrder;\r\n if (!chk) {\r\n return;\r\n }\r\n if (chk === 1) {\r\n self.previewCache.data.content = [];\r\n self.previewCache.data.config = [];\r\n self.previewCache.data.tags = [];\r\n self.initialPreview = [];\r\n self.initialPreviewConfig = [];\r\n self.initialPreviewThumbTags = [];\r\n return;\r\n }\r\n self.previewCache.data.content = $h.spliceArray(self.previewCache.data.content, index, rev);\r\n self.previewCache.data.config = $h.spliceArray(self.previewCache.data.config, index, rev);\r\n self.previewCache.data.tags = $h.spliceArray(self.previewCache.data.tags, index, rev);\r\n var data = $.extend(true, {}, self.previewCache.data);\r\n self.previewCache.clean(data);\r\n },\r\n out: function () {\r\n var html = '', caption, len = self.previewCache.count(), i, content;\r\n if (len === 0) {\r\n return {content: '', caption: ''};\r\n }\r\n for (i = 0; i < len; i++) {\r\n content = self.previewCache.get(i);\r\n html = self.reversePreviewOrder ? (content + html) : (html + content);\r\n }\r\n caption = self._getMsgSelected(len);\r\n return {content: html, caption: caption};\r\n },\r\n footer: function (i, isDisabled, size) {\r\n var data = self.previewCache.data || {};\r\n if ($h.isEmpty(data.content)) {\r\n return '';\r\n }\r\n if ($h.isEmpty(data.config) || $h.isEmpty(data.config[i])) {\r\n data.config[i] = {};\r\n }\r\n isDisabled = isDisabled === undefined ? true : isDisabled;\r\n var config = data.config[i], caption = $h.ifSet('caption', config), a,\r\n width = $h.ifSet('width', config, 'auto'), url = $h.ifSet('url', config, false),\r\n key = $h.ifSet('key', config, null), fileId = $h.ifSet('fileId', config, null),\r\n fs = self.fileActionSettings, initPreviewShowDel = self.initialPreviewShowDelete || false,\r\n downloadInitialUrl = !self.initialPreviewDownloadUrl ? '' :\r\n self.initialPreviewDownloadUrl + '?key=' + key + (fileId ? '&fileId=' + fileId : ''),\r\n dUrl = config.downloadUrl || downloadInitialUrl,\r\n dFil = config.filename || config.caption || '',\r\n initPreviewShowDwl = !!(dUrl),\r\n sDel = $h.ifSet('showRemove', config, initPreviewShowDel),\r\n sDwl = $h.ifSet('showDownload', config, $h.ifSet('showDownload', fs, initPreviewShowDwl)),\r\n sZm = $h.ifSet('showZoom', config, $h.ifSet('showZoom', fs, true)),\r\n sDrg = $h.ifSet('showDrag', config, $h.ifSet('showDrag', fs, true)),\r\n dis = (url === false) && isDisabled;\r\n sDwl = sDwl && config.downloadUrl !== false && !!dUrl;\r\n a = self._renderFileActions(config, false, sDwl, sDel, sZm, sDrg, dis, url, key, true, dUrl, dFil);\r\n return self._getLayoutTemplate('footer').setTokens({\r\n 'progress': self._renderThumbProgress(),\r\n 'actions': a,\r\n 'caption': caption,\r\n 'size': self._getSize(size),\r\n 'width': width,\r\n 'indicator': ''\r\n });\r\n }\r\n };\r\n self.previewCache.init();\r\n },\r\n _isPdfRendered: function () {\r\n var self = this, useLib = self.usePdfRenderer,\r\n flag = typeof useLib === 'function' ? useLib() : !!useLib;\r\n return flag && self.pdfRendererUrl;\r\n },\r\n _handler: function ($el, event, callback) {\r\n var self = this, ns = self.namespace, ev = event.split(' ').join(ns + ' ') + ns;\r\n if (!$el || !$el.length) {\r\n return;\r\n }\r\n $el.off(ev).on(ev, callback);\r\n },\r\n _encodeURI: function (vUrl) {\r\n var self = this;\r\n return self.encodeUrl ? encodeURI(vUrl) : vUrl;\r\n },\r\n _log: function (msg, tokens) {\r\n var self = this, id = self.$element.attr('id');\r\n if (!self.showConsoleLogs) {\r\n return;\r\n }\r\n if (id) {\r\n msg = '\"' + id + '\": ' + msg;\r\n }\r\n msg = 'bootstrap-fileinput: ' + msg;\r\n if (typeof tokens === 'object') {\r\n msg = msg.setTokens(tokens);\r\n }\r\n if (window.console && typeof window.console.log !== 'undefined') {\r\n window.console.log(msg);\r\n } else {\r\n window.alert(msg);\r\n }\r\n },\r\n _validate: function () {\r\n var self = this, status = self.$element.attr('type') === 'file';\r\n if (!status) {\r\n self._log($h.logMessages.badInputType);\r\n }\r\n return status;\r\n },\r\n _errorsExist: function () {\r\n var self = this, $err, $errList = self.$errorContainer.find('li');\r\n if ($errList.length) {\r\n return true;\r\n }\r\n $err = $h.createElement(self.$errorContainer.html());\r\n $err.find('.kv-error-close').remove();\r\n $err.find('ul').remove();\r\n return !!$.trim($err.text()).length;\r\n },\r\n _errorHandler: function (evt, caption) {\r\n var self = this, err = evt.target.error, showError = function (msg) {\r\n self._showError(msg.replace('{name}', caption));\r\n };\r\n /** @namespace err.NOT_FOUND_ERR */\r\n /** @namespace err.SECURITY_ERR */\r\n /** @namespace err.NOT_READABLE_ERR */\r\n if (err.code === err.NOT_FOUND_ERR) {\r\n showError(self.msgFileNotFound);\r\n } else {\r\n if (err.code === err.SECURITY_ERR) {\r\n showError(self.msgFileSecured);\r\n } else {\r\n if (err.code === err.NOT_READABLE_ERR) {\r\n showError(self.msgFileNotReadable);\r\n } else {\r\n if (err.code === err.ABORT_ERR) {\r\n showError(self.msgFilePreviewAborted);\r\n } else {\r\n showError(self.msgFilePreviewError);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _addError: function (msg) {\r\n var self = this, $error = self.$errorContainer;\r\n if (msg && $error.length) {\r\n $h.setHtml($error, self.errorCloseButton + msg);\r\n self._handler($error.find('.kv-error-close'), 'click', function () {\r\n setTimeout(function () {\r\n if (self.showPreview && !self.getFrames().length) {\r\n self.clear();\r\n }\r\n $error.fadeOut('slow');\r\n }, self.processDelay);\r\n });\r\n }\r\n },\r\n _setValidationError: function (css) {\r\n var self = this;\r\n css = (css ? css + ' ' : '') + 'has-error';\r\n self.$container.removeClass(css).addClass('has-error');\r\n $h.addCss(self.$caption, 'is-invalid');\r\n },\r\n _resetErrors: function (fade) {\r\n var self = this, $error = self.$errorContainer, history = self.resumableUploadOptions.retainErrorHistory;\r\n if (self.isPersistentError || (self.enableResumableUpload && history)) {\r\n return;\r\n }\r\n self.isError = false;\r\n self.$container.removeClass('has-error');\r\n self.$caption.removeClass('is-invalid is-valid file-processing');\r\n $error.html('');\r\n if (fade) {\r\n $error.fadeOut('slow');\r\n } else {\r\n $error.hide();\r\n }\r\n },\r\n _showFolderError: function (folders) {\r\n var self = this, $error = self.$errorContainer, msg;\r\n if (!folders) {\r\n return;\r\n }\r\n if (!self.isAjaxUpload) {\r\n self._clearFileInput();\r\n }\r\n msg = self.msgFoldersNotAllowed.replace('{n}', folders);\r\n self._addError(msg);\r\n self._setValidationError();\r\n $error.fadeIn(self.fadeDelay);\r\n self._raise('filefoldererror', [folders, msg]);\r\n },\r\n _showFileError: function (msg, params, event) {\r\n var self = this, $error = self.$errorContainer, ev = event || 'fileuploaderror',\r\n fId = params && params.fileId || '', e = params && params.id ?\r\n '
  • ' + msg + '
  • ' : '
  • ' + msg + '
  • ';\r\n\r\n if ($error.find('ul').length === 0) {\r\n self._addError('');\r\n } else {\r\n $error.find('ul').append(e);\r\n }\r\n $error.fadeIn(self.fadeDelay);\r\n self._raise(ev, [params, msg]);\r\n self._setValidationError('file-input-new');\r\n return true;\r\n },\r\n _showError: function (msg, params, event) {\r\n var self = this, $error = self.$errorContainer, ev = event || 'fileerror';\r\n params = params || {};\r\n params.reader = self.reader;\r\n self._addError(msg);\r\n $error.fadeIn(self.fadeDelay);\r\n self._raise(ev, [params, msg]);\r\n if (!self.isAjaxUpload) {\r\n self._clearFileInput();\r\n }\r\n self._setValidationError('file-input-new');\r\n self.$btnUpload.attr('disabled', true);\r\n return true;\r\n },\r\n _noFilesError: function (params) {\r\n var self = this, label = self.minFileCount > 1 ? self.filePlural : self.fileSingle,\r\n msg = self.msgFilesTooLess.replace('{n}', self.minFileCount).replace('{files}', label),\r\n $error = self.$errorContainer;\r\n msg = '
  • ' + msg + '
  • ';\r\n if ($error.find('ul').length === 0) {\r\n self._addError('');\r\n } else {\r\n $error.find('ul').append(msg);\r\n }\r\n self.isError = true;\r\n self._updateFileDetails(0);\r\n $error.fadeIn(self.fadeDelay);\r\n self._raise('fileerror', [params, msg]);\r\n self._clearFileInput();\r\n self._setValidationError();\r\n },\r\n _parseError: function (operation, jqXHR, errorThrown, fileName) {\r\n /** @namespace jqXHR.responseJSON */\r\n var self = this, errMsg = $.trim(errorThrown + ''), textPre, errText, text;\r\n errText = jqXHR.responseJSON && jqXHR.responseJSON.error ? jqXHR.responseJSON.error.toString() : '';\r\n text = errText ? errText : jqXHR.responseText;\r\n if (self.cancelling && self.msgUploadAborted) {\r\n errMsg = self.msgUploadAborted;\r\n }\r\n if (self.showAjaxErrorDetails && text) {\r\n if (errText) {\r\n errMsg = $.trim(errText + '');\r\n } else {\r\n text = $.trim(text.replace(/\\n\\s*\\n/g, '\\n'));\r\n textPre = text.length ? '
    ' + text + '
    ' : '';\r\n errMsg += errMsg ? textPre : text;\r\n }\r\n }\r\n if (!errMsg) {\r\n errMsg = self.msgAjaxError.replace('{operation}', operation);\r\n }\r\n self.cancelling = false;\r\n return fileName ? '' + fileName + ': ' + errMsg : errMsg;\r\n },\r\n _parseFileType: function (type, name) {\r\n var self = this, isValid, vType, cat, i, types = self.allowedPreviewTypes || [];\r\n if (type === 'application/text-plain') {\r\n return 'text';\r\n }\r\n for (i = 0; i < types.length; i++) {\r\n cat = types[i];\r\n isValid = self.fileTypeSettings[cat];\r\n vType = isValid(type, name) ? cat : '';\r\n if (!$h.isEmpty(vType)) {\r\n return vType;\r\n }\r\n }\r\n return 'other';\r\n },\r\n _getPreviewIcon: function (fname) {\r\n var self = this, ext, out = null;\r\n if (fname && fname.indexOf('.') > -1) {\r\n ext = fname.split('.').pop();\r\n if (self.previewFileIconSettings) {\r\n out = self.previewFileIconSettings[ext] || self.previewFileIconSettings[ext.toLowerCase()] || null;\r\n }\r\n if (self.previewFileExtSettings) {\r\n $.each(self.previewFileExtSettings, function (key, func) {\r\n if (self.previewFileIconSettings[key] && func(ext)) {\r\n out = self.previewFileIconSettings[key];\r\n //noinspection UnnecessaryReturnStatementJS\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n return out || self.previewFileIcon;\r\n },\r\n _parseFilePreviewIcon: function (content, fname) {\r\n var self = this, icn = self._getPreviewIcon(fname), out = content;\r\n if (out.indexOf('{previewFileIcon}') > -1) {\r\n out = out.setTokens({'previewFileIconClass': self.previewFileIconClass, 'previewFileIcon': icn});\r\n }\r\n return out;\r\n },\r\n _raise: function (event, params) {\r\n var self = this, e = $.Event(event);\r\n if (params !== undefined) {\r\n self.$element.trigger(e, params);\r\n } else {\r\n self.$element.trigger(e);\r\n }\r\n if (e.isDefaultPrevented() || e.result === false) {\r\n return false;\r\n }\r\n switch (event) {\r\n // ignore these events\r\n case 'filebatchuploadcomplete':\r\n case 'filebatchuploadsuccess':\r\n case 'fileuploaded':\r\n case 'fileclear':\r\n case 'filecleared':\r\n case 'filereset':\r\n case 'fileerror':\r\n case 'filefoldererror':\r\n case 'fileuploaderror':\r\n case 'filebatchuploaderror':\r\n case 'filedeleteerror':\r\n case 'filecustomerror':\r\n case 'filesuccessremove':\r\n break;\r\n // receive data response via `filecustomerror` event`\r\n default:\r\n if (!self.ajaxAborted) {\r\n self.ajaxAborted = e.result;\r\n }\r\n break;\r\n }\r\n return true;\r\n },\r\n _listenFullScreen: function (isFullScreen) {\r\n var self = this, $modal = self.$modal, $btnFull, $btnBord;\r\n if (!$modal || !$modal.length) {\r\n return;\r\n }\r\n $btnFull = $modal && $modal.find('.btn-kv-fullscreen');\r\n $btnBord = $modal && $modal.find('.btn-kv-borderless');\r\n if (!$btnFull.length || !$btnBord.length) {\r\n return;\r\n }\r\n $btnFull.removeClass('active').attr('aria-pressed', 'false');\r\n $btnBord.removeClass('active').attr('aria-pressed', 'false');\r\n if (isFullScreen) {\r\n $btnFull.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n $btnBord.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n if ($modal.hasClass('file-zoom-fullscreen')) {\r\n self._maximizeZoomDialog();\r\n } else {\r\n if (isFullScreen) {\r\n self._maximizeZoomDialog();\r\n } else {\r\n $btnBord.removeClass('active').attr('aria-pressed', 'false');\r\n }\r\n }\r\n },\r\n _listen: function () {\r\n var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, fullScreenEv;\r\n self._handler($el, 'click', function (e) {\r\n self._initFileSelected();\r\n if ($el.hasClass('file-no-browse')) {\r\n if ($el.data('zoneClicked')) {\r\n $el.data('zoneClicked', false);\r\n } else {\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n self._handler($el, 'change', $.proxy(self._change, self));\r\n self._handler(self.$caption, 'paste', $.proxy(self.paste, self));\r\n if (self.showBrowse) {\r\n self._handler(self.$btnFile, 'click', $.proxy(self._browse, self));\r\n self._handler(self.$btnFile, 'keypress', function (e) {\r\n var keycode = e.keyCode || e.which\r\n if (keycode === 13) {\r\n $el.trigger('click');\r\n self._browse(e);\r\n }\r\n });\r\n }\r\n self._handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));\r\n self._handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));\r\n self._handler($cont.find('.fileinput-pause'), 'click', $.proxy(self.pause, self));\r\n self._initDragDrop();\r\n self._handler($form, 'reset', $.proxy(self.clear, self));\r\n if (!self.isAjaxUpload) {\r\n self._handler($form, 'submit', $.proxy(self._submitForm, self));\r\n }\r\n self._handler(self.$container.find('.fileinput-upload'), 'click', $.proxy(self._uploadClick, self));\r\n self._handler($(window), 'resize', function () {\r\n self._listenFullScreen(screen.width === window.innerWidth && screen.height === window.innerHeight);\r\n });\r\n fullScreenEv = 'webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange';\r\n self._handler($(document), fullScreenEv, function () {\r\n self._listenFullScreen($h.checkFullScreen());\r\n });\r\n self.$caption.on('focus', function () {\r\n self.$captionContainer.focus();\r\n });\r\n self._autoFitContent();\r\n self._initClickable();\r\n self._refreshPreview();\r\n },\r\n _autoFitContent: function () {\r\n var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n self = this, config = width < 400 ? (self.previewSettingsSmall || self.defaults.previewSettingsSmall) :\r\n (self.previewSettings || self.defaults.previewSettings), sel;\r\n $.each(config, function (cat, settings) {\r\n sel = '.file-preview-frame .file-preview-' + cat;\r\n self.$preview.find(sel + '.kv-preview-data,' + sel + ' .kv-preview-data').css(settings);\r\n });\r\n },\r\n _scanDroppedItems: function (item, files, path) {\r\n path = path || '';\r\n var self = this, i, dirReader, readDir, errorHandler = function (e) {\r\n self._log($h.logMessages.badDroppedFiles);\r\n self._log(e);\r\n };\r\n if (item.isFile) {\r\n item.file(function (file) {\r\n if (path) {\r\n file.newPath = path + file.name;\r\n }\r\n files.push(file);\r\n }, errorHandler);\r\n } else {\r\n if (item.isDirectory) {\r\n dirReader = item.createReader();\r\n readDir = function () {\r\n dirReader.readEntries(function (entries) {\r\n if (entries && entries.length > 0) {\r\n for (i = 0; i < entries.length; i++) {\r\n self._scanDroppedItems(entries[i], files, path + item.name + '/');\r\n }\r\n // recursively call readDir() again, since browser can only handle first 100 entries.\r\n readDir();\r\n }\r\n return null;\r\n }, errorHandler);\r\n };\r\n readDir();\r\n }\r\n }\r\n\r\n },\r\n _initDragDrop: function () {\r\n var self = this, $zone = self.$dropZone;\r\n if (self.dropZoneEnabled && self.showPreview) {\r\n self._handler($zone, 'dragenter dragover', $.proxy(self._zoneDragEnter, self));\r\n self._handler($zone, 'dragleave', $.proxy(self._zoneDragLeave, self));\r\n self._handler($zone, 'drop', $.proxy(self._zoneDrop, self));\r\n self._handler($(document), 'dragenter dragover drop', self._zoneDragDropInit);\r\n }\r\n },\r\n _zoneDragDropInit: function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n },\r\n _zoneDragEnter: function (e) {\r\n var self = this, dt = e.originalEvent.dataTransfer, hasFiles = $.inArray('Files', dt.types) > -1;\r\n self._zoneDragDropInit(e);\r\n if (self.isDisabled || !hasFiles) {\r\n dt.effectAllowed = 'none';\r\n dt.dropEffect = 'none';\r\n return;\r\n }\r\n dt.dropEffect = 'copy';\r\n if (self._raise('fileDragEnter', {'sourceEvent': e, 'files': dt.types.Files})) {\r\n $h.addCss(self.$dropZone, 'file-highlighted');\r\n }\r\n },\r\n _zoneDragLeave: function (e) {\r\n var self = this;\r\n self._zoneDragDropInit(e);\r\n if (self.isDisabled) {\r\n return;\r\n }\r\n if (self._raise('fileDragLeave', {'sourceEvent': e})) {\r\n self.$dropZone.removeClass('file-highlighted');\r\n }\r\n\r\n },\r\n _dropFiles: function (e, files) {\r\n var self = this, $el = self.$element;\r\n if (!self.isAjaxUpload) {\r\n self.changeTriggered = true;\r\n $el.get(0).files = files;\r\n setTimeout(function () {\r\n self.changeTriggered = false;\r\n $el.trigger('change' + self.namespace);\r\n }, self.processDelay);\r\n } else {\r\n self._change(e, files);\r\n }\r\n self.$dropZone.removeClass('file-highlighted');\r\n },\r\n _zoneDrop: function (e) {\r\n /** @namespace e.originalEvent.dataTransfer */\r\n var self = this, i, $el = self.$element, dt = e.originalEvent.dataTransfer,\r\n files = dt.files, items = dt.items, folders = $h.getDragDropFolders(items);\r\n e.preventDefault();\r\n if (self.isDisabled || $h.isEmpty(files)) {\r\n return;\r\n }\r\n if (!self._raise('fileDragDrop', {'sourceEvent': e, 'files': files})) {\r\n return;\r\n }\r\n if (folders > 0) {\r\n if (!self.isAjaxUpload) {\r\n self._showFolderError(folders);\r\n return;\r\n }\r\n files = [];\r\n for (i = 0; i < items.length; i++) {\r\n var item = items[i].webkitGetAsEntry();\r\n if (item) {\r\n self._scanDroppedItems(item, files);\r\n }\r\n }\r\n setTimeout(function () {\r\n self._dropFiles(e, files);\r\n }, 500);\r\n } else {\r\n self._dropFiles(e, files);\r\n }\r\n },\r\n _uploadClick: function (e) {\r\n var self = this, $btn = self.$container.find('.fileinput-upload'), $form,\r\n isEnabled = !$btn.hasClass('disabled') && $h.isEmpty($btn.attr('disabled'));\r\n if (e && e.isDefaultPrevented()) {\r\n return;\r\n }\r\n if (!self.isAjaxUpload) {\r\n if (isEnabled && $btn.attr('type') !== 'submit') {\r\n $form = $btn.closest('form');\r\n // downgrade to normal form submit if possible\r\n if ($form.length) {\r\n $form.trigger('submit');\r\n }\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n e.preventDefault();\r\n if (isEnabled) {\r\n self.upload();\r\n }\r\n },\r\n _submitForm: function () {\r\n var self = this;\r\n return self._isFileSelectionValid() && !self._abort({});\r\n },\r\n _clearPreview: function () {\r\n var self = this,\r\n $thumbs = self.showUploadedThumbs ? self.getFrames(':not(.file-preview-success)') : self.getFrames();\r\n $thumbs.each(function () {\r\n var $thumb = $(this);\r\n $thumb.remove();\r\n });\r\n if (!self.getFrames().length || !self.showPreview) {\r\n self._resetUpload();\r\n }\r\n self._validateDefaultPreview();\r\n },\r\n _initSortable: function () {\r\n var self = this, $el = self.$preview, settings, selector = '.' + $h.SORT_CSS, $cont, $body = $('body'),\r\n $html = $('html'), rev = self.reversePreviewOrder, Sortable = window.Sortable, beginGrab, endGrab;\r\n if (!Sortable || $el.find(selector).length === 0) {\r\n return;\r\n }\r\n $cont = $body.length ? $body : ($html.length ? $html : self.$container);\r\n beginGrab = function () {\r\n $cont.addClass('file-grabbing');\r\n };\r\n endGrab = function () {\r\n $cont.removeClass('file-grabbing');\r\n };\r\n settings = {\r\n handle: '.drag-handle-init',\r\n dataIdAttr: 'data-fileid',\r\n animation: 600,\r\n draggable: selector,\r\n scroll: false,\r\n forceFallback: true,\r\n onChoose: beginGrab,\r\n onStart: beginGrab,\r\n onUnchoose: endGrab,\r\n onEnd: endGrab,\r\n onSort: function (e) {\r\n var oldIndex = e.oldIndex, newIndex = e.newIndex, i = 0, len = self.initialPreviewConfig.length,\r\n exceedsLast = len > 0 && newIndex >= len, $item = $(e.item), $first;\r\n if (exceedsLast) {\r\n newIndex = len - 1;\r\n }\r\n self.initialPreview = $h.moveArray(self.initialPreview, oldIndex, newIndex, rev);\r\n self.initialPreviewConfig = $h.moveArray(self.initialPreviewConfig, oldIndex, newIndex, rev);\r\n self.previewCache.init();\r\n self.getFrames('.file-preview-initial').each(function () {\r\n $(this).attr('data-fileindex', $h.INIT_FLAG + i);\r\n i++;\r\n });\r\n if (exceedsLast) {\r\n $first = self.getFrames(':not(.file-preview-initial):first');\r\n if ($first.length) {\r\n $item.slideUp(function () {\r\n $item.insertBefore($first).slideDown();\r\n });\r\n }\r\n }\r\n self._raise('filesorted', {\r\n previewId: $item.attr('id'),\r\n 'oldIndex': oldIndex,\r\n 'newIndex': newIndex,\r\n stack: self.initialPreviewConfig\r\n });\r\n },\r\n };\r\n $.extend(true, settings, self.fileActionSettings.dragSettings);\r\n if (self.sortable) {\r\n self.sortable.destroy();\r\n }\r\n self.sortable = Sortable.create($el[0], settings);\r\n },\r\n _setPreviewContent: function (content) {\r\n var self = this;\r\n $h.setHtml(self.$preview, content);\r\n self._autoFitContent();\r\n },\r\n _initPreviewImageOrientations: function () {\r\n var self = this, i = 0, canOrientImage = self.canOrientImage;\r\n if (!self.autoOrientImageInitial && !canOrientImage) {\r\n return;\r\n }\r\n self.getFrames('.file-preview-initial').each(function () {\r\n var $thumb = $(this), $img, $zoomImg, id, config = self.initialPreviewConfig[i];\r\n /** @namespace config.exif */\r\n if (config && config.exif && config.exif.Orientation) {\r\n id = $thumb.attr('id');\r\n $img = $thumb.find('>.kv-file-content img');\r\n $zoomImg = self._getZoom(id, ' >.kv-file-content img');\r\n if (canOrientImage) {\r\n $img.css('image-orientation', (self.autoOrientImageInitial ? 'from-image' : 'none'));\r\n } else {\r\n self.setImageOrientation($img, $zoomImg, config.exif.Orientation, $thumb);\r\n }\r\n }\r\n i++;\r\n });\r\n },\r\n _initPreview: function (isInit) {\r\n var self = this, cap = self.initialCaption || '', out;\r\n if (!self.previewCache.count(true)) {\r\n self._clearPreview();\r\n if (isInit) {\r\n self._setCaption(cap);\r\n } else {\r\n self._initCaption();\r\n }\r\n return;\r\n }\r\n out = self.previewCache.out();\r\n cap = isInit && self.initialCaption ? self.initialCaption : out.caption;\r\n self._setPreviewContent(out.content);\r\n self._setInitThumbAttr();\r\n self._setCaption(cap);\r\n self._initSortable();\r\n if (!$h.isEmpty(out.content)) {\r\n self.$container.removeClass('file-input-new');\r\n }\r\n self._initPreviewImageOrientations();\r\n },\r\n _getZoomButton: function (type) {\r\n var self = this, label = self.previewZoomButtonIcons[type], css = self.previewZoomButtonClasses[type],\r\n title = ' title=\"' + (self.previewZoomButtonTitles[type] || '') + '\" ', tag = $h.isBs(5) ? 'bs-' : '',\r\n params = title + (type === 'close' ? ' data-' + tag + 'dismiss=\"modal\" aria-hidden=\"true\"' : '');\r\n if (type === 'fullscreen' || type === 'borderless' || type === 'toggleheader') {\r\n params += ' data-toggle=\"button\" aria-pressed=\"false\" autocomplete=\"off\"';\r\n }\r\n return '';\r\n },\r\n _getModalContent: function () {\r\n var self = this;\r\n return self._getLayoutTemplate('modal').setTokens({\r\n 'rtl': self.rtl ? ' kv-rtl' : '',\r\n 'zoomFrameClass': self.frameClass,\r\n 'heading': self.msgZoomModalHeading,\r\n 'prev': self._getZoomButton('prev'),\r\n 'next': self._getZoomButton('next'),\r\n 'toggleheader': self._getZoomButton('toggleheader'),\r\n 'fullscreen': self._getZoomButton('fullscreen'),\r\n 'borderless': self._getZoomButton('borderless'),\r\n 'close': self._getZoomButton('close')\r\n });\r\n },\r\n _listenModalEvent: function (event) {\r\n var self = this, $modal = self.$modal, getParams = function (e) {\r\n return {\r\n sourceEvent: e,\r\n previewId: $modal.data('previewId'),\r\n modal: $modal\r\n };\r\n };\r\n $modal.on(event + '.bs.modal', function (e) {\r\n if (e.namespace !== 'bs.modal') {\r\n return;\r\n }\r\n var $btnFull = $modal.find('.btn-fullscreen'), $btnBord = $modal.find('.btn-borderless');\r\n if ($modal.data('fileinputPluginId') === self.$element.attr('id')) {\r\n self._raise('filezoom' + event, getParams(e));\r\n }\r\n if (event === 'shown') {\r\n $btnBord.removeClass('active').attr('aria-pressed', 'false');\r\n $btnFull.removeClass('active').attr('aria-pressed', 'false');\r\n if ($modal.hasClass('file-zoom-fullscreen')) {\r\n self._maximizeZoomDialog();\r\n if ($h.checkFullScreen()) {\r\n $btnFull.addClass('active').attr('aria-pressed', 'true');\r\n } else {\r\n $btnBord.addClass('active').attr('aria-pressed', 'true');\r\n }\r\n }\r\n }\r\n });\r\n },\r\n _initZoom: function () {\r\n var self = this, $dialog, modalMain = self._getLayoutTemplate('modalMain'), modalId = '#' + $h.MODAL_ID;\r\n modalMain = self._setTabIndex('modal', modalMain);\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n self.$modal = $(modalId);\r\n if (!self.$modal || !self.$modal.length) {\r\n $dialog = $h.createElement($h.cspBuffer.stash(modalMain)).insertAfter(self.$container);\r\n self.$modal = $(modalId).insertBefore($dialog);\r\n $h.cspBuffer.apply(self.$modal);\r\n $dialog.remove();\r\n }\r\n $h.initModal(self.$modal);\r\n self.$modal.html($h.cspBuffer.stash(self._getModalContent()));\r\n $h.cspBuffer.apply(self.$modal);\r\n $.each($h.MODAL_EVENTS, function (key, event) {\r\n self._listenModalEvent(event);\r\n });\r\n },\r\n _initZoomButtons: function () {\r\n var self = this, previewId = self.$modal.data('previewId') || '', $first, $last,\r\n thumbs = self.getFrames().toArray(), len = thumbs.length, $prev = self.$modal.find('.btn-kv-prev'),\r\n $next = self.$modal.find('.btn-kv-next');\r\n if (thumbs.length < 2) {\r\n $prev.hide();\r\n $next.hide();\r\n return;\r\n } else {\r\n $prev.show();\r\n $next.show();\r\n }\r\n if (!len) {\r\n return;\r\n }\r\n $first = $(thumbs[0]);\r\n $last = $(thumbs[len - 1]);\r\n $prev.removeAttr('disabled');\r\n $next.removeAttr('disabled');\r\n if ($first.length && $first.attr('id') === previewId) {\r\n $prev.attr('disabled', true);\r\n }\r\n if ($last.length && $last.attr('id') === previewId) {\r\n $next.attr('disabled', true);\r\n }\r\n },\r\n _maximizeZoomDialog: function () {\r\n var self = this, $modal = self.$modal, $head = $modal.find('.modal-header:visible'),\r\n $foot = $modal.find('.modal-footer:visible'), $body = $modal.find('.modal-body'),\r\n h = $(window).height(), diff = 0;\r\n $modal.addClass('file-zoom-fullscreen');\r\n if ($head && $head.length) {\r\n h -= $head.outerHeight(true);\r\n }\r\n if ($foot && $foot.length) {\r\n h -= $foot.outerHeight(true);\r\n }\r\n if ($body && $body.length) {\r\n diff = $body.outerHeight(true) - $body.height();\r\n h -= diff;\r\n }\r\n $modal.find('.kv-zoom-body').height(h);\r\n },\r\n _resizeZoomDialog: function (fullScreen) {\r\n var self = this, $modal = self.$modal, $btnFull = $modal.find('.btn-kv-fullscreen'),\r\n $btnBord = $modal.find('.btn-kv-borderless');\r\n if ($modal.hasClass('file-zoom-fullscreen')) {\r\n $h.toggleFullScreen(false);\r\n if (!fullScreen) {\r\n if (!$btnFull.hasClass('active')) {\r\n $modal.removeClass('file-zoom-fullscreen');\r\n self.$modal.find('.kv-zoom-body').css('height', self.zoomModalHeight);\r\n } else {\r\n $btnFull.removeClass('active').attr('aria-pressed', 'false');\r\n }\r\n } else {\r\n if (!$btnFull.hasClass('active')) {\r\n $modal.removeClass('file-zoom-fullscreen');\r\n self._resizeZoomDialog(true);\r\n if ($btnBord.hasClass('active')) {\r\n $btnBord.removeClass('active').attr('aria-pressed', 'false');\r\n }\r\n }\r\n }\r\n } else {\r\n if (!fullScreen) {\r\n self._maximizeZoomDialog();\r\n return;\r\n }\r\n $h.toggleFullScreen(true);\r\n }\r\n $modal.focus();\r\n },\r\n _setZoomContent: function ($frame, animate) {\r\n var self = this, $content, tmplt, body, title, $body, $dataEl, config, previewId = $frame.attr('id'),\r\n $zoomPreview = self._getZoom(previewId), $modal = self.$modal, $tmp,\r\n $btnFull = $modal.find('.btn-kv-fullscreen'), $btnBord = $modal.find('.btn-kv-borderless'), cap, size,\r\n $btnTogh = $modal.find('.btn-kv-toggleheader');\r\n tmplt = $zoomPreview.attr('data-template') || 'generic';\r\n $content = $zoomPreview.find('.kv-file-content');\r\n body = $content.length ? $content.html() : '';\r\n cap = $frame.data('caption') || '';\r\n size = $frame.data('size') || '';\r\n title = cap + ' ' + size;\r\n $modal.find('.kv-zoom-title').attr('title', $('
    ').html(title).text()).html(title);\r\n $body = $modal.find('.kv-zoom-body');\r\n $modal.removeClass('kv-single-content');\r\n if (animate) {\r\n $tmp = $body.addClass('file-thumb-loading').clone().insertAfter($body);\r\n $h.setHtml($body, body).hide();\r\n $tmp.fadeOut('fast', function () {\r\n $body.fadeIn('fast', function () {\r\n $body.removeClass('file-thumb-loading');\r\n });\r\n $tmp.remove();\r\n });\r\n } else {\r\n $h.setHtml($body, body);\r\n }\r\n config = self.previewZoomSettings[tmplt];\r\n if (config) {\r\n $dataEl = $body.find('.kv-preview-data');\r\n $h.addCss($dataEl, 'file-zoom-detail');\r\n $.each(config, function (key, value) {\r\n $dataEl.css(key, value);\r\n if (($dataEl.attr('width') && key === 'width') || ($dataEl.attr('height') && key === 'height')) {\r\n $dataEl.removeAttr(key);\r\n }\r\n });\r\n }\r\n $modal.data('previewId', previewId);\r\n self._handler($modal.find('.btn-kv-prev'), 'click', function () {\r\n self._zoomSlideShow('prev', previewId);\r\n });\r\n self._handler($modal.find('.btn-kv-next'), 'click', function () {\r\n self._zoomSlideShow('next', previewId);\r\n });\r\n self._handler($btnFull, 'click', function () {\r\n self._resizeZoomDialog(true);\r\n });\r\n self._handler($btnBord, 'click', function () {\r\n self._resizeZoomDialog(false);\r\n });\r\n self._handler($btnTogh, 'click', function () {\r\n var $header = $modal.find('.modal-header'), $floatBar = $modal.find('.modal-body .floating-buttons'),\r\n ht, $actions = $header.find('.kv-zoom-actions'), resize = function (height) {\r\n var $body = self.$modal.find('.kv-zoom-body'), h = self.zoomModalHeight;\r\n if ($modal.hasClass('file-zoom-fullscreen')) {\r\n h = $body.outerHeight(true);\r\n if (!height) {\r\n h = h - $header.outerHeight(true);\r\n }\r\n }\r\n $body.css('height', height ? h + height : h);\r\n };\r\n if ($header.is(':visible')) {\r\n ht = $header.outerHeight(true);\r\n $header.slideUp('slow', function () {\r\n $actions.find('.btn').appendTo($floatBar);\r\n resize(ht);\r\n });\r\n } else {\r\n $floatBar.find('.btn').appendTo($actions);\r\n $header.slideDown('slow', function () {\r\n resize();\r\n });\r\n }\r\n $modal.focus();\r\n });\r\n self._handler($modal, 'keydown', function (e) {\r\n var key = e.which || e.keyCode, $prev = $(this).find('.btn-kv-prev'),\r\n $next = $(this).find('.btn-kv-next'),\r\n vId = $(this).data('previewId'), vPrevKey = self.rtl ? 39 : 37, vNextKey = self.rtl ? 37 : 39;\r\n if (key === vPrevKey && $prev.length && !$prev.attr('disabled')) {\r\n self._zoomSlideShow('prev', vId);\r\n }\r\n if (key === vNextKey && $next.length && !$next.attr('disabled')) {\r\n self._zoomSlideShow('next', vId);\r\n }\r\n });\r\n },\r\n _showModal: function ($frame) {\r\n var self = this, $modal = self.$modal, bs5Modal;\r\n if (!$frame || !$frame.length) {\r\n return;\r\n }\r\n $h.initModal($modal);\r\n $h.setHtml($modal, self._getModalContent());\r\n self._setZoomContent($frame);\r\n $modal.data({backdrop: false});\r\n //$modal.data('fileinputPluginId', self.$element.attr('id'));\r\n $modal.modal('show');\r\n self._initZoomButtons();\r\n },\r\n _zoomPreview: function ($btn) {\r\n var self = this, $frame;\r\n if (!$btn.length) {\r\n throw 'Cannot zoom to detailed preview!';\r\n }\r\n $frame = $btn.closest($h.FRAMES);\r\n self._showModal($frame);\r\n },\r\n _zoomSlideShow: function (dir, previewId) {\r\n var self = this, $btn = self.$modal.find('.kv-zoom-actions .btn-kv-' + dir), $targFrame, i, $thumb,\r\n thumbsData = self.getFrames().toArray(), thumbs = [], len = thumbsData.length, out;\r\n if ($btn.attr('disabled')) {\r\n return;\r\n }\r\n for (i = 0; i < len; i++) {\r\n $thumb = $(thumbsData[i]);\r\n if ($thumb && $thumb.length && $thumb.find('.kv-file-zoom:visible').length) {\r\n thumbs.push(thumbsData[i]);\r\n }\r\n }\r\n len = thumbs.length;\r\n for (i = 0; i < len; i++) {\r\n if ($(thumbs[i]).attr('id') === previewId) {\r\n out = dir === 'prev' ? i - 1 : i + 1;\r\n break;\r\n }\r\n }\r\n if (out < 0 || out >= len || !thumbs[out]) {\r\n return;\r\n }\r\n $targFrame = $(thumbs[out]);\r\n if ($targFrame.length) {\r\n self._setZoomContent($targFrame, true);\r\n }\r\n self._initZoomButtons();\r\n self._raise('filezoom' + dir, {'previewId': previewId, modal: self.$modal});\r\n },\r\n _initZoomButton: function () {\r\n var self = this;\r\n self.$preview.find('.kv-file-zoom').each(function () {\r\n var $el = $(this);\r\n self._handler($el, 'click', function () {\r\n self._zoomPreview($el);\r\n });\r\n });\r\n },\r\n _inputFileCount: function () {\r\n return this.$element[0].files.length;\r\n },\r\n _refreshPreview: function () {\r\n var self = this, files;\r\n if ((!self._inputFileCount() && !self.isAjaxUpload) || !self.showPreview || !self.isPreviewable) {\r\n return;\r\n }\r\n if (self.isAjaxUpload) {\r\n if (self.fileManager.count() > 0) {\r\n files = $.extend(true, {}, self.getFileList());\r\n self.fileManager.clear();\r\n self._clearFileInput();\r\n } else {\r\n files = self.$element[0].files;\r\n }\r\n } else {\r\n files = self.$element[0].files;\r\n }\r\n if (files && files.length) {\r\n self.readFiles(files);\r\n self._setFileDropZoneTitle();\r\n }\r\n },\r\n _clearObjects: function ($el) {\r\n $el.find('video audio').each(function () {\r\n this.pause();\r\n $(this).remove();\r\n });\r\n $el.find('img object div').each(function () {\r\n $(this).remove();\r\n });\r\n },\r\n _clearFileInput: function () {\r\n var self = this, $el = self.$element, $srcFrm, $tmpFrm, $tmpEl;\r\n if (!self._inputFileCount()) {\r\n return;\r\n }\r\n $srcFrm = $el.closest('form');\r\n $tmpFrm = $(document.createElement('form'));\r\n $tmpEl = $(document.createElement('div'));\r\n $el.before($tmpEl);\r\n if ($srcFrm.length) {\r\n $srcFrm.after($tmpFrm);\r\n } else {\r\n $tmpEl.after($tmpFrm);\r\n }\r\n $tmpFrm.append($el).trigger('reset');\r\n $tmpEl.before($el).remove();\r\n $tmpFrm.remove();\r\n },\r\n _resetUpload: function () {\r\n var self = this;\r\n self.uploadStartTime = $h.now();\r\n self.uploadCache = [];\r\n self.$btnUpload.removeAttr('disabled');\r\n self._setProgress(0);\r\n self._hideProgress();\r\n self._resetErrors(false);\r\n self._initAjax();\r\n self.fileManager.clearImages();\r\n self._resetCanvas();\r\n if (self.overwriteInitial) {\r\n self.initialPreview = [];\r\n self.initialPreviewConfig = [];\r\n self.initialPreviewThumbTags = [];\r\n self.previewCache.data = {\r\n content: [],\r\n config: [],\r\n tags: []\r\n };\r\n }\r\n },\r\n _resetCanvas: function () {\r\n var self = this;\r\n if (self.imageCanvas && self.imageCanvasContext) {\r\n self.imageCanvasContext.clearRect(0, 0, self.imageCanvas.width, self.imageCanvas.height);\r\n }\r\n },\r\n _hasInitialPreview: function () {\r\n var self = this;\r\n return !self.overwriteInitial && self.previewCache.count(true);\r\n },\r\n _resetPreview: function () {\r\n var self = this, out, cap, $div, hasSuc = self.showUploadedThumbs, hasErr = !self.removeFromPreviewOnError,\r\n includeProcessed = (hasSuc || hasErr) && self.isDuplicateError;\r\n if (self.previewCache.count(true)) {\r\n out = self.previewCache.out();\r\n if (includeProcessed) {\r\n $div = $h.createElement('').insertAfter(self.$container);\r\n self.getFrames().each(function () {\r\n var $thumb = $(this);\r\n if ((hasSuc && $thumb.hasClass('file-preview-success')) ||\r\n (hasErr && $thumb.hasClass('file-preview-error'))) {\r\n $div.append($thumb);\r\n }\r\n });\r\n }\r\n self._setPreviewContent(out.content);\r\n self._setInitThumbAttr();\r\n cap = self.initialCaption ? self.initialCaption : out.caption;\r\n self._setCaption(cap);\r\n if (includeProcessed) {\r\n $div.contents().appendTo(self.$preview);\r\n $div.remove();\r\n }\r\n } else {\r\n self._clearPreview();\r\n self._initCaption();\r\n }\r\n if (self.showPreview) {\r\n self._initZoom();\r\n self._initSortable();\r\n }\r\n self.isDuplicateError = false;\r\n },\r\n _clearDefaultPreview: function () {\r\n var self = this;\r\n self.$preview.find('.file-default-preview').remove();\r\n },\r\n _validateDefaultPreview: function () {\r\n var self = this;\r\n if (!self.showPreview || $h.isEmpty(self.defaultPreviewContent)) {\r\n return;\r\n }\r\n self._setPreviewContent('
    ' + self.defaultPreviewContent + '
    ');\r\n self.$container.removeClass('file-input-new');\r\n self._initClickable();\r\n },\r\n _resetPreviewThumbs: function (isAjax) {\r\n var self = this, out;\r\n if (isAjax) {\r\n self._clearPreview();\r\n self.clearFileStack();\r\n return;\r\n }\r\n if (self._hasInitialPreview()) {\r\n out = self.previewCache.out();\r\n self._setPreviewContent(out.content);\r\n self._setInitThumbAttr();\r\n self._setCaption(out.caption);\r\n self._initPreviewActions();\r\n } else {\r\n self._clearPreview();\r\n }\r\n },\r\n _getLayoutTemplate: function (t) {\r\n var self = this, template = self.layoutTemplates[t];\r\n if ($h.isEmpty(self.customLayoutTags)) {\r\n return template;\r\n }\r\n return $h.replaceTags(template, self.customLayoutTags);\r\n },\r\n _getPreviewTemplate: function (t) {\r\n var self = this, templates = self.previewTemplates, template = templates[t] || templates.other;\r\n if ($h.isEmpty(self.customPreviewTags)) {\r\n return template;\r\n }\r\n return $h.replaceTags(template, self.customPreviewTags);\r\n },\r\n _getOutData: function (formdata, jqXHR, responseData, filesData) {\r\n var self = this;\r\n jqXHR = jqXHR || {};\r\n responseData = responseData || {};\r\n filesData = filesData || self.fileManager.list();\r\n return {\r\n formdata: formdata,\r\n files: filesData,\r\n filenames: self.filenames,\r\n filescount: self.getFilesCount(),\r\n extra: self._getExtraData(),\r\n response: responseData,\r\n reader: self.reader,\r\n jqXHR: jqXHR\r\n };\r\n },\r\n _getMsgSelected: function (n, processing) {\r\n var self = this, strFiles = n === 1 ? self.fileSingle : self.filePlural;\r\n return n > 0 ? self.msgSelected.replace('{n}', n).replace('{files}', strFiles) :\r\n (processing ? self.msgProcessing : self.msgNoFilesSelected);\r\n },\r\n _getFrame: function (id, skipWarning) {\r\n var self = this, $frame = $h.getFrameElement(self.$preview, id);\r\n if (self.showPreview && !skipWarning && !$frame.length) {\r\n self._log($h.logMessages.invalidThumb, {id: id});\r\n }\r\n return $frame;\r\n },\r\n _getZoom: function (id, selector) {\r\n var self = this, $frame = $h.getZoomElement(self.$preview, id, selector);\r\n if (self.showPreview && !$frame.length) {\r\n self._log($h.logMessages.invalidThumb, {id: id});\r\n }\r\n return $frame;\r\n },\r\n _getThumbs: function (css) {\r\n css = css || '';\r\n return this.getFrames(':not(.file-preview-initial)' + css);\r\n },\r\n _getThumbId: function (fileId) {\r\n var self = this;\r\n return self.previewInitId + '-' + fileId;\r\n },\r\n _getExtraData: function (fileId, index) {\r\n var self = this, data = self.uploadExtraData;\r\n if (typeof self.uploadExtraData === 'function') {\r\n data = self.uploadExtraData(fileId, index);\r\n }\r\n return data;\r\n },\r\n _initXhr: function (xhrobj, fileId) {\r\n var self = this, fm = self.fileManager, func = function (event) {\r\n var pct = 0, total = event.total, loaded = event.loaded || event.position,\r\n stats = fm.getUploadStats(fileId, loaded, total);\r\n /** @namespace event.lengthComputable */\r\n if (event.lengthComputable && !self.enableResumableUpload) {\r\n pct = $h.round(loaded / total * 100);\r\n }\r\n if (fileId) {\r\n self._setFileUploadStats(fileId, pct, stats);\r\n } else {\r\n self._setProgress(pct, null, null, self._getStats(stats));\r\n }\r\n self._raise('fileajaxprogress', [stats]);\r\n };\r\n if (xhrobj.upload) {\r\n if (self.progressDelay) {\r\n func = $h.debounce(func, self.progressDelay);\r\n }\r\n xhrobj.upload.addEventListener('progress', func, false);\r\n }\r\n return xhrobj;\r\n },\r\n _initAjaxSettings: function () {\r\n var self = this;\r\n self._ajaxSettings = $.extend(true, {}, self.ajaxSettings);\r\n self._ajaxDeleteSettings = $.extend(true, {}, self.ajaxDeleteSettings);\r\n },\r\n _mergeAjaxCallback: function (funcName, srcFunc, type) {\r\n var self = this, settings = self._ajaxSettings, flag = self.mergeAjaxCallbacks, targFunc;\r\n if (type === 'delete') {\r\n settings = self._ajaxDeleteSettings;\r\n flag = self.mergeAjaxDeleteCallbacks;\r\n }\r\n targFunc = settings[funcName];\r\n if (flag && typeof targFunc === 'function') {\r\n if (flag === 'before') {\r\n settings[funcName] = function () {\r\n targFunc.apply(this, arguments);\r\n srcFunc.apply(this, arguments);\r\n };\r\n } else {\r\n settings[funcName] = function () {\r\n srcFunc.apply(this, arguments);\r\n targFunc.apply(this, arguments);\r\n };\r\n }\r\n } else {\r\n settings[funcName] = srcFunc;\r\n }\r\n },\r\n _ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError, formdata, fileId, index, vUrl) {\r\n var self = this, settings, defaults, data, ajaxTask;\r\n if (!self._raise('filepreajax', [formdata, fileId, index])) {\r\n return;\r\n }\r\n formdata.append('initialPreview', JSON.stringify(self.initialPreview));\r\n formdata.append('initialPreviewConfig', JSON.stringify(self.initialPreviewConfig));\r\n formdata.append('initialPreviewThumbTags', JSON.stringify(self.initialPreviewThumbTags));\r\n self._initAjaxSettings();\r\n self._mergeAjaxCallback('beforeSend', fnBefore);\r\n self._mergeAjaxCallback('success', fnSuccess);\r\n self._mergeAjaxCallback('complete', fnComplete);\r\n self._mergeAjaxCallback('error', fnError);\r\n vUrl = vUrl || self.uploadUrlThumb || self.uploadUrl;\r\n if (typeof vUrl === 'function') {\r\n vUrl = vUrl();\r\n }\r\n data = self._getExtraData(fileId, index) || {};\r\n if (typeof data === 'object') {\r\n $.each(data, function (key, value) {\r\n formdata.append(key, value);\r\n });\r\n }\r\n defaults = {\r\n xhr: function () {\r\n var xhrobj = $.ajaxSettings.xhr();\r\n return self._initXhr(xhrobj, fileId);\r\n },\r\n url: self._encodeURI(vUrl),\r\n type: 'POST',\r\n dataType: 'json',\r\n data: formdata,\r\n cache: false,\r\n processData: false,\r\n contentType: false\r\n };\r\n settings = $.extend(true, {}, defaults, self._ajaxSettings);\r\n ajaxTask = self.taskManager.addTask(fileId + '-' + index, function () {\r\n var self = this.self, config, xhr;\r\n config = self.ajaxQueue.shift();\r\n xhr = $.ajax(config);\r\n self.ajaxRequests.push(xhr);\r\n });\r\n self.ajaxQueue.push(settings);\r\n ajaxTask.runWithContext({self: self});\r\n },\r\n _mergeArray: function (prop, content) {\r\n var self = this, arr1 = $h.cleanArray(self[prop]), arr2 = $h.cleanArray(content);\r\n self[prop] = arr1.concat(arr2);\r\n },\r\n _initUploadSuccess: function (out, $thumb, allFiles) {\r\n var self = this, append, data, index, $div, $newCache, content, config, tags, id, i;\r\n if (!self.showPreview || typeof out !== 'object' || $.isEmptyObject(out)) {\r\n self._resetCaption();\r\n return;\r\n }\r\n if (out.initialPreview !== undefined && out.initialPreview.length > 0) {\r\n self.hasInitData = true;\r\n content = out.initialPreview || [];\r\n config = out.initialPreviewConfig || [];\r\n tags = out.initialPreviewThumbTags || [];\r\n append = out.append === undefined || out.append;\r\n if (content.length > 0 && !$h.isArray(content)) {\r\n content = content.split(self.initialPreviewDelimiter);\r\n }\r\n if (content.length) {\r\n self._mergeArray('initialPreview', content);\r\n self._mergeArray('initialPreviewConfig', config);\r\n self._mergeArray('initialPreviewThumbTags', tags);\r\n }\r\n if ($thumb !== undefined) {\r\n if (!allFiles) {\r\n index = self.previewCache.add(content[0], config[0], tags[0], append);\r\n data = self.previewCache.get(index, false);\r\n $div = $h.createElement(data).hide().appendTo($thumb);\r\n $newCache = $div.find('.kv-zoom-cache');\r\n if ($newCache && $newCache.length) {\r\n $newCache.appendTo($thumb);\r\n }\r\n $thumb.fadeOut('slow', function () {\r\n var $newThumb = $div.find('.file-preview-frame');\r\n if ($newThumb && $newThumb.length) {\r\n $newThumb.insertBefore($thumb).fadeIn('slow').css('display:inline-block');\r\n }\r\n self._initPreviewActions();\r\n self._clearFileInput();\r\n $thumb.remove();\r\n $div.remove();\r\n self._initSortable();\r\n });\r\n } else {\r\n id = $thumb.attr('id');\r\n i = self._getUploadCacheIndex(id);\r\n if (i !== null) {\r\n self.uploadCache[i] = {\r\n id: id,\r\n content: content[0],\r\n config: config[0] || [],\r\n tags: tags[0] || [],\r\n append: append\r\n };\r\n }\r\n }\r\n } else {\r\n self.previewCache.set(content, config, tags, append);\r\n self._initPreview();\r\n self._initPreviewActions();\r\n }\r\n }\r\n self._resetCaption();\r\n },\r\n _getUploadCacheIndex: function (id) {\r\n var self = this, i, len = self.uploadCache.length, config;\r\n for (i = 0; i < len; i++) {\r\n config = self.uploadCache[i];\r\n if (config.id === id) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n },\r\n _initSuccessThumbs: function () {\r\n var self = this;\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n setTimeout(function () {\r\n self._getThumbs($h.FRAMES + '.file-preview-success').each(function () {\r\n var $thumb = $(this), $remove = $thumb.find('.kv-file-remove');\r\n $remove.removeAttr('disabled');\r\n self._handler($remove, 'click', function () {\r\n var id = $thumb.attr('id'),\r\n out = self._raise('filesuccessremove', [id, $thumb.attr('data-fileindex')]);\r\n $h.cleanMemory($thumb);\r\n if (out === false) {\r\n return;\r\n }\r\n self.$caption.attr('title', '');\r\n $thumb.fadeOut('slow', function () {\r\n var fm = self.fileManager;\r\n $thumb.remove();\r\n if (!self.getFrames().length) {\r\n self.reset();\r\n }\r\n });\r\n });\r\n });\r\n }, self.processDelay);\r\n },\r\n _updateInitialPreview: function () {\r\n var self = this, u = self.uploadCache;\r\n if (self.showPreview) {\r\n $.each(u, function (key, setting) {\r\n self.previewCache.add(setting.content, setting.config, setting.tags, setting.append);\r\n });\r\n if (self.hasInitData) {\r\n self._initPreview();\r\n self._initPreviewActions();\r\n }\r\n }\r\n },\r\n _getThumbFileId: function ($thumb) {\r\n var self = this;\r\n if (self.showPreview && $thumb !== undefined) {\r\n return $thumb.attr('data-fileid');\r\n }\r\n return null;\r\n },\r\n _getThumbFile: function ($thumb) {\r\n var self = this, id = self._getThumbFileId($thumb);\r\n return id ? self.fileManager.getFile(id) : null;\r\n },\r\n _uploadSingle: function (i, id, isBatch) {\r\n var self = this, fm = self.fileManager, count = fm.count(), formdata = new FormData(), outData,\r\n previewId = self._getThumbId(id), $thumb, chkComplete, $btnUpload, $btnDelete,\r\n hasPostData = count > 0 || !$.isEmptyObject(self.uploadExtraData), uploadFailed, $prog, fnBefore,\r\n errMsg, fnSuccess, fnComplete, fnError, updateUploadLog, op = self.ajaxOperations.uploadThumb,\r\n fileObj = fm.getFile(id), params = {id: previewId, index: i, fileId: id},\r\n fileName = self.fileManager.getFileName(id, true);\r\n if (self.enableResumableUpload) { // not enabled for resumable uploads\r\n return;\r\n }\r\n if (self.showPreview) {\r\n $thumb = fm.getThumb(id);\r\n $prog = $thumb.find('.file-thumb-progress');\r\n $btnUpload = $thumb.find('.kv-file-upload');\r\n $btnDelete = $thumb.find('.kv-file-remove');\r\n $prog.show();\r\n }\r\n if (count === 0 || !hasPostData || (self.showPreview && $btnUpload && $btnUpload.hasClass('disabled')) ||\r\n self._abort(params)) {\r\n return;\r\n }\r\n updateUploadLog = function () {\r\n if (!uploadFailed) {\r\n fm.removeFile(id);\r\n } else {\r\n fm.errors.push(id);\r\n }\r\n fm.setProcessed(id);\r\n if (fm.isProcessed()) {\r\n self.fileBatchCompleted = true;\r\n chkComplete();\r\n }\r\n };\r\n chkComplete = function () {\r\n var $initThumbs;\r\n if (!self.fileBatchCompleted) {\r\n return;\r\n }\r\n setTimeout(function () {\r\n var triggerReset = fm.count() === 0, errCount = fm.errors.length;\r\n self._updateInitialPreview();\r\n self.unlock(triggerReset);\r\n if (triggerReset) {\r\n self._clearFileInput();\r\n }\r\n $initThumbs = self.$preview.find('.file-preview-initial');\r\n if (self.uploadAsync && $initThumbs.length) {\r\n $h.addCss($initThumbs, $h.SORT_CSS);\r\n self._initSortable();\r\n }\r\n self._raise('filebatchuploadcomplete', [fm.stack, self._getExtraData()]);\r\n if (!self.retryErrorUploads || errCount === 0) {\r\n fm.clear();\r\n }\r\n self._setProgress(101);\r\n self.ajaxAborted = false;\r\n }, self.processDelay);\r\n };\r\n fnBefore = function (jqXHR) {\r\n outData = self._getOutData(formdata, jqXHR);\r\n fm.initStats(id);\r\n self.fileBatchCompleted = false;\r\n if (!isBatch) {\r\n self.ajaxAborted = false;\r\n }\r\n if (self.showPreview) {\r\n if (!$thumb.hasClass('file-preview-success')) {\r\n self._setThumbStatus($thumb, 'Loading');\r\n $h.addCss($thumb, 'file-uploading');\r\n }\r\n $btnUpload.attr('disabled', true);\r\n $btnDelete.attr('disabled', true);\r\n }\r\n if (!isBatch) {\r\n self.lock();\r\n }\r\n if (fm.errors.indexOf(id) !== -1) {\r\n delete fm.errors[id];\r\n }\r\n self._raise('filepreupload', [outData, previewId, i, self._getThumbFileId($thumb)]);\r\n $.extend(true, params, outData);\r\n if (self._abort(params)) {\r\n jqXHR.abort();\r\n if (!isBatch) {\r\n self._setThumbStatus($thumb, 'New');\r\n $thumb.removeClass('file-uploading');\r\n $btnUpload.removeAttr('disabled');\r\n $btnDelete.removeAttr('disabled');\r\n self.unlock();\r\n }\r\n self._setProgressCancelled();\r\n }\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n var pid = self.showPreview && $thumb.attr('id') ? $thumb.attr('id') : previewId;\r\n outData = self._getOutData(formdata, jqXHR, data);\r\n $.extend(true, params, outData);\r\n setTimeout(function () {\r\n if ($h.isEmpty(data) || $h.isEmpty(data.error)) {\r\n if (self.showPreview) {\r\n self._setThumbStatus($thumb, 'Success');\r\n $btnUpload.hide();\r\n self._initUploadSuccess(data, $thumb, isBatch);\r\n self._setProgress(101, $prog);\r\n }\r\n self._raise('fileuploaded', [outData, pid, i, self._getThumbFileId($thumb)]);\r\n if (!isBatch) {\r\n self.fileManager.remove($thumb);\r\n } else {\r\n updateUploadLog();\r\n }\r\n } else {\r\n uploadFailed = true;\r\n errMsg = self._parseError(op, jqXHR, self.msgUploadError, self.fileManager.getFileName(id));\r\n self._showFileError(errMsg, params);\r\n self._setPreviewError($thumb, true);\r\n if (!self.retryErrorUploads) {\r\n $btnUpload.hide();\r\n }\r\n if (isBatch) {\r\n updateUploadLog();\r\n }\r\n self._setProgress(101, self._getFrame(pid).find('.file-thumb-progress'),\r\n self.msgUploadError);\r\n }\r\n }, self.processDelay);\r\n };\r\n fnComplete = function () {\r\n if (self.showPreview) {\r\n $btnUpload.removeAttr('disabled');\r\n $btnDelete.removeAttr('disabled');\r\n $thumb.removeClass('file-uploading');\r\n }\r\n if (!isBatch) {\r\n self.unlock(false);\r\n self._clearFileInput();\r\n } else {\r\n chkComplete();\r\n }\r\n self._initSuccessThumbs();\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n errMsg = self._parseError(op, jqXHR, errorThrown, self.fileManager.getFileName(id));\r\n uploadFailed = true;\r\n setTimeout(function () {\r\n var $prog;\r\n if (isBatch) {\r\n updateUploadLog();\r\n }\r\n self.fileManager.setProgress(id, 100);\r\n self._setPreviewError($thumb, true);\r\n if (!self.retryErrorUploads) {\r\n $btnUpload.hide();\r\n }\r\n $.extend(true, params, self._getOutData(formdata, jqXHR));\r\n self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op));\r\n $prog = self.showPreview && $thumb ? $thumb.find('.file-thumb-progress') : '';\r\n self._setProgress(101, $prog, self.msgUploadError);\r\n self._showFileError(errMsg, params);\r\n }, self.processDelay);\r\n };\r\n self._setFileData(formdata, fileObj.file, fileName, id);\r\n self._setUploadData(formdata, {fileId: id});\r\n self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata, id, i);\r\n },\r\n _setFileData: function (formdata, file, fileName, fileId) {\r\n var self = this, preProcess = self.preProcessUpload;\r\n if (preProcess && typeof preProcess === 'function') {\r\n formdata.append(self.uploadFileAttr, preProcess(fileId, file));\r\n } else {\r\n formdata.append(self.uploadFileAttr, file, fileName);\r\n }\r\n },\r\n _uploadBatch: function () {\r\n var self = this, fm = self.fileManager, total = fm.total(), params = {}, fnBefore, fnSuccess, fnError,\r\n fnComplete, hasPostData = total > 0 || !$.isEmptyObject(self.uploadExtraData), errMsg,\r\n setAllUploaded, formdata = new FormData(), op = self.ajaxOperations.uploadBatch;\r\n if (total === 0 || !hasPostData || self._abort(params)) {\r\n return;\r\n }\r\n setAllUploaded = function () {\r\n self.fileManager.clear();\r\n self._clearFileInput();\r\n };\r\n fnBefore = function (jqXHR) {\r\n self.lock();\r\n fm.initStats();\r\n var outData = self._getOutData(formdata, jqXHR);\r\n self.ajaxAborted = false;\r\n if (self.showPreview) {\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'),\r\n $btnDelete = $thumb.find('.kv-file-remove');\r\n if (!$thumb.hasClass('file-preview-success')) {\r\n self._setThumbStatus($thumb, 'Loading');\r\n $h.addCss($thumb, 'file-uploading');\r\n }\r\n $btnUpload.attr('disabled', true);\r\n $btnDelete.attr('disabled', true);\r\n });\r\n }\r\n self._raise('filebatchpreupload', [outData]);\r\n if (self._abort(outData)) {\r\n jqXHR.abort();\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this), $btnUpload = $thumb.find('.kv-file-upload'),\r\n $btnDelete = $thumb.find('.kv-file-remove');\r\n if ($thumb.hasClass('file-preview-loading')) {\r\n self._setThumbStatus($thumb, 'New');\r\n $thumb.removeClass('file-uploading');\r\n }\r\n $btnUpload.removeAttr('disabled');\r\n $btnDelete.removeAttr('disabled');\r\n });\r\n self._setProgressCancelled();\r\n }\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n /** @namespace data.errorkeys */\r\n var outData = self._getOutData(formdata, jqXHR, data), key = 0,\r\n $thumbs = self._getThumbs(':not(.file-preview-success)'),\r\n keys = $h.isEmpty(data) || $h.isEmpty(data.errorkeys) ? [] : data.errorkeys;\r\n\r\n if ($h.isEmpty(data) || $h.isEmpty(data.error)) {\r\n self._raise('filebatchuploadsuccess', [outData]);\r\n setAllUploaded();\r\n if (self.showPreview) {\r\n $thumbs.each(function () {\r\n var $thumb = $(this);\r\n self._setThumbStatus($thumb, 'Success');\r\n $thumb.removeClass('file-uploading');\r\n $thumb.find('.kv-file-upload').hide().removeAttr('disabled');\r\n });\r\n self._initUploadSuccess(data);\r\n } else {\r\n self.reset();\r\n }\r\n self._setProgress(101);\r\n } else {\r\n if (self.showPreview) {\r\n $thumbs.each(function () {\r\n var $thumb = $(this);\r\n $thumb.removeClass('file-uploading');\r\n $thumb.find('.kv-file-upload').removeAttr('disabled');\r\n $thumb.find('.kv-file-remove').removeAttr('disabled');\r\n if (keys.length === 0 || $.inArray(key, keys) !== -1) {\r\n self._setPreviewError($thumb, true);\r\n if (!self.retryErrorUploads) {\r\n $thumb.find('.kv-file-upload').hide();\r\n self.fileManager.remove($thumb);\r\n }\r\n } else {\r\n $thumb.find('.kv-file-upload').hide();\r\n self._setThumbStatus($thumb, 'Success');\r\n self.fileManager.remove($thumb);\r\n }\r\n if (!$thumb.hasClass('file-preview-error') || self.retryErrorUploads) {\r\n key++;\r\n }\r\n });\r\n self._initUploadSuccess(data);\r\n }\r\n errMsg = self._parseError(op, jqXHR, self.msgUploadError);\r\n self._showFileError(errMsg, outData, 'filebatchuploaderror');\r\n self._setProgress(101, self.$progress, self.msgUploadError);\r\n }\r\n };\r\n fnComplete = function () {\r\n self.unlock();\r\n self._initSuccessThumbs();\r\n self._clearFileInput();\r\n self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]);\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n var outData = self._getOutData(formdata, jqXHR);\r\n errMsg = self._parseError(op, jqXHR, errorThrown);\r\n self._showFileError(errMsg, outData, 'filebatchuploaderror');\r\n self.uploadFileCount = total - 1;\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this);\r\n $thumb.removeClass('file-uploading');\r\n if (self._getThumbFile($thumb)) {\r\n self._setPreviewError($thumb);\r\n }\r\n });\r\n self._getThumbs().removeClass('file-uploading');\r\n self._getThumbs(' .kv-file-upload').removeAttr('disabled');\r\n self._getThumbs(' .kv-file-delete').removeAttr('disabled');\r\n self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op));\r\n };\r\n var ctr = 0;\r\n $.each(self.fileManager.stack, function (key, data) {\r\n if (!$h.isEmpty(data.file)) {\r\n self._setFileData(formdata, data.file, (data.nameFmt || ('untitled_' + ctr)), key);\r\n }\r\n ctr++;\r\n });\r\n self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata);\r\n },\r\n _uploadExtraOnly: function () {\r\n var self = this, params = {}, fnBefore, fnSuccess, fnComplete, fnError, formdata = new FormData(), errMsg,\r\n op = self.ajaxOperations.uploadExtra;\r\n if (self._abort(params)) {\r\n return;\r\n }\r\n fnBefore = function (jqXHR) {\r\n self.lock();\r\n var outData = self._getOutData(formdata, jqXHR);\r\n self._raise('filebatchpreupload', [outData]);\r\n self._setProgress(50);\r\n params.data = outData;\r\n params.xhr = jqXHR;\r\n if (self._abort(params)) {\r\n jqXHR.abort();\r\n self._setProgressCancelled();\r\n }\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n var outData = self._getOutData(formdata, jqXHR, data);\r\n if ($h.isEmpty(data) || $h.isEmpty(data.error)) {\r\n self._raise('filebatchuploadsuccess', [outData]);\r\n self._clearFileInput();\r\n self._initUploadSuccess(data);\r\n self._setProgress(101);\r\n } else {\r\n errMsg = self._parseError(op, jqXHR, self.msgUploadError);\r\n self._showFileError(errMsg, outData, 'filebatchuploaderror');\r\n }\r\n };\r\n fnComplete = function () {\r\n self.unlock();\r\n self._clearFileInput();\r\n self._raise('filebatchuploadcomplete', [self.fileManager.stack, self._getExtraData()]);\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n var outData = self._getOutData(formdata, jqXHR);\r\n errMsg = self._parseError(op, jqXHR, errorThrown);\r\n params.data = outData;\r\n self._showFileError(errMsg, outData, 'filebatchuploaderror');\r\n self._setProgress(101, self.$progress, self.msgAjaxProgressError.replace('{operation}', op));\r\n };\r\n self._ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError, formdata);\r\n },\r\n _deleteFileIndex: function ($frame) {\r\n var self = this, ind = $frame.attr('data-fileindex'), rev = self.reversePreviewOrder;\r\n if (ind.substring(0, 5) === $h.INIT_FLAG) {\r\n ind = parseInt(ind.replace($h.INIT_FLAG, ''));\r\n self.initialPreview = $h.spliceArray(self.initialPreview, ind, rev);\r\n self.initialPreviewConfig = $h.spliceArray(self.initialPreviewConfig, ind, rev);\r\n self.initialPreviewThumbTags = $h.spliceArray(self.initialPreviewThumbTags, ind, rev);\r\n self.getFrames().each(function () {\r\n var $nFrame = $(this), nInd = $nFrame.attr('data-fileindex');\r\n if (nInd.substring(0, 5) === $h.INIT_FLAG) {\r\n nInd = parseInt(nInd.replace($h.INIT_FLAG, ''));\r\n if (nInd > ind) {\r\n nInd--;\r\n $nFrame.attr('data-fileindex', $h.INIT_FLAG + nInd);\r\n }\r\n }\r\n });\r\n }\r\n },\r\n _resetCaption: function () {\r\n var self = this;\r\n setTimeout(function () {\r\n var cap, n, chk = self.previewCache.count(true), len = self.fileManager.count(), file,\r\n incomplete = ':not(.file-preview-success):not(.file-preview-error)',\r\n hasThumb = self.showPreview && self.getFrames(incomplete).length;\r\n if (len === 0 && chk === 0 && !hasThumb) {\r\n self.reset();\r\n } else {\r\n n = chk + len;\r\n if (n > 1) {\r\n cap = self._getMsgSelected(n);\r\n } else {\r\n file = self.fileManager.getFirstFile();\r\n cap = file ? file.nameFmt : '_';\r\n }\r\n self._setCaption(cap);\r\n }\r\n }, self.processDelay);\r\n },\r\n _initFileActions: function () {\r\n var self = this;\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n self._initZoomButton();\r\n self.getFrames(' .kv-file-remove').each(function () {\r\n var $el = $(this), $frame = $el.closest($h.FRAMES), hasError, id = $frame.attr('id'),\r\n ind = $frame.attr('data-fileindex'), status, fm = self.fileManager;\r\n self._handler($el, 'click', function () {\r\n status = self._raise('filepreremove', [id, ind]);\r\n if (status === false || !self._validateMinCount()) {\r\n return false;\r\n }\r\n hasError = $frame.hasClass('file-preview-error');\r\n $h.cleanMemory($frame);\r\n $frame.fadeOut('slow', function () {\r\n self.fileManager.remove($frame);\r\n self._clearObjects($frame);\r\n $frame.remove();\r\n if (id && hasError) {\r\n self.$errorContainer.find('li[data-thumb-id=\"' + id + '\"]').fadeOut('fast', function () {\r\n $(this).remove();\r\n if (!self._errorsExist()) {\r\n self._resetErrors();\r\n }\r\n });\r\n }\r\n self._clearFileInput();\r\n self._resetCaption();\r\n self._raise('fileremoved', [id, ind]);\r\n });\r\n });\r\n });\r\n self.getFrames(' .kv-file-upload').each(function () {\r\n var $el = $(this);\r\n self._handler($el, 'click', function () {\r\n var $frame = $el.closest($h.FRAMES), fileId = self._getThumbFileId($frame);\r\n self._hideProgress();\r\n if ($frame.hasClass('file-preview-error') && !self.retryErrorUploads) {\r\n return;\r\n }\r\n self._uploadSingle(self.fileManager.getIndex(fileId), fileId, false);\r\n });\r\n });\r\n },\r\n _initPreviewActions: function () {\r\n var self = this, $preview = self.$preview, deleteExtraData = self.deleteExtraData || {},\r\n btnRemove = $h.FRAMES + ' .kv-file-remove', settings = self.fileActionSettings,\r\n origClass = settings.removeClass, errClass = settings.removeErrorClass,\r\n resetProgress = function () {\r\n var hasFiles = self.isAjaxUpload ? self.previewCache.count(true) : self._inputFileCount();\r\n if (!self.getFrames().length && !hasFiles) {\r\n self._setCaption('');\r\n self.reset();\r\n self.initialCaption = '';\r\n }\r\n };\r\n self._initZoomButton();\r\n $preview.find(btnRemove).each(function () {\r\n var $el = $(this), vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key'), errMsg, fnBefore,\r\n fnSuccess, fnError, op = self.ajaxOperations.deleteThumb;\r\n if ($h.isEmpty(vUrl) || vKey === undefined) {\r\n return;\r\n }\r\n if (typeof vUrl === 'function') {\r\n vUrl = vUrl();\r\n }\r\n var $frame = $el.closest($h.FRAMES), cache = self.previewCache.data, settings, params, config,\r\n fileName, extraData, index = $frame.attr('data-fileindex');\r\n index = parseInt(index.replace($h.INIT_FLAG, ''));\r\n config = $h.isEmpty(cache.config) && $h.isEmpty(cache.config[index]) ? null : cache.config[index];\r\n extraData = $h.isEmpty(config) || $h.isEmpty(config.extra) ? deleteExtraData : config.extra;\r\n fileName = config && (config.filename || config.caption) || '';\r\n if (typeof extraData === 'function') {\r\n extraData = extraData();\r\n }\r\n params = {id: $el.attr('id'), key: vKey, extra: extraData};\r\n fnBefore = function (jqXHR) {\r\n self.ajaxAborted = false;\r\n self._raise('filepredelete', [vKey, jqXHR, extraData]);\r\n if (self._abort()) {\r\n jqXHR.abort();\r\n } else {\r\n $el.removeClass(errClass);\r\n $h.addCss($frame, 'file-uploading');\r\n $h.addCss($el, 'disabled ' + origClass);\r\n }\r\n };\r\n fnSuccess = function (data, textStatus, jqXHR) {\r\n var n, cap;\r\n if (!$h.isEmpty(data) && !$h.isEmpty(data.error)) {\r\n params.jqXHR = jqXHR;\r\n params.response = data;\r\n errMsg = self._parseError(op, jqXHR, self.msgDeleteError, fileName);\r\n self._showFileError(errMsg, params, 'filedeleteerror');\r\n $frame.removeClass('file-uploading');\r\n $el.removeClass('disabled ' + origClass).addClass(errClass);\r\n resetProgress();\r\n return;\r\n }\r\n $frame.removeClass('file-uploading').addClass('file-deleted');\r\n $frame.fadeOut('slow', function () {\r\n index = parseInt(($frame.attr('data-fileindex')).replace($h.INIT_FLAG, ''));\r\n self.previewCache.unset(index);\r\n self._deleteFileIndex($frame);\r\n n = self.previewCache.count(true);\r\n cap = n > 0 ? self._getMsgSelected(n) : '';\r\n self._setCaption(cap);\r\n self._raise('filedeleted', [vKey, jqXHR, extraData]);\r\n self._clearObjects($frame);\r\n $frame.remove();\r\n resetProgress();\r\n });\r\n };\r\n fnError = function (jqXHR, textStatus, errorThrown) {\r\n var errMsg = self._parseError(op, jqXHR, errorThrown, fileName);\r\n params.jqXHR = jqXHR;\r\n params.response = {};\r\n self._showFileError(errMsg, params, 'filedeleteerror');\r\n $frame.removeClass('file-uploading');\r\n $el.removeClass('disabled ' + origClass).addClass(errClass);\r\n resetProgress();\r\n };\r\n self._initAjaxSettings();\r\n self._mergeAjaxCallback('beforeSend', fnBefore, 'delete');\r\n self._mergeAjaxCallback('success', fnSuccess, 'delete');\r\n self._mergeAjaxCallback('error', fnError, 'delete');\r\n settings = $.extend(true, {}, {\r\n url: self._encodeURI(vUrl),\r\n type: 'POST',\r\n dataType: 'json',\r\n data: $.extend(true, {}, {key: vKey}, extraData)\r\n }, self._ajaxDeleteSettings);\r\n self._handler($el, 'click', function () {\r\n if (!self._validateMinCount()) {\r\n return false;\r\n }\r\n self.ajaxAborted = false;\r\n self._raise('filebeforedelete', [vKey, extraData]);\r\n if (self.ajaxAborted instanceof Promise) {\r\n self.ajaxAborted.then(function (result) {\r\n if (!result) {\r\n $.ajax(settings);\r\n }\r\n });\r\n } else {\r\n if (!self.ajaxAborted) {\r\n $.ajax(settings);\r\n }\r\n }\r\n });\r\n });\r\n },\r\n _hideFileIcon: function () {\r\n var self = this;\r\n if (self.overwriteInitial) {\r\n self.$captionContainer.removeClass('icon-visible');\r\n }\r\n },\r\n _showFileIcon: function () {\r\n var self = this;\r\n $h.addCss(self.$captionContainer, 'icon-visible');\r\n },\r\n _getSize: function (bytes, sizes) {\r\n var self = this, size = parseFloat(bytes), i, func = self.fileSizeGetter, out;\r\n if (!$.isNumeric(bytes) || !$.isNumeric(size)) {\r\n return '';\r\n }\r\n if (typeof func === 'function') {\r\n out = func(size);\r\n } else {\r\n if (size === 0) {\r\n out = '0.00 B';\r\n } else {\r\n if (!sizes) {\r\n sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n }\r\n i = Math.floor(Math.log(size) / Math.log(1024));\r\n out = (size / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i];\r\n }\r\n }\r\n return self._getLayoutTemplate('size').replace('{sizeText}', out);\r\n },\r\n _getFileType: function (ftype) {\r\n var self = this;\r\n return self.mimeTypeAliases[ftype] || ftype;\r\n },\r\n _generatePreviewTemplate: function (\r\n cat,\r\n data,\r\n fname,\r\n ftype,\r\n previewId,\r\n fileId,\r\n isError,\r\n size,\r\n frameClass,\r\n foot,\r\n ind,\r\n templ,\r\n attrs,\r\n zoomData\r\n ) {\r\n var self = this, caption = self.slug(fname), prevContent, zoomContent = '', styleAttribs = '',\r\n screenW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n config, title = caption, alt = caption, typeCss = 'type-default', getContent,\r\n footer = foot || self._renderFileFooter(cat, caption, size, 'auto', isError),\r\n forcePrevIcon = self.preferIconicPreview, forceZoomIcon = self.preferIconicZoomPreview,\r\n newCat = forcePrevIcon ? 'other' : cat;\r\n config = screenW < 400 ? (self.previewSettingsSmall[newCat] || self.defaults.previewSettingsSmall[newCat]) :\r\n (self.previewSettings[newCat] || self.defaults.previewSettings[newCat]);\r\n if (config) {\r\n $.each(config, function (key, val) {\r\n styleAttribs += key + ':' + val + ';';\r\n });\r\n }\r\n getContent = function (c, d, zoom, frameCss) {\r\n var id = zoom ? 'zoom-' + previewId : previewId, tmplt = self._getPreviewTemplate(c),\r\n css = (frameClass || '') + ' ' + frameCss;\r\n if (self.frameClass) {\r\n css = self.frameClass + ' ' + css;\r\n }\r\n if (zoom) {\r\n css = css.replace(' ' + $h.SORT_CSS, '');\r\n }\r\n tmplt = self._parseFilePreviewIcon(tmplt, fname);\r\n if (cat === 'object' && !ftype) {\r\n $.each(self.defaults.fileTypeSettings, function (key, func) {\r\n if (key === 'object' || key === 'other') {\r\n return;\r\n }\r\n if (func(fname, ftype)) {\r\n typeCss = 'type-' + key;\r\n }\r\n });\r\n }\r\n if (!$h.isEmpty(attrs)) {\r\n if (attrs.title !== undefined && attrs.title !== null) {\r\n title = attrs.title;\r\n }\r\n if (attrs.alt !== undefined && attrs.alt !== null) {\r\n title = attrs.alt;\r\n }\r\n }\r\n return tmplt.setTokens({\r\n 'previewId': id,\r\n 'caption': caption,\r\n 'title': title,\r\n 'alt': alt,\r\n 'frameClass': css,\r\n 'type': self._getFileType(ftype),\r\n 'fileindex': ind,\r\n 'fileid': fileId || '',\r\n 'typeCss': typeCss,\r\n 'footer': footer,\r\n 'data': d,\r\n 'template': templ || cat,\r\n 'style': styleAttribs ? 'style=\"' + styleAttribs + '\"' : ''\r\n });\r\n };\r\n ind = ind || previewId.slice(previewId.lastIndexOf('-') + 1);\r\n if (self.fileActionSettings.showZoom) {\r\n zoomContent = getContent((forceZoomIcon ? 'other' : cat), zoomData ? zoomData : data, true,\r\n 'kv-zoom-thumb');\r\n }\r\n zoomContent = '\\n' + self._getLayoutTemplate('zoomCache').replace('{zoomContent}', zoomContent);\r\n if (typeof self.sanitizeZoomCache === 'function') {\r\n zoomContent = self.sanitizeZoomCache(zoomContent);\r\n }\r\n prevContent = getContent((forcePrevIcon ? 'other' : cat), data, false, 'kv-preview-thumb');\r\n return prevContent.setTokens({zoomCache: zoomContent});\r\n },\r\n _addToPreview: function ($preview, content) {\r\n var self = this, $el;\r\n content = $h.cspBuffer.stash(content);\r\n $el = self.reversePreviewOrder ? $preview.prepend(content) : $preview.append(content);\r\n $h.cspBuffer.apply($preview);\r\n return $el;\r\n },\r\n _previewDefault: function (file, isDisabled) {\r\n var self = this, $preview = self.$preview;\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n var fname = $h.getFileName(file), ftype = file ? file.type : '', content, size = file.size || 0,\r\n caption = self._getFileName(file, ''), isError = isDisabled === true && !self.isAjaxUpload,\r\n data = $h.createObjectURL(file), fileId = self.fileManager.getId(file),\r\n previewId = self._getThumbId(fileId);\r\n self._clearDefaultPreview();\r\n content = self._generatePreviewTemplate('other', data, fname, ftype, previewId, fileId, isError, size);\r\n self._addToPreview($preview, content);\r\n self._setThumbAttr(previewId, caption, size);\r\n if (isDisabled === true && self.isAjaxUpload) {\r\n self._setThumbStatus(self._getFrame(previewId), 'Error');\r\n }\r\n },\r\n _previewFile: function (i, file, theFile, data, fileInfo) {\r\n if (!this.showPreview) {\r\n return;\r\n }\r\n var self = this, fname = $h.getFileName(file), ftype = fileInfo.type, caption = fileInfo.name,\r\n cat = self._parseFileType(ftype, fname), content, $preview = self.$preview, fsize = file.size || 0,\r\n iData = cat === 'image' ? theFile.target.result : data, fm = self.fileManager,\r\n fileId = fm.getId(file), previewId = self._getThumbId(fileId);\r\n /** @namespace window.DOMPurify */\r\n content = self._generatePreviewTemplate(cat, iData, fname, ftype, previewId, fileId, false, fsize);\r\n self._clearDefaultPreview();\r\n self._addToPreview($preview, content);\r\n var $thumb = self._getFrame(previewId);\r\n self._validateImageOrientation($thumb.find('img'), file, previewId, fileId, caption, ftype, fsize, iData);\r\n self._setThumbAttr(previewId, caption, fsize);\r\n self._initSortable();\r\n },\r\n _setThumbAttr: function (id, caption, size) {\r\n var self = this, $frame = self._getFrame(id);\r\n if ($frame.length) {\r\n size = size && size > 0 ? self._getSize(size) : '';\r\n $frame.data({'caption': caption, 'size': size});\r\n }\r\n },\r\n _setInitThumbAttr: function () {\r\n var self = this, data = self.previewCache.data, len = self.previewCache.count(true), config,\r\n caption, size, previewId;\r\n if (len === 0) {\r\n return;\r\n }\r\n for (var i = 0; i < len; i++) {\r\n config = data.config[i];\r\n previewId = self.previewInitId + '-' + $h.INIT_FLAG + i;\r\n caption = $h.ifSet('caption', config, $h.ifSet('filename', config));\r\n size = $h.ifSet('size', config);\r\n self._setThumbAttr(previewId, caption, size);\r\n }\r\n },\r\n _slugDefault: function (text) {\r\n // noinspection RegExpRedundantEscape\r\n return $h.isEmpty(text, true) ? '' : String(text).replace(/[\\[\\]\\/\\{}:;#%=\\(\\)\\*\\+\\?\\\\\\^\\$\\|<>&\"']/g, '_');\r\n },\r\n _updateFileDetails: function (numFiles, skipRaiseEvent) {\r\n var self = this, $el = self.$element, label, n, log, nFiles, file,\r\n name = ($h.isIE(9) && $h.findFileName($el.val())) || ($el[0].files[0] && $el[0].files[0].name);\r\n if (!name && self.fileManager.count() > 0) {\r\n file = self.fileManager.getFirstFile();\r\n label = file.nameFmt;\r\n } else {\r\n label = name ? self.slug(name) : '_';\r\n }\r\n n = self.isAjaxUpload ? self.fileManager.count() : numFiles;\r\n nFiles = self.previewCache.count(true) + n;\r\n log = n === 1 ? label : self._getMsgSelected(nFiles, !self.isAjaxUpload && !self.isError);\r\n if (self.isError) {\r\n self.$previewContainer.removeClass('file-thumb-loading');\r\n self._initCapStatus();\r\n self.$previewStatus.html('');\r\n self.$captionContainer.removeClass('icon-visible');\r\n } else {\r\n self._showFileIcon();\r\n }\r\n self._setCaption(log, self.isError);\r\n self.$container.removeClass('file-input-new file-input-ajax-new');\r\n if (!skipRaiseEvent) {\r\n self._raise('fileselect', [numFiles, label]);\r\n }\r\n if (self.previewCache.count(true)) {\r\n self._initPreviewActions();\r\n }\r\n },\r\n _setThumbStatus: function ($thumb, status) {\r\n var self = this;\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n var icon = 'indicator' + status, msg = icon + 'Title',\r\n css = 'file-preview-' + status.toLowerCase(),\r\n $indicator = $thumb.find('.file-upload-indicator'),\r\n config = self.fileActionSettings;\r\n $thumb.removeClass('file-preview-success file-preview-error file-preview-paused file-preview-loading');\r\n if (status === 'Success') {\r\n $thumb.find('.file-drag-handle').remove();\r\n }\r\n $h.setHtml($indicator, config[icon]);\r\n $indicator.attr('title', config[msg]);\r\n $thumb.addClass(css);\r\n if (status === 'Error' && !self.retryErrorUploads) {\r\n $thumb.find('.kv-file-upload').attr('disabled', true);\r\n }\r\n },\r\n _setProgressCancelled: function () {\r\n var self = this;\r\n self._setProgress(101, self.$progress, self.msgCancelled);\r\n },\r\n _setProgress: function (p, $el, error, stats) {\r\n var self = this;\r\n $el = $el || self.$progress;\r\n if (!$el.length) {\r\n return;\r\n }\r\n var pct = Math.min(p, 100), out, pctLimit = self.progressUploadThreshold,\r\n t = p <= 100 ? self.progressTemplate : self.progressCompleteTemplate,\r\n template = pct < 100 ? self.progressTemplate :\r\n (error ? (self.paused ? self.progressPauseTemplate : self.progressErrorTemplate) : t);\r\n if (p >= 100) {\r\n stats = '';\r\n }\r\n if (!$h.isEmpty(template)) {\r\n if (pctLimit && pct > pctLimit && p <= 100) {\r\n out = template.setTokens({'percent': pctLimit, 'status': self.msgUploadThreshold});\r\n } else {\r\n out = template.setTokens({'percent': pct, 'status': (p > 100 ? self.msgUploadEnd : pct + '%')});\r\n }\r\n stats = stats || '';\r\n out = out.setTokens({stats: stats});\r\n $h.setHtml($el, out);\r\n if (error) {\r\n $h.setHtml($el.find('[role=\"progressbar\"]'), error);\r\n }\r\n }\r\n },\r\n _hasFiles: function () {\r\n var el = this.$element[0];\r\n return !!(el && el.files && el.files.length);\r\n },\r\n _setFileDropZoneTitle: function () {\r\n var self = this, $zone = self.$container.find('.file-drop-zone'), title = self.dropZoneTitle, strFiles;\r\n if (self.isClickable) {\r\n strFiles = $h.isEmpty(self.$element.attr('multiple')) ? self.fileSingle : self.filePlural;\r\n title += self.dropZoneClickTitle.replace('{files}', strFiles);\r\n }\r\n $zone.find('.' + self.dropZoneTitleClass).remove();\r\n if (!self.showPreview || $zone.length === 0 || self.fileManager.count() > 0 || !self.dropZoneEnabled ||\r\n self.previewCache.count() > 0 || (!self.isAjaxUpload && self._hasFiles())) {\r\n return;\r\n }\r\n if ($zone.find($h.FRAMES).length === 0 && $h.isEmpty(self.defaultPreviewContent)) {\r\n $zone.prepend('
    ' + title + '
    ');\r\n }\r\n self.$container.removeClass('file-input-new');\r\n $h.addCss(self.$container, 'file-input-ajax-new');\r\n },\r\n _getStats: function (stats) {\r\n var self = this, pendingTime, t;\r\n if (!self.showUploadStats || !stats || !stats.bitrate) {\r\n return '';\r\n }\r\n t = self._getLayoutTemplate('stats');\r\n pendingTime = (!stats.elapsed || !stats.bps) ? self.msgCalculatingTime :\r\n self.msgPendingTime.setTokens({time: $h.getElapsed(Math.ceil(stats.pendingBytes / stats.bps))});\r\n\r\n return t.setTokens({\r\n uploadSpeed: stats.bitrate,\r\n pendingTime: pendingTime\r\n });\r\n },\r\n _setResumableProgress: function (pct, stats, $thumb) {\r\n var self = this, rm = self.resumableManager, obj = $thumb ? rm : self,\r\n $prog = $thumb ? $thumb.find('.file-thumb-progress') : null;\r\n if (obj.lastProgress === 0) {\r\n obj.lastProgress = pct;\r\n }\r\n if (pct < obj.lastProgress) {\r\n pct = obj.lastProgress;\r\n }\r\n self._setProgress(pct, $prog, null, self._getStats(stats));\r\n obj.lastProgress = pct;\r\n },\r\n _toggleResumableProgress: function (template, message) {\r\n var self = this, $progress = self.$progress;\r\n if ($progress && $progress.length) {\r\n $h.setHtml($progress, template.setTokens({\r\n percent: 101,\r\n status: message,\r\n stats: ''\r\n }));\r\n }\r\n },\r\n _setFileUploadStats: function (id, pct, stats) {\r\n var self = this, $prog = self.$progress;\r\n if (!self.showPreview && (!$prog || !$prog.length)) {\r\n return;\r\n }\r\n var fm = self.fileManager, rm = self.resumableManager, $thumb = fm.getThumb(id), pctTot,\r\n totUpSize = 0, totSize = fm.getTotalSize(), totStats = $.extend(true, {}, stats);\r\n if (self.enableResumableUpload) {\r\n var loaded = stats.loaded, currUplSize = rm.getUploadedSize(), currTotSize = rm.file.size, totLoaded;\r\n loaded += currUplSize;\r\n totLoaded = fm.uploadedSize + loaded;\r\n pct = $h.round(100 * loaded / currTotSize);\r\n stats.pendingBytes = currTotSize - currUplSize;\r\n self._setResumableProgress(pct, stats, $thumb);\r\n pctTot = Math.floor(100 * totLoaded / totSize);\r\n totStats.pendingBytes = totSize - totLoaded;\r\n self._setResumableProgress(pctTot, totStats);\r\n } else {\r\n fm.setProgress(id, pct);\r\n $prog = $thumb && $thumb.length ? $thumb.find('.file-thumb-progress') : null;\r\n self._setProgress(pct, $prog, null, self._getStats(stats));\r\n $.each(fm.stats, function (id, cfg) {\r\n totUpSize += cfg.loaded;\r\n });\r\n totStats.pendingBytes = totSize - totUpSize;\r\n pctTot = $h.round(totUpSize / totSize * 100);\r\n self._setProgress(pctTot, null, null, self._getStats(totStats));\r\n }\r\n },\r\n _validateMinCount: function () {\r\n var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount();\r\n if (self.validateInitialCount && self.minFileCount > 0 && self._getFileCount(len - 1) < self.minFileCount) {\r\n self._noFilesError({});\r\n return false;\r\n }\r\n return true;\r\n },\r\n _getFileCount: function (fileCount, includeInitial) {\r\n var self = this, addCount = 0;\r\n if (includeInitial === undefined) {\r\n includeInitial = self.validateInitialCount && !self.overwriteInitial;\r\n }\r\n if (includeInitial) {\r\n addCount = self.previewCache.count(true);\r\n fileCount += addCount;\r\n }\r\n return fileCount;\r\n },\r\n _getFileId: function (file) {\r\n return $h.getFileId(file, this.generateFileId);\r\n },\r\n _getFileName: function (file, defaultValue) {\r\n var self = this, fileName = $h.getFileName(file);\r\n return fileName ? self.slug(fileName) : defaultValue;\r\n },\r\n _getFileNames: function (skipNull) {\r\n var self = this;\r\n return self.filenames.filter(function (n) {\r\n return (skipNull ? n !== undefined : n !== undefined && n !== null);\r\n });\r\n },\r\n _setPreviewError: function ($thumb, keepFile) {\r\n var self = this, removeFrame = self.removeFromPreviewOnError && !self.retryErrorUploads;\r\n if (!keepFile || removeFrame) {\r\n self.fileManager.remove($thumb);\r\n }\r\n if (!self.showPreview) {\r\n return;\r\n }\r\n if (removeFrame) {\r\n $thumb.remove();\r\n return;\r\n } else {\r\n self._setThumbStatus($thumb, 'Error');\r\n }\r\n self._refreshUploadButton($thumb);\r\n },\r\n _refreshUploadButton: function ($thumb) {\r\n var self = this, $btn = $thumb.find('.kv-file-upload'), cfg = self.fileActionSettings,\r\n icon = cfg.uploadIcon, title = cfg.uploadTitle;\r\n if (!$btn.length) {\r\n return;\r\n }\r\n if (self.retryErrorUploads) {\r\n icon = cfg.uploadRetryIcon;\r\n title = cfg.uploadRetryTitle;\r\n }\r\n $btn.attr('title', title);\r\n $h.setHtml($btn, icon);\r\n },\r\n _checkDimensions: function (i, chk, $img, $thumb, fname, type, params) {\r\n var self = this, msg, dim, tag = chk === 'Small' ? 'min' : 'max', limit = self[tag + 'Image' + type],\r\n $imgEl, isValid;\r\n if ($h.isEmpty(limit) || !$img.length) {\r\n return;\r\n }\r\n $imgEl = $img[0];\r\n dim = (type === 'Width') ? $imgEl.naturalWidth || $imgEl.width : $imgEl.naturalHeight || $imgEl.height;\r\n isValid = chk === 'Small' ? dim >= limit : dim <= limit;\r\n if (isValid) {\r\n return;\r\n }\r\n msg = self['msgImage' + type + chk].setTokens({'name': fname, 'size': limit});\r\n self._showFileError(msg, params);\r\n self._setPreviewError($thumb);\r\n },\r\n _getExifObj: function (data) {\r\n var self = this, exifObj, error = $h.logMessages.exifWarning;\r\n if (data.slice(0, 23) !== 'data:image/jpeg;base64,' && data.slice(0, 22) !== 'data:image/jpg;base64,') {\r\n exifObj = null;\r\n return;\r\n }\r\n try {\r\n exifObj = window.piexif ? window.piexif.load(data) : null;\r\n } catch (err) {\r\n exifObj = null;\r\n error = err && err.message || '';\r\n }\r\n if (!exifObj) {\r\n self._log($h.logMessages.badExifParser, {details: error});\r\n }\r\n return exifObj;\r\n },\r\n setImageOrientation: function ($img, $zoomImg, value, $thumb) {\r\n var self = this, invalidImg = !$img || !$img.length, invalidZoomImg = !$zoomImg || !$zoomImg.length, $mark,\r\n isHidden = false, $div, zoomOnly = invalidImg && $thumb && $thumb.attr('data-template') === 'image', ev;\r\n if (invalidImg && invalidZoomImg) {\r\n return;\r\n }\r\n ev = 'load.fileinputimageorient';\r\n if (zoomOnly) {\r\n $img = $zoomImg;\r\n $zoomImg = null;\r\n $img.css(self.previewSettings.image);\r\n $div = $(document.createElement('div')).appendTo($thumb.find('.kv-file-content'));\r\n $mark = $(document.createElement('span')).insertBefore($img);\r\n $img.css('visibility', 'hidden').removeClass('file-zoom-detail').appendTo($div);\r\n } else {\r\n isHidden = !$img.is(':visible');\r\n }\r\n $img.off(ev).on(ev, function () {\r\n if (isHidden) {\r\n self.$preview.removeClass('hide-content');\r\n $thumb.find('.kv-file-content').css('visibility', 'hidden');\r\n }\r\n var img = $img[0], zoomImg = $zoomImg && $zoomImg.length ? $zoomImg[0] : null,\r\n h = img.offsetHeight, w = img.offsetWidth, r = $h.getRotation(value);\r\n if (isHidden) {\r\n $thumb.find('.kv-file-content').css('visibility', 'visible');\r\n self.$preview.addClass('hide-content');\r\n }\r\n $img.data('orientation', value);\r\n if (zoomImg) {\r\n $zoomImg.data('orientation', value);\r\n }\r\n if (value < 5) {\r\n $h.setTransform(img, r);\r\n $h.setTransform(zoomImg, r);\r\n return;\r\n }\r\n var offsetAngle = Math.atan(w / h), origFactor = Math.sqrt(Math.pow(h, 2) + Math.pow(w, 2)),\r\n scale = !origFactor ? 1 : (h / Math.cos(Math.PI / 2 + offsetAngle)) / origFactor,\r\n s = ' scale(' + Math.abs(scale) + ')';\r\n $h.setTransform(img, r + s);\r\n $h.setTransform(zoomImg, r + s);\r\n if (zoomOnly) {\r\n $img.css('visibility', 'visible').insertAfter($mark).addClass('file-zoom-detail');\r\n $mark.remove();\r\n $div.remove();\r\n }\r\n });\r\n },\r\n _validateImageOrientation: function ($img, file, previewId, fileId, caption, ftype, fsize, iData) {\r\n var self = this, exifObj = null, value, autoOrientImage = self.autoOrientImage, selector;\r\n if (self.canOrientImage) {\r\n $img.css('image-orientation', (autoOrientImage ? 'from-image' : 'none'));\r\n self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj);\r\n return;\r\n }\r\n selector = $h.getZoomSelector(previewId, ' img');\r\n exifObj = autoOrientImage ? self._getExifObj(iData) : null;\r\n value = exifObj ? exifObj['0th'][piexif.ImageIFD.Orientation] : null; // jshint ignore:line\r\n if (!value) {\r\n self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj);\r\n return;\r\n }\r\n self.setImageOrientation($img, $(selector), value, self._getFrame(previewId));\r\n self._raise('fileimageoriented', {'$img': $img, 'file': file});\r\n self._validateImage(previewId, fileId, caption, ftype, fsize, iData, exifObj);\r\n },\r\n _validateImage: function (previewId, fileId, fname, ftype, fsize, iData, exifObj) {\r\n var self = this, $preview = self.$preview, params, w1, w2, $thumb = self._getFrame(previewId),\r\n i = $thumb.attr('data-fileindex'), $img = $thumb.find('img');\r\n fname = fname || 'Untitled';\r\n $img.one('load', function () {\r\n w1 = $thumb.width();\r\n w2 = $preview.width();\r\n if (w1 > w2) {\r\n $img.css('width', '100%');\r\n }\r\n params = {ind: i, id: previewId, fileId: fileId};\r\n self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Width', params);\r\n self._checkDimensions(i, 'Small', $img, $thumb, fname, 'Height', params);\r\n if (!self.resizeImage) {\r\n self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Width', params);\r\n self._checkDimensions(i, 'Large', $img, $thumb, fname, 'Height', params);\r\n }\r\n self._raise('fileimageloaded', [previewId]);\r\n self.fileManager.addImage(fileId, {\r\n ind: i,\r\n img: $img,\r\n thumb: $thumb,\r\n pid: previewId,\r\n typ: ftype,\r\n siz: fsize,\r\n validated: false,\r\n imgData: iData,\r\n exifObj: exifObj\r\n });\r\n $thumb.data('exif', exifObj);\r\n self._validateAllImages();\r\n }).one('error', function () {\r\n self._raise('fileimageloaderror', [previewId]);\r\n });\r\n },\r\n _validateAllImages: function () {\r\n var self = this, counter = {val: 0}, numImgs = self.fileManager.getImageCount(), fsize,\r\n minSize = self.resizeIfSizeMoreThan;\r\n if (numImgs !== self.fileManager.totalImages) {\r\n return;\r\n }\r\n self._raise('fileimagesloaded');\r\n if (!self.resizeImage) {\r\n return;\r\n }\r\n $.each(self.fileManager.loadedImages, function (id, config) {\r\n if (!config.validated) {\r\n fsize = config.siz;\r\n if (fsize && fsize > minSize * 1000) {\r\n self._getResizedImage(id, config, counter, numImgs);\r\n }\r\n config.validated = true;\r\n }\r\n });\r\n },\r\n _getResizedImage: function (id, config, counter, numImgs) {\r\n var self = this, img = $(config.img)[0], width = img.naturalWidth, height = img.naturalHeight, blob,\r\n ratio = 1, maxWidth = self.maxImageWidth || width, maxHeight = self.maxImageHeight || height,\r\n isValidImage = !!(width && height), chkWidth, chkHeight, canvas = self.imageCanvas, dataURI,\r\n context = self.imageCanvasContext, type = config.typ, pid = config.pid, ind = config.ind,\r\n $thumb = config.thumb, throwError, msg, exifObj = config.exifObj, exifStr, file, params, evParams;\r\n throwError = function (msg, params, ev) {\r\n if (self.isAjaxUpload) {\r\n self._showFileError(msg, params, ev);\r\n } else {\r\n self._showError(msg, params, ev);\r\n }\r\n self._setPreviewError($thumb);\r\n };\r\n file = self.fileManager.getFile(id);\r\n params = {id: pid, 'index': ind, fileId: id};\r\n evParams = [id, pid, ind];\r\n if (!file || !isValidImage || (width <= maxWidth && height <= maxHeight)) {\r\n if (isValidImage && file) {\r\n self._raise('fileimageresized', evParams);\r\n }\r\n counter.val++;\r\n if (counter.val === numImgs) {\r\n self._raise('fileimagesresized');\r\n }\r\n if (!isValidImage) {\r\n throwError(self.msgImageResizeError, params, 'fileimageresizeerror');\r\n return;\r\n }\r\n }\r\n type = type || self.resizeDefaultImageType;\r\n chkWidth = width > maxWidth;\r\n chkHeight = height > maxHeight;\r\n if (self.resizePreference === 'width') {\r\n ratio = chkWidth ? maxWidth / width : (chkHeight ? maxHeight / height : 1);\r\n } else {\r\n ratio = chkHeight ? maxHeight / height : (chkWidth ? maxWidth / width : 1);\r\n }\r\n self._resetCanvas();\r\n width *= ratio;\r\n height *= ratio;\r\n canvas.width = width;\r\n canvas.height = height;\r\n try {\r\n context.drawImage(img, 0, 0, width, height);\r\n dataURI = canvas.toDataURL(type, self.resizeQuality);\r\n if (exifObj) {\r\n exifStr = window.piexif.dump(exifObj);\r\n dataURI = window.piexif.insert(exifStr, dataURI);\r\n }\r\n blob = $h.dataURI2Blob(dataURI);\r\n self.fileManager.setFile(id, blob);\r\n self._raise('fileimageresized', evParams);\r\n counter.val++;\r\n if (counter.val === numImgs) {\r\n self._raise('fileimagesresized', [undefined, undefined]);\r\n }\r\n if (!(blob instanceof Blob)) {\r\n throwError(self.msgImageResizeError, params, 'fileimageresizeerror');\r\n }\r\n } catch (err) {\r\n counter.val++;\r\n if (counter.val === numImgs) {\r\n self._raise('fileimagesresized', [undefined, undefined]);\r\n }\r\n msg = self.msgImageResizeException.replace('{errors}', err.message);\r\n throwError(msg, params, 'fileimageresizeexception');\r\n }\r\n },\r\n _showProgress: function () {\r\n var self = this;\r\n if (self.$progress && self.$progress.length) {\r\n self.$progress.show();\r\n }\r\n },\r\n _hideProgress: function () {\r\n var self = this;\r\n if (self.$progress && self.$progress.length) {\r\n self.$progress.hide();\r\n }\r\n },\r\n _initBrowse: function ($container) {\r\n var self = this, $el = self.$element;\r\n if (self.showBrowse) {\r\n self.$btnFile = $container.find('.btn-file').append($el);\r\n } else {\r\n $el.appendTo($container).attr('tabindex', -1);\r\n $h.addCss($el, 'file-no-browse');\r\n }\r\n },\r\n _initClickable: function () {\r\n var self = this, $zone, $tmpZone;\r\n if (!self.isClickable) {\r\n return;\r\n }\r\n $zone = self.$dropZone;\r\n if (!self.isAjaxUpload) {\r\n $tmpZone = self.$preview.find('.file-default-preview');\r\n if ($tmpZone.length) {\r\n $zone = $tmpZone;\r\n }\r\n }\r\n\r\n $h.addCss($zone, 'clickable');\r\n $zone.attr('tabindex', -1);\r\n self._handler($zone, 'click', function (e) {\r\n var $tar = $(e.target);\r\n if (!self.$errorContainer.is(':visible') && (!$tar.parents(\r\n '.file-preview-thumbnails').length || $tar.parents(\r\n '.file-default-preview').length)) {\r\n self.$element.data('zoneClicked', true).trigger('click');\r\n $zone.blur();\r\n }\r\n });\r\n },\r\n _initCaption: function () {\r\n var self = this, cap = self.initialCaption || '';\r\n if (self.overwriteInitial || $h.isEmpty(cap)) {\r\n self.$caption.val('');\r\n return false;\r\n }\r\n self._setCaption(cap);\r\n return true;\r\n },\r\n _setCaption: function (content, isError) {\r\n var self = this, title, out, icon, n, cap, file;\r\n if (!self.$caption.length) {\r\n return;\r\n }\r\n self.$captionContainer.removeClass('icon-visible');\r\n if (isError) {\r\n title = $('
    ' + self.msgValidationError + '
    ').text();\r\n n = self.fileManager.count();\r\n if (n) {\r\n file = self.fileManager.getFirstFile();\r\n cap = n === 1 && file ? file.nameFmt : self._getMsgSelected(n);\r\n } else {\r\n cap = self._getMsgSelected(self.msgNo);\r\n }\r\n out = $h.isEmpty(content) ? cap : content;\r\n icon = '' + self.msgValidationErrorIcon + '';\r\n } else {\r\n if ($h.isEmpty(content)) {\r\n self.$caption.attr('title', '');\r\n return;\r\n }\r\n title = $('
    ' + content + '
    ').text();\r\n out = title;\r\n icon = self._getLayoutTemplate('fileIcon');\r\n }\r\n self.$captionContainer.addClass('icon-visible');\r\n self.$caption.attr('title', title).val(out);\r\n $h.setHtml(self.$captionIcon, icon);\r\n },\r\n _createContainer: function () {\r\n var self = this, attribs = {'class': 'file-input file-input-new' + (self.rtl ? ' kv-rtl' : '')},\r\n $container = $h.createElement($h.cspBuffer.stash(self._renderMain()));\r\n $h.cspBuffer.apply($container);\r\n $container.insertBefore(self.$element).attr(attribs);\r\n self._initBrowse($container);\r\n if (self.theme) {\r\n $container.addClass('theme-' + self.theme);\r\n }\r\n return $container;\r\n },\r\n _refreshContainer: function () {\r\n var self = this, $container = self.$container, $el = self.$element;\r\n $el.insertAfter($container);\r\n $h.setHtml($container, self._renderMain());\r\n self._initBrowse($container);\r\n self._validateDisabled();\r\n },\r\n _validateDisabled: function () {\r\n var self = this;\r\n self.$caption.attr({readonly: self.isDisabled});\r\n },\r\n _setTabIndex: function (type, html) {\r\n var self = this, index = self.tabIndexConfig[type];\r\n return html.setTokens({\r\n tabIndexConfig: index === undefined || index === null ? '' : 'tabindex=\"' + index + '\"'\r\n });\r\n },\r\n _renderMain: function () {\r\n var self = this,\r\n dropCss = self.dropZoneEnabled ? ' file-drop-zone' : 'file-drop-disabled',\r\n close = !self.showClose ? '' : self._getLayoutTemplate('close'),\r\n preview = !self.showPreview ? '' : self._getLayoutTemplate('preview')\r\n .setTokens({'class': self.previewClass, 'dropClass': dropCss}),\r\n css = self.isDisabled ? self.captionClass + ' file-caption-disabled' : self.captionClass,\r\n caption = self.captionTemplate.setTokens({'class': css + ' kv-fileinput-caption'});\r\n caption = self._setTabIndex('caption', caption);\r\n return self.mainTemplate.setTokens({\r\n 'class': self.mainClass + (!self.showBrowse && self.showCaption ? ' no-browse' : ''),\r\n 'preview': preview,\r\n 'close': close,\r\n 'caption': caption,\r\n 'upload': self._renderButton('upload'),\r\n 'remove': self._renderButton('remove'),\r\n 'cancel': self._renderButton('cancel'),\r\n 'pause': self._renderButton('pause'),\r\n 'browse': self._renderButton('browse')\r\n });\r\n\r\n },\r\n _renderButton: function (type) {\r\n var self = this, tmplt = self._getLayoutTemplate('btnDefault'), css = self[type + 'Class'],\r\n title = self[type + 'Title'], icon = self[type + 'Icon'], label = self[type + 'Label'],\r\n status = self.isDisabled ? ' disabled' : '', btnType = 'button';\r\n switch (type) {\r\n case 'remove':\r\n if (!self.showRemove) {\r\n return '';\r\n }\r\n break;\r\n case 'cancel':\r\n if (!self.showCancel) {\r\n return '';\r\n }\r\n css += ' kv-hidden';\r\n break;\r\n case 'pause':\r\n if (!self.showPause) {\r\n return '';\r\n }\r\n css += ' kv-hidden';\r\n break;\r\n case 'upload':\r\n if (!self.showUpload) {\r\n return '';\r\n }\r\n if (self.isAjaxUpload && !self.isDisabled) {\r\n tmplt = self._getLayoutTemplate('btnLink').replace('{href}', self.uploadUrl);\r\n } else {\r\n btnType = 'submit';\r\n }\r\n break;\r\n case 'browse':\r\n if (!self.showBrowse) {\r\n return '';\r\n }\r\n tmplt = self._getLayoutTemplate('btnBrowse');\r\n break;\r\n default:\r\n return '';\r\n }\r\n tmplt = self._setTabIndex(type, tmplt);\r\n\r\n css += type === 'browse' ? ' btn-file' : ' fileinput-' + type + ' fileinput-' + type + '-button';\r\n if (!$h.isEmpty(label)) {\r\n label = ' ' + label + '';\r\n }\r\n return tmplt.setTokens({\r\n 'type': btnType, 'css': css, 'title': title, 'status': status, 'icon': icon, 'label': label\r\n });\r\n },\r\n _renderThumbProgress: function () {\r\n var self = this;\r\n return '
    ' +\r\n self.progressInfoTemplate.setTokens({percent: 101, status: self.msgUploadBegin, stats: ''}) +\r\n '
    ';\r\n },\r\n _renderFileFooter: function (cat, caption, size, width, isError) {\r\n var self = this, config = self.fileActionSettings, rem = config.showRemove, drg = config.showDrag,\r\n upl = config.showUpload, zoom = config.showZoom, out, params,\r\n template = self._getLayoutTemplate('footer'), tInd = self._getLayoutTemplate('indicator'),\r\n ind = isError ? config.indicatorError : config.indicatorNew,\r\n title = isError ? config.indicatorErrorTitle : config.indicatorNewTitle,\r\n indicator = tInd.setTokens({'indicator': ind, 'indicatorTitle': title});\r\n size = self._getSize(size);\r\n params = {type: cat, caption: caption, size: size, width: width, progress: '', indicator: indicator};\r\n if (self.isAjaxUpload) {\r\n params.progress = self._renderThumbProgress();\r\n params.actions = self._renderFileActions(params, upl, false, rem, zoom, drg, false, false, false);\r\n } else {\r\n params.actions = self._renderFileActions(params, false, false, false, zoom, drg, false, false, false);\r\n }\r\n out = template.setTokens(params);\r\n out = $h.replaceTags(out, self.previewThumbTags);\r\n return out;\r\n },\r\n _renderFileActions: function (\r\n cfg,\r\n showUpl,\r\n showDwn,\r\n showDel,\r\n showZoom,\r\n showDrag,\r\n disabled,\r\n url,\r\n key,\r\n isInit,\r\n dUrl,\r\n dFile\r\n ) {\r\n var self = this;\r\n if (!cfg.type && isInit) {\r\n cfg.type = 'image';\r\n }\r\n if (self.enableResumableUpload) {\r\n showUpl = false;\r\n } else {\r\n if (typeof showUpl === 'function') {\r\n showUpl = showUpl(cfg);\r\n }\r\n }\r\n if (typeof showDwn === 'function') {\r\n showDwn = showDwn(cfg);\r\n }\r\n if (typeof showDel === 'function') {\r\n showDel = showDel(cfg);\r\n }\r\n if (typeof showZoom === 'function') {\r\n showZoom = showZoom(cfg);\r\n }\r\n if (typeof showDrag === 'function') {\r\n showDrag = showDrag(cfg);\r\n }\r\n if (!showUpl && !showDwn && !showDel && !showZoom && !showDrag) {\r\n return '';\r\n }\r\n var vUrl = url === false ? '' : ' data-url=\"' + url + '\"', btnZoom = '', btnDrag = '', css,\r\n vKey = key === false ? '' : ' data-key=\"' + key + '\"', btnDelete = '', btnUpload = '', btnDownload = '',\r\n template = self._getLayoutTemplate('actions'), config = self.fileActionSettings,\r\n otherButtons = self.otherActionButtons.setTokens({'dataKey': vKey, 'key': key}),\r\n removeClass = disabled ? config.removeClass + ' disabled' : config.removeClass;\r\n if (showDel) {\r\n btnDelete = self._getLayoutTemplate('actionDelete').setTokens({\r\n 'removeClass': removeClass,\r\n 'removeIcon': config.removeIcon,\r\n 'removeTitle': config.removeTitle,\r\n 'dataUrl': vUrl,\r\n 'dataKey': vKey,\r\n 'key': key\r\n });\r\n }\r\n if (showUpl) {\r\n btnUpload = self._getLayoutTemplate('actionUpload').setTokens({\r\n 'uploadClass': config.uploadClass,\r\n 'uploadIcon': config.uploadIcon,\r\n 'uploadTitle': config.uploadTitle\r\n });\r\n }\r\n if (showDwn) {\r\n btnDownload = self._getLayoutTemplate('actionDownload').setTokens({\r\n 'downloadClass': config.downloadClass,\r\n 'downloadIcon': config.downloadIcon,\r\n 'downloadTitle': config.downloadTitle,\r\n 'downloadUrl': dUrl || self.initialPreviewDownloadUrl\r\n });\r\n btnDownload = btnDownload.setTokens({'filename': dFile, 'key': key});\r\n }\r\n if (showZoom) {\r\n btnZoom = self._getLayoutTemplate('actionZoom').setTokens({\r\n 'zoomClass': config.zoomClass,\r\n 'zoomIcon': config.zoomIcon,\r\n 'zoomTitle': config.zoomTitle\r\n });\r\n }\r\n if (showDrag && isInit) {\r\n css = 'drag-handle-init ' + config.dragClass;\r\n btnDrag = self._getLayoutTemplate('actionDrag').setTokens({\r\n 'dragClass': css,\r\n 'dragTitle': config.dragTitle,\r\n 'dragIcon': config.dragIcon\r\n });\r\n }\r\n return template.setTokens({\r\n 'delete': btnDelete,\r\n 'upload': btnUpload,\r\n 'download': btnDownload,\r\n 'zoom': btnZoom,\r\n 'drag': btnDrag,\r\n 'other': otherButtons\r\n });\r\n },\r\n _browse: function (e) {\r\n var self = this;\r\n if (e && e.isDefaultPrevented() || !self._raise('filebrowse')) {\r\n return;\r\n }\r\n if (self.isError && !self.isAjaxUpload) {\r\n self.clear();\r\n }\r\n if (self.focusCaptionOnBrowse) {\r\n self.$captionContainer.focus();\r\n }\r\n },\r\n _change: function (e) {\r\n var self = this;\r\n $(document.body).off('focusin.fileinput focusout.fileinput');\r\n if (self.changeTriggered) {\r\n return;\r\n }\r\n self._setLoading('show');\r\n var $el = self.$element, isDragDrop = arguments.length > 1, isAjaxUpload = self.isAjaxUpload,\r\n tfiles, files = isDragDrop ? arguments[1] : $el[0].files, ctr = self.fileManager.count(),\r\n total, initCount, len, isSingleUpl = $h.isEmpty($el.attr('multiple')),\r\n maxCount = !isAjaxUpload && isSingleUpl ? 1 : self.maxFileCount, maxTotCount = self.maxTotalFileCount,\r\n inclAll = maxTotCount > 0 && maxTotCount > maxCount, flagSingle = (isSingleUpl && ctr > 0),\r\n throwError = function (mesg, file, previewId, index) {\r\n var p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files), {id: previewId, index: index}),\r\n p2 = {id: previewId, index: index, file: file, files: files};\r\n self.isPersistentError = true;\r\n self._setLoading('hide');\r\n return isAjaxUpload ? self._showFileError(mesg, p1) : self._showError(mesg, p2);\r\n },\r\n maxCountCheck = function (n, m, all) {\r\n var msg = all ? self.msgTotalFilesTooMany : self.msgFilesTooMany;\r\n msg = msg.replace('{m}', m).replace('{n}', n);\r\n self.isError = throwError(msg, null, null, null);\r\n self.$captionContainer.removeClass('icon-visible');\r\n self._setCaption('', true);\r\n self.$container.removeClass('file-input-new file-input-ajax-new');\r\n };\r\n self.reader = null;\r\n self._resetUpload();\r\n self._hideFileIcon();\r\n if (self.dropZoneEnabled) {\r\n self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove();\r\n }\r\n if (!isAjaxUpload) {\r\n if (e.target && e.target.files === undefined) {\r\n files = e.target.value ? [{name: e.target.value.replace(/^.+\\\\/, '')}] : [];\r\n } else {\r\n files = e.target.files || {};\r\n }\r\n }\r\n tfiles = files;\r\n if ($h.isEmpty(tfiles) || tfiles.length === 0) {\r\n if (!isAjaxUpload) {\r\n self.clear();\r\n }\r\n self._raise('fileselectnone');\r\n return;\r\n }\r\n self._resetErrors();\r\n len = tfiles.length;\r\n initCount = isAjaxUpload ? (self.fileManager.count() + len) : len;\r\n total = self._getFileCount(initCount, inclAll ? false : undefined);\r\n if (maxCount > 0 && total > maxCount) {\r\n if (!self.autoReplace || len > maxCount) {\r\n maxCountCheck((self.autoReplace && len > maxCount ? len : total), maxCount);\r\n return;\r\n }\r\n if (total > maxCount) {\r\n self._resetPreviewThumbs(isAjaxUpload);\r\n }\r\n } else {\r\n if (inclAll) {\r\n total = self._getFileCount(initCount, true);\r\n if (maxTotCount > 0 && total > maxTotCount) {\r\n if (!self.autoReplace || len > maxCount) {\r\n maxCountCheck((self.autoReplace && len > maxTotCount ? len : total), maxTotCount, true);\r\n return;\r\n }\r\n if (total > maxCount) {\r\n self._resetPreviewThumbs(isAjaxUpload);\r\n }\r\n }\r\n }\r\n if (!isAjaxUpload || flagSingle) {\r\n self._resetPreviewThumbs(false);\r\n if (flagSingle) {\r\n self.clearFileStack();\r\n }\r\n } else {\r\n if (isAjaxUpload && ctr === 0 && (!self.previewCache.count(true) || self.overwriteInitial)) {\r\n self._resetPreviewThumbs(true);\r\n }\r\n }\r\n }\r\n self.readFiles(tfiles);\r\n self._setLoading('hide');\r\n },\r\n _abort: function (params) {\r\n var self = this, data;\r\n if (self.ajaxAborted && typeof self.ajaxAborted === 'object' && self.ajaxAborted.message !== undefined) {\r\n data = $.extend(true, {}, self._getOutData(null), params);\r\n data.abortData = self.ajaxAborted.data || {};\r\n data.abortMessage = self.ajaxAborted.message;\r\n self._setProgress(101, self.$progress, self.msgCancelled);\r\n self._showFileError(self.ajaxAborted.message, data, 'filecustomerror');\r\n self.cancel();\r\n return true;\r\n }\r\n return !!self.ajaxAborted;\r\n },\r\n _resetFileStack: function () {\r\n var self = this, i = 0;\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this), ind = $thumb.attr('data-fileindex'), pid = $thumb.attr('id');\r\n if (ind === '-1' || ind === -1) {\r\n return;\r\n }\r\n if (!self._getThumbFile($thumb)) {\r\n $thumb.attr({'data-fileindex': i});\r\n i++;\r\n } else {\r\n $thumb.attr({'data-fileindex': '-1'});\r\n }\r\n self._getZoom(pid).attr({\r\n 'data-fileindex': $thumb.attr('data-fileindex')\r\n });\r\n });\r\n },\r\n _isFileSelectionValid: function (cnt) {\r\n var self = this;\r\n cnt = cnt || 0;\r\n if (self.required && !self.getFilesCount()) {\r\n self.$errorContainer.html('');\r\n self._showFileError(self.msgFileRequired);\r\n return false;\r\n }\r\n if (self.minFileCount > 0 && self._getFileCount(cnt) < self.minFileCount) {\r\n self._noFilesError({});\r\n return false;\r\n }\r\n return true;\r\n },\r\n _canPreview: function (file) {\r\n var self = this;\r\n if (!file || !self.showPreview || !self.$preview || !self.$preview.length) {\r\n return false;\r\n }\r\n var name = file.name || '', type = file.type || '', size = (file.size || 0) / 1000,\r\n cat = self._parseFileType(type, name), allowedTypes, allowedMimes, allowedExts, skipPreview,\r\n types = self.allowedPreviewTypes, mimes = self.allowedPreviewMimeTypes,\r\n exts = self.allowedPreviewExtensions || [], dTypes = self.disabledPreviewTypes,\r\n dMimes = self.disabledPreviewMimeTypes, dExts = self.disabledPreviewExtensions || [],\r\n maxSize = self.maxFilePreviewSize && parseFloat(self.maxFilePreviewSize) || 0,\r\n expAllExt = new RegExp('\\\\.(' + exts.join('|') + ')$', 'i'),\r\n expDisExt = new RegExp('\\\\.(' + dExts.join('|') + ')$', 'i');\r\n allowedTypes = !types || types.indexOf(cat) !== -1;\r\n allowedMimes = !mimes || mimes.indexOf(type) !== -1;\r\n allowedExts = !exts.length || $h.compare(name, expAllExt);\r\n skipPreview = (dTypes && dTypes.indexOf(cat) !== -1) || (dMimes && dMimes.indexOf(type) !== -1) ||\r\n (dExts.length && $h.compare(name, expDisExt)) || (maxSize && !isNaN(maxSize) && size > maxSize);\r\n return !skipPreview && (allowedTypes || allowedMimes || allowedExts);\r\n },\r\n addToStack: function (file, id) {\r\n this.fileManager.add(file, id);\r\n },\r\n clearFileStack: function () {\r\n var self = this;\r\n self.fileManager.clear();\r\n self._initResumableUpload();\r\n if (self.enableResumableUpload) {\r\n if (self.showPause === null) {\r\n self.showPause = true;\r\n }\r\n if (self.showCancel === null) {\r\n self.showCancel = false;\r\n }\r\n } else {\r\n self.showPause = false;\r\n if (self.showCancel === null) {\r\n self.showCancel = true;\r\n }\r\n }\r\n return self.$element;\r\n },\r\n getFileStack: function () {\r\n return this.fileManager.stack;\r\n },\r\n getFileList: function () {\r\n return this.fileManager.list();\r\n },\r\n getFilesSize: function () {\r\n return this.fileManager.getTotalSize();\r\n },\r\n getFilesCount: function (includeInitial) {\r\n var self = this, len = self.isAjaxUpload ? self.fileManager.count() : self._inputFileCount();\r\n if (includeInitial) {\r\n len += self.previewCache.count(true);\r\n }\r\n return self._getFileCount(len);\r\n },\r\n _initCapStatus: function (status) {\r\n var self = this, $cap = self.$caption;\r\n $cap.removeClass('is-valid file-processing');\r\n if (!status) {\r\n return;\r\n }\r\n if (status === 'processing') {\r\n $cap.addClass('file-processing');\r\n } else {\r\n $cap.addClass('is-valid');\r\n }\r\n },\r\n _setLoading: function (type) {\r\n var self = this;\r\n self.$previewStatus.html(type === 'hide' ? '' : self.msgProcessing);\r\n self.$container.removeClass('file-thumb-loading');\r\n self._initCapStatus(type === 'hide' ? '' : 'processing');\r\n if (type !== 'hide') {\r\n if (self.dropZoneEnabled) {\r\n self.$container.find('.file-drop-zone .' + self.dropZoneTitleClass).remove();\r\n }\r\n self.$container.addClass('file-thumb-loading');\r\n }\r\n },\r\n _initFileSelected: function () {\r\n var self = this, $el = self.$element, $body = $(document.body), ev = 'focusin.fileinput focusout.fileinput';\r\n if ($body.length) {\r\n $body.off(ev).on('focusout.fileinput', function () {\r\n self._setLoading('show');\r\n }).on('focusin.fileinput', function () {\r\n setTimeout(function () {\r\n if (!$el.val()) {\r\n self._setLoading('hide');\r\n self._setFileDropZoneTitle();\r\n }\r\n $body.off(ev);\r\n }, 2500);\r\n });\r\n } else {\r\n self._setLoading('hide');\r\n }\r\n },\r\n readFiles: function (files) {\r\n this.reader = new FileReader();\r\n var self = this, reader = self.reader, $container = self.$previewContainer,\r\n $status = self.$previewStatus, msgLoading = self.msgLoading, msgProgress = self.msgProgress,\r\n previewInitId = self.previewInitId, numFiles = files.length, settings = self.fileTypeSettings,\r\n readFile, fileTypes = self.allowedFileTypes, typLen = fileTypes ? fileTypes.length : 0,\r\n fileExt = self.allowedFileExtensions, strExt = $h.isEmpty(fileExt) ? '' : fileExt.join(', '),\r\n throwError = function (msg, file, previewId, index, fileId) {\r\n var $thumb, p1 = $.extend(true, {}, self._getOutData(null, {}, {}, files),\r\n {id: previewId, index: index, fileId: fileId}),\r\n p2 = {id: previewId, index: index, fileId: fileId, file: file, files: files};\r\n self._previewDefault(file, true);\r\n $thumb = self._getFrame(previewId, true);\r\n self._setLoading('hide');\r\n if (self.isAjaxUpload) {\r\n setTimeout(function () {\r\n readFile(index + 1);\r\n }, self.processDelay);\r\n } else {\r\n self.unlock();\r\n numFiles = 0;\r\n }\r\n if (self.removeFromPreviewOnError && $thumb.length) {\r\n $thumb.remove();\r\n } else {\r\n self._initFileActions();\r\n $thumb.find('.kv-file-upload').remove();\r\n }\r\n self.isPersistentError = true;\r\n self.isError = self.isAjaxUpload ? self._showFileError(msg, p1) : self._showError(msg, p2);\r\n self._updateFileDetails(numFiles);\r\n };\r\n self.fileManager.clearImages();\r\n $.each(files, function (key, file) {\r\n var func = self.fileTypeSettings.image;\r\n if (func && func(file.type)) {\r\n self.fileManager.totalImages++;\r\n }\r\n });\r\n readFile = function (i) {\r\n var $error = self.$errorContainer, errors, fm = self.fileManager;\r\n if (i >= numFiles) {\r\n self.unlock();\r\n if (self.duplicateErrors.length) {\r\n errors = '
  • ' + self.duplicateErrors.join('
  • ') + '
  • ';\r\n if ($error.find('ul').length === 0) {\r\n $h.setHtml($error, self.errorCloseButton + '');\r\n } else {\r\n $error.find('ul').append(errors);\r\n }\r\n $error.fadeIn(self.fadeDelay);\r\n self._handler($error.find('.kv-error-close'), 'click', function () {\r\n $error.fadeOut(self.fadeDelay);\r\n });\r\n self.duplicateErrors = [];\r\n }\r\n if (self.isAjaxUpload) {\r\n self._raise('filebatchselected', [fm.stack]);\r\n if (fm.count() === 0 && !self.isError) {\r\n self.reset();\r\n }\r\n } else {\r\n self._raise('filebatchselected', [files]);\r\n }\r\n $container.removeClass('file-thumb-loading');\r\n self._initCapStatus('valid');\r\n $status.html('');\r\n return;\r\n }\r\n self.lock(true);\r\n var file = files[i], id = self._getFileId(file), previewId = previewInitId + '-' + id, fSizeKB, j, msg,\r\n fnImage = settings.image, typ, chk, typ1, typ2,\r\n caption = self._getFileName(file, ''), fileSize = (file && file.size || 0) / 1000,\r\n fileExtExpr = '', previewData = $h.createObjectURL(file), fileCount = 0,\r\n strTypes = '', fileId, canLoad, fileReaderAborted = false,\r\n func, knownTypes = 0, isImage, txtFlag, processFileLoaded = function () {\r\n var isImageResized = !!fm.loadedImages[id], msg = msgProgress.setTokens({\r\n 'index': i + 1,\r\n 'files': numFiles,\r\n 'percent': 50,\r\n 'name': caption\r\n });\r\n setTimeout(function () {\r\n $status.html(msg);\r\n self._updateFileDetails(numFiles);\r\n readFile(i + 1);\r\n }, self.processDelay);\r\n if (self._raise('fileloaded', [file, previewId, id, i, reader]) && self.isAjaxUpload) {\r\n if (!isImageResized) {\r\n fm.add(file);\r\n }\r\n } else {\r\n if (isImageResized) {\r\n fm.removeFile(id);\r\n }\r\n }\r\n };\r\n if (!file) {\r\n return;\r\n }\r\n fileId = fm.getId(file);\r\n if (typLen > 0) {\r\n for (j = 0; j < typLen; j++) {\r\n typ1 = fileTypes[j];\r\n typ2 = self.msgFileTypes[typ1] || typ1;\r\n strTypes += j === 0 ? typ2 : ', ' + typ2;\r\n }\r\n }\r\n if (caption === false) {\r\n readFile(i + 1);\r\n return;\r\n }\r\n if (caption.length === 0) {\r\n msg = self.msgInvalidFileName.replace('{name}', $h.htmlEncode($h.getFileName(file), '[unknown]'));\r\n throwError(msg, file, previewId, i, fileId);\r\n return;\r\n }\r\n if (!$h.isEmpty(fileExt)) {\r\n fileExtExpr = new RegExp('\\\\.(' + fileExt.join('|') + ')$', 'i');\r\n }\r\n fSizeKB = fileSize.toFixed(2);\r\n if (self.isAjaxUpload && fm.exists(fileId) || self._getFrame(previewId, true).length) {\r\n var p2 = {id: previewId, index: i, fileId: fileId, file: file, files: files};\r\n msg = self.msgDuplicateFile.setTokens({name: caption, size: fSizeKB});\r\n if (self.isAjaxUpload) {\r\n self.duplicateErrors.push(msg);\r\n self.isDuplicateError = true;\r\n self._raise('fileduplicateerror', [file, fileId, caption, fSizeKB, previewId, i]);\r\n readFile(i + 1);\r\n self._updateFileDetails(numFiles);\r\n } else {\r\n self._showError(msg, p2);\r\n self.unlock();\r\n numFiles = 0;\r\n self._clearFileInput();\r\n self.reset();\r\n self._updateFileDetails(numFiles);\r\n }\r\n return;\r\n }\r\n if (self.maxFileSize > 0 && fileSize > self.maxFileSize) {\r\n msg = self.msgSizeTooLarge.setTokens({\r\n 'name': caption,\r\n 'size': fSizeKB,\r\n 'maxSize': self.maxFileSize\r\n });\r\n throwError(msg, file, previewId, i, fileId);\r\n return;\r\n }\r\n if (self.minFileSize !== null && fileSize <= $h.getNum(self.minFileSize)) {\r\n msg = self.msgSizeTooSmall.setTokens({\r\n 'name': caption,\r\n 'size': fSizeKB,\r\n 'minSize': self.minFileSize\r\n });\r\n throwError(msg, file, previewId, i, fileId);\r\n return;\r\n }\r\n if (!$h.isEmpty(fileTypes) && $h.isArray(fileTypes)) {\r\n for (j = 0; j < fileTypes.length; j += 1) {\r\n typ = fileTypes[j];\r\n func = settings[typ];\r\n fileCount += !func || (typeof func !== 'function') ? 0 : (func(file.type,\r\n $h.getFileName(file)) ? 1 : 0);\r\n }\r\n if (fileCount === 0) {\r\n msg = self.msgInvalidFileType.setTokens({name: caption, types: strTypes});\r\n throwError(msg, file, previewId, i, fileId);\r\n return;\r\n }\r\n }\r\n if (fileCount === 0 && !$h.isEmpty(fileExt) && $h.isArray(fileExt) && !$h.isEmpty(fileExtExpr)) {\r\n chk = $h.compare(caption, fileExtExpr);\r\n fileCount += $h.isEmpty(chk) ? 0 : chk.length;\r\n if (fileCount === 0) {\r\n msg = self.msgInvalidFileExtension.setTokens({name: caption, extensions: strExt});\r\n throwError(msg, file, previewId, i, fileId);\r\n return;\r\n }\r\n }\r\n if (!self._canPreview(file)) {\r\n canLoad = self.isAjaxUpload && self._raise('filebeforeload', [file, i, reader]);\r\n if (self.isAjaxUpload && canLoad) {\r\n fm.add(file);\r\n }\r\n if (self.showPreview && canLoad) {\r\n $container.addClass('file-thumb-loading');\r\n self._initCapStatus('processing');\r\n self._previewDefault(file);\r\n self._initFileActions();\r\n }\r\n setTimeout(function () {\r\n if (canLoad) {\r\n self._updateFileDetails(numFiles);\r\n }\r\n readFile(i + 1);\r\n self._raise('fileloaded', [file, previewId, id, i]);\r\n }, 10);\r\n return;\r\n }\r\n isImage = fnImage(file.type, caption);\r\n $status.html(msgLoading.replace('{index}', i + 1).replace('{files}', numFiles));\r\n $container.addClass('file-thumb-loading');\r\n self._initCapStatus('processing');\r\n reader.onerror = function (evt) {\r\n self._errorHandler(evt, caption);\r\n };\r\n reader.onload = function (theFile) {\r\n var hex, fileInfo, uint, byte, bytes = [], contents, mime, readImage = function () {\r\n var newReader = new FileReader();\r\n newReader.onerror = function (theFileNew) {\r\n self._errorHandler(theFileNew, caption);\r\n };\r\n newReader.onload = function (theFileNew) {\r\n if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {\r\n fileReaderAborted = true;\r\n self._resetCaption();\r\n reader.abort();\r\n $status.html('');\r\n $container.removeClass('file-thumb-loading');\r\n self._initCapStatus('valid');\r\n self.enable();\r\n return;\r\n }\r\n self._previewFile(i, file, theFileNew, previewData, fileInfo);\r\n self._initFileActions();\r\n processFileLoaded();\r\n };\r\n newReader.readAsDataURL(file);\r\n };\r\n fileInfo = {'name': caption, 'type': file.type};\r\n $.each(settings, function (k, f) {\r\n if (k !== 'object' && k !== 'other' && typeof f === 'function' && f(file.type, caption)) {\r\n knownTypes++;\r\n }\r\n });\r\n if (knownTypes === 0) { // auto detect mime types from content if no known file types detected\r\n uint = new Uint8Array(theFile.target.result);\r\n for (j = 0; j < uint.length; j++) {\r\n byte = uint[j].toString(16);\r\n bytes.push(byte);\r\n }\r\n hex = bytes.join('').toLowerCase().substring(0, 8);\r\n mime = $h.getMimeType(hex, '', '');\r\n if ($h.isEmpty(mime)) { // look for ascii text content\r\n contents = $h.arrayBuffer2String(reader.result);\r\n mime = $h.isSvg(contents) ? 'image/svg+xml' : $h.getMimeType(hex, contents, file.type);\r\n }\r\n fileInfo = {'name': caption, 'type': mime};\r\n isImage = fnImage(mime, '');\r\n if (isImage) {\r\n readImage(txtFlag);\r\n return;\r\n }\r\n }\r\n if (self.isAjaxUpload && !self._raise('filebeforeload', [file, i, reader])) {\r\n fileReaderAborted = true;\r\n self._resetCaption();\r\n reader.abort();\r\n $status.html('');\r\n $container.removeClass('file-thumb-loading');\r\n self._initCapStatus('valid');\r\n self.enable();\r\n return;\r\n }\r\n self._previewFile(i, file, theFile, previewData, fileInfo);\r\n self._initFileActions();\r\n processFileLoaded();\r\n };\r\n reader.onprogress = function (data) {\r\n if (data.lengthComputable) {\r\n var fact = (data.loaded / data.total) * 100, progress = Math.ceil(fact);\r\n msg = msgProgress.setTokens({\r\n 'index': i + 1,\r\n 'files': numFiles,\r\n 'percent': progress,\r\n 'name': caption\r\n });\r\n setTimeout(function () {\r\n if (!fileReaderAborted) {\r\n $status.html(msg);\r\n }\r\n }, self.processDelay);\r\n }\r\n };\r\n if (isImage) {\r\n reader.readAsDataURL(file);\r\n } else {\r\n reader.readAsArrayBuffer(file);\r\n }\r\n };\r\n\r\n readFile(0);\r\n self._updateFileDetails(numFiles, true);\r\n },\r\n lock: function (selectMode) {\r\n var self = this, $container = self.$container;\r\n self._resetErrors();\r\n self.disable();\r\n if (!selectMode && self.showCancel) {\r\n $container.find('.fileinput-cancel').show();\r\n }\r\n if (!selectMode && self.showPause) {\r\n $container.find('.fileinput-pause').show();\r\n }\r\n self._initCapStatus('processing');\r\n self._raise('filelock', [self.fileManager.stack, self._getExtraData()]);\r\n return self.$element;\r\n },\r\n unlock: function (reset) {\r\n var self = this, $container = self.$container;\r\n if (reset === undefined) {\r\n reset = true;\r\n }\r\n self.enable();\r\n $container.removeClass('is-locked');\r\n if (self.showCancel) {\r\n $container.find('.fileinput-cancel').hide();\r\n }\r\n if (self.showPause) {\r\n $container.find('.fileinput-pause').hide();\r\n }\r\n if (reset) {\r\n self._resetFileStack();\r\n }\r\n self._initCapStatus();\r\n self._raise('fileunlock', [self.fileManager.stack, self._getExtraData()]);\r\n return self.$element;\r\n },\r\n resume: function () {\r\n var self = this, fm = self.fileManager, flag = false, rm = self.resumableManager;\r\n fm.bpsLog = [];\r\n fm.bps = 0;\r\n if (!self.enableResumableUpload) {\r\n return self.$element;\r\n }\r\n if (self.paused) {\r\n self._toggleResumableProgress(self.progressPauseTemplate, self.msgUploadResume);\r\n } else {\r\n flag = true;\r\n }\r\n self.paused = false;\r\n if (flag) {\r\n self._toggleResumableProgress(self.progressInfoTemplate, self.msgUploadBegin);\r\n }\r\n setTimeout(function () {\r\n rm.upload();\r\n }, self.processDelay);\r\n return self.$element;\r\n },\r\n paste: function (e) {\r\n var self = this, ev = e.originalEvent, files = ev.clipboardData && ev.clipboardData.files || null;\r\n if (files) {\r\n self._dropFiles(e, files);\r\n }\r\n return self.$element;\r\n },\r\n pause: function () {\r\n var self = this, rm = self.resumableManager, xhr = self.ajaxRequests, len = xhr.length, i,\r\n pct = rm.getProgress(), actions = self.fileActionSettings, tm = self.taskManager,\r\n pool = tm.getPool(rm.id);\r\n if (!self.enableResumableUpload) {\r\n return self.$element;\r\n } else {\r\n if (pool) {\r\n pool.cancel();\r\n }\r\n }\r\n self._raise('fileuploadpaused', [self.fileManager, rm]);\r\n if (len > 0) {\r\n for (i = 0; i < len; i += 1) {\r\n self.paused = true;\r\n xhr[i].abort();\r\n }\r\n }\r\n if (self.showPreview) {\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this), t = self._getLayoutTemplate('stats'), stats,\r\n $indicator = $thumb.find('.file-upload-indicator');\r\n $thumb.removeClass('file-uploading');\r\n if ($indicator.attr('title') === actions.indicatorLoadingTitle) {\r\n self._setThumbStatus($thumb, 'Paused');\r\n stats = t.setTokens({pendingTime: self.msgPaused, uploadSpeed: ''});\r\n self.paused = true;\r\n self._setProgress(pct, $thumb.find('.file-thumb-progress'), pct + '%', stats);\r\n }\r\n if (!self._getThumbFile($thumb)) {\r\n $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled');\r\n }\r\n });\r\n }\r\n self._setProgress(101, self.$progress, self.msgPaused);\r\n return self.$element;\r\n },\r\n cancel: function () {\r\n var self = this, xhr = self.ajaxRequests,\r\n rm = self.resumableManager, tm = self.taskManager,\r\n pool = rm ? tm.getPool(rm.id) : undefined, len = xhr.length, i;\r\n\r\n if (self.enableResumableUpload && pool) {\r\n pool.cancel().done(function () {\r\n self._setProgressCancelled();\r\n });\r\n rm.reset();\r\n self._raise('fileuploadcancelled', [self.fileManager, rm]);\r\n } else {\r\n self._raise('fileuploadcancelled', [self.fileManager]);\r\n }\r\n self._initAjax();\r\n if (len > 0) {\r\n for (i = 0; i < len; i += 1) {\r\n self.cancelling = true;\r\n xhr[i].abort();\r\n }\r\n }\r\n self._getThumbs().each(function () {\r\n var $thumb = $(this), $prog = $thumb.find('.file-thumb-progress');\r\n $thumb.removeClass('file-uploading');\r\n self._setProgress(0, $prog);\r\n $prog.hide();\r\n if (!self._getThumbFile($thumb)) {\r\n $thumb.find('.kv-file-upload').removeClass('disabled').removeAttr('disabled');\r\n $thumb.find('.kv-file-remove').removeClass('disabled').removeAttr('disabled');\r\n }\r\n self.unlock();\r\n });\r\n setTimeout(function () {\r\n self._setProgressCancelled();\r\n }, self.processDelay);\r\n return self.$element;\r\n },\r\n clear: function () {\r\n var self = this, cap;\r\n if (!self._raise('fileclear')) {\r\n return;\r\n }\r\n self.$btnUpload.removeAttr('disabled');\r\n self._getThumbs().find('video,audio,img').each(function () {\r\n $h.cleanMemory($(this));\r\n });\r\n self._clearFileInput();\r\n self._resetUpload();\r\n self.clearFileStack();\r\n self.isDuplicateError = false;\r\n self.isPersistentError = false;\r\n self._resetErrors(true);\r\n if (self._hasInitialPreview()) {\r\n self._showFileIcon();\r\n self._resetPreview();\r\n self._initPreviewActions();\r\n self.$container.removeClass('file-input-new');\r\n } else {\r\n self._getThumbs().each(function () {\r\n self._clearObjects($(this));\r\n });\r\n if (self.isAjaxUpload) {\r\n self.previewCache.data = {};\r\n }\r\n self.$preview.html('');\r\n cap = (!self.overwriteInitial && self.initialCaption.length > 0) ? self.initialCaption : '';\r\n self.$caption.attr('title', '').val(cap);\r\n $h.addCss(self.$container, 'file-input-new');\r\n self._validateDefaultPreview();\r\n }\r\n if (self.$container.find($h.FRAMES).length === 0) {\r\n if (!self._initCaption()) {\r\n self.$captionContainer.removeClass('icon-visible');\r\n }\r\n }\r\n self._hideFileIcon();\r\n if (self.focusCaptionOnClear) {\r\n self.$captionContainer.focus();\r\n }\r\n self._setFileDropZoneTitle();\r\n self._raise('filecleared');\r\n return self.$element;\r\n },\r\n reset: function () {\r\n var self = this;\r\n if (!self._raise('filereset')) {\r\n return;\r\n }\r\n self.lastProgress = 0;\r\n self._resetPreview();\r\n self.$container.find('.fileinput-filename').text('');\r\n $h.addCss(self.$container, 'file-input-new');\r\n if (self.getFrames().length) {\r\n self.$container.removeClass('file-input-new');\r\n }\r\n self.clearFileStack();\r\n self._setFileDropZoneTitle();\r\n return self.$element;\r\n },\r\n disable: function () {\r\n var self = this, $container = self.$container;\r\n self.isDisabled = true;\r\n self._raise('filedisabled');\r\n self.$element.attr('disabled', 'disabled');\r\n $container.addClass('is-locked');\r\n $h.addCss($container.find('.btn-file'), 'disabled');\r\n $container.find('.kv-fileinput-caption').addClass('file-caption-disabled');\r\n $container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button')\r\n .attr('disabled', true);\r\n self._initDragDrop();\r\n return self.$element;\r\n },\r\n enable: function () {\r\n var self = this, $container = self.$container;\r\n self.isDisabled = false;\r\n self._raise('fileenabled');\r\n self.$element.removeAttr('disabled');\r\n $container.removeClass('is-locked');\r\n $container.find('.kv-fileinput-caption').removeClass('file-caption-disabled');\r\n $container.find('.fileinput-remove, .fileinput-upload, .file-preview-frame button')\r\n .removeAttr('disabled');\r\n $container.find('.btn-file').removeClass('disabled');\r\n self._initDragDrop();\r\n return self.$element;\r\n },\r\n upload: function () {\r\n var self = this, fm = self.fileManager, totLen = fm.count(), i, outData,\r\n hasExtraData = !$.isEmptyObject(self._getExtraData());\r\n fm.bpsLog = [];\r\n fm.bps = 0;\r\n if (!self.isAjaxUpload || self.isDisabled || !self._isFileSelectionValid(totLen)) {\r\n return;\r\n }\r\n self.lastProgress = 0;\r\n self._resetUpload();\r\n if (totLen === 0 && !hasExtraData) {\r\n self._showFileError(self.msgUploadEmpty);\r\n return;\r\n }\r\n self.cancelling = false;\r\n self._showProgress();\r\n self.lock();\r\n if (totLen === 0 && hasExtraData) {\r\n self._setProgress(2);\r\n self._uploadExtraOnly();\r\n return;\r\n }\r\n if (self.enableResumableUpload) {\r\n return self.resume();\r\n }\r\n if (self.uploadAsync || self.enableResumableUpload) {\r\n outData = self._getOutData(null);\r\n self._raise('filebatchpreupload', [outData]);\r\n self.fileBatchCompleted = false;\r\n self.uploadCache = [];\r\n $.each(self.getFileStack(), function (id) {\r\n var previewId = self._getThumbId(id);\r\n self.uploadCache.push({id: previewId, content: null, config: null, tags: null, append: true});\r\n });\r\n self.$preview.find('.file-preview-initial').removeClass($h.SORT_CSS);\r\n self._initSortable();\r\n }\r\n self._setProgress(2);\r\n self.hasInitData = false;\r\n if (self.uploadAsync) {\r\n i = 0;\r\n $.each(self.getFileStack(), function (id) {\r\n self._uploadSingle(i, id, true);\r\n i++;\r\n });\r\n return;\r\n }\r\n self._uploadBatch();\r\n return self.$element;\r\n },\r\n destroy: function () {\r\n var self = this, $form = self.$form, $cont = self.$container, $el = self.$element, ns = self.namespace;\r\n $(document).off(ns);\r\n $(window).off(ns);\r\n if ($form && $form.length) {\r\n $form.off(ns);\r\n }\r\n if (self.isAjaxUpload) {\r\n self._clearFileInput();\r\n }\r\n self._cleanup();\r\n self._initPreviewCache();\r\n $el.insertBefore($cont).off(ns).removeData();\r\n $cont.off().remove();\r\n return $el;\r\n },\r\n refresh: function (options) {\r\n var self = this, $el = self.$element;\r\n if (typeof options !== 'object' || $h.isEmpty(options)) {\r\n options = self.options;\r\n } else {\r\n options = $.extend(true, {}, self.options, options);\r\n }\r\n self._init(options, true);\r\n self._listen();\r\n return $el;\r\n },\r\n zoom: function (frameId) {\r\n var self = this, $frame = self._getFrame(frameId);\r\n self._showModal($frame);\r\n },\r\n getExif: function (frameId) {\r\n var self = this, $frame = self._getFrame(frameId);\r\n return $frame && $frame.data('exif') || null;\r\n },\r\n getFrames: function (cssFilter) {\r\n var self = this, $frames;\r\n cssFilter = cssFilter || '';\r\n $frames = self.$preview.find($h.FRAMES + cssFilter);\r\n if (self.reversePreviewOrder) {\r\n $frames = $($frames.get().reverse());\r\n }\r\n return $frames;\r\n },\r\n getPreview: function () {\r\n var self = this;\r\n return {\r\n content: self.initialPreview,\r\n config: self.initialPreviewConfig,\r\n tags: self.initialPreviewThumbTags\r\n };\r\n }\r\n };\r\n\r\n $.fn.fileinput = function (option) {\r\n if (!$h.hasFileAPISupport() && !$h.isIE(9)) {\r\n return;\r\n }\r\n var args = Array.apply(null, arguments), retvals = [];\r\n args.shift();\r\n this.each(function () {\r\n var self = $(this), data = self.data('fileinput'), options = typeof option === 'object' && option,\r\n theme = options.theme || self.data('theme'), l = {}, t = {},\r\n lang = options.language || self.data('language') || $.fn.fileinput.defaults.language || 'en', opt;\r\n if (!data) {\r\n if (theme) {\r\n t = $.fn.fileinputThemes[theme] || {};\r\n }\r\n if (lang !== 'en' && !$h.isEmpty($.fn.fileinputLocales[lang])) {\r\n l = $.fn.fileinputLocales[lang] || {};\r\n }\r\n opt = $.extend(true, {}, $.fn.fileinput.defaults, t, $.fn.fileinputLocales.en, l, options, self.data());\r\n data = new FileInput(this, opt);\r\n self.data('fileinput', data);\r\n }\r\n\r\n if (typeof option === 'string') {\r\n retvals.push(data[option].apply(data, args));\r\n }\r\n });\r\n switch (retvals.length) {\r\n case 0:\r\n return this;\r\n case 1:\r\n return retvals[0];\r\n default:\r\n return retvals;\r\n }\r\n };\r\n\r\n var IFRAME_ATTRIBS = 'class=\"kv-preview-data file-preview-pdf\" src=\"{renderer}?file={data}\" {style}',\r\n defBtnCss1 = 'btn btn-sm btn-kv ' + $h.defaultButtonCss(), defBtnCss2 = 'btn ' + $h.defaultButtonCss(true);\r\n\r\n $.fn.fileinput.defaults = {\r\n language: 'en',\r\n showCaption: true,\r\n showBrowse: true,\r\n showPreview: true,\r\n showRemove: true,\r\n showUpload: true,\r\n showUploadStats: true,\r\n showCancel: null,\r\n showPause: null,\r\n showClose: true,\r\n showUploadedThumbs: true,\r\n showConsoleLogs: false,\r\n browseOnZoneClick: false,\r\n autoReplace: false,\r\n autoOrientImage: function () { // applicable for JPEG images only and non ios safari\r\n var ua = window.navigator.userAgent, webkit = !!ua.match(/WebKit/i),\r\n iOS = !!ua.match(/iP(od|ad|hone)/i), iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\r\n return !iOSSafari;\r\n },\r\n autoOrientImageInitial: true,\r\n required: false,\r\n rtl: false,\r\n hideThumbnailContent: false,\r\n encodeUrl: true,\r\n focusCaptionOnBrowse: true,\r\n focusCaptionOnClear: true,\r\n generateFileId: null,\r\n previewClass: '',\r\n captionClass: '',\r\n frameClass: 'krajee-default',\r\n mainClass: '',\r\n mainTemplate: null,\r\n fileSizeGetter: null,\r\n initialCaption: '',\r\n initialPreview: [],\r\n initialPreviewDelimiter: '*$$*',\r\n initialPreviewAsData: false,\r\n initialPreviewFileType: 'image',\r\n initialPreviewConfig: [],\r\n initialPreviewThumbTags: [],\r\n previewThumbTags: {},\r\n initialPreviewShowDelete: true,\r\n initialPreviewDownloadUrl: '',\r\n removeFromPreviewOnError: false,\r\n deleteUrl: '',\r\n deleteExtraData: {},\r\n overwriteInitial: true,\r\n sanitizeZoomCache: function (content) {\r\n var $container = $h.createElement(content);\r\n $container.find('input,textarea,select,datalist,form,.file-thumbnail-footer').remove();\r\n return $container.html();\r\n },\r\n previewZoomButtonIcons: {\r\n prev: '',\r\n next: '',\r\n toggleheader: '',\r\n fullscreen: '',\r\n borderless: '',\r\n close: ''\r\n },\r\n previewZoomButtonClasses: {\r\n prev: 'btn btn-navigate',\r\n next: 'btn btn-navigate',\r\n toggleheader: defBtnCss1,\r\n fullscreen: defBtnCss1,\r\n borderless: defBtnCss1,\r\n close: defBtnCss1\r\n },\r\n previewTemplates: {},\r\n previewContentTemplates: {},\r\n preferIconicPreview: false,\r\n preferIconicZoomPreview: false,\r\n allowedFileTypes: null,\r\n allowedFileExtensions: null,\r\n allowedPreviewTypes: undefined,\r\n allowedPreviewMimeTypes: null,\r\n allowedPreviewExtensions: null,\r\n disabledPreviewTypes: undefined,\r\n disabledPreviewExtensions: ['msi', 'exe', 'com', 'zip', 'rar', 'app', 'vb', 'scr'],\r\n disabledPreviewMimeTypes: null,\r\n defaultPreviewContent: null,\r\n customLayoutTags: {},\r\n customPreviewTags: {},\r\n previewFileIcon: '',\r\n previewFileIconClass: 'file-other-icon',\r\n previewFileIconSettings: {},\r\n previewFileExtSettings: {},\r\n buttonLabelClass: 'hidden-xs',\r\n browseIcon: ' ',\r\n browseClass: 'btn btn-primary',\r\n removeIcon: '',\r\n removeClass: defBtnCss2,\r\n cancelIcon: '',\r\n cancelClass: defBtnCss2,\r\n pauseIcon: '',\r\n pauseClass: defBtnCss2,\r\n uploadIcon: '',\r\n uploadClass: defBtnCss2,\r\n uploadUrl: null,\r\n uploadUrlThumb: null,\r\n uploadAsync: true,\r\n uploadParamNames: {\r\n chunkCount: 'chunkCount',\r\n chunkIndex: 'chunkIndex',\r\n chunkSize: 'chunkSize',\r\n chunkSizeStart: 'chunkSizeStart',\r\n chunksUploaded: 'chunksUploaded',\r\n fileBlob: 'fileBlob',\r\n fileId: 'fileId',\r\n fileName: 'fileName',\r\n fileRelativePath: 'fileRelativePath',\r\n fileSize: 'fileSize',\r\n retryCount: 'retryCount'\r\n },\r\n maxAjaxThreads: 5,\r\n fadeDelay: 800,\r\n processDelay: 100,\r\n bitrateUpdateDelay: 500,\r\n queueDelay: 10, // must be lesser than process delay\r\n progressDelay: 0, // must be lesser than process delay\r\n enableResumableUpload: false,\r\n resumableUploadOptions: {\r\n fallback: null,\r\n testUrl: null, // used for checking status of chunks/ files previously / partially uploaded\r\n chunkSize: 2 * 1024, // in KB\r\n maxThreads: 4,\r\n maxRetries: 3,\r\n showErrorLog: true,\r\n retainErrorHistory: true, // display complete error history always unless user explicitly resets upload\r\n skipErrorsAndProceed: false // when set to true, files with errors will be skipped and upload will continue with other files\r\n },\r\n uploadExtraData: {},\r\n zoomModalHeight: 480,\r\n minImageWidth: null,\r\n minImageHeight: null,\r\n maxImageWidth: null,\r\n maxImageHeight: null,\r\n resizeImage: false,\r\n resizePreference: 'width',\r\n resizeQuality: 0.92,\r\n resizeDefaultImageType: 'image/jpeg',\r\n resizeIfSizeMoreThan: 0, // in KB\r\n minFileSize: -1,\r\n maxFileSize: 0,\r\n maxFilePreviewSize: 25600, // 25 MB\r\n minFileCount: 0,\r\n maxFileCount: 0,\r\n maxTotalFileCount: 0,\r\n validateInitialCount: false,\r\n msgValidationErrorClass: 'text-danger',\r\n msgValidationErrorIcon: ' ',\r\n msgErrorClass: 'file-error-message',\r\n progressThumbClass: 'progress-bar progress-bar-striped active progress-bar-animated',\r\n progressClass: 'progress-bar bg-success progress-bar-success progress-bar-striped active progress-bar-animated',\r\n progressInfoClass: 'progress-bar bg-info progress-bar-info progress-bar-striped active progress-bar-animated',\r\n progressCompleteClass: 'progress-bar bg-success progress-bar-success',\r\n progressPauseClass: 'progress-bar bg-primary progress-bar-primary progress-bar-striped active progress-bar-animated',\r\n progressErrorClass: 'progress-bar bg-danger progress-bar-danger',\r\n progressUploadThreshold: 99,\r\n previewFileType: 'image',\r\n elCaptionContainer: null,\r\n elCaptionText: null,\r\n elPreviewContainer: null,\r\n elPreviewImage: null,\r\n elPreviewStatus: null,\r\n elErrorContainer: null,\r\n errorCloseButton: undefined,\r\n slugCallback: null,\r\n dropZoneEnabled: true,\r\n dropZoneTitleClass: 'file-drop-zone-title',\r\n fileActionSettings: {},\r\n otherActionButtons: '',\r\n textEncoding: 'UTF-8',\r\n preProcessUpload: null,\r\n ajaxSettings: {},\r\n ajaxDeleteSettings: {},\r\n showAjaxErrorDetails: true,\r\n mergeAjaxCallbacks: false,\r\n mergeAjaxDeleteCallbacks: false,\r\n retryErrorUploads: true,\r\n reversePreviewOrder: false,\r\n usePdfRenderer: function () {\r\n var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\r\n return !!navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/i) || isIE11;\r\n },\r\n pdfRendererUrl: '',\r\n pdfRendererTemplate: '',\r\n tabIndexConfig: {\r\n browse: 500,\r\n remove: 500,\r\n upload: 500,\r\n cancel: null,\r\n pause: null,\r\n modal: -1\r\n }\r\n };\r\n\r\n // noinspection HtmlUnknownAttribute\r\n $.fn.fileinputLocales.en = {\r\n fileSingle: 'file',\r\n filePlural: 'files',\r\n browseLabel: 'Browse …',\r\n removeLabel: 'Remove',\r\n removeTitle: 'Clear all unprocessed files',\r\n cancelLabel: 'Cancel',\r\n cancelTitle: 'Abort ongoing upload',\r\n pauseLabel: 'Pause',\r\n pauseTitle: 'Pause ongoing upload',\r\n uploadLabel: 'Upload',\r\n uploadTitle: 'Upload selected files',\r\n msgNo: 'No',\r\n msgNoFilesSelected: 'No files selected',\r\n msgCancelled: 'Cancelled',\r\n msgPaused: 'Paused',\r\n msgPlaceholder: 'Select {files} ...',\r\n msgZoomModalHeading: 'Detailed Preview',\r\n msgFileRequired: 'You must select a file to upload.',\r\n msgSizeTooSmall: 'File \"{name}\" ({size} KB) is too small and must be larger than {minSize} KB.',\r\n msgSizeTooLarge: 'File \"{name}\" ({size} KB) exceeds maximum allowed upload size of {maxSize} KB.',\r\n msgFilesTooLess: 'You must select at least {n} {files} to upload.',\r\n msgFilesTooMany: 'Number of files selected for upload ({n}) exceeds maximum allowed limit of {m}.',\r\n msgTotalFilesTooMany: 'You can upload a maximum of {m} files ({n} files detected).',\r\n msgFileNotFound: 'File \"{name}\" not found!',\r\n msgFileSecured: 'Security restrictions prevent reading the file \"{name}\".',\r\n msgFileNotReadable: 'File \"{name}\" is not readable.',\r\n msgFilePreviewAborted: 'File preview aborted for \"{name}\".',\r\n msgFilePreviewError: 'An error occurred while reading the file \"{name}\".',\r\n msgInvalidFileName: 'Invalid or unsupported characters in file name \"{name}\".',\r\n msgInvalidFileType: 'Invalid type for file \"{name}\". Only \"{types}\" files are supported.',\r\n msgInvalidFileExtension: 'Invalid extension for file \"{name}\". Only \"{extensions}\" files are supported.',\r\n msgFileTypes: {\r\n 'image': 'image',\r\n 'html': 'HTML',\r\n 'text': 'text',\r\n 'video': 'video',\r\n 'audio': 'audio',\r\n 'flash': 'flash',\r\n 'pdf': 'PDF',\r\n 'object': 'object'\r\n },\r\n msgUploadAborted: 'The file upload was aborted',\r\n msgUploadThreshold: 'Processing …',\r\n msgUploadBegin: 'Initializing …',\r\n msgUploadEnd: 'Done',\r\n msgUploadResume: 'Resuming upload …',\r\n msgUploadEmpty: 'No valid data available for upload.',\r\n msgUploadError: 'Upload Error',\r\n msgDeleteError: 'Delete Error',\r\n msgProgressError: 'Error',\r\n msgValidationError: 'Validation Error',\r\n msgLoading: 'Loading file {index} of {files} …',\r\n msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.',\r\n msgSelected: '{n} {files} selected',\r\n msgProcessing: 'Processing ...',\r\n msgFoldersNotAllowed: 'Drag & drop files only! {n} folder(s) dropped were skipped.',\r\n msgImageWidthSmall: 'Width of image file \"{name}\" must be at least {size} px.',\r\n msgImageHeightSmall: 'Height of image file \"{name}\" must be at least {size} px.',\r\n msgImageWidthLarge: 'Width of image file \"{name}\" cannot exceed {size} px.',\r\n msgImageHeightLarge: 'Height of image file \"{name}\" cannot exceed {size} px.',\r\n msgImageResizeError: 'Could not get the image dimensions to resize.',\r\n msgImageResizeException: 'Error while resizing the image.
    {errors}
    ',\r\n msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',\r\n msgAjaxProgressError: '{operation} failed',\r\n msgDuplicateFile: 'File \"{name}\" of same size \"{size} KB\" has already been selected earlier. Skipping duplicate selection.',\r\n msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ',\r\n msgPendingTime: '{time} remaining',\r\n msgCalculatingTime: 'calculating time remaining',\r\n ajaxOperations: {\r\n deleteThumb: 'file delete',\r\n uploadThumb: 'file upload',\r\n uploadBatch: 'batch file upload',\r\n uploadExtra: 'form data upload'\r\n },\r\n dropZoneTitle: 'Drag & drop files here …',\r\n dropZoneClickTitle: '
    (or click to select {files})',\r\n previewZoomButtonTitles: {\r\n prev: 'View previous file',\r\n next: 'View next file',\r\n toggleheader: 'Toggle header',\r\n fullscreen: 'Toggle full screen',\r\n borderless: 'Toggle borderless mode',\r\n close: 'Close detailed preview'\r\n }\r\n };\r\n\r\n $.fn.fileinput.Constructor = FileInput;\r\n\r\n /**\r\n * Convert automatically file inputs with class 'file' into a bootstrap fileinput control.\r\n */\r\n $(document).ready(function () {\r\n var $input = $('input.file[type=file]');\r\n if ($input.length) {\r\n $input.fileinput();\r\n }\r\n });\r\n}));\r\n","/*!\n * FileInput Japanese Translations\n *\n * This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or\n * any HTML markup tags in the messages must not be converted or translated.\n *\n * @see http://github.com/kartik-v/bootstrap-fileinput\n * @author Yuta Hoshina \n *\n * NOTE: this file must be saved in UTF-8 encoding.\n * slugCallback\n * \\u4e00-\\u9fa5 : Kanji (Chinese characters)\n * \\u3040-\\u309f : Hiragana (Japanese syllabary)\n * \\u30a0-\\u30ff\\u31f0-\\u31ff : Katakana (including phonetic extension)\n * \\u3200-\\u32ff : Enclosed CJK Letters and Months\n * \\uff00-\\uffef : Halfwidth and Fullwidth Forms\n */\n(function ($) {\n \"use strict\";\n\n $.fn.fileinputLocales['ja'] = {\n fileSingle: 'ファイル',\n filePlural: 'ファイル',\n browseLabel: 'ファイルを選択 …',\n removeLabel: '削除',\n removeTitle: '選択したファイルを削除',\n cancelLabel: 'キャンセル',\n cancelTitle: 'アップロードをキャンセル',\n pauseLabel: 'Pause',\n pauseTitle: 'Pause ongoing upload',\n uploadLabel: 'アップロード',\n uploadTitle: '選択したファイルをアップロード',\n msgNo: 'いいえ',\n msgNoFilesSelected: 'ファイルが選択されていません',\n msgPaused: 'Paused',\n msgCancelled: 'キャンセル',\n msgPlaceholder: 'Select {files} ...',\r\n msgZoomModalHeading: 'プレビュー',\n msgFileRequired: 'ファイルを選択してください',\n msgSizeTooSmall: 'ファイル\"{name}\" ({size} KB)はアップロード可能な下限容量{minSize} KBより小さいです',\n msgSizeTooLarge: 'ファイル\"{name}\" ({size} KB)はアップロード可能な上限容量{maxSize} KBを超えています',\n msgFilesTooLess: '最低{n}個の{files}を選択してください',\n msgFilesTooMany: '選択したファイルの数({n}個)はアップロード可能な上限数({m}個)を超えています',\n msgTotalFilesTooMany: 'You can upload a maximum of {m} files ({n} files detected).',\n msgFileNotFound: 'ファイル\"{name}\"はありませんでした',\n msgFileSecured: 'ファイル\"{name}\"は読み取り権限がないため取得できません',\n msgFileNotReadable: 'ファイル\"{name}\"は読み込めません',\n msgFilePreviewAborted: 'ファイル\"{name}\"のプレビューを中止しました',\n msgFilePreviewError: 'ファイル\"{name}\"の読み込み中にエラーが発生しました',\n msgInvalidFileName: 'ファイル名に無効な文字が含まれています \"{name}\".',\n msgInvalidFileType: '\"{name}\"は無効なファイル形式です。\"{types}\"形式のファイルのみサポートしています',\n msgInvalidFileExtension: '\"{name}\"は無効な拡張子です。拡張子が\"{extensions}\"のファイルのみサポートしています',\n msgFileTypes: {\n 'image': 'image',\n 'html': 'HTML',\n 'text': 'text',\n 'video': 'video',\n 'audio': 'audio',\n 'flash': 'flash',\n 'pdf': 'PDF',\n 'object': 'object'\n },\n msgUploadAborted: 'ファイルのアップロードが中止されました',\n msgUploadThreshold: '処理中 …',\n msgUploadBegin: '初期化中 …',\n msgUploadEnd: '完了',\n msgUploadResume: 'Resuming upload …',\n msgUploadEmpty: 'アップロードに有効なデータがありません',\n msgUploadError: 'Upload Error',\r\n msgDeleteError: 'Delete Error',\r\n msgProgressError: 'エラー',\n msgValidationError: '検証エラー',\n msgLoading: '{files}個中{index}個目のファイルを読み込み中 …',\n msgProgress: '{files}個中{index}個のファイルを読み込み中 - {name} - {percent}% 完了',\n msgSelected: '{n}個の{files}を選択',\n msgFoldersNotAllowed: 'ドラッグ&ドロップが可能なのはファイルのみです。{n}個のフォルダ-は無視されました',\n msgImageWidthSmall: '画像ファイル\"{name}\"の幅が小さすぎます。画像サイズの幅は少なくとも{size}px必要です',\n msgImageHeightSmall: '画像ファイル\"{name}\"の高さが小さすぎます。画像サイズの高さは少なくとも{size}px必要です',\n msgImageWidthLarge: '画像ファイル\"{name}\"の幅がアップロード可能な画像サイズ({size}px)を超えています',\n msgImageHeightLarge: '画像ファイル\"{name}\"の高さがアップロード可能な画像サイズ({size}px)を超えています',\n msgImageResizeError: 'リサイズ時に画像サイズが取得できませんでした',\n msgImageResizeException: '画像のリサイズ時にエラーが発生しました。
    {errors}
    ',\n msgAjaxError: '{operation}実行中にエラーが発生しました。時間をおいてもう一度お試しください。',\n msgAjaxProgressError: '{operation} failed',\n msgDuplicateFile: 'File \"{name}\" of same size \"{size} KB\" has already been selected earlier. Skipping duplicate selection.',\n msgResumableUploadRetriesExceeded: 'Upload aborted beyond {max} retries for file {file}! Error Details:
    {error}
    ',\n msgPendingTime: '{time} remaining',\n msgCalculatingTime: 'calculating time remaining',\n ajaxOperations: {\n deleteThumb: 'ファイル削除',\n uploadThumb: 'ファイルアップロード',\n uploadBatch: '一括ファイルアップロード',\n uploadExtra: 'フォームデータアップロード'\n },\n dropZoneTitle: 'ファイルをドラッグ&ドロップ …',\n dropZoneClickTitle: '
    (または クリックして{files}を選択 )',\n slugCallback: function(text) {\n return text ? text.split(/(\\\\|\\/)/g).pop().replace(/[^\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\u31f0-\\u31ff\\u3200-\\u32ff\\uff00-\\uffef\\-.\\\\\\/ ]+/g, '') : '';\n },\n fileActionSettings: {\n removeTitle: 'ファイルを削除',\n uploadTitle: 'ファイルをアップロード',\n uploadRetryTitle: '再アップロード',\n zoomTitle: 'プレビュー',\n dragTitle: '移動 / 再配置',\n indicatorNewTitle: 'まだアップロードされていません',\n indicatorSuccessTitle: 'アップロード済み',\n indicatorErrorTitle: 'アップロード失敗',\n indicatorPausedTitle: 'Upload Paused',\r\n indicatorLoadingTitle: 'アップロード中 …'\n },\n previewZoomButtonTitles: {\n prev: '前のファイルを表示',\n next: '次のファイルを表示',\n toggleheader: 'ファイル情報の表示/非表示',\n fullscreen: 'フルスクリーン表示の開始/終了',\n borderless: 'フルウィンドウ表示の開始/終了',\n close: 'プレビューを閉じる'\n }\n };\n})(window.jQuery);\n","/*!\n * Bootstrap v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default['default'](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default['default'](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default['default'](element).css('transition-duration');\n var transitionDelay = $__default['default'](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default['default'](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default['default'](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default['default'].Event(EVENT_CLOSE);\n $__default['default'](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default['default'](element).removeClass(CLASS_NAME_SHOW);\n\n if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default['default'](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME] = Alert._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Alert;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.6.0';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default['default'](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$1, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default['default'](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0];\n $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n $__default['default'].fn[NAME$1].Constructor = Button;\n\n $__default['default'].fn[NAME$1].noConflict = function () {\n $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.6.0';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default['default'](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default['default'](this._element).off(EVENT_KEY$2);\n $__default['default'].removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default['default'](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default['default'].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default['default'](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default['default'](activeElement).addClass(directionalClassName);\n $__default['default'](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default['default'](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $__default['default'](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$2);\n\n var _config = _extends({}, Default, $__default['default'](this).data());\n\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default['default'](this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default['default'](selector)[0];\n\n if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default['default'](target), config);\n\n if (slideIndex) {\n $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default['default'](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n $__default['default'].fn[NAME$2].Constructor = Carousel;\n\n $__default['default'].fn[NAME$2].noConflict = function () {\n $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.6.0';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default['default'].Event(EVENT_SHOW);\n $__default['default'](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default['default'](actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default['default'](_this._element).trigger(EVENT_SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var startEvent = $__default['default'].Event(EVENT_HIDE);\n $__default['default'](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default['default'](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1);\n\n if (triggerArray.length) {\n $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$3);\n\n var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default['default'](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default['default'](selectors).each(function () {\n var $target = $__default['default'](this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n $__default['default'].fn[NAME$3].Constructor = Collapse;\n\n $__default['default'].fn[NAME$3].noConflict = function () {\n $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.6.0';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default['default'](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default['default'](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$4);\n $__default['default'](this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default['default'](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default['default'](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default['default'](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default['default'](this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default['default'](toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n $__default['default'](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE) {\n $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $__default['default'](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default['default'](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n $__default['default'].fn[NAME$4].Constructor = Dropdown;\n\n $__default['default'].fn[NAME$4].noConflict = function () {\n $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.0';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default['default'](this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default['default'](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$2);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3);\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default['default'](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n $__default['default'](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._element).off(Util.TRANSITION_END);\n $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default['default'](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default['default'](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default['default'](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default['default'](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default['default'](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default['default'](this._backdrop).appendTo(document.body);\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default['default'](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default['default'](element).css('padding-right');\n $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default['default'](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default['default'](element).css('margin-right');\n $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default['default'](document.body).css('padding-right');\n $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default['default'](fixedContent).each(function (index, element) {\n var padding = $__default['default'](element).data('padding-right');\n $__default['default'](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default['default'](elements).each(function (index, element) {\n var margin = $__default['default'](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default['default'](document.body).data('padding-right');\n $__default['default'](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default['default'](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default['default'](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default['default'](target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n $__default['default'].fn[NAME$5].Constructor = Modal;\n\n $__default['default'].fn[NAME$5].noConflict = function () {\n $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.6.0';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '
    ' + '
    ' + '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default['default'](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default['default'](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default['default'](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default['default'](tip).appendTo(container);\n }\n\n $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default['default'](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default['default'](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default['default'](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default['default'](this.config.container);\n }\n\n return $__default['default'](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default['default'](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n $__default['default'].fn[NAME$6].Constructor = Tooltip;\n\n $__default['default'].fn[NAME$6].noConflict = function () {\n $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.6.0';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
    ' + '
    ' + '

    ' + '
    '\n });\n\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default['default'](this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n $__default['default'].fn[NAME$7].Constructor = Popover;\n\n $__default['default'].fn[NAME$7].noConflict = function () {\n $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.6.0';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$8);\n $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default['default'](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $__default['default'](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both
      and