{"version":3,"sources":["webpack:///./node_modules/primevue/autocomplete/AutoComplete.vue?6499","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./src/components/Controls/Checkbox.vue?3725","webpack:///./src/components/Controls/Checkbox.vue","webpack:///./src/components/Controls/Checkbox.vue?afcf","webpack:///./src/components/Controls/Checkbox.vue?9426","webpack:///./node_modules/primevue/calendar/Calendar.vue?12cd","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/primevue/utils/DomHandler.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/vue-filepond/dist/vue-filepond.js","webpack:///./src/components/Controls/Valuation/AddressDetails.vue?a43f","webpack:///./node_modules/primevue/ripple/Ripple.js","webpack:///./node_modules/filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.js","webpack:///./src/components/Controls/AutoComplete.vue?a1a2","webpack:///./src/components/Controls/Valuation/ValuationStepper.vue?79c2","webpack:///./node_modules/primevue/inputtext/InputText.vue?9b69","webpack:///node_modules/primevue/inputtext/InputText.vue","webpack:///./node_modules/primevue/inputtext/InputText.vue?186a","webpack:///./node_modules/primevue/inputtext/InputText.vue","webpack:///./src/components/Controls/InputText.vue?eeaf","webpack:///./src/components/Controls/Valuation/ContactDetails.vue?a524","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js","webpack:///./node_modules/primevue/confirmdialog/ConfirmDialog.vue?ea33","webpack:///./node_modules/primevue/dialog/Dialog.vue?eeeb","webpack:///node_modules/primevue/dialog/Dialog.vue","webpack:///./node_modules/primevue/dialog/Dialog.vue?8401","webpack:///./node_modules/primevue/dialog/Dialog.vue","webpack:///node_modules/primevue/confirmdialog/ConfirmDialog.vue","webpack:///./node_modules/primevue/confirmdialog/ConfirmDialog.vue?98a3","webpack:///./node_modules/primevue/confirmdialog/ConfirmDialog.vue","webpack:///./node_modules/core-js/modules/es.string.repeat.js","webpack:///./node_modules/primevue/autocomplete/AutoComplete.vue?7de4","webpack:///node_modules/primevue/autocomplete/AutoComplete.vue","webpack:///./node_modules/primevue/autocomplete/AutoComplete.vue?2d35","webpack:///./node_modules/primevue/autocomplete/AutoComplete.vue","webpack:///./node_modules/filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.js","webpack:///./src/views/GetValuation.vue?4701","webpack:///./src/components/Controls/Valuation/ValuationStepper.vue?1ad8","webpack:///./src/components/Controls/Valuation/ValuationStepper.vue","webpack:///./src/components/Controls/Valuation/ValuationStepper.vue?6043","webpack:///./src/components/Controls/Valuation/ValuationStepper.vue?ac22","webpack:///./src/components/Controls/Valuation/ValuationStep.vue?a034","webpack:///./src/components/Controls/Valuation/ValuationStep.vue","webpack:///./src/components/Controls/Valuation/ValuationStep.vue?d7a6","webpack:///./src/components/Controls/Valuation/ValuationStep.vue?866e","webpack:///./src/components/Controls/Valuation/AddressDetails.vue?4b88","webpack:///./src/components/Controls/AutoComplete.vue?816b","webpack:///./src/components/Controls/AutoComplete.vue","webpack:///./src/components/Controls/AutoComplete.vue?d9d8","webpack:///./src/components/Controls/AutoComplete.vue?fb1a","webpack:///./src/components/Controls/Valuation/AddressDetails.vue","webpack:///./src/components/Controls/Valuation/AddressDetails.vue?4d01","webpack:///./src/components/Controls/Valuation/AddressDetails.vue?2ab9","webpack:///./src/components/Controls/Valuation/AssessmentDetails.vue?8ef6","webpack:///./src/components/Controls/Valuation/AssessmentDetails.vue","webpack:///./src/components/Controls/Valuation/AssessmentDetails.vue?416c","webpack:///./src/components/Controls/Valuation/AssessmentDetails.vue?4d80","webpack:///./src/components/Controls/Valuation/PropertyClassification.vue?e0f1","webpack:///./src/components/Controls/Valuation/PropertyClassification.vue","webpack:///./src/components/Controls/Valuation/PropertyClassification.vue?bce4","webpack:///./src/components/Controls/Valuation/PropertyClassification.vue?b784","webpack:///./src/components/Controls/Valuation/ContactDetails.vue?713d","webpack:///./src/components/Controls/Valuation/ContactDetails.vue","webpack:///./src/components/Controls/Valuation/ContactDetails.vue?7f50","webpack:///./src/components/Controls/Valuation/ContactDetails.vue?d55b","webpack:///./src/components/Controls/Valuation/PropertyDetails.vue?001e","webpack:///./src/components/Controls/Valuation/propertyFormsLookup.ts","webpack:///./src/components/Controls/Valuation/PropertyDetails.vue","webpack:///./src/components/Controls/Valuation/PropertyDetails.vue?65e6","webpack:///./src/components/Controls/Valuation/PropertyDetails.vue?3586","webpack:///./src/components/Controls/Valuation/PhotosAndDocuments.vue?bacc","webpack:///./src/components/Controls/FileUpload.vue?000f","webpack:///./src/components/Controls/FileUpload.vue","webpack:///./src/components/Controls/FileUpload.vue?66ef","webpack:///./src/components/Controls/FileUpload.vue?4992","webpack:///./src/components/Controls/Valuation/PhotosAndDocuments.vue","webpack:///./node_modules/@stripe/stripe-js/dist/index.mjs","webpack:///./src/components/Controls/Valuation/PhotosAndDocuments.vue?a795","webpack:///./src/components/Controls/Valuation/PhotosAndDocuments.vue?b300","webpack:///./src/components/Controls/Valuation/Payment.vue?41e2","webpack:///./src/components/Controls/Valuation/Payment.vue","webpack:///./src/components/Controls/Valuation/Payment.vue?bfbf","webpack:///./src/components/Controls/Valuation/Payment.vue?8edd","webpack:///./src/views/GetValuation.vue","webpack:///./src/views/GetValuation.vue?4cdf","webpack:///./src/views/GetValuation.vue?7e43","webpack:///./src/components/Controls/Valuation/ValuationStep.vue?822f","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/filepond-plugin-media-preview/dist/filepond-plugin-media-preview.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./src/components/Controls/InputText.vue?fd5d","webpack:///./src/components/Controls/InputText.vue","webpack:///./src/components/Controls/InputText.vue?2838","webpack:///./src/components/Controls/InputText.vue?98ab","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/primevue/dropdown/Dropdown.vue?68af","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///../truemarket-modules/src/models/api/enumerations/EnumValueType.ts","webpack:///./node_modules/core-js/modules/es.array.flat-map.js","webpack:///./src/components/Controls/Valuation/PropertyDetails.vue?d36b","webpack:///./node_modules/primevue/dropdown/index.js","webpack:///./src/components/Controls/Calendar.vue?86ce","webpack:///./src/components/Controls/Calendar.vue","webpack:///./src/components/Controls/Calendar.vue?923b","webpack:///./src/components/Controls/Calendar.vue?5742","webpack:///./node_modules/primevue/dropdown/Dropdown.vue?8e00","webpack:///node_modules/primevue/dropdown/Dropdown.vue","webpack:///./node_modules/primevue/dropdown/Dropdown.vue?100d","webpack:///./node_modules/primevue/dropdown/Dropdown.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/primevue/utils/UniqueComponentId.js","webpack:///./node_modules/vee-validate/dist/vee-validate.full.esm.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./src/components/Controls/Valuation/PhotosAndDocuments.vue?6fca","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack:///./node_modules/primevue/autocomplete/index.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./src/components/Controls/FileUpload.vue?05fe","webpack:///./src/components/Controls/Valuation/AssessmentDetails.vue?f4fd","webpack:///./node_modules/primevue/checkbox/index.js","webpack:///./node_modules/primevue/calendar/index.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/filepond-plugin-pdf-preview/dist/filepond-plugin-pdf-preview.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/primevue/checkbox/Checkbox.vue?9565","webpack:///node_modules/primevue/checkbox/Checkbox.vue","webpack:///./node_modules/primevue/checkbox/Checkbox.vue?717f","webpack:///./node_modules/primevue/checkbox/Checkbox.vue","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/primevue/calendar/Calendar.vue?79c2","webpack:///node_modules/primevue/calendar/Calendar.vue","webpack:///./node_modules/primevue/calendar/Calendar.vue?97e2","webpack:///./node_modules/primevue/calendar/Calendar.vue","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/primevue/inputtext/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./src/components/Controls/Dropdown.vue?80fd","webpack:///./src/components/Controls/Dropdown.vue","webpack:///./src/components/Controls/Dropdown.vue?969d","webpack:///./src/components/Controls/Dropdown.vue?2f7a","webpack:///./node_modules/filepond/dist/filepond.js","webpack:///./node_modules/primevue/button/Button.vue?be4c","webpack:///node_modules/primevue/button/Button.vue","webpack:///./node_modules/primevue/button/Button.vue?1584","webpack:///./node_modules/primevue/button/Button.vue","webpack:///./node_modules/filepond-plugin-get-file/dist/filepond-plugin-get-file.js","webpack:///./src/components/Controls/Dropdown.vue?95ff","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./src/components/Controls/Valuation/PropertyClassification.vue?f407","webpack:///./node_modules/primevue/utils/ConnectedOverlayScrollHandler.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///./src/components/Controls/PropertyForms lazy ^\\.\\/.*\\.vue$ namespace object","webpack:///./node_modules/primevue/dialog/Dialog.vue?82d3","webpack:///./src/components/Controls/Calendar.vue?ea36","webpack:///./src/components/Controls/Checkbox.vue?e338","webpack:///./src/components/Controls/Valuation/Payment.vue?9877","webpack:///./src/components/Controls/AutoComplete.vue?5b93","webpack:///./node_modules/primevue/confirmdialog/index.js","webpack:///./node_modules/primevue/button/index.js"],"names":["_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","$","$values","values","target","stat","O","render","_vm","this","_h","$createElement","_c","_self","attrs","fieldId","value","on","onInput","staticClass","domProps","_s","label","directives","rawName","expression","_v","error","staticRenderFns","newVal","$emit","required","components","PrimeVueCheckbox","component","toInteger","requireObjectCoercible","module","exports","count","str","String","result","Infinity","RangeError","_typeof","Symbol","iterator","_createForOfIteratorHelper","allowArrayLike","it","isArray","length","i","F","s","done","e","_e","f","TypeError","err","normalCompletion","didErr","step","next","_e2","return","_arrayLikeToArray","arr","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_toPropertyKey","key","_createClass","protoProps","staticProps","arg","_toPrimitive","input","hint","prim","toPrimitive","undefined","res","Number","default","DomHandler","el","width","offsetWidth","style","getComputedStyle","parseFloat","paddingLeft","paddingRight","doc","document","documentElement","window","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","margin","marginLeft","marginRight","height","offsetHeight","marginTop","marginBottom","clientHeight","win","d","g","getElementsByTagName","w","innerWidth","clientWidth","h","innerHeight","rect","getBoundingClientRect","top","body","left","zindex","element","children","parentNode","childNodes","num","nodeType","className","classList","styles","split","add","_styles","_i","remove","replace","RegExp","join","contains","selector","querySelectorAll","querySelector","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","elementDimensions","offsetParent","getHiddenElementDimensions","elementOuterHeight","elementOuterWidth","targetOuterHeight","targetOuterWidth","targetOffset","windowScrollTop","getWindowScrollTop","windowScrollLeft","getWindowScrollLeft","viewport","getViewport","transformOrigin","Math","max","targetHeight","parents","arguments","getParents","concat","scrollableParents","_step","overflowRegex","overflowCheck","node","styleDeclaration","getPropertyValue","_iterator","parent","scrollSelectors","dataset","_step2","selectors","_iterator2","findSingle","push","visibility","display","elementHeight","elementWidth","dimensions","duration","opacity","last","Date","tick","getTime","requestAnimationFrame","setTimeout","ms","interval","gap","fading","setInterval","clearInterval","navigator","userAgent","isElement","appendChild","nativeElement","Error","container","item","borderTopValue","borderTop","paddingTopValue","containerRect","itemRect","offset","scroll","itemHeight","getOuterHeight","getSelection","empty","removeAllRanges","rangeCount","getRangeAt","getClientRects","calculatedScrollbarWidth","scrollDiv","createElement","scrollbarWidth","removeChild","browser","matched","resolveUserAgent","version","ua","toLowerCase","match","exec","indexOf","methodName","args","apply","_step3","focusableElements","find","visibleFocusableElements","_iterator3","focusableElement","getFocusableElements","previousElement","previousElementSibling","matches","nextElement","nextElementSibling","targetNode","nodeName","parentElement","hasClass","cssText","prop","maxTouchPoints","msMaxTouchPoints","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","speciesConstructor","advanceStringIndex","toLength","callRegExpExec","regexpExec","stickyHelpers","UNSUPPORTED_Y","arrayPush","min","MAX_UINT32","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","string","lim","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","index","splitter","regexp","rx","S","C","unicodeMatching","p","q","A","z","is","x","y","global","factory","globalThis","self","_exports","_vue","_filepond","_interopRequireDefault","obj","__esModule","setOptions","filteredComponentMethods","isSupported","supported","getNativeConstructorFromType","type","boolean","Boolean","array","function","Function","int","serverapi","object","events","watch","instances","globalOptions","options","assign","forEach","_default","registerPlugin","_loop","OptionTypes","_pond","id","multiple","allowMultiple","accept","acceptedFileTypes","capture","captureMethod","mounted","_this","_element","$el","reduce","getFiles","_len","_key","substr","$attrs","create","$options","propsData","keys","filter","includes","destroyed","_this2","detached","mutationHandler","mutations","observer","removedNodes","removedNode","disconnect","MutationObserver","observe","childList","subtree","destroy","splice","_DomHandler","bindEvents","addEventListener","onMouseDown","unbindEvents","removeEventListener","ink","onAnimationEnd","getInk","event","currentTarget","removeClass","getHeight","getWidth","getOuterWidth","getOffset","pageX","pageY","addClass","Ripple","inserted","binding","vnode","context","$primevue","config","ripple","unbind","plugin","_ref","addFilter","utils","Type","isString","replaceInString","guesstimateMimeType","getExtensionFromFilename","getFilenameFromURL","mimeTypeMatchesWildCard","mimeType","wildcard","mimeTypeGroup","pop","wildcardGroup","isValidMimeType","acceptedTypes","userInputType","some","acceptedType","getItemType","filename","extension","validateFile","typeDetector","Promise","resolve","reject","then","detectedType","catch","applyMimeTypeMap","map","acceptedFileType","file","_ref2","query","_ref3","validationResult","handleRejection","acceptedFileTypesMapped","acceptedFileTypesMappedUnique","status","main","sub","allTypes","allButLastType","lastType","allowFileTypeValidation","BOOLEAN","ARRAY","labelFileTypeNotAllowed","STRING","fileValidateTypeLabelExpectedTypes","fileValidateTypeLabelExpectedTypesMap","OBJECT","fileValidateTypeDetectType","FUNCTION","isBrowser","dispatchEvent","CustomEvent","detail","_g","class","filled","listeners","notARegExp","correctIsRegExpLogic","proto","forced","searchString","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","isPreviewableImage","_AwaitValue","wrapped","_AsyncGenerator","gen","front","back","send","request","resume","wrappedAwait","settle","_invoke","asyncIterator","throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","vectorMultiply","v","amount","createVector","vectorAdd","a","b","vectorNormalize","l","sqrt","vectorRotate","radians","origin","cos","sin","t","getMarkupValue","size","scalar","axis","getMarkupStyles","markup","scale","lineStyle","borderStyle","fill","backgroundColor","fontColor","stroke","borderColor","lineColor","strokeWidth","borderWidth","lineWidth","lineCap","lineJoin","dashes","isDefined","getMarkupRect","right","bottom","pointsToPathShape","points","point","setAttributes","attr","setAttribute","ns","svg","tag","createElementNS","updateRect","updateEllipse","cx","cy","ry","IMAGE_FIT_STYLE","contain","cover","updateImage","preserveAspectRatio","fit","TEXT_ANCHOR","center","updateText","fontSize","fontFamily","fontWeight","textAlign","text","textContent","updateLine","line","begin","end","x1","y1","x2","y2","lineDecoration","arrowBeginRotationPoint","arrowBeginCenter","arrowBeginA","arrowBeginB","arrowEndRotationPoint","arrowEndCenter","arrowEndA","arrowEndB","updatePath","createShape","createImage","shape","onload","setAttributeNS","src","createLine","CREATE_TYPE_ROUTES","image","ellipse","path","UPDATE_TYPE_ROUTES","createMarkupByType","updateMarkupByType","MARKUP_RECT","toOptionalFraction","prepareMarkup","_markup","prev","curr","zIndex","sortMarkupByZIndex","createMarkupView","_","createView","ignoreRect","mixins","apis","write","root","dirty","crop","resize","viewWidth","viewHeight","cropWidth","cropHeight","_size","outputWidth","outputHeight","outputFit","mode","outputUpscale","upscale","shouldUpscale","scalarWidth","scalarHeight","innerHTML","markupFilter","sort","settings","createVector$1","vectorDot","vectorSubtract","vectorDistanceSquared","vectorDistance","getOffsetPointOnEdge","rotation","B","sinA","sinB","sinC","cosC","ratio","c","getRotatedRectSize","hor","ver","tl","abs","tr","bl","calculateCanvasSize","canvasAspectRatio","zoom","imageAspectRatio","canvasWidth","canvasHeight","imgWidth","imgHeight","getImageRectZoomFactor","imageRect","cropRect","imageWidth","imageHeight","rotatedCropSize","getCenteredCropRect","aspectRatio","getCurrentCropSize","imageSize","canvasSize","canvasCenter","stage","shouldLimit","scaleToFit","stageZoomFactor","widthFloat","heightFloat","round","IMAGE_SCALE_SPRING_PROPS","stiffness","damping","mass","createBitmapView","createImageCanvasWrapper","animations","originX","originY","scaleX","scaleY","translateX","translateY","rotateZ","ref","bitmap","appendChildView","createChildView","flip","horizontal","vertical","createClipView","didWriteView","_ref4","background","_ref5","createMarkup","destroyMarkup","removeChildView","transparencyIndicator","_ref6","shouldOptimize","translation","PI","cropAspectRatio","imageView","createImageView","_ref7","clip","_ref8","hidden","containerWidth","inner","containerHeight","fixedPreviewHeight","minPreviewHeight","maxPreviewHeight","panelAspectRatio","clipHeight","clipWidth","SVG_MASK","SVGMaskUniqueId","createImageOverlayView","fpAPI","mask","url","URL","location","href","hash","BitmapWorker","onmessage","createImageBitmap","data","message","postMessage","ColorMatrixWorker","imageData","matrix","colorMatrix","m11","m12","m13","m14","m15","m21","m22","m23","m24","m25","m31","m32","m33","m34","m35","m41","m42","m43","m44","m45","r","buffer","getImageSize","cb","Image","naturalWidth","naturalHeight","transforms","1","2","3","4","5","6","7","8","fixImageOrientation","ctx","orientation","transform","createPreviewImage","canvas","getContext","drawImage","isBitmap","MAX_WIDTH","MAX_HEIGHT","calculateAverageColor","ceil","getImageData","averageColor","floor","cloneCanvas","cloneImageData","ImageData","createImageData","set","Uint8ClampedArray","loadImage","img","crossOrigin","onerror","createImageWrapperView","OverlayView","ImageView","createWorker","applyFilter","putImageData","worker","post","response","terminate","removeImageView","_destroy","shiftImage","images","shift","imageViewBin","pushImage","getMetadata","childViews","dispatch","didUpdateItemMetadata","action","change","_imageView","canCreateImageBitmap","isFirefox","firefoxVersion","parseInt","didCreatePreviewContainer","fileURL","createObjectURL","drawPreview","loadPreviewFallback","previewImageLoaded","revokeObjectURL","exif","pixelDensityFactor","devicePixelRatio","zoomFactor","scaleFactor","previewImageRatio","previewContainerWidth","previewContainerHeight","previewImage","setMetadata","close","overlayShadow","imageBitmap","didDrawPreview","restoreOverlay","_ref9","overlayError","overlaySuccess","didThrowError","_ref10","didCompleteProcessing","_ref11","_ref12","_ref13","_ref14","createRoute","DID_IMAGE_PREVIEW_DRAW","DID_IMAGE_PREVIEW_CONTAINER_CREATE","DID_FINISH_CALCULATE_PREVIEWSIZE","DID_UPDATE_ITEM_METADATA","DID_THROW_ITEM_LOAD_ERROR","DID_THROW_ITEM_PROCESSING_ERROR","DID_THROW_ITEM_INVALID","DID_COMPLETE_ITEM_PROCESSING","DID_START_ITEM_PROCESSING","DID_REVERT_ITEM_PROCESSING","_ref15","viewsToRemove","isFile","imagePreviewView","viewAPI","view","didLoadItem","archived","supportsCreateImageBitmap","maxPreviewFileSize","imagePreview","queue","rescaleItem","itemPanelAspectRatio","fixedHeight","_root$ref","previewAspectRatio","previewHeightMax","itemWidth","previewHeight","didResizeView","shouldRescale","didCalculatePreviewSize","shouldDrawPreview","registerWriter","DID_RESIZE_ROOT","DID_STOP_RESIZE","DID_LOAD_ITEM","DID_IMAGE_PREVIEW_CALCULATE_SIZE","allowImagePreview","imagePreviewFilterItem","imagePreviewHeight","INT","imagePreviewMinHeight","imagePreviewMaxHeight","imagePreviewMaxFileSize","imagePreviewZoomFactor","imagePreviewUpscale","imagePreviewMaxInstantPreviewFileSize","imagePreviewTransparencyIndicator","imagePreviewCalculateAverageImageColor","imagePreviewMarkupShow","imagePreviewMarkupFilter","visible","header","blockScroll","position","$event","closeDialog","scopedSlots","_u","fn","rejectClass","rejectLabel","rejectIcon","autoFocusReject","acceptClass","acceptLabel","acceptIcon","autoFocusAccept","proxy","iconClass","maskClass","onMaskClick","onBeforeEnter","onEnter","onBeforeLeave","onLeave","onAfterLeave","onAppear","_b","dialogClass","ariaLabelledById","modal","_t","maximize","maximizeIconClass","ariaCloseLabel","footer","$slots","repeat","containerClass","listId","overlayVisible","inputClass","ariaLabelledBy","inputValue","multiContainerClass","onMultiContainerClick","_l","getItemContent","removeItem","disabled","onDropdownClick","onOverlayEnter","onOverlayLeave","scrollHeight","selectItem","toNaturalFileSize","sizeMax","sizeMin","fileFilter","filesize","totalSizeMax","currentTotalSize","total","fileSize","allowFileSizeValidation","maxFileSize","minFileSize","maxTotalFileSize","fileValidateSizeFilter","labelMinFileSizeExceeded","labelMinFileSize","labelMaxFileSizeExceeded","labelMaxFileSize","labelMaxTotalFileSizeExceeded","labelMaxTotalFileSize","steps","stepKeys","stepSubmitted","scope","tempValuationId","validationHandler","submissionHandler","resumedHandler","propertyType","propertyClassification","purpose","idx","currentStep","previous","isValidIndex","activeStep","newStep","oldStep","unsubResize","transition","stepComponentAtIndex","hide","comp","show","setStepsHeight","subResize","nextTick","stepsHeight","stepsHeightDuration","roElement","ro","ResizeObserver","unobserve","$children","processCurrentStep","success","validate","submit","submissionResult","isValid","stepName","active","stepSubmissionHandler","stepValidationHandler","handler","errors","suggestions","searchAddresses","resolveAddress","slotProps","titleClass","StructuredFormatting","MainText","descriptionClass","SecondaryText","model","callback","$$v","propertyAddress","placeholder","fieldKey","itemSelect","complete","AutoComplete","PrimeVueAutoComplete","UnitNumber","StreetNumber","StreetName","Suburb","State","Postcode","FormattedAddress","FormattedAddressLines","Utils","GetGuid","tempValId","$route","pristine","form","loadData","API","ValuationForm","ResumeTempValuation","TempValuationId","Key","Data","addressModel","Address","formattedAddress","buildFormattedAddress","validateWithInfo","Version","$valuationFromVersion","JSON","stringify","ProcessTempValuation","tempQuery","Google","AddressAutocomplete","gmapsSession","ac","Predictions","GetPlaceDetails","PlaceId","place","Result","AddressComponents","Types","LongName","formattedComponents","ValidationProvider","ValidationObserver","purposes","date","created","Enumerations","GetEnumValuesForType","EnumValueType","ValuationPurpose","vals","Value","Label","Purpose","RetrospectiveDate","toISOString","AssessmentDetails","Dropdown","Calendar","propertyTypes","propertyClassifications","PropertyType","ValueId","PropertySubType","allPropertyClassifications","typeId","ParentId","PropertyClassification","firstName","lastName","email","phone","businessName","repTypes","repType","repFullName","repEmail","repPhone","repBusinessName","requireDetails","FirstName","LastName","Email","Phone","BusinessName","RepName","RepEmail","RepPhone","RepBusinessName","RepType","InputText","_m","componentToLoad","componentMounted","componentsLookupTable","componentsImports","flatMap","currentForm","formData","propsChanged","lookupComponent","classification","console","log","PropertyDetails","filesUpdate","listingLink","idleLabel","files","fileTypes","maxFiles","maxParallelUploads","server","requiredFiles","handleUpdateFiles","FilePond","docTypes","imageTypes","videoTypes","process","processUpload","revert","revertUpload","restore","restoreUpload","load","fetch","fileIds","fileId","pond","addFile","PROCESSING_COMPLETE","serverId","isFinished","update","fieldName","metadata","progress","transfer","FormData","append","credential","CredentialManager","GetToken","Base","XMLHttpRequest","open","setRequestHeader","Token","upload","onprogress","lengthComputable","loaded","parse","responseText","FileId","abort","uniqueFileId","headers","responseType","pe","onreadystatechange","readyState","headersString","getAllResponseHeaders","acceptedFiles","acceptImages","acceptVideos","acceptDocs","photos","resumeFiles","Photos","buildingPlans","BuildingPlans","leaseDocs","LeaseDocs","tenancySchedule","TenancySchedule","ListingLink","photosValid","buildingPlansValid","leaseDocsValid","tenancyScheduleValid","formValid","timeout","clearTimeout","getFileIds","FileUpload","stripePromise$1","voucher","agreeUseVoucher","discount","termsAndConditionsLabel","termsAndConditionsInvalid","termsAndConditionsError","termsAndConditions","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","findScript","scripts","script","injectScript","params","queryString","advancedFraudSignals","headOrBody","head","registerWrapper","stripe","startTime","_registerWrapper","stripePromise","onErrorListener","onLoadListener","onError","onLoad","Stripe","loadScript","warn","_script$parentNode","initStripe","maybeStripe","loadCalled","getStripePromise","loadStripe","now","Require","returnUrl","stripeService","GetReturnUrl","GetPublishableKey","voucherForm","Voucher","setupPaymentIntent","$confirm","require","handleSubmitVoucher","Payment","CreateTempValuationPaymentIntent","clientSecret","ClientSecret","Amount","Discount","elements","paymentElement","layout","mount","paymentNode","getElementById","submitViaTrueMarket","submitViaStripe","CompleteTempValuation","router","confirmPayment","confirmParams","return_url","ConfirmDialog","Checkbox","Button","ValuationStepper","ValuationStep","AddressDetails","ContactDetails","PhotosAndDocuments","regExpExec","MATCH","nativeMatch","matcher","fullUnicode","matchStr","isPreviewableVideo","isPreviewableAudio","AudioPlayer","mediaEl","audioElems","onplayhead","timelineWidth","timeline","playhead","moveplayheadFn","moveplayhead","bind","registerListeners","timeUpdate","timelineClicked","button","play","mouseDown","mouseUp","paused","pause","toggle","playPercent","currentTime","newMargLeft","clientX","getPosition","clickPercent","createMediaView","tagName","media","docfrag","createDocumentFragment","audio","DID_MEDIA_PREVIEW_LOAD","webkitURL","blob","Blob","mock","factor","videoWidth","videoHeight","createMediaWrapperView","DID_MEDIA_PREVIEW_CONTAINER_CREATE","mediaWrapperView","allowVideoPreview","allowAudioPreview","mediaPreview","$trim","trim","forcedStringTrimMethod","PrimeVueInputText","DESCRIPTORS","isForced","inheritIfRequired","getOwnPropertyNames","getFlags","redefine","fails","enforceInternalState","enforce","setSpecies","wellKnownSymbol","NativeRegExp","RegExpPrototype","re1","re2","CORRECT_NEW","FORCED","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","state","get","objectDefinePropertyModule","regExpFlags","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","whitespaces","whitespace","ltrim","rtrim","createMethod","TYPE","$this","start","flattenIntoArray","toObject","aFunction","arraySpeciesCreate","callbackfn","sourceLen","dateFormat","getMonth","getFullYear","PrimeVueCalendar","onClick","inputId","tabindex","onFocus","onBlur","onKeyDown","editableInputValue","onEditableInput","editable","labelClass","showClear","onClearClick","filterPlaceholder","filterValue","onFilterKeyDown","onFilterChange","option","getOptionRenderKey","isSelected","isOptionDisabled","getOptionLabel","onOptionSelect","visibleOptions","emptyFilterMessage","lastId","prefix","code","messages","alpha","alpha_num","alpha_dash","alpha_spaces","between","confirmed","digits","excluded","ext","integer","max_value","mimes","min_value","numeric","oneOf","regex","required_if","double","en$1","alpha$1","en","cs","da","de","es","fa","fr","lt","nl","hu","pl","pt","ru","sk","sr","sv","uk","ar","az","ja","he","alphaSpaces","alphanumeric","alphaDash","validate$s","_a","locale","every","val","loc","params$k","validate$r","params$j","validate$q","params$i","validate$p","params$h","validate$o","params$g","validate$n","params$f","isTarget","validate$m","strVal","params$e","cast","validateImage","validate$l","list","all","params$d","validate$k","re","emailStr","params$c","isNaN$1","isNullOrUndefined","isEmptyArray","isObject","isRefEqual","lhs","rhs","isSpecified","isCallable","isLocator","__locatorRef","findIndex","arrayLike","predicate","toArray","collection","_copyArray","k","merge","createFlags","untouched","touched","valid","invalid","validated","pending","changed","passed","failed","debounce","wait","token","cancelled","later","interpolate","template","validate$j","validate$i","validate$h","extensions","validate$g","validate$f","validate$e","other","params$b","validate$d","params$a","is_not","validate$c","params$9","validate$b","params$8","validate$a","params$7","validate$9","validate$8","params$6","validate$7","params$5","validate$6","testValue","strValue","validate$5","params$4","validate$4","allowFalse","computesRequired$1","params$3","computesRequired","testEmpty","validate$3","params$2","validate$2","isNaN","nSize","params$1","validate$1","decimals","delimiterRegexPart","decimalRegexPart","Rules","freeze","__proto__","__assign","hasOwnProperty","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","rejected","__generator","sent","trys","ops","verb","op","__spreadArrays","il","j","jl","DEFAULT_CONFIG","defaultMessage","skipOptional","classes","bails","useConstraintAttrs","currentConfig","getConfig","setConfig","newConf","EVENT_BUS","localeChanged","DICTIONARY","Dictionary","dictionary","field","rule","format","_f","fieldContainer","fields","messageContainer","names","_field_","hasRule","localize","_rule_","RULES","normalizeSchema","schema","param","RuleContainer","extend","lazy","isLazy","isRequireRule","getRuleDefinition","ruleName","guardExtend","validator","aggressive","eager","passive","modes","normalizeRules","rules","acc","_$$isNormalized","buildParams","parsedRule","parseRule","provided","ruleSchema","definedParams","lastDefinedParam_1","createLocator","castFn","locator","crossTable","extractLocators","shouldBail","skipIfEmpty","failedRules","regenerateMap","forceRequired","customMessages","_validate","msg","isInitial","shouldSkip","_shouldSkip","_test","requireRules","isEmpty","isEmptyAndOptional","isRequired","normalizedValue","values_1","castValue","fillTargetValues","_value_","_generateFieldError","ruleTargets","_getRuleTargets","_getUserTargets","userTargets","userMessage","_normalizeMessage","numTargets","ruleConfig","name_1","targetPart","normalize","fastDeepEqual","equal","valueOf","isEvent","evt","Event","srcElement","normalizeEventValue","_vModifiers","number","valueAsNumber","trimmedValue","isTextInput","elm","findModel","nonStandardVNodeData","findValue","findModelConfig","componentOptions","propsDataWithValue","extractChildren","findInputNodes","nodes","candidates","Ctor","mergeVNodeListeners","eventName","fns","invoker","addNativeNodeListener","addComponentNodeListener","addVNodeListener","getInputEventName","event_1","modifiers","isHTMLNode","resolveTextualRules","maxlength","minlength","resolveRules","htmlTags","normalizeChildren","$scopedSlots","shouldValidate","_ignoreImmediate","immediate","normalizedEvents","_needsValidation","initialized","createValidationCtx","reset","ariaInput","ariaMsg","onRenderUpdate","vm","initialValue","validateNow","triggerThreadSafeValidation","validateSilent","$once","computeModeSetting","compute","pendingPromise","_pendingValidation","applyResult","createCommonHandlers","$veeOnInput","syncValue","setFlags","$veeOnBlur","onValidate","$veeHandler","$veeDebounce","$nextTick","_pendingReset","addListeners","_inputEventName","PROVIDER_COUNTER","data$1","defaultValues","isActive","inject","$_veeObserver","$vnode","createObserver","vid","slim","detectInput","deep","oldVal","computed","fieldDeps","normalizedRules","deps","dep","depName","watchCrossFieldDep","_resolvedRules","computeClassObj","onLocaleChanged","_regenerateMap","errors_1","failedRules_1","$on","$off","registerField","inputs","resolved","beforeDestroy","activated","deactivated","methods","flag","createLookup","setErrors","updateRenderingContextRefs","checkComputesRequiredState","_loop_1","cls","providers","refs","reduced","extractId","providedId","withHooks","_veeWatchers","$watch","isComputesRequired","FLAGS_STRATEGIES","OBSERVER_COUNTER","createObserverFlags","observers","provideSelf","provide","register","onChange","computeObserverState","unregister","prepareSlotProps","$listeners","subscriber","kind","provider","$delete","silent","results","obs","handleSubmit","errorArr","passes","vms","method","RulesAsList","objectKeys","toIndexedObject","propertyIsEnumerable","TO_ENTRIES","entries","setPrototypeOf","dummy","Wrapper","NewTarget","NewTargetPrototype","addToUnscopables","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","original","depth","mapper","targetIndex","sourceIndex","mapFn","isPreviewablePdf","createPdfView","numPdfPreviewHeight","pdf","DID_PDF_PREVIEW_LOAD","sPdfComponentExtraParams","createPdfWrapperView","DID_PDF_PREVIEW_CONTAINER_CREATE","pdfWrapperView","PdfPreview","allowPdfPreview","pdfPreviewHeight","pdfComponentExtraParams","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","checked","focused","has","classof","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","charCodeAt","NaN","NumberWrapper","inline","inputFieldValue","manualInput","icon","onButtonClick","onOverlayEnterComplete","panelStyleClass","timeOnly","month","groupIndex","year","onPrevButtonClick","onContainerButtonKeydown","currentView","switchViewButtonDisabled","switchToMonthView","getMonthName","switchToYearView","getYear","yearPickerValues","numberOfMonths","onNextButtonClick","weekHeaderLabel","weekDay","week","day","weekNumbers","staticStyle","otherMonth","today","selectable","onDateSelect","onDateCellKeydown","m","isMonthSelected","onMonthSelect","onMonthCellKeydown","isYearSelected","onYearSelect","onYearCellKeydown","showTime","onTimePickerElementMouseDown","onTimePickerElementMouseUp","_k","keyCode","onTimePickerElementMouseLeave","formattedCurrentHour","timeSeparator","formattedCurrentMinute","formattedCurrentSecond","hourFormat","toggleAMPM","pm","todayLabel","onTodayButtonClick","clearLabel","onClearButtonClick","FunctionPrototype","FunctionPrototypeToString","nameRE","NAME","fieldValue","PrimeVueDropdown","isNode","HTMLElement","createStore","initialState","queries","actions","actionQueue","dispatchQueue","getState","processActionQueue","processDispatchQueue","isBlocking","actionHandlers","_queryHandles","queryHandles","api","property","definition","forin","createObject","getAttribute","hasAttribute","svgElements","isSVGElement","attributes","child","insertBefore","IS_BROWSER","testElement","getChildCount","getViewRect","elementRect","outer","childView","isRectIgnored","childViewRect","expandRect","calculateRectSize","isNumber","thereYet","destination","velocity","errorMargin","spring","_ref$stiffness","_ref$damping","_ref$mass","resting","ts","skipToEndState","onupdate","oncomplete","setTarget","easeInOutQuad","tween","_ref$duration","_ref$easing","easing","_ref$delay","delay","reverse","animator","createAnimator","category","def","addGetSet","overwrite","getter","setter","mixinConfig","viewProps","viewInternalAPI","viewExternalAPI","initialProps","animation","addEvent","removeEvent","viewState","off","defaults","rotateX","rotateY","currentProps","getScale","getRect","propsHaveChanged","applyStyles","newProps","perspective","elementCurrentStyle","Mixins","layoutCalculated","offsetLeft","offsetTop","_ref$tag","_ref$name","_ref$attributes","_ref$read","read","_ref$write","_ref$create","_ref$destroy","_ref$filterFrameActio","filterFrameActionsForChild","_ref$didCreateView","didCreateView","_ref$didWriteView","_ref$ignoreRect","_ref$ignoreRectUpdate","ignoreRectUpdate","_ref$mixins","store","frameRect","isResting","activeMixins","writers","readers","destroyers","getElement","getChildViews","getReference","getStyle","_read","shouldUpdate","internalAPI","reader","_write","frameActions","writer","writerResting","timestamp","mixin","mixinResting","childResting","destroyer","sharedAPIDefinition","internalAPIDefinition","needle","linkView","unlinkView","registerReader","registerDestroyer","invalidateLayout","externalAPIDefinition","mixinAPIDefinition","mixinAPI","childCount","createPainter","fps","painter","requestTick","cancelTick","setTimerType","performance","cancelAnimationFrame","delta","routes","_ref$actions","newNode","referenceNode","insertAfter","nextSibling","isBoolean","toBoolean","toInt","toFloat","isInt","isFinite","toBytes","base","naturalFileSize","isFunction","toFunctionReference","levels","level","patch","createServerAPI","outline","createAction","withCredentials","ondata","parts","toServerAPI","isNull","isAPI","getType","replaceSingleQuotes","conversionTable","float","bytes","convertTo","getValueByType","newValue","defaultValue","valueType","newValueType","convertedValue","createOption","currentValue","createOptions","optionDefinition","createInitialState","items","listUpdateTimeout","itemUpdateTimeout","processingQueue","fromCamels","part","createOptionAPI","toUpperCase","createOptionActions","createOptionQueries","InteractionMethod","DROP","BROWSE","PASTE","NONE","getUniqueId","random","substring","_objectWithoutPropertiesLoose","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","arrayRemove","run","sync","listener","_fire","fireSync","fire","_len2","_key2","onOnce","_cb","copyObjectPropertiesToObject","PRIVATE","createItemAPI","removeReleasedItems","released","ItemStatus","INIT","IDLE","PROCESSING_QUEUED","PROCESSING","PROCESSING_ERROR","PROCESSING_REVERT_ERROR","LOADING","LOAD_ERROR","FileOrigin","INPUT","LIMBO","LOCAL","getNonNumeric","getDecimalSeparator","toLocaleString","getThousandsSeparator","decimalSeparator","thousandsStringWithSeparator","thousandsStringWithoutSeparator","ACTION","SERVER_API","REGEX","filters","applyFilterChain","matchingFilters","initialFilter","current","applyFilters","extendDefaultOptions","additionalOptions","defaultOptions","getOptions","opts","allowSyncAcceptAttribute","allowDrop","allowBrowse","allowPaste","allowReplace","allowRevert","allowRemove","allowProcess","allowReorder","allowDirectoriesOnly","storeAsFile","forceRevert","checkValidity","itemInsertLocationFreedom","itemInsertLocation","itemInsertInterval","dropOnPage","dropOnElement","dropValidation","ignoredFiles","instantUpload","allowMinimumUploadDuration","chunkUploads","chunkForce","chunkSize","chunkRetryDelays","fileSizeBase","labelFileSizeBytes","labelFileSizeKilobytes","labelFileSizeMegabytes","labelFileSizeGigabytes","labelDecimalSeparator","labelThousandsSeparator","labelIdle","labelInvalidField","labelFileWaitingForSize","labelFileSizeNotAvailable","labelFileCountSingular","labelFileCountPlural","labelFileLoading","labelFileAdded","labelFileLoadError","labelFileRemoved","labelFileRemoveError","labelFileProcessing","labelFileProcessingComplete","labelFileProcessingAborted","labelFileProcessingError","labelFileProcessingRevertError","labelTapToCancel","labelTapToRetry","labelTapToUndo","labelButtonRemoveItem","labelButtonAbortItemLoad","labelButtonRetryItemLoad","labelButtonAbortItemProcessing","labelButtonUndoItemProcessing","labelButtonRetryItemProcessing","labelButtonProcessItem","iconRemove","iconProcess","iconRetry","iconUndo","iconDone","oninit","onwarning","onactivatefile","oninitfile","onaddfilestart","onaddfileprogress","onaddfile","onprocessfilestart","onprocessfileprogress","onprocessfileabort","onprocessfilerevert","onprocessfile","onprocessfiles","onremovefile","onpreparefile","onupdatefiles","onreorderfiles","beforeDropFile","beforeAddFile","beforeRemoveFile","beforePrepareFile","stylePanelLayout","stylePanelAspectRatio","styleItemPanelAspectRatio","styleButtonRemoveItemPosition","styleButtonProcessItemPosition","styleLoadIndicatorPosition","styleProgressIndicatorPosition","styleButtonRemoveItemAlign","credits","getItemByQuery","getNumericAspectRatioFromString","getActiveItems","Status","EMPTY","ERROR","BUSY","READY","canUpdateFileInput","dataTransfer","DataTransfer","File","ITEM_ERROR","ITEM_BUSY","ITEM_READY","isItemInErrorState","isItemInBusyState","isItemInReadyState","isAsync","GET_STATUS","GET_ITEM","GET_ACTIVE_ITEM","GET_ACTIVE_ITEMS","GET_ITEMS","GET_ITEM_NAME","GET_ITEM_SIZE","GET_STYLES","GET_PANEL_ASPECT_RATIO","isShapeCircle","GET_ITEM_PANEL_ASPECT_RATIO","GET_ITEMS_BY_STATUS","GET_TOTAL_ITEMS","SHOULD_UPDATE_FILE_INPUT","IS_ASYNC","GET_FILE_SIZE_LABELS","labelBytes","labelKilobytes","labelMegabytes","labelGigabytes","hasRoomForItem","maxFileCount","arrayInsert","insertItem","isBase64DataURI","guesstimateExtension","subtype","leftPad","padding","getDateString","getDate","getHours","getMinutes","getSeconds","getFileFromBlob","lastModifiedDate","_relativePath","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","createBlob","arrayBuffer","BB","bb","getBlob","getBlobFromByteStringWithMimeType","byteString","ab","ArrayBuffer","ia","Uint8Array","getMimeTypeFromBase64DataURI","dataURI","getBase64DataFromBase64DataURI","getByteStringFromBase64DataURI","atob","getBlobFromBase64DataURI","getFileFromBase64DataURI","getFileNameFromHeader","decodeURI","getFileSizeFromHeader","getTranfserIdFromHeader","getFileInfoFromHeaders","info","rows","_iteratorNormalCompletion","_didIteratorError","_iteratorError","createFileLoader","fetchFn","getProgress","loadURL","computable","fileinfo","setSource","isGet","sendRequest","onheaders","ontimeout","onabort","aborted","xhr","headersReceived","encodeURI","encodeURIComponent","unescape","createResponse","createTimeoutResponse","hasQS","buildURL","createFetchFunction","apiUrl","statusText","ChunkStatus","QUEUED","COMPLETE","WAITING","processFileChunked","chunks","chunkTransferId","chunkServer","fd","getResponseHeader","requestTransferId","requestParams","requestTransferOffset","requestUrl","lastChunkIndex","retries","completeProcessingChunks","canProcessChunk","chunk","processChunk","processChunks","updateTotalProgress","retryProcessChunk","totalBytesTransfered","totalSize","totalProcessing","abortChunks","createFileProcessorFunction","canChunkUpload","shouldChunkUpload","willChunkUpload","createProcessorFunction","createRevertFunction","getRandomNumber","createPerceivedPerformanceUpdater","tickMin","tickMax","runtime","clear","createFileProcessor","processFn","perceivedProgress","perceivedPerformanceUpdater","perceivedDuration","progressFn","completeFn","transferId","getDuration","getFilenameWithoutExtension","lastIndexOf","createFileStub","deepCloneObject","createItem","serverFileReference","frozen","processingAborted","activeLoader","activeProcessor","abortProcessingRequestComplete","setStatus","getFileExtension","getFileType","getFileSize","getFile","loader","meta","retryLoad","abortLoad","processor","onprocess","requestProcessing","abortProcessing","revertFileUpload","serverTransferId","_setMetadata","filenameWithoutExtension","fileExtension","fileType","relativePath","itemAPI","release","archive","setFile","getItemIndexByQuery","getItemById","itemId","fetchBlob","getDomainFromURL","protocol","isExternalURL","dynamicLabel","isMockItem","listUpdated","optionalPromise","sortItems","compare","getItemByQueryFromState","itemHandler","_ref$success","_ref$failure","failure","ABORT_ALL","DID_SET_FILES","_ref2$value","activeItems","interactionMethod","doUpload","shouldPrepareOutput","MOVE_ITEM","currentIndex","SORT","ADD_ITEMS","_ref6$success","_ref6$failure","insertLocation","totalItems","isValidFile","validItems","promises","ADD_ITEM","_ref7$index","_ref7$success","_ref7$failure","_ref7$options","_item","mainStatus","handleAdd","shouldAdd","loadComplete","REQUEST_PREPARE_OUTPUT","_ref9$failure","COMPLETE_LOAD_ITEM","RETRY_ITEM_LOAD","REQUEST_ITEM_PREPARE","_success","REQUEST_ITEM_PROCESSING","itemCanBeQueuedForProcessing","processNow","PROCESS_ITEM","totalCurrentUploads","processNext","queueEntry","itemReference","noop","allItemsProcessed","RETRY_ITEM_PROCESSING","REQUEST_REMOVE_ITEM","shouldRemove","RELEASE_ITEM","REMOVE_ITEM","removeFromView","ABORT_ITEM_LOAD","ABORT_ITEM_PROCESSING","REQUEST_REVERT_ITEM_PROCESSING","handleRevert","shouldRevert","requestRemoveResult","REVERT_ITEM_PROCESSING","SET_OPTIONS","optionKeys","prioritizedOptionKeys","PrioritizedOptions","orderedOptionKeys","formatFilename","createElement$1","textNode","nodeValue","createTextNode","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","describeArc","startAngle","endAngle","arcSweep","percentageArc","to","spin","align","ringStrokeWidth","ringFrom","ringTo","coordinates","progressIndicator","create$1","isDisabled","write$1","shouldDisable","removeAttribute","fileActionButton","_options$labelBytes","_options$labelKilobyt","_options$labelMegabyt","_options$labelGigabyt","KB","MB","GB","removeDecimalsWhenZero","decimalCount","toFixed","create$2","fileName","updateFile","updateFileSizeOnError","fileInfo","DID_UPDATE_ITEM_META","toPercentage","create$3","didSetItemLoadProgress","title","didSetItemProcessProgress","didRequestItemProcessing","didAbortItemProcessing","didCompleteItemProcessing","fileStatus","DID_REQUEST_ITEM_PROCESSING","DID_ABORT_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_UPDATE_ITEM_LOAD_PROGRESS","DID_THROW_ITEM_PROCESSING_REVERT_ERROR","DID_THROW_ITEM_REMOVE_ERROR","Buttons","AbortItemLoad","RetryItemLoad","RemoveItem","ProcessItem","AbortItemProcessing","RetryItemProcessing","RevertItemProcessing","ButtonKeys","calculateFileInfoOffset","getRemoveIndicatorAligment","buttonRect","buttonRemoveItem","calculateButtonWidth","buttonAbortItemLoad","calculateFileVerticalCenterOffset","calculateFileHorizontalCenterOffset","getLoadIndicatorAlignment","getProcessIndicatorAlignment","DefaultStyle","buttonRetryItemLoad","buttonProcessItem","buttonAbortItemProcessing","buttonRetryItemProcessing","buttonRevertItemProcessing","loadProgressIndicator","processProgressIndicator","processingCompleteIndicator","IdleStyle","ProcessingStyle","StyleMap","DID_START_ITEM_LOAD","DID_START_ITEM_REMOVE","DID_LOAD_LOCAL_ITEM","processingCompleteIndicatorView","create$4","buttonFilter","LocalButtons","alignRemoveItemButton","enabledButtons","_map","buttonView","stopPropagation","loadIndicatorView","progressIndicatorView","activeStyles","write$2","route","stylesToApply","defaultStyles","control","DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING","DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD","DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL","buttonAbortItemRemoval","create$5","fileWrapper","PANEL_SPRING_PROPS","create$6","section","createSection","scalable","viewConstructor","write$3","topRect","bottomRect","panel","heightCurrent","createDragHelper","itemIds","prevIndex","setIndex","getIndex","getItemIndex","ITEM_TRANSLATE_SPRING","ITEM_SCALE_SPRING","StateMap","create$7","handleClick","markedForRemoval","dragState","grab","isPrimary","removedActivateListener","dragOrigin","dragCenter","offsetX","offsetY","drag","preventDefault","dragOffset","dist","drop","cancel","route$1","DID_UPDATE_PANEL_HEIGHT","write$4","DID_GRAB_ITEM","DID_DRAG_ITEM","DID_DROP_ITEM","currentState","filepondItemState","getItemsPerRow","horizontalSpace","getItemIndexByPosition","positionInView","itemHorizontalMargin","itemsPerRow","childMid","itemVerticalMargin","_index","indexX","indexY","itemTop","itemRight","itemBottom","dropAreaDimensions","setDimensions","create$8","lastItemSpanwDate","addItemView","addIndex","spawnDate","cooldown","moveItem","vx","vy","introItemView","removeItemView","getItemHeight","getItemWidth","dragItem","numItems","oldIndex","dragPosition","dragHeight","dragWidth","cols","setHeight","setWidth","getGridIndex","getColIndex","visibleChildren","childHeight","childBottom","childTop","route$2","DID_ADD_ITEM","DID_REMOVE_ITEM","write$5","dragCoordinates","dragIndex","dragIndexOffset","removeIndexOffset","addIndexOffset","childRect","visualHeight","prevX","prevY","visualIndex","vectorX","sign","vectorY","filterSetItemActions","create$9","overflowing","storeDragCoordinates","scopeLeft","scopeTop","clearDragCoordinates","route$3","DID_DRAG","DID_END_DRAG","write$6","overflow","newHeight","listScroller","attrToggle","enabledValue","resetFileInput","create$a","setAcceptedFileTypes","toggleAllowMultiple","toggleDirectoryFilter","toggleDisabled","toggleRequired","setCaptureMethod","handleChange","webkitRelativePath","doesAllowBrowse","disableField","updateRequiredStatus","shouldCheckValidity","setCustomValidity","updateFieldValidityStatus","DID_SET_DISABLED","DID_SET_ALLOW_BROWSE","DID_SET_ALLOW_DIRECTORIES_ONLY","DID_SET_ALLOW_MULTIPLE","DID_SET_ACCEPTED_FILE_TYPES","DID_SET_CAPTURE_METHOD","DID_SET_REQUIRED","ENTER","SPACE","create$b","handleKeyDown","isActivationKey","click","isLabelClick","updateLabelValue","caption","clickable","dropLabel","DID_SET_LABEL_IDLE","addBlob","moveBlob","hideBlob","explodeBlob","write$7","route$4","DID_DROP","drip","setInputFiles","create$c","getField","syncFieldPositionsWithItems","didReorderItems","didAddItem","fileItem","isLocalFile","shouldUseFileInput","dataContainer","didLoadItem$1","didPrepareOutput","didSetDisabled","didRemoveItem","didDefineValue","write$8","DID_DEFINE_VALUE","DID_PREPARE_OUTPUT","DID_REORDER_ITEMS","DID_SORT_ITEMS","getRootNode","text$1","zip","epub","requestDataTransferItems","links","getLinks","hasFiles","promisedFiles","isFileSystemItem","getFilesFromItem","returnedFileGroups","group","isEntry","entry","getAsEntry","isDirectory","isDirectoryEntry","getFilesInDirectory","getAsFile","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","correctedFile","correctMissingFileType","fullPath","webkitGetAsEntry","getLinksFromTransferMetaData","getLinksFromTransferURLData","getData","dragNDropObservers","eventPosition","pageLeft","pageTop","layerX","layerY","createDragNDropClient","scopeToObserve","filterElement","getDragNDropObserver","client","ondrop","onenter","ondrag","onexit","allowdrop","addListener","newObserver","createDragNDropObserver","clients","dragenter","dragover","dragleave","handlers","createHandler","elementFromPoint","isEventTarget","elementAtPosition","initialTarget","setDropEffect","effect","dropEffect","overDropTarget","allowsTransfer","createHopper","validateItems","catchesDropsOnPage","requiresDropOnElement","_options$filterItems","filterItems","lastState","filteredItems","ondragend","ondragstart","updateHopperState","hopperState","listening","listeners$1","handlePaste","activeEl","activeElement","isActiveElementEditable","inScope","clipboardData","listen","unlisten","createPaster","create$d","addFilesNotificationTimeout","notificationClearTimeout","filenames","assist","clear$1","listModified","isUsingFilePond","itemAdded","itemRemoved","itemProcessed","itemProcessedUndo","itemError","assistant","toCamels","charAt","func","immidiateOnly","MAX_FILES_LIMIT","prevent","create$e","measure","bounds","widthPrevious","widthUpdated","updateHistory","previousAspectRatio","canHover","matchMedia","hasPointerEvents","hasCredits","frag","tabIndex","rel","write$9","route$5","calculateRootBoundingBoxHeight","hopper","isMultiItem","maxItems","atMaxCapacity","addAction","listItemMargin","calculateListItemMargin","listHeight","calculateListHeight","labelHeight","currentLabelHeight","listMarginTop","listMarginBottom","visual","boundsHeight","history","MAX_BOUNCES","bounces","listAvailableHeight","_listAvailableHeight","cappedHeight","isCappedHeight","panelHeight","_listAvailableHeight2","itemMargin","scrollList","itemList","newItem","removedItem","verticalItemCount","measureHeight","maxHeight","exceedsMaxFiles","totalBrowseItems","hasMaxItems","getDragIndex","toggleDrop","isAllowed","enabled","toggleBrowse","togglePaste","paster","DID_SET_ALLOW_DROP","DID_SET_ALLOW_PASTE","createApp","initialOptions","originalElement","visibilityHandler","resizeDoneTimer","isResizing","isResizingHorizontally","initialWindowWidth","currentWindowWidth","resizeHandler","isHidden","readWriteApi","routeActionsToEvents","createEvent","eventRoutes","DID_DESTROY","DID_INIT","DID_THROW_MAX_FILES","DID_INIT_ITEM","DID_COMPLETE_ITEM_PROCESSING_ALL","DID_UPDATE_ITEMS","DID_ACTIVATE_ITEM","exposeEvent","bubbles","cancelable","composed","filtered","prepareFile","addFiles","isFilePondFile","removeFile","sources","lastArgument","processFile","prepareFiles","processFiles","_len3","_key3","removeFiles","_len4","_key4","mappedQueries","moveFile","browse","appendTo","replaceElement","restoreElement","isAttachedTo","createAppObject","customOptions","app","lowerCaseFirstLetter","attributeNameToPropertyName","attributeName","mapObject","propertyMap","mapping","selectorRegExp","getAttributesAsObject","attributeMapping","attribute","createAppAtElement","mergedOptions","attributeOptions","createApp$1","PRIVATE_METHODS","createAppAPI","replacements","workerBlob","workerURL","Worker","transferList","renameFile","renamedFile","copyFile","registeredPlugins","createAppPlugin","pluginOutline","views","isOperaMini","operamini","hasPromises","hasBlobSlice","hasCreateObjectURL","hasVisibility","hasTiming","hasCSSSupports","CSS","isIE11","apps","FileStatus","updateOptionTypes","hook","indexToRemove","matchedHooks","newHooks","newHook","plugins","buttonClass","loading","badgeStyleClass","badge","registerDownloadComponent","labelButtonDownload","allowDownloadByUrl","downloadFunction","mainInfo","downloadIcon","getDownloadIcon","prepend","downloadFile","download","labelButtonDownloadItem","non","METHOD_NAME","$includes","ConnectedOverlayScrollHandler","getScrollableParents","unbindScrollListener","getOwnPropertyDescriptorModule","createProperty","sham","webpackAsyncContext","req","__webpack_require__","ids"],"mappings":"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","file":"js/chunk-506bd1ab.db6efe02.js","sourcesContent":["export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=style&index=0&lang=css&\"","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('PrimeVueCheckbox',{attrs:{\"id\":_vm.fieldId,\"modelValue\":_vm.value,\"binary\":true},on:{\"input\":_vm.onInput}}),_c('label',{staticClass:\"label-offset\",attrs:{\"for\":_vm.fieldId},domProps:{\"innerHTML\":_vm._s(_vm.label)}}),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\"},[_c('small',{attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport PrimeVueCheckbox from 'primevue/checkbox'\r\n\r\n@Component({\r\n components: {\r\n PrimeVueCheckbox\r\n }\r\n})\r\nexport default class Checkbox extends Vue {\r\n @Prop({ required: true })\r\n public value!: boolean\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false })\r\n public error: string | undefined\r\n\r\n onInput (newVal: boolean) {\r\n this.$emit('input', newVal)\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Checkbox.vue?vue&type=template&id=000a5a33&scoped=true&\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Checkbox.vue?vue&type=style&index=0&id=000a5a33&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"000a5a33\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=style&index=0&lang=css&\"","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar DomHandler = exports.default = /*#__PURE__*/function () {\n function DomHandler() {\n _classCallCheck(this, DomHandler);\n }\n _createClass(DomHandler, null, [{\n key: \"innerWidth\",\n value: function innerWidth(el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n }, {\n key: \"width\",\n value: function width(el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n }, {\n key: \"getWindowScrollTop\",\n value: function getWindowScrollTop() {\n var doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n }, {\n key: \"getWindowScrollLeft\",\n value: function getWindowScrollLeft() {\n var doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n }, {\n key: \"getOuterWidth\",\n value: function getOuterWidth(el, margin) {\n if (el) {\n var width = el.offsetWidth;\n if (margin) {\n var style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n return width;\n } else {\n return 0;\n }\n }\n }, {\n key: \"getOuterHeight\",\n value: function getOuterHeight(el, margin) {\n if (el) {\n var height = el.offsetHeight;\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n } else {\n return 0;\n }\n }\n }, {\n key: \"getClientHeight\",\n value: function getClientHeight(el, margin) {\n if (el) {\n var height = el.clientHeight;\n if (margin) {\n var style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n return height;\n } else {\n return 0;\n }\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n var win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n return {\n width: w,\n height: h\n };\n }\n }, {\n key: \"getOffset\",\n value: function getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n }, {\n key: \"generateZIndex\",\n value: function generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n }, {\n key: \"getCurrentZIndex\",\n value: function getCurrentZIndex() {\n return this.zindex;\n }\n }, {\n key: \"index\",\n value: function index(element) {\n var children = element.parentNode.childNodes;\n var num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === element) return num;\n if (children[i].nodeType === 1) num++;\n }\n return -1;\n }\n }, {\n key: \"addMultipleClasses\",\n value: function addMultipleClasses(element, className) {\n if (element.classList) {\n var styles = className.split(' ');\n for (var i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n var _styles = className.split(' ');\n for (var _i = 0; _i < _styles.length; _i++) {\n element.className += ' ' + _styles[_i];\n }\n }\n }\n }, {\n key: \"addClass\",\n value: function addClass(element, className) {\n if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n }\n }, {\n key: \"removeClass\",\n value: function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }, {\n key: \"hasClass\",\n value: function hasClass(element, className) {\n if (element) {\n if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n return false;\n }\n }, {\n key: \"find\",\n value: function find(element, selector) {\n return element.querySelectorAll(selector);\n }\n }, {\n key: \"findSingle\",\n value: function findSingle(element, selector) {\n return element.querySelector(selector);\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(el) {\n var height = el.offsetHeight;\n var style = getComputedStyle(el);\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n return height;\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return width;\n }\n }, {\n key: \"absolutePosition\",\n value: function absolutePosition(element, target) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var elementOuterHeight = elementDimensions.height;\n var elementOuterWidth = elementDimensions.width;\n var targetOuterHeight = target.offsetHeight;\n var targetOuterWidth = target.offsetWidth;\n var targetOffset = target.getBoundingClientRect();\n var windowScrollTop = this.getWindowScrollTop();\n var windowScrollLeft = this.getWindowScrollLeft();\n var viewport = this.getViewport();\n var top, left;\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n if (targetOffset.left + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);else left = targetOffset.left + windowScrollLeft;\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }, {\n key: \"relativePosition\",\n value: function relativePosition(element, target) {\n var elementDimensions = element.offsetParent ? {\n width: element.offsetWidth,\n height: element.offsetHeight\n } : this.getHiddenElementDimensions(element);\n var targetHeight = target.offsetHeight;\n var targetOffset = target.getBoundingClientRect();\n var viewport = this.getViewport();\n var top, left;\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = -1 * elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight;\n element.style.transformOrigin = 'top';\n }\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = targetOffset.left * -1;\n } else if (targetOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = 0;\n }\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n }, {\n key: \"getParents\",\n value: function getParents(element) {\n var parents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n }, {\n key: \"getScrollableParents\",\n value: function getScrollableParents(element) {\n var scrollableParents = [];\n if (element) {\n var parents = this.getParents(element);\n var overflowRegex = /(auto|scroll)/;\n var overflowCheck = function overflowCheck(node) {\n var styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n var _iterator = _createForOfIteratorHelper(parents),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var parent = _step.value;\n var scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n var selectors = scrollSelectors.split(',');\n var _iterator2 = _createForOfIteratorHelper(selectors),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var selector = _step2.value;\n var el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n return scrollableParents;\n }\n }, {\n key: \"getHiddenElementOuterHeight\",\n value: function getHiddenElementOuterHeight(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementHeight;\n }\n }, {\n key: \"getHiddenElementOuterWidth\",\n value: function getHiddenElementOuterWidth(element) {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return elementWidth;\n }\n }, {\n key: \"getHiddenElementDimensions\",\n value: function getHiddenElementDimensions(element) {\n var dimensions = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n return dimensions;\n }\n }, {\n key: \"fadeIn\",\n value: function fadeIn(element, duration) {\n element.style.opacity = 0;\n var last = +new Date();\n var opacity = 0;\n var tick = function tick() {\n opacity = +element.style.opacity + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n if (+opacity < 1) {\n window.requestAnimationFrame && requestAnimationFrame(tick) || setTimeout(tick, 16);\n }\n };\n tick();\n }\n }, {\n key: \"fadeOut\",\n value: function fadeOut(element, ms) {\n var opacity = 1,\n interval = 50,\n duration = ms,\n gap = interval / duration;\n var fading = setInterval(function () {\n opacity -= gap;\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n element.style.opacity = opacity;\n }, interval);\n }\n }, {\n key: \"getUserAgent\",\n value: function getUserAgent() {\n return navigator.userAgent;\n }\n }, {\n key: \"appendChild\",\n value: function appendChild(element, target) {\n if (this.isElement(target)) target.appendChild(element);else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);else throw new Error('Cannot append ' + target + ' to ' + element);\n }\n }, {\n key: \"scrollInView\",\n value: function scrollInView(container, item) {\n var borderTopValue = getComputedStyle(container).getPropertyValue('borderTopWidth');\n var borderTop = borderTopValue ? parseFloat(borderTopValue) : 0;\n var paddingTopValue = getComputedStyle(container).getPropertyValue('paddingTop');\n var paddingTop = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n var containerRect = container.getBoundingClientRect();\n var itemRect = item.getBoundingClientRect();\n var offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n var scroll = container.scrollTop;\n var elementHeight = container.clientHeight;\n var itemHeight = this.getOuterHeight(item);\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n }, {\n key: \"clearSelection\",\n value: function clearSelection() {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n //ignore IE bug\n }\n }\n }\n }, {\n key: \"calculateScrollbarWidth\",\n value: function calculateScrollbarWidth() {\n if (this.calculatedScrollbarWidth != null) return this.calculatedScrollbarWidth;\n var scrollDiv = document.createElement(\"div\");\n scrollDiv.className = \"p-scrollbar-measure\";\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n this.calculatedScrollbarWidth = scrollbarWidth;\n return scrollbarWidth;\n }\n }, {\n key: \"getBrowser\",\n value: function getBrowser() {\n if (!this.browser) {\n var matched = this.resolveUserAgent();\n this.browser = {};\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n return this.browser;\n }\n }, {\n key: \"resolveUserAgent\",\n value: function resolveUserAgent() {\n var ua = navigator.userAgent.toLowerCase();\n var match = /(chrome)[ ]([\\w.]+)/.exec(ua) || /(webkit)[ ]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ ]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) || [];\n return {\n browser: match[1] || \"\",\n version: match[2] || \"0\"\n };\n }\n }, {\n key: \"isVisible\",\n value: function isVisible(element) {\n return element.offsetParent != null;\n }\n }, {\n key: \"invokeElementMethod\",\n value: function invokeElementMethod(element, methodName, args) {\n element[methodName].apply(element, args);\n }\n }, {\n key: \"getFocusableElements\",\n value: function getFocusableElements(element) {\n var focusableElements = DomHandler.find(element, \"button:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), \\n [href][clientHeight][clientWidth]:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), \\n input:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), select:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), \\n textarea:not([tabindex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), [tabIndex]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden]), \\n [contenteditable]:not([tabIndex = \\\"-1\\\"]):not([disabled]):not([style*=\\\"display:none\\\"]):not([hidden])\");\n var visibleFocusableElements = [];\n var _iterator3 = _createForOfIteratorHelper(focusableElements),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var focusableElement = _step3.value;\n if (getComputedStyle(focusableElement).display != \"none\" && getComputedStyle(focusableElement).visibility != \"hidden\") visibleFocusableElements.push(focusableElement);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return visibleFocusableElements;\n }\n }, {\n key: \"getFirstFocusableElement\",\n value: function getFirstFocusableElement(element) {\n var focusableElements = this.getFocusableElements(element);\n return focusableElements.length > 0 ? focusableElements[0] : null;\n }\n }, {\n key: \"getPreviousElementSibling\",\n value: function getPreviousElementSibling(element, selector) {\n var previousElement = element.previousElementSibling;\n while (previousElement) {\n if (previousElement.matches(selector)) {\n return previousElement;\n } else {\n previousElement = previousElement.previousElementSibling;\n }\n }\n return null;\n }\n }, {\n key: \"getNextElementSibling\",\n value: function getNextElementSibling(element, selector) {\n var nextElement = element.nextElementSibling;\n while (nextElement) {\n if (nextElement.matches(selector)) {\n return nextElement;\n } else {\n nextElement = nextElement.nextElementSibling;\n }\n }\n return null;\n }\n }, {\n key: \"isClickable\",\n value: function isClickable(element) {\n var targetNode = element.nodeName;\n var parentNode = element.parentElement && element.parentElement.nodeName;\n return targetNode == 'INPUT' || targetNode == 'BUTTON' || targetNode == 'A' || parentNode == 'INPUT' || parentNode == 'BUTTON' || parentNode == 'A' || this.hasClass(element, 'p-button') || this.hasClass(element.parentElement, 'p-button') || this.hasClass(element.parentElement, 'p-checkbox') || this.hasClass(element.parentElement, 'p-radiobutton');\n }\n }, {\n key: \"applyStyle\",\n value: function applyStyle(element, style) {\n if (typeof style === 'string') {\n element.style.cssText = style;\n } else {\n for (var prop in style) {\n element.style[prop] = style[prop];\n }\n }\n }\n }, {\n key: \"isIOS\",\n value: function isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n }, {\n key: \"isAndroid\",\n value: function isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n }, {\n key: \"isTouchDevice\",\n value: function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n }\n }]);\n return DomHandler;\n}();\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, UNSUPPORTED_Y);\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","/*!\n * vue-filepond v6.0.3\n * A handy FilePond adapter component for Vue\n * \n * Copyright (c) 2020 PQINA\n * https://pqina.nl/filepond\n * \n * Licensed under the MIT license.\n */\n\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(\"vueFilePond\", [\"exports\", \"vue\", \"filepond\"], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require(\"vue\"), require(\"filepond\"));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.Vue, global.FilePond);\n global.vueFilePond = mod.exports;\n }\n})(typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : this, function (_exports, _vue, _filepond) {\n \"use strict\";\n\n Object.defineProperty(_exports, \"__esModule\", {\n value: true\n });\n _exports.default = _exports.setOptions = void 0;\n _vue = _interopRequireDefault(_vue);\n\n function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n // Methods not made available to the component\n var filteredComponentMethods = ['setOptions', 'on', 'off', 'onOnce', 'appendTo', 'insertAfter', 'insertBefore', 'isAttachedTo', 'replaceElement', 'restoreElement', 'destroy']; // Test if is supported on this client\n\n var isSupported = (0, _filepond.supported)(); // Setup initial prop types and update when plugins are added\n\n var getNativeConstructorFromType = function getNativeConstructorFromType(type) {\n return {\n string: String,\n boolean: Boolean,\n array: Array,\n function: Function,\n int: Number,\n serverapi: Object,\n object: Object\n }[type];\n }; // Activated props\n\n\n var props = {}; // Events that need to be mapped to emitters\n\n var events = []; // Props to watch\n\n var watch = {}; // all active instances\n\n var instances = []; // global options\n\n var globalOptions = {};\n\n var setOptions = function setOptions(options) {\n globalOptions = Object.assign(globalOptions, options);\n instances.forEach(function (instance) {\n instance.setOptions(globalOptions);\n });\n };\n\n _exports.setOptions = setOptions;\n\n var _default = function _default() {\n // register plugins in FilePond\n _filepond.registerPlugin.apply(void 0, arguments); // build events and props array\n\n\n events.length = 0;\n\n var _loop = function _loop(prop) {\n // don't add events to the props array\n if (/^on/.test(prop)) {\n events.push(prop);\n return \"continue\";\n } // get property type ( can be either a String or the type defined within FilePond )\n\n\n props[prop] = [String, getNativeConstructorFromType(_filepond.OptionTypes[prop])]; // setup watcher\n\n watch[prop] = function (value) {\n this._pond[prop] = value;\n };\n };\n\n for (var prop in _filepond.OptionTypes) {\n var _ret = _loop(prop);\n\n if (_ret === \"continue\") continue;\n } // create \n\n\n return _vue.default.component('FilePond', {\n name: 'FilePond',\n props: props,\n watch: watch,\n render: function render(h) {\n return h('div', {\n 'class': {\n 'filepond--wrapper': true\n }\n }, [h('input', {\n attrs: {\n id: this.id,\n name: this.name,\n type: 'file',\n 'class': this.className,\n required: this.required,\n multiple: this.allowMultiple,\n accept: this.acceptedFileTypes,\n capture: this.captureMethod\n }\n })]);\n },\n // Will setup FilePond instance when mounted\n mounted: function mounted() {\n var _this = this;\n\n // exit here if not supported\n if (!isSupported) {\n return;\n } // get pond element\n\n\n this._element = this.$el.querySelector('input'); // Map FilePond callback methods to Vue $emitters\n\n var options = events.reduce(function (obj, value) {\n obj[value] = function () {\n _this.$emit('input', _this._pond ? _this._pond.getFiles() : []);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.$emit.apply(_this, [value.substr(2)].concat(args));\n };\n\n return obj;\n }, {}); // Scoop up attributes that might not have been caught by Vue ( because the props object is extended dynamically )\n\n var attrs = Object.assign({}, this.$attrs); // Create our pond\n\n this._pond = (0, _filepond.create)(this._element, Object.assign({}, globalOptions, options, attrs, this.$options.propsData)); // Copy instance method references to component instance\n\n Object.keys(this._pond).filter(function (key) {\n return !filteredComponentMethods.includes(key);\n }).forEach(function (key) {\n _this[key] = _this._pond[key];\n }); // Add to instances so we can apply global options when used\n\n instances.push(this._pond);\n },\n // Will clean up FilePond instance when unmounted\n destroyed: function destroyed() {\n var _this2 = this;\n\n // reference to detached method\n var detached = this.$options.detached; // no longer attached, clean up\n\n if (!this.$el.offsetParent) {\n detached.call(this);\n return;\n } // if we're still attached it's likely a transition is running, we need to \n // determine the moment when we're no longer attached to the DOM so we can \n // clean up properly\n\n\n var mutationHandler = function mutationHandler(mutations, observer) {\n var removedNodes = (mutations[0] || {}).removedNodes || [];\n var removedNode = removedNodes[0];\n if (!removedNode || !removedNode.contains(_this2.$el)) return;\n observer.disconnect();\n detached.call(_this2);\n }; // start observing parent element for changes to the DOM\n\n\n var observer = new MutationObserver(mutationHandler);\n observer.observe(document.documentElement, {\n childList: true,\n subtree: true\n });\n },\n // called when the component root node has been detached\n detached: function detached() {\n // exit when no pond defined\n if (!this._pond) return; // bye bye pond\n\n this._pond.destroy(); // remove from instances\n\n\n var index = instances.indexOf(this._pond);\n\n if (index >= 0) {\n instances.splice(index, 1);\n } // clear reference\n\n\n this._pond = null;\n }\n });\n };\n\n _exports.default = _default;\n});\n\n\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressDetails.vue?vue&type=style&index=0&id=68dd00b7&scoped=true&lang=css&\"","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _DomHandler = _interopRequireDefault(require(\"../utils/DomHandler\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction bindEvents(el) {\n el.addEventListener('mousedown', onMouseDown);\n}\nfunction unbindEvents(el) {\n el.removeEventListener('mousedown', onMouseDown);\n}\nfunction create(el) {\n var ink = document.createElement('span');\n ink.className = 'p-ink';\n el.appendChild(ink);\n ink.addEventListener('animationend', onAnimationEnd);\n}\nfunction remove(el) {\n var ink = getInk(el);\n if (ink) {\n unbindEvents(el);\n ink.removeEventListener('animationend', onAnimationEnd);\n ink.remove();\n }\n}\nfunction onMouseDown(event) {\n var target = event.currentTarget;\n var ink = getInk(target);\n if (!ink || getComputedStyle(ink, null).display === 'none') {\n return;\n }\n _DomHandler.default.removeClass(ink, 'p-ink-active');\n if (!_DomHandler.default.getHeight(ink) && !_DomHandler.default.getWidth(ink)) {\n var d = Math.max(_DomHandler.default.getOuterWidth(target), _DomHandler.default.getOuterHeight(target));\n ink.style.height = d + 'px';\n ink.style.width = d + 'px';\n }\n var offset = _DomHandler.default.getOffset(target);\n var x = event.pageX - offset.left + document.body.scrollTop - _DomHandler.default.getWidth(ink) / 2;\n var y = event.pageY - offset.top + document.body.scrollLeft - _DomHandler.default.getHeight(ink) / 2;\n ink.style.top = y + 'px';\n ink.style.left = x + 'px';\n _DomHandler.default.addClass(ink, 'p-ink-active');\n}\nfunction onAnimationEnd(event) {\n _DomHandler.default.removeClass(event.currentTarget, 'p-ink-active');\n}\nfunction getInk(el) {\n for (var i = 0; i < el.children.length; i++) {\n if (typeof el.children[i].className === 'string' && el.children[i].className.indexOf('p-ink') !== -1) {\n return el.children[i];\n }\n }\n return null;\n}\nvar Ripple = {\n inserted: function inserted(el, binding, vnode) {\n if (vnode.context.$primevue && vnode.context.$primevue.config.ripple) {\n create(el);\n bindEvents(el);\n }\n },\n unbind: function unbind(el) {\n remove(el);\n }\n};\nvar _default = exports.default = Ripple;\n","/*!\n * FilePondPluginFileValidateType 1.2.9\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self), (global.FilePondPluginFileValidateType = factory()));\n})(this, function() {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n isString = utils.isString,\n replaceInString = utils.replaceInString,\n guesstimateMimeType = utils.guesstimateMimeType,\n getExtensionFromFilename = utils.getExtensionFromFilename,\n getFilenameFromURL = utils.getFilenameFromURL;\n\n var mimeTypeMatchesWildCard = function mimeTypeMatchesWildCard(mimeType, wildcard) {\n var mimeTypeGroup = (/^[^/]+/.exec(mimeType) || []).pop(); // image/png -> image\n var wildcardGroup = wildcard.slice(0, -2); // image/* -> image\n return mimeTypeGroup === wildcardGroup;\n };\n\n var isValidMimeType = function isValidMimeType(acceptedTypes, userInputType) {\n return acceptedTypes.some(function(acceptedType) {\n // accepted is wildcard mime type\n if (/\\*$/.test(acceptedType)) {\n return mimeTypeMatchesWildCard(userInputType, acceptedType);\n }\n\n // is normal mime type\n return acceptedType === userInputType;\n });\n };\n\n var getItemType = function getItemType(item) {\n // if the item is a url we guess the mime type by the extension\n var type = '';\n if (isString(item)) {\n var filename = getFilenameFromURL(item);\n var extension = getExtensionFromFilename(filename);\n if (extension) {\n type = guesstimateMimeType(extension);\n }\n } else {\n type = item.type;\n }\n\n return type;\n };\n\n var validateFile = function validateFile(item, acceptedFileTypes, typeDetector) {\n // no types defined, everything is allowed \\o/\n if (acceptedFileTypes.length === 0) {\n return true;\n }\n\n // gets the item type\n var type = getItemType(item);\n\n // no type detector, test now\n if (!typeDetector) {\n return isValidMimeType(acceptedFileTypes, type);\n }\n\n // use type detector\n return new Promise(function(resolve, reject) {\n typeDetector(item, type)\n .then(function(detectedType) {\n if (isValidMimeType(acceptedFileTypes, detectedType)) {\n resolve();\n } else {\n reject();\n }\n })\n .catch(reject);\n });\n };\n\n var applyMimeTypeMap = function applyMimeTypeMap(map) {\n return function(acceptedFileType) {\n return map[acceptedFileType] === null\n ? false\n : map[acceptedFileType] || acceptedFileType;\n };\n };\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', function(map) {\n return Object.assign(map, {\n accept: 'acceptedFileTypes',\n });\n });\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function(file, _ref2) {\n var query = _ref2.query;\n // if we are not doing file type validation exit\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n return true;\n }\n\n // we validate the file against the accepted file types\n return validateFile(file, query('GET_ACCEPTED_FILE_TYPES'));\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function(file, _ref3) {\n var query = _ref3.query;\n return new Promise(function(resolve, reject) {\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n resolve(file);\n return;\n }\n\n var acceptedFileTypes = query('GET_ACCEPTED_FILE_TYPES');\n\n // custom type detector method\n var typeDetector = query('GET_FILE_VALIDATE_TYPE_DETECT_TYPE');\n\n // if invalid, exit here\n var validationResult = validateFile(file, acceptedFileTypes, typeDetector);\n\n var handleRejection = function handleRejection() {\n var acceptedFileTypesMapped = acceptedFileTypes\n .map(\n applyMimeTypeMap(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP')\n )\n )\n .filter(function(label) {\n return label !== false;\n });\n\n var acceptedFileTypesMappedUnique = acceptedFileTypesMapped.filter(function(\n item,\n index\n ) {\n return acceptedFileTypesMapped.indexOf(item) === index;\n });\n\n reject({\n status: {\n main: query('GET_LABEL_FILE_TYPE_NOT_ALLOWED'),\n sub: replaceInString(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES'),\n {\n allTypes: acceptedFileTypesMappedUnique.join(', '),\n allButLastType: acceptedFileTypesMappedUnique\n .slice(0, -1)\n .join(', '),\n lastType:\n acceptedFileTypesMappedUnique[\n acceptedFileTypesMappedUnique.length - 1\n ],\n }\n ),\n },\n });\n };\n\n // has returned new filename immidiately\n if (typeof validationResult === 'boolean') {\n if (!validationResult) {\n return handleRejection();\n }\n return resolve(file);\n }\n\n // is promise\n validationResult\n .then(function() {\n resolve(file);\n })\n .catch(handleRejection);\n });\n });\n\n // expose plugin\n return {\n // default options\n options: {\n // Enable or disable file type validation\n allowFileTypeValidation: [true, Type.BOOLEAN],\n\n // What file types to accept\n acceptedFileTypes: [[], Type.ARRAY],\n // - must be comma separated\n // - mime types: image/png, image/jpeg, image/gif\n // - extensions: .png, .jpg, .jpeg ( not enabled yet )\n // - wildcards: image/*\n\n // label to show when a type is not allowed\n labelFileTypeNotAllowed: ['File is of invalid type', Type.STRING],\n\n // nicer label\n fileValidateTypeLabelExpectedTypes: [\n 'Expects {allButLastType} or {lastType}',\n Type.STRING,\n ],\n\n // map mime types to extensions\n fileValidateTypeLabelExpectedTypesMap: [{}, Type.OBJECT],\n\n // Custom function to detect type of file\n fileValidateTypeDetectType: [null, Type.FUNCTION],\n },\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n }\n\n return plugin;\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=style&index=0&id=1cd02702&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStepper.vue?vue&type=style&index=0&id=f538fab4&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',_vm._g({class:['p-inputtext p-component', {'p-filled': _vm.filled}],domProps:{\"value\":_vm.value}},_vm.listeners))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InputText.vue?vue&type=template&id=3d6f2273&\"\nimport script from \"./InputText.vue?vue&type=script&lang=js&\"\nexport * from \"./InputText.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=style&index=0&id=5427836c&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactDetails.vue?vue&type=style&index=0&id=8e002db4&scoped=true&lang=css&\"","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","/*!\n * FilePondPluginImagePreview 4.6.12\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self),\n (global.FilePondPluginImagePreview = factory()));\n})(this, function() {\n 'use strict';\n\n // test if file is of type image and can be viewed in canvas\n var isPreviewableImage = function isPreviewableImage(file) {\n return /^image/.test(file.type);\n };\n\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n var REACT_ELEMENT_TYPE;\n\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n }\n\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0\n };\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n }\n\n function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol === 'function') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError('Object is not async iterable');\n }\n\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n\n function _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function(resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n function(arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n\n settle(result.done ? 'return' : 'normal', arg);\n },\n function(err) {\n resume('throw', err);\n }\n );\n } catch (err) {\n settle('throw', err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case 'throw':\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n return this;\n };\n }\n\n _AsyncGenerator.prototype.next = function(arg) {\n return this._invoke('next', arg);\n };\n\n _AsyncGenerator.prototype.throw = function(arg) {\n return this._invoke('throw', arg);\n };\n\n _AsyncGenerator.prototype.return = function(arg) {\n return this._invoke('return', arg);\n };\n\n function _wrapAsyncGenerator(fn) {\n return function() {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function(resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function() {\n return this;\n };\n }\n\n iter.next = function(value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump('next', value);\n };\n\n if (typeof inner.throw === 'function') {\n iter.throw = function(value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump('throw', value);\n };\n }\n\n if (typeof inner.return === 'function') {\n iter.return = function(value) {\n return pump('return', value);\n };\n }\n\n return iter;\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function() {\n var self = this,\n args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(\n gen,\n resolve,\n reject,\n _next,\n _throw,\n 'next',\n value\n );\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n 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 _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n }\n\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends =\n Object.assign ||\n 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 _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\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 function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf\n ? Object.getPrototypeOf\n : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf =\n Object.setPrototypeOf ||\n function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== 'function') {\n throw new TypeError(\n 'Super expression must either be null or a function'\n );\n }\n\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _instanceof(left, right) {\n if (\n right != null &&\n typeof Symbol !== 'undefined' &&\n right[Symbol.hasInstance]\n ) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule\n ? obj\n : {\n default: obj\n };\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\"\n );\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n }\n\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n }\n\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(\n Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n })\n );\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n\n function _classNameTDZError(name) {\n throw new Error(\n 'Class \"' + name + '\" cannot be referenced in computed property keys.'\n );\n }\n\n var _temporalUndefined = {};\n\n function _slicedToArray(arr, i) {\n return (\n _arrayWithHoles(arr) ||\n _iterableToArrayLimit(arr, i) ||\n _nonIterableRest()\n );\n }\n\n function _slicedToArrayLoose(arr, i) {\n return (\n _arrayWithHoles(arr) ||\n _iterableToArrayLimitLoose(arr, i) ||\n _nonIterableRest()\n );\n }\n\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return (\n _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread()\n );\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++)\n arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (\n Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === '[object Arguments]'\n )\n return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (\n var _i = arr[Symbol.iterator](), _s;\n !(_n = (_s = _i.next()).done);\n _n = true\n ) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n\n for (\n var _iterator = arr[Symbol.iterator](), _step;\n !(_step = _iterator.next()).done;\n\n ) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n\n function _skipFirstGeneratorNext(fn) {\n return function() {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n\n return (hint === 'string' ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n\n return typeof key === 'symbol' ? key : String(key);\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error(\n 'Decorating class property failed. Please ensure that ' +\n 'proposal-class-properties is enabled and set to use loose mode. ' +\n 'To use proposal-class-properties in spec mode with decorators, wait for ' +\n 'the next major version of decorators in stage 2.'\n );\n }\n\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer\n ? descriptor.initializer.call(context)\n : void 0\n });\n }\n\n function _applyDecoratedDescriptor(\n target,\n property,\n decorators,\n descriptor,\n context\n ) {\n var desc = {};\n Object.keys(descriptor).forEach(function(key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators\n .slice()\n .reverse()\n .reduce(function(desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var id = 0;\n\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n\n return receiver;\n }\n\n function _classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n }\n\n function _classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n }\n\n return value;\n }\n\n function _classStaticPrivateFieldSpecGet(\n receiver,\n classConstructor,\n descriptor\n ) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return descriptor.value;\n }\n\n function _classStaticPrivateFieldSpecSet(\n receiver,\n classConstructor,\n descriptor,\n value\n ) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n return value;\n }\n\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return method;\n }\n\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(\n _coalesceClassElements(r.d.map(_createElementDescriptor)),\n decorators\n );\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n\n function _getDecoratorsApi() {\n _getDecoratorsApi = function() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function(O, elements) {\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function(F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n var placement = element.placement;\n\n if (\n element.kind === kind &&\n (placement === 'static' || placement === 'prototype')\n ) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function(element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function(element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(\n element,\n placements\n );\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n\n keys.push(element.key);\n },\n decorateElement: function(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (\n var decorators = element.decorators, i = decorators.length - 1;\n i >= 0;\n i--\n ) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras(\n (0, decorators[i])(elementObject) || elementObject\n );\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor(\n (0, decorators[i])(obj) || obj\n );\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (\n elements[j].key === elements[k].key &&\n elements[j].placement === elements[k].placement\n ) {\n throw new TypeError(\n 'Duplicated element (' + elements[j].key + ')'\n );\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(\n elementObject,\n 'finisher',\n 'An element descriptor'\n );\n this.disallowProperty(\n elementObject,\n 'extras',\n 'An element descriptor'\n );\n return element;\n }, this);\n },\n toElementDescriptor: function(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError(\n 'An element descriptor\\'s .kind property must be either \"method\" or' +\n ' \"field\", but a decorator created an element descriptor with' +\n ' .kind \"' +\n kind +\n '\"'\n );\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (\n placement !== 'static' &&\n placement !== 'prototype' &&\n placement !== 'own'\n ) {\n throw new TypeError(\n 'An element descriptor\\'s .placement property must be one of \"static\",' +\n ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n ' with .placement \"' +\n placement +\n '\"'\n );\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(\n elementObject,\n 'elements',\n 'An element descriptor'\n );\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n\n if (kind !== 'field') {\n this.disallowProperty(\n elementObject,\n 'initializer',\n 'A method descriptor'\n );\n } else {\n this.disallowProperty(\n descriptor,\n 'get',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'set',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'value',\n 'The property descriptor of a field descriptor'\n );\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function(elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function(obj) {\n var kind = String(obj.kind);\n\n if (kind !== 'class') {\n throw new TypeError(\n 'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n ' created a class descriptor with .kind \"' +\n kind +\n '\"'\n );\n }\n\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n var finisher = _optionalCallableProperty(obj, 'finisher');\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(\n objectType + \" can't have a .\" + name + ' property.'\n );\n }\n }\n };\n return api;\n }\n\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static\n ? 'static'\n : def.kind === 'field'\n ? 'own'\n : 'prototype',\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n\n function _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function(other) {\n return (\n other.kind === 'method' &&\n other.key === element.key &&\n other.placement === element.placement\n );\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (\n element.kind === 'method' &&\n (other = newElements.find(isSameElement))\n ) {\n if (\n _isDataDescriptor(element.descriptor) ||\n _isDataDescriptor(other.descriptor)\n ) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\n 'Duplicated methods (' + element.key + \") can't be decorated.\"\n );\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\n \"Decorators can't be placed on different accessors with for \" +\n 'the same property (' +\n element.key +\n ').'\n );\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n }\n\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n\n function _isDataDescriptor(desc) {\n return (\n desc !== undefined &&\n !(desc.value === undefined && desc.writable === undefined)\n );\n }\n\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n }\n\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n return fn;\n }\n\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function(re, groups) {\n return new BabelRegExp(re, groups);\n };\n\n var _RegExp = _wrapNativeSuper(RegExp);\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n\n _groups.set(_this, groups);\n\n return _this;\n }\n\n _inherits(BabelRegExp, _RegExp);\n\n BabelRegExp.prototype.exec = function(str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n return '$' + groups[name];\n })\n );\n } else if (typeof substitution === 'function') {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function() {\n var args = [];\n args.push.apply(args, arguments);\n\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function(groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n }\n\n var vectorMultiply = function vectorMultiply(v, amount) {\n return createVector(v.x * amount, v.y * amount);\n };\n\n var vectorAdd = function vectorAdd(a, b) {\n return createVector(a.x + b.x, a.y + b.y);\n };\n\n var vectorNormalize = function vectorNormalize(v) {\n var l = Math.sqrt(v.x * v.x + v.y * v.y);\n if (l === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n return createVector(v.x / l, v.y / l);\n };\n\n var vectorRotate = function vectorRotate(v, radians, origin) {\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var t = createVector(v.x - origin.x, v.y - origin.y);\n return createVector(\n origin.x + cos * t.x - sin * t.y,\n origin.y + sin * t.x + cos * t.y\n );\n };\n\n var createVector = function createVector() {\n var x =\n arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return { x: x, y: y };\n };\n\n var getMarkupValue = function getMarkupValue(value, size) {\n var scalar =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n if (typeof value === 'string') {\n return parseFloat(value) * scalar;\n }\n if (typeof value === 'number') {\n return value * (axis ? size[axis] : Math.min(size.width, size.height));\n }\n return;\n };\n\n var getMarkupStyles = function getMarkupStyles(markup, size, scale) {\n var lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n var fill = markup.backgroundColor || markup.fontColor || 'transparent';\n var stroke = markup.borderColor || markup.lineColor || 'transparent';\n var strokeWidth = getMarkupValue(\n markup.borderWidth || markup.lineWidth,\n size,\n scale\n );\n var lineCap = markup.lineCap || 'round';\n var lineJoin = markup.lineJoin || 'round';\n var dashes =\n typeof lineStyle === 'string'\n ? ''\n : lineStyle\n .map(function(v) {\n return getMarkupValue(v, size, scale);\n })\n .join(',');\n var opacity = markup.opacity || 1;\n return {\n 'stroke-linecap': lineCap,\n 'stroke-linejoin': lineJoin,\n 'stroke-width': strokeWidth || 0,\n 'stroke-dasharray': dashes,\n stroke: stroke,\n fill: fill,\n opacity: opacity\n };\n };\n\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n var getMarkupRect = function getMarkupRect(rect, size) {\n var scalar =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var left =\n getMarkupValue(rect.x, size, scalar, 'width') ||\n getMarkupValue(rect.left, size, scalar, 'width');\n var top =\n getMarkupValue(rect.y, size, scalar, 'height') ||\n getMarkupValue(rect.top, size, scalar, 'height');\n var width = getMarkupValue(rect.width, size, scalar, 'width');\n var height = getMarkupValue(rect.height, size, scalar, 'height');\n var right = getMarkupValue(rect.right, size, scalar, 'width');\n var bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n\n if (!isDefined(top)) {\n if (isDefined(height) && isDefined(bottom)) {\n top = size.height - height - bottom;\n } else {\n top = bottom;\n }\n }\n\n if (!isDefined(left)) {\n if (isDefined(width) && isDefined(right)) {\n left = size.width - width - right;\n } else {\n left = right;\n }\n }\n\n if (!isDefined(width)) {\n if (isDefined(left) && isDefined(right)) {\n width = size.width - left - right;\n } else {\n width = 0;\n }\n }\n\n if (!isDefined(height)) {\n if (isDefined(top) && isDefined(bottom)) {\n height = size.height - top - bottom;\n } else {\n height = 0;\n }\n }\n\n return {\n x: left || 0,\n y: top || 0,\n width: width || 0,\n height: height || 0\n };\n };\n\n var pointsToPathShape = function pointsToPathShape(points) {\n return points\n .map(function(point, index) {\n return ''\n .concat(index === 0 ? 'M' : 'L', ' ')\n .concat(point.x, ' ')\n .concat(point.y);\n })\n .join(' ');\n };\n\n var setAttributes = function setAttributes(element, attr) {\n return Object.keys(attr).forEach(function(key) {\n return element.setAttribute(key, attr[key]);\n });\n };\n\n var ns = 'http://www.w3.org/2000/svg';\n var svg = function svg(tag, attr) {\n var element = document.createElementNS(ns, tag);\n if (attr) {\n setAttributes(element, attr);\n }\n return element;\n };\n\n var updateRect = function updateRect(element) {\n return setAttributes(\n element,\n Object.assign({}, element.rect, element.styles)\n );\n };\n\n var updateEllipse = function updateEllipse(element) {\n var cx = element.rect.x + element.rect.width * 0.5;\n var cy = element.rect.y + element.rect.height * 0.5;\n var rx = element.rect.width * 0.5;\n var ry = element.rect.height * 0.5;\n return setAttributes(\n element,\n Object.assign(\n {\n cx: cx,\n cy: cy,\n rx: rx,\n ry: ry\n },\n element.styles\n )\n );\n };\n\n var IMAGE_FIT_STYLE = {\n contain: 'xMidYMid meet',\n cover: 'xMidYMid slice'\n };\n\n var updateImage = function updateImage(element, markup) {\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none'\n })\n );\n };\n\n var TEXT_ANCHOR = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n\n var updateText = function updateText(element, markup, size, scale) {\n var fontSize = getMarkupValue(markup.fontSize, size, scale);\n var fontFamily = markup.fontFamily || 'sans-serif';\n var fontWeight = markup.fontWeight || 'normal';\n var textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n 'stroke-width': 0,\n 'font-weight': fontWeight,\n 'font-size': fontSize,\n 'font-family': fontFamily,\n 'text-anchor': textAlign\n })\n );\n\n // update text\n if (element.text !== markup.text) {\n element.text = markup.text;\n element.textContent = markup.text.length ? markup.text : ' ';\n }\n };\n\n var updateLine = function updateLine(element, markup, size, scale) {\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n fill: 'none'\n })\n );\n\n var line = element.childNodes[0];\n var begin = element.childNodes[1];\n var end = element.childNodes[2];\n\n var origin = element.rect;\n\n var target = {\n x: element.rect.x + element.rect.width,\n y: element.rect.y + element.rect.height\n };\n\n setAttributes(line, {\n x1: origin.x,\n y1: origin.y,\n x2: target.x,\n y2: target.y\n });\n\n if (!markup.lineDecoration) return;\n\n begin.style.display = 'none';\n end.style.display = 'none';\n\n var v = vectorNormalize({\n x: target.x - origin.x,\n y: target.y - origin.y\n });\n\n var l = getMarkupValue(0.05, size, scale);\n\n if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n var arrowBeginRotationPoint = vectorMultiply(v, l);\n var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n setAttributes(begin, {\n style: 'display:block;',\n d: 'M'\n .concat(arrowBeginA.x, ',')\n .concat(arrowBeginA.y, ' L')\n .concat(origin.x, ',')\n .concat(origin.y, ' L')\n .concat(arrowBeginB.x, ',')\n .concat(arrowBeginB.y)\n });\n }\n\n if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n var arrowEndRotationPoint = vectorMultiply(v, -l);\n var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n setAttributes(end, {\n style: 'display:block;',\n d: 'M'\n .concat(arrowEndA.x, ',')\n .concat(arrowEndA.y, ' L')\n .concat(target.x, ',')\n .concat(target.y, ' L')\n .concat(arrowEndB.x, ',')\n .concat(arrowEndB.y)\n });\n }\n };\n\n var updatePath = function updatePath(element, markup, size, scale) {\n setAttributes(\n element,\n Object.assign({}, element.styles, {\n fill: 'none',\n d: pointsToPathShape(\n markup.points.map(function(point) {\n return {\n x: getMarkupValue(point.x, size, scale, 'width'),\n y: getMarkupValue(point.y, size, scale, 'height')\n };\n })\n )\n })\n );\n };\n\n var createShape = function createShape(node) {\n return function(markup) {\n return svg(node, { id: markup.id });\n };\n };\n\n var createImage = function createImage(markup) {\n var shape = svg('image', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n opacity: '0'\n });\n\n shape.onload = function() {\n shape.setAttribute('opacity', markup.opacity || 1);\n };\n shape.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n 'xlink:href',\n markup.src\n );\n return shape;\n };\n\n var createLine = function createLine(markup) {\n var shape = svg('g', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round'\n });\n\n var line = svg('line');\n shape.appendChild(line);\n\n var begin = svg('path');\n shape.appendChild(begin);\n\n var end = svg('path');\n shape.appendChild(end);\n\n return shape;\n };\n\n var CREATE_TYPE_ROUTES = {\n image: createImage,\n rect: createShape('rect'),\n ellipse: createShape('ellipse'),\n text: createShape('text'),\n path: createShape('path'),\n line: createLine\n };\n\n var UPDATE_TYPE_ROUTES = {\n rect: updateRect,\n ellipse: updateEllipse,\n image: updateImage,\n text: updateText,\n path: updatePath,\n line: updateLine\n };\n\n var createMarkupByType = function createMarkupByType(type, markup) {\n return CREATE_TYPE_ROUTES[type](markup);\n };\n\n var updateMarkupByType = function updateMarkupByType(\n element,\n type,\n markup,\n size,\n scale\n ) {\n if (type !== 'path') {\n element.rect = getMarkupRect(markup, size, scale);\n }\n element.styles = getMarkupStyles(markup, size, scale);\n UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n };\n\n var MARKUP_RECT = [\n 'x',\n 'y',\n 'left',\n 'top',\n 'right',\n 'bottom',\n 'width',\n 'height'\n ];\n\n var toOptionalFraction = function toOptionalFraction(value) {\n return typeof value === 'string' && /%/.test(value)\n ? parseFloat(value) / 100\n : value;\n };\n\n // adds default markup properties, clones markup\n var prepareMarkup = function prepareMarkup(markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n props = _markup[1];\n\n var rect = props.points\n ? {}\n : MARKUP_RECT.reduce(function(prev, curr) {\n prev[curr] = toOptionalFraction(props[curr]);\n return prev;\n }, {});\n\n return [\n type,\n Object.assign(\n {\n zIndex: 0\n },\n props,\n rect\n )\n ];\n };\n\n var sortMarkupByZIndex = function sortMarkupByZIndex(a, b) {\n if (a[1].zIndex > b[1].zIndex) {\n return 1;\n }\n if (a[1].zIndex < b[1].zIndex) {\n return -1;\n }\n return 0;\n };\n\n var createMarkupView = function createMarkupView(_) {\n return _.utils.createView({\n name: 'image-preview-markup',\n tag: 'svg',\n ignoreRect: true,\n mixins: {\n apis: ['width', 'height', 'crop', 'markup', 'resize', 'dirty']\n },\n\n write: function write(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n if (!props.dirty) return;\n var crop = props.crop,\n resize = props.resize,\n markup = props.markup;\n\n var viewWidth = props.width;\n var viewHeight = props.height;\n\n var cropWidth = crop.width;\n var cropHeight = crop.height;\n\n if (resize) {\n var _size = resize.size;\n\n var outputWidth = _size && _size.width;\n var outputHeight = _size && _size.height;\n var outputFit = resize.mode;\n var outputUpscale = resize.upscale;\n\n if (outputWidth && !outputHeight) outputHeight = outputWidth;\n if (outputHeight && !outputWidth) outputWidth = outputHeight;\n\n var shouldUpscale =\n cropWidth < outputWidth && cropHeight < outputHeight;\n\n if (!shouldUpscale || (shouldUpscale && outputUpscale)) {\n var scalarWidth = outputWidth / cropWidth;\n var scalarHeight = outputHeight / cropHeight;\n\n if (outputFit === 'force') {\n cropWidth = outputWidth;\n cropHeight = outputHeight;\n } else {\n var scalar;\n if (outputFit === 'cover') {\n scalar = Math.max(scalarWidth, scalarHeight);\n } else if (outputFit === 'contain') {\n scalar = Math.min(scalarWidth, scalarHeight);\n }\n cropWidth = cropWidth * scalar;\n cropHeight = cropHeight * scalar;\n }\n }\n }\n\n var size = {\n width: viewWidth,\n height: viewHeight\n };\n\n root.element.setAttribute('width', size.width);\n root.element.setAttribute('height', size.height);\n\n var scale = Math.min(viewWidth / cropWidth, viewHeight / cropHeight);\n\n // clear\n root.element.innerHTML = '';\n\n // get filter\n var markupFilter = root.query('GET_IMAGE_PREVIEW_MARKUP_FILTER');\n\n // draw new\n markup\n .filter(markupFilter)\n .map(prepareMarkup)\n .sort(sortMarkupByZIndex)\n .forEach(function(markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n settings = _markup[1];\n\n // create\n var element = createMarkupByType(type, settings);\n\n // update\n updateMarkupByType(element, type, settings, size, scale);\n\n // add\n root.element.appendChild(element);\n });\n }\n });\n };\n\n var createVector$1 = function createVector(x, y) {\n return { x: x, y: y };\n };\n\n var vectorDot = function vectorDot(a, b) {\n return a.x * b.x + a.y * b.y;\n };\n\n var vectorSubtract = function vectorSubtract(a, b) {\n return createVector$1(a.x - b.x, a.y - b.y);\n };\n\n var vectorDistanceSquared = function vectorDistanceSquared(a, b) {\n return vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n };\n\n var vectorDistance = function vectorDistance(a, b) {\n return Math.sqrt(vectorDistanceSquared(a, b));\n };\n\n var getOffsetPointOnEdge = function getOffsetPointOnEdge(length, rotation) {\n var a = length;\n\n var A = 1.5707963267948966;\n var B = rotation;\n var C = 1.5707963267948966 - rotation;\n\n var sinA = Math.sin(A);\n var sinB = Math.sin(B);\n var sinC = Math.sin(C);\n var cosC = Math.cos(C);\n var ratio = a / sinA;\n var b = ratio * sinB;\n var c = ratio * sinC;\n\n return createVector$1(cosC * b, cosC * c);\n };\n\n var getRotatedRectSize = function getRotatedRectSize(rect, rotation) {\n var w = rect.width;\n var h = rect.height;\n\n var hor = getOffsetPointOnEdge(w, rotation);\n var ver = getOffsetPointOnEdge(h, rotation);\n\n var tl = createVector$1(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n\n var tr = createVector$1(\n rect.x + rect.width + Math.abs(ver.y),\n rect.y + Math.abs(ver.x)\n );\n\n var bl = createVector$1(\n rect.x - Math.abs(ver.y),\n rect.y + rect.height - Math.abs(ver.x)\n );\n\n return {\n width: vectorDistance(tl, tr),\n height: vectorDistance(tl, bl)\n };\n };\n\n var calculateCanvasSize = function calculateCanvasSize(\n image,\n canvasAspectRatio\n ) {\n var zoom =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var imageAspectRatio = image.height / image.width;\n\n // determine actual pixels on x and y axis\n var canvasWidth = 1;\n var canvasHeight = canvasAspectRatio;\n var imgWidth = 1;\n var imgHeight = imageAspectRatio;\n if (imgHeight > canvasHeight) {\n imgHeight = canvasHeight;\n imgWidth = imgHeight / imageAspectRatio;\n }\n\n var scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n var width = image.width / (zoom * scalar * imgWidth);\n var height = width * canvasAspectRatio;\n\n return {\n width: width,\n height: height\n };\n };\n\n var getImageRectZoomFactor = function getImageRectZoomFactor(\n imageRect,\n cropRect,\n rotation,\n center\n ) {\n // calculate available space round image center position\n var cx = center.x > 0.5 ? 1 - center.x : center.x;\n var cy = center.y > 0.5 ? 1 - center.y : center.y;\n var imageWidth = cx * 2 * imageRect.width;\n var imageHeight = cy * 2 * imageRect.height;\n\n // calculate rotated crop rectangle size\n var rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n // calculate scalar required to fit image\n return Math.max(\n rotatedCropSize.width / imageWidth,\n rotatedCropSize.height / imageHeight\n );\n };\n\n var getCenteredCropRect = function getCenteredCropRect(\n container,\n aspectRatio\n ) {\n var width = container.width;\n var height = width * aspectRatio;\n if (height > container.height) {\n height = container.height;\n width = height / aspectRatio;\n }\n var x = (container.width - width) * 0.5;\n var y = (container.height - height) * 0.5;\n\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n };\n\n var getCurrentCropSize = function getCurrentCropSize(imageSize) {\n var crop =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var zoom = crop.zoom,\n rotation = crop.rotation,\n center = crop.center,\n aspectRatio = crop.aspectRatio;\n\n if (!aspectRatio) aspectRatio = imageSize.height / imageSize.width;\n\n var canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n\n var canvasCenter = {\n x: canvasSize.width * 0.5,\n y: canvasSize.height * 0.5\n };\n\n var stage = {\n x: 0,\n y: 0,\n width: canvasSize.width,\n height: canvasSize.height,\n center: canvasCenter\n };\n\n var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n var stageZoomFactor = getImageRectZoomFactor(\n imageSize,\n getCenteredCropRect(stage, aspectRatio),\n rotation,\n shouldLimit ? center : { x: 0.5, y: 0.5 }\n );\n\n var scale = zoom * stageZoomFactor;\n\n // start drawing\n return {\n widthFloat: canvasSize.width / scale,\n heightFloat: canvasSize.height / scale,\n width: Math.round(canvasSize.width / scale),\n height: Math.round(canvasSize.height / scale)\n };\n };\n\n var IMAGE_SCALE_SPRING_PROPS = {\n type: 'spring',\n stiffness: 0.5,\n damping: 0.45,\n mass: 10\n };\n\n // does horizontal and vertical flipping\n var createBitmapView = function createBitmapView(_) {\n return _.utils.createView({\n name: 'image-bitmap',\n ignoreRect: true,\n mixins: { styles: ['scaleX', 'scaleY'] },\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.appendChild(props.image);\n }\n });\n };\n\n // shifts and rotates image\n var createImageCanvasWrapper = function createImageCanvasWrapper(_) {\n return _.utils.createView({\n name: 'image-canvas-wrapper',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['crop', 'width', 'height'],\n\n styles: [\n 'originX',\n 'originY',\n 'translateX',\n 'translateY',\n 'scaleX',\n 'scaleY',\n 'rotateZ'\n ],\n\n animations: {\n originX: IMAGE_SCALE_SPRING_PROPS,\n originY: IMAGE_SCALE_SPRING_PROPS,\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateX: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n rotateZ: IMAGE_SCALE_SPRING_PROPS\n }\n },\n\n create: function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n props.width = props.image.width;\n props.height = props.image.height;\n root.ref.bitmap = root.appendChildView(\n root.createChildView(createBitmapView(_), { image: props.image })\n );\n },\n write: function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var flip = props.crop.flip;\n var bitmap = root.ref.bitmap;\n bitmap.scaleX = flip.horizontal ? -1 : 1;\n bitmap.scaleY = flip.vertical ? -1 : 1;\n }\n });\n };\n\n // clips canvas to correct aspect ratio\n var createClipView = function createClipView(_) {\n return _.utils.createView({\n name: 'image-clip',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: [\n 'crop',\n 'markup',\n 'resize',\n 'width',\n 'height',\n 'dirty',\n 'background'\n ],\n\n styles: ['width', 'height', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 }\n }\n },\n\n didWriteView: function didWriteView(_ref4) {\n var root = _ref4.root,\n props = _ref4.props;\n if (!props.background) return;\n root.element.style.backgroundColor = props.background;\n },\n create: function create(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n\n root.ref.image = root.appendChildView(\n root.createChildView(\n createImageCanvasWrapper(_),\n Object.assign({}, props)\n )\n );\n\n root.ref.createMarkup = function() {\n if (root.ref.markup) return;\n root.ref.markup = root.appendChildView(\n root.createChildView(createMarkupView(_), Object.assign({}, props))\n );\n };\n\n root.ref.destroyMarkup = function() {\n if (!root.ref.markup) return;\n root.removeChildView(root.ref.markup);\n root.ref.markup = null;\n };\n\n // set up transparency grid\n var transparencyIndicator = root.query(\n 'GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR'\n );\n if (transparencyIndicator === null) return;\n\n // grid pattern\n if (transparencyIndicator === 'grid') {\n root.element.dataset.transparencyIndicator = transparencyIndicator;\n }\n // basic color\n else {\n root.element.dataset.transparencyIndicator = 'color';\n }\n },\n write: function write(_ref6) {\n var root = _ref6.root,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n var crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty,\n width = props.width,\n height = props.height;\n\n root.ref.image.crop = crop;\n\n var stage = {\n x: 0,\n y: 0,\n width: width,\n height: height,\n center: {\n x: width * 0.5,\n y: height * 0.5\n }\n };\n\n var image = {\n width: root.ref.image.width,\n height: root.ref.image.height\n };\n\n var origin = {\n x: crop.center.x * image.width,\n y: crop.center.y * image.height\n };\n\n var translation = {\n x: stage.center.x - image.width * crop.center.x,\n y: stage.center.y - image.height * crop.center.y\n };\n\n var rotation = Math.PI * 2 + (crop.rotation % (Math.PI * 2));\n\n var cropAspectRatio = crop.aspectRatio || image.height / image.width;\n\n var shouldLimit =\n typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n var stageZoomFactor = getImageRectZoomFactor(\n image,\n getCenteredCropRect(stage, cropAspectRatio),\n\n rotation,\n shouldLimit ? crop.center : { x: 0.5, y: 0.5 }\n );\n\n var scale = crop.zoom * stageZoomFactor;\n\n // update markup view\n if (markup && markup.length) {\n root.ref.createMarkup();\n root.ref.markup.width = width;\n root.ref.markup.height = height;\n root.ref.markup.resize = resize;\n root.ref.markup.dirty = dirty;\n root.ref.markup.markup = markup;\n root.ref.markup.crop = getCurrentCropSize(image, crop);\n } else if (root.ref.markup) {\n root.ref.destroyMarkup();\n }\n\n // update image view\n var imageView = root.ref.image;\n\n // don't update clip layout\n if (shouldOptimize) {\n imageView.originX = null;\n imageView.originY = null;\n imageView.translateX = null;\n imageView.translateY = null;\n imageView.rotateZ = null;\n imageView.scaleX = null;\n imageView.scaleY = null;\n return;\n }\n\n imageView.originX = origin.x;\n imageView.originY = origin.y;\n imageView.translateX = translation.x;\n imageView.translateY = translation.y;\n imageView.rotateZ = rotation;\n imageView.scaleX = scale;\n imageView.scaleY = scale;\n }\n });\n };\n\n var createImageView = function createImageView(_) {\n return _.utils.createView({\n name: 'image-preview',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['image', 'crop', 'markup', 'resize', 'dirty', 'background'],\n\n styles: ['translateY', 'scaleX', 'scaleY', 'opacity'],\n\n animations: {\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n opacity: { type: 'tween', duration: 400 }\n }\n },\n\n create: function create(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.ref.clip = root.appendChildView(\n root.createChildView(createClipView(_), {\n id: props.id,\n image: props.image,\n crop: props.crop,\n markup: props.markup,\n resize: props.resize,\n dirty: props.dirty,\n background: props.background\n })\n );\n },\n write: function write(_ref8) {\n var root = _ref8.root,\n props = _ref8.props,\n shouldOptimize = _ref8.shouldOptimize;\n var clip = root.ref.clip;\n var image = props.image,\n crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty;\n\n clip.crop = crop;\n clip.markup = markup;\n clip.resize = resize;\n clip.dirty = dirty;\n\n // don't update clip layout\n clip.opacity = shouldOptimize ? 0 : 1;\n\n // don't re-render if optimizing or hidden (width will be zero resulting in weird animations)\n if (shouldOptimize || root.rect.element.hidden) return;\n\n // calculate scaled preview image size\n var imageAspectRatio = image.height / image.width;\n var aspectRatio = crop.aspectRatio || imageAspectRatio;\n\n // calculate container size\n var containerWidth = root.rect.inner.width;\n var containerHeight = root.rect.inner.height;\n\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n\n if (panelAspectRatio && !allowMultiple) {\n fixedPreviewHeight = containerWidth * panelAspectRatio;\n aspectRatio = panelAspectRatio;\n }\n\n // determine clip width and height\n var clipHeight =\n fixedPreviewHeight !== null\n ? fixedPreviewHeight\n : Math.max(\n minPreviewHeight,\n Math.min(containerWidth * aspectRatio, maxPreviewHeight)\n );\n\n var clipWidth = clipHeight / aspectRatio;\n if (clipWidth > containerWidth) {\n clipWidth = containerWidth;\n clipHeight = clipWidth * aspectRatio;\n }\n\n if (clipHeight > containerHeight) {\n clipHeight = containerHeight;\n clipWidth = containerHeight / aspectRatio;\n }\n\n clip.width = clipWidth;\n clip.height = clipHeight;\n }\n });\n };\n\n var SVG_MASK =\n '\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n';\n\n var SVGMaskUniqueId = 0;\n\n var createImageOverlayView = function createImageOverlayView(fpAPI) {\n return fpAPI.utils.createView({\n name: 'image-preview-overlay',\n tag: 'div',\n ignoreRect: true,\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var mask = SVG_MASK;\n if (document.querySelector('base')) {\n var url = new URL(\n window.location.href.replace(window.location.hash, '')\n ).href;\n mask = mask.replace(/url\\(\\#/g, 'url(' + url + '#');\n }\n\n SVGMaskUniqueId++;\n root.element.classList.add(\n 'filepond--image-preview-overlay-'.concat(props.status)\n );\n\n root.element.innerHTML = mask.replace(/__UID__/g, SVGMaskUniqueId);\n },\n mixins: {\n styles: ['opacity'],\n animations: {\n opacity: { type: 'spring', mass: 25 }\n }\n }\n });\n };\n\n /**\n * Bitmap Worker\n */\n var BitmapWorker = function BitmapWorker() {\n self.onmessage = function(e) {\n createImageBitmap(e.data.message.file).then(function(bitmap) {\n self.postMessage({ id: e.data.id, message: bitmap }, [bitmap]);\n });\n };\n };\n\n /**\n * ColorMatrix Worker\n */\n var ColorMatrixWorker = function ColorMatrixWorker() {\n self.onmessage = function(e) {\n var imageData = e.data.message.imageData;\n var matrix = e.data.message.colorMatrix;\n\n var data = imageData.data;\n var l = data.length;\n\n var m11 = matrix[0];\n var m12 = matrix[1];\n var m13 = matrix[2];\n var m14 = matrix[3];\n var m15 = matrix[4];\n\n var m21 = matrix[5];\n var m22 = matrix[6];\n var m23 = matrix[7];\n var m24 = matrix[8];\n var m25 = matrix[9];\n\n var m31 = matrix[10];\n var m32 = matrix[11];\n var m33 = matrix[12];\n var m34 = matrix[13];\n var m35 = matrix[14];\n\n var m41 = matrix[15];\n var m42 = matrix[16];\n var m43 = matrix[17];\n var m44 = matrix[18];\n var m45 = matrix[19];\n\n var index = 0,\n r = 0.0,\n g = 0.0,\n b = 0.0,\n a = 0.0;\n\n for (; index < l; index += 4) {\n r = data[index] / 255;\n g = data[index + 1] / 255;\n b = data[index + 2] / 255;\n a = data[index + 3] / 255;\n data[index] = Math.max(\n 0,\n Math.min((r * m11 + g * m12 + b * m13 + a * m14 + m15) * 255, 255)\n );\n data[index + 1] = Math.max(\n 0,\n Math.min((r * m21 + g * m22 + b * m23 + a * m24 + m25) * 255, 255)\n );\n data[index + 2] = Math.max(\n 0,\n Math.min((r * m31 + g * m32 + b * m33 + a * m34 + m35) * 255, 255)\n );\n data[index + 3] = Math.max(\n 0,\n Math.min((r * m41 + g * m42 + b * m43 + a * m44 + m45) * 255, 255)\n );\n }\n\n self.postMessage({ id: e.data.id, message: imageData }, [\n imageData.data.buffer\n ]);\n };\n };\n\n var getImageSize = function getImageSize(url, cb) {\n var image = new Image();\n image.onload = function() {\n var width = image.naturalWidth;\n var height = image.naturalHeight;\n image = null;\n cb(width, height);\n };\n image.src = url;\n };\n\n var transforms = {\n 1: function _() {\n return [1, 0, 0, 1, 0, 0];\n },\n 2: function _(width) {\n return [-1, 0, 0, 1, width, 0];\n },\n 3: function _(width, height) {\n return [-1, 0, 0, -1, width, height];\n },\n 4: function _(width, height) {\n return [1, 0, 0, -1, 0, height];\n },\n 5: function _() {\n return [0, 1, 1, 0, 0, 0];\n },\n 6: function _(width, height) {\n return [0, 1, -1, 0, height, 0];\n },\n 7: function _(width, height) {\n return [0, -1, -1, 0, height, width];\n },\n 8: function _(width) {\n return [0, -1, 1, 0, 0, width];\n }\n };\n\n var fixImageOrientation = function fixImageOrientation(\n ctx,\n width,\n height,\n orientation\n ) {\n // no orientation supplied\n if (orientation === -1) {\n return;\n }\n\n ctx.transform.apply(ctx, transforms[orientation](width, height));\n };\n\n // draws the preview image to canvas\n var createPreviewImage = function createPreviewImage(\n data,\n width,\n height,\n orientation\n ) {\n // can't draw on half pixels\n width = Math.round(width);\n height = Math.round(height);\n\n // draw image\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext('2d');\n\n // if is rotated incorrectly swap width and height\n if (orientation >= 5 && orientation <= 8) {\n var _ref = [height, width];\n width = _ref[0];\n height = _ref[1];\n }\n\n // correct image orientation\n fixImageOrientation(ctx, width, height, orientation);\n\n // draw the image\n ctx.drawImage(data, 0, 0, width, height);\n\n return canvas;\n };\n\n var isBitmap = function isBitmap(file) {\n return /^image/.test(file.type) && !/svg/.test(file.type);\n };\n\n var MAX_WIDTH = 10;\n var MAX_HEIGHT = 10;\n\n var calculateAverageColor = function calculateAverageColor(image) {\n var scalar = Math.min(MAX_WIDTH / image.width, MAX_HEIGHT / image.height);\n\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var width = (canvas.width = Math.ceil(image.width * scalar));\n var height = (canvas.height = Math.ceil(image.height * scalar));\n ctx.drawImage(image, 0, 0, width, height);\n var data = null;\n try {\n data = ctx.getImageData(0, 0, width, height).data;\n } catch (e) {\n return null;\n }\n var l = data.length;\n\n var r = 0;\n var g = 0;\n var b = 0;\n var i = 0;\n\n for (; i < l; i += 4) {\n r += data[i] * data[i];\n g += data[i + 1] * data[i + 1];\n b += data[i + 2] * data[i + 2];\n }\n\n r = averageColor(r, l);\n g = averageColor(g, l);\n b = averageColor(b, l);\n\n return { r: r, g: g, b: b };\n };\n\n var averageColor = function averageColor(c, l) {\n return Math.floor(Math.sqrt(c / (l / 4)));\n };\n\n var cloneCanvas = function cloneCanvas(origin, target) {\n target = target || document.createElement('canvas');\n target.width = origin.width;\n target.height = origin.height;\n var ctx = target.getContext('2d');\n ctx.drawImage(origin, 0, 0);\n return target;\n };\n\n var cloneImageData = function cloneImageData(imageData) {\n var id;\n try {\n id = new ImageData(imageData.width, imageData.height);\n } catch (e) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n id = ctx.createImageData(imageData.width, imageData.height);\n }\n id.data.set(new Uint8ClampedArray(imageData.data));\n return id;\n };\n\n var loadImage = function loadImage(url) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function(e) {\n reject(e);\n };\n img.src = url;\n });\n };\n\n var createImageWrapperView = function createImageWrapperView(_) {\n // create overlay view\n var OverlayView = createImageOverlayView(_);\n\n var ImageView = createImageView(_);\n var createWorker = _.utils.createWorker;\n\n var applyFilter = function applyFilter(root, filter, target) {\n return new Promise(function(resolve) {\n // will store image data for future filter updates\n if (!root.ref.imageData) {\n root.ref.imageData = target\n .getContext('2d')\n .getImageData(0, 0, target.width, target.height);\n }\n\n // get image data reference\n var imageData = cloneImageData(root.ref.imageData);\n\n if (!filter || filter.length !== 20) {\n target.getContext('2d').putImageData(imageData, 0, 0);\n return resolve();\n }\n\n var worker = createWorker(ColorMatrixWorker);\n worker.post(\n {\n imageData: imageData,\n colorMatrix: filter\n },\n\n function(response) {\n // apply filtered colors\n target.getContext('2d').putImageData(response, 0, 0);\n\n // stop worker\n worker.terminate();\n\n // done!\n resolve();\n },\n [imageData.data.buffer]\n );\n });\n };\n\n var removeImageView = function removeImageView(root, imageView) {\n root.removeChildView(imageView);\n imageView.image.width = 1;\n imageView.image.height = 1;\n imageView._destroy();\n };\n\n // remove an image\n var shiftImage = function shiftImage(_ref) {\n var root = _ref.root;\n var imageView = root.ref.images.shift();\n imageView.opacity = 0;\n imageView.translateY = -15;\n root.ref.imageViewBin.push(imageView);\n return imageView;\n };\n\n // add new image\n var pushImage = function pushImage(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n image = _ref2.image;\n var id = props.id;\n var item = root.query('GET_ITEM', { id: id });\n if (!item) return;\n\n var crop = item.getMetadata('crop') || {\n center: {\n x: 0.5,\n y: 0.5\n },\n\n flip: {\n horizontal: false,\n vertical: false\n },\n\n zoom: 1,\n rotation: 0,\n aspectRatio: null\n };\n\n var background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n\n var markup;\n var resize;\n var dirty = false;\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n markup = item.getMetadata('markup') || [];\n resize = item.getMetadata('resize');\n dirty = true;\n }\n\n // append image presenter\n var imageView = root.appendChildView(\n root.createChildView(ImageView, {\n id: id,\n image: image,\n crop: crop,\n resize: resize,\n markup: markup,\n dirty: dirty,\n background: background,\n opacity: 0,\n scaleX: 1.15,\n scaleY: 1.15,\n translateY: 15\n }),\n\n root.childViews.length\n );\n\n root.ref.images.push(imageView);\n\n // reveal the preview image\n imageView.opacity = 1;\n imageView.scaleX = 1;\n imageView.scaleY = 1;\n imageView.translateY = 0;\n\n // the preview is now ready to be drawn\n setTimeout(function() {\n root.dispatch('DID_IMAGE_PREVIEW_SHOW', { id: id });\n }, 250);\n };\n\n var updateImage = function updateImage(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n var imageView = root.ref.images[root.ref.images.length - 1];\n imageView.crop = item.getMetadata('crop');\n imageView.background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n imageView.dirty = true;\n imageView.resize = item.getMetadata('resize');\n imageView.markup = item.getMetadata('markup');\n }\n };\n\n // replace image preview\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n action = _ref4.action;\n // only filter and crop trigger redraw\n if (!/crop|filter|markup|resize/.test(action.change.key)) return;\n\n // no images to update, exit\n if (!root.ref.images.length) return;\n\n // no item found, exit\n var item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n\n // for now, update existing image when filtering\n if (/filter/.test(action.change.key)) {\n var imageView = root.ref.images[root.ref.images.length - 1];\n applyFilter(root, action.change.value, imageView.image);\n return;\n }\n\n if (/crop|markup|resize/.test(action.change.key)) {\n var crop = item.getMetadata('crop');\n var image = root.ref.images[root.ref.images.length - 1];\n\n // if aspect ratio has changed, we need to create a new image\n if (\n crop &&\n crop.aspectRatio &&\n image.crop &&\n image.crop.aspectRatio &&\n Math.abs(crop.aspectRatio - image.crop.aspectRatio) > 0.00001\n ) {\n var _imageView = shiftImage({ root: root });\n pushImage({\n root: root,\n props: props,\n image: cloneCanvas(_imageView.image)\n });\n }\n // if not, we can update the current image\n else {\n updateImage({ root: root, props: props });\n }\n }\n };\n\n var canCreateImageBitmap = function canCreateImageBitmap(file) {\n // Firefox versions before 58 will freeze when running createImageBitmap\n // in a Web Worker so we detect those versions and return false for support\n var userAgent = window.navigator.userAgent;\n var isFirefox = userAgent.match(/Firefox\\/([0-9]+)\\./);\n var firefoxVersion = isFirefox ? parseInt(isFirefox[1]) : null;\n if (firefoxVersion !== null && firefoxVersion <= 58) return false;\n\n return 'createImageBitmap' in window && isBitmap(file);\n };\n\n /**\n * Write handler for when preview container has been created\n */\n var didCreatePreviewContainer = function didCreatePreviewContainer(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // determine image size of this item\n getImageSize(fileURL, function(width, height) {\n // we can now scale the panel to the final size\n root.dispatch('DID_IMAGE_PREVIEW_CALCULATE_SIZE', {\n id: id,\n width: width,\n height: height\n });\n });\n };\n\n var drawPreview = function drawPreview(_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // fallback\n var loadPreviewFallback = function loadPreviewFallback() {\n // let's scale the image in the main thread :(\n loadImage(fileURL).then(previewImageLoaded);\n };\n\n // image is now ready\n var previewImageLoaded = function previewImageLoaded(imageData) {\n // the file url is no longer needed\n URL.revokeObjectURL(fileURL);\n\n // draw the scaled down version here and use that as source so bitmapdata can be closed\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap if orientation is incorrect\n var width = imageData.width,\n height = imageData.height;\n\n // if no width or height, just return early.\n if (!width || !height) return;\n\n if (orientation >= 5 && orientation <= 8) {\n var _ref7 = [height, width];\n width = _ref7[0];\n height = _ref7[1];\n }\n\n // scale canvas based on pixel density\n // we multiply by .75 as that creates smaller but still clear images on screens with high res displays\n var pixelDensityFactor = Math.max(1, window.devicePixelRatio * 0.75);\n\n // we want as much pixels to work with as possible,\n // this multiplies the minimum image resolution,\n // so when zooming in it doesn't get too blurry\n var zoomFactor = root.query('GET_IMAGE_PREVIEW_ZOOM_FACTOR');\n\n // imaeg scale factor\n var scaleFactor = zoomFactor * pixelDensityFactor;\n\n // calculate scaled preview image size\n var previewImageRatio = height / width;\n\n // calculate image preview height and width\n var previewContainerWidth = root.rect.element.width;\n var previewContainerHeight = root.rect.element.height;\n\n var imageWidth = previewContainerWidth;\n var imageHeight = imageWidth * previewImageRatio;\n\n if (previewImageRatio > 1) {\n imageWidth = Math.min(width, previewContainerWidth * scaleFactor);\n imageHeight = imageWidth * previewImageRatio;\n } else {\n imageHeight = Math.min(height, previewContainerHeight * scaleFactor);\n imageWidth = imageHeight / previewImageRatio;\n }\n\n // transfer to image tag so no canvas memory wasted on iOS\n var previewImage = createPreviewImage(\n imageData,\n imageWidth,\n imageHeight,\n orientation\n );\n\n // done\n var done = function done() {\n // calculate average image color, disabled for now\n var averageColor = root.query(\n 'GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR'\n )\n ? calculateAverageColor(data)\n : null;\n item.setMetadata('color', averageColor, true);\n\n // data has been transferred to canvas ( if was ImageBitmap )\n if ('close' in imageData) {\n imageData.close();\n }\n\n // show the overlay\n root.ref.overlayShadow.opacity = 1;\n\n // create the first image\n pushImage({ root: root, props: props, image: previewImage });\n };\n\n // apply filter\n var filter = item.getMetadata('filter');\n if (filter) {\n applyFilter(root, filter, previewImage).then(done);\n } else {\n done();\n }\n };\n\n // if we support scaling using createImageBitmap we use a worker\n if (canCreateImageBitmap(item.file)) {\n // let's scale the image in a worker\n var worker = createWorker(BitmapWorker);\n\n worker.post(\n {\n file: item.file\n },\n\n function(imageBitmap) {\n // destroy worker\n worker.terminate();\n\n // no bitmap returned, must be something wrong,\n // try the oldschool way\n if (!imageBitmap) {\n loadPreviewFallback();\n return;\n }\n\n // yay we got our bitmap, let's continue showing the preview\n previewImageLoaded(imageBitmap);\n }\n );\n } else {\n // create fallback preview\n loadPreviewFallback();\n }\n };\n\n /**\n * Write handler for when the preview image is ready to be animated\n */\n var didDrawPreview = function didDrawPreview(_ref8) {\n var root = _ref8.root;\n // get last added image\n var image = root.ref.images[root.ref.images.length - 1];\n image.translateY = 0;\n image.scaleX = 1.0;\n image.scaleY = 1.0;\n image.opacity = 1;\n };\n\n /**\n * Write handler for when the preview has been loaded\n */\n var restoreOverlay = function restoreOverlay(_ref9) {\n var root = _ref9.root;\n root.ref.overlayShadow.opacity = 1;\n root.ref.overlayError.opacity = 0;\n root.ref.overlaySuccess.opacity = 0;\n };\n\n var didThrowError = function didThrowError(_ref10) {\n var root = _ref10.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlayError.opacity = 1;\n };\n\n var didCompleteProcessing = function didCompleteProcessing(_ref11) {\n var root = _ref11.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlaySuccess.opacity = 1;\n };\n\n /**\n * Constructor\n */\n var create = function create(_ref12) {\n var root = _ref12.root;\n // image view\n root.ref.images = [];\n\n // the preview image data (we need this to filter the image)\n root.ref.imageData = null;\n\n // image bin\n root.ref.imageViewBin = [];\n\n // image overlays\n root.ref.overlayShadow = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'idle'\n })\n );\n\n root.ref.overlaySuccess = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'success'\n })\n );\n\n root.ref.overlayError = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'failure'\n })\n );\n };\n\n return _.utils.createView({\n name: 'image-preview-wrapper',\n create: create,\n styles: ['height'],\n apis: ['height'],\n destroy: function destroy(_ref13) {\n var root = _ref13.root;\n // we resize the image so memory on iOS 12 is released more quickly (it seems)\n root.ref.images.forEach(function(imageView) {\n imageView.image.width = 1;\n imageView.image.height = 1;\n });\n },\n didWriteView: function didWriteView(_ref14) {\n var root = _ref14.root;\n root.ref.images.forEach(function(imageView) {\n imageView.dirty = false;\n });\n },\n write: _.utils.createRoute(\n {\n // image preview stated\n DID_IMAGE_PREVIEW_DRAW: didDrawPreview,\n DID_IMAGE_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n DID_FINISH_CALCULATE_PREVIEWSIZE: drawPreview,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata,\n\n // file states\n DID_THROW_ITEM_LOAD_ERROR: didThrowError,\n DID_THROW_ITEM_PROCESSING_ERROR: didThrowError,\n DID_THROW_ITEM_INVALID: didThrowError,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteProcessing,\n DID_START_ITEM_PROCESSING: restoreOverlay,\n DID_REVERT_ITEM_PROCESSING: restoreOverlay\n },\n\n function(_ref15) {\n var root = _ref15.root;\n // views on death row\n var viewsToRemove = root.ref.imageViewBin.filter(function(imageView) {\n return imageView.opacity === 0;\n });\n\n // views to retain\n root.ref.imageViewBin = root.ref.imageViewBin.filter(function(\n imageView\n ) {\n return imageView.opacity > 0;\n });\n\n // remove these views\n viewsToRemove.forEach(function(imageView) {\n return removeImageView(root, imageView);\n });\n viewsToRemove.length = 0;\n }\n )\n });\n };\n\n /**\n * Image Preview Plugin\n */\n var plugin = function plugin(fpAPI) {\n var addFilter = fpAPI.addFilter,\n utils = fpAPI.utils;\n var Type = utils.Type,\n createRoute = utils.createRoute,\n isFile = utils.isFile;\n\n // imagePreviewView\n var imagePreviewView = createImageWrapperView(fpAPI);\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', function(viewAPI) {\n // get reference to created view\n var is = viewAPI.is,\n view = viewAPI.view,\n query = viewAPI.query;\n\n // only hook up to item view and only if is enabled for this cropper\n if (!is('file') || !query('GET_ALLOW_IMAGE_PREVIEW')) return;\n\n // create the image preview plugin, but only do so if the item is an image\n var didLoadItem = function didLoadItem(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var id = props.id;\n var item = query('GET_ITEM', id);\n\n // item could theoretically have been removed in the mean time\n if (!item || !isFile(item.file) || item.archived) return;\n\n // get the file object\n var file = item.file;\n\n // exit if this is not an image\n if (!isPreviewableImage(file)) return;\n\n // test if is filtered\n if (!query('GET_IMAGE_PREVIEW_FILTER_ITEM')(item)) return;\n\n // exit if image size is too high and no createImageBitmap support\n // this would simply bring the browser to its knees and that is not what we want\n var supportsCreateImageBitmap = 'createImageBitmap' in (window || {});\n var maxPreviewFileSize = query('GET_IMAGE_PREVIEW_MAX_FILE_SIZE');\n if (\n !supportsCreateImageBitmap &&\n maxPreviewFileSize &&\n file.size > maxPreviewFileSize\n )\n return;\n\n // set preview view\n root.ref.imagePreview = view.appendChildView(\n view.createChildView(imagePreviewView, { id: id })\n );\n\n // update height if is fixed\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (fixedPreviewHeight) {\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: fixedPreviewHeight\n });\n }\n\n // now ready\n var queue =\n !supportsCreateImageBitmap &&\n file.size > query('GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE');\n root.dispatch('DID_IMAGE_PREVIEW_CONTAINER_CREATE', { id: id }, queue);\n };\n\n var rescaleItem = function rescaleItem(root, props) {\n if (!root.ref.imagePreview) return;\n var id = props.id;\n\n // get item\n var item = root.query('GET_ITEM', { id: id });\n if (!item) return;\n\n // if is fixed height or panel has aspect ratio, exit here, height has already been defined\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var itemPanelAspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO');\n var fixedHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (panelAspectRatio || itemPanelAspectRatio || fixedHeight) return;\n\n // no data!\n var _root$ref = root.ref,\n imageWidth = _root$ref.imageWidth,\n imageHeight = _root$ref.imageHeight;\n if (!imageWidth || !imageHeight) return;\n\n // get height min and max\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap of orientation is incorrect\n if (orientation >= 5 && orientation <= 8) {\n var _ref2 = [imageHeight, imageWidth];\n imageWidth = _ref2[0];\n imageHeight = _ref2[1];\n }\n\n // scale up width and height when we're dealing with an SVG\n if (!isBitmap(item.file) || root.query('GET_IMAGE_PREVIEW_UPSCALE')) {\n var scalar = 2048 / imageWidth;\n imageWidth *= scalar;\n imageHeight *= scalar;\n }\n\n // image aspect ratio\n var imageAspectRatio = imageHeight / imageWidth;\n\n // we need the item to get to the crop size\n var previewAspectRatio =\n (item.getMetadata('crop') || {}).aspectRatio || imageAspectRatio;\n\n // preview height range\n var previewHeightMax = Math.max(\n minPreviewHeight,\n Math.min(imageHeight, maxPreviewHeight)\n );\n\n var itemWidth = root.rect.element.width;\n var previewHeight = Math.min(\n itemWidth * previewAspectRatio,\n previewHeightMax\n );\n\n // request update to panel height\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: previewHeight\n });\n };\n\n var didResizeView = function didResizeView(_ref3) {\n var root = _ref3.root;\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n if (action.change.key !== 'crop') return;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n var didCalculatePreviewSize = function didCalculatePreviewSize(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // remember dimensions\n root.ref.imageWidth = action.width;\n root.ref.imageHeight = action.height;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n root.ref.shouldDrawPreview = true;\n\n // as image load could take a while and fire when draw loop is resting we need to give it a kick\n root.dispatch('KICK');\n };\n\n // start writing\n view.registerWriter(\n createRoute(\n {\n DID_RESIZE_ROOT: didResizeView,\n DID_STOP_RESIZE: didResizeView,\n DID_LOAD_ITEM: didLoadItem,\n DID_IMAGE_PREVIEW_CALCULATE_SIZE: didCalculatePreviewSize,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata\n },\n\n function(_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n // no preview view attached\n if (!root.ref.imagePreview) return;\n\n // don't do anything while hidden\n if (root.rect.element.hidden) return;\n\n // resize the item panel\n if (root.ref.shouldRescale) {\n rescaleItem(root, props);\n root.ref.shouldRescale = false;\n }\n\n if (root.ref.shouldDrawPreview) {\n // queue till next frame so we're sure the height has been applied this forces the draw image call inside the wrapper view to use the correct height\n requestAnimationFrame(function() {\n // this requestAnimationFrame nesting is horrible but it fixes an issue with 100hz displays on Chrome\n // https://github.com/pqina/filepond-plugin-image-preview/issues/57\n requestAnimationFrame(function() {\n root.dispatch('DID_FINISH_CALCULATE_PREVIEWSIZE', {\n id: props.id\n });\n });\n });\n\n root.ref.shouldDrawPreview = false;\n }\n }\n )\n );\n });\n\n // expose plugin\n return {\n options: {\n // Enable or disable image preview\n allowImagePreview: [true, Type.BOOLEAN],\n\n // filters file items to determine which are shown as preview\n imagePreviewFilterItem: [\n function() {\n return true;\n },\n Type.FUNCTION\n ],\n\n // Fixed preview height\n imagePreviewHeight: [null, Type.INT],\n\n // Min image height\n imagePreviewMinHeight: [44, Type.INT],\n\n // Max image height\n imagePreviewMaxHeight: [256, Type.INT],\n\n // Max size of preview file for when createImageBitmap is not supported\n imagePreviewMaxFileSize: [null, Type.INT],\n\n // The amount of extra pixels added to the image preview to allow comfortable zooming\n imagePreviewZoomFactor: [2, Type.INT],\n\n // Should we upscale small images to fit the max bounding box of the preview area\n imagePreviewUpscale: [false, Type.BOOLEAN],\n\n // Max size of preview file that we allow to try to instant preview if createImageBitmap is not supported, else image is queued for loading\n imagePreviewMaxInstantPreviewFileSize: [1000000, Type.INT],\n\n // Style of the transparancy indicator used behind images\n imagePreviewTransparencyIndicator: [null, Type.STRING],\n\n // Enables or disables reading average image color\n imagePreviewCalculateAverageImageColor: [false, Type.BOOLEAN],\n\n // Enables or disables the previewing of markup\n imagePreviewMarkupShow: [true, Type.BOOLEAN],\n\n // Allows filtering of markup to only show certain shapes\n imagePreviewMarkupFilter: [\n function() {\n return true;\n },\n Type.FUNCTION\n ]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n }\n\n return plugin;\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CDialog',{staticClass:\"p-confirm-dialog\",attrs:{\"visible\":_vm.visible,\"modal\":true,\"header\":_vm.header,\"blockScroll\":_vm.blockScroll,\"position\":_vm.position},on:{\"click\":function($event){return _vm.closeDialog($event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('CDButton',{class:_vm.rejectClass,attrs:{\"label\":_vm.rejectLabel,\"icon\":_vm.rejectIcon,\"autofocus\":_vm.autoFocusReject},on:{\"click\":function($event){return _vm.reject()}}}),_c('CDButton',{class:_vm.acceptClass,attrs:{\"label\":_vm.acceptLabel,\"icon\":_vm.acceptIcon,\"autofocus\":_vm.autoFocusAccept},on:{\"click\":function($event){return _vm.accept()}}})]},proxy:true}])},[_c('i',{class:_vm.iconClass}),_c('span',{staticClass:\"p-confirm-dialog-message\"},[_vm._v(_vm._s(_vm.message))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.maskVisible)?_c('div',{ref:\"mask\",class:_vm.maskClass,on:{\"click\":_vm.onMaskClick}},[_c('transition',{attrs:{\"name\":\"p-dialog\"},on:{\"before-enter\":_vm.onBeforeEnter,\"enter\":_vm.onEnter,\"before-leave\":_vm.onBeforeLeave,\"leave\":_vm.onLeave,\"after-leave\":_vm.onAfterLeave,\"appear\":_vm.onAppear}},[(_vm.visible)?_c('div',_vm._g(_vm._b({ref:\"dialog\",class:_vm.dialogClass,style:(_vm.dialogStyle),attrs:{\"role\":\"dialog\",\"aria-labelledby\":_vm.ariaLabelledById,\"aria-modal\":_vm.modal}},'div',_vm.$attrs,false),_vm.listeners),[(_vm.showHeader)?_c('div',{staticClass:\"p-dialog-header\"},[_vm._t(\"header\",[(_vm.header)?_c('span',{staticClass:\"p-dialog-title\",attrs:{\"id\":_vm.ariaLabelledById}},[_vm._v(_vm._s(_vm.header))]):_vm._e()]),_c('div',{staticClass:\"p-dialog-header-icons\"},[(_vm.maximizable)?_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-dialog-header-icon p-dialog-header-maximize p-link\",attrs:{\"type\":\"button\",\"tabindex\":\"-1\"},on:{\"click\":_vm.maximize}},[_c('span',{class:_vm.maximizeIconClass})]):_vm._e(),(_vm.closable)?_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-dialog-header-icon p-dialog-header-close p-link\",attrs:{\"aria-label\":_vm.ariaCloseLabel,\"type\":\"button\"},on:{\"click\":_vm.close}},[_c('span',{staticClass:\"p-dialog-header-close-icon pi pi-times\"})]):_vm._e()])],2):_vm._e(),_c('div',{staticClass:\"p-dialog-content\",style:(_vm.contentStyle)},[_vm._t(\"default\")],2),(_vm.footer || _vm.$slots.footer)?_c('div',{staticClass:\"p-dialog-footer\"},[_vm._t(\"footer\",[_vm._v(_vm._s(_vm.footer))])],2):_vm._e()]):_vm._e()])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n {{header}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dialog.vue?vue&type=template&id=23a3a968&\"\nimport script from \"./Dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./Dialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dialog.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n \n \n {{message}}\n \n \n \n \n \n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConfirmDialog.vue?vue&type=template&id=0f2fc7ed&\"\nimport script from \"./ConfirmDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./ConfirmDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.containerClass,attrs:{\"aria-haspopup\":\"listbox\",\"aria-owns\":_vm.listId,\"aria-expanded\":_vm.overlayVisible}},[(!_vm.multiple)?_c('input',_vm._g(_vm._b({ref:\"input\",class:_vm.inputClass,attrs:{\"type\":\"text\",\"autoComplete\":\"off\",\"role\":\"searchbox\",\"aria-autocomplete\":\"list\",\"aria-controls\":_vm.listId,\"aria-labelledby\":_vm.ariaLabelledBy},domProps:{\"value\":_vm.inputValue}},'input',_vm.$attrs,false),_vm.listeners)):_vm._e(),(_vm.multiple)?_c('ul',{ref:\"multiContainer\",class:_vm.multiContainerClass,on:{\"click\":_vm.onMultiContainerClick}},[_vm._l((_vm.value),function(item,i){return _c('li',{key:i,staticClass:\"p-autocomplete-token\"},[_c('span',{staticClass:\"p-autocomplete-token-label\"},[_vm._v(_vm._s(_vm.getItemContent(item)))]),_c('span',{staticClass:\"p-autocomplete-token-icon pi pi-times-circle\",on:{\"click\":function($event){return _vm.removeItem($event, i)}}})])}),_c('li',{staticClass:\"p-autocomplete-input-token\"},[_c('input',_vm._g(_vm._b({ref:\"input\",attrs:{\"type\":\"text\",\"autoComplete\":\"off\",\"role\":\"searchbox\",\"aria-autocomplete\":\"list\",\"aria-controls\":_vm.listId,\"aria-labelledby\":_vm.ariaLabelledBy}},'input',_vm.$attrs,false),_vm.listeners))])],2):_vm._e(),(_vm.searching)?_c('i',{staticClass:\"p-autocomplete-loader pi pi-spinner pi-spin\"}):_vm._e(),(_vm.dropdown)?_c('Button',{ref:\"dropdownButton\",staticClass:\"p-autocomplete-dropdown\",attrs:{\"type\":\"button\",\"icon\":\"pi pi-chevron-down\",\"disabled\":_vm.$attrs.disabled},on:{\"click\":_vm.onDropdownClick}}):_vm._e(),_c('transition',{attrs:{\"name\":\"p-connected-overlay\"},on:{\"enter\":_vm.onOverlayEnter,\"leave\":_vm.onOverlayLeave}},[(_vm.overlayVisible)?_c('div',{ref:\"overlay\",staticClass:\"p-autocomplete-panel p-component\",style:({'max-height': _vm.scrollHeight})},[_c('ul',{staticClass:\"p-autocomplete-items\",attrs:{\"id\":_vm.listId,\"role\":\"listbox\"}},_vm._l((_vm.suggestions),function(item,i){return _c('li',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:i,staticClass:\"p-autocomplete-item\",attrs:{\"role\":\"option\"},on:{\"click\":function($event){return _vm.selectItem($event, item)}}},[_vm._t(\"item\",[_vm._v(\" \"+_vm._s(_vm.getItemContent(item))+\" \")],{\"item\":item,\"index\":i})],2)}),0)]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n {{getItemContent(item)}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{getItemContent(item)}}\n \n \n \n \n \n \n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AutoComplete.vue?vue&type=template&id=9fe08754&\"\nimport script from \"./AutoComplete.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoComplete.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoComplete.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * FilePondPluginFileValidateSize 2.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self), (global.FilePondPluginFileValidateSize = factory()));\n})(this, function() {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n replaceInString = utils.replaceInString,\n toNaturalFileSize = utils.toNaturalFileSize;\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function(file, _ref2) {\n var query = _ref2.query;\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return true;\n }\n\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n return false;\n }\n\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n return false;\n }\n\n return true;\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function(file, _ref3) {\n var query = _ref3.query;\n return new Promise(function(resolve, reject) {\n // if not allowed, all fine, exit\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return resolve(file);\n }\n\n // check if file should be filtered\n var fileFilter = query('GET_FILE_VALIDATE_SIZE_FILTER');\n if (fileFilter && !fileFilter(file)) {\n return resolve(file);\n }\n\n // reject or resolve based on file size\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n\n // reject or resolve based on file size\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n reject({\n status: {\n main: query('GET_LABEL_MIN_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MIN_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMin,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n\n // returns the current option value\n var totalSizeMax = query('GET_MAX_TOTAL_FILE_SIZE');\n if (totalSizeMax !== null) {\n // get the current total file size\n var currentTotalSize = query('GET_ACTIVE_ITEMS').reduce(function(total, item) {\n return total + item.fileSize;\n }, 0);\n\n // get the size of the new file\n if (currentTotalSize > totalSizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_TOTAL_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n totalSizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n }\n\n // file is fine, let's pass it back\n resolve(file);\n });\n });\n\n return {\n options: {\n // Enable or disable file type validation\n allowFileSizeValidation: [true, Type.BOOLEAN],\n\n // Max individual file size in bytes\n maxFileSize: [null, Type.INT],\n\n // Min individual file size in bytes\n minFileSize: [null, Type.INT],\n\n // Max total file size in bytes\n maxTotalFileSize: [null, Type.INT],\n\n // Filter the files that need to be validated for size\n fileValidateSizeFilter: [null, Type.FUNCTION],\n\n // error labels\n labelMinFileSizeExceeded: ['File is too small', Type.STRING],\n labelMinFileSize: ['Minimum file size is {filesize}', Type.STRING],\n\n labelMaxFileSizeExceeded: ['File is too large', Type.STRING],\n labelMaxFileSize: ['Maximum file size is {filesize}', Type.STRING],\n\n labelMaxTotalFileSizeExceeded: ['Maximum total size exceeded', Type.STRING],\n labelMaxTotalFileSize: ['Maximum total file size is {filesize}', Type.STRING],\n },\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n }\n\n return plugin;\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Page',{attrs:{\"background\":\"var(--brand-primary)\"}},[_c('ValuationStepper',{attrs:{\"steps\":_vm.steps,\"stepKeys\":_vm.stepKeys},on:{\"stepSubmitted\":_vm.stepSubmitted}},[_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('AddressDetails',{attrs:{\"tempValuationId\":_vm.tempValuationId},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler,\"resumed\":_vm.resumedHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('AssessmentDetails',{attrs:{\"tempValuationId\":_vm.tempValuationId},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('PropertyClassification',{attrs:{\"tempValuationId\":_vm.tempValuationId},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('ContactDetails',{attrs:{\"tempValuationId\":_vm.tempValuationId},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('PropertyDetails',{attrs:{\"tempValuationId\":_vm.tempValuationId,\"propertyType\":_vm.propertyType,\"propertyClassification\":_vm.propertyClassification},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('PhotosAndDocuments',{attrs:{\"tempValuationId\":_vm.tempValuationId},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])}),_c('ValuationStep',{scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('Payment',{attrs:{\"tempValuationId\":_vm.tempValuationId,\"propertyClassification\":_vm.propertyClassification,\"purpose\":_vm.purpose},on:{\"validationHandler\":scope.validationHandler,\"submissionHandler\":scope.submissionHandler}})]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"main-stepper-body\"},[_c('ol',{staticClass:\"stepper-header\"},_vm._l((_vm.steps),function(step,idx){return _c('li',{key:step,staticClass:\"stepper-header__item\",class:{ 'stepper-header__completed': idx < _vm.currentStep }},[_c('span',{staticClass:\"stepper-header__number\"},[_vm._v(_vm._s(idx + 1))]),_c('h3',{staticClass:\"stepper-header__title\"},[_vm._v(_vm._s(step))])])}),0),_c('div',{staticClass:\"stepper-steps\",style:(_vm.getStepsHeight)},[_vm._t(\"default\")],2),_c('div',{staticClass:\"stepper-actions\"},[_c('button',{staticClass:\"stepper-actions__button\",on:{\"click\":_vm.previous}},[_vm._v(\"Previous\")]),_c('button',{staticClass:\"stepper-actions__button\",on:{\"click\":_vm.next}},[_vm._v(\"Next\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator'\r\nimport type ValuationStep from '@/components/Controls/Valuation/ValuationStep.vue'\r\n\r\n// eslint-disable-next-line\r\nexport type StepResult = { stepName: string; data: any; response: any }\r\n\r\n@Component\r\nexport default class ValuationStepper extends Vue {\r\n @Prop({ required: true })\r\n steps!: string[]\r\n\r\n @Prop({ required: true })\r\n stepKeys!: string[]\r\n\r\n @Prop({ required: false, default: 0 })\r\n activeStep!: number\r\n\r\n currentStep = 0\r\n stepsHeight = 0\r\n stepsHeightDuration = 0\r\n ro: ResizeObserver | null = null\r\n roElement: Element | null = null\r\n\r\n @Watch('activeStep')\r\n setCurrentStep () {\r\n if (this.isValidIndex(this.activeStep)) this.currentStep = this.activeStep\r\n }\r\n\r\n @Watch('currentStep')\r\n showCurrentStep (newStep: number, oldStep: number) {\r\n this.unsubResize()\r\n const transition = newStep > oldStep ? 'right' : 'left'\r\n this.stepComponentAtIndex(oldStep).hide(transition)\r\n const comp = this.stepComponentAtIndex(newStep)\r\n comp.show(transition)\r\n this.setStepsHeight(comp.$el, true)\r\n this.subResize(comp.$el)\r\n }\r\n\r\n setStepsHeight (el: Element, transition = false) {\r\n Vue.nextTick(() => {\r\n this.stepsHeight = el.clientHeight\r\n this.stepsHeightDuration = transition ? 0.6 : 0\r\n })\r\n }\r\n\r\n subResize (el: Element) {\r\n this.roElement = el\r\n this.ro = new ResizeObserver(() => this.setStepsHeight(el, true))\r\n this.ro.observe(this.roElement)\r\n }\r\n\r\n unsubResize () {\r\n if (this.ro && this.roElement) this.ro.unobserve(this.roElement)\r\n }\r\n\r\n mounted () {\r\n const comp = this.stepComponentAtIndex(this.currentStep)\r\n comp.show('none')\r\n this.setStepsHeight(comp.$el, false)\r\n this.subResize(comp.$el)\r\n }\r\n\r\n beforeDestroy () {\r\n this.unsubResize()\r\n }\r\n\r\n stepComponentAtIndex (index: number) {\r\n return this.$children[index] as InstanceType\r\n }\r\n\r\n previous () {\r\n const newStep = this.currentStep - 1\r\n if (!this.isValidIndex(newStep)) return\r\n this.currentStep = newStep\r\n }\r\n\r\n async next () {\r\n // TODO blockUI + spinner\r\n const success = await this.processCurrentStep()\r\n // TODO unblockUI\r\n if (!success) return\r\n\r\n const newStep = this.currentStep + 1\r\n if (!this.isValidIndex(newStep)) return\r\n this.currentStep = newStep\r\n }\r\n\r\n async processCurrentStep () {\r\n const comp = this.stepComponentAtIndex(this.currentStep)\r\n const validationResult = await comp.validate()\r\n const submissionResult = await comp.submit()\r\n if (\r\n (validationResult && !validationResult.isValid) ||\r\n !submissionResult.success) {\r\n return false\r\n }\r\n const stepName = this.stepKeys[this.currentStep]\r\n this.$emit('stepSubmitted', { stepName, ...submissionResult })\r\n return true\r\n }\r\n\r\n isValidIndex (index: number) {\r\n return index >= 0 && index < this.steps.length\r\n }\r\n\r\n get getStepsHeight () {\r\n return {\r\n '--steps-height': this.stepsHeight,\r\n '--steps-height-duration': this.stepsHeightDuration\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStepper.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStepper.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ValuationStepper.vue?vue&type=template&id=f538fab4&scoped=true&\"\nimport script from \"./ValuationStepper.vue?vue&type=script&lang=ts&\"\nexport * from \"./ValuationStepper.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ValuationStepper.vue?vue&type=style&index=0&id=f538fab4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f538fab4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":_vm.transition === 'none' ? '' : _vm.transition}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],staticClass:\"stepper-step\"},[_vm._t(\"default\",null,{\"validationHandler\":_vm.validationHandler,\"submissionHandler\":_vm.submissionHandler})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator'\r\n\r\ntype Transition = 'right' | 'left' | 'none'\r\ntype AnyFunction = (...args: any[]) => any\r\n\r\n@Component\r\nexport default class ValuationStep extends Vue {\r\n active = false\r\n transition: Transition = 'right'\r\n stepValidationHandler: AnyFunction = () => null\r\n stepSubmissionHandler: AnyFunction = () => null\r\n\r\n show (transition: Transition) {\r\n this.transition = transition\r\n this.active = true\r\n }\r\n\r\n hide (transition: Transition) {\r\n this.transition = transition\r\n this.active = false\r\n }\r\n\r\n submit () {\r\n return this.stepSubmissionHandler()\r\n }\r\n\r\n validate () {\r\n return this.stepValidationHandler()\r\n }\r\n\r\n validationHandler (handler: AnyFunction) {\r\n this.stepValidationHandler = handler\r\n }\r\n\r\n submissionHandler (handler: AnyFunction) {\r\n this.stepSubmissionHandler = handler\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStep.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStep.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ValuationStep.vue?vue&type=template&id=a45285fa&scoped=true&\"\nimport script from \"./ValuationStep.vue?vue&type=script&lang=ts&\"\nexport * from \"./ValuationStep.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ValuationStep.vue?vue&type=style&index=0&id=a45285fa&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a45285fa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:\"observer\"},[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 1: Property Address\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please enter the address of the property you want us to look at \"),_c('br'),_c('b',[_vm._v(\"Can't find your address? Please enter it manually and click \\\"Next\\\".\")])])]),_c('form',{staticClass:\"step-field-form\"},[_c('ValidationProvider',{attrs:{\"name\":\"Property Address\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('AutoComplete',{attrs:{\"fieldId\":\"propertyAddress\",\"fieldKey\":\"Description\",\"placeholder\":\"Enter property address\",\"label\":\"Property Address\",\"error\":errors[0],\"suggestions\":_vm.suggestions,\"complete\":_vm.searchAddresses,\"itemSelect\":_vm.resolveAddress},scopedSlots:_vm._u([{key:\"item\",fn:function(slotProps){return [_c('span',{class:slotProps.titleClass},[_vm._v(_vm._s(slotProps.item.StructuredFormatting.MainText))]),_c('span',{class:slotProps.descriptionClass},[_vm._v(_vm._s(slotProps.item.StructuredFormatting.SecondaryText))])]}}],null,true),model:{value:(_vm.propertyAddress),callback:function ($$v) {_vm.propertyAddress=$$v},expression:\"propertyAddress\"}})]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"primevue-field\"},[_c('label',{attrs:{\"for\":_vm.fieldId}},[_vm._v(_vm._s(_vm.label))]),_c('PrimeVueAutoComplete',{staticClass:\"p-inputtext-lg\",class:{ 'p-invalid': _vm.error },attrs:{\"id\":_vm.fieldId,\"placeholder\":_vm.placeholder,\"ariaLabelledBy\":_vm.fieldId,\"value\":_vm.value,\"field\":_vm.fieldKey,\"minLength\":5,\"delay\":1000,\"suggestions\":_vm.suggestions},on:{\"input\":_vm.onInput,\"item-select\":_vm.itemSelect,\"complete\":_vm.complete},scopedSlots:_vm._u([{key:\"item\",fn:function(slotProps){return [_vm._t(\"item\",null,{\"item\":slotProps.item,\"titleClass\":\"autocomplete-result__title\",\"descriptionClass\":\"autocomplete-result__description\"})]}}],null,true)}),_c('small',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\",attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport PrimeVueAutoComplete from 'primevue/autocomplete'\r\n\r\n@Component({\r\n components: {\r\n PrimeVueAutoComplete\r\n }\r\n})\r\nexport default class AutoComplete extends Vue {\r\n @Prop({ required: true })\r\n public value!: string\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: true })\r\n public fieldKey!: string\r\n\r\n @Prop({ required: true })\r\n public placeholder!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false })\r\n public error: string | undefined\r\n\r\n @Prop({ required: true })\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public suggestions!: any[]\r\n\r\n @Prop({ required: true })\r\n public complete!: () => void\r\n\r\n @Prop({ required: false })\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public itemSelect!: (event: any) => void\r\n\r\n onInput (newVal: string) {\r\n this.$emit('input', newVal)\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AutoComplete.vue?vue&type=template&id=1cd02702&scoped=true&\"\nimport script from \"./AutoComplete.vue?vue&type=script&lang=ts&\"\nexport * from \"./AutoComplete.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AutoComplete.vue?vue&type=style&index=0&id=1cd02702&scoped=true&lang=css&\"\nimport style1 from \"./AutoComplete.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cd02702\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Ref, Prop, Watch } from 'vue-property-decorator'\r\nimport Utils from 'truemarket-modules/src/Utils'\r\nimport { AddressModel } from 'truemarket-modules/src/models/api'\r\nimport { AutocompleteResultModel } from 'truemarket-modules/src/models/api/google/AutocompleteResultModel'\r\nimport { Services } from 'truemarket-modules/src/services'\r\nimport AutoComplete from '@/components/Controls/AutoComplete.vue'\r\n\r\n@Component({\r\n components: {\r\n ValidationProvider,\r\n ValidationObserver,\r\n AutoComplete\r\n }\r\n})\r\nexport default class AddressDetails extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n mounted () {\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) {\r\n this.$emit('resumed', tempValId)\r\n this.loadData(tempValId)\r\n }\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'AddressDetails' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.addressModel.UnitNumber = response.Data.Address.UnitNumber\r\n this.addressModel.StreetNumber = response.Data.Address.StreetNumber\r\n this.addressModel.StreetName = response.Data.Address.StreetName\r\n this.addressModel.Suburb = response.Data.Address.Suburb\r\n this.addressModel.State = response.Data.Address.State\r\n this.addressModel.Postcode = response.Data.Address.Postcode\r\n\r\n const formattedAddress = this.buildFormattedAddress()\r\n this.addressModel.FormattedAddress = formattedAddress\r\n this.propertyAddress = formattedAddress\r\n })\r\n }\r\n\r\n validate () {\r\n return this.form.validateWithInfo()\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n if (this.addressModel.FormattedAddress === '') this.addressModel.StreetName = this.propertyAddress\r\n\r\n const data = {\r\n Address: this.addressModel\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'AddressDetails',\r\n Data: JSON.stringify(data)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n addressModel: AddressModel = {\r\n UnitNumber: '',\r\n StreetNumber: '',\r\n StreetName: '',\r\n Suburb: '',\r\n State: '',\r\n Postcode: '',\r\n FormattedAddress: '',\r\n FormattedAddressLines: []\r\n }\r\n\r\n propertyAddress = ''\r\n tempQuery = ''\r\n gmapsSession = Utils.GetGuid()\r\n suggestions: AutocompleteResultModel[] = []\r\n\r\n @Watch('propertyAddress')\r\n clearAddress () {\r\n this.addressModel.UnitNumber = ''\r\n this.addressModel.StreetNumber = ''\r\n this.addressModel.StreetName = ''\r\n this.addressModel.Suburb = ''\r\n this.addressModel.State = ''\r\n this.addressModel.Postcode = ''\r\n this.addressModel.FormattedAddress = ''\r\n this.addressModel.FormattedAddressLines = []\r\n }\r\n\r\n searchAddresses () {\r\n this.tempQuery = this.propertyAddress\r\n\r\n Services.API.Google.AddressAutocomplete(\r\n this.propertyAddress, 'country:au', this.gmapsSession\r\n ).then((ac) => {\r\n this.suggestions = ac.Predictions\r\n })\r\n }\r\n\r\n // eslint-disable-next-line\r\n resolveAddress (event: any) {\r\n this.propertyAddress = this.tempQuery\r\n\r\n Services.API.Google.GetPlaceDetails(event.value.PlaceId, this.gmapsSession).then((res) => {\r\n const place = res.Result\r\n\r\n this.addressModel.UnitNumber = place.AddressComponents.find((ac) => ac.Types.includes('subpremise'))?.LongName ?? ''\r\n this.addressModel.StreetNumber = place.AddressComponents.find((ac) => ac.Types.includes('street_number'))?.LongName ?? ''\r\n this.addressModel.StreetName = place.AddressComponents.find((ac) => ac.Types.includes('route'))?.LongName ?? ''\r\n this.addressModel.Suburb = place.AddressComponents.find((ac) => ac.Types.includes('locality'))?.LongName ?? ''\r\n this.addressModel.State = place.AddressComponents.find((ac) => ac.Types.includes('administrative_area_level_1'))?.LongName ?? ''\r\n this.addressModel.Postcode = place.AddressComponents.find((ac) => ac.Types.includes('postal_code'))?.LongName ?? ''\r\n\r\n const formattedAddress = this.buildFormattedAddress()\r\n this.addressModel.FormattedAddress = formattedAddress\r\n this.propertyAddress = formattedAddress\r\n })\r\n }\r\n\r\n buildFormattedAddress () {\r\n const formattedComponents = []\r\n\r\n if (this.addressModel.UnitNumber) {\r\n formattedComponents.push(this.addressModel.UnitNumber + '/' + this.addressModel.StreetNumber)\r\n } else if (this.addressModel.StreetNumber) {\r\n formattedComponents.push(this.addressModel.StreetNumber)\r\n }\r\n\r\n if (this.addressModel.StreetName) formattedComponents.push(this.addressModel.StreetName)\r\n if (this.addressModel.Suburb) formattedComponents.push(this.addressModel.Suburb)\r\n if (this.addressModel.Postcode) formattedComponents.push(this.addressModel.Postcode)\r\n\r\n return formattedComponents.join(' ')\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddressDetails.vue?vue&type=template&id=68dd00b7&scoped=true&\"\nimport script from \"./AddressDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddressDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AddressDetails.vue?vue&type=style&index=0&id=68dd00b7&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68dd00b7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:\"observer\"},[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 2: Assessment Details\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please confirm the purpose and date of the e-valuation to ensure the assessment meets your requirements \")])]),_c('form',{staticClass:\"step-field-form\"},[_c('ValidationProvider',{attrs:{\"name\":\"Purpose\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('Dropdown',{attrs:{\"fieldId\":\"assessmentPurpose\",\"error\":errors[0],\"options\":_vm.purposes,\"placeholder\":\"Select purpose\",\"label\":\"Purpose\"},model:{value:(_vm.purpose),callback:function ($$v) {_vm.purpose=$$v},expression:\"purpose\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Assessment Date\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('Calendar',{attrs:{\"fieldId\":\"assessmentDate\",\"error\":errors[0],\"placeholder\":\"Select date\",\"label\":\"Assessment Date\"},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}})]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Ref, Prop } from 'vue-property-decorator'\r\nimport Dropdown, { DropdownOption } from '@/components/Controls/Dropdown.vue'\r\nimport Calendar from '@/components/Controls/Calendar.vue'\r\nimport { Services } from 'truemarket-modules/src/services'\r\nimport EnumValueType from 'truemarket-modules/src/models/api/enumerations/EnumValueType'\r\n\r\n@Component({\r\n components: {\r\n ValidationProvider,\r\n ValidationObserver,\r\n Dropdown,\r\n Calendar\r\n }\r\n})\r\nexport default class AssessmentDetails extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n mounted () {\r\n Services.API.Enumerations.GetEnumValuesForType(EnumValueType.ValuationPurpose).then((vals) => {\r\n this.purposes = vals.filter((f) => { return f.Value !== 'GeneralInformation' })\r\n .map((v) => ({ label: v.Label, value: v.ValueId }))\r\n })\r\n\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'AssessmentDetails' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.purpose = response.Data.Purpose\r\n if (response.Data.RetrospectiveDate) {\r\n this.date = new Date(response.Data.RetrospectiveDate)\r\n }\r\n })\r\n }\r\n\r\n validate () {\r\n return this.form.validateWithInfo()\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n const data = {\r\n Purpose: this.purpose ?? '',\r\n RetrospectiveDate: this.date?.toISOString() ?? ''\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'AssessmentDetails',\r\n Data: JSON.stringify(data)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n date: Date | null = null\r\n purpose: string | null = null\r\n purposes: DropdownOption[] = []\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssessmentDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssessmentDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AssessmentDetails.vue?vue&type=template&id=7196bb11&scoped=true&\"\nimport script from \"./AssessmentDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./AssessmentDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AssessmentDetails.vue?vue&type=style&index=0&id=7196bb11&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7196bb11\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:\"observer\"},[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 3: Property Classification\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please enter your property type and classification below \")])]),_c('form',{staticClass:\"step-field-form\"},[_c('ValidationProvider',{attrs:{\"name\":\"Property Type\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('Dropdown',{attrs:{\"fieldId\":\"propertyType\",\"error\":errors[0],\"options\":_vm.propertyTypes,\"placeholder\":\"Select type\",\"label\":\"Property Type\"},model:{value:(_vm.propertyType),callback:function ($$v) {_vm.propertyType=$$v},expression:\"propertyType\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Property Classification\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('Dropdown',{attrs:{\"fieldId\":\"propertyClassification\",\"error\":errors[0],\"options\":_vm.propertyClassifications,\"placeholder\":\"Select classification\",\"label\":\"Property Classification\"},model:{value:(_vm.propertyClassification),callback:function ($$v) {_vm.propertyClassification=$$v},expression:\"propertyClassification\"}})]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Ref, Watch, Prop } from 'vue-property-decorator'\r\nimport Dropdown, { DropdownOption } from '@/components/Controls/Dropdown.vue'\r\nimport { Services } from 'truemarket-modules/src/services'\r\nimport EnumValueType from 'truemarket-modules/src/models/api/enumerations/EnumValueType'\r\n\r\n@Component({\r\n components: {\r\n ValidationProvider,\r\n ValidationObserver,\r\n Dropdown\r\n }\r\n})\r\nexport default class PropertyClassification extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n mounted () {\r\n Services.API.Enumerations.GetEnumValuesForType(EnumValueType.PropertyType).then((vals) => {\r\n this.propertyTypes = vals.map((v) => ({ label: v.Label, value: v.ValueId }))\r\n })\r\n\r\n Services.API.Enumerations.GetEnumValuesForType(EnumValueType.PropertySubType).then((vals) => {\r\n this.allPropertyClassifications = vals.map((v) => ({ label: v.Label, value: v.ValueId, typeId: v.ParentId }))\r\n })\r\n\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'PropertyClassification' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.propertyType = response.Data.PropertyType\r\n\r\n return response\r\n }).then((response: any) => {\r\n if (!response) return\r\n\r\n this.propertyClassification = response.Data.PropertyClassification\r\n })\r\n }\r\n\r\n validate () {\r\n return this.form.validateWithInfo()\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n const data = {\r\n PropertyType: this.propertyType,\r\n PropertyClassification: this.propertyClassification\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'PropertyClassification',\r\n Data: JSON.stringify(data)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n propertyType = ''\r\n propertyTypes: DropdownOption[] = []\r\n propertyClassification = ''\r\n allPropertyClassifications: DropdownOption[] = []\r\n\r\n get propertyClassifications (): DropdownOption[] {\r\n return this.allPropertyClassifications.filter((v) => v.typeId === this.propertyType)\r\n }\r\n\r\n @Watch('propertyType')\r\n typeOnChange () {\r\n this.propertyClassification = ''\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyClassification.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyClassification.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyClassification.vue?vue&type=template&id=754d0662&scoped=true&\"\nimport script from \"./PropertyClassification.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyClassification.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PropertyClassification.vue?vue&type=style&index=0&id=754d0662&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"754d0662\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:\"observer\"},[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 4: Your Details\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please enter your contact details for report delivery and to ask any follow-up questions if required \")])]),_c('form',{staticClass:\"step-field-form\"},[_c('ValidationProvider',{attrs:{\"name\":\"First Name\",\"rules\":\"required|alpha_spaces\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"contactFirstName\",\"error\":errors[0],\"placeholder\":\"Your first name\",\"label\":\"First Name\"},model:{value:(_vm.firstName),callback:function ($$v) {_vm.firstName=$$v},expression:\"firstName\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Last Name\",\"rules\":\"required|alpha_spaces\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"contactLastName\",\"error\":errors[0],\"placeholder\":\"Your last name\",\"label\":\"Last Name\"},model:{value:(_vm.lastName),callback:function ($$v) {_vm.lastName=$$v},expression:\"lastName\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Email\",\"rules\":\"required|email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"contactEmail\",\"error\":errors[0],\"placeholder\":\"Your email address\",\"label\":\"Email\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Phone\",\"rules\":\"required|numeric\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"contactPhone\",\"error\":errors[0],\"placeholder\":\"Your phone number\",\"label\":\"Phone\"},model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Business Name (optional)\",\"rules\":\"alpha_spaces\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"contactBusinessName\",\"error\":errors[0],\"placeholder\":\"Your business name\",\"label\":\"Business Name (optional)\"},model:{value:(_vm.businessName),callback:function ($$v) {_vm.businessName=$$v},expression:\"businessName\"}})]}}])}),_c('ValidationProvider',{attrs:{\"name\":\"Representative\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('Dropdown',{attrs:{\"fieldId\":\"representativeRepType\",\"error\":errors[0],\"options\":_vm.repTypes,\"placeholder\":\"Select type\",\"label\":\"Representative\"},model:{value:(_vm.repType),callback:function ($$v) {_vm.repType=$$v},expression:\"repType\"}})]}}])}),(_vm.repDetailsRequired)?[_c('ValidationProvider',{attrs:{\"name\":\"Representative Name\",\"rules\":\"required|alpha_spaces\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"representativeRepFullName\",\"error\":errors[0],\"placeholder\":\"Representative full name\",\"label\":\"Representative Name\"},model:{value:(_vm.repFullName),callback:function ($$v) {_vm.repFullName=$$v},expression:\"repFullName\"}})]}}],null,false,1029170608)}),_c('ValidationProvider',{attrs:{\"name\":\"Representative Email\",\"rules\":\"required|email\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"representativeRepEmail\",\"error\":errors[0],\"placeholder\":\"Representative email address\",\"label\":\"Representative Email\"},model:{value:(_vm.repEmail),callback:function ($$v) {_vm.repEmail=$$v},expression:\"repEmail\"}})]}}],null,false,274618453)}),_c('ValidationProvider',{attrs:{\"name\":\"Representative Phone\",\"rules\":\"required|numeric\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"representativeRepPhone\",\"error\":errors[0],\"placeholder\":\"Representative phone number\",\"label\":\"Representative Phone\"},model:{value:(_vm.repPhone),callback:function ($$v) {_vm.repPhone=$$v},expression:\"repPhone\"}})]}}],null,false,3435590560)}),_c('ValidationProvider',{attrs:{\"name\":\"Representative Business Name\",\"rules\":\"required|alpha_spaces\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"representativeRepBusinessName\",\"error\":errors[0],\"placeholder\":\"Representative business name\",\"label\":\"Representative Business Name\"},model:{value:(_vm.repBusinessName),callback:function ($$v) {_vm.repBusinessName=$$v},expression:\"repBusinessName\"}})]}}],null,false,2435323267)})]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Ref, Prop } from 'vue-property-decorator'\r\nimport InputText from '@/components/Controls/InputText.vue'\r\nimport Dropdown from '@/components/Controls/Dropdown.vue'\r\nimport { Services } from 'truemarket-modules/src/services'\r\n\r\n@Component({\r\n components: {\r\n ValidationProvider,\r\n ValidationObserver,\r\n InputText,\r\n Dropdown\r\n }\r\n})\r\nexport default class ContactDetails extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n mounted () {\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'ContactDetails' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.firstName = response.Data.FirstName\r\n this.lastName = response.Data.LastName\r\n this.email = response.Data.Email\r\n this.phone = response.Data.Phone\r\n this.businessName = response.Data.BusinessName\r\n this.repFullName = response.Data.RepName\r\n this.repEmail = response.Data.RepEmail\r\n this.repPhone = response.Data.RepPhone\r\n this.repBusinessName = response.Data.RepBusinessName\r\n this.repType = response.Data.RepType\r\n })\r\n }\r\n\r\n validate () {\r\n return this.form.validateWithInfo()\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n const data = {\r\n FirstName: this.firstName,\r\n LastName: this.lastName,\r\n Email: this.email,\r\n Phone: this.phone,\r\n BusinessName: this.businessName,\r\n RepName: this.repFullName,\r\n RepEmail: this.repEmail,\r\n RepPhone: this.repPhone,\r\n RepBusinessName: this.repBusinessName,\r\n RepType: this.repType\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'ContactDetails',\r\n Data: JSON.stringify(data)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n get repDetailsRequired () {\r\n return this.repTypes.filter((v) => v.requireDetails)\r\n .map(v => v.value)\r\n .includes(this.repType)\r\n }\r\n\r\n repTypes = [\r\n { label: 'Accountant', value: 'Accountant', requireDetails: true },\r\n { label: 'Lawyer', value: 'Lawyer', requireDetails: true },\r\n { label: 'None', value: 'None' }\r\n ]\r\n\r\n firstName = ''\r\n lastName = ''\r\n email = ''\r\n phone = ''\r\n businessName = ''\r\n\r\n repType = ''\r\n repFullName = ''\r\n repEmail = ''\r\n repPhone = ''\r\n repBusinessName = ''\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactDetails.vue?vue&type=template&id=8e002db4&scoped=true&\"\nimport script from \"./ContactDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactDetails.vue?vue&type=style&index=0&id=8e002db4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8e002db4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_c('ValidationObserver',{ref:\"observer\"},[_c('keep-alive',[_c(_vm.componentToLoad,{ref:\"currentForm\",tag:\"component\",on:{\"hook:mounted\":_vm.componentMounted}})],1)],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 5: Property Details\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please review the details you have given us and make sure all is correct. \")])])}]\n\nexport { render, staticRenderFns }","type ComponentLookup = {\r\n [key: string]: {\r\n [key: string]: string;\r\n };\r\n};\r\n\r\nexport const componentsLookupTable: ComponentLookup = {\r\n 'd9731c32-c12c-4a9f-b73e-0bb1b6868531': {\r\n '0d935727-112b-4c3b-942b-ae0e95264126': 'CommercialFreestandingMedicalProperty',\r\n '899806dd-5680-435e-beb8-f90c7503635f': 'CommercialFreestandingOfficeProperty',\r\n '207e0dba-cd9a-4a42-90e5-9047cbe8a159': 'CommercialMultitenantMedicalPremises',\r\n 'dab82a5f-6aac-4a11-8cc1-d95b0eaaf66e': 'CommercialMultitenantOfficePremises',\r\n '4d03c4ae-a819-438e-8132-5c40963c2641': 'CommercialStrataMedicalSuite',\r\n '9c74e801-1cee-4608-8f1d-6ac37d414492': 'CommercialStrataOfficeSuite',\r\n 'bb018b64-c391-46d3-8cb4-f7714320047f': 'CommercialBoardingHouseMultiTenant',\r\n 'a50f9b11-5b5b-4af6-b145-1d54b373ba36': 'CommercialOtherUniqueSingleTenant',\r\n 'bed7b049-a283-40ff-836d-96aaa70e305d': 'CommercialMixedUseMultiTenant',\r\n '1276aab3-6066-4117-8e27-2a8b0afce222': 'CommercialChildcareCentreSingleTenant',\r\n '1c666298-f2d6-4f19-8b38-a47fc3987212': 'CommonVacantLand'\r\n },\r\n '2f478d9a-2ec7-4cd1-a9f3-22ee57d6e7e9': {\r\n '7a518e19-e8db-4e19-98c6-e48ed5fdb1bb': 'IndustrialFactory',\r\n 'ba5a3627-afb8-48eb-9945-52c720e74e70': 'IndustrialMultiTenantIndustrialProperty',\r\n 'b5a1fde3-7b21-4f04-9400-c0b0d314a0e6': 'IndustrialServiceIndustryLightIndustrial',\r\n 'c01b0c60-19aa-4373-b84f-a11cb99f9676': 'CommonVacantLand',\r\n '3db668a1-fa6a-49ca-b0af-24b5aec68ca7': 'IndustrialWarehouse',\r\n '719f0126-44ec-4e76-af93-fa66820ed019': 'IndustrialStrataIndustrialUnit',\r\n '53709186-7310-471f-a98d-df1351f2d577': 'IndustrialOtherUniqueSingleTenant'\r\n },\r\n '82957b62-379e-468e-8f60-adcf33cf8f2e': {\r\n '3964dc78-5a6f-4395-aa83-3548351db5ba': 'ResidentialApartment',\r\n '9f2f8397-261d-45e0-b813-16b2518c3760': 'ResidentialBlockOfApartments',\r\n '5b14fff0-8a46-46b6-b376-53739f32afa0': 'ResidentialDetachedResidence',\r\n 'cc80ffa3-b40d-4816-b7b8-b2fa86e1598f': 'ResidentialDuplex',\r\n 'df5dead7-179b-4820-be1c-eca6733cdfc1': 'ResidentialTerraceHouse',\r\n 'd3658cf8-3862-44d1-8648-b777e5d9efd9': 'ResidentialTownhouse',\r\n '9ca89f78-85db-4c39-854b-31090a98fed5': 'ResidentialTownhouseComplex',\r\n '4bbe22db-a0f6-4149-83a9-e9dbc599da19': 'ResidentialBoardingHouseMultiTenant',\r\n '9df25ed4-de03-4257-82ae-4e89e712053b': 'CommonVacantLand'\r\n },\r\n '8500289e-4570-4d7b-a33c-6dede9c1b419': {\r\n '26dc47da-b5ac-490d-89e5-d7a252373159': 'RetailFreestandingRetailProperty',\r\n '3ad9c502-3e6e-4dac-8b4f-f8f6b7fe5832': 'RetailShowroomBulkyGoodsRetailProperty',\r\n '3d445670-01a4-4cfe-a984-5f89f0ef9510': 'RetailStrataRetailSpace',\r\n 'c49656af-cd78-4906-a078-c1b5cf505996': 'RetailStripShopRetailProperty',\r\n '96a1d826-c1a5-4a39-8d94-9e0c59175a83': 'RetailOtherUniqueSingleTenant',\r\n '0243b9e1-04c6-4b9e-9561-2c865e4990e4': 'RetailMixedUseMultiTenant'\r\n },\r\n '65b23448-f76c-4e8d-b984-892bed5e84d1': {\r\n '4b174a58-ccaa-4a96-b774-b092e07d8bf7': 'RuralCroppingFarm',\r\n 'ebdd433c-68ce-4d42-8bde-75af231952ea': 'RuralGrazingFarm',\r\n '3e57a63a-f81b-40a1-a77f-26a1b47308e6': 'RuralHobbyFarm',\r\n '9bd0510e-aeb2-4ac9-aa0d-f9ca123faffa': 'CommonVacantLand'\r\n }\r\n}\r\n\r\ntype ComponentImport = {\r\n [key: string]: () => unknown;\r\n};\r\n\r\nexport const componentsImports = () => {\r\n const components: ComponentImport = {}\r\n\r\n Object.values(componentsLookupTable)\r\n .flatMap(Object.values)\r\n .forEach((c: string) => {\r\n components[c] = () => import(`../PropertyForms/${c}.vue`)\r\n })\r\n\r\n return components\r\n}\r\n\r\n// This is a helper function to generate the components lookup object\r\n// const typesPromise = Services.API.Enumerations.GetEnumValuesForType(EnumValueType.PropertyType).then((vals) => {\r\n// this.propertyTypes = vals.map((v) => ({ label: v.Label, value: v.ValueId }))\r\n// })\r\n// const classificationsPromise = Services.API.Enumerations.GetEnumValuesForType(EnumValueType.PropertySubType).then((vals) => {\r\n// this.allPropertyClassifications = vals.map((v) => ({ label: v.Label, value: v.ValueId, typeId: v.ParentId }))\r\n// })\r\n// Promise.all([typesPromise, classificationsPromise]).then(() => {\r\n// const lookups: any = {}\r\n// this.propertyTypes.forEach((pt) => {\r\n// const classifications = this.allPropertyClassifications.filter((v) => v.typeId === pt.value)\r\n// const key = pt.value\r\n// lookups[key] = {}\r\n// classifications.forEach((c) => {\r\n// lookups[key][c.value] = `${pt.label}${c.label.replace(/[\\W_]+/g, '')}`\r\n// })\r\n// })\r\n// console.log(JSON.stringify(lookups))\r\n// })\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Prop, Watch, Ref } from 'vue-property-decorator'\r\nimport { componentsLookupTable, componentsImports } from './propertyFormsLookup'\r\nimport { Services } from 'truemarket-modules/src/services'\r\n\r\n@Component({\r\n components: { ValidationObserver, ...componentsImports() }\r\n})\r\nexport default class PropertyDetails extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n // eslint-disable-next-line\r\n @Ref('currentForm') readonly currentForm!: any\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n componentMounted () {\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'PropertyDetails' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.currentForm.loadData(response.Data)\r\n })\r\n }\r\n\r\n validate () {\r\n return this.form.validateWithInfo()\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n const formData = this.currentForm?.formData ? this.currentForm.formData() : {}\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n PropertyType: this.currentForm?.propertyType(),\r\n Key: 'PropertyDetails',\r\n Data: JSON.stringify(formData)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data: formData,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data: formData,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n @Prop({ required: true })\r\n public propertyType!: string;\r\n\r\n @Prop({ required: true })\r\n public propertyClassification!: string;\r\n\r\n @Watch('propertyType')\r\n @Watch('propertyClassification')\r\n propsChanged () {\r\n this.componentToLoad = this.lookupComponent(this.propertyType, this.propertyClassification)\r\n }\r\n\r\n lookupComponent (type: string, classification: string) {\r\n console.log('issue with tables check here //////////////////////////')\r\n if (!componentsLookupTable[type]) {\r\n return null\r\n }\r\n\r\n return componentsLookupTable[type][classification]\r\n }\r\n\r\n componentToLoad: string | null = null\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyDetails.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertyDetails.vue?vue&type=template&id=05432892&scoped=true&\"\nimport script from \"./PropertyDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertyDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PropertyDetails.vue?vue&type=style&index=0&id=05432892&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05432892\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:\"observer\"},[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 6: Photos & Documents\")]),_c('p',{staticClass:\"description\"},[_vm._v(\" Please upload your photos, floor plans and documents here. \")])]),_c('form',{staticClass:\"step-field-form\"},[_c('FileUpload',{ref:\"photos\",attrs:{\"fieldId\":\"photos\",\"label\":\"Photos or videos\"},on:{\"updateFiles\":_vm.filesUpdate}}),_c('FileUpload',{ref:\"buildingPlans\",attrs:{\"fieldId\":\"buildingPlans\",\"acceptVideos\":false,\"label\":\"Building plans (if available)\"},on:{\"updateFiles\":_vm.filesUpdate}}),_c('FileUpload',{ref:\"leaseDocs\",attrs:{\"fieldId\":\"leaseDocs\",\"acceptVideos\":false,\"label\":\"Lease documents (if available)\"},on:{\"updateFiles\":_vm.filesUpdate}}),_c('FileUpload',{ref:\"tenancySchedule\",attrs:{\"fieldId\":\"tenancySchedule\",\"acceptVideos\":false,\"label\":\"Tenancy Schedule documents (if available)\"},on:{\"updateFiles\":_vm.filesUpdate}}),_c('ValidationProvider',{attrs:{\"name\":\"Property listing link (optional)\",\"rules\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"listingLink\",\"error\":errors[0],\"placeholder\":\"e.g. www.realestate.com.au\",\"label\":\"Property listing link (optional)\"},model:{value:(_vm.listingLink),callback:function ($$v) {_vm.listingLink=$$v},expression:\"listingLink\"}})]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"primevue-field\"},[_c('label',{attrs:{\"for\":_vm.fieldId}},[_vm._v(_vm._s(_vm.label))]),_c('FilePond',{ref:\"pond\",class:{ 'with-error': _vm.error },attrs:{\"name\":_vm.fieldId,\"label-idle\":_vm.idleLabel,\"allow-multiple\":true,\"files\":_vm.files,\"credits\":\"false\",\"accepted-file-types\":_vm.fileTypes,\"max-files\":_vm.maxFiles,\"max-parallel-uploads\":_vm.maxParallelUploads,\"server\":_vm.server,\"max-file-size\":\"15MB\",\"required\":_vm.requiredFiles > 0},on:{\"updatefiles\":_vm.handleUpdateFiles}}),_c('small',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\",attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Ref } from 'vue-property-decorator'\r\nimport { Services } from 'truemarket-modules/src/services'\r\nimport { Config } from 'truemarket-modules/src/environment'\r\n\r\nimport 'filepond/dist/filepond.min.css'\r\nimport 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css'\r\nimport 'filepond-plugin-media-preview/dist/filepond-plugin-media-preview.min.css'\r\nimport 'filepond-plugin-pdf-preview/dist/filepond-plugin-pdf-preview.min.css'\r\nimport 'filepond-plugin-get-file/dist/filepond-plugin-get-file.min.css'\r\n\r\nimport { FileStatus } from 'filepond'\r\nimport vueFilePond, { VueFilePondComponent } from 'vue-filepond'\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size'\r\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type'\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview'\r\nimport FilePondPluginMediaPreview from 'filepond-plugin-media-preview'\r\nimport FilePondPluginPdfPreview from 'filepond-plugin-pdf-preview'\r\nimport FilePondPluginGetFile from 'filepond-plugin-get-file'\r\n\r\nconst FilePond = vueFilePond(\r\n FilePondPluginFileValidateSize,\r\n FilePondPluginFileValidateType,\r\n FilePondPluginImagePreview,\r\n FilePondPluginMediaPreview,\r\n FilePondPluginPdfPreview,\r\n FilePondPluginGetFile\r\n)\r\n\r\nconst docTypes = [\r\n 'application/pdf',\r\n 'application/msword',\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n 'application/vnd.ms-excel',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n]\r\n\r\nconst imageTypes = [\r\n 'image/*',\r\n 'image/heic'\r\n]\r\n\r\nconst videoTypes = [\r\n 'video/*'\r\n]\r\n\r\n@Component({\r\n components: {\r\n FilePond\r\n }\r\n})\r\nexport default class FileUpload extends Vue {\r\n @Ref('pond') readonly pond!: VueFilePondComponent\r\n\r\n files: any[] = []\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false, default: 5 })\r\n public maxFiles!: number\r\n\r\n @Prop({ required: false, default: 0 })\r\n public requiredFiles!: number\r\n\r\n @Prop({ required: false, default: 3 })\r\n public maxParallelUploads!: number\r\n\r\n @Prop({ required: false, default: true })\r\n public acceptImages!: boolean\r\n\r\n @Prop({ required: false, default: true })\r\n public acceptVideos!: boolean\r\n\r\n @Prop({ required: false, default: true })\r\n public acceptDocs!: boolean\r\n\r\n resumeFiles (fileIds: string[]) {\r\n fileIds.forEach((fileId) => {\r\n this.pond.addFile(fileId, {\r\n type: 'limbo'\r\n })\r\n })\r\n }\r\n\r\n getFileIds () {\r\n return this.pond.getFiles()\r\n .filter((file) => file.status === FileStatus.PROCESSING_COMPLETE)\r\n .map((file) => file.serverId)\r\n }\r\n\r\n validate () {\r\n this.error = ''\r\n\r\n const files = this.pond.getFiles()\r\n const isFinished = files.filter(\r\n (file) => file.status !== FileStatus.PROCESSING_COMPLETE).length === 0\r\n\r\n if (!isFinished) {\r\n this.error =\r\n 'Please wait for all files to finish uploading, check that all files are valid and try again'\r\n return false\r\n }\r\n\r\n if (files.length < this.requiredFiles) {\r\n this.error = `Please upload at least ${this.requiredFiles} file(s)`\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleUpdateFiles (update: any) {\r\n this.error = ''\r\n this.$emit('updateFiles', update)\r\n }\r\n\r\n processUpload (\r\n fieldName: any, file: any, metadata: any,\r\n load: any, error: any, progress: any,\r\n abort: any, transfer: any, options: any) {\r\n // fieldName is the name of the input field\r\n // file is the actual file object to send\r\n const formData = new FormData()\r\n formData.append('File', file, file.name)\r\n\r\n const credential = Services.CredentialManager.GetToken()\r\n const path = `${Config.API.Base}/api/files/upload_global`\r\n const request = new XMLHttpRequest()\r\n request.open('POST', path)\r\n request.setRequestHeader('Authorization', `Bearer ${credential?.Token}`)\r\n\r\n // Should call the progress method to update the progress to 100% before calling load\r\n // Setting computable to false switches the loading indicator to infinite mode\r\n request.upload.onprogress = (e) => {\r\n progress(e.lengthComputable, e.loaded, e.total)\r\n }\r\n\r\n // Should call the load method when done and pass the returned server file id\r\n // this server file id is then used later on when reverting or restoring a file\r\n // so your server knows which file to return without exposing that info to the client\r\n request.onload = function () {\r\n if (request.status >= 200 && request.status < 300) {\r\n // the load method accepts either a string (id) or an object\r\n const response = JSON.parse(request.responseText)\r\n load(response.FileId)\r\n } else {\r\n // Can call the error method if something is wrong, should exit after\r\n error('Could not process upload')\r\n }\r\n }\r\n\r\n request.send(formData)\r\n\r\n // Should expose an abort method so the request can be cancelled\r\n return {\r\n abort: () => {\r\n // This function is entered if the user has tapped the cancel button\r\n request.abort()\r\n\r\n // Let FilePond know the request has been cancelled\r\n abort()\r\n }\r\n }\r\n }\r\n\r\n revertUpload (uniqueFileId: any, load: any, error: any) {\r\n // Should remove the earlier created temp file here\r\n // ...\r\n\r\n // Can call the error method if something is wrong, should exit after\r\n // error('Could not revert upload')\r\n\r\n // Should call the load method when done, no parameters required\r\n load()\r\n }\r\n\r\n restoreUpload (\r\n uniqueFileId: any, load: any, error: any,\r\n progress: any, abort: any, headers: any) {\r\n const credential = Services.CredentialManager.GetToken()\r\n const path = `${Config.API.Base}/api/files/${uniqueFileId}/download_global`\r\n const request = new XMLHttpRequest()\r\n request.open('GET', path)\r\n request.setRequestHeader('Authorization', `Bearer ${credential?.Token}`)\r\n request.responseType = 'blob'\r\n\r\n request.onprogress = function (pe) {\r\n if (pe.lengthComputable) {\r\n // Should call the progress method to update the progress to 100% before calling load\r\n // (computable, loadedSize, totalSize)\r\n progress(true, pe.loaded, pe.total)\r\n }\r\n }\r\n request.onload = function (pe) {\r\n if (request.status >= 200 && request.status < 300) {\r\n // Should call the load method with a file object when done\r\n load(request.response)\r\n } else {\r\n // Can call the error method if something is wrong, should exit after\r\n error('Could not restore upload')\r\n }\r\n }\r\n request.onreadystatechange = () => {\r\n // 2 = HEADERS_RECEIVED\r\n if (request.readyState === 2) {\r\n // Can call the header method to supply FilePond with early response header string\r\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n const headersString = request.getAllResponseHeaders()\r\n headers(headersString)\r\n }\r\n }\r\n request.send()\r\n\r\n // Should expose an abort method so the request can be cancelled\r\n return {\r\n abort: () => {\r\n // User tapped abort, cancel our ongoing actions here\r\n // Let FilePond know the request has been cancelled\r\n abort()\r\n }\r\n }\r\n }\r\n\r\n server: any = {\r\n process: this.processUpload, // process the file before uploading\r\n revert: this.revertUpload, // delete file from temp server\r\n restore: this.restoreUpload, // restore temp file from server\r\n load: null, // load restore final file from server\r\n fetch: null, // upload files from a remote url\r\n remove: null // remove local files from server\r\n }\r\n\r\n get idleLabel () {\r\n const acceptedFiles = [\r\n this.acceptImages ? 'Images' : null,\r\n this.acceptVideos ? 'Videos' : null,\r\n this.acceptDocs ? 'Docs or PDFs' : null\r\n ].filter(n => n).join('/')\r\n\r\n return `Drag and drop files (${acceptedFiles}) to here to upload.`\r\n }\r\n\r\n get fileTypes () {\r\n return [\r\n ...(this.acceptImages ? imageTypes : []),\r\n ...(this.acceptVideos ? videoTypes : []),\r\n ...(this.acceptDocs ? docTypes : [])\r\n ].join(', ')\r\n }\r\n\r\n error = ''\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=4d943e18&\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ValidationObserver, ValidationProvider } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport { Component, Vue, Ref, Prop } from 'vue-property-decorator'\r\nimport FileUpload from '@/components/Controls/FileUpload.vue'\r\nimport InputText from '@/components/Controls/InputText.vue'\r\nimport { Services } from 'truemarket-modules/src/services'\r\n\r\n@Component({\r\n components: {\r\n ValidationObserver,\r\n ValidationProvider,\r\n FileUpload,\r\n InputText\r\n }\r\n})\r\nexport default class PhotosAndDocuments extends Vue {\r\n @Ref('observer') readonly form!: InstanceType\r\n @Ref('photos') readonly photos!: InstanceType\r\n @Ref('buildingPlans') readonly buildingPlans!: InstanceType\r\n @Ref('leaseDocs') readonly leaseDocs!: InstanceType\r\n @Ref('tenancySchedule') readonly tenancySchedule!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n mounted () {\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.form.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'PhotosAndDocuments' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.photos.resumeFiles(response.Data.Photos)\r\n this.buildingPlans.resumeFiles(response.Data.BuildingPlans)\r\n this.leaseDocs.resumeFiles(response.Data.LeaseDocs)\r\n this.tenancySchedule.resumeFiles(response.Data.TenancySchedule)\r\n this.listingLink = response.Data.ListingLink\r\n })\r\n }\r\n\r\n async validate () {\r\n const photosValid = this.photos.validate()\r\n const buildingPlansValid = this.buildingPlans.validate()\r\n const leaseDocsValid = this.leaseDocs.validate()\r\n const tenancyScheduleValid = this.tenancySchedule.validate()\r\n const formValid = await this.form.validateWithInfo().then((res) => {\r\n return res.isValid\r\n })\r\n\r\n return {\r\n isValid: photosValid && buildingPlansValid &&\r\n leaseDocsValid && tenancyScheduleValid && formValid\r\n }\r\n }\r\n\r\n timeout: ReturnType | undefined\r\n\r\n filesUpdate () {\r\n if (this.timeout) clearTimeout(this.timeout)\r\n this.timeout = setTimeout(async () => {\r\n await this.submit()\r\n }, 6000)\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n async submit () {\r\n const data = {\r\n Photos: this.photos.getFileIds(),\r\n BuildingPlans: this.buildingPlans.getFileIds(),\r\n LeaseDocs: this.leaseDocs.getFileIds(),\r\n TenancySchedule: this.tenancySchedule.getFileIds(),\r\n ListingLink: this.listingLink\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'PhotosAndDocuments',\r\n Data: JSON.stringify(data)\r\n }\r\n return await Services.API.ValuationForm.ProcessTempValuation(request).then(response => {\r\n return {\r\n data,\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n data,\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n listingLink = ''\r\n}\r\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"4.4.0\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar onErrorListener = null;\nvar onLoadListener = null;\n\nvar onError = function onError(reject) {\n return function () {\n reject(new Error('Failed to load Stripe.js'));\n };\n};\n\nvar onLoad = function onLoad(resolve, reject) {\n return function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n };\n};\n\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n } else if (script && onLoadListener !== null && onErrorListener !== null) {\n var _script$parentNode;\n\n // remove event listeners\n script.removeEventListener('load', onLoadListener);\n script.removeEventListener('error', onErrorListener); // if script exists, but we are reloading due to an error,\n // reload script to trigger 'load' event\n\n (_script$parentNode = script.parentNode) === null || _script$parentNode === void 0 ? void 0 : _script$parentNode.removeChild(script);\n script = injectScript(params);\n }\n\n onLoadListener = onLoad(resolve, reject);\n onErrorListener = onError(reject);\n script.addEventListener('load', onLoadListener);\n script.addEventListener('error', onErrorListener);\n } catch (error) {\n reject(error);\n return;\n }\n }); // Resets stripePromise on error\n\n return stripePromise[\"catch\"](function (error) {\n stripePromise = null;\n return Promise.reject(error);\n });\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nvar stripePromise$1;\nvar loadCalled = false;\n\nvar getStripePromise = function getStripePromise() {\n if (stripePromise$1) {\n return stripePromise$1;\n }\n\n stripePromise$1 = loadScript(null)[\"catch\"](function (error) {\n // clear cache on error\n stripePromise$1 = null;\n return Promise.reject(error);\n });\n return stripePromise$1;\n}; // Execute our own script injection after a tick to give users time to do their\n// own script injection.\n\n\nPromise.resolve().then(function () {\n return getStripePromise();\n})[\"catch\"](function (error) {\n if (!loadCalled) {\n console.warn(error);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now(); // if previous attempts are unsuccessful, will re-load script\n\n return getStripePromise().then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosAndDocuments.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosAndDocuments.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhotosAndDocuments.vue?vue&type=template&id=7aaf7c0b&scoped=true&\"\nimport script from \"./PhotosAndDocuments.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhotosAndDocuments.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PhotosAndDocuments.vue?vue&type=style&index=0&id=7aaf7c0b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7aaf7c0b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"step-heading\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"Step 7: Payment\")]),(_vm.amount > 0)?_c('p',{staticClass:\"description\"},[_c('b',[_vm._v(\"Total Assessment Fee $\"+_vm._s(_vm.amount)+\" (incl. GST) \")]),_vm._v(\" Please complete the below payment to order your assessment \")]):_c('p',{staticClass:\"description\"},[_vm._v(\" Order your assessment below. You will be asked for a payment later. \")])]),_c('form',{staticClass:\"step-field-form\"},[_c('ValidationObserver',{ref:\"voucherObserver\",staticClass:\"voucher-block\"},[_c('ValidationProvider',{staticClass:\"voucher-input\",attrs:{\"name\":\"Corporate Code\",\"rules\":\"alpha_num\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nreturn [_c('InputText',{attrs:{\"fieldId\":\"voucher\",\"error\":errors[0],\"placeholder\":\"Enter Corporate Code\",\"label\":\"Corporate Code\"},model:{value:(_vm.voucher),callback:function ($$v) {_vm.voucher=$$v},expression:\"voucher\"}})]}}])}),_c('Button',{staticClass:\"p-button-lg voucher-submit\",attrs:{\"label\":\"Apply Code\"},on:{\"click\":_vm.agreeUseVoucher}})],1),(_vm.discount !== null && _vm.discount > 0 && _vm.discount !== 100)?_c('p',{staticClass:\"discount-message\"},[_vm._v(\"Discount applied: \"+_vm._s(_vm.discount)+\"%\")]):_vm._e(),_c('div',{attrs:{\"id\":\"payment-element\"}}),_c('Checkbox',{attrs:{\"fieldId\":\"termsAndConditions\",\"label\":_vm.termsAndConditionsLabel,\"error\":_vm.termsAndConditionsInvalid ? _vm.termsAndConditionsError : false},model:{value:(_vm.termsAndConditions),callback:function ($$v) {_vm.termsAndConditions=$$v},expression:\"termsAndConditions\"}})],1),_c('ConfirmDialog',{staticClass:\"confirm-dialog\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch, Ref } from 'vue-property-decorator'\r\nimport { Services, ServiceManager, ServiceType } from 'truemarket-modules/src/services'\r\nimport StripeService from 'truemarket-modules/src/services/payment/stripe/StripeService'\r\nimport { loadStripe, Stripe, StripeElements } from '@stripe/stripe-js'\r\nimport { ValidationProvider, ValidationObserver } from 'vee-validate/dist/vee-validate.full.esm'\r\nimport InputText from '@/components/Controls/InputText.vue'\r\nimport Checkbox from '@/components/Controls/Checkbox.vue'\r\nimport ConfirmDialog from 'primevue/confirmdialog'\r\nimport Button from 'primevue/button'\r\nimport router from '@/router'\r\n\r\n@Component({\r\n components: {\r\n ValidationProvider,\r\n ValidationObserver,\r\n ConfirmDialog,\r\n InputText,\r\n Checkbox,\r\n Button\r\n }\r\n})\r\nexport default class Payment extends Vue {\r\n @Ref('voucherObserver') readonly voucherForm!: InstanceType\r\n\r\n created () {\r\n this.$emit('submissionHandler', this.submit)\r\n this.$emit('validationHandler', this.validate)\r\n }\r\n\r\n async mounted () {\r\n this.returnUrl = this.stripeService.GetReturnUrl()\r\n this.stripe = await loadStripe(this.stripeService.GetPublishableKey())\r\n\r\n const tempValId = this.$route.query.tempValuationId as string\r\n const pristine = this.voucherForm.flags.pristine\r\n\r\n if (tempValId && pristine) this.loadData(tempValId)\r\n }\r\n\r\n loadData (tempValId: string) {\r\n Services.API.ValuationForm.ResumeTempValuation(\r\n { TempValuationId: tempValId, Key: 'Voucher' }\r\n ).then((response: any) => {\r\n if (!response.Data) return\r\n\r\n this.voucher = response.Data.Voucher\r\n })\r\n }\r\n\r\n @Prop({ required: true })\r\n public tempValuationId!: string;\r\n\r\n @Prop({ required: true })\r\n public propertyClassification!: string;\r\n\r\n @Prop({ required: true })\r\n public purpose!: string;\r\n\r\n @Watch('propertyClassification')\r\n @Watch('purpose')\r\n propsOnChange () {\r\n this.setupPaymentIntent()\r\n }\r\n\r\n agreeUseVoucher () {\r\n this.$confirm.require({\r\n message: `You have entered the TrueMarket voucher/coupon ${this.voucher} by pressing confirm\r\n you declare you have permission to use this voucher/coupon code.`,\r\n header: 'Voucher / coupon confirmation',\r\n accept: this.handleSubmitVoucher,\r\n acceptLabel: 'Confirm',\r\n rejectLabel: 'Cancel'\r\n })\r\n }\r\n\r\n setupPaymentIntent () {\r\n if (!this.propertyClassification || !this.purpose || !this.tempValuationId) return\r\n\r\n return Services.API.Payment.CreateTempValuationPaymentIntent(this.tempValuationId)\r\n .then(\r\n (response) => {\r\n this.clientSecret = response.ClientSecret\r\n this.amount = response.Amount\r\n this.discount = response.Discount\r\n\r\n if (response.Amount === 0) {\r\n const paymentNode = document.getElementById('payment-element')\r\n if (paymentNode) paymentNode.innerHTML = ''\r\n return\r\n }\r\n\r\n if (!this.stripe) return\r\n\r\n this.elements = this.stripe.elements({\r\n clientSecret: this.clientSecret\r\n })\r\n\r\n const paymentElement = this.elements.create('payment', {\r\n layout: 'accordion'\r\n })\r\n paymentElement.mount('#payment-element')\r\n }\r\n )\r\n }\r\n\r\n validate () {\r\n this.termsAndConditionsInvalid = !this.termsAndConditions\r\n\r\n return {\r\n isValid: this.termsAndConditions\r\n }\r\n }\r\n\r\n async submit () {\r\n if (this.termsAndConditionsInvalid) return\r\n\r\n if (this.amount === 0) {\r\n return await this.submitViaTrueMarket()\r\n } else {\r\n return await this.submitViaStripe()\r\n }\r\n }\r\n\r\n async submitViaTrueMarket () {\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'Complete',\r\n Data: JSON.stringify('')\r\n }\r\n\r\n return await Services.API.ValuationForm.CompleteTempValuation(request).then(response => {\r\n router.push('/completed')\r\n\r\n return {\r\n response,\r\n success: true\r\n }\r\n }).catch((e) => {\r\n return {\r\n response: e,\r\n success: false\r\n }\r\n })\r\n }\r\n\r\n async submitViaStripe () {\r\n if (!this.stripe || !this.clientSecret || !this.elements) return\r\n\r\n await this.elements.submit()\r\n\r\n const { error } = await this.stripe.confirmPayment({\r\n elements: this.elements,\r\n clientSecret: this.clientSecret,\r\n confirmParams: {\r\n return_url: this.returnUrl\r\n }\r\n })\r\n\r\n return {\r\n success: error === null\r\n }\r\n }\r\n\r\n async handleSubmitVoucher () {\r\n const validationResult = await this.voucherForm.validateWithInfo()\r\n\r\n if (\r\n (validationResult && !validationResult.isValid) ||\r\n this.voucher === '') return\r\n\r\n const data = {\r\n Voucher: this.voucher\r\n }\r\n const request = {\r\n TempValuationId: this.tempValuationId,\r\n Version: Vue.prototype.$valuationFromVersion,\r\n Key: 'Voucher',\r\n Data: JSON.stringify(data)\r\n }\r\n\r\n await Services.API.ValuationForm.ProcessTempValuation(request)\r\n await this.setupPaymentIntent()\r\n }\r\n\r\n termsAndConditionsInvalid = false\r\n termsAndConditionsError = 'You must agree to the terms and conditions'\r\n termsAndConditions = false\r\n termsAndConditionsLabel = 'I agree to the Terms & Conditions'\r\n\r\n discount: number | null = null\r\n amount: number | null = null\r\n private clientSecret: string | null = null\r\n private stripeService = ServiceManager.Require(ServiceType.Stripe)\r\n private stripe: Stripe | null = null\r\n private elements: StripeElements | undefined\r\n private returnUrl = ''\r\n\r\n voucher = ''\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Payment.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Payment.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Payment.vue?vue&type=template&id=2355dab8&scoped=true&\"\nimport script from \"./Payment.vue?vue&type=script&lang=ts&\"\nexport * from \"./Payment.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Payment.vue?vue&type=style&index=0&id=2355dab8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2355dab8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator'\r\nimport ValuationStepper, { StepResult } from '@/components/Controls/Valuation/ValuationStepper.vue'\r\nimport ValuationStep from '@/components/Controls/Valuation/ValuationStep.vue'\r\nimport AddressDetails from '@/components/Controls/Valuation/AddressDetails.vue'\r\nimport AssessmentDetails from '@/components/Controls/Valuation/AssessmentDetails.vue'\r\nimport PropertyClassification from '@/components/Controls/Valuation/PropertyClassification.vue'\r\nimport ContactDetails from '@/components/Controls/Valuation/ContactDetails.vue'\r\nimport PropertyDetails from '@/components/Controls/Valuation/PropertyDetails.vue'\r\nimport PhotosAndDocuments from '@/components/Controls/Valuation/PhotosAndDocuments.vue'\r\nimport Payment from '@/components/Controls/Valuation/Payment.vue'\r\n\r\n@Component({\r\n components: {\r\n ValuationStepper,\r\n ValuationStep,\r\n AddressDetails,\r\n AssessmentDetails,\r\n PropertyClassification,\r\n ContactDetails,\r\n PropertyDetails,\r\n PhotosAndDocuments,\r\n Payment\r\n }\r\n})\r\nexport default class New extends Vue {\r\n public steps: string[] = [\r\n 'Address', 'Assessment Details', 'Property Classification',\r\n 'Your Details', 'Property Details', 'Photos & Documents', 'Payment'\r\n ]\r\n\r\n public stepKeys: string[] = [\r\n 'AddressDetails', 'AssessmentDetails', 'PropertyClassification',\r\n 'ContactDetails', 'PropertyDetails', 'PhotosAndDocuments', 'Payment'\r\n ]\r\n\r\n resumedHandler (id: string) {\r\n this.tempValuationId = id\r\n }\r\n\r\n stepSubmitted (e: StepResult) {\r\n if (e.stepName === 'AddressDetails') {\r\n this.tempValuationId = e.response.TempValuationId\r\n }\r\n\r\n if (e.stepName === 'AssessmentDetails') {\r\n this.purpose = e.data.Purpose\r\n }\r\n\r\n if (e.stepName === 'PropertyClassification') {\r\n this.propertyType = e.data.PropertyType\r\n this.propertyClassification = e.data.PropertyClassification\r\n }\r\n }\r\n\r\n tempValuationId: string | null = null\r\n\r\n purpose: string | null = null\r\n\r\n propertyType: string | null = null\r\n propertyClassification: string | null = null\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetValuation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetValuation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GetValuation.vue?vue&type=template&id=4849b4ec&scoped=true&\"\nimport script from \"./GetValuation.vue?vue&type=script&lang=ts&\"\nexport * from \"./GetValuation.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4849b4ec\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValuationStep.vue?vue&type=style&index=0&id=a45285fa&scoped=true&lang=css&\"","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","/*!\n * FilePondPluginMediaPreview 1.0.11\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit undefined for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global =\n typeof globalThis !== 'undefined' ? globalThis : global || self),\n (global.FilePondPluginMediaPreview = factory()));\n})(this, function () {\n 'use strict';\n\n const isPreviewableVideo = (file) => /^video/.test(file.type);\n\n const isPreviewableAudio = (file) => /^audio/.test(file.type);\n\n ('use strict');\n\n class AudioPlayer {\n constructor(mediaEl, audioElems) {\n this.mediaEl = mediaEl;\n this.audioElems = audioElems;\n this.onplayhead = false;\n this.duration = 0;\n this.timelineWidth =\n this.audioElems.timeline.offsetWidth -\n this.audioElems.playhead.offsetWidth;\n this.moveplayheadFn = this.moveplayhead.bind(this);\n this.registerListeners();\n }\n\n registerListeners() {\n this.mediaEl.addEventListener(\n 'timeupdate',\n this.timeUpdate.bind(this),\n false\n );\n this.mediaEl.addEventListener(\n 'canplaythrough',\n () => (this.duration = this.mediaEl.duration),\n false\n );\n this.audioElems.timeline.addEventListener(\n 'click',\n this.timelineClicked.bind(this),\n false\n );\n this.audioElems.button.addEventListener('click', this.play.bind(this));\n this.audioElems.playhead.addEventListener(\n 'mousedown',\n this.mouseDown.bind(this),\n false\n );\n window.addEventListener('mouseup', this.mouseUp.bind(this), false);\n }\n\n play() {\n if (this.mediaEl.paused) {\n this.mediaEl.play();\n } else {\n this.mediaEl.pause();\n }\n\n this.audioElems.button.classList.toggle('play');\n this.audioElems.button.classList.toggle('pause');\n }\n\n timeUpdate() {\n let playPercent = (this.mediaEl.currentTime / this.duration) * 100;\n this.audioElems.playhead.style.marginLeft = playPercent + '%';\n\n if (this.mediaEl.currentTime === this.duration) {\n this.audioElems.button.classList.toggle('play');\n this.audioElems.button.classList.toggle('pause');\n }\n }\n\n moveplayhead(event) {\n let newMargLeft =\n event.clientX - this.getPosition(this.audioElems.timeline);\n\n if (newMargLeft >= 0 && newMargLeft <= this.timelineWidth) {\n this.audioElems.playhead.style.marginLeft = newMargLeft + 'px';\n }\n\n if (newMargLeft < 0) {\n this.audioElems.playhead.style.marginLeft = '0px';\n }\n\n if (newMargLeft > this.timelineWidth) {\n this.audioElems.playhead.style.marginLeft =\n this.timelineWidth - 4 + 'px';\n }\n }\n\n timelineClicked(event) {\n this.moveplayhead(event);\n this.mediaEl.currentTime = this.duration * this.clickPercent(event);\n }\n\n mouseDown() {\n this.onplayhead = true;\n window.addEventListener('mousemove', this.moveplayheadFn, true);\n this.mediaEl.removeEventListener(\n 'timeupdate',\n this.timeUpdate.bind(this),\n false\n );\n }\n\n mouseUp(event) {\n window.removeEventListener('mousemove', this.moveplayheadFn, true);\n\n if (this.onplayhead == true) {\n this.moveplayhead(event); // change current time\n\n this.mediaEl.currentTime = this.duration * this.clickPercent(event);\n this.mediaEl.addEventListener(\n 'timeupdate',\n this.timeUpdate.bind(this),\n false\n );\n }\n\n this.onplayhead = false;\n }\n\n clickPercent(event) {\n return (\n (event.clientX - this.getPosition(this.audioElems.timeline)) /\n this.timelineWidth\n );\n }\n\n getPosition(el) {\n return el.getBoundingClientRect().left;\n }\n }\n\n const createMediaView = (_) =>\n _.utils.createView({\n name: 'media-preview',\n tag: 'div',\n ignoreRect: true,\n create: ({ root, props }) => {\n const { id } = props; // get item\n\n const item = root.query('GET_ITEM', {\n id: props.id,\n });\n let tagName = isPreviewableAudio(item.file) ? 'audio' : 'video';\n root.ref.media = document.createElement(tagName);\n root.ref.media.setAttribute('controls', true);\n root.element.appendChild(root.ref.media);\n\n if (isPreviewableAudio(item.file)) {\n let docfrag = document.createDocumentFragment();\n root.ref.audio = [];\n (root.ref.audio.container = document.createElement('div')),\n (root.ref.audio.button = document.createElement('span')),\n (root.ref.audio.timeline = document.createElement('div')),\n (root.ref.audio.playhead = document.createElement('div'));\n root.ref.audio.container.className = 'audioplayer';\n root.ref.audio.button.className = 'playpausebtn play';\n root.ref.audio.timeline.className = 'timeline';\n root.ref.audio.playhead.className = 'playhead';\n root.ref.audio.timeline.appendChild(root.ref.audio.playhead);\n root.ref.audio.container.appendChild(root.ref.audio.button);\n root.ref.audio.container.appendChild(root.ref.audio.timeline);\n docfrag.appendChild(root.ref.audio.container);\n root.element.appendChild(docfrag);\n }\n },\n write: _.utils.createRoute({\n DID_MEDIA_PREVIEW_LOAD: ({ root, props }) => {\n const { id } = props; // get item\n\n const item = root.query('GET_ITEM', {\n id: props.id,\n });\n if (!item) return;\n let URL = window.URL || window.webkitURL;\n let blob = new Blob([item.file], {\n type: item.file.type,\n });\n root.ref.media.type = item.file.type;\n root.ref.media.src =\n (item.file.mock && item.file.url) || URL.createObjectURL(blob); // create audio player in case of audio file\n\n if (isPreviewableAudio(item.file)) {\n new AudioPlayer(root.ref.media, root.ref.audio);\n } // determine dimensions and update panel accordingly\n\n root.ref.media.addEventListener(\n 'loadeddata',\n () => {\n let height = 75; // default height for audio panel\n\n if (isPreviewableVideo(item.file)) {\n let containerWidth = root.ref.media.offsetWidth;\n let factor = root.ref.media.videoWidth / containerWidth;\n height = root.ref.media.videoHeight / factor;\n }\n\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: props.id,\n height: height,\n });\n },\n false\n );\n },\n }),\n });\n\n const createMediaWrapperView = (_) => {\n /**\n * Write handler for when preview container has been created\n */\n const didCreatePreviewContainer = ({ root, props }) => {\n const { id } = props;\n const item = root.query('GET_ITEM', id);\n if (!item) return; // the preview is now ready to be drawn\n\n root.dispatch('DID_MEDIA_PREVIEW_LOAD', {\n id,\n });\n };\n /**\n * Constructor\n */\n\n const create = ({ root, props }) => {\n const media = createMediaView(_); // append media presenter\n\n root.ref.media = root.appendChildView(\n root.createChildView(media, {\n id: props.id,\n })\n );\n };\n\n return _.utils.createView({\n name: 'media-preview-wrapper',\n create,\n write: _.utils.createRoute({\n // media preview stated\n DID_MEDIA_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n }),\n });\n };\n\n /**\n * Media Preview Plugin\n */\n\n const plugin = (fpAPI) => {\n const { addFilter, utils } = fpAPI;\n const { Type, createRoute } = utils;\n const mediaWrapperView = createMediaWrapperView(fpAPI); // called for each view that is created right after the 'create' method\n\n addFilter('CREATE_VIEW', (viewAPI) => {\n // get reference to created view\n const { is, view, query } = viewAPI; // only hook up to item view\n\n if (!is('file')) {\n return;\n } // create the media preview plugin, but only do so if the item is video or audio\n\n const didLoadItem = ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n const allowVideoPreview = query('GET_ALLOW_VIDEO_PREVIEW');\n const allowAudioPreview = query('GET_ALLOW_AUDIO_PREVIEW');\n\n if (\n !item ||\n item.archived ||\n ((!isPreviewableVideo(item.file) || !allowVideoPreview) &&\n (!isPreviewableAudio(item.file) || !allowAudioPreview))\n ) {\n return;\n } // set preview view\n\n root.ref.mediaPreview = view.appendChildView(\n view.createChildView(mediaWrapperView, {\n id,\n })\n ); // now ready\n\n root.dispatch('DID_MEDIA_PREVIEW_CONTAINER_CREATE', {\n id,\n });\n }; // start writing\n\n view.registerWriter(\n createRoute(\n {\n DID_LOAD_ITEM: didLoadItem,\n },\n ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n const allowVideoPreview = root.query('GET_ALLOW_VIDEO_PREVIEW');\n const allowAudioPreview = root.query('GET_ALLOW_AUDIO_PREVIEW'); // don't do anything while not a video or audio file or hidden\n\n if (\n !item ||\n ((!isPreviewableVideo(item.file) || !allowVideoPreview) &&\n (!isPreviewableAudio(item.file) || !allowAudioPreview)) ||\n root.rect.element.hidden\n )\n return;\n }\n )\n );\n }); // expose plugin\n\n return {\n options: {\n allowVideoPreview: [true, Type.BOOLEAN],\n allowAudioPreview: [true, Type.BOOLEAN],\n },\n };\n }; // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n\n const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', {\n detail: plugin,\n })\n );\n }\n\n return plugin;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"primevue-field\"},[_c('label',{attrs:{\"for\":_vm.fieldId}},[_vm._v(_vm._s(_vm.label))]),_c('PrimeVueInputText',{staticClass:\"p-inputtext-lg\",class:{ 'p-invalid': _vm.error },attrs:{\"id\":_vm.fieldId,\"placeholder\":_vm.placeholder,\"ariaLabelledBy\":_vm.fieldId,\"value\":_vm.value},on:{\"input\":_vm.onInput}}),_c('small',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\",attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport PrimeVueInputText from 'primevue/inputtext'\r\n\r\n@Component({\r\n components: {\r\n PrimeVueInputText\r\n }\r\n})\r\nexport default class InputText extends Vue {\r\n @Prop({ required: true })\r\n public value!: string\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: true })\r\n public placeholder!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false })\r\n public error: string | undefined\r\n\r\n onInput (newVal: string) {\r\n this.$emit('input', newVal)\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputText.vue?vue&type=template&id=5427836c&scoped=true&\"\nimport script from \"./InputText.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputText.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InputText.vue?vue&type=style&index=0&id=5427836c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5427836c\",\n null\n \n)\n\nexport default component.exports","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) {\n var state = enforceInternalState(result);\n state.sticky = true;\n }\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModule = require('../internals/object-define-property');\nvar regExpFlags = require('../internals/regexp-flags');\nvar UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\n// eslint-disable-next-line es/no-regexp-prototype-flags -- required for testing\nif (DESCRIPTORS && (/./g.flags != 'g' || UNSUPPORTED_Y)) {\n objectDefinePropertyModule.f(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlags\n });\n}\n","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=style&index=0&lang=css&\"","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","enum EnumValueType {\r\n None = 0,\r\n\r\n ValuationPurpose = 3,\r\n\r\n PropertyType = 1,\r\n PropertySubType = 2,\r\n\r\n PropertyCondition = 4,\r\n\r\n Bedrooms = 5,\r\n Bathrooms = 6,\r\n Parking = 7,\r\n\r\n FloorConstructionType = 8,\r\n WallConstructionType = 9,\r\n RoofConstructionType = 10,\r\n \r\n ResidentialPropertyFeature = 11,\r\n\r\n CommercialAccommodationFeatures = 12,\r\n CommercialPropertyFeatures = 13,\r\n\r\n IndustrialAccommodationFeatures = 14,\r\n IndustrialPropertyFeatures = 15,\r\n\r\n RetailAccommodationFeatures = 16,\r\n RetailPropertyFeatures = 17,\r\n\r\n CityViews = 18,\r\n RiverViews = 19,\r\n ElevatedOutlook = 20,\r\n Pool = 21,\r\n TennisCourt = 22,\r\n SecureParkingSpaces = 23,\r\n\r\n ResidentialPropertyFeatures = 24,\r\n\r\n RuralPropertyFeatures = 25,\r\n\r\n Dams = 26,\r\n Bores = 27,\r\n FencedPaddocks = 28,\r\n Outbuildings = 29,\r\n AirConditioningType = 30\r\n}\r\n\r\nexport default EnumValueType\r\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyDetails.vue?vue&type=style&index=0&id=05432892&scoped=true&lang=css&\"","'use strict';\nmodule.exports = require('./Dropdown.vue');","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"primevue-field\"},[_c('label',{attrs:{\"for\":_vm.fieldId}},[_vm._v(_vm._s(_vm.label))]),_c('PrimeVueCalendar',{staticClass:\"p-inputtext-lg\",class:{ 'p-invalid': _vm.error },attrs:{\"inputId\":_vm.fieldId,\"placeholder\":_vm.placeholder,\"ariaLabelledBy\":_vm.fieldId,\"value\":_vm.value,\"dateFormat\":_vm.dateFormat,\"view\":_vm.view,\"manualInput\":false,\"showButtonBar\":true},on:{\"input\":_vm.onInput}}),_c('small',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\",attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport PrimeVueCalendar from 'primevue/calendar'\r\n\r\n@Component({\r\n components: {\r\n PrimeVueCalendar\r\n }\r\n})\r\nexport default class Calendar extends Vue {\r\n @Prop({ required: true })\r\n public value!: string\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: true })\r\n public placeholder!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false })\r\n public error: string | undefined\r\n\r\n @Prop({ required: false, default: 'date' })\r\n public view!: string\r\n\r\n onInput (newVal: Date) {\r\n if (this.view === 'month') this.$emit('input', (newVal.getMonth() + 1).toString())\r\n else if (this.view === 'year') this.$emit('input', newVal.getFullYear().toString())\r\n else this.$emit('input', newVal)\r\n }\r\n\r\n get dateFormat () {\r\n if (this.view === 'month') return 'mm/yy'\r\n if (this.view === 'year') return 'yy'\r\n return 'dd/mm/yy'\r\n }\r\n\r\n // regex = /^(3[01]|[12][0-9]|0[1-9])(\\/|-)(1[0-2]|0[1-9])\\2(19|20|21)\\d{2}$/\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Calendar.vue?vue&type=template&id=b6d3670a&scoped=true&\"\nimport script from \"./Calendar.vue?vue&type=script&lang=ts&\"\nexport * from \"./Calendar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Calendar.vue?vue&type=style&index=0&id=b6d3670a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6d3670a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",class:_vm.containerClass,on:{\"click\":function($event){return _vm.onClick($event)}}},[_c('div',{staticClass:\"p-hidden-accessible\"},[_c('input',{ref:\"focusInput\",attrs:{\"type\":\"text\",\"id\":_vm.inputId,\"readonly\":\"\",\"disabled\":_vm.disabled,\"tabindex\":_vm.tabindex,\"aria-haspopup\":\"listbox\",\"aria-expanded\":_vm.overlayVisible,\"aria-labelledby\":_vm.ariaLabelledBy},on:{\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"keydown\":_vm.onKeyDown}})]),(_vm.editable)?_c('input',{staticClass:\"p-dropdown-label p-inputtext\",attrs:{\"type\":\"text\",\"disabled\":_vm.disabled,\"placeholder\":_vm.placeholder,\"aria-haspopup\":\"listbox\",\"aria-expanded\":_vm.overlayVisible},domProps:{\"value\":_vm.editableInputValue},on:{\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"input\":_vm.onEditableInput}}):_vm._e(),(!_vm.editable)?_c('span',{class:_vm.labelClass},[_vm._t(\"value\",[_vm._v(\" \"+_vm._s(_vm.label)+\" \")],{\"value\":_vm.value,\"placeholder\":_vm.placeholder})],2):_vm._e(),(_vm.showClear && _vm.value != null)?_c('i',{staticClass:\"p-dropdown-clear-icon pi pi-times\",on:{\"click\":function($event){return _vm.onClearClick($event)}}}):_vm._e(),_c('div',{staticClass:\"p-dropdown-trigger\",attrs:{\"role\":\"button\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":_vm.overlayVisible}},[_vm._t(\"indicator\",[_c('span',{staticClass:\"p-dropdown-trigger-icon pi pi-chevron-down\"})])],2),_c('transition',{attrs:{\"name\":\"p-connected-overlay\"},on:{\"enter\":_vm.onOverlayEnter,\"leave\":_vm.onOverlayLeave}},[(_vm.overlayVisible)?_c('div',{ref:\"overlay\",staticClass:\"p-dropdown-panel p-component\"},[(_vm.filter)?_c('div',{staticClass:\"p-dropdown-header\"},[_c('div',{staticClass:\"p-dropdown-filter-container\"},[_c('input',{ref:\"filterInput\",staticClass:\"p-dropdown-filter p-inputtext p-component\",attrs:{\"type\":\"text\",\"autoComplete\":\"off\",\"placeholder\":_vm.filterPlaceholder},domProps:{\"value\":_vm.filterValue},on:{\"keydown\":_vm.onFilterKeyDown,\"input\":_vm.onFilterChange}}),_c('span',{staticClass:\"p-dropdown-filter-icon pi pi-search\"})])]):_vm._e(),_c('div',{ref:\"itemsWrapper\",staticClass:\"p-dropdown-items-wrapper\",style:({'max-height': _vm.scrollHeight})},[_c('ul',{staticClass:\"p-dropdown-items\",attrs:{\"role\":\"listbox\"}},[_vm._l((_vm.visibleOptions),function(option,i){return _c('li',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:_vm.getOptionRenderKey(option),class:['p-dropdown-item', {'p-highlight': _vm.isSelected(option), 'p-disabled': _vm.isOptionDisabled(option)}],attrs:{\"aria-label\":_vm.getOptionLabel(option),\"role\":\"option\",\"aria-selected\":_vm.isSelected(option)},on:{\"click\":function($event){return _vm.onOptionSelect($event, option)}}},[_vm._t(\"option\",[_vm._v(\" \"+_vm._s(_vm.getOptionLabel(option))+\" \")],{\"option\":option,\"index\":i})],2)}),(_vm.filterValue && (!_vm.visibleOptions || (_vm.visibleOptions && _vm.visibleOptions.length === 0)))?_c('li',{staticClass:\"p-dropdown-empty-message\"},[_vm._v(_vm._s(_vm.emptyFilterMessage))]):_vm._e()],2)])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n {{label}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{getOptionLabel(option)}}\n \n \n {{emptyFilterMessage}}\n \n \n \n \n \n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Dropdown.vue?vue&type=template&id=2d25f92c&\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Dropdown.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nvar lastId = 0;\nfunction _default() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'pv_id_';\n lastId++;\n return \"\".concat(prefix).concat(lastId);\n}\n","/**\n * vee-validate v3.4.15\n * (c) 2023 Abdelrahman Awad\n * @license MIT\n */\nimport Vue from 'vue';\n\nvar code = \"en\";\nvar messages = {\n\talpha: \"The {_field_} field may only contain alphabetic characters\",\n\talpha_num: \"The {_field_} field may only contain alpha-numeric characters\",\n\talpha_dash: \"The {_field_} field may contain alpha-numeric characters as well as dashes and underscores\",\n\talpha_spaces: \"The {_field_} field may only contain alphabetic characters as well as spaces\",\n\tbetween: \"The {_field_} field must be between {min} and {max}\",\n\tconfirmed: \"The {_field_} field confirmation does not match\",\n\tdigits: \"The {_field_} field must be numeric and exactly contain {length} digits\",\n\tdimensions: \"The {_field_} field must be {width} pixels by {height} pixels\",\n\temail: \"The {_field_} field must be a valid email\",\n\texcluded: \"The {_field_} field is not a valid value\",\n\text: \"The {_field_} field is not a valid file\",\n\timage: \"The {_field_} field must be an image\",\n\tinteger: \"The {_field_} field must be an integer\",\n\tlength: \"The {_field_} field must be {length} long\",\n\tmax_value: \"The {_field_} field must be {max} or less\",\n\tmax: \"The {_field_} field may not be greater than {length} characters\",\n\tmimes: \"The {_field_} field must have a valid file type\",\n\tmin_value: \"The {_field_} field must be {min} or more\",\n\tmin: \"The {_field_} field must be at least {length} characters\",\n\tnumeric: \"The {_field_} field may only contain numeric characters\",\n\toneOf: \"The {_field_} field is not a valid value\",\n\tregex: \"The {_field_} field format is invalid\",\n\trequired_if: \"The {_field_} field is required\",\n\trequired: \"The {_field_} field is required\",\n\tsize: \"The {_field_} field size must be less than {size}KB\",\n\tdouble: \"The {_field_} field must be a valid decimal\"\n};\nvar en$1 = {\n\tcode: code,\n\tmessages: messages\n};\n\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha$1 = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[А-ЯЁ]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[Α-ώ]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ\\s]*$/i,\r\n ru: /^[А-ЯЁ\\s]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i,\r\n el: /^[Α-ώ\\s]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF\\s]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA'\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[0-9А-ЯЁ]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[0-9Α-ώ]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,\r\n ru: /^[0-9А-ЯЁ_-]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,\r\n el: /^[0-9Α-ώ_-]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF_-]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA'_-]*$/i\r\n};\n\nvar validate$s = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$s(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alpha$1).some(function (loc) { return alpha$1[loc].test(value); });\r\n }\r\n return (alpha$1[locale] || alpha$1.en).test(value);\r\n};\r\nvar params$k = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha = {\r\n validate: validate$s,\r\n params: params$k\r\n};\n\nvar validate$r = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$r(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$j = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_dash = {\r\n validate: validate$r,\r\n params: params$j\r\n};\n\nvar validate$q = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$q(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$i = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_num = {\r\n validate: validate$q,\r\n params: params$i\r\n};\n\nvar validate$p = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$p(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$h = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_spaces = {\r\n validate: validate$p,\r\n params: params$h\r\n};\n\nvar validate$o = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return !!validate$o(val, { min: min, max: max }); });\r\n }\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$g = [\r\n {\r\n name: 'min'\r\n },\r\n {\r\n name: 'max'\r\n }\r\n];\r\nvar between = {\r\n validate: validate$o,\r\n params: params$g\r\n};\n\nvar validate$n = function (value, _a) {\r\n var target = _a.target;\r\n return String(value) === String(target);\r\n};\r\nvar params$f = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n }\r\n];\r\nvar confirmed = {\r\n validate: validate$n,\r\n params: params$f\r\n};\n\nvar validate$m = function (value, _a) {\r\n var length = _a.length;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$m(val, { length: length }); });\r\n }\r\n var strVal = String(value);\r\n return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$e = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar digits = {\r\n validate: validate$m,\r\n params: params$e\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve(false); };\r\n image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\nvar validate$l = function (files, _a) {\r\n var width = _a.width, height = _a.height;\r\n var list = [];\r\n files = Array.isArray(files) ? files : [files];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return Promise.resolve(false);\r\n }\r\n list.push(files[i]);\r\n }\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n return values.every(function (v) { return v; });\r\n });\r\n};\r\nvar params$d = [\r\n {\r\n name: 'width',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n },\r\n {\r\n name: 'height',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar dimensions = {\r\n validate: validate$l,\r\n params: params$d\r\n};\n\nvar validate$k = function (value, _a) {\r\n var multiple = (_a === void 0 ? {} : _a).multiple;\r\n // eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (multiple && !Array.isArray(value)) {\r\n value = String(value)\r\n .split(',')\r\n .map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return re.test(String(val)); });\r\n }\r\n return re.test(String(value));\r\n};\r\nvar params$c = [\r\n {\r\n name: 'multiple',\r\n default: false\r\n }\r\n];\r\nvar email = {\r\n validate: validate$k,\r\n params: params$c\r\n};\n\nfunction isNaN$1(value) {\r\n // NaN is the one value that does not equal itself.\r\n // eslint-disable-next-line\r\n return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * A reference comparison function with NaN support\r\n */\r\nfunction isRefEqual(lhs, rhs) {\r\n if (isNaN$1(lhs) && isNaN$1(rhs)) {\r\n return true;\r\n }\r\n return lhs === rhs;\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n if (val === '') {\r\n return false;\r\n }\r\n return !isNullOrUndefined(val);\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n if (isCallable(array.findIndex)) {\r\n return array.findIndex(predicate);\r\n }\r\n /* istanbul ignore next */\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n var idx = findIndex(array, predicate);\r\n return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\r\nfunction values(obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n Object.keys(source).forEach(function (key) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n target[key] = source[key];\r\n });\r\n return target;\r\n}\n\nfunction createFlags() {\r\n return {\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: false,\r\n invalid: false,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false,\r\n passed: false,\r\n failed: false\r\n };\r\n}\n\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n if (wait === void 0) { wait = 0; }\r\n if (token === void 0) { token = { cancelled: false }; }\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n var timeout;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var later = function () {\r\n timeout = undefined;\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled)\r\n fn.apply(void 0, args);\r\n };\r\n // because we might want to use Node.js setTimout for SSR.\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n return template.replace(/{([^}]+)}/g, function (_, p) {\r\n return p in values ? values[p] : \"{\" + p + \"}\";\r\n });\r\n}\n\nvar validate$j = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$j(val, options); });\r\n }\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\nvar oneOf = {\r\n validate: validate$j\r\n};\n\nvar validate$i = function (value, args) {\r\n return !validate$j(value, args);\r\n};\r\nvar excluded = {\r\n validate: validate$i\r\n};\n\nvar validate$h = function (files, extensions) {\r\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar ext = {\r\n validate: validate$h\r\n};\n\nvar validate$g = function (files) {\r\n var regex = /\\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar image = {\r\n validate: validate$g\r\n};\n\nvar validate$f = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n validate: validate$f\r\n};\n\nvar validate$e = function (value, _a) {\r\n var other = _a.other;\r\n return value === other;\r\n};\r\nvar params$b = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is = {\r\n validate: validate$e,\r\n params: params$b\r\n};\n\nvar validate$d = function (value, _a) {\r\n var other = _a.other;\r\n return value !== other;\r\n};\r\nvar params$a = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is_not = {\r\n validate: validate$d,\r\n params: params$a\r\n};\n\nvar validate$c = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (typeof value === 'string') {\r\n value = toArray(value);\r\n }\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n return value.length === length;\r\n};\r\nvar params$9 = [\r\n {\r\n name: 'length',\r\n cast: function (value) { return Number(value); }\r\n }\r\n];\r\nvar length = {\r\n validate: validate$c,\r\n params: params$9\r\n};\n\nvar validate$b = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return length >= 0;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$b(val, { length: length }); });\r\n }\r\n return String(value).length <= length;\r\n};\r\nvar params$8 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max = {\r\n validate: validate$b,\r\n params: params$8\r\n};\n\nvar validate$a = function (value, _a) {\r\n var max = _a.max;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$a(val, { max: max }); });\r\n }\r\n return Number(value) <= max;\r\n};\r\nvar params$7 = [\r\n {\r\n name: 'max',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max_value = {\r\n validate: validate$a,\r\n params: params$7\r\n};\n\nvar validate$9 = function (files, mimes) {\r\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.type); });\r\n }\r\n return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n validate: validate$9\r\n};\n\nvar validate$8 = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$8(val, { length: length }); });\r\n }\r\n return String(value).length >= length;\r\n};\r\nvar params$6 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min = {\r\n validate: validate$8,\r\n params: params$6\r\n};\n\nvar validate$7 = function (value, _a) {\r\n var min = _a.min;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$7(val, { min: min }); });\r\n }\r\n return Number(value) >= min;\r\n};\r\nvar params$5 = [\r\n {\r\n name: 'min',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min_value = {\r\n validate: validate$7,\r\n params: params$5\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$6 = function (value) {\r\n var testValue = function (val) {\r\n var strValue = String(val);\r\n return en.test(strValue) || ar.test(strValue);\r\n };\r\n if (Array.isArray(value)) {\r\n return value.every(testValue);\r\n }\r\n return testValue(value);\r\n};\r\nvar numeric = {\r\n validate: validate$6\r\n};\n\nvar validate$5 = function (value, _a) {\r\n var regex = _a.regex;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$5(val, { regex: regex }); });\r\n }\r\n return regex.test(String(value));\r\n};\r\nvar params$4 = [\r\n {\r\n name: 'regex',\r\n cast: function (value) {\r\n if (typeof value === 'string') {\r\n return new RegExp(value);\r\n }\r\n return value;\r\n }\r\n }\r\n];\r\nvar regex = {\r\n validate: validate$5,\r\n params: params$4\r\n};\n\nvar validate$4 = function (value, _a) {\r\n var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n var result = {\r\n valid: false,\r\n required: true\r\n };\r\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n return result;\r\n }\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && !allowFalse) {\r\n return result;\r\n }\r\n result.valid = !!String(value).trim().length;\r\n return result;\r\n};\r\nvar computesRequired$1 = true;\r\nvar params$3 = [\r\n {\r\n name: 'allowFalse',\r\n default: true\r\n }\r\n];\r\nvar required = {\r\n validate: validate$4,\r\n params: params$3,\r\n computesRequired: computesRequired$1\r\n};\n\nvar testEmpty = function (value) {\r\n return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$3 = function (value, _a) {\r\n var target = _a.target, values = _a.values;\r\n var required;\r\n if (values && values.length) {\r\n if (!Array.isArray(values) && typeof values === 'string') {\r\n values = [values];\r\n }\r\n // eslint-disable-next-line\r\n required = values.some(function (val) { return val == String(target).trim(); });\r\n }\r\n else {\r\n required = !testEmpty(target);\r\n }\r\n if (!required) {\r\n return {\r\n valid: true,\r\n required: required\r\n };\r\n }\r\n return {\r\n valid: !testEmpty(value),\r\n required: required\r\n };\r\n};\r\nvar params$2 = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n },\r\n {\r\n name: 'values'\r\n }\r\n];\r\nvar computesRequired = true;\r\nvar required_if = {\r\n validate: validate$3,\r\n params: params$2,\r\n computesRequired: computesRequired\r\n};\n\nvar validate$2 = function (files, _a) {\r\n var size = _a.size;\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n var nSize = size * 1024;\r\n if (!Array.isArray(files)) {\r\n return files.size <= nSize;\r\n }\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nvar params$1 = [\r\n {\r\n name: 'size',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar size = {\r\n validate: validate$2,\r\n params: params$1\r\n};\n\nvar validate$1 = function (value, params) {\r\n var _a = params || {}, _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, _c = _a.separator, separator = _c === void 0 ? 'dot' : _c;\r\n var delimiterRegexPart = separator === 'comma' ? ',?' : '\\\\.?';\r\n var decimalRegexPart = decimals === 0 ? '\\\\d*' : \"(\\\\d{\" + decimals + \"})?\";\r\n var regex = new RegExp(\"^-?\\\\d+\" + delimiterRegexPart + decimalRegexPart + \"$\");\r\n return Array.isArray(value) ? value.every(function (val) { return regex.test(String(val)); }) : regex.test(String(value));\r\n};\r\nvar params = [\r\n {\r\n name: 'decimals',\r\n default: 0\r\n },\r\n {\r\n name: 'separator',\r\n default: 'dot'\r\n }\r\n];\r\nvar double = {\r\n validate: validate$1,\r\n params: params\r\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n __proto__: null,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha,\n between: between,\n confirmed: confirmed,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n oneOf: oneOf,\n integer: integer,\n length: length,\n is_not: is_not,\n is: is,\n max: max,\n max_value: max_value,\n mimes: mimes,\n min: min,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n required_if: required_if,\n size: size,\n double: double\n});\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nvar DEFAULT_CONFIG = {\r\n defaultMessage: \"{_field_} is not valid.\",\r\n skipOptional: true,\r\n classes: {\r\n touched: 'touched',\r\n untouched: 'untouched',\r\n valid: 'valid',\r\n invalid: 'invalid',\r\n pristine: 'pristine',\r\n dirty: 'dirty' // control has been interacted with\r\n },\r\n bails: true,\r\n mode: 'aggressive',\r\n useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n setConfig(cfg);\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n function Dictionary(locale, dictionary) {\r\n this.container = {};\r\n this.locale = locale;\r\n this.merge(dictionary);\r\n }\r\n Dictionary.prototype.resolve = function (field, rule, values) {\r\n return this.format(this.locale, field, rule, values);\r\n };\r\n Dictionary.prototype.format = function (locale, field, rule, values) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var message;\r\n // find if specific message for that field was specified.\r\n var fieldContainer = (_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule];\r\n var messageContainer = (_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule];\r\n message = fieldContainer || messageContainer || '';\r\n if (!message) {\r\n message = '{_field_} is not valid';\r\n }\r\n field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n };\r\n Dictionary.prototype.merge = function (dictionary) {\r\n merge(this.container, dictionary);\r\n };\r\n Dictionary.prototype.hasRule = function (name) {\r\n var _a, _b;\r\n return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n };\r\n return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n var _a;\r\n if (!DICTIONARY) {\r\n DICTIONARY = new Dictionary('en', {});\r\n setConfig({\r\n defaultMessage: function (field, values) {\r\n return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n }\r\n });\r\n }\r\n if (typeof locale === 'string') {\r\n DICTIONARY.locale = locale;\r\n if (dictionary) {\r\n DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n }\r\n localeChanged();\r\n return;\r\n }\r\n DICTIONARY.merge(locale);\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n var _a;\r\n if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n schema.params = schema.params.map(function (param) {\r\n if (typeof param === 'string') {\r\n return { name: param };\r\n }\r\n return param;\r\n });\r\n }\r\n return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n function RuleContainer() {\r\n }\r\n RuleContainer.extend = function (name, schema) {\r\n // if rule already exists, overwrite it.\r\n var rule = normalizeSchema(schema);\r\n if (RULES[name]) {\r\n RULES[name] = merge(RULES[name], schema);\r\n return;\r\n }\r\n RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n };\r\n RuleContainer.isLazy = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n };\r\n RuleContainer.isRequireRule = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n };\r\n RuleContainer.getRuleDefinition = function (ruleName) {\r\n return RULES[ruleName];\r\n };\r\n return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(name, schema);\r\n // Full schema object.\r\n if (typeof schema === 'object') {\r\n RuleContainer.extend(name, schema);\r\n return;\r\n }\r\n RuleContainer.extend(name, {\r\n validate: schema\r\n });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n if (isCallable(validator.validate)) {\r\n return;\r\n }\r\n if (RuleContainer.getRuleDefinition(name)) {\r\n return;\r\n }\r\n throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar aggressive = function () { return ({\r\n on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n on: ['change', 'blur']\r\n}); };\r\nvar eager = function (_a) {\r\n var errors = _a.errors;\r\n if (errors.length) {\r\n return {\r\n on: ['input', 'change']\r\n };\r\n }\r\n return {\r\n on: ['change', 'blur']\r\n };\r\n};\r\nvar passive = function () { return ({\r\n on: []\r\n}); };\r\nvar modes = {\r\n aggressive: aggressive,\r\n eager: eager,\r\n passive: passive,\r\n lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n setConfig({ mode: mode });\r\n if (!implementation) {\r\n return;\r\n }\r\n if (!isCallable(implementation)) {\r\n throw new Error('A mode implementation must be a function');\r\n }\r\n modes[mode] = implementation;\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n var acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n if (rules[curr] === true) {\r\n params = [];\r\n }\r\n else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else {\r\n params = [rules[curr]];\r\n }\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(curr, params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return acc;\r\n }\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\nfunction buildParams(ruleName, provided) {\r\n var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n if (!ruleSchema) {\r\n return provided;\r\n }\r\n var params = {};\r\n if (!ruleSchema.params && !Array.isArray(provided)) {\r\n throw new Error('You provided an object params to a rule that has no defined schema.');\r\n }\r\n // Rule probably uses an array for their args, keep it as is.\r\n if (Array.isArray(provided) && !ruleSchema.params) {\r\n return provided;\r\n }\r\n var definedParams;\r\n // collect the params schema.\r\n if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n var lastDefinedParam_1;\r\n // collect any additional parameters in the last item.\r\n definedParams = provided.map(function (_, idx) {\r\n var _a;\r\n var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n lastDefinedParam_1 = param || lastDefinedParam_1;\r\n if (!param) {\r\n param = lastDefinedParam_1;\r\n }\r\n return param;\r\n });\r\n }\r\n else {\r\n definedParams = ruleSchema.params;\r\n }\r\n // Match the provided array length with a temporary schema.\r\n for (var i = 0; i < definedParams.length; i++) {\r\n var options = definedParams[i];\r\n var value = options.default;\r\n // if the provided is an array, map element value.\r\n if (Array.isArray(provided)) {\r\n if (i in provided) {\r\n value = provided[i];\r\n }\r\n }\r\n else {\r\n // If the param exists in the provided object.\r\n if (options.name in provided) {\r\n value = provided[options.name];\r\n // if the provided is the first param value.\r\n }\r\n else if (definedParams.length === 1) {\r\n value = provided;\r\n }\r\n }\r\n // if the param is a target, resolve the target value.\r\n if (options.isTarget) {\r\n value = createLocator(value, options.cast);\r\n }\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n value = createLocator(value.slice(1), options.cast);\r\n }\r\n // If there is a transformer defined.\r\n if (!isLocator(value) && options.cast) {\r\n value = options.cast(value);\r\n }\r\n // already been set, probably multiple values.\r\n if (params[options.name]) {\r\n params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n params[options.name].push(value);\r\n }\r\n else {\r\n // set the value.\r\n params[options.name] = value;\r\n }\r\n }\r\n return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n if (includes(rule, ':')) {\r\n params = rule\r\n .split(':')\r\n .slice(1)\r\n .join(':')\r\n .split(',');\r\n }\r\n return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n var locator = function (crossTable) {\r\n var val = crossTable[value];\r\n return castFn ? castFn(val) : val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(function (param) {\r\n return isLocator(param) || (typeof param === 'string' && param[0] === '@');\r\n });\r\n }\r\n return Object.keys(params)\r\n .filter(function (key) { return isLocator(params[key]); })\r\n .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n forceRequired: false,\r\n crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n };\r\n return [4 /*yield*/, _validate(field, value, options)];\r\n case 1:\r\n result = _a.sent();\r\n errors = [];\r\n failedRules = {};\r\n regenerateMap = {};\r\n result.errors.forEach(function (e) {\r\n var msg = e.msg();\r\n errors.push(msg);\r\n failedRules[e.rule] = msg;\r\n regenerateMap[e.rule] = e.msg;\r\n });\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n errors: errors,\r\n failedRules: failedRules,\r\n regenerateMap: regenerateMap\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _c, shouldSkip, required, errors, rules, length, i, rule, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n case 1:\r\n _c = _d.sent(), shouldSkip = _c.shouldSkip, required = _c.required, errors = _c.errors;\r\n if (shouldSkip) {\r\n return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n length = rules.length;\r\n i = 0;\r\n _d.label = 2;\r\n case 2:\r\n if (!(i < length)) return [3 /*break*/, 5];\r\n if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n return [3 /*break*/, 4];\r\n }\r\n rule = rules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 3:\r\n result = _d.sent();\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n valid: false,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _d.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n length = requireRules.length;\r\n errors = [];\r\n isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n rule = requireRules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 2:\r\n result = _a.sent();\r\n if (!isObject(result)) {\r\n throw new Error('Require rules has to return an object (see docs)');\r\n }\r\n if (result.required !== undefined) {\r\n isRequired = result.required;\r\n }\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n // Exit early as the field is required and failed validation.\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n shouldSkip: true,\r\n required: result.required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // field is configured to run through the pipeline regardless\r\n if (!field.bails && !isEmptyAndOptional) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // skip if the field is not required and has an empty value.\r\n return [2 /*return*/, {\r\n shouldSkip: !isRequired && isEmpty,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ruleSchema, normalizedValue, params, result, values_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n if (!ruleSchema || !ruleSchema.validate) {\r\n throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n }\r\n normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n params = fillTargetValues(rule.params, field.crossTable);\r\n return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n case 1:\r\n result = _a.sent();\r\n if (typeof result === 'string') {\r\n values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n return [2 /*return*/, {\r\n valid: false,\r\n error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n }];\r\n }\r\n if (!isObject(result)) {\r\n result = { valid: result };\r\n }\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n var _a;\r\n var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n return {\r\n msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n rule: ruleName\r\n };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n var params = ruleSchema.params;\r\n if (!params) {\r\n return {};\r\n }\r\n var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n if (numTargets <= 0) {\r\n return {};\r\n }\r\n var names = {};\r\n var ruleConfig = field.rules[ruleName];\r\n if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n ruleConfig = params.map(function (param) {\r\n return ruleConfig[param.name];\r\n });\r\n }\r\n for (var index = 0; index < params.length; index++) {\r\n var param = params[index];\r\n var key = ruleConfig[index];\r\n if (!isLocator(key)) {\r\n continue;\r\n }\r\n key = key.__locatorRef;\r\n var name_1 = field.names[key] || key;\r\n names[param.name] = name_1;\r\n names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n }\r\n return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n var userTargets = {};\r\n var rules = field.rules[ruleName];\r\n var params = ruleSchema.params || [];\r\n // early return if no rules\r\n if (!rules) {\r\n return {};\r\n }\r\n // check all rules to convert targets\r\n Object.keys(rules).forEach(function (key, index) {\r\n // get the rule\r\n var rule = rules[key];\r\n if (!isLocator(rule)) {\r\n return {};\r\n }\r\n // get associated parameter\r\n var param = params[index];\r\n if (!param) {\r\n return {};\r\n }\r\n // grab the name of the target\r\n var name = rule.__locatorRef;\r\n userTargets[param.name] = field.names[name] || name;\r\n userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n });\r\n return {\r\n userTargets: userTargets,\r\n userMessage: userMessage\r\n };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n if (typeof template === 'function') {\r\n return template(field, values);\r\n }\r\n return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n if (Array.isArray(params)) {\r\n return params.map(function (param) {\r\n var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;\r\n if (targetPart in crossTable) {\r\n return crossTable[targetPart];\r\n }\r\n return param;\r\n });\r\n }\r\n var values = {};\r\n var normalize = function (value) {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n Object.keys(params).forEach(function (param) {\r\n values[param] = normalize(params[param]);\r\n });\r\n return values;\r\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEvent = function (evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n var _a, _b;\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n var input = value.target;\r\n if (input.type === 'file' && input.files) {\r\n return toArray(input.files);\r\n }\r\n // If the input has a `v-model.number` modifier applied.\r\n if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n // as per the spec the v-model.number uses parseFloat\r\n var valueAsNumber = parseFloat(input.value);\r\n if (isNaN$1(valueAsNumber)) {\r\n return input.value;\r\n }\r\n return valueAsNumber;\r\n }\r\n if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n return trimmedValue;\r\n }\r\n return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n var _a;\r\n var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n // it will fallback to being a text input per browsers spec.\r\n if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n return true;\r\n }\r\n if (vnode.tag === 'textarea') {\r\n return true;\r\n }\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n// return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n if (!vnode.data) {\r\n return undefined;\r\n }\r\n // Component Model\r\n // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n // eslint-disable-next-line\r\n var nonStandardVNodeData = vnode.data;\r\n if ('model' in nonStandardVNodeData) {\r\n return nonStandardVNodeData.model;\r\n }\r\n if (!vnode.data.directives) {\r\n return undefined;\r\n }\r\n return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n var _a, _b;\r\n var model = findModel(vnode);\r\n if (model) {\r\n return { value: model.value };\r\n }\r\n var config = findModelConfig(vnode);\r\n var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n var propsDataWithValue = vnode.componentOptions.propsData;\r\n return { value: propsDataWithValue[prop] };\r\n }\r\n if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n return { value: vnode.data.domProps.value };\r\n }\r\n return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n /* istanbul ignore next */\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n return [];\r\n}\r\nfunction findInputNodes(vnode) {\r\n if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n return [vnode];\r\n }\r\n var children = extractChildren(vnode);\r\n return children.reduce(function (nodes, node) {\r\n var candidates = findInputNodes(node);\r\n if (candidates.length) {\r\n nodes.push.apply(nodes, candidates);\r\n }\r\n return nodes;\r\n }, []);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n /* istanbul ignore next */\r\n if (!vnode.componentOptions)\r\n return null;\r\n // This is also not typed in the standard Vue TS.\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n return;\r\n }\r\n // Is an invoker.\r\n if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n var invoker = obj[eventName];\r\n invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n if (!includes(invoker.fns, handler)) {\r\n invoker.fns.push(handler);\r\n }\r\n return;\r\n }\r\n if (isCallable(obj[eventName])) {\r\n var prev = obj[eventName];\r\n obj[eventName] = [prev];\r\n }\r\n if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n obj[eventName].push(handler);\r\n }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.data) {\r\n node.data = {};\r\n }\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions) {\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n return;\r\n }\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n var _a;\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n return event_1 || 'input';\r\n }\r\n // Lazy Models typically use change event\r\n if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n return 'change';\r\n }\r\n // is a textual-type input.\r\n if (isTextInput(vnode)) {\r\n return 'input';\r\n }\r\n return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n var acc = [];\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n return arr.concat(slots[key]);\r\n }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n var _a;\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n var rules = {};\r\n if (!attrs)\r\n return rules;\r\n if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n rules.email = ['multiple' in attrs];\r\n }\r\n if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n rules.regex = attrs.pattern;\r\n }\r\n if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n rules.max = attrs.maxlength;\r\n }\r\n if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n rules.min = attrs.minlength;\r\n }\r\n if (attrs.type === 'number') {\r\n if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n rules.min_value = Number(attrs.min);\r\n }\r\n if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n rules.max_value = Number(attrs.max);\r\n }\r\n }\r\n return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n var _a;\r\n var htmlTags = ['input', 'select', 'textarea'];\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n return {};\r\n }\r\n var rules = {};\r\n if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n }\r\n if (isTextInput(vnode)) {\r\n return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n }\r\n return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n if (context.$scopedSlots.default) {\r\n return context.$scopedSlots.default(slotProps) || [];\r\n }\r\n return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n // when an immediate/initial validation is needed and wasn't done before.\r\n if (!ctx._ignoreImmediate && ctx.immediate) {\r\n return true;\r\n }\r\n // when the value changes for whatever reason.\r\n if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {\r\n return true;\r\n }\r\n // when it needs validation due to props/cross-fields changes.\r\n if (ctx._needsValidation) {\r\n return true;\r\n }\r\n // when the initial value is undefined and the field wasn't rendered yet.\r\n if (!ctx.initialized && value === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return ctx.validate.apply(ctx, args);\r\n }, ariaInput: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false',\r\n 'aria-errormessage': \"vee_\" + ctx.id\r\n }, ariaMsg: {\r\n id: \"vee_\" + ctx.id,\r\n 'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n if (!vm.initialized) {\r\n vm.initialValue = value;\r\n }\r\n var validateNow = shouldValidate(vm, value);\r\n vm._needsValidation = false;\r\n vm.value = value;\r\n vm._ignoreImmediate = true;\r\n if (!validateNow) {\r\n return;\r\n }\r\n var validate = function () {\r\n if (vm.immediate || vm.flags.validated) {\r\n return triggerThreadSafeValidation(vm);\r\n }\r\n vm.validateSilent();\r\n };\r\n if (vm.initialized) {\r\n validate();\r\n return;\r\n }\r\n vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n var pendingPromise = vm.validateSilent();\r\n // avoids race conditions between successive validations.\r\n vm._pendingValidation = pendingPromise;\r\n return pendingPromise.then(function (result) {\r\n if (pendingPromise === vm._pendingValidation) {\r\n vm.applyResult(result);\r\n vm._pendingValidation = undefined;\r\n }\r\n return result;\r\n });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n if (!vm.$veeOnInput) {\r\n vm.$veeOnInput = function (e) {\r\n vm.syncValue(e); // track and keep the value updated.\r\n vm.setFlags({ dirty: true, pristine: false });\r\n };\r\n }\r\n var onInput = vm.$veeOnInput;\r\n if (!vm.$veeOnBlur) {\r\n vm.$veeOnBlur = function () {\r\n vm.setFlags({ touched: true, untouched: false });\r\n };\r\n }\r\n // Blur event listener.\r\n var onBlur = vm.$veeOnBlur;\r\n var onValidate = vm.$veeHandler;\r\n var mode = computeModeSetting(vm);\r\n // Handle debounce changes.\r\n if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n onValidate = debounce(function () {\r\n vm.$nextTick(function () {\r\n if (!vm._pendingReset) {\r\n triggerThreadSafeValidation(vm);\r\n }\r\n vm._pendingReset = false;\r\n });\r\n }, mode.debounce || vm.debounce);\r\n // Cache the handler so we don't create it each time.\r\n vm.$veeHandler = onValidate;\r\n // cache the debounce value so we detect if it was changed.\r\n vm.$veeDebounce = vm.debounce;\r\n }\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n var value = findValue(node);\r\n // cache the input eventName.\r\n vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n addVNodeListener(node, vm._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n // add the validation listeners.\r\n vm.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data$1() {\r\n var errors = [];\r\n var fieldName = '';\r\n var defaultValues = {\r\n errors: errors,\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n failedRules: {},\r\n isActive: true,\r\n fieldName: fieldName,\r\n id: ''\r\n };\r\n return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n name: 'ValidationProvider',\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n mode: {\r\n type: [String, Function],\r\n default: function () {\r\n return getConfig().mode;\r\n }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return getConfig().bails; }\r\n },\r\n skipIfEmpty: {\r\n type: Boolean,\r\n default: function () { return getConfig().skipOptional; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: 0\r\n },\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n customMessages: {\r\n type: Object,\r\n default: function () {\r\n return {};\r\n }\r\n },\r\n detectInput: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function (val, oldVal) {\r\n this._needsValidation = !fastDeepEqual(val, oldVal);\r\n }\r\n }\r\n },\r\n data: data$1,\r\n computed: {\r\n fieldDeps: function () {\r\n var _this = this;\r\n return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {\r\n return isLocator(dep) ? dep.__locatorRef : dep.slice(1);\r\n });\r\n acc.push.apply(acc, deps);\r\n deps.forEach(function (depName) {\r\n watchCrossFieldDep(_this, depName);\r\n });\r\n return acc;\r\n }, []);\r\n },\r\n normalizedEvents: function () {\r\n var _this = this;\r\n var on = computeModeSetting(this).on;\r\n return (on || []).map(function (e) {\r\n if (e === 'input') {\r\n return _this._inputEventName;\r\n }\r\n return e;\r\n });\r\n },\r\n isRequired: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n this.flags.required = !!isRequired;\r\n return isRequired;\r\n },\r\n classes: function () {\r\n var names = getConfig().classes;\r\n return computeClassObj(names, this.flags);\r\n },\r\n normalizedRules: function () {\r\n return normalizeRules(this.rules);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n var onLocaleChanged = function () {\r\n if (!_this.flags.validated) {\r\n return;\r\n }\r\n var regenerateMap = _this._regenerateMap;\r\n if (regenerateMap) {\r\n var errors_1 = [];\r\n var failedRules_1 = {};\r\n Object.keys(regenerateMap).forEach(function (rule) {\r\n var msg = regenerateMap[rule]();\r\n errors_1.push(msg);\r\n failedRules_1[rule] = msg;\r\n });\r\n _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n return;\r\n }\r\n _this.validate();\r\n };\r\n EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n this.$on('hook:beforeDestroy', function () {\r\n EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n });\r\n },\r\n render: function (h) {\r\n var _this = this;\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n var children = normalizeChildren(this, ctx);\r\n // Automatic v-model detection\r\n if (this.detectInput) {\r\n var inputs = findInputNodes(children);\r\n if (inputs.length) {\r\n inputs.forEach(function (input, idx) {\r\n var _a, _b, _c, _d, _e, _f;\r\n // If the elements are not checkboxes and there are more input nodes\r\n if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {\r\n return;\r\n }\r\n var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n if (!fastDeepEqual(_this._resolvedRules, resolved)) {\r\n _this._needsValidation = true;\r\n }\r\n if (isHTMLNode(input)) {\r\n _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);\r\n }\r\n _this._resolvedRules = resolved;\r\n addListeners(_this, input);\r\n });\r\n }\r\n }\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n },\r\n beforeDestroy: function () {\r\n // cleanup reference.\r\n this.$_veeObserver.unobserve(this.id);\r\n },\r\n activated: function () {\r\n this.isActive = true;\r\n },\r\n deactivated: function () {\r\n this.isActive = false;\r\n },\r\n methods: {\r\n setFlags: function (flags) {\r\n var _this = this;\r\n Object.keys(flags).forEach(function (flag) {\r\n _this.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function (v) {\r\n var value = normalizeEventValue(v);\r\n this.value = value;\r\n this.flags.changed = !fastDeepEqual(this.initialValue, value);\r\n },\r\n reset: function () {\r\n var _this = this;\r\n this.errors = [];\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n flags.required = this.isRequired;\r\n this.setFlags(flags);\r\n this.failedRules = {};\r\n this.validateSilent();\r\n this._pendingValidation = undefined;\r\n this._pendingReset = true;\r\n setTimeout(function () {\r\n _this._pendingReset = false;\r\n }, this.debounce);\r\n },\r\n validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (args.length > 0) {\r\n this.syncValue(args[0]);\r\n }\r\n return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n });\r\n });\r\n },\r\n validateSilent: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var rules, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.setFlags({ pending: true });\r\n rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n Object.defineProperty(rules, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n case 1:\r\n result = _a.sent();\r\n this.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n invalid: !result.valid\r\n });\r\n if (result.required !== undefined) {\r\n this.setFlags({\r\n required: result.required\r\n });\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n setErrors: function (errors) {\r\n this.applyResult({ errors: errors, failedRules: {} });\r\n },\r\n applyResult: function (_a) {\r\n var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n this.errors = errors;\r\n this._regenerateMap = regenerateMap;\r\n this.failedRules = __assign({}, (failedRules || {}));\r\n this.setFlags({\r\n valid: !errors.length,\r\n passed: !errors.length,\r\n invalid: !!errors.length,\r\n failed: !!errors.length,\r\n validated: true,\r\n changed: !fastDeepEqual(this.value, this.initialValue)\r\n });\r\n },\r\n registerField: function () {\r\n updateRenderingContextRefs(this);\r\n },\r\n checkComputesRequiredState: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n return isRequired;\r\n }\r\n }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n var acc = {};\r\n var keys = Object.keys(flags);\r\n var length = keys.length;\r\n var _loop_1 = function (i) {\r\n var flag = keys[i];\r\n var className = (names && names[flag]) || flag;\r\n var value = flags[flag];\r\n if (isNullOrUndefined(value)) {\r\n return \"continue\";\r\n }\r\n if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n return \"continue\";\r\n }\r\n if (typeof className === 'string') {\r\n acc[className] = value;\r\n }\r\n else if (Array.isArray(className)) {\r\n className.forEach(function (cls) {\r\n acc[cls] = value;\r\n });\r\n }\r\n };\r\n for (var i = 0; i < length; i++) {\r\n _loop_1(i);\r\n }\r\n return acc;\r\n}\r\nfunction createLookup(vm) {\r\n var providers = vm.$_veeObserver.refs;\r\n var reduced = {\r\n names: {},\r\n values: {}\r\n };\r\n return vm.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n acc.values[depName] = providers[depName].value;\r\n acc.names[depName] = providers[depName].name;\r\n return acc;\r\n }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n if (vm.vid) {\r\n return vm.vid;\r\n }\r\n if (vm.name) {\r\n return vm.name;\r\n }\r\n if (vm.id) {\r\n return vm.id;\r\n }\r\n if (vm.fieldName) {\r\n return vm.fieldName;\r\n }\r\n PROVIDER_COUNTER++;\r\n return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n var providedId = extractId(vm);\r\n var id = vm.id;\r\n // Nothing has changed.\r\n if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n return;\r\n }\r\n // vid was changed.\r\n if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n vm.$_veeObserver.unobserve(id);\r\n }\r\n vm.id = providedId;\r\n vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n return {\r\n refs: {},\r\n observe: function (vm) {\r\n this.refs[vm.id] = vm;\r\n },\r\n unobserve: function (id) {\r\n delete this.refs[id];\r\n }\r\n };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n if (withHooks === void 0) { withHooks = true; }\r\n var providers = ctx.$_veeObserver.refs;\r\n if (!ctx._veeWatchers) {\r\n ctx._veeWatchers = {};\r\n }\r\n if (!providers[depName] && withHooks) {\r\n return ctx.$once('hook:mounted', function () {\r\n watchCrossFieldDep(ctx, depName, false);\r\n });\r\n }\r\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n var isComputesRequired = ctx.checkComputesRequiredState();\r\n if (ctx.flags.validated) {\r\n ctx._needsValidation = true;\r\n ctx.validate();\r\n }\r\n // Validate dependent field silently if it has rules with computesRequired\r\n if (isComputesRequired && !ctx.flags.validated) {\r\n ctx.validateSilent();\r\n }\r\n });\r\n }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n ['pristine', 'every'],\r\n ['dirty', 'some'],\r\n ['touched', 'some'],\r\n ['untouched', 'every'],\r\n ['valid', 'every'],\r\n ['invalid', 'some'],\r\n ['pending', 'some'],\r\n ['validated', 'every'],\r\n ['changed', 'some'],\r\n ['passed', 'every'],\r\n ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data() {\r\n var refs = {};\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n // FIXME: Not sure of this one can be typed, circular type reference.\r\n var observers = [];\r\n return {\r\n id: '',\r\n refs: refs,\r\n observers: observers,\r\n errors: errors,\r\n flags: flags,\r\n fields: fields\r\n };\r\n}\r\nfunction provideSelf() {\r\n return {\r\n $_veeObserver: this\r\n };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n name: 'ValidationObserver',\r\n provide: provideSelf,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n return null;\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n vid: {\r\n type: String,\r\n default: function () {\r\n return \"obs_\" + OBSERVER_COUNTER++;\r\n }\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: data,\r\n created: function () {\r\n var _this = this;\r\n this.id = this.vid;\r\n register(this);\r\n var onChange = debounce(function (_a) {\r\n var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n _this.errors = errors;\r\n _this.flags = flags;\r\n _this.fields = fields;\r\n }, 16);\r\n this.$watch(computeObserverState, onChange);\r\n },\r\n activated: function () {\r\n register(this);\r\n },\r\n deactivated: function () {\r\n unregister(this);\r\n },\r\n beforeDestroy: function () {\r\n unregister(this);\r\n },\r\n render: function (h) {\r\n var children = normalizeChildren(this, prepareSlotProps(this));\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n },\r\n methods: {\r\n observe: function (subscriber, kind) {\r\n var _a;\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'observer') {\r\n this.observers.push(subscriber);\r\n return;\r\n }\r\n this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n },\r\n unobserve: function (id, kind) {\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'provider') {\r\n var provider = this.refs[id];\r\n if (!provider) {\r\n return;\r\n }\r\n this.$delete(this.refs, id);\r\n return;\r\n }\r\n var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n if (idx !== -1) {\r\n this.observers.splice(idx, 1);\r\n }\r\n },\r\n validateWithInfo: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results, isValid, _c, errors, flags, fields;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n .filter(function (r) { return !r.disabled; })\r\n .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n case 1:\r\n results = _d.sent();\r\n isValid = results.every(function (r) { return r; });\r\n _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;\r\n this.errors = errors;\r\n this.flags = flags;\r\n this.fields = fields;\r\n return [2 /*return*/, {\r\n errors: errors,\r\n flags: flags,\r\n fields: fields,\r\n isValid: isValid\r\n }];\r\n }\r\n });\r\n });\r\n },\r\n validate: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];\r\n case 1:\r\n isValid = (_c.sent()).isValid;\r\n return [2 /*return*/, isValid];\r\n }\r\n });\r\n });\r\n },\r\n handleSubmit: function (cb) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validate()];\r\n case 1:\r\n isValid = _a.sent();\r\n if (!isValid || !cb) {\r\n return [2 /*return*/];\r\n }\r\n return [2 /*return*/, cb()];\r\n }\r\n });\r\n });\r\n },\r\n reset: function () {\r\n return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n },\r\n setErrors: function (errors) {\r\n var _this = this;\r\n Object.keys(errors).forEach(function (key) {\r\n var provider = _this.refs[key];\r\n if (!provider)\r\n return;\r\n var errorArr = errors[key] || [];\r\n errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n provider.setErrors(errorArr);\r\n });\r\n this.observers.forEach(function (observer) {\r\n observer.setErrors(errors);\r\n });\r\n }\r\n }\r\n});\r\nfunction unregister(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n }\r\n}\r\nfunction register(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.observe(vm, 'observer');\r\n }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, validateWithInfo: vm.validateWithInfo, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n var vms = __spreadArrays(values(this.refs), this.observers.filter(function (o) { return !o.disabled; }));\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n var length = vms.length;\r\n for (var i = 0; i < length; i++) {\r\n var vm = vms[i];\r\n // validation provider\r\n if (Array.isArray(vm.errors)) {\r\n errors[vm.id] = vm.errors;\r\n fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n continue;\r\n }\r\n // Nested observer, merge errors and fields\r\n errors = __assign(__assign({}, errors), vm.errors);\r\n fields = __assign(__assign({}, fields), vm.fields);\r\n }\r\n FLAGS_STRATEGIES.forEach(function (_a) {\r\n var flag = _a[0], method = _a[1];\r\n flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n });\r\n return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n var _a;\r\n if (mapProps === void 0) { mapProps = identity; }\r\n var options = 'options' in component ? component.options : component;\r\n var providerOpts = ValidationProvider.options;\r\n var hoc = {\r\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n props: __assign({}, providerOpts.props),\r\n data: providerOpts.data,\r\n computed: __assign({}, providerOpts.computed),\r\n methods: __assign({}, providerOpts.methods),\r\n beforeDestroy: providerOpts.beforeDestroy,\r\n inject: providerOpts.inject\r\n };\r\n var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n hoc.render = function (h) {\r\n var _a;\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = __assign({}, this.$listeners);\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n var value = findValue(this.$vnode);\r\n onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners,\r\n scopedSlots: this.$scopedSlots\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n return hoc;\r\n}\n\nvar version = '3.4.15';\r\n// Install all rules.\r\nvar RulesAsList = Object.keys(Rules).map(function (key) { return ({ schema: Rules[key], name: key }); });\r\nRulesAsList.forEach(function (_a) {\r\n var name = _a.name, schema = _a.schema;\r\n extend(name, schema);\r\n});\r\n// Install locale\r\nlocalize('en', en$1);\n\nexport { Rules, ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosAndDocuments.vue?vue&type=style&index=0&id=7aaf7c0b&scoped=true&lang=css&\"","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","'use strict';\nmodule.exports = require('./AutoComplete.vue');","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssessmentDetails.vue?vue&type=style&index=0&id=7196bb11&scoped=true&lang=css&\"","'use strict';\nmodule.exports = require('./Checkbox.vue');","'use strict';\nmodule.exports = require('./Calendar.vue');","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","/*!\n * FilePondPluginPdfPreview 1.0.2\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit undefined for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global =\n typeof globalThis !== 'undefined' ? globalThis : global || self),\n (global.FilePondPluginPdfPreview = factory()));\n})(this, function () {\n 'use strict';\n\n const isPreviewablePdf = (file) => /pdf$/.test(file.type);\n\n \n const createPdfView = (_) =>\n _.utils.createView({\n name: 'pdf-preview',\n tag: 'div',\n ignoreRect: true,\n create: ({ root, props }) => {\n // get item\n const item = root.query('GET_ITEM', {\n id: props.id,\n });\n\n if (isPreviewablePdf(item.file)) {\n const numPdfPreviewHeight = root.query('GET_PDF_PREVIEW_HEIGHT'); \n root.ref.pdf = document.createElement('object');\n root.ref.pdf.setAttribute('height', numPdfPreviewHeight);\n root.ref.pdf.setAttribute('width', \"100%\");//320\n root.ref.pdf.setAttribute(\n 'style',\n 'position:absolute;left:0;right:0;margin:auto;padding-top:unset;' +\n ((numPdfPreviewHeight) ? ('height:' + numPdfPreviewHeight + 'px;') : '') \n \n );\n root.element.appendChild(root.ref.pdf);\n } \n },\n write: _.utils.createRoute({\n DID_PDF_PREVIEW_LOAD: ({ root, props }) => {\n const { id } = props; \n // get item\n const item = root.query('GET_ITEM', {\n id: id,\n });\n if (!item) return;\n let URL = window.URL || window.webkitURL;\n let blob = new Blob([item.file], {\n type: item.file.type,\n });\n root.ref.pdf.type = item.file.type;\n if (isPreviewablePdf(item.file)) {\n const sPdfComponentExtraParams = root.query('GET_PDF_COMPONENT_EXTRA_PARAMS');\n root.ref.pdf.data = URL.createObjectURL(blob) + ((!sPdfComponentExtraParams)?\"\":(\"#?\"+sPdfComponentExtraParams));\n }\n //else root.ref.pdf.src = URL.createObjectURL(blob);\n\n root.ref.pdf.addEventListener(\n 'load',\n () => {\n if (isPreviewablePdf(item.file)) {\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: id,\n height: root.ref.pdf.scrollHeight,\n });\n }\n },\n false\n );\n },\n }),\n });\n\n const createPdfWrapperView = (_) => {\n /**\n * Write handler for when preview container has been created\n */\n const didCreatePreviewContainer = ({ root, props }) => {\n const { id } = props;\n const item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // the preview is now ready to be drawn\n\n root.dispatch('DID_PDF_PREVIEW_LOAD', {\n id,\n });\n };\n /**\n * Constructor\n */\n\n const create = ({ root, props }) => {\n const pdf = createPdfView(_);\n\n // append pdf presenter\n\n root.ref.pdf = root.appendChildView(\n root.createChildView(pdf, {\n id: props.id,\n })\n );\n };\n\n return _.utils.createView({\n name: 'pdf-preview-wrapper',\n create,\n write: _.utils.createRoute({\n // pdf preview stated\n DID_PDF_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n }),\n });\n };\n\n /**\n * PDF Preview Plugin\n */\n\n const plugin = (fpAPI) => {\n const { addFilter, utils } = fpAPI;\n const { Type, createRoute } = utils;\n const pdfWrapperView = createPdfWrapperView(fpAPI); // called for each view that is created right after the 'create' method\n\n addFilter('CREATE_VIEW', (viewAPI) => {\n // get reference to created view\n const { is, view, query } = viewAPI;\n\n // only hook up to item view\n\n if (!is('file')) {\n return;\n } \n\n // create the pdf preview plugin if is pdf\n\n const didLoadItem = ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n\n if (\n !item ||\n item.archived ||\n ( !isPreviewablePdf(item.file))\n ) {\n return;\n } \n // set preview view\n root.ref.PdfPreview = view.appendChildView(\n view.createChildView(pdfWrapperView, {\n id,\n })\n ); \n // now ready\n root.dispatch('DID_PDF_PREVIEW_CONTAINER_CREATE', {\n id,\n });\n }; \n\n // start writing\n view.registerWriter(\n createRoute(\n {\n DID_LOAD_ITEM: didLoadItem,\n },\n ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n\n // don't do anything while not an pdf or hidden\n\n if (\n (!isPreviewablePdf(item.file) ) ||\n root.rect.element.hidden\n )\n return;\n }\n )\n );\n }); \n\n // expose plugin\n return {\n options: {\n \n allowPdfPreview: [true, Type.BOOLEAN],\n\n // Fixed PDF preview height\n pdfPreviewHeight: [320, Type.INT],\n\n // Extra params to pass to the pdf visulizer\n pdfComponentExtraParams: ['toolbar=0&navpanes=0&scrollbar=0&statusbar=0&zoom=0&messages=0&view=fitH&page=1', Type.STRING],\n },\n };\n }; \n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', {\n detail: plugin,\n })\n );\n }\n\n return plugin;\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.containerClass,on:{\"click\":function($event){return _vm.onClick($event)}}},[_c('div',{staticClass:\"p-hidden-accessible\"},[_c('input',_vm._b({ref:\"input\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checked,\"value\":_vm.value},on:{\"focus\":function($event){return _vm.onFocus($event)},\"blur\":function($event){return _vm.onBlur($event)}}},'input',_vm.$attrs,false))]),_c('div',{ref:\"box\",class:['p-checkbox-box', {'p-highlight': _vm.checked, 'p-disabled': _vm.$attrs.disabled, 'p-focus': _vm.focused}],attrs:{\"role\":\"checkbox\",\"aria-checked\":_vm.checked}},[_c('span',{class:['p-checkbox-icon', {'pi pi-check': _vm.checked}]})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Checkbox.vue?vue&type=template&id=0f49fb00&\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=js&\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.containerClass,style:(_vm.styles)},[(!_vm.inline)?_c('CalendarInputText',_vm._g(_vm._b({ref:\"input\",class:_vm.inputClass,style:(_vm.inputStyle),attrs:{\"type\":\"text\",\"value\":_vm.inputFieldValue,\"readonly\":!_vm.manualInput,\"aria-labelledby\":_vm.ariaLabelledBy,\"inputmode\":\"none\"}},'CalendarInputText',_vm.$attrs,false),_vm.listeners)):_vm._e(),(_vm.showIcon)?_c('CalendarButton',{staticClass:\"p-datepicker-trigger\",attrs:{\"icon\":_vm.icon,\"tabindex\":\"-1\",\"disabled\":_vm.$attrs.disabled,\"type\":\"button\",\"aria-label\":_vm.inputFieldValue},on:{\"click\":_vm.onButtonClick}}):_vm._e(),_c('transition',{attrs:{\"name\":\"p-connected-overlay\"},on:{\"enter\":_vm.onOverlayEnter,\"after-enter\":_vm.onOverlayEnterComplete,\"leave\":_vm.onOverlayLeave}},[(_vm.inline ? true : _vm.overlayVisible)?_c('div',{ref:\"overlay\",class:_vm.panelStyleClass,attrs:{\"role\":_vm.inline ? null : 'dialog',\"aria-labelledby\":_vm.ariaLabelledBy}},[(!_vm.timeOnly)?[_c('div',{staticClass:\"p-datepicker-group-container\"},_vm._l((_vm.months),function(month,groupIndex){return _c('div',{key:month.month + month.year,staticClass:\"p-datepicker-group\"},[_c('div',{staticClass:\"p-datepicker-header\"},[_vm._t(\"header\"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(groupIndex === 0),expression:\"groupIndex === 0\"},{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-datepicker-prev p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.$attrs.disabled},on:{\"click\":_vm.onPrevButtonClick,\"keydown\":_vm.onContainerButtonKeydown}},[_c('span',{staticClass:\"p-datepicker-prev-icon pi pi-chevron-left\"})]),_c('div',{staticClass:\"p-datepicker-title\"},[(_vm.currentView === 'date')?_c('button',{staticClass:\"p-datepicker-month p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.switchViewButtonDisabled},on:{\"click\":_vm.switchToMonthView,\"keydown\":_vm.onContainerButtonKeydown}},[_vm._v(\" \"+_vm._s(_vm.getMonthName(month.month))+\" \")]):_vm._e(),(_vm.currentView !== 'year')?_c('button',{staticClass:\"p-datepicker-year p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.switchViewButtonDisabled},on:{\"click\":_vm.switchToYearView,\"keydown\":_vm.onContainerButtonKeydown}},[_vm._v(\" \"+_vm._s(_vm.getYear(month))+\" \")]):_vm._e(),(_vm.currentView === 'year')?_c('span',{staticClass:\"p-datepicker-decade\"},[_vm._t(\"decade\",[_vm._v(\" \"+_vm._s(_vm.yearPickerValues[0])+\" - \"+_vm._s(_vm.yearPickerValues[_vm.yearPickerValues.length - 1])+\" \")],{\"years\":_vm.yearPickerValues})],2):_vm._e()]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.numberOfMonths === 1 ? true : (groupIndex === _vm.numberOfMonths - 1)),expression:\"numberOfMonths === 1 ? true : (groupIndex === numberOfMonths - 1)\"},{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-datepicker-next p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.$attrs.disabled},on:{\"click\":_vm.onNextButtonClick,\"keydown\":_vm.onContainerButtonKeydown}},[_c('span',{staticClass:\"p-datepicker-next-icon pi pi-chevron-right\"})])],2),(_vm.currentView ==='date')?_c('div',{staticClass:\"p-datepicker-calendar-container\"},[_c('table',{staticClass:\"p-datepicker-calendar\"},[_c('thead',[_c('tr',[(_vm.showWeek)?_c('th',{staticClass:\"p-datepicker-weekheader p-disabled\",attrs:{\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.weekHeaderLabel))])]):_vm._e(),_vm._l((_vm.weekDays),function(weekDay){return _c('th',{key:weekDay,attrs:{\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(weekDay))])])})],2)]),_c('tbody',_vm._l((month.dates),function(week,i){return _c('tr',{key:week[0].day + '' + week[0].month},[(_vm.showWeek)?_c('td',{staticClass:\"p-datepicker-weeknumber\"},[_c('span',{staticClass:\"p-disabled\"},[(month.weekNumbers[i] < 10)?_c('span',{staticStyle:{\"visibility\":\"hidden\"}},[_vm._v(\"0\")]):_vm._e(),_vm._v(\" \"+_vm._s(month.weekNumbers[i])+\" \")])]):_vm._e(),_vm._l((week),function(date){return _c('td',{key:date.day + '' + date.month,class:{'p-datepicker-other-month': date.otherMonth, 'p-datepicker-today': date.today}},[_c('span',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],class:{'p-highlight': _vm.isSelected(date), 'p-disabled': !date.selectable},attrs:{\"draggable\":\"false\"},on:{\"click\":function($event){return _vm.onDateSelect($event, date)},\"keydown\":function($event){return _vm.onDateCellKeydown($event,date,groupIndex)}}},[_vm._t(\"date\",[_vm._v(_vm._s(date.day))],{\"date\":date})],2)])})],2)}),0)])]):_vm._e()])}),0),(_vm.currentView === 'month')?_c('div',{staticClass:\"p-monthpicker\"},_vm._l((_vm.monthPickerValues),function(m,i){return _c('span',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:m,staticClass:\"p-monthpicker-month\",class:{'p-highlight': _vm.isMonthSelected(i)},on:{\"click\":function($event){return _vm.onMonthSelect($event, i)},\"keydown\":function($event){return _vm.onMonthCellKeydown($event,i)}}},[_vm._v(\" \"+_vm._s(m)+\" \")])}),0):_vm._e(),(_vm.currentView === 'year')?_c('div',{staticClass:\"p-yearpicker\"},_vm._l((_vm.yearPickerValues),function(y){return _c('span',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],key:y,staticClass:\"p-yearpicker-year\",class:{'p-highlight': _vm.isYearSelected(y)},on:{\"click\":function($event){return _vm.onYearSelect($event, y)},\"keydown\":function($event){return _vm.onYearCellKeydown($event,y)}}},[_vm._v(\" \"+_vm._s(y)+\" \")])}),0):_vm._e()]:_vm._e(),((_vm.showTime||_vm.timeOnly) && _vm.currentView === 'date')?_c('div',{staticClass:\"p-timepicker\"},[_c('div',{staticClass:\"p-hour-picker\"},[_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 0, 1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 0, 1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-up\"})]),_c('span',[_vm._v(_vm._s(_vm.formattedCurrentHour))]),_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 0, -1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 0, -1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-down\"})])]),_c('div',{staticClass:\"p-separator\"},[_c('span',[_vm._v(_vm._s(_vm.timeSeparator))])]),_c('div',{staticClass:\"p-minute-picker\"},[_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 1, 1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 1, 1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-up\"})]),_c('span',[_vm._v(_vm._s(_vm.formattedCurrentMinute))]),_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 1, -1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 1, -1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-down\"})])]),(_vm.showSeconds)?_c('div',{staticClass:\"p-separator\"},[_c('span',[_vm._v(_vm._s(_vm.timeSeparator))])]):_vm._e(),(_vm.showSeconds)?_c('div',{staticClass:\"p-second-picker\"},[_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 2, 1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 2, 1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-up\"})]),_c('span',[_vm._v(_vm._s(_vm.formattedCurrentSecond))]),_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"disabled\":_vm.$attrs.disabled,\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.onTimePickerElementMouseDown($event, 2, -1)},\"mouseup\":function($event){return _vm.onTimePickerElementMouseUp($event)},\"keydown\":[_vm.onContainerButtonKeydown,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseDown($event, 2, -1)}],\"mouseleave\":function($event){return _vm.onTimePickerElementMouseLeave()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onTimePickerElementMouseUp($event)}}},[_c('span',{staticClass:\"pi pi-chevron-down\"})])]):_vm._e(),(_vm.hourFormat=='12')?_c('div',{staticClass:\"p-separator\"},[_c('span',[_vm._v(_vm._s(_vm.timeSeparator))])]):_vm._e(),(_vm.hourFormat=='12')?_c('div',{staticClass:\"p-ampm-picker\"},[_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.$attrs.disabled},on:{\"click\":function($event){return _vm.toggleAMPM($event)}}},[_c('span',{staticClass:\"pi pi-chevron-up\"})]),_c('span',[_vm._v(_vm._s(_vm.pm ? 'PM' : 'AM'))]),_c('button',{directives:[{name:\"ripple\",rawName:\"v-ripple\"}],staticClass:\"p-link\",attrs:{\"type\":\"button\",\"disabled\":_vm.$attrs.disabled},on:{\"click\":function($event){return _vm.toggleAMPM($event)}}},[_c('span',{staticClass:\"pi pi-chevron-down\"})])]):_vm._e()]):_vm._e(),(_vm.showButtonBar)?_c('div',{staticClass:\"p-datepicker-buttonbar\"},[_c('CalendarButton',{staticClass:\"p-button-text\",attrs:{\"type\":\"button\",\"label\":_vm.todayLabel},on:{\"click\":function($event){return _vm.onTodayButtonClick($event)},\"keydown\":_vm.onContainerButtonKeydown}}),_c('CalendarButton',{staticClass:\"p-button-text\",attrs:{\"type\":\"button\",\"label\":_vm.clearLabel},on:{\"click\":function($event){return _vm.onClearButtonClick($event)},\"keydown\":_vm.onContainerButtonKeydown}})],1):_vm._e(),_vm._t(\"footer\")],2):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{getMonthName(month.month)}}\n \n \n {{getYear(month)}}\n \n \n \n {{yearPickerValues[0]}} - {{yearPickerValues[yearPickerValues.length - 1]}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{weekHeaderLabel}}\n \n \n {{weekDay}}\n \n \n \n \n \n \n \n 0\n {{month.weekNumbers[i]}}\n \n \n \n \n {{date.day}}\n \n \n \n \n \n \n \n \n \n \n {{m}}\n \n \n \n \n {{y}}\n \n \n \n \n \n \n \n \n {{formattedCurrentHour}}\n \n \n \n \n \n {{timeSeparator}}\n \n \n \n \n \n {{formattedCurrentMinute}}\n \n \n \n \n \n {{timeSeparator}}\n \n \n \n \n \n {{formattedCurrentSecond}}\n \n \n \n \n \n {{timeSeparator}}\n \n \n \n \n \n {{pm ? 'PM' : 'AM'}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Calendar.vue?vue&type=template&id=5055df2a&\"\nimport script from \"./Calendar.vue?vue&type=script&lang=js&\"\nexport * from \"./Calendar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Calendar.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nmodule.exports = require('./InputText.vue');","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"primevue-field\"},[_c('label',{attrs:{\"for\":_vm.fieldId}},[_vm._v(_vm._s(_vm.label))]),_c('PrimeVueDropdown',{staticClass:\"p-inputtext-lg\",class:{ 'p-invalid': _vm.error },attrs:{\"inputId\":_vm.fieldId,\"placeholder\":_vm.placeholder,\"ariaLabelledBy\":_vm.fieldId,\"value\":_vm.value,\"optionLabel\":_vm.fieldKey,\"optionValue\":_vm.fieldValue,\"options\":_vm.options,\"showClear\":true},on:{\"input\":_vm.onInput}}),_c('small',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.error),expression:\"error\"}],staticClass:\"p-invalid\",attrs:{\"id\":(_vm.fieldId + \"-help\")}},[_vm._v(_vm._s(_vm.error))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport PrimeVueDropdown from 'primevue/dropdown'\r\n\r\nexport type DropdownOption = {\r\n label: string;\r\n value: string;\r\n [key: string]: boolean | string | undefined;\r\n}\r\n\r\n@Component({\r\n components: {\r\n PrimeVueDropdown\r\n }\r\n})\r\nexport default class Dropdown extends Vue {\r\n @Prop({ required: true })\r\n public value!: string\r\n\r\n @Prop({ required: true })\r\n public fieldId!: string\r\n\r\n @Prop({ required: false, default: 'label' })\r\n public fieldKey!: string\r\n\r\n @Prop({ required: false, default: 'value' })\r\n public fieldValue!: string\r\n\r\n @Prop({ required: true })\r\n public placeholder!: string\r\n\r\n @Prop({ required: true })\r\n public label!: string\r\n\r\n @Prop({ required: false })\r\n public error: string | undefined\r\n\r\n @Prop({ required: true })\r\n public options!: DropdownOption[]\r\n\r\n onInput (newVal: string) {\r\n this.$emit('input', newVal)\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dropdown.vue?vue&type=template&id=54afa19f&scoped=true&\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dropdown.vue?vue&type=style&index=0&id=54afa19f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54afa19f\",\n null\n \n)\n\nexport default component.exports","/*!\n * FilePond 4.31.4\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? factory(exports)\n : typeof define === 'function' && define.amd\n ? define(['exports'], factory)\n : ((global = global || self), factory((global.FilePond = {})));\n})(this, function(exports) {\n 'use strict';\n\n var isNode = function isNode(value) {\n return value instanceof HTMLElement;\n };\n\n var createStore = function createStore(initialState) {\n var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // internal state\n var state = Object.assign({}, initialState);\n\n // contains all actions for next frame, is clear when actions are requested\n var actionQueue = [];\n var dispatchQueue = [];\n\n // returns a duplicate of the current state\n var getState = function getState() {\n return Object.assign({}, state);\n };\n\n // returns a duplicate of the actions array and clears the actions array\n var processActionQueue = function processActionQueue() {\n // create copy of actions queue\n var queue = [].concat(actionQueue);\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n\n return queue;\n };\n\n // processes actions that might block the main UI thread\n var processDispatchQueue = function processDispatchQueue() {\n // create copy of actions queue\n var queue = [].concat(dispatchQueue);\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(function(_ref) {\n var type = _ref.type,\n data = _ref.data;\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n var dispatch = function dispatch(type, data, isBlocking) {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({ type: type, data: data });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type: type,\n data: data,\n });\n };\n\n var query = function query(str) {\n var _queryHandles;\n for (\n var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n return queryHandles[str]\n ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args)\n : null;\n };\n\n var api = {\n getState: getState,\n processActionQueue: processActionQueue,\n processDispatchQueue: processDispatchQueue,\n dispatch: dispatch,\n query: query,\n };\n\n var queryHandles = {};\n queries.forEach(function(query) {\n queryHandles = Object.assign({}, query(state), {}, queryHandles);\n });\n\n var actionHandlers = {};\n actions.forEach(function(action) {\n actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n });\n\n return api;\n };\n\n var defineProperty = function defineProperty(obj, property, definition) {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, Object.assign({}, definition));\n };\n\n var forin = function forin(obj, cb) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n cb(key, obj[key]);\n }\n };\n\n var createObject = function createObject(definition) {\n var obj = {};\n forin(definition, function(property) {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n };\n\n var attr = function attr(node, name) {\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n };\n\n var ns = 'http://www.w3.org/2000/svg';\n var svgElements = ['svg', 'path']; // only svg elements used\n\n var isSVGElement = function isSVGElement(tag) {\n return svgElements.includes(tag);\n };\n\n var createElement = function createElement(tag, className) {\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n var element = isSVGElement(tag)\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, function(name, value) {\n attr(element, name, value);\n });\n return element;\n };\n\n var appendChild = function appendChild(parent) {\n return function(child, index) {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n };\n };\n\n var appendChildView = function appendChildView(parent, childViews) {\n return function(view, index) {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n\n return view;\n };\n };\n\n var removeChildView = function removeChildView(parent, childViews) {\n return function(view) {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n\n return view;\n };\n };\n\n var IS_BROWSER = (function() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n })();\n var isBrowser = function isBrowser() {\n return IS_BROWSER;\n };\n\n var testElement = isBrowser() ? createElement('svg') : {};\n var getChildCount =\n 'children' in testElement\n ? function(el) {\n return el.children.length;\n }\n : function(el) {\n return el.childNodes.length;\n };\n\n var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n var left = offset[0] || elementRect.left;\n var top = offset[1] || elementRect.top;\n var right = left + elementRect.width;\n var bottom = top + elementRect.height * (scale[1] || 1);\n\n var rect = {\n // the rectangle of the element itself\n element: Object.assign({}, elementRect),\n\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom,\n },\n\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left: left,\n top: top,\n right: right,\n bottom: bottom,\n },\n };\n\n // expand rect to fit all child rectangles\n childViews\n .filter(function(childView) {\n return !childView.isRectIgnored();\n })\n .map(function(childView) {\n return childView.rect;\n })\n .forEach(function(childViewRect) {\n expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n\n return rect;\n };\n\n var expandRect = function expandRect(parent, child) {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n };\n\n var calculateRectSize = function calculateRectSize(rect) {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n };\n\n var isNumber = function isNumber(value) {\n return typeof value === 'number';\n };\n\n /**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\n var thereYet = function thereYet(position, destination, velocity) {\n var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n };\n\n /**\n * Spring animation\n */\n var spring =\n // default options\n function spring() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$stiffness = _ref.stiffness,\n stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n _ref$damping = _ref.damping,\n damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n _ref$mass = _ref.mass,\n mass = _ref$mass === void 0 ? 10 : _ref$mass;\n var target = null;\n var position = null;\n var velocity = 0;\n var resting = false;\n\n // updates spring state\n var interpolate = function interpolate(ts, skipToEndState) {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n var f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n var setTarget = function setTarget(value) {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n\n return;\n }\n\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n set: setTarget,\n get: function get() {\n return target;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var easeLinear = function easeLinear(t) {\n return t;\n };\n var easeInOutQuad = function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n };\n\n var tween =\n // default values\n function tween() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 500 : _ref$duration,\n _ref$easing = _ref.easing,\n easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay;\n var start = null;\n var t;\n var p;\n var resting = true;\n var reverse = false;\n var target = null;\n\n var interpolate = function interpolate(ts, skipToEndState) {\n if (resting || target === null) return;\n\n if (start === null) {\n start = ts;\n }\n\n if (ts - start < delay) return;\n\n t = ts - start - delay;\n\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n get: function get() {\n return reverse ? 0 : target;\n },\n set: function set(value) {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var animator = {\n spring: spring,\n tween: tween,\n };\n\n /*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n */\n var createAnimator = function createAnimator(definition, category, property) {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n var def =\n definition[category] && typeof definition[category][property] === 'object'\n ? definition[category][property]\n : definition[category] || definition;\n\n var type = typeof def === 'string' ? def : def.type;\n var props = typeof def === 'object' ? Object.assign({}, def) : {};\n\n return animator[type] ? animator[type](props) : null;\n };\n\n var addGetSet = function addGetSet(keys, obj, props) {\n var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(function(o) {\n keys.forEach(function(key) {\n var name = key;\n var getter = function getter() {\n return props[key];\n };\n var setter = function setter(value) {\n return (props[key] = value);\n };\n\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n\n if (o[name] && !overwrite) {\n return;\n }\n\n o[name] = {\n get: getter,\n set: setter,\n };\n });\n });\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // setup animators\n\n var animations = function animations(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI;\n // initial properties\n var initialProps = Object.assign({}, viewProps);\n\n // list of all active animations\n var animations = [];\n\n // setup animators\n forin(mixinConfig, function(property, animation) {\n var animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = function(value) {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n var prop = {\n key: property,\n setter: function setter(value) {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n\n animator.target = value;\n },\n getter: function getter() {\n return viewProps[property];\n },\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: function write(ts) {\n var skipToEndState = document.hidden;\n var resting = true;\n animations.forEach(function(animation) {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: function destroy() {},\n };\n };\n\n var addEvent = function addEvent(element) {\n return function(type, fn) {\n element.addEventListener(type, fn);\n };\n };\n\n var removeEvent = function removeEvent(element) {\n return function(type, fn) {\n element.removeEventListener(type, fn);\n };\n };\n\n // mixin\n var listeners = function listeners(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n viewState = _ref.viewState,\n view = _ref.view;\n var events = [];\n\n var add = addEvent(view.element);\n var remove = removeEvent(view.element);\n\n viewExternalAPI.on = function(type, fn) {\n events.push({\n type: type,\n fn: fn,\n });\n\n add(type, fn);\n };\n\n viewExternalAPI.off = function(type, fn) {\n events.splice(\n events.findIndex(function(event) {\n return event.type === type && event.fn === fn;\n }),\n 1\n );\n\n remove(type, fn);\n };\n\n return {\n write: function write() {\n // not busy\n return true;\n },\n destroy: function destroy() {\n events.forEach(function(event) {\n remove(event.type, event.fn);\n });\n },\n };\n };\n\n // add to external api and link to props\n\n var apis = function apis(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewExternalAPI = _ref.viewExternalAPI;\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n };\n\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // set initial state based on props in viewProps\n // apply as transforms each frame\n\n var defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0,\n };\n\n var styles = function styles(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n view = _ref.view;\n // initial props\n var initialProps = Object.assign({}, viewProps);\n\n // current props\n var currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n var getOffset = function getOffset() {\n return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n };\n\n var getScale = function getScale() {\n return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n };\n var getRect = function getRect() {\n return view.rect\n ? getViewRect(view.rect, view.childViews, getOffset(), getScale())\n : null;\n };\n viewInternalAPI.rect = { get: getRect };\n viewExternalAPI.rect = { get: getRect };\n\n // apply view props\n mixinConfig.forEach(function(key) {\n viewProps[key] =\n typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: function write() {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, Object.assign({}, viewProps));\n\n // no longer busy\n return true;\n },\n destroy: function destroy() {},\n };\n };\n\n var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (var prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n\n return false;\n };\n\n var applyStyles = function applyStyles(element, _ref2) {\n var opacity = _ref2.opacity,\n perspective = _ref2.perspective,\n translateX = _ref2.translateX,\n translateY = _ref2.translateY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n rotateX = _ref2.rotateX,\n rotateY = _ref2.rotateY,\n rotateZ = _ref2.rotateZ,\n originX = _ref2.originX,\n originY = _ref2.originY,\n width = _ref2.width,\n height = _ref2.height;\n\n var transforms = '';\n var styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += 'perspective(' + perspective + 'px) ';\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms +=\n 'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms +=\n 'scale3d(' +\n (isDefined(scaleX) ? scaleX : 1) +\n ', ' +\n (isDefined(scaleY) ? scaleY : 1) +\n ', 1) ';\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += 'rotateZ(' + rotateZ + 'rad) ';\n }\n\n if (isDefined(rotateX)) {\n transforms += 'rotateX(' + rotateX + 'rad) ';\n }\n\n if (isDefined(rotateY)) {\n transforms += 'rotateY(' + rotateY + 'rad) ';\n }\n\n // add transforms\n if (transforms.length) {\n styles += 'transform:' + transforms + ';';\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += 'opacity:' + opacity + ';';\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += 'visibility:hidden;';\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += 'pointer-events:none;';\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += 'height:' + height + 'px;';\n }\n\n // add width\n if (isDefined(width)) {\n styles += 'width:' + width + 'px;';\n }\n\n // apply styles\n var elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n };\n\n var Mixins = {\n styles: styles,\n listeners: listeners,\n animations: animations,\n apis: apis,\n };\n\n var updateRect = function updateRect() {\n var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n\n rect.scrollTop = element.scrollTop;\n\n rect.hidden = element.offsetParent === null;\n\n return rect;\n };\n\n var createView =\n // default view definition\n function createView() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$tag = _ref.tag,\n tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? null : _ref$name,\n _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n _ref$read = _ref.read,\n read = _ref$read === void 0 ? function() {} : _ref$read,\n _ref$write = _ref.write,\n write = _ref$write === void 0 ? function() {} : _ref$write,\n _ref$create = _ref.create,\n create = _ref$create === void 0 ? function() {} : _ref$create,\n _ref$destroy = _ref.destroy,\n destroy = _ref$destroy === void 0 ? function() {} : _ref$destroy,\n _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n filterFrameActionsForChild =\n _ref$filterFrameActio === void 0\n ? function(child, actions) {\n return actions;\n }\n : _ref$filterFrameActio,\n _ref$didCreateView = _ref.didCreateView,\n didCreateView = _ref$didCreateView === void 0 ? function() {} : _ref$didCreateView,\n _ref$didWriteView = _ref.didWriteView,\n didWriteView = _ref$didWriteView === void 0 ? function() {} : _ref$didWriteView,\n _ref$ignoreRect = _ref.ignoreRect,\n ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n _ref$mixins = _ref.mixins,\n mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n return function(\n // each view requires reference to store\n store\n ) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // root element should not be changed\n var element = createElement(tag, 'filepond--' + name, attributes);\n\n // style reference should also not be changed\n var style = window.getComputedStyle(element, null);\n\n // element rectangle\n var rect = updateRect();\n var frameRect = null;\n\n // rest state\n var isResting = false;\n\n // pretty self explanatory\n var childViews = [];\n\n // loaded mixins\n var activeMixins = [];\n\n // references to created children\n var ref = {};\n\n // state used for each instance\n var state = {};\n\n // list of writers that will be called to update this view\n var writers = [\n write, // default writer\n ];\n\n var readers = [\n read, // default reader\n ];\n\n var destroyers = [\n destroy, // default destroy\n ];\n\n // core view methods\n var getElement = function getElement() {\n return element;\n };\n var getChildViews = function getChildViews() {\n return childViews.concat();\n };\n var getReference = function getReference() {\n return ref;\n };\n var createChildView = function createChildView(store) {\n return function(view, props) {\n return view(store, props);\n };\n };\n var getRect = function getRect() {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n var getStyle = function getStyle() {\n return style;\n };\n\n /**\n * Read data from DOM\n * @private\n */\n var _read = function _read() {\n frameRect = null;\n\n // read child views\n childViews.forEach(function(child) {\n return child._read();\n });\n\n var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n var api = { root: internalAPI, props: props, rect: rect };\n readers.forEach(function(reader) {\n return reader(api);\n });\n };\n\n /**\n * Write data to DOM\n * @private\n */\n var _write = function _write(ts, frameActions, shouldOptimize) {\n // if no actions, we assume that the view is resting\n var resting = frameActions.length === 0;\n\n // writers\n writers.forEach(function(writer) {\n var writerResting = writer({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize: shouldOptimize,\n });\n\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(function(mixin) {\n // if one of the mixins is still busy after write operation, we are not resting\n var mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews\n .filter(function(child) {\n return !!child.element.parentNode;\n })\n .forEach(function(child) {\n // if a child view is not resting, we are not resting\n var childResting = child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach(function(child, index) {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n\n didWriteView({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n });\n\n // let parent know if we are resting\n return resting;\n };\n\n var _destroy = function _destroy() {\n activeMixins.forEach(function(mixin) {\n return mixin.destroy();\n });\n destroyers.forEach(function(destroyer) {\n destroyer({ root: internalAPI, props: props });\n });\n childViews.forEach(function(child) {\n return child._destroy();\n });\n };\n\n // sharedAPI\n var sharedAPIDefinition = {\n element: {\n get: getElement,\n },\n\n style: {\n get: getStyle,\n },\n\n childViews: {\n get: getChildViews,\n },\n };\n\n // private API definition\n var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: getRect,\n },\n\n // access to custom children references\n ref: {\n get: getReference,\n },\n\n // dom modifiers\n is: function is(needle) {\n return name === needle;\n },\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: function linkView(view) {\n childViews.push(view);\n return view;\n },\n unlinkView: function unlinkView(view) {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: function registerWriter(writer) {\n return writers.push(writer);\n },\n registerReader: function registerReader(reader) {\n return readers.push(reader);\n },\n registerDestroyer: function registerDestroyer(destroyer) {\n return destroyers.push(destroyer);\n },\n invalidateLayout: function invalidateLayout() {\n return (element.layoutCalculated = false);\n },\n\n // access to data store\n dispatch: store.dispatch,\n query: store.query,\n });\n\n // public view API methods\n var externalAPIDefinition = {\n element: {\n get: getElement,\n },\n\n childViews: {\n get: getChildViews,\n },\n\n rect: {\n get: getRect,\n },\n\n resting: {\n get: function get() {\n return isResting;\n },\n },\n\n isRectIgnored: function isRectIgnored() {\n return ignoreRect;\n },\n _read: _read,\n _write: _write,\n _destroy: _destroy,\n };\n\n // mixin API methods\n var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: function get() {\n return rect;\n },\n },\n });\n\n // add mixin functionality\n Object.keys(mixins)\n .sort(function(a, b) {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n })\n .forEach(function(key) {\n var mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition),\n });\n\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n var internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props: props,\n });\n\n // append created child views to root node\n var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach(function(child, index) {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n };\n\n var createPainter = function createPainter(read, write) {\n var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n\n var name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n\n window[name] = {\n readers: [read],\n writers: [write],\n };\n\n var painter = window[name];\n\n var interval = 1000 / fps;\n var last = null;\n var id = null;\n var requestTick = null;\n var cancelTick = null;\n\n var setTimerType = function setTimerType() {\n if (document.hidden) {\n requestTick = function requestTick() {\n return window.setTimeout(function() {\n return tick(performance.now());\n }, interval);\n };\n cancelTick = function cancelTick() {\n return window.clearTimeout(id);\n };\n } else {\n requestTick = function requestTick() {\n return window.requestAnimationFrame(tick);\n };\n cancelTick = function cancelTick() {\n return window.cancelAnimationFrame(id);\n };\n }\n };\n\n document.addEventListener('visibilitychange', function() {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n\n var tick = function tick(ts) {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n\n var delta = ts - last;\n\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - (delta % interval);\n\n // update view\n painter.readers.forEach(function(read) {\n return read();\n });\n painter.writers.forEach(function(write) {\n return write(ts);\n });\n };\n\n setTimerType();\n tick(performance.now());\n\n return {\n pause: function pause() {\n cancelTick(id);\n },\n };\n };\n\n var createRoute = function createRoute(routes, fn) {\n return function(_ref) {\n var root = _ref.root,\n props = _ref.props,\n _ref$actions = _ref.actions,\n actions = _ref$actions === void 0 ? [] : _ref$actions,\n timestamp = _ref.timestamp,\n shouldOptimize = _ref.shouldOptimize;\n actions\n .filter(function(action) {\n return routes[action.type];\n })\n .forEach(function(action) {\n return routes[action.type]({\n root: root,\n props: props,\n action: action.data,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n });\n\n if (fn) {\n fn({\n root: root,\n props: props,\n actions: actions,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n }\n };\n };\n\n var insertBefore = function insertBefore(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n };\n\n var insertAfter = function insertAfter(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n\n var isArray = function isArray(value) {\n return Array.isArray(value);\n };\n\n var isEmpty = function isEmpty(value) {\n return value == null;\n };\n\n var trim = function trim(str) {\n return str.trim();\n };\n\n var toString = function toString(value) {\n return '' + value;\n };\n\n var toArray = function toArray(value) {\n var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value)\n .split(splitter)\n .map(trim)\n .filter(function(str) {\n return str.length;\n });\n };\n\n var isBoolean = function isBoolean(value) {\n return typeof value === 'boolean';\n };\n\n var toBoolean = function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true';\n };\n\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var toNumber = function toNumber(value) {\n return isNumber(value)\n ? value\n : isString(value)\n ? toString(value).replace(/[a-z]+/gi, '')\n : 0;\n };\n\n var toInt = function toInt(value) {\n return parseInt(toNumber(value), 10);\n };\n\n var toFloat = function toFloat(value) {\n return parseFloat(toNumber(value));\n };\n\n var isInt = function isInt(value) {\n return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n };\n\n var toBytes = function toBytes(value) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n var naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n\n return toInt(naturalFileSize);\n };\n\n var isFunction = function isFunction(value) {\n return typeof value === 'function';\n };\n\n var toFunctionReference = function toFunctionReference(string) {\n var ref = self;\n var levels = string.split('.');\n var level = null;\n while ((level = levels.shift())) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n };\n\n var methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET',\n };\n\n var createServerAPI = function createServerAPI(outline) {\n var api = {};\n\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n\n forin(methods, function(key) {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n\n return api;\n };\n\n var createAction = function createAction(name, outline, method, timeout, headers) {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n var action = {\n url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n method: method,\n headers: headers,\n withCredentials: false,\n timeout: timeout,\n onload: null,\n ondata: null,\n onerror: null,\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n var parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1],\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n\n return action;\n };\n\n var toServerAPI = function toServerAPI(value) {\n return createServerAPI(value);\n };\n\n var isNull = function isNull(value) {\n return value === null;\n };\n\n var isObject = function isObject(value) {\n return typeof value === 'object' && value !== null;\n };\n\n var isAPI = function isAPI(value) {\n return (\n isObject(value) &&\n isString(value.url) &&\n isObject(value.process) &&\n isObject(value.revert) &&\n isObject(value.restore) &&\n isObject(value.fetch)\n );\n };\n\n var getType = function getType(value) {\n if (isArray(value)) {\n return 'array';\n }\n\n if (isNull(value)) {\n return 'null';\n }\n\n if (isInt(value)) {\n return 'int';\n }\n\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n\n if (isAPI(value)) {\n return 'api';\n }\n\n return typeof value;\n };\n\n var replaceSingleQuotes = function replaceSingleQuotes(str) {\n return str\n .replace(/{\\s*'/g, '{\"')\n .replace(/'\\s*}/g, '\"}')\n .replace(/'\\s*:/g, '\":')\n .replace(/:\\s*'/g, ':\"')\n .replace(/,\\s*'/g, ',\"')\n .replace(/'\\s*,/g, '\",');\n };\n\n var conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: function int(value) {\n return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n },\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: function string(value) {\n return isFunction(value) ? value : toString(value);\n },\n function: function _function(value) {\n return toFunctionReference(value);\n },\n serverapi: toServerAPI,\n object: function object(value) {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n },\n };\n\n var convertTo = function convertTo(value, type) {\n return conversionTable[type](value);\n };\n\n var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n var newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n var convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw 'Trying to assign value with incorrect type to \"' +\n option +\n '\", allowed type: \"' +\n valueType +\n '\"';\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n };\n\n var createOption = function createOption(defaultValue, valueType) {\n var currentValue = defaultValue;\n return {\n enumerable: true,\n get: function get() {\n return currentValue;\n },\n set: function set(newValue) {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n },\n };\n };\n\n var createOptions = function createOptions(options) {\n var obj = {};\n forin(options, function(prop) {\n var optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n };\n\n var createInitialState = function createInitialState(options) {\n return {\n // model\n items: [],\n\n // timeout used for calling update items\n listUpdateTimeout: null,\n\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n\n // queue of items waiting to be processed\n processingQueue: [],\n\n // options\n options: createOptions(options),\n };\n };\n\n var fromCamels = function fromCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string\n .split(/(?=[A-Z])/)\n .map(function(part) {\n return part.toLowerCase();\n })\n .join(separator);\n };\n\n var createOptionAPI = function createOptionAPI(store, options) {\n var obj = {};\n forin(options, function(key) {\n obj[key] = {\n get: function get() {\n return store.getState().options[key];\n },\n set: function set(value) {\n store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: value,\n });\n },\n };\n });\n return obj;\n };\n\n var createOptionActions = function createOptionActions(options) {\n return function(dispatch, query, state) {\n var obj = {};\n forin(options, function(key) {\n var name = fromCamels(key, '_').toUpperCase();\n\n obj['SET_' + name] = function(action) {\n try {\n state.options[key] = action.value;\n } catch (e) {} // nope, failed\n\n // we successfully set the value of this option\n dispatch('DID_SET_' + name, { value: state.options[key] });\n };\n });\n return obj;\n };\n };\n\n var createOptionQueries = function createOptionQueries(options) {\n return function(state) {\n var obj = {};\n forin(options, function(key) {\n obj['GET_' + fromCamels(key, '_').toUpperCase()] = function(action) {\n return state.options[key];\n };\n });\n return obj;\n };\n };\n\n var InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5,\n };\n\n var getUniqueId = function getUniqueId() {\n return Math.random()\n .toString(36)\n .substring(2, 11);\n };\n\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n var REACT_ELEMENT_TYPE;\n\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element')) ||\n 0xeac7;\n }\n\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0,\n };\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n }\n\n function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== 'undefined') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError('Object is not async iterable');\n }\n\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n\n function _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function(resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null,\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n function(arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n\n settle(result.done ? 'return' : 'normal', arg);\n },\n function(err) {\n resume('throw', err);\n }\n );\n } catch (err) {\n settle('throw', err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true,\n });\n break;\n\n case 'throw':\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false,\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n return this;\n };\n }\n\n _AsyncGenerator.prototype.next = function(arg) {\n return this._invoke('next', arg);\n };\n\n _AsyncGenerator.prototype.throw = function(arg) {\n return this._invoke('throw', arg);\n };\n\n _AsyncGenerator.prototype.return = function(arg) {\n return this._invoke('return', arg);\n };\n\n function _wrapAsyncGenerator(fn) {\n return function() {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function(resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value),\n };\n }\n\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function() {\n return this;\n };\n }\n\n iter.next = function(value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump('next', value);\n };\n\n if (typeof inner.throw === 'function') {\n iter.throw = function(value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump('throw', value);\n };\n }\n\n if (typeof inner.return === 'function') {\n iter.return = function(value) {\n return pump('return', value);\n };\n }\n\n return iter;\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function() {\n var self = this,\n args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n 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 _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n }\n\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends =\n Object.assign ||\n 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 _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly)\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function(key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n\n return target;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true,\n },\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\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 function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf\n ? Object.getPrototypeOf\n : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf =\n Object.setPrototypeOf ||\n function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== 'function') {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _instanceof(left, right) {\n if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule\n ? obj\n : {\n default: obj,\n };\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n }\n\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n }\n\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(\n Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw),\n },\n })\n );\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n\n function _classNameTDZError(name) {\n throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n }\n\n var _temporalUndefined = {};\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n }\n\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (\n Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === '[object Arguments]'\n )\n return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n\n function _skipFirstGeneratorNext(fn) {\n return function() {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n\n return (hint === 'string' ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n\n return typeof key === 'symbol' ? key : String(key);\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error(\n 'Decorating class property failed. Please ensure that ' +\n 'proposal-class-properties is enabled and set to use loose mode. ' +\n 'To use proposal-class-properties in spec mode with decorators, wait for ' +\n 'the next major version of decorators in stage 2.'\n );\n }\n\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n });\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function(key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators\n .slice()\n .reverse()\n .reduce(function(desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var id = 0;\n\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n\n return receiver;\n }\n\n function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n }\n\n function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n }\n\n return value;\n }\n\n function _classPrivateFieldDestructureSet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.set) {\n if (!('__destrObj' in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n },\n };\n }\n\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n return descriptor;\n }\n }\n\n function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return descriptor.value;\n }\n\n function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n return value;\n }\n\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return method;\n }\n\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(\n _coalesceClassElements(r.d.map(_createElementDescriptor)),\n decorators\n );\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n\n function _getDecoratorsApi() {\n _getDecoratorsApi = function() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function(O, elements) {\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function(F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n var placement = element.placement;\n\n if (\n element.kind === kind &&\n (placement === 'static' || placement === 'prototype')\n ) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver),\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: [],\n };\n elements.forEach(function(element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function(element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers,\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n\n keys.push(element.key);\n },\n decorateElement: function(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras(\n (0, decorators[i])(elementObject) || elementObject\n );\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras,\n };\n },\n decorateConstructor: function(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor(\n (0, decorators[i])(obj) || obj\n );\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (\n elements[j].key === elements[k].key &&\n elements[j].placement === elements[k].placement\n ) {\n throw new TypeError(\n 'Duplicated element (' + elements[j].key + ')'\n );\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers,\n };\n },\n fromElementDescriptor: function(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor,\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n return element;\n }, this);\n },\n toElementDescriptor: function(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError(\n 'An element descriptor\\'s .kind property must be either \"method\" or' +\n ' \"field\", but a decorator created an element descriptor with' +\n ' .kind \"' +\n kind +\n '\"'\n );\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n throw new TypeError(\n 'An element descriptor\\'s .placement property must be one of \"static\",' +\n ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n ' with .placement \"' +\n placement +\n '\"'\n );\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor),\n };\n\n if (kind !== 'field') {\n this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n } else {\n this.disallowProperty(\n descriptor,\n 'get',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'set',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'value',\n 'The property descriptor of a field descriptor'\n );\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras,\n };\n },\n fromClassDescriptor: function(elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this),\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function(obj) {\n var kind = String(obj.kind);\n\n if (kind !== 'class') {\n throw new TypeError(\n 'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n ' created a class descriptor with .kind \"' +\n kind +\n '\"'\n );\n }\n\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n var finisher = _optionalCallableProperty(obj, 'finisher');\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher,\n };\n },\n runClassFinishers: function(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n }\n },\n };\n return api;\n }\n\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true,\n };\n }\n\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n descriptor: descriptor,\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n\n function _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function(other) {\n return (\n other.kind === 'method' &&\n other.key === element.key &&\n other.placement === element.placement\n );\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\n 'Duplicated methods (' + element.key + \") can't be decorated.\"\n );\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\n \"Decorators can't be placed on different accessors with for \" +\n 'the same property (' +\n element.key +\n ').'\n );\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n }\n\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n\n function _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n }\n\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n }\n\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n return fn;\n }\n\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function(re, groups) {\n return new BabelRegExp(re, groups);\n };\n\n var _RegExp = _wrapNativeSuper(RegExp);\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n\n _groups.set(_this, groups);\n\n return _this;\n }\n\n _inherits(BabelRegExp, _RegExp);\n\n BabelRegExp.prototype.exec = function(str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n return '$' + groups[name];\n })\n );\n } else if (typeof substitution === 'function') {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function() {\n var args = [];\n args.push.apply(args, arguments);\n\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function(groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n }\n\n var arrayRemove = function arrayRemove(arr, index) {\n return arr.splice(index, 1);\n };\n\n var run = function run(cb, sync) {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n };\n\n var on = function on() {\n var listeners = [];\n var off = function off(event, cb) {\n arrayRemove(\n listeners,\n listeners.findIndex(function(listener) {\n return listener.event === event && (listener.cb === cb || !cb);\n })\n );\n };\n var _fire = function fire(event, args, sync) {\n listeners\n .filter(function(listener) {\n return listener.event === event;\n })\n .map(function(listener) {\n return listener.cb;\n })\n .forEach(function(cb) {\n return run(function() {\n return cb.apply(void 0, _toConsumableArray(args));\n }, sync);\n });\n };\n return {\n fireSync: function fireSync(event) {\n for (\n var _len = arguments.length,\n args = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n _fire(event, args, true);\n },\n fire: function fire(event) {\n for (\n var _len2 = arguments.length,\n args = new Array(_len2 > 1 ? _len2 - 1 : 0),\n _key2 = 1;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2 - 1] = arguments[_key2];\n }\n _fire(event, args, false);\n },\n on: function on(event, cb) {\n listeners.push({ event: event, cb: cb });\n },\n onOnce: function onOnce(event, _cb) {\n listeners.push({\n event: event,\n cb: function cb() {\n off(event, _cb);\n _cb.apply(void 0, arguments);\n },\n });\n },\n off: off,\n };\n };\n\n var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(\n src,\n target,\n excluded\n ) {\n Object.getOwnPropertyNames(src)\n .filter(function(property) {\n return !excluded.includes(property);\n })\n .forEach(function(key) {\n return Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(src, key)\n );\n });\n };\n\n var PRIVATE = [\n 'fire',\n 'process',\n 'revert',\n 'load',\n 'on',\n 'off',\n 'onOnce',\n 'retryLoad',\n 'extend',\n 'archive',\n 'archived',\n 'release',\n 'released',\n 'requestProcessing',\n 'freeze',\n ];\n\n var createItemAPI = function createItemAPI(item) {\n var api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n };\n\n var removeReleasedItems = function removeReleasedItems(items) {\n items.forEach(function(item, index) {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n };\n\n var ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8,\n };\n\n var FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3,\n };\n\n var getNonNumeric = function getNonNumeric(str) {\n return /[^0-9]+/.exec(str);\n };\n\n var getDecimalSeparator = function getDecimalSeparator() {\n return getNonNumeric((1.1).toLocaleString())[0];\n };\n\n var getThousandsSeparator = function getThousandsSeparator() {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n var decimalSeparator = getDecimalSeparator();\n var thousandsStringWithSeparator = (1000.0).toLocaleString();\n var thousandsStringWithoutSeparator = (1000.0).toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n };\n\n var Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex',\n };\n\n // all registered filters\n var filters = [];\n\n // loops over matching filters and passes options to each filter, returning the mapped results\n var applyFilterChain = function applyFilterChain(key, value, utils) {\n return new Promise(function(resolve, reject) {\n // find matching filters for this key\n var matchingFilters = filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb;\n });\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n var initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters\n .reduce(\n // loop over promises passing value to next promise\n function(current, next) {\n return current.then(function(value) {\n return next(value, utils);\n });\n },\n\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n )\n .then(function(value) {\n return resolve(value);\n })\n .catch(function(error) {\n return reject(error);\n });\n });\n };\n\n var applyFilters = function applyFilters(key, value, utils) {\n return filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb(value, utils);\n });\n };\n\n // adds a new filter to the list\n var addFilter = function addFilter(key, cb) {\n return filters.push({ key: key, cb: cb });\n };\n\n var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n return Object.assign(defaultOptions, additionalOptions);\n };\n\n var getOptions = function getOptions() {\n return Object.assign({}, defaultOptions);\n };\n\n var setOptions = function setOptions(opts) {\n forin(opts, function(key, value) {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(\n value,\n defaultOptions[key][0],\n defaultOptions[key][1]\n );\n });\n };\n\n // default options on app\n var defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n\n // input field name to use\n name: ['filepond', Type.STRING],\n\n // disable the field\n disabled: [false, Type.BOOLEAN],\n\n // classname to put on wrapper\n className: [null, Type.STRING],\n\n // is the field required\n required: [false, Type.BOOLEAN],\n\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n\n // Revert mode\n forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT], // Max number of files\n checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n // Upload related\n instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n labelIdle: [\n 'Drag & Drop your files or Browse',\n Type.STRING,\n ],\n\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING], // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING], // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: [\n '',\n Type.STRING,\n ],\n\n iconProcess: [\n '',\n Type.STRING,\n ],\n\n iconRetry: [\n '',\n Type.STRING,\n ],\n\n iconUndo: [\n '',\n Type.STRING,\n ],\n\n iconDone: [\n '',\n Type.STRING,\n ],\n\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n\n // styles\n stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n // custom initial files array\n files: [[], Type.ARRAY],\n\n // show support by displaying credits\n credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n };\n\n var getItemByQuery = function getItemByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return (\n items.find(function(item) {\n return item.id === query;\n }) || null\n );\n };\n\n var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n var parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n };\n\n var getActiveItems = function getActiveItems(items) {\n return items.filter(function(item) {\n return !item.archived;\n });\n };\n\n var Status = {\n EMPTY: 0,\n IDLE: 1, // waiting\n ERROR: 2, // a file is in error state\n BUSY: 3, // busy processing or loading\n READY: 4, // all files uploaded\n };\n\n var res = null;\n var canUpdateFileInput = function canUpdateFileInput() {\n if (res === null) {\n try {\n var dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n var el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n };\n\n var ITEM_ERROR = [\n ItemStatus.LOAD_ERROR,\n ItemStatus.PROCESSING_ERROR,\n ItemStatus.PROCESSING_REVERT_ERROR,\n ];\n\n var ITEM_BUSY = [\n ItemStatus.LOADING,\n ItemStatus.PROCESSING,\n ItemStatus.PROCESSING_QUEUED,\n ItemStatus.INIT,\n ];\n\n var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\n var isItemInErrorState = function isItemInErrorState(item) {\n return ITEM_ERROR.includes(item.status);\n };\n var isItemInBusyState = function isItemInBusyState(item) {\n return ITEM_BUSY.includes(item.status);\n };\n var isItemInReadyState = function isItemInReadyState(item) {\n return ITEM_READY.includes(item.status);\n };\n\n var isAsync = function isAsync(state) {\n return (\n isObject(state.options.server) &&\n (isObject(state.options.server.process) || isFunction(state.options.server.process))\n );\n };\n\n var queries = function queries(state) {\n return {\n GET_STATUS: function GET_STATUS() {\n var items = getActiveItems(state.items);\n var EMPTY = Status.EMPTY,\n ERROR = Status.ERROR,\n BUSY = Status.BUSY,\n IDLE = Status.IDLE,\n READY = Status.READY;\n\n if (items.length === 0) return EMPTY;\n\n if (items.some(isItemInErrorState)) return ERROR;\n\n if (items.some(isItemInBusyState)) return BUSY;\n\n if (items.some(isItemInReadyState)) return READY;\n\n return IDLE;\n },\n\n GET_ITEM: function GET_ITEM(query) {\n return getItemByQuery(state.items, query);\n },\n\n GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n return getItemByQuery(getActiveItems(state.items), query);\n },\n\n GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n return getActiveItems(state.items);\n },\n\n GET_ITEMS: function GET_ITEMS() {\n return state.items;\n },\n\n GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n\n GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n\n GET_STYLES: function GET_STYLES() {\n return Object.keys(state.options)\n .filter(function(key) {\n return /^style/.test(key);\n })\n .map(function(option) {\n return {\n name: option,\n value: state.options[option],\n };\n });\n },\n\n GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n var aspectRatio = isShapeCircle\n ? 1\n : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n\n GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n return state.options.styleItemPanelAspectRatio;\n },\n\n GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n return getActiveItems(state.items).filter(function(item) {\n return item.status === status;\n });\n },\n\n GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n return getActiveItems(state.items).length;\n },\n\n SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n },\n\n IS_ASYNC: function IS_ASYNC() {\n return isAsync(state);\n },\n\n GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n return {\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n };\n },\n };\n };\n\n var hasRoomForItem = function hasRoomForItem(state) {\n var count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n var maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n };\n\n var limit = function limit(value, min, max) {\n return Math.max(Math.min(max, value), min);\n };\n\n var arrayInsert = function arrayInsert(arr, index, item) {\n return arr.splice(index, 0, item);\n };\n\n var insertItem = function insertItem(items, item, index) {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n };\n\n var isBase64DataURI = function isBase64DataURI(str) {\n return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n str\n );\n };\n\n var getFilenameFromURL = function getFilenameFromURL(url) {\n return ('' + url)\n .split('/')\n .pop()\n .split('?')\n .shift();\n };\n\n var getExtensionFromFilename = function getExtensionFromFilename(name) {\n return name.split('.').pop();\n };\n\n var guesstimateExtension = function guesstimateExtension(type) {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n var subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n\n return '';\n };\n\n var leftPad = function leftPad(value) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (padding + value).slice(-padding.length);\n };\n\n var getDateString = function getDateString() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return (\n date.getFullYear() +\n '-' +\n leftPad(date.getMonth() + 1, '00') +\n '-' +\n leftPad(date.getDate(), '00') +\n '_' +\n leftPad(date.getHours(), '00') +\n '-' +\n leftPad(date.getMinutes(), '00') +\n '-' +\n leftPad(date.getSeconds(), '00')\n );\n };\n\n var getFileFromBlob = function getFileFromBlob(blob, filename) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var file =\n typeof type === 'string'\n ? blob.slice(0, blob.size, type)\n : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n\n return file;\n };\n\n var getBlobBuilder = function getBlobBuilder() {\n return (window.BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder);\n };\n\n var createBlob = function createBlob(arrayBuffer, mimeType) {\n var BB = getBlobBuilder();\n\n if (BB) {\n var bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n\n return new Blob([arrayBuffer], {\n type: mimeType,\n });\n };\n\n var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(\n byteString,\n mimeType\n ) {\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return createBlob(ab, mimeType);\n };\n\n var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n };\n\n var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n // get data part of string (remove data:image/jpeg...,)\n var data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n };\n\n var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n };\n\n var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n var byteString = getByteStringFromBase64DataURI(dataURI);\n\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n };\n\n var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n };\n\n var getFileNameFromHeader = function getFileNameFromHeader(header) {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n var matches = header\n .split(/filename=|filename\\*=.+''/)\n .splice(1)\n .map(function(name) {\n return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n })\n .filter(function(name) {\n return name.length;\n });\n\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n };\n\n var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n if (/content-length:/i.test(header)) {\n var size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n };\n\n var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n if (/x-content-transfer-id:/i.test(header)) {\n var id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n };\n\n var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n var info = {\n source: null,\n name: null,\n size: null,\n };\n\n var rows = headers.split('\\n');\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for (\n var _iterator = rows[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n var header = _step.value;\n\n var name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n\n var size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n\n var source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return info;\n };\n\n var createFileLoader = function createFileLoader(fetchFn) {\n var state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null,\n };\n\n var getProgress = function getProgress() {\n return state.progress;\n };\n var abort = function abort() {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n var load = function load() {\n // get quick reference\n var source = state.source;\n\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n var loadURL = function loadURL(url) {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400,\n });\n\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(\n url,\n function(response) {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(\n response,\n response.name || getFilenameFromURL(url)\n );\n }\n\n api.fire(\n 'load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null\n );\n },\n function(error) {\n api.fire(\n 'error',\n typeof error === 'string'\n ? {\n type: 'error',\n code: 0,\n body: error,\n }\n : error\n );\n },\n function(computable, current, total) {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n },\n function() {\n api.fire('abort');\n },\n function(response) {\n var fileinfo = getFileInfoFromHeaders(\n typeof response === 'string' ? response : response.headers\n );\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source,\n });\n }\n );\n };\n\n var api = Object.assign({}, on(), {\n setSource: function setSource(source) {\n return (state.source = source);\n },\n getProgress: getProgress, // file load progress\n abort: abort, // abort file load\n load: load, // start load\n });\n\n return api;\n };\n\n var isGet = function isGet(method) {\n return /GET|HEAD/.test(method);\n };\n\n var sendRequest = function sendRequest(data, url, options) {\n var api = {\n onheaders: function onheaders() {},\n onprogress: function onprogress() {},\n onload: function onload() {},\n ontimeout: function ontimeout() {},\n onerror: function onerror() {},\n onabort: function onabort() {},\n abort: function abort() {\n aborted = true;\n xhr.abort();\n },\n };\n\n // timeout identifier, only used when timeout is defined\n var aborted = false;\n var headersReceived = false;\n\n // set default options\n options = Object.assign(\n {\n method: 'POST',\n headers: {},\n withCredentials: false,\n },\n options\n );\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url =\n '' +\n url +\n encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n }\n\n // create request\n var xhr = new XMLHttpRequest();\n\n // progress of load\n var process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = function(e) {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = function() {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n\n if (headersReceived) {\n return;\n }\n\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = function() {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = function() {\n return api.onerror(xhr);\n };\n\n // request aborted\n xhr.onabort = function() {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = function() {\n return api.ontimeout(xhr);\n };\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(function(key) {\n var value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n\n return api;\n };\n\n var createResponse = function createResponse(type, code, body, headers) {\n return {\n type: type,\n code: code,\n body: body,\n headers: headers,\n };\n };\n\n var createTimeoutResponse = function createTimeoutResponse(cb) {\n return function(xhr) {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n };\n };\n\n var hasQS = function hasQS(str) {\n return /\\?/.test(str);\n };\n var buildURL = function buildURL() {\n var url = '';\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n parts.forEach(function(part) {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n };\n\n var createFetchFunction = function createFetchFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal handler\n return function(url, load, error, progress, abort, headers) {\n // do local or remote request based on if the url is external\n var request = sendRequest(\n url,\n buildURL(apiUrl, action.url),\n Object.assign({}, action, {\n responseType: 'blob',\n })\n );\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse(\n 'load',\n xhr.status,\n action.method === 'HEAD'\n ? null\n : getFileFromBlob(onload(xhr.response), filename),\n headers\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4,\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n }\n */\n\n // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n var processFileChunked = function processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n ) {\n // all chunks\n var chunks = [];\n var chunkTransferId = options.chunkTransferId,\n chunkServer = options.chunkServer,\n chunkSize = options.chunkSize,\n chunkRetryDelays = options.chunkRetryDelays;\n\n // default state\n var state = {\n serverId: chunkTransferId,\n aborted: false,\n };\n\n // set onload handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(xhr, method) {\n return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // create server hook\n var requestTransferId = function requestTransferId(cb) {\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata)\n : Object.assign({}, action.headers, {\n 'Upload-Length': file.size,\n });\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n var requestTransferOffset = function requestTransferOffset(cb) {\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(state.serverId)\n : Object.assign({}, action.headers);\n\n var requestParams = {\n headers: headers,\n method: 'HEAD',\n };\n\n var request = sendRequest(null, requestUrl, requestParams);\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n var lastChunkIndex = Math.floor(file.size / chunkSize);\n for (var i = 0; i <= lastChunkIndex; i++) {\n var offset = i * chunkSize;\n var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset: offset,\n data: data,\n file: file,\n progress: 0,\n retries: _toConsumableArray(chunkRetryDelays),\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null,\n };\n }\n\n var completeProcessingChunks = function completeProcessingChunks() {\n return load(state.serverId);\n };\n\n var canProcessChunk = function canProcessChunk(chunk) {\n return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n };\n\n var processChunk = function processChunk(chunk) {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (\n chunks.every(function(chunk) {\n return chunk.status === ChunkStatus.COMPLETE;\n })\n ) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n var ondata =\n chunkServer.ondata ||\n function(fd) {\n return fd;\n };\n var onerror =\n chunkServer.onerror ||\n function(res) {\n return null;\n };\n\n // send request object\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof chunkServer.headers === 'function'\n ? chunkServer.headers(chunk)\n : Object.assign({}, chunkServer.headers, {\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name,\n });\n\n var request = (chunk.request = sendRequest(\n ondata(chunk.data),\n requestUrl,\n Object.assign({}, chunkServer, {\n headers: headers,\n })\n ));\n\n request.onload = function() {\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n\n request.onprogress = function(lengthComputable, loaded, total) {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n\n request.onerror = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n }\n };\n\n request.ontimeout = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n\n request.onabort = function() {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n\n var retryProcessChunk = function retryProcessChunk(chunk) {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(function() {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n\n var updateTotalProgress = function updateTotalProgress() {\n // calculate total progress fraction\n var totalBytesTransfered = chunks.reduce(function(p, chunk) {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n var totalSize = chunks.reduce(function(total, chunk) {\n return total + chunk.size;\n }, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n var processChunks = function processChunks() {\n var totalProcessing = chunks.filter(function(chunk) {\n return chunk.status === ChunkStatus.PROCESSING;\n }).length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n\n var abortChunks = function abortChunks() {\n chunks.forEach(function(chunk) {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(function(serverId) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(function(offset) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks\n .filter(function(chunk) {\n return chunk.offset < offset;\n })\n .forEach(function(chunk) {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n\n return {\n abort: function abort() {\n state.aborted = true;\n abortChunks();\n },\n };\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n }\n */\n var createFileProcessorFunction = function createFileProcessorFunction(\n apiUrl,\n action,\n name,\n options\n ) {\n return function(file, metadata, load, error, progress, abort, transfer) {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n var canChunkUpload = options.chunkUploads;\n var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload)\n return processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n );\n\n // set handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata) || {}\n : Object.assign(\n {},\n\n action.headers\n );\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{ name: null, file: file }] : file).forEach(function(item) {\n formData.append(\n name,\n item.file,\n item.name === null ? item.file.name : '' + item.name + item.file.name\n );\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var createProcessorFunction = function createProcessorFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var name = arguments.length > 2 ? arguments[2] : undefined;\n var options = arguments.length > 3 ? arguments[3] : undefined;\n\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function')\n return function() {\n for (\n var _len = arguments.length, params = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n params[_key] = arguments[_key];\n }\n return action.apply(void 0, [name].concat(params, [options]));\n };\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n };\n\n /*\n function signature:\n (uniqueFileId, load, error) => { }\n */\n var createRevertFunction = function createRevertFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return function(uniqueFileId, load) {\n return load();\n };\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal implementation\n return function(uniqueFileId, load, error) {\n var request = sendRequest(\n uniqueFileId,\n apiUrl + action.url,\n action // contains method, headers and withCredentials properties\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n\n return request;\n };\n };\n\n var getRandomNumber = function getRandomNumber() {\n var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return min + Math.random() * (max - min);\n };\n\n var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n var timeout = null;\n var start = Date.now();\n\n var tick = function tick() {\n var runtime = Date.now() - start;\n var delay = getRandomNumber(tickMin, tickMax);\n\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n\n var progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n\n cb(progress);\n\n timeout = setTimeout(tick, delay);\n };\n\n if (duration > 0) tick();\n\n return {\n clear: function clear() {\n clearTimeout(timeout);\n },\n };\n };\n\n var createFileProcessor = function createFileProcessor(processFn, options) {\n var state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null,\n };\n var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n\n var process = function process(file, metadata) {\n var progressFn = function progressFn() {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n\n var completeFn = function completeFn() {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n function(progress) {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n );\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n\n // the metadata to send along\n metadata,\n\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n function(response) {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response)\n ? response\n : {\n type: 'load',\n code: 200,\n body: '' + response,\n headers: {},\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (\n !allowMinimumUploadDuration ||\n (allowMinimumUploadDuration && state.perceivedProgress === 1)\n ) {\n completeFn();\n }\n },\n\n // error is expected to be an object with type, code, body\n function(error) {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire(\n 'error',\n isObject(error)\n ? error\n : {\n type: 'error',\n code: 0,\n body: '' + error,\n }\n );\n },\n\n // actual processing progress\n function(computable, current, total) {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n\n progressFn();\n },\n\n // abort does not expect a value\n function() {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n\n // register the id for this transfer\n function(transferId) {\n api.fire('transfer', transferId);\n }\n );\n };\n\n var abort = function abort() {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n\n var reset = function reset() {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n\n var getProgress = allowMinimumUploadDuration\n ? function() {\n return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n }\n : function() {\n return state.progress || null;\n };\n\n var getDuration = allowMinimumUploadDuration\n ? function() {\n return Math.min(state.duration, state.perceivedDuration);\n }\n : function() {\n return state.duration;\n };\n\n var api = Object.assign({}, on(), {\n process: process, // start processing file\n abort: abort, // abort active process request\n getProgress: getProgress,\n getDuration: getDuration,\n reset: reset,\n });\n\n return api;\n };\n\n var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n return name.substring(0, name.lastIndexOf('.')) || name;\n };\n\n var createFileStub = function createFileStub(source) {\n var data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n\n return {\n name: data[0],\n size: data[1],\n type: data[2],\n };\n };\n\n var isFile = function isFile(value) {\n return !!(value instanceof File || (value instanceof Blob && value.name));\n };\n\n var deepCloneObject = function deepCloneObject(src) {\n if (!isObject(src)) return src;\n var target = isArray(src) ? [] : {};\n for (var key in src) {\n if (!src.hasOwnProperty(key)) continue;\n var v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n };\n\n var createItem = function createItem() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var serverFileReference =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // unique id for this item, is used to identify the item across views\n var id = getUniqueId();\n\n /**\n * Internal item state\n */\n var state = {\n // is archived\n archived: false,\n\n // if is frozen, no longer fires events\n frozen: false,\n\n // removed from view\n released: false,\n\n // original source\n source: null,\n\n // file model reference\n file: file,\n\n // id of file on server\n serverFileReference: serverFileReference,\n\n // id of file transfer on server\n transferId: null,\n\n // is aborted\n processingAborted: false,\n\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n // active processes\n activeLoader: null,\n activeProcessor: null,\n };\n\n // callback used when abort processing is called to link back to the resolve method\n var abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n var metadata = {};\n\n // item data\n var setStatus = function setStatus(status) {\n return (state.status = status);\n };\n\n // fire event unless the item has been archived\n var fire = function fire(event) {\n if (state.released || state.frozen) return;\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n api.fire.apply(api, [event].concat(params));\n };\n\n // file data\n var getFileExtension = function getFileExtension() {\n return getExtensionFromFilename(state.file.name);\n };\n var getFileType = function getFileType() {\n return state.file.type;\n };\n var getFileSize = function getFileSize() {\n return state.file.size;\n };\n var getFile = function getFile() {\n return state.file;\n };\n\n //\n // logic to load a file\n //\n var load = function load(source, loader, onload) {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', function() {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', function(meta) {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', function(progress) {\n setStatus(ItemStatus.LOADING);\n\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', function(error) {\n setStatus(ItemStatus.LOAD_ERROR);\n\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', function() {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', function(file) {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n var success = function success(result) {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n\n fire('load');\n };\n\n var error = function error(result) {\n // set original file\n state.file = file;\n fire('load-meta');\n\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n\n var retryLoad = function retryLoad() {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n\n var abortLoad = function abortLoad() {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n var process = function process(processor, onprocess) {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', function() {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', function(serverFileReference) {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', function(transferId) {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n\n processor.on('load-perceived', function(serverFileReference) {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n\n processor.on('start', function() {\n fire('process-start');\n });\n\n processor.on('error', function(error) {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n\n processor.on('abort', function(serverFileReference) {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n\n processor.on('progress', function(progress) {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n var success = function success(file) {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, Object.assign({}, metadata));\n };\n\n // something went wrong during transform phase\n var error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n\n var requestProcessing = function requestProcessing() {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n\n var abortProcessing = function abortProcessing() {\n return new Promise(function(resolve) {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n resolve();\n return;\n }\n\n abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n resolve();\n };\n\n state.activeProcessor.abort();\n });\n };\n\n //\n // logic to revert a processed file\n //\n var revert = function revert(revertFileUpload, forceRevert) {\n return new Promise(function(resolve, reject) {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n var serverTransferId =\n state.serverFileReference !== null\n ? state.serverFileReference\n : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(\n serverTransferId,\n function() {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n },\n function(error) {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n }\n );\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n };\n\n // exposed methods\n var _setMetadata = function setMetadata(key, value, silent) {\n var keys = key.split('.');\n var root = keys[0];\n var last = keys.pop();\n var data = metadata;\n keys.forEach(function(key) {\n return (data = data[key]);\n });\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent: silent,\n });\n };\n\n var getMetadata = function getMetadata(key) {\n return deepCloneObject(key ? metadata[key] : metadata);\n };\n\n var api = Object.assign(\n {\n id: {\n get: function get() {\n return id;\n },\n },\n origin: {\n get: function get() {\n return origin;\n },\n set: function set(value) {\n return (origin = value);\n },\n },\n serverId: {\n get: function get() {\n return state.serverFileReference;\n },\n },\n transferId: {\n get: function get() {\n return state.transferId;\n },\n },\n status: {\n get: function get() {\n return state.status;\n },\n },\n filename: {\n get: function get() {\n return state.file.name;\n },\n },\n filenameWithoutExtension: {\n get: function get() {\n return getFilenameWithoutExtension(state.file.name);\n },\n },\n fileExtension: { get: getFileExtension },\n fileType: { get: getFileType },\n fileSize: { get: getFileSize },\n file: { get: getFile },\n relativePath: {\n get: function get() {\n return state.file._relativePath;\n },\n },\n\n source: {\n get: function get() {\n return state.source;\n },\n },\n\n getMetadata: getMetadata,\n setMetadata: function setMetadata(key, value, silent) {\n if (isObject(key)) {\n var data = key;\n Object.keys(data).forEach(function(key) {\n _setMetadata(key, data[key], value);\n });\n return key;\n }\n _setMetadata(key, value, silent);\n return value;\n },\n\n extend: function extend(name, handler) {\n return (itemAPI[name] = handler);\n },\n\n abortLoad: abortLoad,\n retryLoad: retryLoad,\n requestProcessing: requestProcessing,\n abortProcessing: abortProcessing,\n\n load: load,\n process: process,\n revert: revert,\n },\n\n on(),\n {\n freeze: function freeze() {\n return (state.frozen = true);\n },\n\n release: function release() {\n return (state.released = true);\n },\n released: {\n get: function get() {\n return state.released;\n },\n },\n\n archive: function archive() {\n return (state.archived = true);\n },\n archived: {\n get: function get() {\n return state.archived;\n },\n },\n\n // replace source and file object\n setFile: function setFile(file) {\n return (state.file = file);\n },\n }\n );\n\n // create it here instead of returning it instantly so we can extend it later\n var itemAPI = createObject(api);\n\n return itemAPI;\n };\n\n var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(function(item) {\n return item.id === query;\n });\n };\n\n var getItemById = function getItemById(items, itemId) {\n var index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n };\n\n var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n var request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob',\n });\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers)\n );\n };\n\n request.onerror = function(xhr) {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n\n var getDomainFromURL = function getDomainFromURL(url) {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url\n .toLowerCase()\n .replace('blob:', '')\n .replace(/([a-z])?:\\/\\//, '$1')\n .split('/')[0];\n };\n\n var isExternalURL = function isExternalURL(url) {\n return (\n (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n getDomainFromURL(location.href) !== getDomainFromURL(url)\n );\n };\n\n var dynamicLabel = function dynamicLabel(label) {\n return function() {\n return isFunction(label) ? label.apply(void 0, arguments) : label;\n };\n };\n\n var isMockItem = function isMockItem(item) {\n return !isFile(item.file);\n };\n\n var listUpdated = function listUpdated(dispatch, state) {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(function() {\n dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n }, 0);\n };\n\n var optionalPromise = function optionalPromise(fn) {\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n return new Promise(function(resolve) {\n if (!fn) {\n return resolve(true);\n }\n\n var result = fn.apply(void 0, params);\n\n if (result == null) {\n return resolve(true);\n }\n\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n };\n\n var sortItems = function sortItems(state, compare) {\n state.items.sort(function(a, b) {\n return compare(createItemAPI(a), createItemAPI(b));\n });\n };\n\n // returns item based on state\n var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n return function() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var query = _ref.query,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function() {} : _ref$success,\n _ref$failure = _ref.failure,\n failure = _ref$failure === void 0 ? function() {} : _ref$failure,\n options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n var item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n });\n\n return;\n }\n itemHandler(item, success, failure, options || {});\n };\n };\n\n var actions = function actions(dispatch, query, state) {\n return {\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: function ABORT_ALL() {\n getActiveItems(state.items).forEach(function(item) {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n\n /**\n * Sets initial files\n */\n DID_SET_FILES: function DID_SET_FILES(_ref2) {\n var _ref2$value = _ref2.value,\n value = _ref2$value === void 0 ? [] : _ref2$value;\n // map values to file objects\n var files = value.map(function(file) {\n return {\n source: file.source ? file.source : file,\n options: file.options,\n };\n });\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n var activeItems = getActiveItems(state.items);\n\n activeItems.forEach(function(item) {\n // if item not is in new value, remove\n if (\n !files.find(function(file) {\n return file.source === item.source || file.source === item.file;\n })\n ) {\n dispatch('REMOVE_ITEM', { query: item, remove: false });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach(function(file, index) {\n // if file is already in list\n if (\n activeItems.find(function(item) {\n return item.source === file.source || item.file === file.source;\n })\n )\n return;\n\n // not in list, add\n dispatch(\n 'ADD_ITEM',\n Object.assign({}, file, {\n interactionMethod: InteractionMethod.NONE,\n index: index,\n })\n );\n });\n },\n\n DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n var id = _ref3.id,\n action = _ref3.action,\n change = _ref3.change;\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(function() {\n var item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n action: action,\n change: change,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n if (!shouldPrepareOutput) return;\n\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n },\n },\n\n true\n );\n });\n\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source,\n });\n }\n\n // for async scenarios\n var upload = function upload() {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(function() {\n dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n }, 32);\n };\n\n var revert = function revert(doUpload) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(doUpload ? upload : function() {})\n .catch(function() {});\n };\n\n var abort = function abort(doUpload) {\n item.abortProcessing().then(doUpload ? upload : function() {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n\n MOVE_ITEM: function MOVE_ITEM(_ref4) {\n var query = _ref4.query,\n index = _ref4.index;\n var item = getItemByQuery(state.items, query);\n if (!item) return;\n var currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n\n SORT: function SORT(_ref5) {\n var compare = _ref5.compare;\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS'),\n });\n },\n\n ADD_ITEMS: function ADD_ITEMS(_ref6) {\n var items = _ref6.items,\n index = _ref6.index,\n interactionMethod = _ref6.interactionMethod,\n _ref6$success = _ref6.success,\n success = _ref6$success === void 0 ? function() {} : _ref6$success,\n _ref6$failure = _ref6.failure,\n failure = _ref6$failure === void 0 ? function() {} : _ref6$failure;\n var currentIndex = index;\n\n if (index === -1 || typeof index === 'undefined') {\n var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n var totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n\n var ignoredFiles = query('GET_IGNORED_FILES');\n var isValidFile = function isValidFile(source) {\n return isFile(source)\n ? !ignoredFiles.includes(source.name.toLowerCase())\n : !isEmpty(source);\n };\n var validItems = items.filter(isValidFile);\n\n var promises = validItems.map(function(source) {\n return new Promise(function(resolve, reject) {\n dispatch('ADD_ITEM', {\n interactionMethod: interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {},\n });\n });\n });\n\n Promise.all(promises)\n .then(success)\n .catch(failure);\n },\n\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: function ADD_ITEM(_ref7) {\n var source = _ref7.source,\n _ref7$index = _ref7.index,\n index = _ref7$index === void 0 ? -1 : _ref7$index,\n interactionMethod = _ref7.interactionMethod,\n _ref7$success = _ref7.success,\n success = _ref7$success === void 0 ? function() {} : _ref7$success,\n _ref7$failure = _ref7.failure,\n failure = _ref7$failure === void 0 ? function() {} : _ref7$failure,\n _ref7$options = _ref7.options,\n options = _ref7$options === void 0 ? {} : _ref7$options;\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null,\n });\n\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (\n isFile(source) &&\n state.options.ignoredFiles.includes(source.name.toLowerCase())\n ) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (\n state.options.allowMultiple ||\n (!state.options.allowMultiple && !state.options.allowReplace)\n ) {\n var error = createResponse('warning', 0, 'Max files');\n\n dispatch('DID_THROW_MAX_FILES', {\n source: source,\n error: error,\n });\n\n failure({ error: error, file: null });\n\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n var _item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (\n _item.status === ItemStatus.PROCESSING_COMPLETE ||\n _item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n var forceRevert = query('GET_FORCE_REVERT');\n _item\n .revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n forceRevert\n )\n .then(function() {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source: source,\n index: index,\n interactionMethod: interactionMethod,\n success: success,\n failure: failure,\n options: options,\n });\n })\n .catch(function() {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', { query: _item.id });\n }\n\n // where did the file originate\n var origin =\n options.type === 'local'\n ? FileOrigin.LOCAL\n : options.type === 'limbo'\n ? FileOrigin.LIMBO\n : FileOrigin.INPUT;\n\n // create a new blank item\n var item = createItem(\n // where did this file come from\n origin,\n\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n\n // file mock data, if defined\n options.file\n );\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(function(key) {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, { query: query, dispatch: dispatch });\n\n // where to insert new items\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n var id = item.id;\n\n // observe item events\n item.on('init', function() {\n dispatch('DID_INIT_ITEM', { id: id });\n });\n\n item.on('load-init', function() {\n dispatch('DID_START_ITEM_LOAD', { id: id });\n });\n\n item.on('load-meta', function() {\n dispatch('DID_UPDATE_ITEM_META', { id: id });\n });\n\n item.on('load-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('load-request-error', function(error) {\n var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: error.code + ' (' + error.body + ')',\n },\n });\n\n // reject the file so can be dealt with through API\n failure({ error: error, file: createItemAPI(item) });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('load-file-error', function(error) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error.status,\n status: error.status,\n });\n\n failure({ error: error.status, file: createItemAPI(item) });\n });\n\n item.on('load-abort', function() {\n dispatch('REMOVE_ITEM', { query: id });\n });\n\n item.on('load-skip', function() {\n item.on('metadata-update', function(change) {\n if (!isFile(item.file)) return;\n dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n });\n\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n });\n\n item.on('load', function() {\n var handleAdd = function handleAdd(shouldAdd) {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id,\n });\n\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', function(change) {\n dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n var loadComplete = function loadComplete() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n loadComplete();\n },\n },\n\n true\n );\n\n return;\n }\n\n loadComplete();\n });\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, { query: query, dispatch: dispatch })\n .then(function() {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n handleAdd\n );\n })\n .catch(function(e) {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: e.error,\n status: e.status,\n });\n });\n });\n\n item.on('process-start', function() {\n dispatch('DID_START_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('process-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-revert-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-complete', function(serverFileReference) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: id,\n error: null,\n serverFileReference: serverFileReference,\n });\n\n dispatch('DID_DEFINE_VALUE', { id: id, value: serverFileReference });\n });\n\n item.on('process-abort', function() {\n dispatch('DID_ABORT_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-revert', function() {\n dispatch('DID_REVERT_ITEM_PROCESSING', { id: id });\n dispatch('DID_DEFINE_VALUE', { id: id, value: null });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', {\n id: id,\n index: index,\n interactionMethod: interactionMethod,\n });\n\n listUpdated(dispatch, state);\n\n // start loading the source\n var _ref8 = state.options.server || {},\n url = _ref8.url,\n load = _ref8.load,\n restore = _ref8.restore,\n fetch = _ref8.fetch;\n\n item.load(\n source,\n\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(\n origin === FileOrigin.INPUT\n ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source)\n ? fetch\n ? createFetchFunction(url, fetch)\n : fetchBlob // remote url\n : fetchBlob // try to fetch url\n : // limbo or local\n origin === FileOrigin.LIMBO\n ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n\n // called when the file is loaded so it can be piped through the filters\n function(file, success, error) {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, { query: query })\n .then(success)\n .catch(error);\n }\n );\n },\n\n REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n var item = _ref9.item,\n success = _ref9.success,\n _ref9$failure = _ref9.failure,\n failure = _ref9$failure === void 0 ? function() {} : _ref9$failure;\n // error response if item archived\n var err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, { query: query, item: item }).then(\n function(result) {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n query: query,\n item: item,\n }).then(function(result) {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n }\n );\n },\n\n COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n var item = _ref10.item,\n data = _ref10.data;\n var success = data.success,\n source = data.source;\n\n // sort items in list\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source,\n });\n\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source,\n });\n\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n }\n },\n\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n // try loading the source one more time\n item.retryLoad();\n }),\n\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function(item, _success, failure) {\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: item.id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n _success({\n file: item,\n output: file,\n });\n },\n failure: failure,\n },\n\n true\n );\n }),\n\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function(\n item,\n success,\n failure\n ) {\n // cannot be queued (or is already queued)\n var itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n var processNow = function processNow() {\n return dispatch('REQUEST_ITEM_PROCESSING', {\n query: item,\n success: success,\n failure: failure,\n });\n };\n\n var process = function process() {\n return document.hidden ? processNow() : setTimeout(processNow, 32);\n };\n\n // if already done processing or tried to revert but didn't work, try again\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(process)\n .catch(function() {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n item.requestProcessing();\n\n dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n dispatch('PROCESS_ITEM', { query: item, success: success, failure: failure }, true);\n }),\n\n PROCESS_ITEM: getItemByQueryFromState(state, function(item, success, failure) {\n var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING)\n .length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success: success,\n failure: failure,\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n\n var processNext = function processNext() {\n // process queueud items\n var queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n var id = queueEntry.id,\n success = queueEntry.success,\n failure = queueEntry.failure;\n var itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch(\n 'PROCESS_ITEM',\n { query: id, success: success, failure: failure },\n true\n );\n };\n\n // we done function\n item.onOnce('process-complete', function() {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n var server = state.options.server;\n var instantUpload = state.options.instantUpload;\n if (\n instantUpload &&\n item.origin === FileOrigin.LOCAL &&\n isFunction(server.remove)\n ) {\n var noop = function noop() {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n var allItemsProcessed =\n query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', function(error) {\n failure({ error: error, file: createItemAPI(item) });\n processNext();\n });\n\n // start file processing\n var options = state.options;\n item.process(\n createFileProcessor(\n createProcessorFunction(\n options.server.url,\n options.server.process,\n options.name,\n {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays,\n }\n ),\n\n {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n }\n ),\n\n // called when the file is about to be processed so it can be piped through the transform filters\n function(file, success, error) {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, { query: query, item: item })\n .then(function(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n\n success(file);\n })\n .catch(error);\n }\n );\n }),\n\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n }),\n\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function(item) {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function(\n shouldRemove\n ) {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', { query: item });\n });\n }),\n\n RELEASE_ITEM: getItemByQueryFromState(state, function(item) {\n item.release();\n }),\n\n REMOVE_ITEM: getItemByQueryFromState(state, function(item, success, failure, options) {\n var removeFromView = function removeFromView() {\n // get id reference\n var id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', { error: null, id: id, item: item });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n var server = state.options.server;\n if (\n item.origin === FileOrigin.LOCAL &&\n server &&\n isFunction(server.remove) &&\n options.remove !== false\n ) {\n dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n server.remove(\n item.source,\n function() {\n return removeFromView();\n },\n function(status) {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry,\n },\n });\n }\n );\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (\n (options.revert &&\n item.origin !== FileOrigin.LOCAL &&\n item.serverId !== null) ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n (state.options.chunkUploads && state.options.chunkForce)\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n );\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n item.abortLoad();\n }),\n\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n return;\n }\n\n // abort\n item.abortProcessing().then(function() {\n var shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n });\n }),\n\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n var handleRevert = function handleRevert(shouldRevert) {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n };\n\n var fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n\n var requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(function() {\n var shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n })\n .catch(function() {});\n }),\n\n SET_OPTIONS: function SET_OPTIONS(_ref11) {\n var options = _ref11.options;\n // get all keys passed\n var optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n var prioritizedOptionKeys = PrioritizedOptions.filter(function(key) {\n return optionKeys.includes(key);\n });\n\n // order the keys, prioritized first, then rest\n var orderedOptionKeys = [].concat(\n _toConsumableArray(prioritizedOptionKeys),\n _toConsumableArray(\n Object.keys(options).filter(function(key) {\n return !prioritizedOptionKeys.includes(key);\n })\n )\n );\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(function(key) {\n dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: options[key],\n });\n });\n },\n };\n };\n\n var PrioritizedOptions = ['server'];\n\n var formatFilename = function formatFilename(name) {\n return name;\n };\n\n var createElement$1 = function createElement(tagName) {\n return document.createElement(tagName);\n };\n\n var text = function text(node, value) {\n var textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n };\n\n var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n };\n\n var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n var start = polarToCartesian(x, y, radius, endAngle);\n var end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n };\n\n var percentageArc = function percentageArc(x, y, radius, from, to) {\n var arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(\n x,\n y,\n radius,\n Math.min(0.9999, from) * 360,\n Math.min(0.9999, to) * 360,\n arcSweep\n );\n };\n\n var create = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n var svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n });\n\n svg.appendChild(root.ref.path);\n\n root.ref.svg = svg;\n\n root.appendChild(svg);\n };\n\n var write = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n if (props.opacity === 0) {\n return;\n }\n\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n var size = root.rect.element.width * 0.5;\n\n // ring state\n var ringFrom = 0;\n var ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n };\n\n var progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create: create,\n write: write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: { type: 'tween', duration: 500 },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10,\n },\n },\n },\n });\n\n var create$1 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.innerHTML = (props.icon || '') + ('' + props.label + '');\n\n props.isDisabled = false;\n };\n\n var write$1 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n var isDisabled = props.isDisabled;\n var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n };\n\n var fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button',\n },\n\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n\n listeners: true,\n },\n\n create: create$1,\n write: write$1,\n });\n\n var toNaturalFileSize = function toNaturalFileSize(bytes) {\n var decimalSeparator =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$labelBytes = options.labelBytes,\n labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n _options$labelKilobyt = options.labelKilobytes,\n labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n _options$labelMegabyt = options.labelMegabytes,\n labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n _options$labelGigabyt = options.labelGigabytes,\n labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n\n var KB = base;\n var MB = base * base;\n var GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return bytes + ' ' + labelBytes;\n }\n\n // kilobytes\n if (bytes < MB) {\n return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n }\n\n // megabytes\n if (bytes < GB) {\n return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n }\n\n // gigabytes\n return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n };\n\n var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n return value\n .toFixed(decimalCount)\n .split('.')\n .filter(function(part) {\n return part !== '0';\n })\n .join(separator);\n };\n\n var create$2 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // filename\n var fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n var fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFile = function updateFile(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n text(\n root.ref.fileSize,\n toNaturalFileSize(\n root.query('GET_ITEM_SIZE', props.id),\n '.',\n root.query('GET_FILE_SIZE_BASE'),\n root.query('GET_FILE_SIZE_LABELS', root.query)\n )\n );\n\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({ root: root, props: props });\n return;\n }\n\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n };\n\n var fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var toPercentage = function toPercentage(value) {\n return Math.round(value * 100);\n };\n\n var create$3 = function create(_ref) {\n var root = _ref.root;\n\n // main status\n var main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n var sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n\n didSetItemLoadProgress({ root: root, action: { progress: null } });\n };\n\n var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_LOADING')\n : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_PROCESSING')\n : root.query('GET_LABEL_FILE_PROCESSING') +\n ' ' +\n toPercentage(action.progress) +\n '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n var root = _ref4.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n var root = _ref5.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n };\n\n var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n var root = _ref6.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n };\n\n var clear = function clear(_ref7) {\n var root = _ref7.root;\n text(root.ref.main, '');\n text(root.ref.sub, '');\n };\n\n var error = function error(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n };\n\n var fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n /**\n * Button definitions for the file view\n */\n\n var Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION', // right\n },\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n },\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n };\n\n // make a list of buttons, we can then remove buttons from this list if they're disabled\n var ButtonKeys = [];\n forin(Buttons, function(key) {\n ButtonKeys.push(key);\n });\n\n var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n var buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n };\n\n var calculateButtonWidth = function calculateButtonWidth(root) {\n var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n };\n\n // Force on full pixels so text stays crips\n var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n };\n var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n };\n\n var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n };\n var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n };\n var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n };\n\n var DefaultStyle = {\n buttonAbortItemLoad: { opacity: 0 },\n buttonRetryItemLoad: { opacity: 0 },\n buttonRemoveItem: { opacity: 0 },\n buttonProcessItem: { opacity: 0 },\n buttonAbortItemProcessing: { opacity: 0 },\n buttonRetryItemProcessing: { opacity: 0 },\n buttonRevertItemProcessing: { opacity: 0 },\n loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n info: { translateX: 0, translateY: 0, opacity: 0 },\n status: { translateX: 0, translateY: 0, opacity: 0 },\n };\n\n var IdleStyle = {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n };\n\n var ProcessingStyle = {\n buttonAbortItemProcessing: { opacity: 1 },\n processProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n };\n\n var StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset, opacity: 1 },\n },\n\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: { opacity: 1 },\n loadProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: { opacity: 1 },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 0 },\n },\n\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1, translateX: calculateFileInfoOffset },\n },\n\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n },\n\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: { opacity: 1 },\n info: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: { opacity: 1 },\n buttonRetryItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n },\n\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { opacity: 1 },\n },\n\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_REVERT_ITEM_PROCESSING: IdleStyle,\n };\n\n // complete indicator view\n var processingCompleteIndicatorView = createView({\n create: function create(_ref) {\n var root = _ref.root;\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n /**\n * Creates the file view\n */\n var create$4 = function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // copy Buttons object\n var LocalButtons = Object.keys(Buttons).reduce(function(prev, curr) {\n prev[curr] = Object.assign({}, Buttons[curr]);\n return prev;\n }, {});\n var id = props.id;\n\n // allow reverting upload\n var allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n var isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n var buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = function buttonFilter(key) {\n return !/RevertItemProcessing/.test(key);\n };\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = function buttonFilter(key) {\n return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n };\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n } else {\n // no process controls available\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n\n var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n [\n 'DID_START_ITEM_PROCESSING',\n 'DID_REQUEST_ITEM_PROCESSING',\n 'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n 'DID_THROW_ITEM_PROCESSING_ERROR',\n ].forEach(function(key) {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n _map.info.translateX = calculateFileInfoOffset;\n _map.status.translateY = calculateFileVerticalCenterOffset;\n _map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, function(key, definition) {\n // create button\n var buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0,\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', function(e) {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, { query: id });\n });\n\n // set reference\n root.ref['button' + key] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(\n root.createChildView(processingCompleteIndicatorView)\n );\n\n root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n 'GET_STYLE_BUTTON_PROCESS_ITEM_POSITION'\n );\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id: id }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id: id }));\n\n // add progress indicators\n var loadIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION'),\n })\n );\n\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n\n var progressIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION'),\n })\n );\n\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n };\n\n var write$2 = function write(_ref3) {\n var root = _ref3.root,\n actions = _ref3.actions,\n props = _ref3.props;\n // route actions\n route({ root: root, actions: actions, props: props });\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StyleMap[action.type];\n });\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n\n var stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, function(name, defaultStyles) {\n // get reference to control\n var control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, function(key, defaultValue) {\n var value =\n stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n ? stylesToApply[name][key]\n : defaultValue;\n root.ref.activeStyles.push({ control: control, key: key, value: value });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(function(_ref4) {\n var control = _ref4.control,\n key = _ref4.key,\n value = _ref4.value;\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n };\n\n var route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(\n _ref5\n ) {\n var root = _ref5.root,\n action = _ref5.action;\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(\n _ref7\n ) {\n var root = _ref7.root,\n action = _ref7.action;\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n var root = _ref8.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n var root = _ref9.root;\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n var root = _ref10.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n var root = _ref11.root,\n action = _ref11.action;\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n var root = _ref12.root,\n action = _ref12.action;\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n },\n });\n\n var file = createView({\n create: create$4,\n write: write$2,\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n name: 'file',\n });\n\n /**\n * Creates the file view\n */\n var create$5 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n // data has moved to data.js\n root.ref.data = false;\n };\n\n /**\n * Data storage\n */\n var didLoadItem = function didLoadItem(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n tag: 'fieldset',\n name: 'file-wrapper',\n });\n\n var PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\n var create$6 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n [\n {\n name: 'top',\n },\n\n {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null,\n },\n\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY', 'scaleY'],\n },\n },\n\n {\n name: 'bottom',\n props: {\n translateY: null,\n },\n\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY'],\n },\n },\n ].forEach(function(section) {\n createSection(root, section, props.name);\n });\n\n root.element.classList.add('filepond--' + props.name);\n\n root.ref.scalable = null;\n };\n\n var createSection = function createSection(root, section, className) {\n var viewConstructor = createView({\n name: 'panel-' + section.name + ' filepond--' + className,\n mixins: section.mixins,\n ignoreRectUpdate: true,\n });\n\n var view = root.createChildView(viewConstructor, section.props);\n\n root.ref[section.name] = root.appendChildView(view);\n };\n\n var write$3 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n var topRect = root.ref.top.rect.element;\n var bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n };\n\n var panel = createView({\n name: 'panel',\n read: function read(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n return (props.heightCurrent = root.ref.bottom.translateY);\n },\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable'],\n },\n });\n\n var createDragHelper = function createDragHelper(items) {\n var itemIds = items.map(function(item) {\n return item.id;\n });\n var prevIndex = undefined;\n return {\n setIndex: function setIndex(index) {\n prevIndex = index;\n },\n getIndex: function getIndex() {\n return prevIndex;\n },\n getItemIndex: function getItemIndex(item) {\n return itemIds.indexOf(item.id);\n },\n };\n };\n\n var ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10,\n };\n\n var ITEM_SCALE_SPRING = 'spring';\n\n var StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle',\n };\n\n /**\n * Creates the file view\n */\n var create$7 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // select\n root.ref.handleClick = function(e) {\n return root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n };\n\n // set id\n root.element.id = 'filepond--item-' + props.id;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(\n root.createChildView(fileWrapper, { id: props.id })\n );\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n\n var grab = function grab(e) {\n if (!e.isPrimary) return;\n\n var removedActivateListener = false;\n\n var origin = {\n x: e.pageX,\n y: e.pageY,\n };\n\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY,\n };\n\n var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState: dragState });\n\n var drag = function drag(e) {\n if (!e.isPrimary) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n var dist =\n props.dragOffset.x * props.dragOffset.x +\n props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n\n root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState: dragState });\n };\n\n var drop = function drop(e) {\n if (!e.isPrimary) return;\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n reset();\n };\n\n var cancel = function cancel() {\n reset();\n };\n\n var reset = function reset() {\n document.removeEventListener('pointercancel', cancel);\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n\n root.dispatch('DID_DROP_ITEM', { id: props.id, dragState: dragState });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(function() {\n return root.element.addEventListener('click', root.ref.handleClick);\n }, 0);\n }\n };\n\n document.addEventListener('pointercancel', cancel);\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n\n root.element.addEventListener('pointerdown', grab);\n };\n\n var route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n root.height = action.height;\n },\n });\n\n var write$4 = createRoute(\n {\n DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n },\n DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n var root = _ref4.root;\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n },\n },\n\n function(_ref6) {\n var root = _ref6.root,\n actions = _ref6.actions,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StateMap[action.type];\n });\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n var aspectRatio =\n root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({ root: root, actions: actions, props: props });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n\n root.ref.panel.height = root.height;\n }\n );\n\n var item = createView({\n create: create$7,\n write: write$4,\n destroy: function destroy(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', { query: props.id });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: [\n 'id',\n 'interactionMethod',\n 'markedForRemoval',\n 'spawnDate',\n 'dragCenter',\n 'dragOrigin',\n 'dragOffset',\n ],\n\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: { type: 'tween', duration: 150 },\n },\n },\n });\n\n var getItemsPerRow = function(horizontalSpace, itemWidth) {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n };\n\n var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n if (!positionInView) return;\n\n var horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n var l = children.length;\n var last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n var item = children[0];\n var itemRect = item.rect.element;\n var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n var itemWidth = itemRect.width + itemHorizontalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (var index = 0; index < l; index++) {\n var child = children[index];\n var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n var itemHeight = itemRect.height + itemVerticalMargin;\n for (var _index = 0; _index < l; _index++) {\n var indexX = _index % itemsPerRow;\n var indexY = Math.floor(_index / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var itemTop = offsetY - itemRect.marginTop;\n var itemRight = offsetX + itemWidth;\n var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return _index;\n } else if (_index !== l - 1) {\n last = _index;\n } else {\n last = null;\n }\n }\n }\n\n if (last !== null) {\n return last;\n }\n\n return l;\n };\n\n var dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function setDimensions(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n },\n };\n\n var create$8 = function create(_ref) {\n var root = _ref.root;\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n\n root.ref.lastItemSpanwDate = Date.now();\n };\n\n /**\n * Inserts a new item\n * @param root\n * @param action\n */\n var addItemView = function addItemView(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var id = action.id,\n index = action.index,\n interactionMethod = action.interactionMethod;\n\n root.ref.addIndex = index;\n\n var now = Date.now();\n var spawnDate = now;\n var opacity = 1;\n\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n var dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n\n root.ref.lastItemSpanwDate = spawnDate;\n\n root.appendChildView(\n root.createChildView(\n // view type\n item,\n\n // props\n {\n spawnDate: spawnDate,\n id: id,\n opacity: opacity,\n interactionMethod: interactionMethod,\n }\n ),\n\n index\n );\n };\n\n var moveItem = function moveItem(item, x, y) {\n var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n };\n\n var introItemView = function introItemView(item, x, y, vx, vy) {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n\n item.translateY = null;\n item.translateY = y - vy * 10;\n\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n };\n\n /**\n * Removes an existing item\n * @param root\n * @param action\n */\n var removeItemView = function removeItemView(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var id = action.id;\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n };\n\n var getItemHeight = function getItemHeight(child) {\n return (\n child.rect.element.height +\n child.rect.element.marginBottom * 0.5 +\n child.rect.element.marginTop * 0.5\n );\n };\n var getItemWidth = function getItemWidth(child) {\n return (\n child.rect.element.width +\n child.rect.element.marginLeft * 0.5 +\n child.rect.element.marginRight * 0.5\n );\n };\n\n var dragItem = function dragItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var id = action.id,\n dragState = action.dragState;\n\n // reference to item\n var item = root.query('GET_ITEM', { id: id });\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n var numItems = root.childViews.length;\n var oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n\n var dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n };\n\n // get drag area dimensions\n var dragHeight = getItemHeight(view);\n var dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n var cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n var rows = Math.floor(numItems / cols + 1);\n\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (\n dragPosition.y > dropAreaDimensions.getHeight ||\n dragPosition.y < 0 ||\n dragPosition.x > dropAreaDimensions.getWidth ||\n dragPosition.x < 0\n )\n return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n var items = root.query('GET_ACTIVE_ITEMS');\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = items.map(function(item) {\n return visibleChildren.find(function(childView) {\n return childView.id === item.id;\n });\n });\n\n var currentIndex = children.findIndex(function(child) {\n return child === view;\n });\n var dragHeight = getItemHeight(view);\n var l = children.length;\n var idx = l;\n var childHeight = 0;\n var childBottom = 0;\n var childTop = 0;\n for (var i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n },\n };\n\n // get new index\n var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', { query: view, index: index });\n\n // if the index of the item changed, dispatch reorder action\n var currentIndex = dragState.getIndex();\n\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n\n if (currentIndex === undefined) return;\n\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index,\n });\n }\n };\n\n /**\n * Setup action routes\n */\n var route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem,\n });\n\n /**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\n var write$5 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions,\n shouldOptimize = _ref5.shouldOptimize;\n // route actions\n route$2({ root: root, props: props, actions: actions });\n var dragCoordinates = props.dragCoordinates;\n\n // available space on horizontal axis\n var horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n\n // sort based on current active items\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // get index\n var dragIndex = dragCoordinates\n ? getItemIndexByPosition(root, children, dragCoordinates)\n : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n var addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n\n var dragIndexOffset = 0;\n var removeIndexOffset = 0;\n var addIndexOffset = 0;\n\n if (children.length === 0) return;\n\n var childRect = children[0].rect.element;\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n var offsetY = 0;\n var dragOffset = 0;\n\n children.forEach(function(child, index) {\n if (dragIndex) {\n var dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n\n var itemHeight = child.rect.element.height + itemVerticalMargin;\n\n var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n var prevX = 0;\n var prevY = 0;\n\n children.forEach(function(child, index) {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n\n var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n var indexX = visualIndex % itemsPerRow;\n var indexY = Math.floor(visualIndex / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var vectorX = Math.sign(offsetX - prevX);\n var vectorY = Math.sign(offsetY - prevY);\n\n prevX = offsetX;\n prevY = offsetY;\n\n if (child.markedForRemoval) return;\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n };\n\n /**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\n var filterSetItemActions = function filterSetItemActions(child, actions) {\n return actions.filter(function(action) {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n };\n\n var list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: function didWriteView(_ref6) {\n var root = _ref6.root;\n root.childViews\n .filter(function(view) {\n return view.markedForRemoval && view.opacity === 0 && view.resting;\n })\n .forEach(function(view) {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates'],\n },\n });\n\n var create$9 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n };\n\n var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n action = _ref2.action;\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top:\n action.position.scopeTop -\n (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n };\n };\n\n var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n var props = _ref3.props;\n props.dragCoordinates = null;\n };\n\n var route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates,\n });\n\n var write$6 = function write(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n actions = _ref4.actions;\n\n // route actions\n route$3({ root: root, props: props, actions: actions });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n var newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n };\n\n var listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring',\n },\n },\n });\n\n var attrToggle = function attrToggle(element, name, state) {\n var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n };\n\n var resetFileInput = function resetFileInput(input) {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n var form = createElement$1('form');\n var parentNode = input.parentNode;\n var ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n };\n\n var create$a = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // set id so can be referenced from outside labels\n root.element.id = 'filepond--browser-' + props.id;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n // set configurable props\n setAcceptedFileTypes({\n root: root,\n action: { value: root.query('GET_ACCEPTED_FILE_TYPES') },\n });\n toggleAllowMultiple({ root: root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n toggleDirectoryFilter({\n root: root,\n action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') },\n });\n toggleDisabled({ root: root });\n toggleRequired({ root: root, action: { value: root.query('GET_REQUIRED') } });\n setCaptureMethod({ root: root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n // handle changes to the input field\n root.ref.handleChange = function(e) {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n var files = Array.from(root.element.files).map(function(file) {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(function() {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n\n root.element.addEventListener('change', root.ref.handleChange);\n };\n\n var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(\n root.element,\n 'accept',\n !!action.value,\n action.value ? action.value.join(',') : ''\n );\n };\n\n var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n attrToggle(root.element, 'multiple', action.value);\n };\n\n var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n attrToggle(root.element, 'webkitdirectory', action.value);\n };\n\n var toggleDisabled = function toggleDisabled(_ref5) {\n var root = _ref5.root;\n var isDisabled = root.query('GET_DISABLED');\n var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n var disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n };\n\n var toggleRequired = function toggleRequired(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n };\n\n var setCaptureMethod = function setCaptureMethod(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n attrToggle(\n root.element,\n 'capture',\n !!action.value,\n action.value === true ? '' : action.value\n );\n };\n\n var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n var root = _ref8.root;\n var element = root.element;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n };\n\n var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n var root = _ref9.root;\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n };\n\n var browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file',\n },\n\n create: create$a,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired,\n }),\n });\n\n var Key = {\n ENTER: 13,\n SPACE: 32,\n };\n\n var create$b = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // create the label and link it to the file browser\n var label = createElement$1('label');\n attr(label, 'for', 'filepond--browser-' + props.id);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n // handle keys\n root.ref.handleKeyDown = function(e) {\n var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n root.ref.handleClick = function(e) {\n var isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n };\n\n var updateLabelValue = function updateLabelValue(label, value) {\n label.innerHTML = value;\n var clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n };\n\n var dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: function destroy(_ref2) {\n var root = _ref2.root;\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n updateLabelValue(root.ref.label, action.value);\n },\n }),\n\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: { type: 'tween', duration: 150 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n var addBlob = function addBlob(_ref) {\n var root = _ref.root;\n var centerX = root.rect.element.width * 0.5;\n var centerY = root.rect.element.height * 0.5;\n\n root.ref.blob = root.appendChildView(\n root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY,\n })\n );\n };\n\n var moveBlob = function moveBlob(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.ref.blob) {\n addBlob({ root: root });\n return;\n }\n\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n };\n\n var hideBlob = function hideBlob(_ref3) {\n var root = _ref3.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n };\n\n var explodeBlob = function explodeBlob(_ref4) {\n var root = _ref4.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n };\n\n var write$7 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions;\n route$4({ root: root, props: props, actions: actions });\n var blob = root.ref.blob;\n\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n };\n\n var route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob,\n });\n\n var drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7,\n });\n\n var setInputFiles = function setInputFiles(element, files) {\n try {\n // Create a DataTransfer instance and add a newly created file\n var dataTransfer = new DataTransfer();\n files.forEach(function(file) {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(\n new File([file], file.name, {\n type: file.type,\n })\n );\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n };\n\n var create$c = function create(_ref) {\n var root = _ref.root;\n return (root.ref.fields = {});\n };\n\n var getField = function getField(root, id) {\n return root.ref.fields[id];\n };\n\n var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n root.query('GET_ACTIVE_ITEMS').forEach(function(item) {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n };\n\n var didReorderItems = function didReorderItems(_ref2) {\n var root = _ref2.root;\n return syncFieldPositionsWithItems(root);\n };\n\n var didAddItem = function didAddItem(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var fileItem = root.query('GET_ITEM', action.id);\n var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n var dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n };\n\n var didLoadItem$1 = function didLoadItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n var fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n };\n\n var didPrepareOutput = function didPrepareOutput(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(function() {\n var field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n };\n\n var didSetDisabled = function didSetDisabled(_ref6) {\n var root = _ref6.root;\n root.element.disabled = root.query('GET_DISABLED');\n };\n\n var didRemoveItem = function didRemoveItem(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n };\n\n // only runs for server files. will refuse to update the value if the field\n // is a file field\n var didDefineValue = function didDefineValue(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n if (field.type != 'file') {\n field.value = action.value;\n }\n }\n syncFieldPositionsWithItems(root);\n };\n\n var write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems,\n });\n\n var data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true,\n });\n\n var getRootNode = function getRootNode(element) {\n return 'getRootNode' in element ? element.getRootNode() : document;\n };\n\n var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n var text$1 = ['css', 'csv', 'html', 'txt'];\n var map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip',\n };\n\n var guesstimateMimeType = function guesstimateMimeType() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return (\n 'image/' +\n (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n );\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n\n return map[extension] || '';\n };\n\n var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n var links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n };\n\n /**\n * Test if datatransfer has files\n */\n var hasFiles = function hasFiles(dataTransfer) {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n };\n\n /**\n * Extracts files from a DataTransfer object\n */\n var getFiles = function getFiles(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // get the transfer items as promises\n var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n // only keep file system items (files and directories)\n .filter(function(item) {\n return isFileSystemItem(item);\n })\n\n // map each item to promise\n .map(function(item) {\n return getFilesFromItem(item);\n });\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles)\n .then(function(returnedFileGroups) {\n // flatten groups\n var files = [];\n returnedFileGroups.forEach(function(group) {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(\n files\n .filter(function(file) {\n return file;\n })\n .map(function(file) {\n if (!file._relativePath)\n file._relativePath = file.webkitRelativePath;\n return file;\n })\n );\n })\n .catch(console.error);\n });\n };\n\n var isFileSystemItem = function isFileSystemItem(item) {\n if (isEntry(item)) {\n var entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n };\n\n var getFilesFromItem = function getFilesFromItem(item) {\n return new Promise(function(resolve, reject) {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item))\n .then(resolve)\n .catch(reject);\n return;\n }\n\n resolve([item.getAsFile()]);\n });\n };\n\n var getFilesInDirectory = function getFilesInDirectory(entry) {\n return new Promise(function(resolve, reject) {\n var files = [];\n\n // the total entries to read\n var dirCounter = 0;\n var fileCounter = 0;\n\n var resolveIfDone = function resolveIfDone() {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n var readEntries = function readEntries(dirEntry) {\n dirCounter++;\n\n var directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n var readBatch = function readBatch() {\n directoryReader.readEntries(function(entries) {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n\n entries.forEach(function(entry) {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n\n entry.file(function(file) {\n var correctedFile = correctMissingFileType(file);\n if (entry.fullPath)\n correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n };\n\n var correctMissingFileType = function correctMissingFileType(file) {\n if (file.type.length) return file;\n var date = file.lastModifiedDate;\n var name = file.name;\n var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n };\n\n var isDirectoryEntry = function isDirectoryEntry(item) {\n return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n };\n\n var isEntry = function isEntry(item) {\n return 'webkitGetAsEntry' in item;\n };\n\n var getAsEntry = function getAsEntry(item) {\n return item.webkitGetAsEntry();\n };\n\n /**\n * Extracts links from a DataTransfer object\n */\n var getLinks = function getLinks(dataTransfer) {\n var links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n };\n\n var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n var data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n };\n\n var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n var data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n };\n\n var dragNDropObservers = [];\n\n var eventPosition = function eventPosition(e) {\n return {\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY,\n };\n };\n\n var createDragNDropClient = function createDragNDropClient(\n element,\n scopeToObserve,\n filterElement\n ) {\n var observer = getDragNDropObserver(scopeToObserve);\n\n var client = {\n element: element,\n filterElement: filterElement,\n state: null,\n ondrop: function ondrop() {},\n onenter: function onenter() {},\n ondrag: function ondrag() {},\n onexit: function onexit() {},\n onload: function onload() {},\n allowdrop: function allowdrop() {},\n };\n\n client.destroy = observer.addListener(client);\n\n return client;\n };\n\n var getDragNDropObserver = function getDragNDropObserver(element) {\n // see if already exists, if so, return\n var observer = dragNDropObservers.find(function(item) {\n return item.element === element;\n });\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n var newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n };\n\n var createDragNDropObserver = function createDragNDropObserver(element) {\n var clients = [];\n\n var routes = {\n dragenter: dragenter,\n dragover: dragover,\n dragleave: dragleave,\n drop: drop,\n };\n\n var handlers = {};\n\n forin(routes, function(event, createHandler) {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n\n var observer = {\n element: element,\n addListener: function addListener(client) {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return function() {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n forin(routes, function(event) {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n },\n };\n\n return observer;\n };\n\n var elementFromPoint = function elementFromPoint(root, point) {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n };\n\n var isEventTarget = function isEventTarget(e, target) {\n // get root\n var root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n var elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset,\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n };\n\n var initialTarget = null;\n\n var setDropEffect = function setDropEffect(dataTransfer, effect) {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n };\n\n var dragenter = function dragenter(root, clients) {\n return function(e) {\n e.preventDefault();\n\n initialTarget = e.target;\n\n clients.forEach(function(client) {\n var element = client.element,\n onenter = client.onenter;\n\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n };\n };\n\n var dragover = function dragover(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n var overDropTarget = false;\n\n clients.some(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n onenter = client.onenter,\n onexit = client.onexit,\n ondrag = client.ondrag,\n allowdrop = client.allowdrop;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n var allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n };\n };\n\n var drop = function drop(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n clients.forEach(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n ondrop = client.ondrop,\n onexit = client.onexit,\n allowdrop = client.allowdrop;\n\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n };\n };\n\n var dragleave = function dragleave(root, clients) {\n return function(e) {\n if (initialTarget !== e.target) {\n return;\n }\n\n clients.forEach(function(client) {\n var onexit = client.onexit;\n\n client.state = null;\n\n onexit(eventPosition(e));\n });\n };\n };\n\n var createHopper = function createHopper(scope, validateItems, options) {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n var catchesDropsOnPage = options.catchesDropsOnPage,\n requiresDropOnElement = options.requiresDropOnElement,\n _options$filterItems = options.filterItems,\n filterItems =\n _options$filterItems === void 0\n ? function(items) {\n return items;\n }\n : _options$filterItems;\n\n // create a dnd client\n var client = createDragNDropClient(\n scope,\n catchesDropsOnPage ? document.documentElement : scope,\n requiresDropOnElement\n );\n\n // current client state\n var lastState = '';\n var currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = function(items) {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n\n client.ondrop = function(position, items) {\n var filteredItems = filterItems(items);\n\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n\n currentState = 'drag-drop';\n\n api.onload(filteredItems, position);\n };\n\n client.ondrag = function(position) {\n api.ondrag(position);\n };\n\n client.onenter = function(position) {\n currentState = 'drag-over';\n\n api.ondragstart(position);\n };\n\n client.onexit = function(position) {\n currentState = 'drag-exit';\n\n api.ondragend(position);\n };\n\n var api = {\n updateHopperState: function updateHopperState() {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: function onload() {},\n ondragstart: function ondragstart() {},\n ondrag: function ondrag() {},\n ondragend: function ondragend() {},\n destroy: function destroy() {\n // destroy client\n client.destroy();\n },\n };\n\n return api;\n };\n\n var listening = false;\n var listeners$1 = [];\n\n var handlePaste = function handlePaste(e) {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n var activeEl = document.activeElement;\n var isActiveElementEditable =\n activeEl &&\n (/textarea|input/i.test(activeEl.nodeName) ||\n activeEl.getAttribute('contenteditable') === 'true');\n\n if (isActiveElementEditable) {\n // test textarea or input is contained in filepond root\n var inScope = false;\n var element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n\n if (!inScope) return;\n }\n\n requestDataTransferItems(e.clipboardData).then(function(files) {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(function(listener) {\n return listener(files);\n });\n });\n };\n\n var listen = function listen(cb) {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n\n listening = true;\n document.addEventListener('paste', handlePaste);\n };\n\n var unlisten = function unlisten(listener) {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n };\n\n var createPaster = function createPaster() {\n var cb = function cb(files) {\n api.onload(files);\n };\n\n var api = {\n destroy: function destroy() {\n unlisten(cb);\n },\n onload: function onload() {},\n };\n\n listen(cb);\n\n return api;\n };\n\n /**\n * Creates the file view\n */\n var create$d = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.id = 'filepond--assistant-' + props.id;\n attr(root.element, 'role', 'status');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n };\n\n var addFilesNotificationTimeout = null;\n var notificationClearTimeout = null;\n\n var filenames = [];\n\n var assist = function assist(root, message) {\n root.element.textContent = message;\n };\n\n var clear$1 = function clear(root) {\n root.element.textContent = '';\n };\n\n var listModified = function listModified(root, filename, label) {\n var total = root.query('GET_TOTAL_ITEMS');\n assist(\n root,\n label +\n ' ' +\n filename +\n ', ' +\n total +\n ' ' +\n (total === 1\n ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n : root.query('GET_LABEL_FILE_COUNT_PLURAL'))\n );\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(function() {\n clear$1(root);\n }, 1500);\n };\n\n var isUsingFilePond = function isUsingFilePond(root) {\n return root.element.parentNode.contains(document.activeElement);\n };\n\n var itemAdded = function itemAdded(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n root.element.textContent = '';\n var item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(function() {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n\n filenames.length = 0;\n }, 750);\n };\n\n var itemRemoved = function itemRemoved(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n var item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n };\n\n var itemProcessed = function itemProcessed(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemError = function itemError(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n };\n\n var assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n }),\n\n tag: 'span',\n name: 'assistant',\n });\n\n var toCamels = function toCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string.replace(new RegExp(separator + '.', 'g'), function(sub) {\n return sub.charAt(1).toUpperCase();\n });\n };\n\n var debounce = function debounce(func) {\n var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n var immidiateOnly =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var last = Date.now();\n var timeout = null;\n\n return function() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeout);\n\n var dist = Date.now() - last;\n\n var fn = function fn() {\n last = Date.now();\n func.apply(void 0, args);\n };\n\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n };\n\n var MAX_FILES_LIMIT = 1000000;\n\n var prevent = function prevent(e) {\n return e.preventDefault();\n };\n\n var create$e = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // Add id\n var id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n var className = root.query('GET_CLASS_NAME');\n if (className) {\n className\n .split(' ')\n .filter(function(name) {\n return name.length;\n })\n .forEach(function(name) {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(\n root.createChildView(\n dropLabel,\n Object.assign({}, props, {\n translateY: null,\n caption: root.query('GET_LABEL_IDLE'),\n })\n )\n );\n\n // List of items\n root.ref.list = root.appendChildView(\n root.createChildView(listScroller, { translateY: null })\n );\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(\n root.createChildView(assistant, Object.assign({}, props))\n );\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES')\n .filter(function(style) {\n return !isEmpty(style.value);\n })\n .map(function(_ref2) {\n var name = _ref2.name,\n value = _ref2.value;\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(function() {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n var hasPointerEvents = 'PointerEvent' in window;\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, { passive: false });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n var credits = root.query('GET_CREDITS');\n var hasCredits = credits.length === 2;\n if (hasCredits) {\n var frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.href = credits[0];\n frag.tabIndex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n };\n\n var write$9 = function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props,\n actions = _ref3.actions;\n // route actions\n route$5({ root: root, props: props, actions: actions });\n\n // apply style properties\n actions\n .filter(function(action) {\n return /^DID_SET_STYLE_/.test(action.type);\n })\n .filter(function(action) {\n return !isEmpty(action.data.value);\n })\n .map(function(_ref4) {\n var type = _ref4.type,\n data = _ref4.data;\n var name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n\n if (root.rect.element.hidden) return;\n\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n var bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n var _root$ref = root.ref,\n hopper = _root$ref.hopper,\n label = _root$ref.label,\n list = _root$ref.list,\n panel = _root$ref.panel;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n var atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n var addAction = actions.find(function(action) {\n return action.type === 'DID_ADD_ITEM';\n });\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n var interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n\n var listItemMargin = calculateListItemMargin(root);\n\n var listHeight = calculateListHeight(root);\n\n var labelHeight = label.rect.element.height;\n var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n var visualHeight =\n currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n var boundsHeight =\n currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY =\n Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n var width = root.rect.element.width;\n var height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n var history = root.ref.updateHistory;\n history.push(width);\n\n var MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n var l = history.length;\n var bottom = l - 10;\n var bounces = 0;\n for (var i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n var listAvailableHeight =\n // the height of the panel minus the label height\n height -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n var _listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > _listAvailableHeight) {\n list.overflow = _listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n var isCappedHeight = visualHeight >= bounds.cappedHeight;\n var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight\n ? panelHeight\n : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n var _listAvailableHeight2 =\n // the height of the panel minus the label height\n panelHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n list.overflow = _listAvailableHeight2;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(\n bounds.cappedHeight,\n boundsHeight - listItemMargin.top - listItemMargin.bottom\n );\n } else {\n // flexible height\n\n // not a fixed height panel\n var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent)\n root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n };\n\n var calculateListItemMargin = function calculateListItemMargin(root) {\n var item = root.ref.list.childViews[0].childViews[0];\n return item\n ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom,\n }\n : {\n top: 0,\n bottom: 0,\n };\n };\n\n var calculateListHeight = function calculateListHeight(root) {\n var visual = 0;\n var bounds = 0;\n\n // get file list reference\n var scrollList = root.ref.list;\n var itemList = scrollList.childViews[0];\n var visibleChildren = itemList.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // no children, done!\n if (children.length === 0) return { visual: visual, bounds: bounds };\n\n var horizontalSpace = itemList.rect.element.width;\n var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n var childRect = children[0].rect.element;\n\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n\n var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n var removedItem = children.find(function(child) {\n return child.markedForRemoval && child.opacity < 0.45;\n })\n ? -1\n : 0;\n var verticalItemCount = children.length + newItem + removedItem;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(function(item) {\n var height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n\n return { visual: visual, bounds: bounds };\n };\n\n var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n var height = root.ref.measureHeight || null;\n var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n var fixedHeight = height === 0 ? null : height;\n\n return {\n cappedHeight: cappedHeight,\n fixedHeight: fixedHeight,\n };\n };\n\n var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n var allowReplace = root.query('GET_ALLOW_REPLACE');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n var totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n var hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n return false;\n };\n\n var getDragIndex = function getDragIndex(list, children, position) {\n var itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top:\n position.scopeTop -\n (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n });\n };\n\n /**\n * Enable or disable file drop functionality\n */\n var toggleDrop = function toggleDrop(root) {\n var isAllowed = root.query('GET_ALLOW_DROP');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n var hopper = createHopper(\n root.element,\n function(items) {\n // allow quick validation of dropped items\n var beforeDropFile =\n root.query('GET_BEFORE_DROP_FILE') ||\n function() {\n return true;\n };\n\n // all items should be validated by all filters as valid\n var dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation\n ? items.every(function(item) {\n return (\n applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query,\n }).every(function(result) {\n return result === true;\n }) && beforeDropFile(item)\n );\n })\n : true;\n },\n {\n filterItems: function filterItems(items) {\n var ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(function(item) {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n }\n );\n\n hopper.onload = function(items, position) {\n // get item children elements and sort based on list sort\n var list = root.ref.list.childViews[0];\n var visibleChildren = list.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP,\n });\n });\n\n root.dispatch('DID_DROP', { position: position });\n\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n hopper.ondragstart = function(position) {\n root.dispatch('DID_START_DRAG', { position: position });\n };\n\n hopper.ondrag = debounce(function(position) {\n root.dispatch('DID_DRAG', { position: position });\n });\n\n hopper.ondragend = function(position) {\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n root.ref.hopper = hopper;\n\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n };\n\n /**\n * Enable or disable browse functionality\n */\n var toggleBrowse = function toggleBrowse(root, props) {\n var isAllowed = root.query('GET_ALLOW_BROWSE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(\n root.createChildView(\n browser,\n Object.assign({}, props, {\n onload: function onload(items) {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch,\n }).then(function(queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE,\n });\n });\n },\n })\n ),\n\n 0\n );\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n };\n\n /**\n * Enable or disable paste functionality\n */\n var togglePaste = function togglePaste(root) {\n var isAllowed = root.query('GET_ALLOW_PASTE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = function(items) {\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE,\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n };\n\n /**\n * Route actions\n */\n var route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n var root = _ref6.root;\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n var root = _ref7.root;\n togglePaste(root);\n },\n DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n var root = _ref8.root,\n props = _ref8.props;\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n var isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n },\n });\n\n var root = createView({\n name: 'root',\n read: function read(_ref9) {\n var root = _ref9.root;\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height'],\n },\n });\n\n // creates the app\n var createApp = function createApp() {\n var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // let element\n var originalElement = null;\n\n // get default options\n var defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n var store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n\n // queries\n [queries, createOptionQueries(defaultOptions)],\n\n // action handlers\n [actions, createOptionActions(defaultOptions)]\n );\n\n // set initial options\n store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n // kick thread if visibility changes\n var visibilityHandler = function visibilityHandler() {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n var resizeDoneTimer = null;\n var isResizing = false;\n var isResizingHorizontally = false;\n var initialWindowWidth = null;\n var currentWindowWidth = null;\n var resizeHandler = function resizeHandler() {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(function() {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n var view = root(store, { id: getUniqueId() });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n var isResting = false;\n var isHidden = false;\n\n var readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: function _read() {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: function _write(ts) {\n // get all actions from store\n var actions = store\n .processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(function(action) {\n return !/^SET_/.test(action.type);\n });\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n },\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n var createEvent = function createEvent(name) {\n return function(data) {\n // create default event\n var event = {\n type: name,\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? Object.assign({}, data.error) : null;\n }\n\n if (data.status) {\n event.status = Object.assign({}, data.status);\n }\n\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n\n return event;\n };\n };\n\n var eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n\n DID_INIT: createEvent('init'),\n\n DID_THROW_MAX_FILES: createEvent('warning'),\n\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n DID_REMOVE_ITEM: createEvent('removefile'),\n\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n DID_REORDER_ITEMS: createEvent('reorderfiles'),\n };\n\n var exposeEvent = function exposeEvent(event) {\n // create event object to be dispatched\n var detail = Object.assign({ pond: exports }, event);\n delete detail.type;\n view.element.dispatchEvent(\n new CustomEvent('FilePond:' + event.type, {\n // event info\n detail: detail,\n\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true, // triggers listeners outside of shadow root\n })\n );\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n var params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n var filtered = ['type', 'error', 'file'];\n Object.keys(event)\n .filter(function(key) {\n return !filtered.includes(key);\n })\n .forEach(function(key) {\n return params.push(event[key]);\n });\n\n // on(type, () => { })\n exports.fire.apply(exports, [event.type].concat(params));\n\n // oninit = () => {}\n var handler = store.query('GET_ON' + event.type.toUpperCase());\n if (handler) {\n handler.apply(void 0, params);\n }\n };\n\n var routeActionsToEvents = function routeActionsToEvents(actions) {\n if (!actions.length) return;\n actions\n .filter(function(action) {\n return eventRoutes[action.type];\n })\n .forEach(function(action) {\n var routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(function(route) {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(function() {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n var setOptions = function setOptions(options) {\n return store.dispatch('SET_OPTIONS', { options: options });\n };\n\n var getFile = function getFile(query) {\n return store.query('GET_ACTIVE_ITEM', query);\n };\n\n var prepareFile = function prepareFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var addFile = function addFile(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function(resolve, reject) {\n addFiles([{ source: source, options: options }], { index: options.index })\n .then(function(items) {\n return resolve(items && items[0]);\n })\n .catch(reject);\n });\n };\n\n var isFilePondFile = function isFilePondFile(obj) {\n return obj.file && obj.id;\n };\n\n var removeFile = function removeFile(query, options) {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', Object.assign({}, options, { query: query }));\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n\n var addFiles = function addFiles() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n return new Promise(function(resolve, reject) {\n var sources = [];\n var options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n var lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push.apply(sources, args);\n }\n\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject,\n });\n });\n };\n\n var getFiles = function getFiles() {\n return store.query('GET_ACTIVE_ITEMS');\n };\n\n var processFile = function processFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var prepareFiles = function prepareFiles() {\n for (\n var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2] = arguments[_key2];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n var items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n\n var processFiles = function processFiles() {\n for (\n var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;\n _key3 < _len3;\n _key3++\n ) {\n args[_key3] = arguments[_key3];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n var files = getFiles().filter(function(item) {\n return (\n !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n item.status !== ItemStatus.PROCESSING &&\n item.status !== ItemStatus.PROCESSING_COMPLETE &&\n item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n );\n });\n\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n\n var removeFiles = function removeFiles() {\n for (\n var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;\n _key4 < _len4;\n _key4++\n ) {\n args[_key4] = arguments[_key4];\n }\n\n var queries = Array.isArray(args[0]) ? args[0] : args;\n\n var options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n\n var files = getFiles();\n\n if (!queries.length)\n return Promise.all(\n files.map(function(file) {\n return removeFile(file, options);\n })\n );\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n var mappedQueries = queries\n .map(function(query) {\n return isNumber(query) ? (files[query] ? files[query].id : null) : query;\n })\n .filter(function(query) {\n return query;\n });\n\n return mappedQueries.map(function(q) {\n return removeFile(q, options);\n });\n };\n\n var exports = Object.assign(\n {},\n\n on(),\n {},\n\n readWriteApi,\n {},\n\n createOptionAPI(store, defaultOptions),\n {\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions: setOptions,\n\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile: addFile,\n\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles: addFiles,\n\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile: getFile,\n\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile: processFile,\n\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile: prepareFile,\n\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile: removeFile,\n\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: function moveFile(query, index) {\n return store.dispatch('MOVE_ITEM', { query: query, index: index });\n },\n\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles: getFiles,\n\n /**\n * Starts uploading all files\n */\n processFiles: processFiles,\n\n /**\n * Clears all files from the files list\n */\n removeFiles: removeFiles,\n\n /**\n * Starts preparing output of all files\n */\n prepareFiles: prepareFiles,\n\n /**\n * Sort list of files\n */\n sort: function sort(compare) {\n return store.dispatch('SORT', { compare: compare });\n },\n\n /**\n * Browse the file system for a file\n */\n browse: function browse() {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n\n /**\n * Destroys the app\n */\n destroy: function destroy() {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: function insertBefore$1(element) {\n return insertBefore(view.element, element);\n },\n\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: function insertAfter$1(element) {\n return insertAfter(view.element, element);\n },\n\n /**\n * Appends the plugin to the target element\n */\n appendTo: function appendTo(element) {\n return element.appendChild(view.element);\n },\n\n /**\n * Replaces an element with the app\n */\n replaceElement: function replaceElement(element) {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n\n /**\n * Restores the original element\n */\n restoreElement: function restoreElement() {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: function isAttachedTo(element) {\n return view.element === element || originalElement === element;\n },\n\n /**\n * Returns the root element\n */\n element: {\n get: function get() {\n return view.element;\n },\n },\n\n /**\n * Returns the current pond status\n */\n status: {\n get: function get() {\n return store.query('GET_STATUS');\n },\n },\n }\n );\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n };\n\n var createAppObject = function createAppObject() {\n var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // default options\n var defaultOptions = {};\n forin(getOptions(), function(key, value) {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n var app = createApp(\n Object.assign(\n {},\n\n defaultOptions,\n {},\n\n customOptions\n )\n );\n\n // return the plugin instance\n return app;\n };\n\n var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n };\n\n var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n return toCamels(attributeName.replace(/^data-/, ''));\n };\n\n var mapObject = function mapObject(object, propertyMap) {\n // remove unwanted\n forin(propertyMap, function(selector, mapping) {\n forin(object, function(property, value) {\n // create regexp shortcut\n var selectorRegExp = new RegExp(selector);\n\n // tests if\n var matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n var group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n };\n\n var getAttributesAsObject = function getAttributesAsObject(node) {\n var attributeMapping =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // turn attributes into object\n var attributes = [];\n forin(node.attributes, function(index) {\n attributes.push(node.attributes[index]);\n });\n\n var output = attributes\n .filter(function(attribute) {\n return attribute.name;\n })\n .reduce(function(obj, attribute) {\n var value = attr(node, attribute.name);\n\n obj[attributeNameToPropertyName(attribute.name)] =\n value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n\n return output;\n };\n\n var createAppAtElement = function createAppAtElement(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // how attributes of the input element are mapped to the options for the plugin\n var attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process',\n },\n\n '^revert': {\n group: 'revert',\n },\n\n '^fetch': {\n group: 'fetch',\n },\n\n '^restore': {\n group: 'restore',\n },\n\n '^load': {\n group: 'load',\n },\n },\n },\n\n // don't include in object\n '^type$': false,\n '^files$': false,\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n var mergedOptions = Object.assign({}, options);\n\n var attributeOptions = getAttributesAsObject(\n element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n attributeMapping\n );\n\n // merge with options object\n Object.keys(attributeOptions).forEach(function(key) {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(\n Array.from(element.querySelectorAll('input:not([type=file])')).map(function(input) {\n return {\n source: input.value,\n options: {\n type: input.dataset.type,\n },\n };\n })\n );\n\n // build plugin\n var app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(function(file) {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n };\n\n // if an element is passed, we create the instance at that element, if not, we just create an up object\n var createApp$1 = function createApp() {\n return isNode(arguments.length <= 0 ? undefined : arguments[0])\n ? createAppAtElement.apply(void 0, arguments)\n : createAppObject.apply(void 0, arguments);\n };\n\n var PRIVATE_METHODS = ['fire', '_read', '_write'];\n\n var createAppAPI = function createAppAPI(app) {\n var api = {};\n\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n return api;\n };\n\n /**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\n var replaceInString = function replaceInString(string, replacements) {\n return string.replace(/(?:{([a-zA-Z]+)})/g, function(match, group) {\n return replacements[group];\n });\n };\n\n var createWorker = function createWorker(fn) {\n var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript',\n });\n\n var workerURL = URL.createObjectURL(workerBlob);\n var worker = new Worker(workerURL);\n\n return {\n transfer: function transfer(message, cb) {},\n post: function post(message, cb, transferList) {\n var id = getUniqueId();\n\n worker.onmessage = function(e) {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n\n worker.postMessage(\n {\n id: id,\n message: message,\n },\n\n transferList\n );\n },\n terminate: function terminate() {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n },\n };\n };\n\n var loadImage = function loadImage(url) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function(e) {\n reject(e);\n };\n img.src = url;\n });\n };\n\n var renameFile = function renameFile(file, name) {\n var renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n };\n\n var copyFile = function copyFile(file) {\n return renameFile(file, file.name);\n };\n\n // already registered plugins (can't register twice)\n var registeredPlugins = [];\n\n // pass utils to plugin\n var createAppPlugin = function createAppPlugin(plugin) {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n var pluginOutline = plugin({\n addFilter: addFilter,\n utils: {\n Type: Type,\n forin: forin,\n isString: isString,\n isFile: isFile,\n toNaturalFileSize: toNaturalFileSize,\n replaceInString: replaceInString,\n getExtensionFromFilename: getExtensionFromFilename,\n getFilenameWithoutExtension: getFilenameWithoutExtension,\n guesstimateMimeType: guesstimateMimeType,\n getFileFromBlob: getFileFromBlob,\n getFilenameFromURL: getFilenameFromURL,\n createRoute: createRoute,\n createWorker: createWorker,\n createView: createView,\n createItemAPI: createItemAPI,\n loadImage: loadImage,\n copyFile: copyFile,\n renameFile: renameFile,\n createBlob: createBlob,\n applyFilterChain: applyFilterChain,\n text: text,\n getNumericAspectRatioFromString: getNumericAspectRatioFromString,\n },\n\n views: {\n fileActionButton: fileActionButton,\n },\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n };\n\n // feature detection used by supported() method\n var isOperaMini = function isOperaMini() {\n return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n };\n var hasPromises = function hasPromises() {\n return 'Promise' in window;\n };\n var hasBlobSlice = function hasBlobSlice() {\n return 'slice' in Blob.prototype;\n };\n var hasCreateObjectURL = function hasCreateObjectURL() {\n return 'URL' in window && 'createObjectURL' in window.URL;\n };\n var hasVisibility = function hasVisibility() {\n return 'visibilityState' in document;\n };\n var hasTiming = function hasTiming() {\n return 'performance' in window;\n }; // iOS 8.x\n var hasCSSSupports = function hasCSSSupports() {\n return 'supports' in (window.CSS || {});\n }; // use to detect Safari 9+\n var isIE11 = function isIE11() {\n return /MSIE|Trident/.test(window.navigator.userAgent);\n };\n\n var supported = (function() {\n // Runs immediately and then remembers result for subsequent calls\n var isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() &&\n hasPromises() &&\n hasBlobSlice() &&\n hasCreateObjectURL() &&\n hasTiming() &&\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n (hasCSSSupports() || isIE11());\n\n return function() {\n return isSupported;\n };\n })();\n\n /**\n * Plugin internal state (over all instances)\n */\n var state = {\n // active app instances, used to redraw the apps and to find the later\n apps: [],\n };\n\n // plugin name\n var name = 'filepond';\n\n /**\n * Public Plugin methods\n */\n var fn = function fn() {};\n exports.Status = {};\n exports.FileStatus = {};\n exports.FileOrigin = {};\n exports.OptionTypes = {};\n exports.create = fn;\n exports.destroy = fn;\n exports.parse = fn;\n exports.find = fn;\n exports.registerPlugin = fn;\n exports.getOptions = fn;\n exports.setOptions = fn;\n\n // if not supported, no API\n if (supported()) {\n // start painter and fire load event\n createPainter(\n function() {\n state.apps.forEach(function(app) {\n return app._read();\n });\n },\n function(ts) {\n state.apps.forEach(function(app) {\n return app._write(ts);\n });\n }\n );\n\n // fire loaded event so we know when FilePond is available\n var dispatch = function dispatch() {\n // let others know we have area ready\n document.dispatchEvent(\n new CustomEvent('FilePond:loaded', {\n detail: {\n supported: supported,\n create: exports.create,\n destroy: exports.destroy,\n parse: exports.parse,\n find: exports.find,\n registerPlugin: exports.registerPlugin,\n setOptions: exports.setOptions,\n },\n })\n );\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(function() {\n return dispatch();\n }, 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n var updateOptionTypes = function updateOptionTypes() {\n return forin(getOptions(), function(key, value) {\n exports.OptionTypes[key] = value[1];\n });\n };\n\n exports.Status = Object.assign({}, Status);\n exports.FileOrigin = Object.assign({}, FileOrigin);\n exports.FileStatus = Object.assign({}, ItemStatus);\n\n exports.OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n exports.create = function create() {\n var app = createApp$1.apply(void 0, arguments);\n app.on('destroy', exports.destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n exports.destroy = function destroy(hook) {\n // returns true if the app was destroyed successfully\n var indexToRemove = state.apps.findIndex(function(app) {\n return app.isAttachedTo(hook);\n });\n if (indexToRemove >= 0) {\n // remove from apps\n var app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n\n return true;\n }\n\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n exports.parse = function parse(context) {\n // get all possible hooks\n var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n // filter out already active hooks\n var newHooks = matchedHooks.filter(function(newHook) {\n return !state.apps.find(function(app) {\n return app.isAttachedTo(newHook);\n });\n });\n\n // create new instance for each hook\n return newHooks.map(function(hook) {\n return exports.create(hook);\n });\n };\n\n // returns an app based on the given element hook\n exports.find = function find(hook) {\n var app = state.apps.find(function(app) {\n return app.isAttachedTo(hook);\n });\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n exports.registerPlugin = function registerPlugin() {\n for (\n var _len = arguments.length, plugins = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n plugins[_key] = arguments[_key];\n }\n\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n\n exports.getOptions = function getOptions$1() {\n var opts = {};\n forin(getOptions(), function(key, value) {\n opts[key] = value[0];\n });\n return opts;\n };\n\n exports.setOptions = function setOptions$1(opts) {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(function(app) {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return exports.getOptions();\n };\n }\n\n exports.supported = supported;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',_vm._g({directives:[{name:\"ripple\",rawName:\"v-ripple\"}],class:_vm.buttonClass,attrs:{\"type\":\"button\"}},_vm.$listeners),[_vm._t(\"default\",[(_vm.loading && !_vm.icon)?_c('span',{class:_vm.iconClass}):_vm._e(),(_vm.icon)?_c('span',{class:_vm.iconClass}):_vm._e(),_c('span',{staticClass:\"p-button-label\"},[_vm._v(_vm._s(_vm.label||' '))]),(_vm.badge)?_c('span',{staticClass:\"p-badge\",class:_vm.badgeStyleClass},[_vm._v(_vm._s(_vm.badge))]):_vm._e()])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n {{label||' '}}\n {{badge}}\n \n \n\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Button.vue?vue&type=template&id=41640f82&\"\nimport script from \"./Button.vue?vue&type=script&lang=js&\"\nexport * from \"./Button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * FilePondPluginGetFile 1.1.0\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit undefined for details.\n */\n\n/* eslint-disable */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global =\n typeof globalThis !== 'undefined' ? globalThis : global || self),\n (global.FilePondPluginGetFile = factory()));\n})(this, function () {\n 'use strict';\n\n /**\n * Register the download component by inserting the download icon\n */\n const registerDownloadComponent = (\n item,\n el,\n labelButtonDownload,\n allowDownloadByUrl,\n downloadFunction\n ) => {\n const info = el.querySelector('.filepond--file-info'),\n mainInfo = el.querySelector('.filepond--file-info-main'),\n downloadIcon = getDownloadIcon(labelButtonDownload);\n let container = el.querySelector('.filepond--file-info-main-container');\n if (!container) {\n container = document.createElement('div');\n container.className = 'filepond--file-info-main-container';\n container.append(mainInfo);\n info.prepend(container);\n }\n container.prepend(downloadIcon);\n downloadIcon.addEventListener('click', () =>\n downloadFile(item, allowDownloadByUrl, downloadFunction)\n );\n };\n\n /**\n * Generates the download icon\n */\n const getDownloadIcon = (labelButtonDownload) => {\n let icon = document.createElement('span');\n icon.className = 'filepond--download-icon';\n icon.title = labelButtonDownload;\n return icon;\n };\n\n /**\n * Triggers the actual download of the uploaded file\n */\n const downloadFile = (item, allowDownloadByUrl, downloadFunction) => {\n if (downloadFunction && typeof downloadFunction === 'function') {\n downloadFunction(item);\n return;\n }\n // if client want to download file from remote server\n if (allowDownloadByUrl && item.getMetadata('url')) {\n location.href = item.getMetadata('url'); // full path to remote server is stored in metadata with key 'url'\n } else {\n // create a temporary hyperlink to force the browser to download the file\n const a = document.createElement('a');\n const url = window.URL.createObjectURL(item.file);\n document.body.appendChild(a);\n a.style.display = 'none';\n a.href = url;\n a.download = item.file.name;\n a.click();\n window.URL.revokeObjectURL(url);\n a.remove();\n }\n };\n\n /**\n * Download Plugin\n */\n const plugin = (fpAPI) => {\n const { addFilter, utils } = fpAPI;\n const { Type, createRoute } = utils;\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', (viewAPI) => {\n // get reference to created view\n const { is, view, query } = viewAPI;\n\n // only hook up to item view\n if (!is('file')) {\n return;\n }\n\n // create the get file plugin\n const didLoadItem = ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n if (!item || item.archived) {\n return;\n }\n const labelButtonDownload = root.query(\n 'GET_LABEL_BUTTON_DOWNLOAD_ITEM'\n );\n const allowDownloadByUrl = root.query('GET_ALLOW_DOWNLOAD_BY_URL');\n const downloadFunction = root.query('GET_DOWNLOAD_FUNCTION');\n registerDownloadComponent(\n item,\n root.element,\n labelButtonDownload,\n allowDownloadByUrl,\n downloadFunction\n );\n };\n\n // start writing\n view.registerWriter(\n createRoute(\n {\n DID_LOAD_ITEM: didLoadItem,\n },\n ({ root, props }) => {\n const { id } = props;\n const item = query('GET_ITEM', id);\n\n // don't do anything while hidden\n if (root.rect.element.hidden) return;\n }\n )\n );\n });\n\n // expose plugin\n return {\n options: {\n labelButtonDownloadItem: ['Download file', Type.STRING],\n allowDownloadByUrl: [false, Type.BOOLEAN],\n downloadFunction: [null, Type.FUNCTION],\n },\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n const isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', {\n detail: plugin,\n })\n );\n }\n\n return plugin;\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dropdown.vue?vue&type=style&index=0&id=54afa19f&scoped=true&lang=css&\"","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyClassification.vue?vue&type=style&index=0&id=754d0662&scoped=true&lang=css&\"","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _DomHandler = _interopRequireDefault(require(\"./DomHandler\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ConnectedOverlayScrollHandler = exports.default = /*#__PURE__*/function () {\n function ConnectedOverlayScrollHandler(element) {\n var listener = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n _classCallCheck(this, ConnectedOverlayScrollHandler);\n this.element = element;\n this.listener = listener;\n }\n _createClass(ConnectedOverlayScrollHandler, [{\n key: \"bindScrollListener\",\n value: function bindScrollListener() {\n this.scrollableParents = _DomHandler.default.getScrollableParents(this.element);\n for (var i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n }, {\n key: \"unbindScrollListener\",\n value: function unbindScrollListener() {\n if (this.scrollableParents) {\n for (var i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n }]);\n return ConnectedOverlayScrollHandler;\n}();\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var map = {\n\t\"./CommercialBoardingHouseMultiTenant.vue\": [\n\t\t\"036f\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-2bb8b47c\"\n\t],\n\t\"./CommercialChildcareCentreSingleTenant.vue\": [\n\t\t\"8ebe\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-87d2d76c\"\n\t],\n\t\"./CommercialFreestandingMedicalProperty.vue\": [\n\t\t\"3c21\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-0f35a435\"\n\t],\n\t\"./CommercialFreestandingOfficeProperty.vue\": [\n\t\t\"eccb\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-40ac0a2a\"\n\t],\n\t\"./CommercialMixedUseMultiTenant.vue\": [\n\t\t\"4edf\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-ebb7566c\"\n\t],\n\t\"./CommercialMultitenantMedicalPremises.vue\": [\n\t\t\"396b\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-a11f4126\"\n\t],\n\t\"./CommercialMultitenantOfficePremises.vue\": [\n\t\t\"baaa\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-4c2a3bec\"\n\t],\n\t\"./CommercialOtherUniqueSingleTenant.vue\": [\n\t\t\"3168\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-1d764a45\"\n\t],\n\t\"./CommercialStrataMedicalSuite.vue\": [\n\t\t\"c01b\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-1b786681\"\n\t],\n\t\"./CommercialStrataOfficeSuite.vue\": [\n\t\t\"6b00\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-46af8a39\"\n\t],\n\t\"./CommonVacantLand.vue\": [\n\t\t\"3658\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-4d0a0c32\"\n\t],\n\t\"./IndustrialFactory.vue\": [\n\t\t\"087d\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-e754f5fe\"\n\t],\n\t\"./IndustrialMultiTenantIndustrialProperty.vue\": [\n\t\t\"6ef1\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-71a7e4ec\"\n\t],\n\t\"./IndustrialOtherUniqueSingleTenant.vue\": [\n\t\t\"9d2f\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-76c89a09\"\n\t],\n\t\"./IndustrialServiceIndustryLightIndustrial.vue\": [\n\t\t\"f7ea\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-0b31bbaa\"\n\t],\n\t\"./IndustrialStrataIndustrialUnit.vue\": [\n\t\t\"a23b\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-55f5501e\"\n\t],\n\t\"./IndustrialWarehouse.vue\": [\n\t\t\"26c7\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-168d13ce\"\n\t],\n\t\"./ResidentialApartment.vue\": [\n\t\t\"745e\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-6668abea\"\n\t],\n\t\"./ResidentialBlockOfApartments.vue\": [\n\t\t\"d727\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-29212968\"\n\t],\n\t\"./ResidentialBoardingHouseMultiTenant.vue\": [\n\t\t\"3058\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-08289a30\"\n\t],\n\t\"./ResidentialDetachedResidence.vue\": [\n\t\t\"de5e\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-0fcfe942\"\n\t],\n\t\"./ResidentialDuplex.vue\": [\n\t\t\"bda3\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-5ace6458\"\n\t],\n\t\"./ResidentialTerraceHouse.vue\": [\n\t\t\"6d4c\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-0b27dbd3\"\n\t],\n\t\"./ResidentialTownhouse.vue\": [\n\t\t\"fdac\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-4e33f967\"\n\t],\n\t\"./ResidentialTownhouseComplex.vue\": [\n\t\t\"1702\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-001fe38f\"\n\t],\n\t\"./RetailFreestandingRetailProperty.vue\": [\n\t\t\"dac5\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-5f557ff5\"\n\t],\n\t\"./RetailMixedUseMultiTenant.vue\": [\n\t\t\"6973\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-2797e444\"\n\t],\n\t\"./RetailOtherUniqueSingleTenant.vue\": [\n\t\t\"42db\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-96b4cd3a\"\n\t],\n\t\"./RetailShowroomBulkyGoodsRetailProperty.vue\": [\n\t\t\"d211\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-3bb5d54d\"\n\t],\n\t\"./RetailStrataRetailSpace.vue\": [\n\t\t\"04f2\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-6f234130\"\n\t],\n\t\"./RetailStripShopRetailProperty.vue\": [\n\t\t\"f0bd\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-bdaaf20c\"\n\t],\n\t\"./RuralCroppingFarm.vue\": [\n\t\t\"eb7e\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-69c7e9f1\"\n\t],\n\t\"./RuralGrazingFarm.vue\": [\n\t\t\"0647\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-7be1cfd0\"\n\t],\n\t\"./RuralHobbyFarm.vue\": [\n\t\t\"daa4\",\n\t\t\"chunk-5e59672c\",\n\t\t\"chunk-1a174e94\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"de3b\";\nmodule.exports = webpackAsyncContext;","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--6-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./Dialog.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=style&index=0&id=b6d3670a&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkbox.vue?vue&type=style&index=0&id=000a5a33&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Payment.vue?vue&type=style&index=0&id=2355dab8&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoComplete.vue?vue&type=style&index=1&lang=css&\"","'use strict';\nmodule.exports = require('./ConfirmDialog.vue');","'use strict';\nmodule.exports = require('./Button.vue');"],"sourceRoot":""}