{"version":3,"sources":["webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./node_modules/@uppy/core/lib/index.js","webpack:///./node_modules/@uppy/utils/lib/toArray.js","webpack:///./node_modules/nanoid/non-secure/index.js","webpack:///./node_modules/@transloadit/prettier-bytes/prettierBytes.js","webpack:///./node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack:///./node_modules/@uppy/core/lib/BasePlugin.js","webpack:///./node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js","webpack:///./node_modules/@uppy/status-bar/lib/StatusBarStates.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js","webpack:///./node_modules/@uppy/companion-client/lib/RequestClient.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/data-confirm-modal/vendor/assets/javascripts/data-confirm-modal.js","webpack:///./node_modules/@uppy/core/lib/loggers.js","webpack:///./node_modules/@uppy/core/lib/Uppy.js","webpack:///./node_modules/@uppy/utils/lib/Translator.js","webpack:///./node_modules/@uppy/utils/lib/hasProperty.js","webpack:///./node_modules/namespace-emitter/index.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/@uppy/core/lib/UIPlugin.js","webpack:///./node_modules/@uppy/utils/lib/isDOMElement.js","webpack:///./node_modules/@uppy/utils/lib/getTextDirection.js","webpack:///./node_modules/@uppy/dashboard/lib/index.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FilePreview.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js","webpack:///./node_modules/@uppy/dashboard/lib/components/AddFiles.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js","webpack:///./node_modules/@excid3/uppy-activestorage-upload/lib/index.js","webpack:///./node_modules/cuid/lib/pad.js","webpack:///./node_modules/@uppy/utils/lib/RateLimitedQueue.js","webpack:///./node_modules/@uppy/url/lib/index.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/@uppy/utils/lib/getTimeStamp.js","webpack:///./node_modules/@uppy/core/lib/Restricter.js","webpack:///./node_modules/mime-match/index.js","webpack:///./node_modules/wildcard/index.js","webpack:///./node_modules/@uppy/store-default/lib/index.js","webpack:///./node_modules/@uppy/utils/lib/getFileType.js","webpack:///./node_modules/@uppy/utils/lib/mimeTypes.js","webpack:///./node_modules/@uppy/utils/lib/generateFileID.js","webpack:///./node_modules/@uppy/core/lib/supportsUploadProgress.js","webpack:///./node_modules/@uppy/core/lib/getFileName.js","webpack:///./node_modules/@uppy/core/lib/locale.js","webpack:///./node_modules/@uppy/utils/lib/findDOMElement.js","webpack:///./node_modules/@uppy/dashboard/lib/Dashboard.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/trapFocus.js","webpack:///./node_modules/@uppy/status-bar/lib/index.js","webpack:///./node_modules/@uppy/status-bar/lib/_StatusBar.js","webpack:///./node_modules/@uppy/utils/lib/getSpeed.js","webpack:///./node_modules/@uppy/utils/lib/getBytesRemaining.js","webpack:///./node_modules/@uppy/status-bar/lib/StatusBar.js","webpack:///./node_modules/@uppy/status-bar/lib/Components.js","webpack:///./node_modules/@uppy/utils/lib/prettyETA.js","webpack:///./node_modules/@uppy/utils/lib/secondsToTime.js","webpack:///./node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js","webpack:///./node_modules/@uppy/status-bar/lib/locale.js","webpack:///./node_modules/@uppy/informer/lib/index.js","webpack:///./node_modules/@uppy/informer/lib/Informer.js","webpack:///./node_modules/@uppy/informer/lib/FadeIn.js","webpack:///./node_modules/@uppy/informer/lib/TransitionGroup.js","webpack:///./node_modules/@uppy/thumbnail-generator/lib/index.js","webpack:///./node_modules/exifr/dist/mini.umd.js","webpack:///./node_modules/@uppy/utils/lib/dataURItoBlob.js","webpack:///./node_modules/@uppy/utils/lib/isObjectURL.js","webpack:///./node_modules/@uppy/utils/lib/isPreviewSupported.js","webpack:///./node_modules/@uppy/thumbnail-generator/lib/locale.js","webpack:///./node_modules/@uppy/utils/lib/findAllDOMElements.js","webpack:///./node_modules/@uppy/utils/lib/getDroppedFiles/index.js","webpack:///./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js","webpack:///./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js","webpack:///./node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/@uppy/dashboard/lib/components/Dashboard.js","webpack:///./node_modules/@uppy/utils/lib/isDragDropSupported.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileList.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/index.js","webpack:///./node_modules/is-shallow-equal/index.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js","webpack:///./node_modules/@uppy/utils/lib/truncateString.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js","webpack:///./node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js","webpack:///./node_modules/@uppy/dashboard/lib/components/VirtualList.js","webpack:///./node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js","webpack:///./node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js","webpack:///./node_modules/@uppy/dashboard/lib/components/EditorPanel.js","webpack:///./node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js","webpack:///./node_modules/@uppy/dashboard/lib/components/FileCard/index.js","webpack:///./node_modules/@uppy/dashboard/lib/components/Slide.js","webpack:///./node_modules/@uppy/dashboard/lib/locale.js","webpack:///./node_modules/cuid/index.js","webpack:///./node_modules/cuid/lib/fingerprint.browser.js","webpack:///./node_modules/cuid/lib/getRandomValue.browser.js","webpack:///./node_modules/@uppy/utils/lib/settle.js","webpack:///./node_modules/@uppy/url/lib/Url.js","webpack:///./node_modules/@uppy/companion-client/lib/index.js","webpack:///./node_modules/@uppy/utils/lib/fetchWithNetworkError.js","webpack:///./node_modules/@uppy/utils/lib/NetworkError.js","webpack:///./node_modules/@uppy/utils/lib/ErrorWithCause.js","webpack:///./node_modules/@uppy/companion-client/lib/AuthError.js","webpack:///./node_modules/@uppy/companion-client/lib/Provider.js","webpack:///./node_modules/@uppy/companion-client/lib/tokenStorage.js","webpack:///./node_modules/@uppy/companion-client/lib/SearchProvider.js","webpack:///./node_modules/@uppy/companion-client/lib/Socket.js","webpack:///./node_modules/@uppy/url/lib/UrlUI.js","webpack:///./node_modules/@uppy/url/lib/utils/forEachDroppedOrPastedUrl.js","webpack:///./node_modules/@uppy/url/lib/locale.js"],"names":["n","l","u","i","t","o","r","f","e","c","s","a","parentNode","removeChild","h","arguments","length","children","call","defaultProps","v","type","props","key","ref","__k","__","__b","__e","__d","__c","__h","constructor","__v","vnode","y","current","p","d","this","context","_","indexOf","k","base","b","push","g","__r","debounceRendering","setTimeout","sort","some","__P","j","__n","ownerSVGElement","z","w","x","C","Array","isArray","m","A","N","M","appendChild","nextSibling","insertBefore","$","setProperty","test","H","style","cssText","replace","toLowerCase","slice","addEventListener","T","I","removeEventListener","removeAttribute","setAttribute","event","contextType","value","__E","prototype","render","O","sub","state","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","L","diffed","localName","nodeType","document","createTextNode","createElementNS","createElement","is","data","childNodes","dangerouslySetInnerHTML","attributes","name","__html","innerHTML","checked","unmount","componentWillUnmount","P","firstChild","S","q","B","Consumer","Provider","splice","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","Object","defineProperty","exports","Uppy","UIPlugin","BasePlugin","enumerable","get","_loggers","debugLogger","module","_0","_1","from","customAlphabet","alphabet","defaultSize","size","id","Math","random","nanoid","num","isNaN","TypeError","neg","units","exponent","min","floor","log","Number","pow","unit","toFixed","fullFileName","lastDot","lastIndexOf","extension","undefined","Translator","uppy","opts","getPluginState","plugins","getState","setPluginState","update","setOptions","newOpts","i18nInit","translator","defaultLocale","locale","i18n","translate","bind","i18nArray","translateArray","addTarget","Error","install","uninstall","afterUpdate","STATE_ERROR","STATE_WAITING","STATE_PREPROCESSING","STATE_UPLOADING","STATE_POSTPROCESSING","STATE_COMPLETE","_preact","fileType","defaultChoice","color","icon","focusable","className","width","height","viewBox","fill","fillRule","fileTypeGeneral","split","fileTypeSpecific","cx","cy","_Symbol$for","_classPrivateFieldLooseBase","receiver","privateKey","hasOwnProperty","_classPrivateFieldLooseKey","fetchWithNetworkError","ErrorWithCause","AuthError","async","handleJSONResponse","res","status","jsonPromise","json","errMsg","statusText","errData","message","requestId","_companionHeaders","_getPostResponseFunc","_getUrl","_errorHandler","Symbol","for","RequestClient","_errorHandler2","_getUrl2","writable","skip","response","onReceiveResponse","allowedHeaders","preflightDone","companionHeaders","setCompanionHeaders","headers","hostname","companion","host","companionUrl","Promise","resolve","defaultHeaders","has","preflight","path","fetch","method","then","map","headerName","trim","catch","err","preflightAndHeaders","all","_ref","keys","header","includes","skipPostResponse","credentials","companionCookiesRule","post","body","JSON","stringify","delete","url","_err","isAuthError","cause","reject","VERSION","Accept","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","target","descriptor","configurable","_createClass","Constructor","protoProps","staticProps","_extends","assign","source","apply","_inheritsLoose","subClass","superClass","create","_setPrototypeOf","setPrototypeOf","__proto__","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toString","match","getSpecialTransitionEndEvent","bindType","delegateType","handle","handleObj","handler","transitionEndEmulator","duration","_this","called","one","Util","triggerTransitionEnd","setTransitionEndSupport","fn","emulateTransitionEnd","special","getUID","prefix","getElementById","getSelectorFromElement","element","selector","getAttribute","hrefAttr","querySelector","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","property","expectedTypes","valueType","RegExp","toUpperCase","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","version","jquery","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","DATA_API_KEY$7","JQUERY_NO_CONFLICT$a","CLASS_NAME_ALERT","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$7","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","SELECTOR_DISMISS","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","_handleDismiss","alertInstance","preventDefault","on","noConflict","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE$4","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE$2","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","classList","contains","activeElement","focus","hasAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","window","buttons","querySelectorAll","len","add","_i","_len","_button","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","Default$7","interval","keyboard","slide","pause","wrap","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","index","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","start","originalEvent","pointerType","clientX","touches","move","end","clearTimeout","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","filter","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","complete","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","ESCAPE_KEYCODE$1","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$5","offset","flip","boundary","reference","display","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","scheduleUpdate","stopPropagation","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$2","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$1","SELECTOR_DATA_DISMISS$1","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","rect","round","left","right","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","DefaultWhitelist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","el","elName","attributeList","whitelistedAttributes","concat","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","html","container","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","text","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","join","popperData","instance","popper","initConfigAnimation","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$1","JQUERY_NO_CONFLICT$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","METHOD_OFFSET","METHOD_POSITION","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN$1","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","top","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","node","scrollSpys","$spy","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY","JQUERY_NO_CONFLICT$1","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_DISABLED","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DATA_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","factory","settings","defaults","commit","commitClass","cancel","cancelClass","fade","verifyClass","zIndex","modalClass","dataConfirmModal","setDefaults","newSettings","extend","restoreDefaults","confirm","options","modal","buildModal","spawn","onConfirm","onCancel","versionString","bootstrapVersion","modalHeader","String","modalTitle","modalClose","highest","piece","focus_element","remote","verify","verifyRegexp","isMatch","prop","caseInsensitive","verifyRegexpCaseInsensitive","regexp","re","verification","val","verifyLabel","getModal","buildElementModal","confirmModal","Rails","rails","window_confirm","delegate","jQuery","justErrorsLogger","getTimeStamp","debug","warn","error","args","_key","console","_len2","_key2","_len3","_key3","_len4","_key4","_nonSecure","_Restricter","_Symbol$for2","ee","throttle","DefaultStore","getFileType","getFileNameAndExtension","generateFileID","supportsUploadProgress","getFileName","_plugins","_restricter","_storeUnsubscribe","_emitter","_preProcessors","_uploaders","_postProcessors","_informAndEmit","_checkRequiredMetaFieldsOnFile","_checkRequiredMetaFields","_assertNewUploadAllowed","_checkAndCreateFileStateObject","_startIfAutoProceed","_addListeners","_updateOnlineStatus","_createUpload","_getUpload","_removeUpload","_runUpload","_opts","_runUpload2","_removeUpload2","_getUpload2","_createUpload2","_addListeners2","_startIfAutoProceed2","_checkAndCreateFileStateObject2","_assertNewUploadAllowed2","_checkRequiredMetaFields2","_checkRequiredMetaFieldsOnFile2","_informAndEmit2","Set","updateOnlineStatus","defaultOptions","autoProceed","allowMultipleUploads","allowMultipleUploadBatches","restrictions","meta","onBeforeFileAdded","currentFile","onBeforeUpload","files","store","logger","infoTimeout","calculateProgress","leading","trailing","currentUploads","allowNewUpload","capabilities","uploadProgress","individualCancellation","resumableUploads","totalProgress","info","recoveredState","Restricter","subscribe","prevState","nextState","patch","emit","updateAll","once","iteratePlugins","plugin","setFileState","fileID","setMeta","resetProgress","defaultProgress","percentage","bytesUploaded","uploadComplete","uploadStarted","updatedFiles","updatedFile","progress","addPreProcessor","removePreProcessor","addPostProcessor","removePostProcessor","addUploader","removeUploader","updatedMeta","setFileMeta","newMeta","getFile","getFiles","values","getObjectOfFilesPerState","filesObject","inProgressFiles","newFiles","file","startedFiles","preprocess","postprocess","uploadStartedFiles","pausedFiles","isPaused","completeFiles","erroredFiles","inProgressNotPausedFiles","processingFiles","isUploadStarted","isAllComplete","isAllErrored","isAllPaused","isUploadInProgress","isSomeGhost","isGhost","validateRestrictions","validate","result","reason","checkIfFileAlreadyExists","addFile","newFile","addFiles","fileDescriptors","errors","isRestriction","subError","smart_count","details","AggregateError","removeFiles","fileIDs","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","uploadID","newFileIDs","stateUpdate","calculateTotalProgress","removedFileIDs","removeFile","pauseResume","pauseAll","resumeAll","retryAll","filesToRetry","successful","failed","forceAllowNewUpload","cancelAll","_temp","retryUpload","reset","logout","provider","canHavePercentage","isFinite","bytesTotal","inProgress","sizedFiles","unsizedFiles","progressMax","currentProgress","reduce","acc","totalSize","averageSize","uploadedSize","onLine","wasOffline","getID","use","Plugin","pluginId","existsPluginAlready","getPlugin","msg","foundPlugin","flat","removePlugin","list","findIndex","updatedState","_temp2","hideInfo","isComplexMessage","restore","addResultData","currentUpload","upload","_classPrivateFieldLoo","uploader","onBeforeUploadResult","validateMinNumberOfFiles","RestrictionError","currentlyUploadingFiles","flatMap","curr","waitingFileIDs","missingFields","getMissingRequiredMetaFields","missingRequiredMetaFields","success","fileDescriptor","fileName","fileExtension","isRemote","preview","onBeforeFileAddedResult","filesArray","scheduledAutoProceed","stack","errorHandler","errorMsg","newError","Date","now","uploadResp","mode","uploadURL","step","restoreStep","steps","updatedUpload","insertReplacement","rx","replacement","newParts","chunk","raw","interpolate","phrase","dollarRegex","interpolated","arg","_apply","_apply2","strings","prevLocale","pluralize","locales","string","object","emitter","_fns","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","out","idx","substring","getListeners","fns","emitAll","keep","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","self","Function","objectToString","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","toNumber","isObject","flush","isObjectLike","isSymbol","other","valueOf","isBinary","findDOMElement","getTextDirection","_updateUI","super","mount","callerPluginName","targetElement","isTargetDOMEl","uppyRootElement","calling","latestArgs","replaceTargetContent","dir","onMount","targetPlugin","Target","_classPrivateFieldLoo2","_this$el","onUnmount","dashboardEl","activeOverlayType","overlayEl","getFileTypeIcon","alt","src","metaFieldIdToName","metaFieldId","metaFields","toggleFileCard","metaFieldsString","missingMetaField","fields","class","onClick","AddFiles","Component","triggerFileInputClick","fileInput","triggerFolderInputClick","folderInput","onFileInputChange","handleInputChange","renderHiddenInput","isFolder","refCallback","tabIndex","webkitdirectory","multiple","maxNumberOfFiles","onChange","accept","allowedFileTypes","renderMyDeviceAcquirer","role","renderBrowseButton","onClickFn","numberOfAcquirers","acquirers","renderDropPasteBrowseTagline","browseFiles","browseFolders","lowerFMSelectionType","fileManagerSelectionType","camelFMSelectionType","charAt","disableLocalFiles","browse","renderAcquirer","acquirer","activePickerPanel","showPanel","renderAcquirers","acquirersWithoutLastTwo","lastTwoAcquirers","renderPoweredByUppy","linkText","href","rel","note","proudlyDisplayPoweredByUppy","ev","cuid","settle","RateLimitedQueue","DirectUpload","token","attachmentName","limit","timeout","directUploadUrl","limitUploads","handleUpload","uploadFiles","total","timer","createProgressTimeout","directHandlers","directUploadWillStoreFileWithXHR","directUploadDidProgress","loaded","lengthComputable","request","blob","done","directUploadSignedId","signed_id","removedFile","abort","promises","limitedAction","timeoutHandler","isDone","onTimedOut","seconds","ceil","aliveTimer","substr","internalRateLimitedQueue","_activeRequests","_queuedHandlers","_paused","_pauseTimer","_downLimit","_upperLimit","_rateLimitingTimer","_call","_queueNext","_next","_queue","_dequeue","_resume","_increaseLimit","_call2","cancelActive","_queueNext2","queueMicrotask","_next2","shift","_queue2","priority","_dequeue2","resume","Infinity","run","queueOptions","wrapPromiseFunction","queuedRequest","outerPromise","cancelError","innerPromise","rateLimit","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","scheduled","isFunction","functionToCheck","getStyleComputedProperty","defaultView","getComputedStyle","getParentNode","getScrollParent","_getStyleComputedProp","overflow","overflowX","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","getBordersSize","styles","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","defineProperties","getClientRect","bottom","scrollLeft","sizes","horizScrollbar","offsetWidth","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","subtract","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","runModifiers","ends","cur","isDestroyed","arrowStyles","flipped","positionFixed","position","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","isNumeric","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","reverse","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","str","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","transformProp","popperStyles","transform","primary","escapeWithReference","secondary","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","Defaults","requestAnimationFrame","Utils","PopperUtils","pad","number","date","getHours","getMinutes","getSeconds","prettierBytes","maxFileSize","minFileSize","maxTotalFileSize","minNumberOfFiles","requiredMetaFields","globalThis","getOpts","allowedFileTypesString","types","own","field","wildcard","reMimePartSplit","pattern","WildcardMatcher","separator","hasWild","parts","ii","testParts","matches","partsCount","matcher","_publish","_publish2","callbacks","listener","mimeTypes","_getFileNameAndExtens","md","markdown","mp4","mp3","svg","jpg","png","gif","heic","heif","yaml","yml","csv","tsv","tab","avi","mks","mkv","mov","dicom","doc","docm","docx","dot","dotm","dotx","xla","xlam","xlc","xlf","xlm","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xlw","txt","conf","pdf","zip","rar","tar","gz","dmg","encodeFilename","suffix","character","charCodeAt","encodeCharacter","relativePath","lastModified","exec","edgeVersion","major","minor","addBulkFilesFailed","youCanOnlyUploadX","youHaveToAtLeastSelectX","exceedsSize","missingRequiredMetaField","missingRequiredMetaFieldOnFile","inferiorSize","youCanOnlyUploadFileTypes","noMoreFilesAllowed","noDuplicates","companionError","authAborted","companionUnauthorizeHint","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","selectX","allFilesFromFolderNamed","openFolderNamed","logOut","resetFilter","loading","authenticateWithTitle","authenticateWith","signInWithGoogle","searchImages","enterTextToSearch","emptyFolderAdded","folderAlreadyAdded","folderAdded","isDOMElement","_core","trapFocus","StatusBar","Informer","ThumbnailGenerator","findAllDOMElements","toArray","getDroppedFiles","memoizeOne","FOCUSABLE_ELEMENTS","createSuperFocus","DashboardUI","memoize","default","createPromise","promise","defaultPickerIcon","_openFileEditorWhenFilesAdded","_attachRenderFunctionToTarget","_isTargetSupported","_getAcquirers","_getProgressIndicators","_getEditors","Dashboard","removeTarget","newTargets","targets","callerPluginId","callerPluginType","hideAllPanels","showAddFilesPanel","fileCardFor","showFileEditor","canEditFile","openFileEditor","editors","editor","selectFile","saveFileEditor","save","openModal","savedScrollPosition","savedActiveElement","disablePageScrollWhenModalOpen","animateOpenClose","isClosing","isHidden","browserBackButtonClose","updateBrowserHistory","handleKeyDownInModal","closeModal","manualClose","superFocus","_history$state","history","modalName","back","isModalOpen","requestCloseModal","onRequestCloseModal","setDarkModeCapability","isDarkModeOn","darkMode","handleSystemDarkModeChange","isDarkModeOnNow","toggleAddFilesPanel","descriptors","webkitRelativePath","startListeningToResize","resizeObserver","ResizeObserver","entries","uppyDashboardInnerEl","contentRect","containerWidth","containerHeight","areInsidesReadyToBeVisible","observe","makeDashboardInsidesVisibleAnywayTimeout","pluginState","isModalAndClosed","inline","stopListeningToResize","disconnect","recordIfFocusedOnUppyRecently","ifFocusedOnUppyRecently","disableAllFocusableElements","focusableNodes","currentTabIndex","dataset","inertTabindex","dashboardIsDisabled","_history$state2","pushState","handlePopState","_event$state","keyCode","forModal","handleClickOutside","closeModalOnClickOutside","handlePaste","handleRootPaste","clipboardData","handleDragOver","_this$opts$onDragOver","_this$opts","somePluginCanHandleRootDrop","canHandleRootDrop","canSomePluginHandleRootDrop","hasFiles","dataTransfer","doesEventHaveFiles","dropEffect","removeDragOverClassTimeout","isDraggingOver","onDragOver","handleDragLeave","_this$opts$onDragLeav","_this$opts2","onDragLeave","handleDrop","_this$opts$onDrop","_this$opts3","handleRootDrop","executedDropErrorOnce","logDropError","onDrop","handleRequestThumbnail","waitForThumbnailsBeforeUpload","handleCancelThumbnail","handleKeyDownInInline","forInline","handlePasteOnBody","handleComplete","closeAfterFinish","handleCancelRestore","firstFile","initEvents","showModalTrigger","autoOpenFileEditor","removeEvents","superFocusOnEachUpdate","isFocusInUppy","isFocusNowhere","isInformerHidden","isModal","saveFileCard","isSupported","progressindicators","theme","totalFileCount","isMobileDevice","showLinkToFileUploadResult","hideCancelButton","hideRetryButton","hidePauseResumeButton","showRemoveButtonAfterComplete","showSelectedFiles","discoverProviderPlugins","pluginID","disableStatusBar","hideUploadButton","showProgressDetails","hideAfterFinish","hideProgressAfterFinish","doneButtonHandler","disableInformer","disableThumbnailGenerator","thumbnailWidth","thumbnailHeight","thumbnailType","lazy","darkModeMediaQuery","matchMedia","isDarkModeOnFromTheStart","addListener","informer","statusBar","thumbnail","removeListener","getActiveOverlayEl","focusOnFirstNode","nodes","activeOverlayEl","focusedItemIndex","isFocusInOverlay","shiftKey","focusOnLastNode","getSpeed","getBytesRemaining","statusBarStates","StatusBarUI","getTotalETA","totalSpeed","getTotalSpeed","totalBytesRemaining","getUploadingState","startUpload","newFilesOrRecovered","totalETA","totalUploadedSize","uploadState","numUploads","fileProgress","timeElapsed","_Components","classNames","calculateProcessingProgress","progressValue","getProgressValue","getIsHidden","showUploadBtn","showCancelBtn","showPauseResumeBtn","showRetryBtn","showDoneBtn","progressClassNames","getIsIndeterminate","statusBarClassNames","ProgressBarProcessing","ProgressBarComplete","ProgressBarError","ProgressBarUploading","UploadBtn","RetryBtn","PauseResumeButton","CancelBtn","DoneBtn","LoadingSpinner","errorMessage","alert","FileUploadCount","roundedValue","showUploadNewlyAddedFiles","ThrottledProgressDetails","UploadNewlyAddedFiles","ProgressDetails","uploadBtnClassNames","uploadBtnText","prettyETA","renderDot","ifShowFilesUploadedOfTotal","secondsToTime","hours","minutes","padStart","rawSeconds","uploading","uploadFailed","paused","retry","filesUploadedOfTotal","dataUploadedOfTotal","xTimeLeft","uploadXFiles","uploadXNewFiles","xMoreFilesAdded","showErrorDetails","FadeIn","TransitionGroup","createRef","componentWillEnter","opacity","componentWillLeave","linkRef","component","cache","_ptgLinkedRefs","refs","getChildMapping","fallback","_vnode$key","mergeChildMappings","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","toChildArray","performAppear","performEnter","performLeave","currentlyTransitioningKeys","keysToAbortLeave","keysToEnter","keysToLeave","initialChildMapping","nextProps","nextChildMapping","prevChildMapping","hasPrev","hasNext","_finishAbort","componentWillAppear","_handleDoneAppearing","componentDidAppear","currentChildMapping","_handleDoneEntering","componentDidEnter","_handleDoneLeaving","componentDidLeave","childFactory","transitionLeave","transitionName","transitionAppear","transitionEnter","transitionLeaveTimeout","transitionEnterTimeout","transitionAppearTimeout","childrenToRender","child","cloneElement","_miniUmd","dataURItoBlob","isObjectURL","isPreviewSupported","onFileAdded","addToQueue","onCancelRequest","queue","onFileRemoved","URL","revokeObjectURL","onRestored","isRestored","onAllFilesRemoved","waitUntilAllProcessed","emitPreprocessCompleteForAll","queueProcessing","defaultThumbnailDimension","createThumbnail","targetWidth","targetHeight","originalUrl","createObjectURL","onload","image","Image","orientationPromise","rotation","orientation","dimensions","getProportionalDimensions","deg","rotatedImage","rotateImage","resizedImage","resizeImage","canvasToBlob","aspect","protect","log2","sW","sH","canvas","getContext","drawImage","setPreviewURL","processQueue","requestThumbnail","quality","getImageData","toBlob","toDataURL","ratio","maxSquare","maxSize","maxW","sqrt","maxH","rotate","rad","scale","scaleX","scaleY","HTMLImageElement","process","versions","Buffer","Map","ifd0","exif","makerNote","userComment","gps","interop","ifd1","jfif","xmp","iptc","icc","fromCharCode","TextDecoder","static","le","Uint8Array","byteOffset","byteLength","ArrayBuffer","DataView","_swapDataView","buffer","_swapArrayBuffer","_swapBuffer","dataView","_lengthToEnd","set","toUint8","subarray","getUint8Array","getString","decode","decodeURIComponent","escape","getLatin1String","getUnicodeString","getUint16","getInt8","getUint8","getInt16","getInt32","getUint32","getFloat32","getFloat64","getFloat","getDouble","getUintBytes","getUint64","getUint","ensureChunk","kind","keyList","startsWith","U","read","arrayBuffer","FileReader","onloadend","onerror","readAsArrayBuffer","tagKeys","allKeys","tagValues","allValues","V","F","E","D","R","K","W","X","Y","translateKeys","translateValues","reviveValues","G","needed","deps","parse","applyInheritables","canBeFiltered","dict","translateTagSet","pick","finalizeFilters","te","J","tiff","ihdr","multiSegment","mergeOutput","silentErrors","chunked","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkSize","chunkLimit","Q","setupFromTrue","setupFromUndefined","setupFromArray","setupFromObject","filterNestedSegmentTags","traverseTiffDependencyTree","checkLoadedPlugins","setupGlobalFilters","batchEnableWithBool","batchEnableWithUserValue","Z","onlyTiff","se","useCached","Blob","setup","fileParser","canHandle","parsers","output","executeParsers","pushToErrors","assignToOutput","jpeg","getOrFindSegment","ensureSegmentChunk","extractThumbnail","ie","ne","freeze","Exifr","fileParsers","segmentParsers","fileReaders","tagRevivers","createDictionary","extendDictionary","fetchUrlAsArrayBuffer","readBlobAsArrayBuffer","chunkedProps","otherSegments","segments","tiffBlocks","segmentsAndBlocks","tiffExtractables","inheritables","allFormatters","Options","headerLength","normalizeInput","globalOptions","localOptions","canTranslate","translated","translateBlock","fromEntries","translateValue","DEFAULT","assignObjectToOutput","ae","he","fe","available","readChunk","extendOptions","injectSegment","createParser","createParsers","findAppSegments","readSegments","appSegments","mergeMultiSegments","mergedAppSegments","setupSegmentFinderArgs","findAll","wanted","remaining","unfinishedMultiSegment","readWhole","findAppSegmentsInRange","canReadNextChunk","nextChunkOffset","readNextChunk","findPosition","chunkNumber","chunkCount","recordUnknownSegments","marker","unknownSegments","stopAfterSos","recordJpegSegments","jpegSegments","handleMultiSegments","getSegment","oe","ue","parseHeader","headerParsed","parseTags","parseTag","endsWith","parseTagValue","Uint16Array","Uint32Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","de","parseIfd0Block","safeParse","createOutput","handleError","findIfd0Offset","ifd0Offset","findIfd1Offset","ifd1Offset","parseBlock","exifOffset","interopOffset","gpsOffset","unpack","ce","parseExifBlock","ifd1Parsed","parseThumbnailBlock","pe","ge","me","ye","be","we","ke","dimensionSwapped","PI","rotateCanvas","rotateCss","Oe","ve","ranges","_tryExtend","_extend","allocUnsafe","uintView","Se","Ae","fullyRead","chunksRead","safeWrapAddress","_readChunk","readChunked","latitude","longitude","gpsOnlyOptions","orientationOnlyOptions","rotations","thumbnailOnlyOptions","thumbnailUrl","dataURI","toFile","_opts$mimeType","dataURIData","mimeType","binary","atob","bytes","File","generatingThumbnails","webkitGetAsEntryApi","fallbackApi","accumulator","getFilesAndDirectoriesFromDirectory","getAsFileSystemHandleFromEntry","entry","isFile","isDirectory","directoryReader","createReader","onSuccess","dirEntries","createPromiseToAddFileOrParseDirectory","_await$item$getAsFile","lastResortFile","getAsFile","getAsFileSystemHandle","webkitGetAsEntry","oldEntries","readEntries","newEntries","safeIsNaN","areInputsEqual","newInputs","lastInputs","first","second","resultFn","isEqual","lastResult","calledOnce","newArgs","lastFocusWasOnSuperFocusableEl","superFocusableEl","preventScroll","firstEl","isDragDropSupported","FileList","AddFilesPanel","PickerPanelContent","EditorPanel","PanelTopBar","FileCard","Slide","WIDTH_XL","WIDTH_LG","WIDTH_MD","HEIGHT_MD","noFiles","isSizeMD","dashboardClassName","itemsPerRow","showFileList","numberOfFilesForRecovery","numberOfGhosts","onPaste","FileItem","VirtualList","dashboardFilesClass","rowHeight","fileProps","isWide","file1","file2","rows","currentChunk","chunks","renderRow","row","shallowEqual","FilePreviewAndLink","FileProgress","FileInfo","Buttons","isProcessing","isUploaded","uploadInProgressOrComplete","uploadInProgress","showRemoveButton","dashboardItemClass","FilePreview","MetaErrorMessage","backgroundColor","progressIndicatorTitle","ProgressIndicatorButton","onPauseResumeCancelRetry","ProgressCircleContainer","ProgressCircle","circleLength","points","truncateString","renderFileName","author","renderAuthor","providerName","Fragment","renderFileSize","ReSelectButton","ErrorButton","maxLength","charsToShow","frontChars","backChars","copyToClipboard","EditButton","RemoveButton","copyLinkToClipboard","CopyLinkButton","textToCopy","fallbackString","textArea","border","outline","boxShadow","background","select","magicCopyFailed","prompt","execCommand","STYLE_INNER","minHeight","STYLE_CONTENT","handleScroll","handleResize","resize","focusElement","overscanCount","visibleRowCount","selection","styleInner","styleContent","onScroll","ignoreEvent","uploadStates","STATE_PAUSED","UploadStatus","uploadingState","form","updateMeta","newVal","formState","handleSave","handleCancel","currentImage","saveOnEnter","renderMetaFields","getMetaFields","fieldCSSClasses","required","htmlFor","placeholder","onKeyUp","HTMLInputElement","onKeyDown","onKeyPress","onInput","_file","_metaFields","storedMetaData","showEditButton","HTMLButtonElement","cachedChildren","animationFrame","leaveTimeout","enterTimeout","addMoreFiles","addingMoreFiles","importFrom","dashboardWindowTitle","dashboardTitle","copyLinkToClipboardSuccess","copyLinkToClipboardFallback","copyLink","editFile","editing","finishEditingFile","saveChanges","myDevice","dropHint","uploadPaused","resumeUpload","pauseUpload","cancelUpload","xFilesSelected","uploadingXFiles","processingXFiles","poweredBy","addMore","editFileWithFilename","dropPasteFiles","dropPasteFolders","dropPasteBoth","dropPasteImportFiles","dropPasteImportFolders","dropPasteImportBoth","importFiles","recoveredXFiles","recoveredAllFiles","sessionRestored","reSelect","fingerprint","getRandomValue","blockSize","discreteValues","randomBlock","safeCounter","getTime","slug","print","isCuid","stringToCheck","isSlug","stringLength","env","globalCount","clientId","crypto","msCrypto","lim","getRandomValues","resolutions","rejections","resolved","rejected","_companionClient","UrlUI","forEachDroppedOrPastedUrl","UrlIcon","Url","getMeta","client","protocollessUrl","optionalMeta","addProtocolToURL","checkIfCorrectURL","tagFile","getFileNameFromUrl","fileId","providerOptions","protocol","pathname","Socket","SearchProvider","_2","_3","NetworkError","xhr","isNetworkError","hasProperty","tokenStorage","tokenKey","companionKeysParams","preAuthToken","getAuthToken","authHeaders","btoa","params","authenticated","setAuthToken","storage","setItem","getItem","fetchPreAuthToken","authUrl","URLSearchParams","fileUrl","directory","removeItem","defaultOpts","serverUrl","serverPattern","companionAllowedHosts","origin","localStorage","encodeURIComponent","_queued","_isOpen","_socket","_handleMessage","payload","autoOpen","open","WebSocket","onopen","send","onclose","onmessage","handleKeyPress","handleClick","isDropOrPaste","urlItems","getAsString","urlString","import","enterUrlToImport","failedToFetch","enterCorrectUrl"],"mappings":"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","file":"js/0-94407e57817ef04fcc1e.chunk.js","sourcesContent":["var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return v(l,f,t,o,null)}function v(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?_(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function b(n){(!n.__d&&(n.__d=!0)&&t.push(n)&&!g.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||setTimeout)(g)}function g(){for(var n;g.__r=t.length;)n=t.sort(function(n,l){return n.__v.__b-l.__v.__b}),t=[],n.some(function(n){var l,u,i,t,o,r;n.__d&&(o=(t=(l=n).__v).__e,(r=l.__P)&&(u=[],(i=s({},t)).__v=t.__v+1,j(r,t,i,l.__n,void 0!==r.ownerSVGElement,null!=t.__h?[o]:null,u,null==o?_(t):o,t.__h),z(u,t),t.__e!=o&&k(t)))})}function w(n,l,u,i,t,o,r,c,s,a){var h,y,d,k,b,g,w,x=i&&i.__k||e,C=x.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(k=u.__k[h]=null==(k=l[h])||\"boolean\"==typeof k?null:\"string\"==typeof k||\"number\"==typeof k||\"bigint\"==typeof k?v(null,k,null,null,k):Array.isArray(k)?v(p,{children:k},null,null,null):k.__b>0?v(k.type,k.props,k.key,k.ref?k.ref:null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(d=x[h])||d&&k.key==d.key&&k.type===d.type)x[h]=void 0;else for(y=0;y<C;y++){if((d=x[y])&&k.key==d.key&&k.type===d.type){x[y]=void 0;break}d=null}j(n,k,d=d||f,t,o,r,c,s,a),b=k.__e,(y=k.ref)&&d.ref!=y&&(w||(w=[]),d.ref&&w.push(d.ref,null,k),w.push(y,k.__c||b,k)),null!=b?(null==g&&(g=b),\"function\"==typeof k.type&&k.__k===d.__k?k.__d=s=m(k,s,n):s=A(n,k,d,x,b,s),\"function\"==typeof u.type&&(u.__d=s)):s&&d.__e==s&&s.parentNode!=n&&(s=_(d))}for(u.__e=g,h=C;h--;)null!=x[h]&&N(x[h],x[h]);if(w)for(h=0;h<w.length;h++)M(w[h],w[++h],w[++h])}function m(n,l,u){for(var i,t=n.__k,o=0;t&&o<t.length;o++)(i=t[o])&&(i.__=n,l=\"function\"==typeof i.type?m(i,l,u):A(u,i,i,t,i.__e,l));return l}function x(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some(function(n){x(n,l)}):l.push(n)),l}function A(n,l,u,i,t,o){var r,f,e;if(void 0!==l.__d)r=l.__d,l.__d=void 0;else if(null==u||t!=o||null==t.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(t),r=null;else{for(f=o,e=0;(f=f.nextSibling)&&e<i.length;e+=1)if(f==t)break n;n.insertBefore(t,o),r=o}return void 0!==r?r:t.nextSibling}function C(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||H(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||H(n,o,l[o],u[o],i)}function $(n,l,u){\"-\"===l[0]?n.setProperty(l,u):n[l]=null==u?\"\":\"number\"!=typeof u||c.test(l)?u:u+\"px\"}function H(n,l,u,i,t){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||$(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||$(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?T:I,o):n.removeEventListener(l,o?T:I,o);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&-1==l.indexOf(\"-\")?n.removeAttribute(l):n.setAttribute(l,u))}}function I(n){this.l[n.type+!1](l.event?l.event(n):n)}function T(n){this.l[n.type+!0](l.event?l.event(n):n)}function j(n,u,i,t,o,r,f,e,c){var a,h,v,y,_,k,b,g,m,x,A,C,$,H,I,T=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=l.__b)&&a(u);try{n:if(\"function\"==typeof T){if(g=u.props,m=(a=T.contextType)&&t[a.__c],x=a?m?m.props.value:a.__:t,i.__c?b=(h=u.__c=i.__c).__=h.__E:(\"prototype\"in T&&T.prototype.render?u.__c=h=new T(g,x):(u.__c=h=new d(g,x),h.constructor=T,h.render=O),m&&m.sub(h),h.props=g,h.state||(h.state={}),h.context=x,h.__n=t,v=h.__d=!0,h.__h=[],h._sb=[]),null==h.__s&&(h.__s=h.state),null!=T.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=s({},h.__s)),s(h.__s,T.getDerivedStateFromProps(g,h.__s))),y=h.props,_=h.state,v)null==T.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(null==T.getDerivedStateFromProps&&g!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(g,x),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(g,h.__s,x)||u.__v===i.__v){for(h.props=g,h.state=h.__s,u.__v!==i.__v&&(h.__d=!1),h.__v=u,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),A=0;A<h._sb.length;A++)h.__h.push(h._sb[A]);h._sb=[],h.__h.length&&f.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(g,h.__s,x),null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,_,k)})}if(h.context=x,h.props=g,h.__v=u,h.__P=n,C=l.__r,$=0,\"prototype\"in T&&T.prototype.render){for(h.state=h.__s,h.__d=!1,C&&C(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,C&&C(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++$<25);h.state=h.__s,null!=h.getChildContext&&(t=s(s({},t),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(k=h.getSnapshotBeforeUpdate(y,_)),I=null!=a&&a.type===p&&null==a.key?a.props.children:a,w(n,Array.isArray(I)?I:[I],u,i,t,o,r,f,e,c),h.base=u.__e,u.__h=null,h.__h.length&&f.push(h),b&&(h.__E=h.__=null),h.__e=!1}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=L(i.__e,u,i,t,o,r,f,c);(a=l.diffed)&&a(u)}catch(n){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),l.__e(n,u,i)}}function z(n,u){l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function L(l,u,i,t,o,r,e,c){var s,h,v,y=i.props,p=u.props,d=u.type,k=0;if(\"svg\"===d&&(o=!0),null!=r)for(;k<r.length;k++)if((s=r[k])&&\"setAttribute\"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,r[k]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",d):document.createElement(d,p.is&&p),r=null,c=!1}if(null===d)y===p||c&&l.data===p||(l.data=p);else{if(r=r&&n.call(l.childNodes),h=(y=i.props||f).dangerouslySetInnerHTML,v=p.dangerouslySetInnerHTML,!c){if(null!=r)for(y={},k=0;k<l.attributes.length;k++)y[l.attributes[k].name]=l.attributes[k].value;(v||h)&&(v&&(h&&v.__html==h.__html||v.__html===l.innerHTML)||(l.innerHTML=v&&v.__html||\"\"))}if(C(l,p,y,o,c),v)u.__k=[];else if(k=u.props.children,w(l,Array.isArray(k)?k:[k],u,i,t,o&&\"foreignObject\"!==d,r,e,r?r[0]:i.__k&&_(i,0),c),null!=r)for(k=r.length;k--;)null!=r[k]&&a(r[k]);c||(\"value\"in p&&void 0!==(k=p.value)&&(k!==l.value||\"progress\"===d&&!k||\"option\"===d&&k!==y.value)&&H(l,\"value\",k,y.value,!1),\"checked\"in p&&void 0!==(k=p.checked)&&k!==l.checked&&H(l,\"checked\",k,y.checked,!1))}return l}function M(n,u,i){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,i)}}function N(n,u,i){var t,o;if(l.unmount&&l.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||M(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(n){l.__e(n,u)}t.base=t.__P=null,n.__c=void 0}if(t=n.__k)for(o=0;o<t.length;o++)t[o]&&N(t[o],u,i||\"function\"!=typeof n.type);i||null==n.__e||a(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function P(u,i,t){var o,r,e;l.__&&l.__(u,i),r=(o=\"function\"==typeof t)?null:t&&t.__k||i.__k,e=[],j(i,u=(!o&&t||i).__k=h(p,null,[u]),r||f,f,void 0!==i.ownerSVGElement,!o&&t?[t]:r?null:i.firstChild?n.call(i.childNodes):null,e,!o&&t?t:r?r.__e:i.firstChild,o),z(e,u)}function S(n,l){P(n,l,S)}function q(l,u,i){var t,o,r,f=s({},l.props);for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),v(l.type,f,t||l.key,o||l.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(b)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=e.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),b(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),b(this))},d.prototype.render=p,t=[],g.__r=0,r=0;export{d as Component,p as Fragment,q as cloneElement,B as createContext,h as createElement,y as createRef,h,S as hydrate,i as isValidElement,l as options,P as render,x as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Uppy = exports.UIPlugin = exports.BasePlugin = void 0;\nObject.defineProperty(exports, \"debugLogger\", {\n  enumerable: true,\n  get: function () {\n    return _loggers.debugLogger;\n  }\n});\n\nvar _loggers = require(\"./loggers.js\");\n\nmodule.exports = require('./Uppy.js');\n\nconst _0 = require(\"./UIPlugin.js\");\n\nexports.UIPlugin = _0;\n\nconst _1 = require(\"./BasePlugin.js\");\n\nexports.BasePlugin = _1;\n\n// TODO: remove all the following in the next major\n\n/* eslint-disable import/first */\nconst Uppy = require(\"./Uppy.js\");\n\nexports.Uppy = Uppy;\n\nconst UIPlugin = require(\"./UIPlugin.js\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n\n// Backward compatibility: we want those to keep being accessible as static\n// properties of `Uppy` to avoid a breaking change.\nUppy.Uppy = Uppy;\nUppy.UIPlugin = UIPlugin;\nUppy.BasePlugin = BasePlugin;\nUppy.debugLogger = _loggers.debugLogger;","\"use strict\";\n\n/**\n * Converts list into array\n */\nmodule.exports = Array.from;","let urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    let i = size\n    while (i--) {\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\nlet nanoid = (size = 21) => {\n  let id = ''\n  let i = size\n  while (i--) {\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\nexport { nanoid, customAlphabet }\n","// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nmodule.exports = function prettierBytes (num) {\n  if (typeof num !== 'number' || isNaN(num)) {\n    throw new TypeError('Expected a number, got ' + typeof num)\n  }\n\n  var neg = num < 0\n  var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n  if (neg) {\n    num = -num\n  }\n\n  if (num < 1) {\n    return (neg ? '-' : '') + num + ' B'\n  }\n\n  var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = Number(num / Math.pow(1024, exponent))\n  var unit = units[exponent]\n\n  if (num >= 10 || num % 1 === 0) {\n    // Do not show decimals when the number is two-digit, or if the number has no\n    // decimal component.\n    return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit\n  } else {\n    return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit\n  }\n}\n","\"use strict\";\n\nfunction getFileNameAndExtension(fullFileName) {\n  const lastDot = fullFileName.lastIndexOf('.'); // these count as no extension: \"no-dot\", \"trailing-dot.\"\n\n  if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n    return {\n      name: fullFileName,\n      extension: undefined\n    };\n  }\n\n  return {\n    name: fullFileName.slice(0, lastDot),\n    extension: fullFileName.slice(lastDot + 1)\n  };\n}\n\n/**\n * Takes a full filename string and returns an object {name, extension}\n *\n * @param {string} fullFileName\n * @returns {object} {name, extension}\n */\nmodule.exports = getFileNameAndExtension;","\"use strict\";\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nclass BasePlugin {\n  constructor(uppy, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    this.uppy = uppy;\n    this.opts = opts;\n  }\n\n  getPluginState() {\n    const {\n      plugins\n    } = this.uppy.getState();\n    return plugins[this.id] || {};\n  }\n\n  setPluginState(update) {\n    const {\n      plugins\n    } = this.uppy.getState();\n    this.uppy.setState({\n      plugins: { ...plugins,\n        [this.id]: { ...plugins[this.id],\n          ...update\n        }\n      }\n    });\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts\n    };\n    this.setPluginState(); // so that UI re-renders with new options\n\n    this.i18nInit();\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  }\n  /**\n   * Extendable methods\n   * ==================\n   * These methods are here to serve as an overview of the extendable methods as well as\n   * making them not conditional in use, such as `if (this.afterUpdate)`.\n   */\n  // eslint-disable-next-line class-methods-use-this\n\n\n  addTarget() {\n    throw new Error('Extend the addTarget method to add your plugin to another plugin\\'s target');\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  install() {} // eslint-disable-next-line class-methods-use-this\n\n\n  uninstall() {}\n  /**\n   * Called when plugin is mounted, whether in DOM or into another plugin.\n   * Needed because sometimes plugins are mounted separately/after `install`,\n   * so this.el and this.parent might not be available in `install`.\n   * This is the case with @uppy/react plugins, for example.\n   */\n\n\n  render() {\n    throw new Error('Extend the render method to add your plugin to a DOM element');\n  } // TODO: remove in the next major version. It's not feasible to\n  // try to use plugins with other frameworks.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  update() {} // Called after every state update, after everything's mounted. Debounced.\n  // eslint-disable-next-line class-methods-use-this\n\n\n  afterUpdate() {}\n\n}\n\nmodule.exports = BasePlugin;","\"use strict\";\n\nmodule.exports = ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];","\"use strict\";\n\nmodule.exports = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete'\n};","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction iconImage() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#686DE0\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",\n    fillRule: \"nonzero\"\n  }), (0, _preact.h)(\"circle\", {\n    cx: \"7.5\",\n    cy: \"9.5\",\n    r: \"1.5\"\n  })));\n}\n\nfunction iconAudio() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",\n    fill: \"#049BCF\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconVideo() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",\n    fill: \"#19AF67\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconPDF() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",\n    fill: \"#E2514A\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconArchive() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",\n    fill: \"#00C469\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction iconFile() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"#A7AFB7\",\n    fillRule: \"nonzero\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"\n  })));\n}\n\nfunction iconText() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",\n    fill: \"#5A5E69\",\n    fillRule: \"nonzero\"\n  }));\n}\n\nfunction getIconByMime(fileType) {\n  const defaultChoice = {\n    color: '#838999',\n    icon: iconFile()\n  };\n  if (!fileType) return defaultChoice;\n  const fileTypeGeneral = fileType.split('/')[0];\n  const fileTypeSpecific = fileType.split('/')[1]; // Text\n\n  if (fileTypeGeneral === 'text') {\n    return {\n      color: '#5a5e69',\n      icon: iconText()\n    };\n  } // Image\n\n\n  if (fileTypeGeneral === 'image') {\n    return {\n      color: '#686de0',\n      icon: iconImage()\n    };\n  } // Audio\n\n\n  if (fileTypeGeneral === 'audio') {\n    return {\n      color: '#068dbb',\n      icon: iconAudio()\n    };\n  } // Video\n\n\n  if (fileTypeGeneral === 'video') {\n    return {\n      color: '#19af67',\n      icon: iconVideo()\n    };\n  } // PDF\n\n\n  if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n    return {\n      color: '#e25149',\n      icon: iconPDF()\n    };\n  } // Archive\n\n\n  const archiveTypes = ['zip', 'x-7z-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage'];\n\n  if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n    return {\n      color: '#00C469',\n      icon: iconArchive()\n    };\n  }\n\n  return defaultChoice;\n}\n\nmodule.exports = getIconByMime;","'use strict';\n\nlet _Symbol$for;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst fetchWithNetworkError = require(\"@uppy/utils/lib/fetchWithNetworkError\");\n\nconst ErrorWithCause = require(\"@uppy/utils/lib/ErrorWithCause\");\n\nconst AuthError = require(\"./AuthError.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n}; // Remove the trailing slash so we can always safely append /xyz.\n\nfunction stripSlash(url) {\n  return url.replace(/\\/$/, '');\n}\n\nasync function handleJSONResponse(res) {\n  if (res.status === 401) {\n    throw new AuthError();\n  }\n\n  const jsonPromise = res.json();\n\n  if (res.status < 200 || res.status > 300) {\n    let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n\n    try {\n      const errData = await jsonPromise;\n      errMsg = errData.message ? `${errMsg} message: ${errData.message}` : errMsg;\n      errMsg = errData.requestId ? `${errMsg} request-Id: ${errData.requestId}` : errMsg;\n    } finally {\n      // eslint-disable-next-line no-unsafe-finally\n      throw new Error(errMsg);\n    }\n  }\n\n  return jsonPromise;\n}\n\nvar _companionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionHeaders\");\n\nvar _getPostResponseFunc = /*#__PURE__*/_classPrivateFieldLooseKey(\"getPostResponseFunc\");\n\nvar _getUrl = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUrl\");\n\nvar _errorHandler = /*#__PURE__*/_classPrivateFieldLooseKey(\"errorHandler\");\n\n_Symbol$for = Symbol.for('uppy test: getCompanionHeaders');\n\nclass RequestClient {\n  constructor(uppy, opts) {\n    Object.defineProperty(this, _errorHandler, {\n      value: _errorHandler2\n    });\n    Object.defineProperty(this, _getUrl, {\n      value: _getUrl2\n    });\n    Object.defineProperty(this, _companionHeaders, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _getPostResponseFunc, {\n      writable: true,\n      value: skip => response => skip ? response : this.onReceiveResponse(response)\n    });\n    this.uppy = uppy;\n    this.opts = opts;\n    this.onReceiveResponse = this.onReceiveResponse.bind(this);\n    this.allowedHeaders = ['accept', 'content-type', 'uppy-auth-token'];\n    this.preflightDone = false;\n    _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts == null ? void 0 : opts.companionHeaders;\n  }\n\n  setCompanionHeaders(headers) {\n    _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = headers;\n  }\n\n  [_Symbol$for]() {\n    return _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders];\n  }\n\n  get hostname() {\n    const {\n      companion\n    } = this.uppy.getState();\n    const host = this.opts.companionUrl;\n    return stripSlash(companion && companion[host] ? companion[host] : host);\n  }\n\n  headers() {\n    return Promise.resolve({ ...RequestClient.defaultHeaders,\n      ..._classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders]\n    });\n  }\n\n  onReceiveResponse(response) {\n    const state = this.uppy.getState();\n    const companion = state.companion || {};\n    const host = this.opts.companionUrl;\n    const {\n      headers\n    } = response; // Store the self-identified domain name for the Companion instance we just hit.\n\n    if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n      this.uppy.setState({\n        companion: { ...companion,\n          [host]: headers.get('i-am')\n        }\n      });\n    }\n\n    return response;\n  }\n\n  preflight(path) {\n    if (this.preflightDone) {\n      return Promise.resolve(this.allowedHeaders.slice());\n    }\n\n    return fetch(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method: 'OPTIONS'\n    }).then(response => {\n      if (response.headers.has('access-control-allow-headers')) {\n        this.allowedHeaders = response.headers.get('access-control-allow-headers').split(',').map(headerName => headerName.trim().toLowerCase());\n      }\n\n      this.preflightDone = true;\n      return this.allowedHeaders.slice();\n    }).catch(err => {\n      this.uppy.log(`[CompanionClient] unable to make preflight request ${err}`, 'warning');\n      this.preflightDone = true;\n      return this.allowedHeaders.slice();\n    });\n  }\n\n  preflightAndHeaders(path) {\n    return Promise.all([this.preflight(path), this.headers()]).then(_ref => {\n      let [allowedHeaders, headers] = _ref;\n      // filter to keep only allowed Headers\n      Object.keys(headers).forEach(header => {\n        if (!allowedHeaders.includes(header.toLowerCase())) {\n          this.uppy.log(`[CompanionClient] excluding disallowed header ${header}`);\n          delete headers[header]; // eslint-disable-line no-param-reassign\n        }\n      });\n      return headers;\n    });\n  }\n\n  get(path, skipPostResponse) {\n    const method = 'get';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin'\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n  post(path, data, skipPostResponse) {\n    const method = 'post';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin',\n      body: JSON.stringify(data)\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n  delete(path, data, skipPostResponse) {\n    const method = 'delete';\n    return this.preflightAndHeaders(path).then(headers => fetchWithNetworkError(`${this.hostname}/${path}`, {\n      method,\n      headers,\n      credentials: this.opts.companionCookiesRule || 'same-origin',\n      body: data ? JSON.stringify(data) : null\n    })).then(_classPrivateFieldLooseBase(this, _getPostResponseFunc)[_getPostResponseFunc](skipPostResponse)).then(handleJSONResponse).catch(_classPrivateFieldLooseBase(this, _errorHandler)[_errorHandler](method, path));\n  }\n\n}\n\nfunction _getUrl2(url) {\n  if (/^(https?:|)\\/\\//.test(url)) {\n    return url;\n  }\n\n  return `${this.hostname}/${url}`;\n}\n\nfunction _errorHandler2(method, path) {\n  return err => {\n    var _err;\n\n    if (!((_err = err) != null && _err.isAuthError)) {\n      // eslint-disable-next-line no-param-reassign\n      err = new ErrorWithCause(`Could not ${method} ${_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path)}`, {\n        cause: err\n      });\n    }\n\n    return Promise.reject(err);\n  };\n}\n\nRequestClient.VERSION = packageJson.version;\nRequestClient.defaultHeaders = {\n  Accept: 'application/json',\n  'Content-Type': 'application/json',\n  'Uppy-Versions': `@uppy/companion-client=${RequestClient.VERSION}`\n};\nmodule.exports = RequestClient;","/*!\n  * Bootstrap v4.6.2 (https://getbootstrap.com/)\n  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, (function (exports, $, Popper) { 'use strict';\n\n  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n\n  function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : 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    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n\n    _setPrototypeOf(subClass, superClass);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n    return _setPrototypeOf(o, p);\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * Private TransitionEnd Helpers\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default[\"default\"](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * Public Util API\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n      var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default[\"default\"](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n\n  /**\n   * Constants\n   */\n\n  var NAME$a = 'alert';\n  var VERSION$a = '4.6.2';\n  var DATA_KEY$a = 'bs.alert';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  /**\n   * Class definition\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n      $__default[\"default\"](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n      if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$a);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n  $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n  $__default[\"default\"].fn[NAME$a].noConflict = function () {\n    $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$9 = 'button';\n  var VERSION$9 = '4.6.2';\n  var DATA_KEY$9 = 'bs.button';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  /**\n   * Class definition\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n              if (activeElement) {\n                $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default[\"default\"](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n        }\n\n        if (triggerChangeEvent) {\n          $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$9, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n  $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n  $__default[\"default\"].fn[NAME$9].noConflict = function () {\n    $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$8 = 'carousel';\n  var VERSION$8 = '4.6.2';\n  var DATA_KEY$8 = 'bs.carousel';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var Default$7 = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType$7 = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * Class definition\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"](this._element).off(EVENT_KEY$8);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, config);\n      Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default[\"default\"](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default[\"default\"](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default[\"default\"](activeElement).addClass(directionalClassName);\n        $__default[\"default\"](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n          $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n          $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default[\"default\"](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n        $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        $__default[\"default\"](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n        var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n        if (typeof config === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default[\"default\"](selector)[0];\n\n      if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n      if (slideIndex) {\n        $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default[\"default\"](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n  $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n  $__default[\"default\"].fn[NAME$8].noConflict = function () {\n    $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$7 = 'collapse';\n  var VERSION$7 = '4.6.2';\n  var DATA_KEY$7 = 'bs.collapse';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n  var CLASS_NAME_SHOW$6 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n  var Default$6 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$6 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default[\"default\"](actives).data(DATA_KEY$7, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n              $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default[\"default\"](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n      if (triggerArray.length) {\n        $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$7);\n\n        var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default[\"default\"](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default[\"default\"](selectors).each(function () {\n      var $target = $__default[\"default\"](this);\n      var data = $target.data(DATA_KEY$7);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n  $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n  $__default[\"default\"].fn[NAME$7].noConflict = function () {\n    $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$6 = 'dropdown';\n  var VERSION$6 = '4.6.2';\n  var DATA_KEY$6 = 'bs.dropdown';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$5 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$5 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        // Check for Popper dependency\n        if (typeof Popper__default[\"default\"] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n      $__default[\"default\"](this._element).off(EVENT_KEY$6);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n        $__default[\"default\"](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n        $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE$1) {\n          $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default[\"default\"](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default[\"default\"](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n  $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n  $__default[\"default\"].fn[NAME$6].noConflict = function () {\n    $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.2';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  var Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$4 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  /**\n   * Class definition\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n        this._isTransitioning = true;\n      }\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n        return _this.hide(event);\n      });\n      $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default[\"default\"](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$4, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n      $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default[\"default\"](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default[\"default\"](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default[\"default\"](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default[\"default\"](this._backdrop).appendTo(document.body);\n        $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default[\"default\"](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n          $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default[\"default\"](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n          $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n        $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default[\"default\"](fixedContent).each(function (index, element) {\n        var padding = $__default[\"default\"](element).data('padding-right');\n        $__default[\"default\"](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default[\"default\"](elements).each(function (index, element) {\n        var margin = $__default[\"default\"](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default[\"default\"](document.body).data('padding-right');\n      $__default[\"default\"](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default[\"default\"](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n  $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n  $__default[\"default\"].fn[NAME$5].noConflict = function () {\n    $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attrName)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * Constants\n   */\n\n  var NAME$4 = 'tooltip';\n  var VERSION$4 = '4.6.2';\n  var DATA_KEY$4 = 'bs.tooltip';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n  var CLASS_PREFIX$1 = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    INSERTED: \"inserted\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    FOCUSIN: \"focusin\" + EVENT_KEY$4,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n  };\n  /**\n   * Class definition\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // Private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default[\"default\"](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n      $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n      $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default[\"default\"](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default[\"default\"](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default[\"default\"](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default[\"default\"](tip).appendTo(container);\n        }\n\n        $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n        $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n        $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default[\"default\"](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default[\"default\"](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default[\"default\"](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default[\"default\"](this.config.container);\n      }\n\n      return $__default[\"default\"](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default[\"default\"](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$4;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$4;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$4;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$3;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n  $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n  $__default[\"default\"].fn[NAME$4].noConflict = function () {\n    $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$3 = 'popover';\n  var VERSION$3 = '4.6.2';\n  var DATA_KEY$3 = 'bs.popover';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n  var CLASS_PREFIX = 'bs-popover';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n\n  var Default$2 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    INSERTED: \"inserted\" + EVENT_KEY$3,\n    CLICK: \"click\" + EVENT_KEY$3,\n    FOCUSIN: \"focusin\" + EVENT_KEY$3,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n  };\n  /**\n   * Class definition\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      get: // Getters\n      function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$3;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$3;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$3;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n  $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n  $__default[\"default\"].fn[NAME$3].noConflict = function () {\n    $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$2 = 'scrollspy';\n  var VERSION$2 = '4.6.2';\n  var DATA_KEY$2 = 'bs.scrollspy';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(Boolean).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n      $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default[\"default\"](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$2);\n          $__default[\"default\"](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n        $link.addClass(CLASS_NAME_ACTIVE$1);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n      }\n\n      $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$1);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$1);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default[\"default\"](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n  $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n  $__default[\"default\"].fn[NAME$2].noConflict = function () {\n    $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$1 = 'tab';\n  var VERSION$1 = '4.6.2';\n  var DATA_KEY$1 = 'bs.tab';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$1 = 'show';\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * Class definition\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default[\"default\"](previous).trigger(hideEvent);\n      }\n\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n        $__default[\"default\"](previous).trigger(hiddenEvent);\n        $__default[\"default\"](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n        var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      var parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n          $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default[\"default\"](this);\n        var data = $this.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$1, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n  $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n  $__default[\"default\"].fn[NAME$1].noConflict = function () {\n    $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME = 'toast';\n  var VERSION = '4.6.2';\n  var DATA_KEY = 'bs.toast';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n  var EVENT_SHOW = \"show\" + EVENT_KEY;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n  var Default = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  /**\n   * Class definition\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n      $__default[\"default\"].removeData(this._element, DATA_KEY);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, $__default[\"default\"](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n  $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n  $__default[\"default\"].fn[NAME].noConflict = function () {\n    $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n","/*\n * Implements a user-facing modal confirmation when link has a\n * \"data-confirm\" attribute using bootstrap's modals. MIT license.\n *\n *   - vjt@openssl.it  Tue Jul  2 18:45:15 CEST 2013\n */\n(function ($) {\n\n  /**\n   * Builds the markup for a [Bootstrap modal](http://twitter.github.io/bootstrap/javascript.html#modals)\n   * for the given `element`. Uses the following `data-` parameters to\n   * customize it:\n   *\n   *  * `data-confirm`: Contains the modal body text. HTML is allowed.\n   *                    Separate multiple paragraphs using \\n\\n.\n   *  * `data-commit`:  The 'confirm' button text. \"Confirm\" by default.\n   *  * `data-cancel`:  The 'cancel' button text. \"Cancel\" by default.\n   *  * `data-verify`:  Adds a text input in which the user has to input\n   *                    the text in this attribute value for the 'confirm'\n   *                    button to be clickable. Optional.\n   *  * `data-verify-text`:  Adds a label for the data-verify input. Optional\n   *  * `data-focus`:   Define focused input. Supported values are\n   *                    'cancel' or 'commit', 'cancel' is default for\n   *                    data-method DELETE, 'commit' for all others.\n   *\n   * You can set global setting using `dataConfirmModal.setDefaults`, for example:\n   *\n   *    dataConfirmModal.setDefaults({\n   *      title: 'Confirm your action',\n   *      commit: 'Continue',\n   *      cancel: 'Cancel',\n   *      fade:   false,\n   *      verifyClass: 'form-control',\n   *    });\n   *\n   */\n\n  var defaults = {\n    title: 'Are you sure?',\n    commit: 'Confirm',\n    commitClass: 'btn-danger',\n    cancel: 'Cancel',\n    cancelClass: 'btn-default',\n    fade: true,\n    verifyClass: 'form-control',\n    elements: ['a[data-confirm]', 'button[data-confirm]', 'input[type=submit][data-confirm]'],\n    focus: 'commit',\n    zIndex: 1050,\n    modalClass: false,\n    show: true\n  };\n\n  var settings;\n\n  window.dataConfirmModal = {\n    setDefaults: function (newSettings) {\n      settings = $.extend(settings, newSettings);\n    },\n\n    restoreDefaults: function () {\n      settings = $.extend({}, defaults);\n    },\n\n    confirm: function (options) {\n      // Build an ephemeral modal\n      //\n      var modal = buildModal(options);\n\n      modal.spawn();\n      modal.on('hidden.bs.modal', function () {\n        modal.remove();\n      });\n\n      modal.find('.commit').on('click', function () {\n        if (options.onConfirm && options.onConfirm.call)\n          options.onConfirm.call();\n\n        modal.modal('hide');\n      });\n\n      modal.find('.cancel').on('click', function () {\n        if (options.onCancel && options.onCancel.call)\n          options.onCancel.call();\n\n        modal.modal('hide');\n      });\n    }\n  };\n\n  dataConfirmModal.restoreDefaults();\n\n  // Detect bootstrap version, or bail out.\n  //\n  if ($.fn.modal == undefined) {\n    throw new Error(\"The bootstrap modal plugin does not appear to be loaded.\");\n  }\n\n  if ($.fn.modal.Constructor == undefined) {\n    throw new Error(\"The bootstrap modal plugin does not have a Constructor ?!?\");\n  }\n\n  if ($.fn.modal.Constructor.VERSION == undefined) {\n    throw new Error(\"The bootstrap modal plugin does not have its version defined ?!?\");\n  }\n\n  var versionString = $.fn.modal.Constructor.VERSION;\n  var match = versionString.match(/^(\\d)\\./);\n  if (!match) {\n    throw new Error(\"Cannot identify Bootstrap version. Version string: \" + versionString);\n  }\n\n  var bootstrapVersion = parseInt(match[1]);\n  if (bootstrapVersion != 3 && bootstrapVersion != 4) {\n    throw new Error(\"Unsupported bootstrap version: \" + bootstrapVersion + \". data-confirm-modal supports version 3 and 4.\");\n  }\n\n  var buildElementModal = function (element) {\n    var options = {\n      title:        element.data('title') || element.attr('title') || element.data('original-title'),\n      text:         element.data('confirm'),\n      focus:        element.data('focus'),\n      method:       element.data('method'),\n      modalClass:   element.data('modal-class'),\n      commit:       element.data('commit'),\n      commitClass:  element.data('commit-class'),\n      cancel:       element.data('cancel'),\n      cancelClass:  element.data('cancel-class'),\n      remote:       element.data('remote'),\n      verify:       element.data('verify'),\n      verifyRegexp: element.data('verify-regexp'),\n      verifyLabel:  element.data('verify-text'),\n      verifyRegexpCaseInsensitive: element.data('verify-regexp-caseinsensitive'),\n      backdrop:     element.data('backdrop'),\n      keyboard:     element.data('keyboard'),\n      show:         element.data('show')\n    };\n\n    var modal = buildModal(options);\n\n    modal.find('.commit').on('click', function () {\n      // Call the original event handler chain\n      element.get(0).click();\n\n      modal.modal('hide');\n    });\n\n    return modal;\n  }\n\n  var buildModal = function (options) {\n    var id = 'confirm-modal-' + String(Math.random()).slice(2, -1);\n    var fade = settings.fade ? 'fade' : '';\n    var modalClass = options.modalClass ? options.modalClass : settings.modalClass;\n\n    var modalTitle = '<h5 id=\"'+id+'Label\" class=\"modal-title\"></h5> '\n    var modalClose = '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\">&times;</button>';\n    var modalHeader;\n\n    // Bootstrap 3 and 4 have different DOMs and different CSS. In B4, the\n    // modalHeader is display:flex and the modalClose uses negative margins,\n    // so it can stay after the modalTitle.\n    //\n    // In B3, the close button floats to the right, so it must stay before\n    // the modalTitle.\n    //\n    switch (bootstrapVersion) {\n    case 3:\n      modalHeader = modalClose + modalTitle;\n      break;\n    case 4:\n      modalHeader = modalTitle + modalClose;\n      break;\n    }\n\n    var modal = $(\n      '<div id=\"'+id+'\" class=\"modal '+modalClass+' '+fade+'\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"'+id+'Label\" aria-hidden=\"true\">' +\n        '<div class=\"modal-dialog\" role=\"document\">' +\n          '<div class=\"modal-content\">' +\n            '<div class=\"modal-header\">' +\n              modalHeader +\n            '</div>' +\n            '<div class=\"modal-body\"></div>' +\n            '<div class=\"modal-footer\">' +\n              '<button class=\"btn cancel\" data-dismiss=\"modal\" aria-hidden=\"true\"></button>' +\n              '<button class=\"btn commit\"></button>' +\n            '</div>'+\n          '</div>'+\n        '</div>'+\n      '</div>'\n    );\n\n    // Make sure it's always the top zindex\n    var highest = current = settings.zIndex;\n    $('.modal.in').not('#'+id).each(function() {\n      current = parseInt($(this).css('z-index'), 10);\n      if(current > highest) {\n        highest = current\n      }\n    });\n    modal.css('z-index', parseInt(highest) + 1);\n\n    modal.find('.modal-title').text(options.title || settings.title);\n\n    var body = modal.find('.modal-body');\n\n    $.each((options.text||'').split(/\\n{2}/), function (i, piece) {\n      body.append($('<p/>').html(piece));\n    });\n\n    var commit = modal.find('.commit');\n    commit.text(options.commit || settings.commit);\n    commit.addClass(options.commitClass || settings.commitClass);\n\n    var cancel = modal.find('.cancel');\n    cancel.text(options.cancel || settings.cancel);\n    cancel.addClass(options.cancelClass || settings.cancelClass);\n\n    if (options.remote) {\n      commit.attr('data-dismiss', 'modal');\n    }\n\n    if (options.verify || options.verifyRegexp) {\n      commit.prop('disabled', true);\n\n      var isMatch;\n      if (options.verifyRegexp) {\n        var caseInsensitive = options.verifyRegexpCaseInsensitive;\n        var regexp = options.verifyRegexp;\n        var re = new RegExp(regexp, caseInsensitive ? 'i' : '');\n\n        isMatch = function (input) { return input.match(re) };\n      } else {\n        isMatch = function (input) { return options.verify == input };\n      }\n\n      var verification = $('<input/>', {\"type\": 'text', \"class\": settings.verifyClass}).on('keyup', function () {\n        commit.prop('disabled', !isMatch($(this).val()));\n      });\n\n      modal.on('shown.bs.modal', function () {\n        verification.focus();\n      });\n\n      modal.on('hidden.bs.modal', function () {\n        verification.val('').trigger('keyup');\n      });\n\n      if (options.verifyLabel)\n        body.append($('<p>', {text: options.verifyLabel}))\n\n      body.append(verification);\n    }\n\n    var focus_element;\n    if (options.focus) {\n      focus_element = options.focus;\n    } else if (options.method == 'delete') {\n      focus_element = 'cancel'\n    } else {\n      focus_element = settings.focus;\n    }\n    focus_element = modal.find('.' + focus_element);\n\n    modal.on('shown.bs.modal', function () {\n      focus_element.focus();\n    });\n\n    $('body').append(modal);\n\n    modal.spawn = function() {\n      return modal.modal($.extend({}, {\n        backdrop: options.backdrop,\n        keyboard: options.keyboard,\n        show:     options.show\n      }));\n    };\n\n    return modal;\n  };\n\n\n  /**\n   * Returns a modal already built for the given element or builds a new one,\n   * caching it into the element's `confirm-modal` data attribute.\n   */\n  var getModal = function (element) {\n    var modal = element.data('confirm-modal');\n\n    if (!modal) {\n      modal = buildElementModal(element);\n      element.data('confirm-modal', modal);\n    }\n\n    return modal;\n  };\n\n  $.fn.confirmModal = function () {\n    var modal = getModal($(this));\n\n    modal.spawn();\n\n    return modal;\n  };\n\n  if (window.Rails || $.rails) {\n    /**\n     * Attaches to Rails' UJS adapter's 'confirm' event, triggered on elements\n     * having a `data-confirm` attribute set.\n     *\n     * If the modal is not visible, then it is spawned and the default Rails\n     * confirmation dialog is canceled.\n     *\n     * If the modal is visible, it means the handler is being called by the\n     * modal commit button click handler, as such the user has successfully\n     * clicked on the confirm button. In this case Rails' confirm function\n     * is briefly overriden, and afterwards reset when the modal is closed.\n     *\n     */\n    var window_confirm = window.confirm;\n\n    $(document).delegate(settings.elements.join(', '), 'confirm', function() {\n      var element = $(this), modal = getModal(element);\n\n      if (!modal.is(':visible')) {\n        modal.spawn();\n\n        // Cancel Rails' confirmation\n        return false;\n\n      } else {\n        // Modal has been confirmed. Override Rails' handler\n        window.confirm = function () {\n          return true;\n        }\n\n        modal.one('hidden.bs.modal', function() {\n          // Reset it after modal is closed.\n          window.confirm = window_confirm;\n        });\n\n        // Proceed with Rails' handlers\n        return true;\n      }\n    });\n  }\n\n})(jQuery);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.justErrorsLogger = exports.debugLogger = void 0;\n\n/* eslint-disable no-console */\nconst getTimeStamp = require(\"@uppy/utils/lib/getTimeStamp\"); // Swallow all logs, except errors.\n// default if logger is not set or debug: false\n\n\nconst justErrorsLogger = {\n  debug: () => {},\n  warn: () => {},\n  error: function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n}; // Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\n\nexports.justErrorsLogger = justErrorsLogger;\nconst debugLogger = {\n  debug: function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  warn: function () {\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n\n    return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n  },\n  error: function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n  }\n};\nexports.debugLogger = debugLogger;","\"use strict\";\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar _loggers = require(\"./loggers.js\");\n\nvar _Restricter = require(\"./Restricter.js\");\n\nlet _Symbol$for, _Symbol$for2;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\n/* eslint-disable max-classes-per-file */\n\n/* global AggregateError */\nconst Translator = require(\"@uppy/utils/lib/Translator\");\n\nconst ee = require(\"namespace-emitter\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst DefaultStore = require(\"@uppy/store-default\");\n\nconst getFileType = require(\"@uppy/utils/lib/getFileType\");\n\nconst getFileNameAndExtension = require(\"@uppy/utils/lib/getFileNameAndExtension\");\n\nconst generateFileID = require(\"@uppy/utils/lib/generateFileID\");\n\nconst supportsUploadProgress = require(\"./supportsUploadProgress.js\");\n\nconst getFileName = require(\"./getFileName.js\");\n\nconst packageJson = {\n  \"version\": \"2.3.1\"\n};\n\nconst locale = require(\"./locale.js\");\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\n\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\n\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\n\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\n\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\n\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\n\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\n\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\n\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\n\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\n\nvar _checkAndCreateFileStateObject = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndCreateFileStateObject\");\n\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\n\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\n\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\n\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\n\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\n\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\n\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\n\n_Symbol$for = Symbol.for('uppy test: getPlugins');\n_Symbol$for2 = Symbol.for('uppy test: createUpload');\n\nclass Uppy {\n  /** @type {Record<string, BasePlugin[]>} */\n\n  /**\n   * Instantiate Uppy\n   *\n   * @param {object} opts — Uppy options\n   */\n  constructor(_opts) {\n    Object.defineProperty(this, _runUpload, {\n      value: _runUpload2\n    });\n    Object.defineProperty(this, _removeUpload, {\n      value: _removeUpload2\n    });\n    Object.defineProperty(this, _getUpload, {\n      value: _getUpload2\n    });\n    Object.defineProperty(this, _createUpload, {\n      value: _createUpload2\n    });\n    Object.defineProperty(this, _addListeners, {\n      value: _addListeners2\n    });\n    Object.defineProperty(this, _startIfAutoProceed, {\n      value: _startIfAutoProceed2\n    });\n    Object.defineProperty(this, _checkAndCreateFileStateObject, {\n      value: _checkAndCreateFileStateObject2\n    });\n    Object.defineProperty(this, _assertNewUploadAllowed, {\n      value: _assertNewUploadAllowed2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFields, {\n      value: _checkRequiredMetaFields2\n    });\n    Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n      value: _checkRequiredMetaFieldsOnFile2\n    });\n    Object.defineProperty(this, _informAndEmit, {\n      value: _informAndEmit2\n    });\n    Object.defineProperty(this, _plugins, {\n      writable: true,\n      value: Object.create(null)\n    });\n    Object.defineProperty(this, _restricter, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _storeUnsubscribe, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: ee()\n    });\n    Object.defineProperty(this, _preProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _uploaders, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _postProcessors, {\n      writable: true,\n      value: new Set()\n    });\n    Object.defineProperty(this, _updateOnlineStatus, {\n      writable: true,\n      value: this.updateOnlineStatus.bind(this)\n    });\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      id: 'uppy',\n      autoProceed: false,\n\n      /**\n       * @deprecated The method should not be used\n       */\n      allowMultipleUploads: true,\n      allowMultipleUploadBatches: true,\n      debug: false,\n      restrictions: _Restricter.defaultOptions,\n      meta: {},\n      onBeforeFileAdded: currentFile => currentFile,\n      onBeforeUpload: files => files,\n      store: DefaultStore(),\n      logger: _loggers.justErrorsLogger,\n      infoTimeout: 5000\n    }; // Merge default options with the ones set by user,\n    // making sure to merge restrictions too\n\n    this.opts = { ...defaultOptions,\n      ..._opts,\n      restrictions: { ...defaultOptions.restrictions,\n        ...(_opts && _opts.restrictions)\n      }\n    }; // Support debug: true for backwards-compatability, unless logger is set in opts\n    // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n\n    if (_opts && _opts.logger && _opts.debug) {\n      this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n    } else if (_opts && _opts.debug) {\n      this.opts.logger = _loggers.debugLogger;\n    }\n\n    this.log(`Using Core v${this.constructor.VERSION}`);\n    this.i18nInit(); // ___Why throttle at 500ms?\n    //    - We must throttle at >250ms for superfocus in Dashboard to work well\n    //    (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n    //    [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n    //    and click 'ADD MORE FILES', - focus won't activate in Firefox.\n    //    - We must throttle at around >500ms to avoid performance lags.\n    //    [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n\n    this.calculateProgress = throttle(this.calculateProgress.bind(this), 500, {\n      leading: true,\n      trailing: true\n    });\n    this.store = this.opts.store;\n    this.setState({\n      plugins: {},\n      files: {},\n      currentUploads: {},\n      allowNewUpload: true,\n      capabilities: {\n        uploadProgress: supportsUploadProgress(),\n        individualCancellation: true,\n        resumableUploads: false\n      },\n      totalProgress: 0,\n      meta: { ...this.opts.meta\n      },\n      info: [],\n      recoveredState: null\n    });\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new _Restricter.Restricter(() => this.opts, this.i18n);\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe((prevState, nextState, patch) => {\n      this.emit('state-update', prevState, nextState, patch);\n      this.updateAll(nextState);\n    }); // Exposing uppy object on window for debugging and testing\n\n    if (this.opts.debug && typeof window !== 'undefined') {\n      window[this.opts.id] = this;\n    }\n\n    _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n  }\n\n  emit(event) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n  }\n\n  on(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n\n    return this;\n  }\n\n  once(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n\n    return this;\n  }\n\n  off(event, callback) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n\n    return this;\n  }\n  /**\n   * Iterate on all plugins and run `update` on them.\n   * Called each time state changes.\n   *\n   */\n\n\n  updateAll(state) {\n    this.iteratePlugins(plugin => {\n      plugin.update(state);\n    });\n  }\n  /**\n   * Updates state with a patch\n   *\n   * @param {object} patch {foo: 'bar'}\n   */\n\n\n  setState(patch) {\n    this.store.setState(patch);\n  }\n  /**\n   * Returns current state.\n   *\n   * @returns {object}\n   */\n\n\n  getState() {\n    return this.store.getState();\n  }\n  /**\n   * Back compat for when uppy.state is used instead of uppy.getState().\n   *\n   * @deprecated\n   */\n\n\n  get state() {\n    // Here, state is a non-enumerable property.\n    return this.getState();\n  }\n  /**\n   * Shorthand to set state for a specific file.\n   */\n\n\n  setFileState(fileID, state) {\n    if (!this.getState().files[fileID]) {\n      throw new Error(`Can’t set state for ${fileID} (the file could have been removed)`);\n    }\n\n    this.setState({\n      files: { ...this.getState().files,\n        [fileID]: { ...this.getState().files[fileID],\n          ...state\n        }\n      }\n    });\n  }\n\n  i18nInit() {\n    const translator = new Translator([this.defaultLocale, this.opts.locale]);\n    this.i18n = translator.translate.bind(translator);\n    this.i18nArray = translator.translateArray.bind(translator);\n    this.locale = translator.locale;\n  }\n\n  setOptions(newOpts) {\n    this.opts = { ...this.opts,\n      ...newOpts,\n      restrictions: { ...this.opts.restrictions,\n        ...(newOpts && newOpts.restrictions)\n      }\n    };\n\n    if (newOpts.meta) {\n      this.setMeta(newOpts.meta);\n    }\n\n    this.i18nInit();\n\n    if (newOpts.locale) {\n      this.iteratePlugins(plugin => {\n        plugin.setOptions();\n      });\n    } // Note: this is not the preact `setState`, it's an internal function that has the same name.\n\n\n    this.setState(); // so that UI re-renders with new options\n  }\n\n  resetProgress() {\n    const defaultProgress = {\n      percentage: 0,\n      bytesUploaded: 0,\n      uploadComplete: false,\n      uploadStarted: null\n    };\n    const files = { ...this.getState().files\n    };\n    const updatedFiles = {};\n    Object.keys(files).forEach(fileID => {\n      const updatedFile = { ...files[fileID]\n      };\n      updatedFile.progress = { ...updatedFile.progress,\n        ...defaultProgress\n      };\n      updatedFiles[fileID] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      totalProgress: 0\n    });\n    this.emit('reset-progress');\n  }\n\n  addPreProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n  }\n\n  removePreProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n  }\n\n  addPostProcessor(fn) {\n    _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n  }\n\n  removePostProcessor(fn) {\n    return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n  }\n\n  addUploader(fn) {\n    _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n  }\n\n  removeUploader(fn) {\n    return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n  }\n\n  setMeta(data) {\n    const updatedMeta = { ...this.getState().meta,\n      ...data\n    };\n    const updatedFiles = { ...this.getState().files\n    };\n    Object.keys(updatedFiles).forEach(fileID => {\n      updatedFiles[fileID] = { ...updatedFiles[fileID],\n        meta: { ...updatedFiles[fileID].meta,\n          ...data\n        }\n      };\n    });\n    this.log('Adding metadata:');\n    this.log(data);\n    this.setState({\n      meta: updatedMeta,\n      files: updatedFiles\n    });\n  }\n\n  setFileMeta(fileID, data) {\n    const updatedFiles = { ...this.getState().files\n    };\n\n    if (!updatedFiles[fileID]) {\n      this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n      return;\n    }\n\n    const newMeta = { ...updatedFiles[fileID].meta,\n      ...data\n    };\n    updatedFiles[fileID] = { ...updatedFiles[fileID],\n      meta: newMeta\n    };\n    this.setState({\n      files: updatedFiles\n    });\n  }\n  /**\n   * Get a file object.\n   *\n   * @param {string} fileID The ID of the file object to return.\n   */\n\n\n  getFile(fileID) {\n    return this.getState().files[fileID];\n  }\n  /**\n   * Get all files in an array.\n   */\n\n\n  getFiles() {\n    const {\n      files\n    } = this.getState();\n    return Object.values(files);\n  }\n\n  getObjectOfFilesPerState() {\n    const {\n      files: filesObject,\n      totalProgress,\n      error\n    } = this.getState();\n    const files = Object.values(filesObject);\n    const inProgressFiles = files.filter(_ref => {\n      let {\n        progress\n      } = _ref;\n      return !progress.uploadComplete && progress.uploadStarted;\n    });\n    const newFiles = files.filter(file => !file.progress.uploadStarted);\n    const startedFiles = files.filter(file => file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess);\n    const uploadStartedFiles = files.filter(file => file.progress.uploadStarted);\n    const pausedFiles = files.filter(file => file.isPaused);\n    const completeFiles = files.filter(file => file.progress.uploadComplete);\n    const erroredFiles = files.filter(file => file.error);\n    const inProgressNotPausedFiles = inProgressFiles.filter(file => !file.isPaused);\n    const processingFiles = files.filter(file => file.progress.preprocess || file.progress.postprocess);\n    return {\n      newFiles,\n      startedFiles,\n      uploadStartedFiles,\n      pausedFiles,\n      completeFiles,\n      erroredFiles,\n      inProgressFiles,\n      inProgressNotPausedFiles,\n      processingFiles,\n      isUploadStarted: uploadStartedFiles.length > 0,\n      isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n      isAllErrored: !!error && erroredFiles.length === files.length,\n      isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n      isUploadInProgress: inProgressFiles.length > 0,\n      isSomeGhost: files.some(file => file.isGhost)\n    };\n  }\n  /*\n  * @constructs\n  * @param { Error } error\n  * @param { undefined } file\n  */\n\n  /*\n  * @constructs\n  * @param { RestrictionError } error\n  * @param { UppyFile | undefined } file\n  */\n\n\n  validateRestrictions(file, files) {\n    if (files === void 0) {\n      files = this.getFiles();\n    }\n\n    // TODO: directly return the Restriction error in next major version.\n    // we create RestrictionError's just to discard immediately, which doesn't make sense.\n    try {\n      _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(file, files);\n\n      return {\n        result: true\n      };\n    } catch (err) {\n      return {\n        result: false,\n        reason: err.message\n      };\n    }\n  }\n\n  checkIfFileAlreadyExists(fileID) {\n    const {\n      files\n    } = this.getState();\n\n    if (files[fileID] && !files[fileID].isGhost) {\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Create a file state object based on user-provided `addFile()` options.\n   *\n   * Note this is extremely side-effectful and should only be done when a file state object\n   * will be added to state immediately afterward!\n   *\n   * The `files` value is passed in because it may be updated by the caller without updating the store.\n   */\n\n\n  /**\n   * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n   * try to guess file type in a clever way, check file against restrictions,\n   * and start an upload if `autoProceed === true`.\n   *\n   * @param {object} file object to add\n   * @returns {string} id for the added file\n   */\n  addFile(file) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n\n    const {\n      files\n    } = this.getState();\n\n    let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, file); // Users are asked to re-select recovered files without data,\n    // and to keep the progress, meta and everthing else, we only replace said data\n\n\n    if (files[newFile.id] && files[newFile.id].isGhost) {\n      newFile = { ...files[newFile.id],\n        data: file.data,\n        isGhost: false\n      };\n      this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n    }\n\n    this.setState({\n      files: { ...files,\n        [newFile.id]: newFile\n      }\n    });\n    this.emit('file-added', newFile);\n    this.emit('files-added', [newFile]);\n    this.log(`Added file: ${newFile.name}, ${newFile.id}, mime type: ${newFile.type}`);\n\n    _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n\n    return newFile.id;\n  }\n  /**\n   * Add multiple files to `state.files`. See the `addFile()` documentation.\n   *\n   * If an error occurs while adding a file, it is logged and the user is notified.\n   * This is good for UI plugins, but not for programmatic use.\n   * Programmatic users should usually still use `addFile()` on individual files.\n   */\n\n\n  addFiles(fileDescriptors) {\n    _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](); // create a copy of the files object only once\n\n\n    const files = { ...this.getState().files\n    };\n    const newFiles = [];\n    const errors = [];\n\n    for (let i = 0; i < fileDescriptors.length; i++) {\n      try {\n        let newFile = _classPrivateFieldLooseBase(this, _checkAndCreateFileStateObject)[_checkAndCreateFileStateObject](files, fileDescriptors[i]); // Users are asked to re-select recovered files without data,\n        // and to keep the progress, meta and everthing else, we only replace said data\n\n\n        if (files[newFile.id] && files[newFile.id].isGhost) {\n          newFile = { ...files[newFile.id],\n            data: fileDescriptors[i].data,\n            isGhost: false\n          };\n          this.log(`Replaced blob in a ghost file: ${newFile.name}, ${newFile.id}`);\n        }\n\n        files[newFile.id] = newFile;\n        newFiles.push(newFile);\n      } catch (err) {\n        if (!err.isRestriction) {\n          errors.push(err);\n        }\n      }\n    }\n\n    this.setState({\n      files\n    });\n    newFiles.forEach(newFile => {\n      this.emit('file-added', newFile);\n    });\n    this.emit('files-added', newFiles);\n\n    if (newFiles.length > 5) {\n      this.log(`Added batch of ${newFiles.length} files`);\n    } else {\n      Object.keys(newFiles).forEach(fileID => {\n        this.log(`Added file: ${newFiles[fileID].name}\\n id: ${newFiles[fileID].id}\\n type: ${newFiles[fileID].type}`);\n      });\n    }\n\n    if (newFiles.length > 0) {\n      _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n    }\n\n    if (errors.length > 0) {\n      let message = 'Multiple errors occurred while adding files:\\n';\n      errors.forEach(subError => {\n        message += `\\n * ${subError.message}`;\n      });\n      this.info({\n        message: this.i18n('addBulkFilesFailed', {\n          smart_count: errors.length\n        }),\n        details: message\n      }, 'error', this.opts.infoTimeout);\n\n      if (typeof AggregateError === 'function') {\n        throw new AggregateError(errors, message);\n      } else {\n        const err = new Error(message);\n        err.errors = errors;\n        throw err;\n      }\n    }\n  }\n\n  removeFiles(fileIDs, reason) {\n    const {\n      files,\n      currentUploads\n    } = this.getState();\n    const updatedFiles = { ...files\n    };\n    const updatedUploads = { ...currentUploads\n    };\n    const removedFiles = Object.create(null);\n    fileIDs.forEach(fileID => {\n      if (files[fileID]) {\n        removedFiles[fileID] = files[fileID];\n        delete updatedFiles[fileID];\n      }\n    }); // Remove files from the `fileIDs` list in each upload.\n\n    function fileIsNotRemoved(uploadFileID) {\n      return removedFiles[uploadFileID] === undefined;\n    }\n\n    Object.keys(updatedUploads).forEach(uploadID => {\n      const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved); // Remove the upload if no files are associated with it anymore.\n\n      if (newFileIDs.length === 0) {\n        delete updatedUploads[uploadID];\n        return;\n      }\n\n      updatedUploads[uploadID] = { ...currentUploads[uploadID],\n        fileIDs: newFileIDs\n      };\n    });\n    const stateUpdate = {\n      currentUploads: updatedUploads,\n      files: updatedFiles\n    }; // If all files were removed - allow new uploads,\n    // and clear recoveredState\n\n    if (Object.keys(updatedFiles).length === 0) {\n      stateUpdate.allowNewUpload = true;\n      stateUpdate.error = null;\n      stateUpdate.recoveredState = null;\n    }\n\n    this.setState(stateUpdate);\n    this.calculateTotalProgress();\n    const removedFileIDs = Object.keys(removedFiles);\n    removedFileIDs.forEach(fileID => {\n      this.emit('file-removed', removedFiles[fileID], reason);\n    });\n\n    if (removedFileIDs.length > 5) {\n      this.log(`Removed ${removedFileIDs.length} files`);\n    } else {\n      this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n    }\n  }\n\n  removeFile(fileID, reason) {\n    if (reason === void 0) {\n      reason = null;\n    }\n\n    this.removeFiles([fileID], reason);\n  }\n\n  pauseResume(fileID) {\n    if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).uploadComplete) {\n      return undefined;\n    }\n\n    const wasPaused = this.getFile(fileID).isPaused || false;\n    const isPaused = !wasPaused;\n    this.setFileState(fileID, {\n      isPaused\n    });\n    this.emit('upload-pause', fileID, isPaused);\n    return isPaused;\n  }\n\n  pauseAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: true\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('pause-all');\n  }\n\n  resumeAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('resume-all');\n  }\n\n  retryAll() {\n    const updatedFiles = { ...this.getState().files\n    };\n    const filesToRetry = Object.keys(updatedFiles).filter(file => {\n      return updatedFiles[file].error;\n    });\n    filesToRetry.forEach(file => {\n      const updatedFile = { ...updatedFiles[file],\n        isPaused: false,\n        error: null\n      };\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      error: null\n    });\n    this.emit('retry-all', filesToRetry);\n\n    if (filesToRetry.length === 0) {\n      return Promise.resolve({\n        successful: [],\n        failed: []\n      });\n    }\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n\n  cancelAll(_temp) {\n    let {\n      reason = 'user'\n    } = _temp === void 0 ? {} : _temp;\n    this.emit('cancel-all', {\n      reason\n    }); // Only remove existing uploads if user is canceling\n\n    if (reason === 'user') {\n      const {\n        files\n      } = this.getState();\n      const fileIDs = Object.keys(files);\n\n      if (fileIDs.length) {\n        this.removeFiles(fileIDs, 'cancel-all');\n      }\n\n      this.setState({\n        totalProgress: 0,\n        error: null,\n        recoveredState: null\n      });\n    }\n  }\n\n  retryUpload(fileID) {\n    this.setFileState(fileID, {\n      error: null,\n      isPaused: false\n    });\n    this.emit('upload-retry', fileID);\n\n    const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n    });\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  } // todo remove in next major. what is the point of the reset method when we have cancelAll or vice versa?\n\n\n  reset() {\n    this.cancelAll(...arguments);\n  }\n\n  logout() {\n    this.iteratePlugins(plugin => {\n      if (plugin.provider && plugin.provider.logout) {\n        plugin.provider.logout();\n      }\n    });\n  }\n\n  calculateProgress(file, data) {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    } // bytesTotal may be null or zero; in that case we can't divide by it\n\n\n    const canHavePercentage = Number.isFinite(data.bytesTotal) && data.bytesTotal > 0;\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        bytesUploaded: data.bytesUploaded,\n        bytesTotal: data.bytesTotal,\n        percentage: canHavePercentage ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n      }\n    });\n    this.calculateTotalProgress();\n  }\n\n  calculateTotalProgress() {\n    // calculate total progress, using the number of files currently uploading,\n    // multiplied by 100 and the summ of individual progress of each file\n    const files = this.getFiles();\n    const inProgress = files.filter(file => {\n      return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n    });\n\n    if (inProgress.length === 0) {\n      this.emit('progress', 0);\n      this.setState({\n        totalProgress: 0\n      });\n      return;\n    }\n\n    const sizedFiles = inProgress.filter(file => file.progress.bytesTotal != null);\n    const unsizedFiles = inProgress.filter(file => file.progress.bytesTotal == null);\n\n    if (sizedFiles.length === 0) {\n      const progressMax = inProgress.length * 100;\n      const currentProgress = unsizedFiles.reduce((acc, file) => {\n        return acc + file.progress.percentage;\n      }, 0);\n      const totalProgress = Math.round(currentProgress / progressMax * 100);\n      this.setState({\n        totalProgress\n      });\n      return;\n    }\n\n    let totalSize = sizedFiles.reduce((acc, file) => {\n      return acc + file.progress.bytesTotal;\n    }, 0);\n    const averageSize = totalSize / sizedFiles.length;\n    totalSize += averageSize * unsizedFiles.length;\n    let uploadedSize = 0;\n    sizedFiles.forEach(file => {\n      uploadedSize += file.progress.bytesUploaded;\n    });\n    unsizedFiles.forEach(file => {\n      uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n    });\n    let totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100); // hot fix, because:\n    // uploadedSize ended up larger than totalSize, resulting in 1325% total\n\n    if (totalProgress > 100) {\n      totalProgress = 100;\n    }\n\n    this.setState({\n      totalProgress\n    });\n    this.emit('progress', totalProgress);\n  }\n  /**\n   * Registers listeners for all global actions, like:\n   * `error`, `file-removed`, `upload-progress`\n   */\n\n\n  updateOnlineStatus() {\n    const online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n\n    if (!online) {\n      this.emit('is-offline');\n      this.info(this.i18n('noInternetConnection'), 'error', 0);\n      this.wasOffline = true;\n    } else {\n      this.emit('is-online');\n\n      if (this.wasOffline) {\n        this.emit('back-online');\n        this.info(this.i18n('connectedToInternet'), 'success', 3000);\n        this.wasOffline = false;\n      }\n    }\n  }\n\n  getID() {\n    return this.opts.id;\n  }\n  /**\n   * Registers a plugin with Core.\n   *\n   * @param {object} Plugin object\n   * @param {object} [opts] object with options to be passed to Plugin\n   * @returns {object} self for chaining\n   */\n  // eslint-disable-next-line no-shadow\n\n\n  use(Plugin, opts) {\n    if (typeof Plugin !== 'function') {\n      const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n      throw new TypeError(msg);\n    } // Instantiate\n\n\n    const plugin = new Plugin(this, opts);\n    const pluginId = plugin.id;\n\n    if (!pluginId) {\n      throw new Error('Your plugin must have an id');\n    }\n\n    if (!plugin.type) {\n      throw new Error('Your plugin must have a type');\n    }\n\n    const existsPluginAlready = this.getPlugin(pluginId);\n\n    if (existsPluginAlready) {\n      const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n      throw new Error(msg);\n    }\n\n    if (Plugin.VERSION) {\n      this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n    }\n\n    if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n    } else {\n      _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n    }\n\n    plugin.install();\n    return this;\n  }\n  /**\n   * Find one Plugin by name.\n   *\n   * @param {string} id plugin id\n   * @returns {BasePlugin|undefined}\n   */\n\n\n  getPlugin(id) {\n    for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n      const foundPlugin = plugins.find(plugin => plugin.id === id);\n      if (foundPlugin != null) return foundPlugin;\n    }\n\n    return undefined;\n  }\n\n  [_Symbol$for](type) {\n    return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n  }\n  /**\n   * Iterate through all `use`d plugins.\n   *\n   * @param {Function} method that will be run on each plugin\n   */\n\n\n  iteratePlugins(method) {\n    Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n  }\n  /**\n   * Uninstall and remove a plugin.\n   *\n   * @param {object} instance The plugin instance to remove.\n   */\n\n\n  removePlugin(instance) {\n    this.log(`Removing plugin ${instance.id}`);\n    this.emit('plugin-remove', instance);\n\n    if (instance.uninstall) {\n      instance.uninstall();\n    }\n\n    const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type]; // list.indexOf failed here, because Vue3 converted the plugin instance\n    // to a Proxy object, which failed the strict comparison test:\n    // obj !== objProxy\n\n\n    const index = list.findIndex(item => item.id === instance.id);\n\n    if (index !== -1) {\n      list.splice(index, 1);\n    }\n\n    const state = this.getState();\n    const updatedState = {\n      plugins: { ...state.plugins,\n        [instance.id]: undefined\n      }\n    };\n    this.setState(updatedState);\n  }\n  /**\n   * Uninstall all plugins and close down this Uppy instance.\n   */\n\n\n  close(_temp2) {\n    let {\n      reason\n    } = _temp2 === void 0 ? {} : _temp2;\n    this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n    this.cancelAll({\n      reason\n    });\n\n    _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n\n    this.iteratePlugins(plugin => {\n      this.removePlugin(plugin);\n    });\n\n    if (typeof window !== 'undefined' && window.removeEventListener) {\n      window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n      window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    }\n  }\n\n  hideInfo() {\n    const {\n      info\n    } = this.getState();\n    this.setState({\n      info: info.slice(1)\n    });\n    this.emit('info-hidden');\n  }\n  /**\n   * Set info message in `state.info`, so that UI plugins like `Informer`\n   * can display the message.\n   *\n   * @param {string | object} message Message to be displayed by the informer\n   * @param {string} [type]\n   * @param {number} [duration]\n   */\n\n\n  info(message, type, duration) {\n    if (type === void 0) {\n      type = 'info';\n    }\n\n    if (duration === void 0) {\n      duration = 3000;\n    }\n\n    const isComplexMessage = typeof message === 'object';\n    this.setState({\n      info: [...this.getState().info, {\n        type,\n        message: isComplexMessage ? message.message : message,\n        details: isComplexMessage ? message.details : null\n      }]\n    });\n    setTimeout(() => this.hideInfo(), duration);\n    this.emit('info-visible');\n  }\n  /**\n   * Passes messages to a function, provided in `opts.logger`.\n   * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n   *\n   * @param {string|object} message to log\n   * @param {string} [type] optional `error` or `warning`\n   */\n\n\n  log(message, type) {\n    const {\n      logger\n    } = this.opts;\n\n    switch (type) {\n      case 'error':\n        logger.error(message);\n        break;\n\n      case 'warning':\n        logger.warn(message);\n        break;\n\n      default:\n        logger.debug(message);\n        break;\n    }\n  }\n  /**\n   * Restore an upload by its ID.\n   */\n\n\n  restore(uploadID) {\n    this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n\n    if (!this.getState().currentUploads[uploadID]) {\n      _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n      return Promise.reject(new Error('Nonexistent upload'));\n    }\n\n    return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n  }\n  /**\n   * Create an upload for a bunch of files.\n   *\n   * @param {Array<string>} fileIDs File IDs to include in this upload.\n   * @returns {string} ID of this upload.\n   */\n\n\n  [_Symbol$for2]() {\n    return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n  }\n\n  /**\n   * Add data to an upload's result object.\n   *\n   * @param {string} uploadID The ID of the upload.\n   * @param {object} data Data properties to add to the result object.\n   */\n  addResultData(uploadID, data) {\n    if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n      this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n      return;\n    }\n\n    const {\n      currentUploads\n    } = this.getState();\n    const currentUpload = { ...currentUploads[uploadID],\n      result: { ...currentUploads[uploadID].result,\n        ...data\n      }\n    };\n    this.setState({\n      currentUploads: { ...currentUploads,\n        [uploadID]: currentUpload\n      }\n    });\n  }\n  /**\n   * Remove an upload, eg. if it has been canceled or completed.\n   *\n   * @param {string} uploadID The ID of the upload.\n   */\n\n\n  /**\n   * Start an upload for all the files that are not currently being uploaded.\n   *\n   * @returns {Promise}\n   */\n  upload() {\n    var _classPrivateFieldLoo;\n\n    if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins].uploader) != null && _classPrivateFieldLoo.length)) {\n      this.log('No uploader type plugins are used', 'warning');\n    }\n\n    let {\n      files\n    } = this.getState();\n    const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n\n    if (onBeforeUploadResult === false) {\n      return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n    }\n\n    if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n      files = onBeforeUploadResult; // Updating files in state, because uploader plugins receive file IDs,\n      // and then fetch the actual file object from state\n\n      this.setState({\n        files\n      });\n    }\n\n    return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err);\n\n      throw err;\n    }).then(() => {\n      if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n        throw new _Restricter.RestrictionError(this.i18n('missingRequiredMetaField'));\n      }\n    }).catch(err => {\n      // Doing this in a separate catch because we already emited and logged\n      // all the errors in `checkRequiredMetaFields` so we only throw a generic\n      // missing fields error here.\n      throw err;\n    }).then(() => {\n      const {\n        currentUploads\n      } = this.getState(); // get a list of files that are currently assigned to uploads\n\n      const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n      const waitingFileIDs = [];\n      Object.keys(files).forEach(fileID => {\n        const file = this.getFile(fileID); // if the file hasn't started uploading and hasn't already been assigned to an upload..\n\n        if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n          waitingFileIDs.push(file.id);\n        }\n      });\n\n      const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n\n      return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n    }).catch(err => {\n      this.emit('error', err);\n      this.log(err, 'error');\n      throw err;\n    });\n  }\n\n}\n\nfunction _informAndEmit2(error, file) {\n  const {\n    message,\n    details = ''\n  } = error;\n\n  if (error.isRestriction) {\n    this.emit('restriction-failed', file, error);\n  } else {\n    this.emit('error', error);\n  }\n\n  this.info({\n    message,\n    details\n  }, 'error', this.opts.infoTimeout);\n  this.log(`${message} ${details}`.trim(), 'error');\n}\n\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n  const {\n    missingFields,\n    error\n  } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n\n  if (missingFields.length > 0) {\n    this.setFileState(file.id, {\n      missingRequiredMetaFields: missingFields\n    });\n    this.log(error.message);\n    this.emit('restriction-failed', file, error);\n    return false;\n  }\n\n  return true;\n}\n\nfunction _checkRequiredMetaFields2(files) {\n  let success = true;\n\n  for (const file of Object.values(files)) {\n    if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n      success = false;\n    }\n  }\n\n  return success;\n}\n\nfunction _assertNewUploadAllowed2(file) {\n  const {\n    allowNewUpload\n  } = this.getState();\n\n  if (allowNewUpload === false) {\n    const error = new _Restricter.RestrictionError(this.i18n('noMoreFilesAllowed'));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, file);\n\n    throw error;\n  }\n}\n\nfunction _checkAndCreateFileStateObject2(files, fileDescriptor) {\n  const fileType = getFileType(fileDescriptor);\n  const fileName = getFileName(fileType, fileDescriptor);\n  const fileExtension = getFileNameAndExtension(fileName).extension;\n  const isRemote = Boolean(fileDescriptor.isRemote);\n  const fileID = generateFileID({ ...fileDescriptor,\n    type: fileType\n  });\n\n  if (this.checkIfFileAlreadyExists(fileID)) {\n    const error = new _Restricter.RestrictionError(this.i18n('noDuplicates', {\n      fileName\n    }));\n\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error, fileDescriptor);\n\n    throw error;\n  }\n\n  const meta = fileDescriptor.meta || {};\n  meta.name = fileName;\n  meta.type = fileType; // `null` means the size is unknown.\n\n  const size = Number.isFinite(fileDescriptor.data.size) ? fileDescriptor.data.size : null;\n  let newFile = {\n    source: fileDescriptor.source || '',\n    id: fileID,\n    name: fileName,\n    extension: fileExtension || '',\n    meta: { ...this.getState().meta,\n      ...meta\n    },\n    type: fileType,\n    data: fileDescriptor.data,\n    progress: {\n      percentage: 0,\n      bytesUploaded: 0,\n      bytesTotal: size,\n      uploadComplete: false,\n      uploadStarted: null\n    },\n    size,\n    isRemote,\n    remote: fileDescriptor.remote || '',\n    preview: fileDescriptor.preview\n  };\n  const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, files);\n\n  if (onBeforeFileAddedResult === false) {\n    // Don’t show UI info for this error, as it should be done by the developer\n    const error = new _Restricter.RestrictionError('Cannot add the file because onBeforeFileAdded returned false.');\n    this.emit('restriction-failed', fileDescriptor, error);\n    throw error;\n  } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n    newFile = onBeforeFileAddedResult;\n  }\n\n  try {\n    const filesArray = Object.keys(files).map(i => files[i]);\n\n    _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(newFile, filesArray);\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](err, newFile);\n\n    throw err;\n  }\n\n  return newFile;\n}\n\nfunction _startIfAutoProceed2() {\n  if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n    this.scheduledAutoProceed = setTimeout(() => {\n      this.scheduledAutoProceed = null;\n      this.upload().catch(err => {\n        if (!err.isRestriction) {\n          this.log(err.stack || err.message || err);\n        }\n      });\n    }, 4);\n  }\n}\n\nfunction _addListeners2() {\n  /**\n   * @param {Error} error\n   * @param {object} [file]\n   * @param {object} [response]\n   */\n  const errorHandler = (error, file, response) => {\n    let errorMsg = error.message || 'Unknown error';\n\n    if (error.details) {\n      errorMsg += ` ${error.details}`;\n    }\n\n    this.setState({\n      error: errorMsg\n    });\n\n    if (file != null && file.id in this.getState().files) {\n      this.setFileState(file.id, {\n        error: errorMsg,\n        response\n      });\n    }\n  };\n\n  this.on('error', errorHandler);\n  this.on('upload-error', (file, error, response) => {\n    errorHandler(error, file, response);\n\n    if (typeof error === 'object' && error.message) {\n      const newError = new Error(error.message);\n      newError.details = error.message;\n\n      if (error.details) {\n        newError.details += ` ${error.details}`;\n      }\n\n      newError.message = this.i18n('failedToUpload', {\n        file: file == null ? void 0 : file.name\n      });\n\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](newError);\n    } else {\n      _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](error);\n    }\n  });\n  this.on('upload', () => {\n    this.setState({\n      error: null\n    });\n  });\n  this.on('upload-started', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: {\n        uploadStarted: Date.now(),\n        uploadComplete: false,\n        percentage: 0,\n        bytesUploaded: 0,\n        bytesTotal: file.size\n      }\n    });\n  });\n  this.on('upload-progress', this.calculateProgress);\n  this.on('upload-success', (file, uploadResp) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const currentProgress = this.getFile(file.id).progress;\n    this.setFileState(file.id, {\n      progress: { ...currentProgress,\n        postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n          mode: 'indeterminate'\n        } : null,\n        uploadComplete: true,\n        percentage: 100,\n        bytesUploaded: currentProgress.bytesTotal\n      },\n      response: uploadResp,\n      uploadURL: uploadResp.uploadURL,\n      isPaused: false\n    }); // Remote providers sometimes don't tell us the file size,\n    // but we can know how many bytes we uploaded once the upload is complete.\n\n    if (file.size == null) {\n      this.setFileState(file.id, {\n        size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n      });\n    }\n\n    this.calculateTotalProgress();\n  });\n  this.on('preprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getFile(file.id).progress,\n        preprocess: progress\n      }\n    });\n  });\n  this.on('preprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.preprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('postprocess-progress', (file, progress) => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    this.setFileState(file.id, {\n      progress: { ...this.getState().files[file.id].progress,\n        postprocess: progress\n      }\n    });\n  });\n  this.on('postprocess-complete', file => {\n    if (file == null || !this.getFile(file.id)) {\n      this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n      return;\n    }\n\n    const files = { ...this.getState().files\n    };\n    files[file.id] = { ...files[file.id],\n      progress: { ...files[file.id].progress\n      }\n    };\n    delete files[file.id].progress.postprocess;\n    this.setState({\n      files\n    });\n  });\n  this.on('restored', () => {\n    // Files may have changed--ensure progress is still accurate.\n    this.calculateTotalProgress();\n  });\n  this.on('dashboard:file-edit-complete', file => {\n    if (file) {\n      _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n    }\n  }); // show informer if offline\n\n  if (typeof window !== 'undefined' && window.addEventListener) {\n    window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n    setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n  }\n}\n\nfunction _createUpload2(fileIDs, opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n\n  // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n  const {\n    forceAllowNewUpload = false\n  } = opts;\n  const {\n    allowNewUpload,\n    currentUploads\n  } = this.getState();\n\n  if (!allowNewUpload && !forceAllowNewUpload) {\n    throw new Error('Cannot create a new upload: already uploading.');\n  }\n\n  const uploadID = (0, _nonSecure.nanoid)();\n  this.emit('upload', {\n    id: uploadID,\n    fileIDs\n  });\n  this.setState({\n    allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n    currentUploads: { ...currentUploads,\n      [uploadID]: {\n        fileIDs,\n        step: 0,\n        result: {}\n      }\n    }\n  });\n  return uploadID;\n}\n\nfunction _getUpload2(uploadID) {\n  const {\n    currentUploads\n  } = this.getState();\n  return currentUploads[uploadID];\n}\n\nfunction _removeUpload2(uploadID) {\n  const currentUploads = { ...this.getState().currentUploads\n  };\n  delete currentUploads[uploadID];\n  this.setState({\n    currentUploads\n  });\n}\n\nasync function _runUpload2(uploadID) {\n  let {\n    currentUploads\n  } = this.getState();\n  let currentUpload = currentUploads[uploadID];\n  const restoreStep = currentUpload.step || 0;\n  const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n\n  try {\n    for (let step = restoreStep; step < steps.length; step++) {\n      if (!currentUpload) {\n        break;\n      }\n\n      const fn = steps[step];\n      const updatedUpload = { ...currentUpload,\n        step\n      };\n      this.setState({\n        currentUploads: { ...currentUploads,\n          [uploadID]: updatedUpload\n        }\n      }); // TODO give this the `updatedUpload` object as its only parameter maybe?\n      // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n\n      await fn(updatedUpload.fileIDs, uploadID); // Update currentUpload value in case it was modified asynchronously.\n\n      currentUploads = this.getState().currentUploads;\n      currentUpload = currentUploads[uploadID];\n    }\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n\n    throw err;\n  } // Set result data.\n\n\n  if (currentUpload) {\n    // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n    // stuck in the postprocessing UI while the upload is fully complete.\n    // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n    // all, and never mark the postprocessing as complete. This is fine on its own but we\n    // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n    // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n    // before the postprocessing plugins can emit events.\n    //\n    // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n    // postprocessing completion, we do it instead.\n    currentUpload.fileIDs.forEach(fileID => {\n      const file = this.getFile(fileID);\n\n      if (file && file.progress.postprocess) {\n        this.emit('postprocess-complete', file);\n      }\n    });\n    const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n    const successful = files.filter(file => !file.error);\n    const failed = files.filter(file => file.error);\n    await this.addResultData(uploadID, {\n      successful,\n      failed,\n      uploadID\n    }); // Update currentUpload value in case it was modified asynchronously.\n\n    currentUploads = this.getState().currentUploads;\n    currentUpload = currentUploads[uploadID];\n  } // Emit completion events.\n  // This is in a separate function so that the `currentUploads` variable\n  // always refers to the latest state. In the handler right above it refers\n  // to an outdated object without the `.result` property.\n\n\n  let result;\n\n  if (currentUpload) {\n    result = currentUpload.result;\n    this.emit('complete', result);\n\n    _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n  }\n\n  if (result == null) {\n    this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n  }\n\n  return result;\n}\n\nUppy.VERSION = packageJson.version;\nmodule.exports = Uppy;","\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst has = require(\"./hasProperty.js\");\n\nfunction insertReplacement(source, rx, replacement) {\n  const newParts = [];\n  source.forEach(chunk => {\n    // When the source contains multiple placeholders for interpolation,\n    // we should ignore chunks that are not strings, because those\n    // can be JSX objects and will be otherwise incorrectly turned into strings.\n    // Without this condition we’d get this: [object Object] hello [object Object] my <button>\n    if (typeof chunk !== 'string') {\n      return newParts.push(chunk);\n    }\n\n    return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n      if (raw !== '') {\n        newParts.push(raw);\n      } // Interlace with the `replacement` value\n\n\n      if (i < list.length - 1) {\n        newParts.push(replacement);\n      }\n    });\n  });\n  return newParts;\n}\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @returns {any[]} interpolated\n */\n\n\nfunction interpolate(phrase, options) {\n  const dollarRegex = /\\$/g;\n  const dollarBillsYall = '$$$$';\n  let interpolated = [phrase];\n  if (options == null) return interpolated;\n\n  for (const arg of Object.keys(options)) {\n    if (arg !== '_') {\n      // Ensure replacement value is escaped to prevent special $-prefixed\n      // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n      // be escaped with \"$\" itself, and we need two in the resulting output.\n      let replacement = options[arg];\n\n      if (typeof replacement === 'string') {\n        replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n      } // We create a new `RegExp` each time instead of using a more-efficient\n      // string replace so that the same argument can be replaced multiple times\n      // in the same phrase.\n\n\n      interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n    }\n  }\n\n  return interpolated;\n}\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\n\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\n\nclass Translator {\n  /**\n   * @param {object|Array<object>} locales - locale or list of locales.\n   */\n  constructor(locales) {\n    Object.defineProperty(this, _apply, {\n      value: _apply2\n    });\n    this.locale = {\n      strings: {},\n\n      pluralize(n) {\n        if (n === 1) {\n          return 0;\n        }\n\n        return 1;\n      }\n\n    };\n\n    if (Array.isArray(locales)) {\n      locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n    } else {\n      _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n    }\n  }\n\n  /**\n   * Public translate method\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used later to replace placeholders in string\n   * @returns {string} translated (and interpolated)\n   */\n  translate(key, options) {\n    return this.translateArray(key, options).join('');\n  }\n  /**\n   * Get a translation and return the translated and interpolated parts as an array.\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used to replace placeholders\n   * @returns {Array} The translated and interpolated parts, in order.\n   */\n\n\n  translateArray(key, options) {\n    if (!has(this.locale.strings, key)) {\n      throw new Error(`missing string: ${key}`);\n    }\n\n    const string = this.locale.strings[key];\n    const hasPluralForms = typeof string === 'object';\n\n    if (hasPluralForms) {\n      if (options && typeof options.smart_count !== 'undefined') {\n        const plural = this.locale.pluralize(options.smart_count);\n        return interpolate(string[plural], options);\n      }\n\n      throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n    }\n\n    return interpolate(string, options);\n  }\n\n}\n\nfunction _apply2(locale) {\n  if (!(locale != null && locale.strings)) {\n    return;\n  }\n\n  const prevLocale = this.locale;\n  this.locale = { ...prevLocale,\n    strings: { ...prevLocale.strings,\n      ...locale.strings\n    }\n  };\n  this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n}\n\nmodule.exports = Translator;","\"use strict\";\n\nfunction has(object, key) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nmodule.exports = has;","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n*   console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n*   console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n  var emitter = {}\n  var _fns = emitter._fns = {}\n\n  /**\n  * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n  * @name emit\n  * @param {String} event – the name of the event, with optional namespace\n  * @param {...*} data – up to 6 arguments that are passed to the event listener\n  * @example\n  * emitter.emit('example')\n  * emitter.emit('demo:test')\n  * emitter.emit('data', { example: true}, 'a string', 1)\n  */\n  emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n    var toEmit = getListeners(event)\n\n    if (toEmit.length) {\n      emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n    }\n  }\n\n  /**\n  * Create en event listener.\n  * @name on\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.on('example', function () {})\n  * emitter.on('demo', function () {})\n  */\n  emitter.on = function on (event, fn) {\n    if (!_fns[event]) {\n      _fns[event] = []\n    }\n\n    _fns[event].push(fn)\n  }\n\n  /**\n  * Create en event listener that fires once.\n  * @name once\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.once('example', function () {})\n  * emitter.once('demo', function () {})\n  */\n  emitter.once = function once (event, fn) {\n    function one () {\n      fn.apply(this, arguments)\n      emitter.off(event, one)\n    }\n    this.on(event, one)\n  }\n\n  /**\n  * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n  * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n  * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n  * @name off\n  * @param {String} event\n  * @param {Function} [fn] – the specific handler\n  * @example\n  * emitter.off('example')\n  * emitter.off('demo', function () {})\n  */\n  emitter.off = function off (event, fn) {\n    var keep = []\n\n    if (event && fn) {\n      var fns = this._fns[event]\n      var i = 0\n      var l = fns ? fns.length : 0\n\n      for (i; i < l; i++) {\n        if (fns[i] !== fn) {\n          keep.push(fns[i])\n        }\n      }\n    }\n\n    keep.length ? this._fns[event] = keep : delete this._fns[event]\n  }\n\n  function getListeners (e) {\n    var out = _fns[e] ? _fns[e] : []\n    var idx = e.indexOf(':')\n    var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n    var keys = Object.keys(_fns)\n    var i = 0\n    var l = keys.length\n\n    for (i; i < l; i++) {\n      var key = keys[i]\n      if (key === '*') {\n        out = out.concat(_fns[key])\n      }\n\n      if (args.length === 2 && args[0] === key) {\n        out = out.concat(_fns[key])\n        break\n      }\n    }\n\n    return out\n  }\n\n  function emitAll (e, fns, args) {\n    var i = 0\n    var l = fns.length\n\n    for (i; i < l; i++) {\n      if (!fns[i]) break\n      fns[i].event = e\n      fns[i].apply(fns[i], args)\n    }\n  }\n\n  return emitter\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst findDOMElement = require(\"@uppy/utils/lib/findDOMElement\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst BasePlugin = require(\"./BasePlugin.js\");\n/**\n * Defer a frequent call to the microtask queue.\n *\n * @param {() => T} fn\n * @returns {Promise<T>}\n */\n\n\nfunction debounce(fn) {\n  let calling = null;\n  let latestArgs = null;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    latestArgs = args;\n\n    if (!calling) {\n      calling = Promise.resolve().then(() => {\n        calling = null; // At this point `args` may be different from the most\n        // recent state, if multiple calls happened since this task\n        // was queued. So we use the `latestArgs`, which definitely\n        // is the most recent call.\n\n        return fn(...latestArgs);\n      });\n    }\n\n    return calling;\n  };\n}\n/**\n * UIPlugin is the extended version of BasePlugin to incorporate rendering with Preact.\n * Use this for plugins that need a user interface.\n *\n * For plugins without an user interface, see BasePlugin.\n */\n\n\nvar _updateUI = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateUI\");\n\nclass UIPlugin extends BasePlugin {\n  constructor() {\n    super(...arguments);\n    Object.defineProperty(this, _updateUI, {\n      writable: true,\n      value: void 0\n    });\n  }\n\n  /**\n   * Check if supplied `target` is a DOM element or an `object`.\n   * If it’s an object — target is a plugin, and we search `plugins`\n   * for a plugin with same name and return its target.\n   */\n  mount(target, plugin) {\n    const callerPluginName = plugin.id;\n    const targetElement = findDOMElement(target);\n\n    if (targetElement) {\n      this.isTargetDOMEl = true; // When target is <body> with a single <div> element,\n      // Preact thinks it’s the Uppy root element in there when doing a diff,\n      // and destroys it. So we are creating a fragment (could be empty div)\n\n      const uppyRootElement = document.createElement('div');\n      uppyRootElement.classList.add('uppy-Root'); // API for plugins that require a synchronous rerender.\n\n      _classPrivateFieldLooseBase(this, _updateUI)[_updateUI] = debounce(state => {\n        // plugin could be removed, but this.rerender is debounced below,\n        // so it could still be called even after uppy.removePlugin or uppy.close\n        // hence the check\n        if (!this.uppy.getPlugin(this.id)) return;\n        (0, _preact.render)(this.render(state), uppyRootElement);\n        this.afterUpdate();\n      });\n      this.uppy.log(`Installing ${callerPluginName} to a DOM element '${target}'`);\n\n      if (this.opts.replaceTargetContent) {\n        // Doing render(h(null), targetElement), which should have been\n        // a better way, since because the component might need to do additional cleanup when it is removed,\n        // stopped working — Preact just adds null into target, not replacing\n        targetElement.innerHTML = '';\n      }\n\n      (0, _preact.render)(this.render(this.uppy.getState()), uppyRootElement);\n      this.el = uppyRootElement;\n      targetElement.appendChild(uppyRootElement); // Set the text direction if the page has not defined one.\n\n      uppyRootElement.dir = this.opts.direction || getTextDirection(uppyRootElement) || 'ltr';\n      this.onMount();\n      return this.el;\n    }\n\n    let targetPlugin;\n\n    if (typeof target === 'object' && target instanceof UIPlugin) {\n      // Targeting a plugin *instance*\n      targetPlugin = target;\n    } else if (typeof target === 'function') {\n      // Targeting a plugin type\n      const Target = target; // Find the target plugin instance.\n\n      this.uppy.iteratePlugins(p => {\n        if (p instanceof Target) {\n          targetPlugin = p;\n        }\n      });\n    }\n\n    if (targetPlugin) {\n      this.uppy.log(`Installing ${callerPluginName} to ${targetPlugin.id}`);\n      this.parent = targetPlugin;\n      this.el = targetPlugin.addTarget(plugin);\n      this.onMount();\n      return this.el;\n    }\n\n    this.uppy.log(`Not installing ${callerPluginName}`);\n    let message = `Invalid target option given to ${callerPluginName}.`;\n\n    if (typeof target === 'function') {\n      message += ' The given target is not a Plugin class. ' + 'Please check that you\\'re not specifying a React Component instead of a plugin. ' + 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' + 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n    } else {\n      message += 'If you meant to target an HTML element, please make sure that the element exists. ' + 'Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' + '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' + 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n    }\n\n    throw new Error(message);\n  }\n\n  update(state) {\n    if (this.el != null) {\n      var _classPrivateFieldLoo, _classPrivateFieldLoo2;\n\n      (_classPrivateFieldLoo = (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _updateUI))[_updateUI]) == null ? void 0 : _classPrivateFieldLoo.call(_classPrivateFieldLoo2, state);\n    }\n  }\n\n  unmount() {\n    if (this.isTargetDOMEl) {\n      var _this$el;\n\n      (_this$el = this.el) == null ? void 0 : _this$el.remove();\n    }\n\n    this.onUnmount();\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  onMount() {} // eslint-disable-next-line class-methods-use-this\n\n\n  onUnmount() {}\n\n}\n\nmodule.exports = UIPlugin;","\"use strict\";\n\nfunction isDOMElement(obj) {\n  return (obj == null ? void 0 : obj.nodeType) === Node.ELEMENT_NODE;\n}\n\n/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = isDOMElement;","\"use strict\";\n\n/**\n * Get the declared text direction for an element.\n *\n * @param {Node} element\n * @returns {string|undefined}\n */\nfunction getTextDirection(element) {\n  var _element;\n\n  // There is another way to determine text direction using getComputedStyle(), as done here:\n  // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n  //\n  // We do not use that approach because we are interested specifically in the _declared_ text direction.\n  // If no text direction is declared, we have to provide our own explicit text direction so our\n  // bidirectional CSS style sheets work.\n  while (element && !element.dir) {\n    // eslint-disable-next-line no-param-reassign\n    element = element.parentNode;\n  }\n\n  return (_element = element) == null ? void 0 : _element.dir;\n}\n\nmodule.exports = getTextDirection;","\"use strict\";\n\nmodule.exports = require(\"./Dashboard.js\");","\"use strict\";\n\nfunction getActiveOverlayEl(dashboardEl, activeOverlayType) {\n  if (activeOverlayType) {\n    const overlayEl = dashboardEl.querySelector(`[data-uppy-paneltype=\"${activeOverlayType}\"]`); // if an overlay is already mounted\n\n    if (overlayEl) return overlayEl;\n  }\n\n  return dashboardEl;\n}\n\n/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nmodule.exports = getActiveOverlayEl;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst getFileTypeIcon = require(\"../utils/getFileTypeIcon.js\");\n\nfunction FilePreview(props) {\n  const {\n    file\n  } = props;\n\n  if (file.preview) {\n    return (0, _preact.h)(\"img\", {\n      className: \"uppy-Dashboard-Item-previewImg\",\n      alt: file.name,\n      src: file.preview\n    });\n  }\n\n  const {\n    color,\n    icon\n  } = getFileTypeIcon(file.type);\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewIconWrap\"\n  }, (0, _preact.h)(\"span\", {\n    className: \"uppy-Dashboard-Item-previewIcon\",\n    style: {\n      color\n    }\n  }, icon), (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-Dashboard-Item-previewIconBg\",\n    width: \"58\",\n    height: \"76\",\n    viewBox: \"0 0 58 76\"\n  }, (0, _preact.h)(\"rect\", {\n    fill: \"#FFF\",\n    width: \"58\",\n    height: \"76\",\n    rx: \"3\",\n    fillRule: \"evenodd\"\n  })));\n}\n\nmodule.exports = FilePreview;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst metaFieldIdToName = (metaFieldId, metaFields) => {\n  const field = metaFields.filter(f => f.id === metaFieldId);\n  return field[0].name;\n};\n\nfunction renderMissingMetaFieldsError(props) {\n  const {\n    file,\n    toggleFileCard,\n    i18n,\n    metaFields\n  } = props;\n  const {\n    missingRequiredMetaFields\n  } = file;\n\n  if (!(missingRequiredMetaFields != null && missingRequiredMetaFields.length)) {\n    return null;\n  }\n\n  const metaFieldsString = missingRequiredMetaFields.map(missingMetaField => metaFieldIdToName(missingMetaField, metaFields)).join(', ');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-errorMessage\"\n  }, i18n('missingRequiredMetaFields', {\n    smart_count: missingRequiredMetaFields.length,\n    fields: metaFieldsString\n  }), ' ', (0, _preact.h)(\"button\", {\n    type: \"button\",\n    class: \"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn\",\n    onClick: () => toggleFileCard(true, file.id)\n  }, i18n('editFile')));\n}\n\nmodule.exports = renderMissingMetaFieldsError;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nlet _Symbol$for;\n\n_Symbol$for = Symbol.for('uppy test: disable unused locale key warning');\n\nclass AddFiles extends _preact.Component {\n  constructor() {\n    super(...arguments);\n\n    this.triggerFileInputClick = () => {\n      this.fileInput.click();\n    };\n\n    this.triggerFolderInputClick = () => {\n      this.folderInput.click();\n    };\n\n    this.onFileInputChange = event => {\n      this.props.handleInputChange(event); // We clear the input after a file is selected, because otherwise\n      // change event is not fired in Chrome and Safari when a file\n      // with the same name is selected.\n      // ___Why not use value=\"\" on <input/> instead?\n      //    Because if we use that method of clearing the input,\n      //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n      event.target.value = null; // eslint-disable-line no-param-reassign\n    };\n\n    this.renderHiddenInput = (isFolder, refCallback) => {\n      return (0, _preact.h)(\"input\", {\n        className: \"uppy-Dashboard-input\",\n        hidden: true,\n        \"aria-hidden\": \"true\",\n        tabIndex: -1,\n        webkitdirectory: isFolder,\n        type: \"file\",\n        name: \"files[]\",\n        multiple: this.props.maxNumberOfFiles !== 1,\n        onChange: this.onFileInputChange,\n        accept: this.props.allowedFileTypes,\n        ref: refCallback\n      });\n    };\n\n    this.renderMyDeviceAcquirer = () => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": \"MyDevice\"\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-uppy-super-focusable\": true,\n        onClick: this.triggerFileInputClick\n      }, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        width: \"32\",\n        height: \"32\",\n        viewBox: \"0 0 32 32\"\n      }, (0, _preact.h)(\"g\", {\n        fill: \"none\",\n        fillRule: \"evenodd\"\n      }, (0, _preact.h)(\"rect\", {\n        className: \"uppy-ProviderIconBg\",\n        width: \"32\",\n        height: \"32\",\n        rx: \"16\",\n        fill: \"#2275D7\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M21.973 21.152H9.863l-1.108-5.087h14.464l-1.246 5.087zM9.935 11.37h3.958l.886 1.444a.673.673 0 0 0 .585.316h6.506v1.37H9.935v-3.13zm14.898 3.44a.793.793 0 0 0-.616-.31h-.978v-2.126c0-.379-.275-.613-.653-.613H15.75l-.886-1.445a.673.673 0 0 0-.585-.316H9.232c-.378 0-.667.209-.667.587V14.5h-.782a.793.793 0 0 0-.61.303.795.795 0 0 0-.155.663l1.45 6.633c.078.36.396.618.764.618h13.354c.36 0 .674-.246.76-.595l1.631-6.636a.795.795 0 0 0-.144-.675z\",\n        fill: \"#FFF\"\n      }))), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, this.props.i18n('myDevice'))));\n    };\n\n    this.renderBrowseButton = (text, onClickFn) => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      return (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-Dashboard-browse\",\n        onClick: onClickFn,\n        \"data-uppy-super-focusable\": numberOfAcquirers === 0\n      }, text);\n    };\n\n    this.renderDropPasteBrowseTagline = () => {\n      const numberOfAcquirers = this.props.acquirers.length;\n      const browseFiles = this.renderBrowseButton(this.props.i18n('browseFiles'), this.triggerFileInputClick);\n      const browseFolders = this.renderBrowseButton(this.props.i18n('browseFolders'), this.triggerFolderInputClick); // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n      // to Camel\n\n      const lowerFMSelectionType = this.props.fileManagerSelectionType;\n      const camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() + lowerFMSelectionType.slice(1);\n      return (0, _preact.h)(\"div\", {\n        class: \"uppy-Dashboard-AddFiles-title\"\n      }, // eslint-disable-next-line no-nested-ternary\n      this.props.disableLocalFiles ? this.props.i18n('importFiles') : numberOfAcquirers > 0 ? this.props.i18nArray(`dropPasteImport${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }) : this.props.i18nArray(`dropPaste${camelFMSelectionType}`, {\n        browseFiles,\n        browseFolders,\n        browse: browseFiles\n      }));\n    };\n\n    this.renderAcquirer = acquirer => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": acquirer.id\n      }, (0, _preact.h)(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-cy\": acquirer.id,\n        \"aria-controls\": `uppy-DashboardContent-panel--${acquirer.id}`,\n        \"aria-selected\": this.props.activePickerPanel.id === acquirer.id,\n        \"data-uppy-super-focusable\": true,\n        onClick: () => this.props.showPanel(acquirer.id)\n      }, acquirer.icon(), (0, _preact.h)(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, acquirer.name)));\n    };\n\n    this.renderAcquirers = (acquirers, disableLocalFiles) => {\n      // Group last two buttons, so we don’t end up with\n      // just one button on a new line\n      const acquirersWithoutLastTwo = [...acquirers];\n      const lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy-Dashboard-AddFiles-list\",\n        role: \"tablist\"\n      }, !disableLocalFiles && this.renderMyDeviceAcquirer(), acquirersWithoutLastTwo.map(acquirer => this.renderAcquirer(acquirer)), (0, _preact.h)(\"span\", {\n        role: \"presentation\",\n        style: {\n          'white-space': 'nowrap'\n        }\n      }, lastTwoAcquirers.map(acquirer => this.renderAcquirer(acquirer))));\n    };\n  }\n\n  [_Symbol$for]() {\n    // Those are actually used in `renderDropPasteBrowseTagline` method.\n    this.props.i18nArray('dropPasteBoth');\n    this.props.i18nArray('dropPasteFiles');\n    this.props.i18nArray('dropPasteFolders');\n    this.props.i18nArray('dropPasteImportBoth');\n    this.props.i18nArray('dropPasteImportFiles');\n    this.props.i18nArray('dropPasteImportFolders');\n  }\n\n  renderPoweredByUppy() {\n    const {\n      i18nArray\n    } = this.props;\n    const uppyBranding = (0, _preact.h)(\"span\", null, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\",\n      width: \"11\",\n      height: \"11\",\n      viewBox: \"0 0 11 11\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n      fillRule: \"evenodd\"\n    })), (0, _preact.h)(\"span\", {\n      className: \"uppy-Dashboard-poweredByUppy\"\n    }, \"Uppy\"));\n    const linkText = i18nArray('poweredBy', {\n      uppy: uppyBranding\n    });\n    return (0, _preact.h)(\"a\", {\n      tabIndex: \"-1\",\n      href: \"https://uppy.io\",\n      rel: \"noreferrer noopener\",\n      target: \"_blank\",\n      className: \"uppy-Dashboard-poweredBy\"\n    }, linkText);\n  }\n\n  render() {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles\"\n    }, this.renderHiddenInput(false, ref => {\n      this.fileInput = ref;\n    }), this.renderHiddenInput(true, ref => {\n      this.folderInput = ref;\n    }), this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && this.renderAcquirers(this.props.acquirers, this.props.disableLocalFiles), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-AddFiles-info\"\n    }, this.props.note && (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-note\"\n    }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n  }\n\n}\n\nmodule.exports = AddFiles;","\"use strict\";\n\n// ignore drop/paste events if they are not in input or textarea —\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events —\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n  const {\n    tagName\n  } = ev.target;\n\n  if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n    ev.stopPropagation();\n    return;\n  }\n\n  ev.preventDefault();\n  ev.stopPropagation();\n}\n\nmodule.exports = ignoreEvent;","const { BasePlugin } = require('@uppy/core');\nconst cuid = require('cuid');\n// const Translator = require('@uppy/utils/lib/Translator');\n// const { Provider, Socket } = require('@uppy/companion-client');\n// const emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n// const getSocketHost = require('@uppy/utils/lib/getSocketHost');\nconst settle = require('@uppy/utils/lib/settle');\nconst RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\nconst { DirectUpload } = require('@rails/activestorage');\n\nmodule.exports = class ActiveStorageUpload extends BasePlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.id = opts.id || 'ActiveStorageUpload';\n    this.title = opts.title || 'ActiveStorageUpload';\n    this.type = 'uploader';\n    this.token = opts.token || '';\n    this.attachmentName = opts.attachmentName || ''\n\n    const defaultOptions = {\n      limit: 0,\n      timeout: 30 * 1000,\n      directUploadUrl: null,\n    };\n\n    this.opts = Object.assign({}, defaultOptions, opts);\n\n    // Simultaneous upload limiting is shared across all uploads with this plugin.\n    if (typeof this.opts.limit === 'number' && this.opts.limit !== 0) {\n      this.limitUploads =  new RateLimitedQueue(this.opts.limit);\n    } else {\n      this.limitUploads = fn => fn;\n    }\n\n    this.handleUpload = this.handleUpload.bind(this);\n  }\n\n  install() {\n    this.uppy.addUploader(this.handleUpload);\n  }\n\n  uninstall() {\n    this.uppy.removeUploader(this.handleUpload);\n  }\n\n  handleUpload(fileIDs) {\n    if (fileIDs.length === 0) {\n      this.uppy.log('[ActiveStorage] No files to upload!');\n      return Promise.resolve();\n    }\n\n    this.uppy.log('[ActiveStorage] Uploading...');\n    const files = fileIDs.map(fileID => this.uppy.getFile(fileID));\n\n    return this.uploadFiles(files).then(() => null);\n  }\n\n  upload(file, current, total) {\n    this.uppy.log(`uploading ${current} of ${total}`);\n\n    return new Promise((resolve, reject) => {\n      const timer = this.createProgressTimeout(this.opts.timeout, error => {\n        //xhr.abort();\n        this.uppy.emit('upload-error', file, error);\n        reject(error);\n      });\n\n      var directHandlers = {\n        directUploadWillStoreFileWithXHR: null,\n        directUploadDidProgress: null,\n      };\n      directHandlers.directUploadDidProgress = ev => {\n        this.uppy.log(`[XHRUpload] ${id} progress: ${ev.loaded} / ${ev.total}`);\n        timer.progress();\n\n        if (ev.lengthComputable) {\n          this.uppy.emit('upload-progress', file, {\n            uploader: this,\n            bytesUploaded: ev.loaded,\n            bytesTotal: ev.total,\n          });\n        }\n      };\n      directHandlers.directUploadWillStoreFileWithXHR = request => {\n        request.upload.addEventListener('progress', event =>\n          directHandlers.directUploadDidProgress(event)\n        );\n      };\n\n      const { data, meta } = file;\n\n      if (!data.name && meta.name) {\n        data.name = meta.name;\n      }\n\n      const upload = new DirectUpload(data, this.opts.directUploadUrl, this.opts.token, this.opts.attachmentName, directHandlers);\n      const id = cuid();\n\n      upload.create((error, blob) => {\n        this.uppy.log(`[XHRUpload] ${id} finished`);\n        timer.done();\n\n        if (error) {\n          const response = {\n            status: 'error',\n          };\n\n          this.uppy.setFileState(file.id, { response });\n\n          this.uppy.emit('upload-error', file, error);\n          return reject(error);\n        } else {\n          const response = {\n            status: 'success',\n            directUploadSignedId: blob.signed_id,\n          };\n\n          this.uppy.setFileState(file.id, { response });\n\n          this.uppy.emit('upload-success', file, blob);\n\n          return resolve(file);\n        }\n      });\n\n      this.uppy.on('file-removed', removedFile => {\n        if (removedFile.id === file.id) {\n          timer.done();\n          upload.abort && upload.abort();\n        }\n      });\n\n      this.uppy.on('upload-cancel', fileID => {\n        if (fileID === file.id) {\n          timer.done();\n          upload.abort && upload.abort();\n        }\n      });\n\n      this.uppy.on('cancel-all', () => {\n        timer.done();\n        upload.abort && upload.abort();\n      });\n    });\n  }\n\n  uploadFiles(files) {\n    const actions = files.map((file, i) => {\n      const current = parseInt(i, 10) + 1;\n      const total = files.length;\n\n      if (file.error) {\n        return () => Promise.reject(new Error(file.error));\n      } else {\n        this.uppy.emit('upload-started', file);\n        return this.upload.bind(this, file, current, total);\n      }\n    });\n\n    const promises = actions.map(action => {\n      const limitedAction = this.limitUploads(action);\n      return limitedAction();\n    });\n\n    return settle(promises);\n  }\n\n  // Helper to abort upload requests if there has not been any progress for `timeout` ms.\n  // Create an instance using `timer = createProgressTimeout(10000, onTimeout)`\n  // Call `timer.progress()` to signal that there has been progress of any kind.\n  // Call `timer.done()` when the upload has completed.\n  createProgressTimeout(timeout, timeoutHandler) {\n    const uppy = this.uppy;\n    const self = this;\n    let isDone = false;\n\n    function onTimedOut() {\n      uppy.log(`[XHRUpload] timed out`);\n      const error = new Error(self.i18n('timedOut', { seconds: Math.ceil(timeout / 1000) }));\n      timeoutHandler(error);\n    }\n\n    let aliveTimer = null;\n    function progress() {\n      // Some browsers fire another progress event when the upload is\n      // cancelled, so we have to ignore progress after the timer was\n      // told to stop.\n      if (isDone) return;\n\n      if (timeout > 0) {\n        if (aliveTimer) clearTimeout(aliveTimer);\n        aliveTimer = setTimeout(onTimedOut, timeout);\n      }\n    }\n\n    function done() {\n      uppy.log(`[XHRUpload] timer done`);\n      if (aliveTimer) {\n        clearTimeout(aliveTimer);\n        aliveTimer = null;\n      }\n      isDone = true;\n    }\n\n    return {\n      progress,\n      done,\n    };\n  }\n};\n","module.exports = function pad (num, size) {\n  var s = '000000000' + num;\n  return s.substr(s.length - size);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.internalRateLimitedQueue = exports.RateLimitedQueue = void 0;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nfunction createCancelError() {\n  return new Error('Cancelled');\n}\n\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\n\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\n\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\n\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\n\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\n\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\n\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\n\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\n\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\n\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\n\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\n\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\n\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\n\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\n\nclass RateLimitedQueue {\n  constructor(limit) {\n    Object.defineProperty(this, _dequeue, {\n      value: _dequeue2\n    });\n    Object.defineProperty(this, _queue, {\n      value: _queue2\n    });\n    Object.defineProperty(this, _next, {\n      value: _next2\n    });\n    Object.defineProperty(this, _queueNext, {\n      value: _queueNext2\n    });\n    Object.defineProperty(this, _call, {\n      value: _call2\n    });\n    Object.defineProperty(this, _activeRequests, {\n      writable: true,\n      value: 0\n    });\n    Object.defineProperty(this, _queuedHandlers, {\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, _paused, {\n      writable: true,\n      value: false\n    });\n    Object.defineProperty(this, _pauseTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _downLimit, {\n      writable: true,\n      value: 1\n    });\n    Object.defineProperty(this, _upperLimit, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _rateLimitingTimer, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _resume, {\n      writable: true,\n      value: () => this.resume()\n    });\n    Object.defineProperty(this, _increaseLimit, {\n      writable: true,\n      value: () => {\n        if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n          return;\n        }\n\n        _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n        this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n\n        for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n          _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n        }\n\n        if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n          _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n        } else {\n          _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n        }\n      }\n    });\n\n    if (typeof limit !== 'number' || limit === 0) {\n      this.limit = Infinity;\n    } else {\n      this.limit = limit;\n    }\n  }\n\n  run(fn, queueOptions) {\n    if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n      return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n    }\n\n    return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n  }\n\n  wrapPromiseFunction(fn, queueOptions) {\n    var _this = this;\n\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      let queuedRequest;\n      const outerPromise = new Promise((resolve, reject) => {\n        queuedRequest = _this.run(() => {\n          let cancelError;\n          let innerPromise;\n\n          try {\n            innerPromise = Promise.resolve(fn(...args));\n          } catch (err) {\n            innerPromise = Promise.reject(err);\n          }\n\n          innerPromise.then(result => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              resolve(result);\n            }\n          }, err => {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              reject(err);\n            }\n          });\n          return () => {\n            cancelError = createCancelError();\n          };\n        }, queueOptions);\n      });\n\n      outerPromise.abort = () => {\n        queuedRequest.abort();\n      };\n\n      return outerPromise;\n    };\n  }\n\n  resume() {\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    for (let i = 0; i < this.limit; i++) {\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  }\n\n  /**\n   * Freezes the queue for a while or indefinitely.\n   *\n   * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n   *                                    If omitted, the queue won't resume automatically.\n   */\n  pause(duration) {\n    if (duration === void 0) {\n      duration = null;\n    }\n\n    _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n    clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n\n    if (duration != null) {\n      _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n    }\n  }\n  /**\n   * Pauses the queue for a duration, and lower the limit of concurrent requests\n   * when the queue resumes. When the queue resumes, it tries to progressively\n   * increase the limit in `this.#increaseLimit` until another call is made to\n   * `this.rateLimit`.\n   * Call this function when using the RateLimitedQueue for network requests and\n   * the remote server responds with 429 HTTP code.\n   *\n   * @param {number} duration in milliseconds.\n   */\n\n\n  rateLimit(duration) {\n    clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n    this.pause(duration);\n\n    if (this.limit > 1 && Number.isFinite(this.limit)) {\n      _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n      this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n      _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n    }\n  }\n\n  get isPaused() {\n    return _classPrivateFieldLooseBase(this, _paused)[_paused];\n  }\n\n}\n\nexports.RateLimitedQueue = RateLimitedQueue;\n\nfunction _call2(fn) {\n  _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n  let done = false;\n  let cancelActive;\n\n  try {\n    cancelActive = fn();\n  } catch (err) {\n    _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n    throw err;\n  }\n\n  return {\n    abort: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n      cancelActive();\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    },\n    done: () => {\n      if (done) return;\n      done = true;\n      _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n\n      _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n    }\n  };\n}\n\nfunction _queueNext2() {\n  // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n  // one by one without continuously _advancing_ it (and starting new tasks before immediately\n  // aborting them)\n  queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\n\nfunction _next2() {\n  if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n    return;\n  }\n\n  if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n    return;\n  } // Dispatch the next request, and update the abort/done handlers\n  // so that cancelling it does the Right Thing (and doesn't just try\n  // to dequeue an already-running request).\n\n\n  const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n\n  const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n\n  next.abort = handler.abort;\n  next.done = handler.done;\n}\n\nfunction _queue2(fn, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  const handler = {\n    fn,\n    priority: options.priority || 0,\n    abort: () => {\n      _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n    },\n    done: () => {\n      throw new Error('Cannot mark a queued request as done: this indicates a bug');\n    }\n  };\n\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n    return handler.priority > other.priority;\n  });\n\n  if (index === -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n  } else {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n  }\n\n  return handler;\n}\n\nfunction _dequeue2(handler) {\n  const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n\n  if (index !== -1) {\n    _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n  }\n}\n\nconst internalRateLimitedQueue = Symbol('__queue');\nexports.internalRateLimitedQueue = internalRateLimitedQueue;","\"use strict\";\n\nmodule.exports = require(\"./Url.js\");","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (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\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.width;\n  var height = sizes.height || element.clientHeight || result.height;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop);\n    var marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  var parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    // flips variation if popper content overflows boundaries\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","\"use strict\";\n\n/**\n * Adds zero to strings shorter than two characters.\n *\n * @param {number} number\n * @returns {string}\n */\nfunction pad(number) {\n  return number < 10 ? `0${number}` : number.toString();\n}\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\n\n\nfunction getTimeStamp() {\n  const date = new Date();\n  const hours = pad(date.getHours());\n  const minutes = pad(date.getMinutes());\n  const seconds = pad(date.getSeconds());\n  return `${hours}:${minutes}:${seconds}`;\n}\n\nmodule.exports = getTimeStamp;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.defaultOptions = exports.RestrictionError = exports.Restricter = void 0;\n\n/* eslint-disable max-classes-per-file, class-methods-use-this */\n\n/* global AggregateError */\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst match = require(\"mime-match\");\n\nconst defaultOptions = {\n  maxFileSize: null,\n  minFileSize: null,\n  maxTotalFileSize: null,\n  maxNumberOfFiles: null,\n  minNumberOfFiles: null,\n  allowedFileTypes: null,\n  requiredMetaFields: []\n};\nexports.defaultOptions = defaultOptions;\n\nclass RestrictionError extends Error {\n  constructor() {\n    super(...arguments);\n    this.isRestriction = true;\n  }\n\n}\n\nexports.RestrictionError = RestrictionError;\n\nif (typeof AggregateError === 'undefined') {\n  // eslint-disable-next-line no-global-assign\n  // TODO: remove this \"polyfill\" in the next major.\n  globalThis.AggregateError = class AggregateError extends Error {\n    constructor(errors, message) {\n      super(message);\n      this.errors = errors;\n    }\n\n  };\n}\n\nclass Restricter {\n  constructor(getOpts, i18n) {\n    this.i18n = i18n;\n\n    this.getOpts = () => {\n      const opts = getOpts();\n\n      if (opts.restrictions.allowedFileTypes != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n        throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n      }\n\n      return opts;\n    };\n  }\n\n  validate(file, files) {\n    const {\n      maxFileSize,\n      minFileSize,\n      maxTotalFileSize,\n      maxNumberOfFiles,\n      allowedFileTypes\n    } = this.getOpts().restrictions;\n\n    if (maxNumberOfFiles && files.length + 1 > maxNumberOfFiles) {\n      throw new RestrictionError(`${this.i18n('youCanOnlyUploadX', {\n        smart_count: maxNumberOfFiles\n      })}`);\n    }\n\n    if (allowedFileTypes) {\n      const isCorrectFileType = allowedFileTypes.some(type => {\n        // check if this is a mime-type\n        if (type.includes('/')) {\n          if (!file.type) return false;\n          return match(file.type.replace(/;.*?$/, ''), type);\n        } // otherwise this is likely an extension\n\n\n        if (type[0] === '.' && file.extension) {\n          return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n        }\n\n        return false;\n      });\n\n      if (!isCorrectFileType) {\n        const allowedFileTypesString = allowedFileTypes.join(', ');\n        throw new RestrictionError(this.i18n('youCanOnlyUploadFileTypes', {\n          types: allowedFileTypesString\n        }));\n      }\n    } // We can't check maxTotalFileSize if the size is unknown.\n\n\n    if (maxTotalFileSize && file.size != null) {\n      const totalFilesSize = files.reduce((total, f) => total + f.size, file.size);\n\n      if (totalFilesSize > maxTotalFileSize) {\n        throw new RestrictionError(this.i18n('exceedsSize', {\n          size: prettierBytes(maxTotalFileSize),\n          file: file.name\n        }));\n      }\n    } // We can't check maxFileSize if the size is unknown.\n\n\n    if (maxFileSize && file.size != null && file.size > maxFileSize) {\n      throw new RestrictionError(this.i18n('exceedsSize', {\n        size: prettierBytes(maxFileSize),\n        file: file.name\n      }));\n    } // We can't check minFileSize if the size is unknown.\n\n\n    if (minFileSize && file.size != null && file.size < minFileSize) {\n      throw new RestrictionError(this.i18n('inferiorSize', {\n        size: prettierBytes(minFileSize)\n      }));\n    }\n  }\n\n  validateMinNumberOfFiles(files) {\n    const {\n      minNumberOfFiles\n    } = this.getOpts().restrictions;\n\n    if (Object.keys(files).length < minNumberOfFiles) {\n      throw new RestrictionError(this.i18n('youHaveToAtLeastSelectX', {\n        smart_count: minNumberOfFiles\n      }));\n    }\n  }\n\n  getMissingRequiredMetaFields(file) {\n    const error = new RestrictionError(this.i18n('missingRequiredMetaFieldOnFile', {\n      fileName: file.name\n    }));\n    const {\n      requiredMetaFields\n    } = this.getOpts().restrictions; // TODO: migrate to Object.hasOwn in the next major.\n\n    const own = Object.prototype.hasOwnProperty;\n    const missingFields = [];\n\n    for (const field of requiredMetaFields) {\n      if (!own.call(file.meta, field) || file.meta[field] === '') {\n        missingFields.push(field);\n      }\n    }\n\n    return {\n      missingFields,\n      error\n    };\n  }\n\n}\n\nexports.Restricter = Restricter;","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n  # mime-match\n\n  A simple function to checker whether a target mime type matches a mime-type\n  pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n  ## Example Usage\n\n  <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n  function test(pattern) {\n    var result = wildcard(pattern, target, reMimePartSplit);\n\n    // ensure that we have a valid mime type (should have two parts)\n    return result && result.length >= 2;\n  }\n\n  return pattern ? test(pattern.split(';')[0]) : test;\n};\n","/* jshint node: true */\n'use strict';\n\n/**\n  # wildcard\n\n  Very simple wildcard matching, which is designed to provide the same\n  functionality that is found in the\n  [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n  ## Usage\n\n  It works with strings:\n\n  <<< examples/strings.js\n\n  Arrays:\n\n  <<< examples/arrays.js\n\n  Objects (matching against keys):\n\n  <<< examples/objects.js\n\n  While the library works in Node, if you are are looking for file-based\n  wildcard matching then you should have a look at:\n\n  <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n  this.text = text = text || '';\n  this.hasWild = ~text.indexOf('*');\n  this.separator = separator;\n  this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n  var matches = true;\n  var parts = this.parts;\n  var ii;\n  var partsCount = parts.length;\n  var testParts;\n\n  if (typeof input == 'string' || input instanceof String) {\n    if (!this.hasWild && this.text != input) {\n      matches = false;\n    } else {\n      testParts = (input || '').split(this.separator);\n      for (ii = 0; matches && ii < partsCount; ii++) {\n        if (parts[ii] === '*')  {\n          continue;\n        } else if (ii < testParts.length) {\n          matches = parts[ii] === testParts[ii];\n        } else {\n          matches = false;\n        }\n      }\n\n      // If matches, then return the component parts\n      matches = matches && testParts;\n    }\n  }\n  else if (typeof input.splice == 'function') {\n    matches = [];\n\n    for (ii = input.length; ii--; ) {\n      if (this.match(input[ii])) {\n        matches[matches.length] = input[ii];\n      }\n    }\n  }\n  else if (typeof input == 'object') {\n    matches = {};\n\n    for (var key in input) {\n      if (this.match(key)) {\n        matches[key] = input[key];\n      }\n    }\n  }\n\n  return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n  var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n  if (typeof test != 'undefined') {\n    return matcher.match(test);\n  }\n\n  return matcher;\n};\n","\"use strict\";\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Default store that keeps state in a simple object.\n */\n\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n\nclass DefaultStore {\n  constructor() {\n    Object.defineProperty(this, _publish, {\n      value: _publish2\n    });\n    this.state = {};\n    this.callbacks = []; // TODO: use a Set instead, make it a private prop\n  }\n\n  getState() {\n    return this.state;\n  }\n\n  setState(patch) {\n    const prevState = { ...this.state\n    };\n    const nextState = { ...this.state,\n      ...patch\n    };\n    this.state = nextState;\n\n    _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n  }\n\n  subscribe(listener) {\n    this.callbacks.push(listener);\n    return () => {\n      // Remove the listener.\n      this.callbacks.splice(this.callbacks.indexOf(listener), 1);\n    };\n  }\n\n} // TODO: export the class instead in the next major.\n\n\nfunction _publish2() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  this.callbacks.forEach(listener => {\n    listener(...args);\n  });\n}\n\nDefaultStore.VERSION = packageJson.version;\n\nfunction defaultStore() {\n  return new DefaultStore();\n}\n\nmodule.exports = defaultStore;","\"use strict\";\n\nconst getFileNameAndExtension = require(\"./getFileNameAndExtension.js\");\n\nconst mimeTypes = require(\"./mimeTypes.js\");\n\nfunction getFileType(file) {\n  var _getFileNameAndExtens;\n\n  if (file.type) return file.type;\n  const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n\n  if (fileExtension && fileExtension in mimeTypes) {\n    // else, see if we can map extension to a mime type\n    return mimeTypes[fileExtension];\n  } // if all fails, fall back to a generic byte stream type\n\n\n  return 'application/octet-stream';\n}\n\nmodule.exports = getFileType;","\"use strict\";\n\n// ___Why not add the mime-types package?\n//    It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n//    https://github.com/jshttp/mime-db/blob/master/db.json\nmodule.exports = {\n  md: 'text/markdown',\n  markdown: 'text/markdown',\n  mp4: 'video/mp4',\n  mp3: 'audio/mp3',\n  svg: 'image/svg+xml',\n  jpg: 'image/jpeg',\n  png: 'image/png',\n  gif: 'image/gif',\n  heic: 'image/heic',\n  heif: 'image/heif',\n  yaml: 'text/yaml',\n  yml: 'text/yaml',\n  csv: 'text/csv',\n  tsv: 'text/tab-separated-values',\n  tab: 'text/tab-separated-values',\n  avi: 'video/x-msvideo',\n  mks: 'video/x-matroska',\n  mkv: 'video/x-matroska',\n  mov: 'video/quicktime',\n  dicom: 'application/dicom',\n  doc: 'application/msword',\n  docm: 'application/vnd.ms-word.document.macroenabled.12',\n  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  dot: 'application/msword',\n  dotm: 'application/vnd.ms-word.template.macroenabled.12',\n  dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n  xla: 'application/vnd.ms-excel',\n  xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n  xlc: 'application/vnd.ms-excel',\n  xlf: 'application/x-xliff+xml',\n  xlm: 'application/vnd.ms-excel',\n  xls: 'application/vnd.ms-excel',\n  xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n  xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  xlt: 'application/vnd.ms-excel',\n  xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n  xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n  xlw: 'application/vnd.ms-excel',\n  txt: 'text/plain',\n  text: 'text/plain',\n  conf: 'text/plain',\n  log: 'text/plain',\n  pdf: 'application/pdf',\n  zip: 'application/zip',\n  '7z': 'application/x-7z-compressed',\n  rar: 'application/x-rar-compressed',\n  tar: 'application/x-tar',\n  gz: 'application/gzip',\n  dmg: 'application/x-apple-diskimage'\n};","\"use strict\";\n\nfunction encodeCharacter(character) {\n  return character.charCodeAt(0).toString(32);\n}\n\nfunction encodeFilename(name) {\n  let suffix = '';\n  return name.replace(/[^A-Z0-9]/ig, character => {\n    suffix += `-${encodeCharacter(character)}`;\n    return '/';\n  }) + suffix;\n}\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {object} file\n * @returns {string} the fileID\n */\n\n\nfunction generateFileID(file) {\n  // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n  // is slower! simple string concatenation is fast\n  let id = 'uppy';\n\n  if (typeof file.name === 'string') {\n    id += `-${encodeFilename(file.name.toLowerCase())}`;\n  }\n\n  if (file.type !== undefined) {\n    id += `-${file.type}`;\n  }\n\n  if (file.meta && typeof file.meta.relativePath === 'string') {\n    id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n  }\n\n  if (file.data.size !== undefined) {\n    id += `-${file.data.size}`;\n  }\n\n  if (file.data.lastModified !== undefined) {\n    id += `-${file.data.lastModified}`;\n  }\n\n  return id;\n}\n\nmodule.exports = generateFileID;","\"use strict\";\n\nfunction supportsUploadProgress(userAgent) {\n  // Allow passing in userAgent for tests\n  if (userAgent == null && typeof navigator !== 'undefined') {\n    // eslint-disable-next-line no-param-reassign\n    userAgent = navigator.userAgent;\n  } // Assume it works because basically everything supports progress events.\n\n\n  if (!userAgent) return true;\n  const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n  if (!m) return true;\n  const edgeVersion = m[1];\n  let [major, minor] = edgeVersion.split('.');\n  major = parseInt(major, 10);\n  minor = parseInt(minor, 10); // Worked before:\n  // Edge 40.15063.0.0\n  // Microsoft EdgeHTML 15.15063\n\n  if (major < 15 || major === 15 && minor < 15063) {\n    return true;\n  } // Fixed in:\n  // Microsoft EdgeHTML 18.18218\n\n\n  if (major > 18 || major === 18 && minor >= 18218) {\n    return true;\n  } // other versions don't work.\n\n\n  return false;\n}\n\n// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nmodule.exports = supportsUploadProgress;","\"use strict\";\n\nfunction getFileName(fileType, fileDescriptor) {\n  if (fileDescriptor.name) {\n    return fileDescriptor.name;\n  }\n\n  if (fileType.split('/')[0] === 'image') {\n    return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n  }\n\n  return 'noname';\n}\n\nmodule.exports = getFileName;","\"use strict\";\n\nmodule.exports = {\n  strings: {\n    addBulkFilesFailed: {\n      0: 'Failed to add %{smart_count} file due to an internal error',\n      1: 'Failed to add %{smart_count} files due to internal errors'\n    },\n    youCanOnlyUploadX: {\n      0: 'You can only upload %{smart_count} file',\n      1: 'You can only upload %{smart_count} files'\n    },\n    youHaveToAtLeastSelectX: {\n      0: 'You have to select at least %{smart_count} file',\n      1: 'You have to select at least %{smart_count} files'\n    },\n    exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n    missingRequiredMetaField: 'Missing required meta fields',\n    missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n    inferiorSize: 'This file is smaller than the allowed size of %{size}',\n    youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n    noMoreFilesAllowed: 'Cannot add more files',\n    noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n    companionError: 'Connection with Companion failed',\n    authAborted: 'Authentication aborted',\n    companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n    failedToUpload: 'Failed to upload %{file}',\n    noInternetConnection: 'No Internet connection',\n    connectedToInternet: 'Connected to the Internet',\n    // Strings for remote providers\n    noFilesFound: 'You have no files or folders here',\n    selectX: {\n      0: 'Select %{smart_count}',\n      1: 'Select %{smart_count}'\n    },\n    allFilesFromFolderNamed: 'All files from folder %{name}',\n    openFolderNamed: 'Open folder %{name}',\n    cancel: 'Cancel',\n    logOut: 'Log out',\n    filter: 'Filter',\n    resetFilter: 'Reset filter',\n    loading: 'Loading...',\n    authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n    authenticateWith: 'Connect to %{pluginName}',\n    signInWithGoogle: 'Sign in with Google',\n    searchImages: 'Search for images',\n    enterTextToSearch: 'Enter text to search for images',\n    search: 'Search',\n    emptyFolderAdded: 'No files were added from empty folder',\n    folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n    folderAdded: {\n      0: 'Added %{smart_count} file from %{folder}',\n      1: 'Added %{smart_count} files from %{folder}'\n    }\n  }\n};","\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @returns {Node|null}\n */\n\n\nfunction findDOMElement(element, context) {\n  if (context === void 0) {\n    context = document;\n  }\n\n  if (typeof element === 'string') {\n    return context.querySelector(element);\n  }\n\n  if (isDOMElement(element)) {\n    return element;\n  }\n\n  return null;\n}\n\nmodule.exports = findDOMElement;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nvar trapFocus = require(\"./utils/trapFocus.js\");\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst StatusBar = require(\"@uppy/status-bar\");\n\nconst Informer = require(\"@uppy/informer\");\n\nconst ThumbnailGenerator = require(\"@uppy/thumbnail-generator\");\n\nconst findAllDOMElements = require(\"@uppy/utils/lib/findAllDOMElements\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst getDroppedFiles = require(\"@uppy/utils/lib/getDroppedFiles\");\n\nconst memoizeOne = require(\"memoize-one\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS.js\");\n\nconst createSuperFocus = require(\"./utils/createSuperFocus.js\");\n\nconst DashboardUI = require(\"./components/Dashboard.js\");\n\nconst packageJson = {\n  \"version\": \"2.4.0\"\n};\n\nconst locale = require(\"./locale.js\");\n\nconst memoize = memoizeOne.default || memoizeOne;\nconst TAB_KEY = 9;\nconst ESC_KEY = 27;\n\nfunction createPromise() {\n  const o = {};\n  o.promise = new Promise((resolve, reject) => {\n    o.resolve = resolve;\n    o.reject = reject;\n  });\n  return o;\n}\n\nfunction defaultPickerIcon() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"30\",\n    height: \"30\",\n    viewBox: \"0 0 30 30\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"\n  }));\n}\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\n\n\nvar _openFileEditorWhenFilesAdded = /*#__PURE__*/_classPrivateFieldLooseKey(\"openFileEditorWhenFilesAdded\");\n\nvar _attachRenderFunctionToTarget = /*#__PURE__*/_classPrivateFieldLooseKey(\"attachRenderFunctionToTarget\");\n\nvar _isTargetSupported = /*#__PURE__*/_classPrivateFieldLooseKey(\"isTargetSupported\");\n\nvar _getAcquirers = /*#__PURE__*/_classPrivateFieldLooseKey(\"getAcquirers\");\n\nvar _getProgressIndicators = /*#__PURE__*/_classPrivateFieldLooseKey(\"getProgressIndicators\");\n\nvar _getEditors = /*#__PURE__*/_classPrivateFieldLooseKey(\"getEditors\");\n\nclass Dashboard extends _core.UIPlugin {\n  constructor(uppy, _opts) {\n    var _this;\n\n    super(uppy, _opts);\n    _this = this;\n\n    this.removeTarget = plugin => {\n      const pluginState = this.getPluginState(); // filter out the one we want to remove\n\n      const newTargets = pluginState.targets.filter(target => target.id !== plugin.id);\n      this.setPluginState({\n        targets: newTargets\n      });\n    };\n\n    this.addTarget = plugin => {\n      const callerPluginId = plugin.id || plugin.constructor.name;\n      const callerPluginName = plugin.title || callerPluginId;\n      const callerPluginType = plugin.type;\n\n      if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'editor') {\n        const msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n        this.uppy.log(msg, 'error');\n        return undefined;\n      }\n\n      const target = {\n        id: callerPluginId,\n        name: callerPluginName,\n        type: callerPluginType\n      };\n      const state = this.getPluginState();\n      const newTargets = state.targets.slice();\n      newTargets.push(target);\n      this.setPluginState({\n        targets: newTargets\n      });\n      return this.el;\n    };\n\n    this.hideAllPanels = () => {\n      const state = this.getPluginState();\n      const update = {\n        activePickerPanel: false,\n        showAddFilesPanel: false,\n        activeOverlayType: null,\n        fileCardFor: null,\n        showFileEditor: false\n      };\n\n      if (state.activePickerPanel === update.activePickerPanel && state.showAddFilesPanel === update.showAddFilesPanel && state.showFileEditor === update.showFileEditor && state.activeOverlayType === update.activeOverlayType) {\n        // avoid doing a state update if nothing changed\n        return;\n      }\n\n      this.setPluginState(update);\n    };\n\n    this.showPanel = id => {\n      const {\n        targets\n      } = this.getPluginState();\n      const activePickerPanel = targets.filter(target => {\n        return target.type === 'acquirer' && target.id === id;\n      })[0];\n      this.setPluginState({\n        activePickerPanel,\n        activeOverlayType: 'PickerPanel'\n      });\n    };\n\n    this.canEditFile = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      return editors.some(target => this.uppy.getPlugin(target.id).canEditFile(file));\n    };\n\n    this.openFileEditor = file => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      this.setPluginState({\n        showFileEditor: true,\n        fileCardFor: file.id || null,\n        activeOverlayType: 'FileEditor'\n      });\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).selectFile(file);\n      });\n    };\n\n    this.saveFileEditor = () => {\n      const {\n        targets\n      } = this.getPluginState();\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](targets);\n\n      editors.forEach(editor => {\n        this.uppy.getPlugin(editor.id).save();\n      });\n      this.hideAllPanels();\n    };\n\n    this.openModal = () => {\n      const {\n        promise,\n        resolve\n      } = createPromise(); // save scroll position\n\n      this.savedScrollPosition = window.pageYOffset; // save active element, so we can restore focus when modal is closed\n\n      this.savedActiveElement = document.activeElement;\n\n      if (this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.add('uppy-Dashboard-isFixed');\n      }\n\n      if (this.opts.animateOpenClose && this.getPluginState().isClosing) {\n        const handler = () => {\n          this.setPluginState({\n            isHidden: false\n          });\n          this.el.removeEventListener('animationend', handler, false);\n          resolve();\n        };\n\n        this.el.addEventListener('animationend', handler, false);\n      } else {\n        this.setPluginState({\n          isHidden: false\n        });\n        resolve();\n      }\n\n      if (this.opts.browserBackButtonClose) {\n        this.updateBrowserHistory();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.addEventListener('keydown', this.handleKeyDownInModal);\n      this.uppy.emit('dashboard:modal-open');\n      return promise;\n    };\n\n    this.closeModal = function (opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n\n      const {\n        // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button)\n        manualClose = true\n      } = opts;\n\n      const {\n        isHidden,\n        isClosing\n      } = _this.getPluginState();\n\n      if (isHidden || isClosing) {\n        // short-circuit if animation is ongoing\n        return undefined;\n      }\n\n      const {\n        promise,\n        resolve\n      } = createPromise();\n\n      if (_this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.remove('uppy-Dashboard-isFixed');\n      }\n\n      if (_this.opts.animateOpenClose) {\n        _this.setPluginState({\n          isClosing: true\n        });\n\n        const handler = () => {\n          _this.setPluginState({\n            isHidden: true,\n            isClosing: false\n          });\n\n          _this.superFocus.cancel();\n\n          _this.savedActiveElement.focus();\n\n          _this.el.removeEventListener('animationend', handler, false);\n\n          resolve();\n        };\n\n        _this.el.addEventListener('animationend', handler, false);\n      } else {\n        _this.setPluginState({\n          isHidden: true\n        });\n\n        _this.superFocus.cancel();\n\n        _this.savedActiveElement.focus();\n\n        resolve();\n      } // handle ESC and TAB keys in modal dialog\n\n\n      document.removeEventListener('keydown', _this.handleKeyDownInModal);\n\n      if (manualClose) {\n        if (_this.opts.browserBackButtonClose) {\n          var _history$state;\n\n          // Make sure that the latest entry in the history state is our modal name\n          // eslint-disable-next-line no-restricted-globals\n          if ((_history$state = history.state) != null && _history$state[_this.modalName]) {\n            // Go back in history to clear out the entry we created (ultimately closing the modal)\n            // eslint-disable-next-line no-restricted-globals\n            history.back();\n          }\n        }\n      }\n\n      _this.uppy.emit('dashboard:modal-closed');\n\n      return promise;\n    };\n\n    this.isModalOpen = () => {\n      return !this.getPluginState().isHidden || false;\n    };\n\n    this.requestCloseModal = () => {\n      if (this.opts.onRequestCloseModal) {\n        return this.opts.onRequestCloseModal();\n      }\n\n      return this.closeModal();\n    };\n\n    this.setDarkModeCapability = isDarkModeOn => {\n      const {\n        capabilities\n      } = this.uppy.getState();\n      this.uppy.setState({\n        capabilities: { ...capabilities,\n          darkMode: isDarkModeOn\n        }\n      });\n    };\n\n    this.handleSystemDarkModeChange = event => {\n      const isDarkModeOnNow = event.matches;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnNow ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnNow);\n    };\n\n    this.toggleFileCard = (show, fileID) => {\n      const file = this.uppy.getFile(fileID);\n\n      if (show) {\n        this.uppy.emit('dashboard:file-edit-start', file);\n      } else {\n        this.uppy.emit('dashboard:file-edit-complete', file);\n      }\n\n      this.setPluginState({\n        fileCardFor: show ? fileID : null,\n        activeOverlayType: show ? 'FileCard' : null\n      });\n    };\n\n    this.toggleAddFilesPanel = show => {\n      this.setPluginState({\n        showAddFilesPanel: show,\n        activeOverlayType: show ? 'AddFiles' : null\n      });\n    };\n\n    this.addFiles = files => {\n      const descriptors = files.map(file => ({\n        source: this.id,\n        name: file.name,\n        type: file.type,\n        data: file,\n        meta: {\n          // path of the file relative to the ancestor directory the user selected.\n          // e.g. 'docs/Old Prague/airbnb.pdf'\n          relativePath: file.relativePath || file.webkitRelativePath || null\n        }\n      }));\n\n      try {\n        this.uppy.addFiles(descriptors);\n      } catch (err) {\n        this.uppy.log(err);\n      }\n    };\n\n    this.startListeningToResize = () => {\n      // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n      // and update containerWidth/containerHeight in plugin state accordingly.\n      // Emits first event on initialization.\n      this.resizeObserver = new ResizeObserver(entries => {\n        const uppyDashboardInnerEl = entries[0];\n        const {\n          width,\n          height\n        } = uppyDashboardInnerEl.contentRect;\n        this.uppy.log(`[Dashboard] resized: ${width} / ${height}`, 'debug');\n        this.setPluginState({\n          containerWidth: width,\n          containerHeight: height,\n          areInsidesReadyToBeVisible: true\n        });\n      });\n      this.resizeObserver.observe(this.el.querySelector('.uppy-Dashboard-inner')); // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n\n      this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(() => {\n        const pluginState = this.getPluginState();\n        const isModalAndClosed = !this.opts.inline && pluginState.isHidden;\n\n        if ( // if ResizeObserver hasn't yet fired,\n        !pluginState.areInsidesReadyToBeVisible // and it's not due to the modal being closed\n        && !isModalAndClosed) {\n          this.uppy.log(\"[Dashboard] resize event didn't fire on time: defaulted to mobile layout\", 'debug');\n          this.setPluginState({\n            areInsidesReadyToBeVisible: true\n          });\n        }\n      }, 1000);\n    };\n\n    this.stopListeningToResize = () => {\n      this.resizeObserver.disconnect();\n      clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout);\n    };\n\n    this.recordIfFocusedOnUppyRecently = event => {\n      if (this.el.contains(event.target)) {\n        this.ifFocusedOnUppyRecently = true;\n      } else {\n        this.ifFocusedOnUppyRecently = false; // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n        //    Because superFocus is debounced, when we move from Uppy to some other element on the page,\n        //    previously run superFocus sometimes hits and moves focus back to Uppy.\n\n        this.superFocus.cancel();\n      }\n    };\n\n    this.disableAllFocusableElements = disable => {\n      const focusableNodes = toArray(this.el.querySelectorAll(FOCUSABLE_ELEMENTS));\n\n      if (disable) {\n        focusableNodes.forEach(node => {\n          // save previous tabindex in a data-attribute, to restore when enabling\n          const currentTabIndex = node.getAttribute('tabindex');\n\n          if (currentTabIndex) {\n            node.dataset.inertTabindex = currentTabIndex; // eslint-disable-line no-param-reassign\n          }\n\n          node.setAttribute('tabindex', '-1');\n        });\n      } else {\n        focusableNodes.forEach(node => {\n          if ('inertTabindex' in node.dataset) {\n            node.setAttribute('tabindex', node.dataset.inertTabindex);\n          } else {\n            node.removeAttribute('tabindex');\n          }\n        });\n      }\n\n      this.dashboardIsDisabled = disable;\n    };\n\n    this.updateBrowserHistory = () => {\n      var _history$state2;\n\n      // Ensure history state does not already contain our modal name to avoid double-pushing\n      // eslint-disable-next-line no-restricted-globals\n      if (!((_history$state2 = history.state) != null && _history$state2[this.modalName])) {\n        // Push to history so that the page is not lost on browser back button press\n        // eslint-disable-next-line no-restricted-globals\n        history.pushState({ // eslint-disable-next-line no-restricted-globals\n          ...history.state,\n          [this.modalName]: true\n        }, '');\n      } // Listen for back button presses\n\n\n      window.addEventListener('popstate', this.handlePopState, false);\n    };\n\n    this.handlePopState = event => {\n      var _event$state;\n\n      // Close the modal if the history state no longer contains our modal name\n      if (this.isModalOpen() && (!event.state || !event.state[this.modalName])) {\n        this.closeModal({\n          manualClose: false\n        });\n      } // When the browser back button is pressed and uppy is now the latest entry\n      // in the history but the modal is closed, fix the history by removing the\n      // uppy history entry.\n      // This occurs when another entry is added into the history state while the\n      // modal is open, and then the modal gets manually closed.\n      // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n\n\n      if (!this.isModalOpen() && (_event$state = event.state) != null && _event$state[this.modalName]) {\n        // eslint-disable-next-line no-restricted-globals\n        history.back();\n      }\n    };\n\n    this.handleKeyDownInModal = event => {\n      // close modal on esc key press\n      if (event.keyCode === ESC_KEY) this.requestCloseModal(event); // trap focus on tab key press\n\n      if (event.keyCode === TAB_KEY) trapFocus.forModal(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handleClickOutside = () => {\n      if (this.opts.closeModalOnClickOutside) this.requestCloseModal();\n    };\n\n    this.handlePaste = event => {\n      // Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootPaste(event)\n          plugin.handleRootPaste == null ? void 0 : plugin.handleRootPaste(event);\n        }\n      }); // Add all dropped files\n\n      const files = toArray(event.clipboardData.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files pasted');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleInputChange = event => {\n      event.preventDefault();\n      const files = toArray(event.target.files);\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files selected through input');\n        this.addFiles(files);\n      }\n    };\n\n    this.handleDragOver = event => {\n      var _this$opts$onDragOver, _this$opts;\n\n      event.preventDefault();\n      event.stopPropagation(); // Check if some plugin can handle the datatransfer without files —\n      // for instance, the Url plugin can import a url\n\n      const canSomePluginHandleRootDrop = () => {\n        let somePluginCanHandleRootDrop = true;\n        this.uppy.iteratePlugins(plugin => {\n          if (plugin.canHandleRootDrop != null && plugin.canHandleRootDrop(event)) {\n            somePluginCanHandleRootDrop = true;\n          }\n        });\n        return somePluginCanHandleRootDrop;\n      }; // Check if the \"type\" of the datatransfer object includes files\n\n\n      const doesEventHaveFiles = () => {\n        const {\n          types\n        } = event.dataTransfer;\n        return types.some(type => type === 'Files');\n      }; // Deny drop, if no plugins can handle datatransfer, there are no files,\n      // or when opts.disabled is set, or new uploads are not allowed\n\n\n      const somePluginCanHandleRootDrop = canSomePluginHandleRootDrop(event);\n      const hasFiles = doesEventHaveFiles(event);\n\n      if (!somePluginCanHandleRootDrop && !hasFiles || this.opts.disabled // opts.disableLocalFiles should only be taken into account if no plugins\n      // can handle the datatransfer\n      || this.opts.disableLocalFiles && (hasFiles || !somePluginCanHandleRootDrop) || !this.uppy.getState().allowNewUpload) {\n        event.dataTransfer.dropEffect = 'none'; // eslint-disable-line no-param-reassign\n\n        clearTimeout(this.removeDragOverClassTimeout);\n        return;\n      } // Add a small (+) icon on drop\n      // (and prevent browsers from interpreting this as files being _moved_ into the\n      // browser, https://github.com/transloadit/uppy/issues/1978).\n\n\n      event.dataTransfer.dropEffect = 'copy'; // eslint-disable-line no-param-reassign\n\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: true\n      });\n      (_this$opts$onDragOver = (_this$opts = this.opts).onDragOver) == null ? void 0 : _this$opts$onDragOver.call(_this$opts, event);\n    };\n\n    this.handleDragLeave = event => {\n      var _this$opts$onDragLeav, _this$opts2;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library.\n      // Solution with 'pointer-events: none' didn't work across browsers.\n\n      this.removeDragOverClassTimeout = setTimeout(() => {\n        this.setPluginState({\n          isDraggingOver: false\n        });\n      }, 50);\n      (_this$opts$onDragLeav = (_this$opts2 = this.opts).onDragLeave) == null ? void 0 : _this$opts$onDragLeav.call(_this$opts2, event);\n    };\n\n    this.handleDrop = async event => {\n      var _this$opts$onDrop, _this$opts3;\n\n      event.preventDefault();\n      event.stopPropagation();\n      clearTimeout(this.removeDragOverClassTimeout);\n      this.setPluginState({\n        isDraggingOver: false\n      }); // Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootDrop(event)\n          plugin.handleRootDrop == null ? void 0 : plugin.handleRootDrop(event);\n        }\n      }); // Add all dropped files\n\n      let executedDropErrorOnce = false;\n\n      const logDropError = error => {\n        this.uppy.log(error, 'error'); // In practice all drop errors are most likely the same,\n        // so let's just show one to avoid overwhelming the user\n\n        if (!executedDropErrorOnce) {\n          this.uppy.info(error.message, 'error');\n          executedDropErrorOnce = true;\n        }\n      }; // Add all dropped files\n\n\n      const files = await getDroppedFiles(event.dataTransfer, {\n        logDropError\n      });\n\n      if (files.length > 0) {\n        this.uppy.log('[Dashboard] Files dropped');\n        this.addFiles(files);\n      }\n\n      (_this$opts$onDrop = (_this$opts3 = this.opts).onDrop) == null ? void 0 : _this$opts$onDrop.call(_this$opts3, event);\n    };\n\n    this.handleRequestThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:request', file);\n      }\n    };\n\n    this.handleCancelThumbnail = file => {\n      if (!this.opts.waitForThumbnailsBeforeUpload) {\n        this.uppy.emit('thumbnail:cancel', file);\n      }\n    };\n\n    this.handleKeyDownInInline = event => {\n      // Trap focus on tab key press.\n      if (event.keyCode === TAB_KEY) trapFocus.forInline(event, this.getPluginState().activeOverlayType, this.el);\n    };\n\n    this.handlePasteOnBody = event => {\n      const isFocusInOverlay = this.el.contains(document.activeElement);\n\n      if (isFocusInOverlay) {\n        this.handlePaste(event);\n      }\n    };\n\n    this.handleComplete = _ref => {\n      let {\n        failed\n      } = _ref;\n\n      if (this.opts.closeAfterFinish && failed.length === 0) {\n        // All uploads are done\n        this.requestCloseModal();\n      }\n    };\n\n    this.handleCancelRestore = () => {\n      this.uppy.emit('restore-canceled');\n    };\n\n    Object.defineProperty(this, _openFileEditorWhenFilesAdded, {\n      writable: true,\n      value: files => {\n        const firstFile = files[0];\n\n        if (this.canEditFile(firstFile)) {\n          this.openFileEditor(firstFile);\n        }\n      }\n    });\n\n    this.initEvents = () => {\n      // Modal open button\n      if (this.opts.trigger && !this.opts.inline) {\n        const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n        if (showModalTrigger) {\n          showModalTrigger.forEach(trigger => trigger.addEventListener('click', this.openModal));\n        } else {\n          this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n        }\n      }\n\n      this.startListeningToResize();\n      document.addEventListener('paste', this.handlePasteOnBody);\n      this.uppy.on('plugin-remove', this.removeTarget);\n      this.uppy.on('file-added', this.hideAllPanels);\n      this.uppy.on('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.on('file-editor:complete', this.hideAllPanels);\n      this.uppy.on('complete', this.handleComplete); // ___Why fire on capture?\n      //    Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n\n      document.addEventListener('focus', this.recordIfFocusedOnUppyRecently, true);\n      document.addEventListener('click', this.recordIfFocusedOnUppyRecently, true);\n\n      if (this.opts.inline) {\n        this.el.addEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.on('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.removeEvents = () => {\n      const showModalTrigger = findAllDOMElements(this.opts.trigger);\n\n      if (!this.opts.inline && showModalTrigger) {\n        showModalTrigger.forEach(trigger => trigger.removeEventListener('click', this.openModal));\n      }\n\n      this.stopListeningToResize();\n      document.removeEventListener('paste', this.handlePasteOnBody);\n      window.removeEventListener('popstate', this.handlePopState, false);\n      this.uppy.off('plugin-remove', this.removeTarget);\n      this.uppy.off('file-added', this.hideAllPanels);\n      this.uppy.off('dashboard:modal-closed', this.hideAllPanels);\n      this.uppy.off('file-editor:complete', this.hideAllPanels);\n      this.uppy.off('complete', this.handleComplete);\n      document.removeEventListener('focus', this.recordIfFocusedOnUppyRecently);\n      document.removeEventListener('click', this.recordIfFocusedOnUppyRecently);\n\n      if (this.opts.inline) {\n        this.el.removeEventListener('keydown', this.handleKeyDownInInline);\n      }\n\n      if (this.opts.autoOpenFileEditor) {\n        this.uppy.off('files-added', _classPrivateFieldLooseBase(this, _openFileEditorWhenFilesAdded)[_openFileEditorWhenFilesAdded]);\n      }\n    };\n\n    this.superFocusOnEachUpdate = () => {\n      const isFocusInUppy = this.el.contains(document.activeElement); // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n\n      const isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n      const isInformerHidden = this.uppy.getState().info.length === 0;\n      const isModal = !this.opts.inline;\n\n      if ( // If update is connected to showing the Informer - let the screen reader calmly read it.\n      isInformerHidden && ( // If we are in a modal - always superfocus without concern for other elements\n      // on the page (user is unlikely to want to interact with the rest of the page)\n      isModal // If we are already inside of Uppy, or\n      || isFocusInUppy // If we are not focused on anything BUT we have already, at least once, focused on uppy\n      //   1. We focus when isFocusNowhere, because when the element we were focused\n      //      on disappears (e.g. an overlay), - focus gets lost. If user is typing\n      //      something somewhere else on the page, - focus won't be 'nowhere'.\n      //   2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently,\n      //      to avoid focus jumps if we do something else on the page.\n      //   [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode,\n      //                     when file is uploading, - navigate via tab to the checkbox,\n      //                     try to press space multiple times. Focus will jump to Uppy.\n      || isFocusNowhere && this.ifFocusedOnUppyRecently)) {\n        this.superFocus(this.el, this.getPluginState().activeOverlayType);\n      } else {\n        this.superFocus.cancel();\n      }\n    };\n\n    this.afterUpdate = () => {\n      if (this.opts.disabled && !this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(true);\n        return;\n      }\n\n      if (!this.opts.disabled && this.dashboardIsDisabled) {\n        this.disableAllFocusableElements(false);\n      }\n\n      this.superFocusOnEachUpdate();\n    };\n\n    this.saveFileCard = (meta, fileID) => {\n      this.uppy.setFileMeta(fileID, meta);\n      this.toggleFileCard(false, fileID);\n    };\n\n    Object.defineProperty(this, _attachRenderFunctionToTarget, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id);\n        return { ...target,\n          icon: plugin.icon || this.opts.defaultPickerIcon,\n          render: plugin.render\n        };\n      }\n    });\n    Object.defineProperty(this, _isTargetSupported, {\n      writable: true,\n      value: target => {\n        const plugin = this.uppy.getPlugin(target.id); // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n\n        if (typeof plugin.isSupported !== 'function') {\n          return true;\n        }\n\n        return plugin.isSupported();\n      }\n    });\n    Object.defineProperty(this, _getAcquirers, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'acquirer' && _classPrivateFieldLooseBase(this, _isTargetSupported)[_isTargetSupported](target)).map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getProgressIndicators, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'progressindicator').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n    Object.defineProperty(this, _getEditors, {\n      writable: true,\n      value: memoize(targets => {\n        return targets.filter(target => target.type === 'editor').map(_classPrivateFieldLooseBase(this, _attachRenderFunctionToTarget)[_attachRenderFunctionToTarget]);\n      })\n    });\n\n    this.render = state => {\n      const pluginState = this.getPluginState();\n      const {\n        files,\n        capabilities,\n        allowNewUpload\n      } = state;\n      const {\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused\n      } = this.uppy.getObjectOfFilesPerState();\n\n      const acquirers = _classPrivateFieldLooseBase(this, _getAcquirers)[_getAcquirers](pluginState.targets);\n\n      const progressindicators = _classPrivateFieldLooseBase(this, _getProgressIndicators)[_getProgressIndicators](pluginState.targets);\n\n      const editors = _classPrivateFieldLooseBase(this, _getEditors)[_getEditors](pluginState.targets);\n\n      let theme;\n\n      if (this.opts.theme === 'auto') {\n        theme = capabilities.darkMode ? 'dark' : 'light';\n      } else {\n        theme = this.opts.theme;\n      }\n\n      if (['files', 'folders', 'both'].indexOf(this.opts.fileManagerSelectionType) < 0) {\n        this.opts.fileManagerSelectionType = 'files'; // eslint-disable-next-line no-console\n\n        console.warn(`Unsupported option for \"fileManagerSelectionType\". Using default of \"${this.opts.fileManagerSelectionType}\".`);\n      }\n\n      return DashboardUI({\n        state,\n        isHidden: pluginState.isHidden,\n        files,\n        newFiles,\n        uploadStartedFiles,\n        completeFiles,\n        erroredFiles,\n        inProgressFiles,\n        inProgressNotPausedFiles,\n        processingFiles,\n        isUploadStarted,\n        isAllComplete,\n        isAllErrored,\n        isAllPaused,\n        totalFileCount: Object.keys(files).length,\n        totalProgress: state.totalProgress,\n        allowNewUpload,\n        acquirers,\n        theme,\n        disabled: this.opts.disabled,\n        disableLocalFiles: this.opts.disableLocalFiles,\n        direction: this.opts.direction,\n        activePickerPanel: pluginState.activePickerPanel,\n        showFileEditor: pluginState.showFileEditor,\n        saveFileEditor: this.saveFileEditor,\n        disableAllFocusableElements: this.disableAllFocusableElements,\n        animateOpenClose: this.opts.animateOpenClose,\n        isClosing: pluginState.isClosing,\n        progressindicators,\n        editors,\n        autoProceed: this.uppy.opts.autoProceed,\n        id: this.id,\n        closeModal: this.requestCloseModal,\n        handleClickOutside: this.handleClickOutside,\n        handleInputChange: this.handleInputChange,\n        handlePaste: this.handlePaste,\n        inline: this.opts.inline,\n        showPanel: this.showPanel,\n        hideAllPanels: this.hideAllPanels,\n        i18n: this.i18n,\n        i18nArray: this.i18nArray,\n        uppy: this.uppy,\n        note: this.opts.note,\n        recoveredState: state.recoveredState,\n        metaFields: pluginState.metaFields,\n        resumableUploads: capabilities.resumableUploads || false,\n        individualCancellation: capabilities.individualCancellation,\n        isMobileDevice: capabilities.isMobileDevice,\n        fileCardFor: pluginState.fileCardFor,\n        toggleFileCard: this.toggleFileCard,\n        toggleAddFilesPanel: this.toggleAddFilesPanel,\n        showAddFilesPanel: pluginState.showAddFilesPanel,\n        saveFileCard: this.saveFileCard,\n        openFileEditor: this.openFileEditor,\n        canEditFile: this.canEditFile,\n        width: this.opts.width,\n        height: this.opts.height,\n        showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult,\n        fileManagerSelectionType: this.opts.fileManagerSelectionType,\n        proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy,\n        hideCancelButton: this.opts.hideCancelButton,\n        hideRetryButton: this.opts.hideRetryButton,\n        hidePauseResumeButton: this.opts.hidePauseResumeButton,\n        showRemoveButtonAfterComplete: this.opts.showRemoveButtonAfterComplete,\n        containerWidth: pluginState.containerWidth,\n        containerHeight: pluginState.containerHeight,\n        areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n        isTargetDOMEl: this.isTargetDOMEl,\n        parentElement: this.el,\n        allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes,\n        maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles,\n        requiredMetaFields: this.uppy.opts.restrictions.requiredMetaFields,\n        showSelectedFiles: this.opts.showSelectedFiles,\n        handleCancelRestore: this.handleCancelRestore,\n        handleRequestThumbnail: this.handleRequestThumbnail,\n        handleCancelThumbnail: this.handleCancelThumbnail,\n        // drag props\n        isDraggingOver: pluginState.isDraggingOver,\n        handleDragOver: this.handleDragOver,\n        handleDragLeave: this.handleDragLeave,\n        handleDrop: this.handleDrop\n      });\n    };\n\n    this.discoverProviderPlugins = () => {\n      this.uppy.iteratePlugins(plugin => {\n        if (plugin && !plugin.target && plugin.opts && plugin.opts.target === this.constructor) {\n          this.addTarget(plugin);\n        }\n      });\n    };\n\n    this.install = () => {\n      // Set default state for Dashboard\n      this.setPluginState({\n        isHidden: true,\n        fileCardFor: null,\n        activeOverlayType: null,\n        showAddFilesPanel: false,\n        activePickerPanel: false,\n        showFileEditor: false,\n        metaFields: this.opts.metaFields,\n        targets: [],\n        // We'll make them visible once .containerWidth is determined\n        areInsidesReadyToBeVisible: false,\n        isDraggingOver: false\n      });\n      const {\n        inline,\n        closeAfterFinish\n      } = this.opts;\n\n      if (inline && closeAfterFinish) {\n        throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n      }\n\n      const {\n        allowMultipleUploads,\n        allowMultipleUploadBatches\n      } = this.uppy.opts;\n\n      if ((allowMultipleUploads || allowMultipleUploadBatches) && closeAfterFinish) {\n        this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n      }\n\n      const {\n        target\n      } = this.opts;\n\n      if (target) {\n        this.mount(target, this);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n\n        if (plugin) {\n          plugin.mount(this, plugin);\n        }\n      });\n\n      if (!this.opts.disableStatusBar) {\n        this.uppy.use(StatusBar, {\n          id: `${this.id}:StatusBar`,\n          target: this,\n          hideUploadButton: this.opts.hideUploadButton,\n          hideRetryButton: this.opts.hideRetryButton,\n          hidePauseResumeButton: this.opts.hidePauseResumeButton,\n          hideCancelButton: this.opts.hideCancelButton,\n          showProgressDetails: this.opts.showProgressDetails,\n          hideAfterFinish: this.opts.hideProgressAfterFinish,\n          locale: this.opts.locale,\n          doneButtonHandler: this.opts.doneButtonHandler\n        });\n      }\n\n      if (!this.opts.disableInformer) {\n        this.uppy.use(Informer, {\n          id: `${this.id}:Informer`,\n          target: this\n        });\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        this.uppy.use(ThumbnailGenerator, {\n          id: `${this.id}:ThumbnailGenerator`,\n          thumbnailWidth: this.opts.thumbnailWidth,\n          thumbnailHeight: this.opts.thumbnailHeight,\n          thumbnailType: this.opts.thumbnailType,\n          waitForThumbnailsBeforeUpload: this.opts.waitForThumbnailsBeforeUpload,\n          // If we don't block on thumbnails, we can lazily generate them\n          lazy: !this.opts.waitForThumbnailsBeforeUpload\n        });\n      } // Dark Mode / theme\n\n\n      this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n      const isDarkModeOnFromTheStart = this.darkModeMediaQuery ? this.darkModeMediaQuery.matches : false;\n      this.uppy.log(`[Dashboard] Dark mode is ${isDarkModeOnFromTheStart ? 'on' : 'off'}`);\n      this.setDarkModeCapability(isDarkModeOnFromTheStart);\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange);\n      }\n\n      this.discoverProviderPlugins();\n      this.initEvents();\n    };\n\n    this.uninstall = () => {\n      if (!this.opts.disableInformer) {\n        const informer = this.uppy.getPlugin(`${this.id}:Informer`); // Checking if this plugin exists, in case it was removed by uppy-core\n        // before the Dashboard was.\n\n        if (informer) this.uppy.removePlugin(informer);\n      }\n\n      if (!this.opts.disableStatusBar) {\n        const statusBar = this.uppy.getPlugin(`${this.id}:StatusBar`);\n        if (statusBar) this.uppy.removePlugin(statusBar);\n      }\n\n      if (!this.opts.disableThumbnailGenerator) {\n        const thumbnail = this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);\n        if (thumbnail) this.uppy.removePlugin(thumbnail);\n      }\n\n      const plugins = this.opts.plugins || [];\n      plugins.forEach(pluginID => {\n        const plugin = this.uppy.getPlugin(pluginID);\n        if (plugin) plugin.unmount();\n      });\n\n      if (this.opts.theme === 'auto') {\n        this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange);\n      }\n\n      this.unmount();\n      this.removeEvents();\n    };\n\n    this.id = this.opts.id || 'Dashboard';\n    this.title = 'Dashboard';\n    this.type = 'orchestrator';\n    this.modalName = `uppy-Dashboard-${(0, _nonSecure.nanoid)()}`;\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      metaFields: [],\n      trigger: null,\n      inline: false,\n      width: 750,\n      height: 550,\n      thumbnailWidth: 280,\n      thumbnailType: 'image/jpeg',\n      waitForThumbnailsBeforeUpload: false,\n      defaultPickerIcon,\n      showLinkToFileUploadResult: false,\n      showProgressDetails: false,\n      hideUploadButton: false,\n      hideCancelButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideProgressAfterFinish: false,\n      doneButtonHandler: () => {\n        this.uppy.reset();\n        this.requestCloseModal();\n      },\n      note: null,\n      closeModalOnClickOutside: false,\n      closeAfterFinish: false,\n      disableStatusBar: false,\n      disableInformer: false,\n      disableThumbnailGenerator: false,\n      disablePageScrollWhenModalOpen: true,\n      animateOpenClose: true,\n      fileManagerSelectionType: 'files',\n      proudlyDisplayPoweredByUppy: true,\n      onRequestCloseModal: () => this.closeModal(),\n      showSelectedFiles: true,\n      showRemoveButtonAfterComplete: false,\n      browserBackButtonClose: false,\n      theme: 'light',\n      autoOpenFileEditor: false,\n      disabled: false,\n      disableLocalFiles: false\n    }; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ..._opts\n    };\n    this.i18nInit();\n    this.superFocus = createSuperFocus();\n    this.ifFocusedOnUppyRecently = false; // Timeouts\n\n    this.makeDashboardInsidesVisibleAnywayTimeout = null;\n    this.removeDragOverClassTimeout = null;\n  }\n\n}\n\nDashboard.VERSION = packageJson.version;\nmodule.exports = Dashboard;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.forInline = forInline;\nexports.forModal = trapFocus;\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n\nfunction focusOnFirstNode(event, nodes) {\n  const node = nodes[0];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n}\n\nfunction focusOnLastNode(event, nodes) {\n  const node = nodes[nodes.length - 1];\n\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n} // ___Why not just use (focusedItemIndex === -1)?\n//    Firefox thinks <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n//    the <ul>, code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently\n//    active overlay!\n//    [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics\n//    in the <ul>.\n\n\nfunction isFocusInOverlay(activeOverlayEl) {\n  return activeOverlayEl.contains(document.activeElement);\n}\n\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n  const activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n  const focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n  const focusedItemIndex = focusableNodes.indexOf(document.activeElement); // If we pressed tab, and focus is not yet within the current overlay - focus on\n  // the first element within the current overlay.\n  // This is a safety measure (for when user returns from another tab e.g.), most\n  // plugins will try to focus on some important element as it loads.\n\n  if (!isFocusInOverlay(activeOverlayEl)) {\n    focusOnFirstNode(event, focusableNodes); // If we pressed shift + tab, and we're on the first element of a modal\n  } else if (event.shiftKey && focusedItemIndex === 0) {\n    focusOnLastNode(event, focusableNodes); // If we pressed tab, and we're on the last element of the modal\n  } else if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n    focusOnFirstNode(event, focusableNodes);\n  }\n} // Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram),\n// never lets focus disappear from the modal.\n\n\n// Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\nfunction forInline(event, activeOverlayType, dashboardEl) {\n  // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n  if (activeOverlayType === null) {// Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n    // ___When there is some overlay with 'Done' button\n  } else {\n    // Trap the focus inside this overlay!\n    // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n    trapFocus(event, activeOverlayType, dashboardEl);\n  }\n}","\"use strict\";\n\nmodule.exports = require(\"./_StatusBar.js\");","\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\n// TODO: rename this file to StatusBar.jsx on the next major.\nconst getSpeed = require(\"@uppy/utils/lib/getSpeed\");\n\nconst getBytesRemaining = require(\"@uppy/utils/lib/getBytesRemaining\");\n\nconst getTextDirection = require(\"@uppy/utils/lib/getTextDirection\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst StatusBarUI = require(\"./StatusBar.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n\nconst locale = require(\"./locale.js\");\n\nfunction getTotalSpeed(files) {\n  let totalSpeed = 0;\n  files.forEach(file => {\n    totalSpeed += getSpeed(file.progress);\n  });\n  return totalSpeed;\n}\n\nfunction getTotalETA(files) {\n  const totalSpeed = getTotalSpeed(files);\n\n  if (totalSpeed === 0) {\n    return 0;\n  }\n\n  const totalBytesRemaining = files.reduce((total, file) => {\n    return total + getBytesRemaining(file.progress);\n  }, 0);\n  return Math.round(totalBytesRemaining / totalSpeed * 10) / 10;\n}\n\nfunction getUploadingState(error, isAllComplete, recoveredState, files) {\n  if (error && !isAllComplete) {\n    return statusBarStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return statusBarStates.STATE_COMPLETE;\n  }\n\n  if (recoveredState) {\n    return statusBarStates.STATE_WAITING;\n  }\n\n  let state = statusBarStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return statusBarStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== statusBarStates.STATE_UPLOADING) {\n      state = statusBarStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== statusBarStates.STATE_UPLOADING && state !== statusBarStates.STATE_PREPROCESSING) {\n      state = statusBarStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\n\n\nclass StatusBar extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.startUpload = () => {\n      const {\n        recoveredState\n      } = this.uppy.getState();\n\n      if (recoveredState) {\n        this.uppy.emit('restore-confirmed');\n        return undefined;\n      }\n\n      return this.uppy.upload().catch(() => {// Error logged in Core\n      });\n    };\n\n    this.id = this.opts.id || 'StatusBar';\n    this.title = 'StatusBar';\n    this.type = 'progressindicator';\n    this.defaultLocale = locale; // set default options\n\n    const defaultOptions = {\n      target: 'body',\n      hideUploadButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideCancelButton: false,\n      showProgressDetails: false,\n      hideAfterFinish: true,\n      doneButtonHandler: null\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n    this.render = this.render.bind(this);\n    this.install = this.install.bind(this);\n  }\n\n  render(state) {\n    const {\n      capabilities,\n      files,\n      allowNewUpload,\n      totalProgress,\n      error,\n      recoveredState\n    } = state;\n    const {\n      newFiles,\n      startedFiles,\n      completeFiles,\n      inProgressNotPausedFiles,\n      isUploadStarted,\n      isAllComplete,\n      isAllErrored,\n      isAllPaused,\n      isUploadInProgress,\n      isSomeGhost\n    } = this.uppy.getObjectOfFilesPerState(); // If some state was recovered, we want to show Upload button/counter\n    // for all the files, because in this case it’s not an Upload button,\n    // but “Confirm Restore Button”\n\n    const newFilesOrRecovered = recoveredState ? Object.values(files) : newFiles;\n    const totalETA = getTotalETA(inProgressNotPausedFiles);\n    const resumableUploads = !!capabilities.resumableUploads;\n    const supportsUploadProgress = capabilities.uploadProgress !== false;\n    let totalSize = 0;\n    let totalUploadedSize = 0;\n    startedFiles.forEach(file => {\n      totalSize += file.progress.bytesTotal || 0;\n      totalUploadedSize += file.progress.bytesUploaded || 0;\n    });\n    return StatusBarUI({\n      error,\n      uploadState: getUploadingState(error, isAllComplete, recoveredState, state.files || {}),\n      allowNewUpload,\n      totalProgress,\n      totalSize,\n      totalUploadedSize,\n      isAllComplete: false,\n      isAllPaused,\n      isAllErrored,\n      isUploadStarted,\n      isUploadInProgress,\n      isSomeGhost,\n      recoveredState,\n      complete: completeFiles.length,\n      newFiles: newFilesOrRecovered.length,\n      numUploads: startedFiles.length,\n      totalETA,\n      files,\n      i18n: this.i18n,\n      uppy: this.uppy,\n      startUpload: this.startUpload,\n      doneButtonHandler: this.opts.doneButtonHandler,\n      resumableUploads,\n      supportsUploadProgress,\n      showProgressDetails: this.opts.showProgressDetails,\n      hideUploadButton: this.opts.hideUploadButton,\n      hideRetryButton: this.opts.hideRetryButton,\n      hidePauseResumeButton: this.opts.hidePauseResumeButton,\n      hideCancelButton: this.opts.hideCancelButton,\n      hideAfterFinish: this.opts.hideAfterFinish,\n      isTargetDOMEl: this.isTargetDOMEl\n    });\n  }\n\n  onMount() {\n    // Set the text direction if the page has not defined one.\n    const element = this.el;\n    const direction = getTextDirection(element);\n\n    if (!direction) {\n      element.dir = 'ltr';\n    }\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nStatusBar.VERSION = packageJson.version;\nmodule.exports = StatusBar;","\"use strict\";\n\nfunction getSpeed(fileProgress) {\n  if (!fileProgress.bytesUploaded) return 0;\n  const timeElapsed = Date.now() - fileProgress.uploadStarted;\n  const uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000);\n  return uploadSpeed;\n}\n\nmodule.exports = getSpeed;","\"use strict\";\n\nfunction getBytesRemaining(fileProgress) {\n  return fileProgress.bytesTotal - fileProgress.bytesUploaded;\n}\n\nmodule.exports = getBytesRemaining;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _Components = require(\"./Components.js\");\n\n// TODO: rename this file to StatusBarUI>jsx on the next major.\nconst classNames = require(\"classnames\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst calculateProcessingProgress = require(\"./calculateProcessingProgress.js\");\n\nconst {\n  STATE_ERROR,\n  STATE_WAITING,\n  STATE_PREPROCESSING,\n  STATE_UPLOADING,\n  STATE_POSTPROCESSING,\n  STATE_COMPLETE\n} = statusBarStates; // TODO: rename the function to StatusBarUI on the next major.\n\nfunction StatusBar(props) {\n  const {\n    newFiles,\n    allowNewUpload,\n    isUploadInProgress,\n    isAllPaused,\n    resumableUploads,\n    error,\n    hideUploadButton,\n    hidePauseResumeButton,\n    hideCancelButton,\n    hideRetryButton,\n    recoveredState,\n    uploadState,\n    totalProgress,\n    files,\n    supportsUploadProgress,\n    hideAfterFinish,\n    isSomeGhost,\n    doneButtonHandler,\n    isUploadStarted,\n    i18n,\n    startUpload,\n    uppy,\n    isAllComplete,\n    showProgressDetails,\n    numUploads,\n    complete,\n    totalSize,\n    totalETA,\n    totalUploadedSize\n  } = props;\n\n  function getProgressValue() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const progress = calculateProcessingProgress(files);\n\n          if (progress.mode === 'determinate') {\n            return progress.value * 100;\n          }\n\n          return totalProgress;\n        }\n\n      case STATE_ERROR:\n        {\n          return null;\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return null;\n          }\n\n          return totalProgress;\n        }\n\n      default:\n        return totalProgress;\n    }\n  }\n\n  function getIsIndeterminate() {\n    switch (uploadState) {\n      case STATE_POSTPROCESSING:\n      case STATE_PREPROCESSING:\n        {\n          const {\n            mode\n          } = calculateProcessingProgress(files);\n          return mode === 'indeterminate';\n        }\n\n      case STATE_UPLOADING:\n        {\n          if (!supportsUploadProgress) {\n            return true;\n          }\n\n          return false;\n        }\n\n      default:\n        return false;\n    }\n  }\n\n  function getIsHidden() {\n    if (recoveredState) {\n      return false;\n    }\n\n    switch (uploadState) {\n      case STATE_WAITING:\n        return hideUploadButton || newFiles === 0;\n\n      case STATE_COMPLETE:\n        return hideAfterFinish;\n\n      default:\n        return false;\n    }\n  }\n\n  const progressValue = getProgressValue();\n  const isHidden = getIsHidden();\n  const width = progressValue != null ? progressValue : 100;\n  const showUploadBtn = !error && newFiles && !isUploadInProgress && !isAllPaused && allowNewUpload && !hideUploadButton;\n  const showCancelBtn = !hideCancelButton && uploadState !== STATE_WAITING && uploadState !== STATE_COMPLETE;\n  const showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState === STATE_UPLOADING;\n  const showRetryBtn = error && !isAllComplete && !hideRetryButton;\n  const showDoneBtn = doneButtonHandler && uploadState === STATE_COMPLETE;\n  const progressClassNames = classNames('uppy-StatusBar-progress', {\n    'is-indeterminate': getIsIndeterminate()\n  });\n  const statusBarClassNames = classNames('uppy-StatusBar', `is-${uploadState}`, {\n    'has-ghosts': isSomeGhost\n  });\n  return (0, _preact.h)(\"div\", {\n    className: statusBarClassNames,\n    \"aria-hidden\": isHidden\n  }, (0, _preact.h)(\"div\", {\n    className: progressClassNames,\n    style: {\n      width: `${width}%`\n    },\n    role: \"progressbar\",\n    \"aria-label\": `${width}%`,\n    \"aria-valuetext\": `${width}%`,\n    \"aria-valuemin\": \"0\",\n    \"aria-valuemax\": \"100\",\n    \"aria-valuenow\": progressValue\n  }), (() => {\n    switch (uploadState) {\n      case STATE_PREPROCESSING:\n      case STATE_POSTPROCESSING:\n        return (0, _preact.h)(_Components.ProgressBarProcessing, {\n          progress: calculateProcessingProgress(files)\n        });\n\n      case STATE_COMPLETE:\n        return (0, _preact.h)(_Components.ProgressBarComplete, {\n          i18n: i18n\n        });\n\n      case STATE_ERROR:\n        return (0, _preact.h)(_Components.ProgressBarError, {\n          error: error,\n          i18n: i18n,\n          numUploads: numUploads,\n          complete: complete\n        });\n\n      case STATE_UPLOADING:\n        return (0, _preact.h)(_Components.ProgressBarUploading, {\n          i18n: i18n,\n          supportsUploadProgress: supportsUploadProgress,\n          totalProgress: totalProgress,\n          showProgressDetails: showProgressDetails,\n          isUploadStarted: isUploadStarted,\n          isAllComplete: isAllComplete,\n          isAllPaused: isAllPaused,\n          newFiles: newFiles,\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          startUpload: startUpload\n        });\n\n      default:\n        return null;\n    }\n  })(), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-actions\"\n  }, recoveredState || showUploadBtn ? (0, _preact.h)(_Components.UploadBtn, {\n    newFiles: newFiles,\n    isUploadStarted: isUploadStarted,\n    recoveredState: recoveredState,\n    i18n: i18n,\n    isSomeGhost: isSomeGhost,\n    startUpload: startUpload,\n    uploadState: uploadState\n  }) : null, showRetryBtn ? (0, _preact.h)(_Components.RetryBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showPauseResumeBtn ? (0, _preact.h)(_Components.PauseResumeButton, {\n    isAllPaused: isAllPaused,\n    i18n: i18n,\n    isAllComplete: isAllComplete,\n    resumableUploads: resumableUploads,\n    uppy: uppy\n  }) : null, showCancelBtn ? (0, _preact.h)(_Components.CancelBtn, {\n    i18n: i18n,\n    uppy: uppy\n  }) : null, showDoneBtn ? (0, _preact.h)(_Components.DoneBtn, {\n    i18n: i18n,\n    doneButtonHandler: doneButtonHandler\n  }) : null));\n}\n\nmodule.exports = StatusBar;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CancelBtn = CancelBtn;\nexports.DoneBtn = DoneBtn;\nexports.LoadingSpinner = LoadingSpinner;\nexports.PauseResumeButton = PauseResumeButton;\nexports.ProgressBarComplete = ProgressBarComplete;\nexports.ProgressBarError = ProgressBarError;\nexports.ProgressBarProcessing = ProgressBarProcessing;\nexports.ProgressBarUploading = ProgressBarUploading;\nexports.ProgressDetails = ProgressDetails;\nexports.RetryBtn = RetryBtn;\nexports.UploadBtn = UploadBtn;\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst throttle = require(\"lodash.throttle\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst prettyETA = require(\"@uppy/utils/lib/prettyETA\");\n\nconst statusBarStates = require(\"./StatusBarStates.js\");\n\nconst DOT = `\\u00B7`;\n\nconst renderDot = () => ` ${DOT} `;\n\nfunction UploadBtn(props) {\n  const {\n    newFiles,\n    isUploadStarted,\n    recoveredState,\n    i18n,\n    uploadState,\n    isSomeGhost,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n    'uppy-c-btn-primary': uploadState === statusBarStates.STATE_WAITING\n  }, {\n    'uppy-StatusBar-actionBtn--disabled': isSomeGhost\n  });\n  const uploadBtnText = newFiles && isUploadStarted && !recoveredState ? i18n('uploadXNewFiles', {\n    smart_count: newFiles\n  }) : i18n('uploadXFiles', {\n    smart_count: newFiles\n  });\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload,\n    disabled: isSomeGhost,\n    \"data-uppy-super-focusable\": true\n  }, uploadBtnText);\n}\n\nfunction RetryBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\n    \"aria-label\": i18n('retryUpload'),\n    onClick: () => uppy.retryAll(),\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"8\",\n    height: \"10\",\n    viewBox: \"0 0 8 10\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"\n  })), i18n('retry'));\n}\n\nfunction CancelBtn(props) {\n  const {\n    i18n,\n    uppy\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    title: i18n('cancel'),\n    \"aria-label\": i18n('cancel'),\n    onClick: () => uppy.cancelAll(),\n    \"data-cy\": \"cancel\",\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"\n  }))));\n}\n\nfunction PauseResumeButton(props) {\n  const {\n    isAllPaused,\n    i18n,\n    isAllComplete,\n    resumableUploads,\n    uppy\n  } = props;\n  const title = isAllPaused ? i18n('resume') : i18n('pause');\n\n  function togglePauseResume() {\n    if (isAllComplete) return null;\n\n    if (!resumableUploads) {\n      return uppy.cancelAll();\n    }\n\n    if (isAllPaused) {\n      return uppy.resumeAll();\n    }\n\n    return uppy.pauseAll();\n  }\n\n  return (0, _preact.h)(\"button\", {\n    title: title,\n    \"aria-label\": title,\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    type: \"button\",\n    onClick: togglePauseResume,\n    \"data-uppy-super-focusable\": true\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: isAllPaused ? 'M6 4.25L11.5 8 6 11.75z' : 'M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z'\n  }))));\n}\n\nfunction DoneBtn(props) {\n  const {\n    i18n,\n    doneButtonHandler\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",\n    onClick: doneButtonHandler,\n    \"data-uppy-super-focusable\": true\n  }, i18n('done'));\n}\n\nfunction LoadingSpinner() {\n  return (0, _preact.h)(\"svg\", {\n    className: \"uppy-StatusBar-spinner\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"14\",\n    height: \"14\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",\n    fillRule: \"evenodd\"\n  }));\n}\n\nfunction ProgressBarProcessing(props) {\n  const {\n    progress\n  } = props;\n  const {\n    value,\n    mode,\n    message\n  } = progress;\n  const roundedValue = Math.round(value * 100);\n  const dot = `\\u00B7`;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\"\n  }, (0, _preact.h)(LoadingSpinner, null), mode === 'determinate' ? `${roundedValue}% ${dot} ` : '', message);\n}\n\nfunction ProgressDetails(props) {\n  const {\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    i18n\n  } = props;\n  const ifShowFilesUploadedOfTotal = numUploads > 1;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, ifShowFilesUploadedOfTotal && i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }), (0, _preact.h)(\"span\", {\n    className: \"uppy-StatusBar-additionalInfo\"\n  }, ifShowFilesUploadedOfTotal && renderDot(), i18n('dataUploadedOfTotal', {\n    complete: prettierBytes(totalUploadedSize),\n    total: prettierBytes(totalSize)\n  }), renderDot(), i18n('xTimeLeft', {\n    time: prettyETA(totalETA)\n  })));\n}\n\nfunction FileUploadCount(props) {\n  const {\n    i18n,\n    complete,\n    numUploads\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, i18n('filesUploadedOfTotal', {\n    complete,\n    smart_count: numUploads\n  }));\n}\n\nfunction UploadNewlyAddedFiles(props) {\n  const {\n    i18n,\n    newFiles,\n    startUpload\n  } = props;\n  const uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusSecondaryHint\"\n  }, i18n('xMoreFilesAdded', {\n    smart_count: newFiles\n  })), (0, _preact.h)(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": i18n('uploadXFiles', {\n      smart_count: newFiles\n    }),\n    onClick: startUpload\n  }, i18n('upload')));\n}\n\nconst ThrottledProgressDetails = throttle(ProgressDetails, 500, {\n  leading: true,\n  trailing: true\n});\n\nfunction ProgressBarUploading(props) {\n  const {\n    i18n,\n    supportsUploadProgress,\n    totalProgress,\n    showProgressDetails,\n    isUploadStarted,\n    isAllComplete,\n    isAllPaused,\n    newFiles,\n    numUploads,\n    complete,\n    totalUploadedSize,\n    totalSize,\n    totalETA,\n    startUpload\n  } = props;\n  const showUploadNewlyAddedFiles = newFiles && isUploadStarted;\n\n  if (!isUploadStarted || isAllComplete) {\n    return null;\n  }\n\n  const title = isAllPaused ? i18n('paused') : i18n('uploading');\n\n  function renderProgressDetails() {\n    if (!isAllPaused && !showUploadNewlyAddedFiles && showProgressDetails) {\n      if (supportsUploadProgress) {\n        return (0, _preact.h)(ThrottledProgressDetails, {\n          numUploads: numUploads,\n          complete: complete,\n          totalUploadedSize: totalUploadedSize,\n          totalSize: totalSize,\n          totalETA: totalETA,\n          i18n: i18n\n        });\n      }\n\n      return (0, _preact.h)(FileUploadCount, {\n        i18n: i18n,\n        complete: complete,\n        numUploads: numUploads\n      });\n    }\n\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    \"aria-label\": title,\n    title: title\n  }, !isAllPaused ? (0, _preact.h)(LoadingSpinner, null) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, supportsUploadProgress ? `${title}: ${totalProgress}%` : title), renderProgressDetails(), showUploadNewlyAddedFiles ? (0, _preact.h)(UploadNewlyAddedFiles, {\n    i18n: i18n,\n    newFiles: newFiles,\n    startUpload: startUpload\n  }) : null));\n}\n\nfunction ProgressBarComplete(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    role: \"status\",\n    title: i18n('complete')\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"15\",\n    height: \"11\",\n    viewBox: \"0 0 15 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"\n  })), i18n('complete'))));\n}\n\nfunction ProgressBarError(props) {\n  const {\n    error,\n    i18n,\n    complete,\n    numUploads\n  } = props;\n\n  function displayErrorAlert() {\n    const errorMessage = `${i18n('uploadFailed')} \\n\\n ${error}`; // eslint-disable-next-line no-alert\n\n    alert(errorMessage); // TODO: move to custom alert implementation\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    title: i18n('uploadFailed')\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"11\",\n    height: \"11\",\n    viewBox: \"0 0 11 11\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, i18n('uploadFailed'), (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-StatusBar-details\",\n    \"aria-label\": i18n('showErrorDetails'),\n    \"data-microtip-position\": \"top-right\",\n    \"data-microtip-size\": \"medium\",\n    onClick: displayErrorAlert,\n    type: \"button\"\n  }, \"?\")), (0, _preact.h)(FileUploadCount, {\n    i18n: i18n,\n    complete: complete,\n    numUploads: numUploads\n  })));\n}","\"use strict\";\n\nconst secondsToTime = require(\"./secondsToTime.js\");\n\nfunction prettyETA(seconds) {\n  const time = secondsToTime(seconds); // Only display hours and minutes if they are greater than 0 but always\n  // display minutes if hours is being displayed\n  // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n\n  const hoursStr = time.hours === 0 ? '' : `${time.hours}h`;\n  const minutesStr = time.minutes === 0 ? '' : `${time.hours === 0 ? time.minutes : ` ${time.minutes.toString(10).padStart(2, '0')}`}m`;\n  const secondsStr = time.hours !== 0 ? '' : `${time.minutes === 0 ? time.seconds : ` ${time.seconds.toString(10).padStart(2, '0')}`}s`;\n  return `${hoursStr}${minutesStr}${secondsStr}`;\n}\n\nmodule.exports = prettyETA;","\"use strict\";\n\nfunction secondsToTime(rawSeconds) {\n  const hours = Math.floor(rawSeconds / 3600) % 24;\n  const minutes = Math.floor(rawSeconds / 60) % 60;\n  const seconds = Math.floor(rawSeconds % 60);\n  return {\n    hours,\n    minutes,\n    seconds\n  };\n}\n\nmodule.exports = secondsToTime;","\"use strict\";\n\nfunction calculateProcessingProgress(files) {\n  const values = [];\n  let mode;\n  let message;\n\n  for (const {\n    progress\n  } of Object.values(files)) {\n    const {\n      preprocess,\n      postprocess\n    } = progress; // In the future we should probably do this differently. For now we'll take the\n    // mode and message from the first file…\n\n    if (message == null && (preprocess || postprocess)) {\n      ({\n        mode,\n        message\n      } = preprocess || postprocess);\n    }\n\n    if ((preprocess == null ? void 0 : preprocess.mode) === 'determinate') values.push(preprocess.value);\n    if ((postprocess == null ? void 0 : postprocess.mode) === 'determinate') values.push(postprocess.value);\n  }\n\n  const value = values.reduce((total, progressValue) => {\n    return total + progressValue / values.length;\n  }, 0);\n  return {\n    mode,\n    message,\n    value\n  };\n}\n\nmodule.exports = calculateProcessingProgress;","\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // Shown in the status bar while files are being uploaded.\n    uploading: 'Uploading',\n    // Shown in the status bar once all files have been uploaded.\n    complete: 'Complete',\n    // Shown in the status bar if an upload failed.\n    uploadFailed: 'Upload failed',\n    // Shown in the status bar while the upload is paused.\n    paused: 'Paused',\n    // Used as the label for the button that retries an upload.\n    retry: 'Retry',\n    // Used as the label for the button that cancels an upload.\n    cancel: 'Cancel',\n    // Used as the label for the button that pauses an upload.\n    pause: 'Pause',\n    // Used as the label for the button that resumes an upload.\n    resume: 'Resume',\n    // Used as the label for the button that resets the upload state after an upload\n    done: 'Done',\n    // When `showProgressDetails` is set, shows the number of files that have been fully uploaded so far.\n    filesUploadedOfTotal: {\n      0: '%{complete} of %{smart_count} file uploaded',\n      1: '%{complete} of %{smart_count} files uploaded'\n    },\n    // When `showProgressDetails` is set, shows the amount of bytes that have been uploaded so far.\n    dataUploadedOfTotal: '%{complete} of %{total}',\n    // When `showProgressDetails` is set, shows an estimation of how long the upload will take to complete.\n    xTimeLeft: '%{time} left',\n    // Used as the label for the button that starts an upload.\n    uploadXFiles: {\n      0: 'Upload %{smart_count} file',\n      1: 'Upload %{smart_count} files'\n    },\n    // Used as the label for the button that starts an upload, if another upload has been started in the past\n    // and new files were added later.\n    uploadXNewFiles: {\n      0: 'Upload +%{smart_count} file',\n      1: 'Upload +%{smart_count} files'\n    },\n    upload: 'Upload',\n    retryUpload: 'Retry upload',\n    xMoreFilesAdded: {\n      0: '%{smart_count} more file added',\n      1: '%{smart_count} more files added'\n    },\n    showErrorDetails: 'Show error details'\n  }\n};","\"use strict\";\n\nmodule.exports = require(\"./Informer.js\");","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\n/* eslint-disable jsx-a11y/no-noninteractive-element-interactions  */\n\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nconst FadeIn = require(\"./FadeIn.js\");\n\nconst TransitionGroup = require(\"./TransitionGroup.js\");\n\nconst packageJson = {\n  \"version\": \"2.1.1\"\n};\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\n\nclass Informer extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.render = state => {\n      return (0, _preact.h)(\"div\", {\n        className: \"uppy uppy-Informer\"\n      }, (0, _preact.h)(TransitionGroup, null, state.info.map(info => (0, _preact.h)(FadeIn, {\n        key: info.message\n      }, (0, _preact.h)(\"p\", {\n        role: \"alert\"\n      }, info.message, ' ', info.details && (0, _preact.h)(\"span\", {\n        \"aria-label\": info.details,\n        \"data-microtip-position\": \"top-left\",\n        \"data-microtip-size\": \"medium\",\n        role: \"tooltip\" // eslint-disable-next-line no-alert\n        ,\n        onClick: () => alert(`${info.message} \\n\\n ${info.details}`)\n      }, \"?\"))))));\n    };\n\n    this.type = 'progressindicator';\n    this.id = this.opts.id || 'Informer';\n    this.title = 'Informer'; // set default options\n\n    const defaultOptions = {}; // merge default options with the ones set by user\n\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n}\n\nInformer.VERSION = packageJson.version;\nmodule.exports = Informer;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst TRANSITION_MS = 300;\n\nclass FadeIn extends _preact.Component {\n  constructor() {\n    super(...arguments);\n    this.ref = (0, _preact.createRef)();\n  }\n\n  componentWillEnter(callback) {\n    this.ref.current.style.opacity = '1';\n    this.ref.current.style.transform = 'none';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  componentWillLeave(callback) {\n    this.ref.current.style.opacity = '0';\n    this.ref.current.style.transform = 'translateY(350%)';\n    setTimeout(callback, TRANSITION_MS);\n  }\n\n  render() {\n    const {\n      children\n    } = this.props;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Informer-animated\",\n      ref: this.ref\n    }, children);\n  }\n\n}\n\nmodule.exports = FadeIn;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\n/* eslint-disable */\n\n/**\n * @source https://github.com/developit/preact-transition-group\n */\nfunction assign(obj, props) {\n  return Object.assign(obj, props);\n}\n\nfunction getKey(vnode, fallback) {\n  var _vnode$key;\n\n  return (_vnode$key = vnode == null ? void 0 : vnode.key) != null ? _vnode$key : fallback;\n}\n\nfunction linkRef(component, name) {\n  const cache = component._ptgLinkedRefs || (component._ptgLinkedRefs = {});\n  return cache[name] || (cache[name] = c => {\n    component.refs[name] = c;\n  });\n}\n\nfunction getChildMapping(children) {\n  const out = {};\n\n  for (let i = 0; i < children.length; i++) {\n    if (children[i] != null) {\n      const key = getKey(children[i], i.toString(36));\n      out[key] = children[i];\n    }\n  }\n\n  return out;\n}\n\nfunction mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  const getValueForKey = key => next.hasOwnProperty(key) ? next[key] : prev[key]; // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  const nextKeysPending = {};\n  let pendingKeys = [];\n\n  for (const prevKey in prev) {\n    if (next.hasOwnProperty(prevKey)) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  const childMapping = {};\n\n  for (const nextKey in next) {\n    if (nextKeysPending.hasOwnProperty(nextKey)) {\n      for (let i = 0; i < nextKeysPending[nextKey].length; i++) {\n        const pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (let i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nconst identity = i => i;\n\nclass TransitionGroup extends _preact.Component {\n  constructor(props, context) {\n    super(props, context);\n    this.refs = {};\n    this.state = {\n      children: getChildMapping((0, _preact.toChildArray)((0, _preact.toChildArray)(this.props.children)) || [])\n    };\n    this.performAppear = this.performAppear.bind(this);\n    this.performEnter = this.performEnter.bind(this);\n    this.performLeave = this.performLeave.bind(this);\n  }\n\n  componentWillMount() {\n    this.currentlyTransitioningKeys = {};\n    this.keysToAbortLeave = [];\n    this.keysToEnter = [];\n    this.keysToLeave = [];\n  }\n\n  componentDidMount() {\n    const initialChildMapping = this.state.children;\n\n    for (const key in initialChildMapping) {\n      if (initialChildMapping[key]) {\n        // this.performAppear(getKey(initialChildMapping[key], key));\n        this.performAppear(key);\n      }\n    }\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const nextChildMapping = getChildMapping((0, _preact.toChildArray)(nextProps.children) || []);\n    const prevChildMapping = this.state.children;\n    this.setState(prevState => ({\n      children: mergeChildMappings(prevState.children, nextChildMapping)\n    }));\n    let key;\n\n    for (key in nextChildMapping) {\n      if (nextChildMapping.hasOwnProperty(key)) {\n        const hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key); // We should re-enter the component and abort its leave function\n\n        if (nextChildMapping[key] && hasPrev && this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n          this.keysToAbortLeave.push(key);\n        } else if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n          this.keysToEnter.push(key);\n        }\n      }\n    }\n\n    for (key in prevChildMapping) {\n      if (prevChildMapping.hasOwnProperty(key)) {\n        const hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(key);\n\n        if (prevChildMapping[key] && !hasNext && !this.currentlyTransitioningKeys[key]) {\n          this.keysToLeave.push(key);\n        }\n      }\n    }\n  }\n\n  componentDidUpdate() {\n    const {\n      keysToEnter\n    } = this;\n    this.keysToEnter = [];\n    keysToEnter.forEach(this.performEnter);\n    const {\n      keysToLeave\n    } = this;\n    this.keysToLeave = [];\n    keysToLeave.forEach(this.performLeave);\n  }\n\n  _finishAbort(key) {\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      this.keysToAbortLeave.splice(idx, 1);\n    }\n  }\n\n  performAppear(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillAppear) {\n      component.componentWillAppear(this._handleDoneAppearing.bind(this, key));\n    } else {\n      this._handleDoneAppearing(key);\n    }\n  }\n\n  _handleDoneAppearing(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidAppear) {\n      component.componentDidAppear();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully appeared. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performEnter(key) {\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillEnter) {\n      component.componentWillEnter(this._handleDoneEntering.bind(this, key));\n    } else {\n      this._handleDoneEntering(key);\n    }\n  }\n\n  _handleDoneEntering(key) {\n    const component = this.refs[key];\n\n    if (component.componentDidEnter) {\n      component.componentDidEnter();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n\n    this._finishAbort(key);\n\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n      // This was removed before it had fully entered. Remove it.\n      this.performLeave(key);\n    }\n  }\n\n  performLeave(key) {\n    // If we should immediately abort this leave function,\n    // don't run the leave transition at all.\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    this.currentlyTransitioningKeys[key] = true;\n    const component = this.refs[key];\n\n    if (component.componentWillLeave) {\n      component.componentWillLeave(this._handleDoneLeaving.bind(this, key));\n    } else {\n      // Note that this is somewhat dangerous b/c it calls setState()\n      // again, effectively mutating the component before all the work\n      // is done.\n      this._handleDoneLeaving(key);\n    }\n  }\n\n  _handleDoneLeaving(key) {\n    // If we should immediately abort the leave,\n    // then skip this altogether\n    const idx = this.keysToAbortLeave.indexOf(key);\n\n    if (idx !== -1) {\n      return;\n    }\n\n    const component = this.refs[key];\n\n    if (component.componentDidLeave) {\n      component.componentDidLeave();\n    }\n\n    delete this.currentlyTransitioningKeys[key];\n    const currentChildMapping = getChildMapping((0, _preact.toChildArray)(this.props.children) || []);\n\n    if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n      // This entered again before it fully left. Add it again.\n      this.performEnter(key);\n    } else {\n      const children = assign({}, this.state.children);\n      delete children[key];\n      this.setState({\n        children\n      });\n    }\n  }\n\n  render(_ref, _ref2) {\n    let {\n      childFactory,\n      transitionLeave,\n      transitionName,\n      transitionAppear,\n      transitionEnter,\n      transitionLeaveTimeout,\n      transitionEnterTimeout,\n      transitionAppearTimeout,\n      component,\n      ...props\n    } = _ref;\n    let {\n      children\n    } = _ref2;\n    // TODO: we could get rid of the need for the wrapper node\n    // by cloning a single child\n    const childrenToRender = [];\n\n    for (const key in children) {\n      if (children.hasOwnProperty(key)) {\n        const child = children[key];\n\n        if (child) {\n          const ref = linkRef(this, key),\n                el = (0, _preact.cloneElement)(childFactory(child), {\n            ref,\n            key\n          });\n          childrenToRender.push(el);\n        }\n      }\n    }\n\n    return (0, _preact.h)(component, props, childrenToRender);\n  }\n\n}\n\nTransitionGroup.defaultProps = {\n  component: 'span',\n  childFactory: identity\n};\nmodule.exports = TransitionGroup;","\"use strict\";\n\nvar _core = require(\"@uppy/core\");\n\nvar _miniUmd = require(\"exifr/dist/mini.umd.js\");\n\nconst dataURItoBlob = require(\"@uppy/utils/lib/dataURItoBlob\");\n\nconst isObjectURL = require(\"@uppy/utils/lib/isObjectURL\");\n\nconst isPreviewSupported = require(\"@uppy/utils/lib/isPreviewSupported\");\n\nconst locale = require(\"./locale.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.2\"\n};\n/**\n * Save a <canvas> element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise}\n */\n\nfunction canvasToBlob(canvas, type, quality) {\n  try {\n    canvas.getContext('2d').getImageData(0, 0, 1, 1);\n  } catch (err) {\n    if (err.code === 18) {\n      return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n    }\n  }\n\n  if (canvas.toBlob) {\n    return new Promise(resolve => {\n      canvas.toBlob(resolve, type, quality);\n    }).then(blob => {\n      if (blob === null) {\n        throw new Error('cannot read image, probably an svg with external resources');\n      }\n\n      return blob;\n    });\n  }\n\n  return Promise.resolve().then(() => {\n    return dataURItoBlob(canvas.toDataURL(type, quality), {});\n  }).then(blob => {\n    if (blob === null) {\n      throw new Error('could not extract blob, probably an old browser');\n    }\n\n    return blob;\n  });\n}\n\nfunction rotateImage(image, translate) {\n  let w = image.width;\n  let h = image.height;\n\n  if (translate.deg === 90 || translate.deg === 270) {\n    w = image.height;\n    h = image.width;\n  }\n\n  const canvas = document.createElement('canvas');\n  canvas.width = w;\n  canvas.height = h;\n  const context = canvas.getContext('2d');\n  context.translate(w / 2, h / 2);\n\n  if (translate.canvas) {\n    context.rotate(translate.rad);\n    context.scale(translate.scaleX, translate.scaleY);\n  }\n\n  context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n  return canvas;\n}\n/**\n * Make sure the image doesn’t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\n\n\nfunction protect(image) {\n  // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n  const ratio = image.width / image.height;\n  const maxSquare = 5000000; // ios max canvas square\n\n  const maxSize = 4096; // ie max canvas dimensions\n\n  let maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n  let maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n\n  if (maxW > maxSize) {\n    maxW = maxSize;\n    maxH = Math.round(maxW / ratio);\n  }\n\n  if (maxH > maxSize) {\n    maxH = maxSize;\n    maxW = Math.round(ratio * maxH);\n  }\n\n  if (image.width > maxW) {\n    const canvas = document.createElement('canvas');\n    canvas.width = maxW;\n    canvas.height = maxH;\n    canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n    return canvas;\n  }\n\n  return image;\n}\n/**\n * The Thumbnail Generator plugin\n */\n\n\nclass ThumbnailGenerator extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n\n    this.onFileAdded = file => {\n      if (!file.preview && file.data && isPreviewSupported(file.type) && !file.isRemote) {\n        this.addToQueue(file.id);\n      }\n    };\n\n    this.onCancelRequest = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      }\n    };\n\n    this.onFileRemoved = file => {\n      const index = this.queue.indexOf(file.id);\n\n      if (index !== -1) {\n        this.queue.splice(index, 1);\n      } // Clean up object URLs.\n\n\n      if (file.preview && isObjectURL(file.preview)) {\n        URL.revokeObjectURL(file.preview);\n      }\n    };\n\n    this.onRestored = () => {\n      const restoredFiles = this.uppy.getFiles().filter(file => file.isRestored);\n      restoredFiles.forEach(file => {\n        // Only add blob URLs; they are likely invalid after being restored.\n        if (!file.preview || isObjectURL(file.preview)) {\n          this.addToQueue(file.id);\n        }\n      });\n    };\n\n    this.onAllFilesRemoved = () => {\n      this.queue = [];\n    };\n\n    this.waitUntilAllProcessed = fileIDs => {\n      fileIDs.forEach(fileID => {\n        const file = this.uppy.getFile(fileID);\n        this.uppy.emit('preprocess-progress', file, {\n          mode: 'indeterminate',\n          message: this.i18n('generatingThumbnails')\n        });\n      });\n\n      const emitPreprocessCompleteForAll = () => {\n        fileIDs.forEach(fileID => {\n          const file = this.uppy.getFile(fileID);\n          this.uppy.emit('preprocess-complete', file);\n        });\n      };\n\n      return new Promise(resolve => {\n        if (this.queueProcessing) {\n          this.uppy.once('thumbnail:all-generated', () => {\n            emitPreprocessCompleteForAll();\n            resolve();\n          });\n        } else {\n          emitPreprocessCompleteForAll();\n          resolve();\n        }\n      });\n    };\n\n    this.type = 'modifier';\n    this.id = this.opts.id || 'ThumbnailGenerator';\n    this.title = 'Thumbnail Generator';\n    this.queue = [];\n    this.queueProcessing = false;\n    this.defaultThumbnailDimension = 200;\n    this.thumbnailType = this.opts.thumbnailType || 'image/jpeg';\n    this.defaultLocale = locale;\n    const defaultOptions = {\n      thumbnailWidth: null,\n      thumbnailHeight: null,\n      waitForThumbnailsBeforeUpload: false,\n      lazy: false\n    };\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n\n    if (this.opts.lazy && this.opts.waitForThumbnailsBeforeUpload) {\n      throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n    }\n  }\n  /**\n   * Create a thumbnail for the given Uppy file object.\n   *\n   * @param {{data: Blob}} file\n   * @param {number} targetWidth\n   * @param {number} targetHeight\n   * @returns {Promise}\n   */\n\n\n  createThumbnail(file, targetWidth, targetHeight) {\n    const originalUrl = URL.createObjectURL(file.data);\n    const onload = new Promise((resolve, reject) => {\n      const image = new Image();\n      image.src = originalUrl;\n      image.addEventListener('load', () => {\n        URL.revokeObjectURL(originalUrl);\n        resolve(image);\n      });\n      image.addEventListener('error', event => {\n        URL.revokeObjectURL(originalUrl);\n        reject(event.error || new Error('Could not create thumbnail'));\n      });\n    });\n    const orientationPromise = (0, _miniUmd.rotation)(file.data).catch(() => 1);\n    return Promise.all([onload, orientationPromise]).then(_ref => {\n      let [image, orientation] = _ref;\n      const dimensions = this.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n      const rotatedImage = this.rotateImage(image, orientation);\n      const resizedImage = this.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n      return this.canvasToBlob(resizedImage, this.thumbnailType, 80);\n    }).then(blob => {\n      return URL.createObjectURL(blob);\n    });\n  }\n  /**\n   * Get the new calculated dimensions for the given image and a target width\n   * or height. If both width and height are given, only width is taken into\n   * account. If neither width nor height are given, the default dimension\n   * is used.\n   */\n\n\n  getProportionalDimensions(img, width, height, rotation) {\n    // eslint-disable-line no-shadow\n    let aspect = img.width / img.height;\n\n    if (rotation === 90 || rotation === 270) {\n      aspect = img.height / img.width;\n    }\n\n    if (width != null) {\n      return {\n        width,\n        height: Math.round(width / aspect)\n      };\n    }\n\n    if (height != null) {\n      return {\n        width: Math.round(height * aspect),\n        height\n      };\n    }\n\n    return {\n      width: this.defaultThumbnailDimension,\n      height: Math.round(this.defaultThumbnailDimension / aspect)\n    };\n  }\n  /**\n   * Resize an image to the target `width` and `height`.\n   *\n   * Returns a Canvas with the resized image on it.\n   */\n\n\n  resizeImage(image, targetWidth, targetHeight) {\n    // Resizing in steps refactored to use a solution from\n    // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n    let img = this.protect(image);\n    let steps = Math.ceil(Math.log2(img.width / targetWidth));\n\n    if (steps < 1) {\n      steps = 1;\n    }\n\n    let sW = targetWidth * 2 ** (steps - 1);\n    let sH = targetHeight * 2 ** (steps - 1);\n    const x = 2;\n\n    while (steps--) {\n      const canvas = document.createElement('canvas');\n      canvas.width = sW;\n      canvas.height = sH;\n      canvas.getContext('2d').drawImage(img, 0, 0, sW, sH);\n      img = canvas;\n      sW = Math.round(sW / x);\n      sH = Math.round(sH / x);\n    }\n\n    return img;\n  }\n  /**\n   * Set the preview URL for a file.\n   */\n\n\n  setPreviewURL(fileID, preview) {\n    this.uppy.setFileState(fileID, {\n      preview\n    });\n  }\n\n  addToQueue(item) {\n    this.queue.push(item);\n\n    if (this.queueProcessing === false) {\n      this.processQueue();\n    }\n  }\n\n  processQueue() {\n    this.queueProcessing = true;\n\n    if (this.queue.length > 0) {\n      const current = this.uppy.getFile(this.queue.shift());\n\n      if (!current) {\n        this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n        return Promise.resolve();\n      }\n\n      return this.requestThumbnail(current).catch(() => {}) // eslint-disable-line node/handle-callback-err\n      .then(() => this.processQueue());\n    }\n\n    this.queueProcessing = false;\n    this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n    this.uppy.emit('thumbnail:all-generated');\n    return Promise.resolve();\n  }\n\n  requestThumbnail(file) {\n    if (isPreviewSupported(file.type) && !file.isRemote) {\n      return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(preview => {\n        this.setPreviewURL(file.id, preview);\n        this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${file.id}`);\n        this.uppy.emit('thumbnail:generated', this.uppy.getFile(file.id), preview);\n      }).catch(err => {\n        this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${file.id}:`, 'warning');\n        this.uppy.log(err, 'warning');\n        this.uppy.emit('thumbnail:error', this.uppy.getFile(file.id), err);\n      });\n    }\n\n    return Promise.resolve();\n  }\n\n  install() {\n    this.uppy.on('file-removed', this.onFileRemoved);\n    this.uppy.on('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.on('thumbnail:request', this.onFileAdded);\n      this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.on('file-added', this.onFileAdded);\n      this.uppy.on('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n  uninstall() {\n    this.uppy.off('file-removed', this.onFileRemoved);\n    this.uppy.off('cancel-all', this.onAllFilesRemoved);\n\n    if (this.opts.lazy) {\n      this.uppy.off('thumbnail:request', this.onFileAdded);\n      this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.off('file-added', this.onFileAdded);\n      this.uppy.off('restored', this.onRestored);\n    }\n\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n    }\n  }\n\n}\n\nThumbnailGenerator.VERSION = packageJson.version;\nmodule.exports = ThumbnailGenerator; // TODO: remove these methods from the prototype in the next major.\n\nThumbnailGenerator.prototype.canvasToBlob = canvasToBlob;\nThumbnailGenerator.prototype.protect = protect;\nThumbnailGenerator.prototype.rotateImage = rotateImage;","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define(\"exifr\",[\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).exifr={})}(this,(function(e){\"use strict\";function t(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var s=\"undefined\"!=typeof self?self:global;const i=\"undefined\"!=typeof navigator,n=i&&\"undefined\"==typeof HTMLImageElement,r=!(\"undefined\"==typeof global||\"undefined\"==typeof process||!process.versions||!process.versions.node),a=s.Buffer,h=!!a,f=e=>void 0!==e;function l(e){return void 0===e||(e instanceof Map?0===e.size:0===Object.values(e).filter(f).length)}function o(e){let t=new Error(e);throw delete t.stack,t}function u(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}const d=e=>String.fromCharCode.apply(null,e),c=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\"):void 0;class p{static from(e,t){return e instanceof this&&e.le===t?e:new p(e,void 0,void 0,t)}constructor(e,t=0,s,i){if(\"boolean\"==typeof i&&(this.le=i),Array.isArray(e)&&(e=new Uint8Array(e)),0===e)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){void 0===s&&(s=e.byteLength-t);let i=new DataView(e,t,s);this._swapDataView(i)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof p){void 0===s&&(s=e.byteLength-t),(t+=e.byteOffset)+s>e.byteOffset+e.byteLength&&o(\"Creating view outside of available memory in ArrayBuffer\");let i=new DataView(e.buffer,t,s);this._swapDataView(i)}else if(\"number\"==typeof e){let t=new DataView(new ArrayBuffer(e));this._swapDataView(t)}else o(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,s=p){return e instanceof DataView||e instanceof p?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||o(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new s(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new p(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return i=s,c?c.decode(i):h?Buffer.from(i).toString(\"utf8\"):decodeURIComponent(escape(d(i)));var i}getLatin1String(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return d(s)}getUnicodeString(e=0,t=this.byteLength){const s=[];for(let i=0;i<t&&e+i<this.byteLength;i+=2)s.push(this.getUint16(e+i));return d(s)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,s){switch(t){case 1:return this.getUint8(e,s);case 2:return this.getUint16(e,s);case 4:return this.getUint32(e,s);case 8:return this.getUint64&&this.getUint64(e,s)}}getUint(e,t,s){switch(t){case 8:return this.getUint8(e,s);case 16:return this.getUint16(e,s);case 32:return this.getUint32(e,s);case 64:return this.getUint64&&this.getUint64(e,s)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}}function g(e,t){o(`${e} '${t}' was not loaded, try using full build of exifr.`)}class m extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||g(this.kind,e),t&&(e in t||function(e,t){o(`Unknown ${e} '${t}'.`)}(this.kind,e),t[e].enabled||g(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}}var y=new m(\"file parser\"),b=new m(\"segment parser\"),w=new m(\"file reader\");let k=s.fetch;const O=\"Invalid input argument\";function v(e,t){return(s=e).startsWith(\"data:\")||s.length>1e4?A(e,t,\"base64\"):r&&e.includes(\"://\")?S(e,t,\"url\",U):r?A(e,t,\"fs\"):i?S(e,t,\"url\",U):void o(O);var s}async function S(e,t,s,i){return w.has(s)?A(e,t,s):i?async function(e,t){let s=await t(e);return new p(s)}(e,i):void o(`Parser ${s} is not loaded`)}async function A(e,t,s){let i=new(w.get(s))(e,t);return await i.read(),i}const U=e=>k(e).then((e=>e.arrayBuffer())),x=e=>new Promise(((t,s)=>{let i=new FileReader;i.onloadend=()=>t(i.result||new ArrayBuffer),i.onerror=s,i.readAsArrayBuffer(e)}));class C extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}}function B(e,t,s){let i=new C;for(let[e,t]of s)i.set(e,t);if(Array.isArray(t))for(let s of t)e.set(s,i);else e.set(t,i);return i}function V(e,t,s){let i,n=e.get(t);for(i of s)n.set(i[0],i[1])}const I=new Map,L=new Map,T=new Map,P=37500,z=37510,F=33723,j=34675,E=34665,_=34853,D=40965,M=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],N=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],R=[\"tiff\",...N],$=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],K=[...R,...$],W=[\"makerNote\",\"userComment\"],X=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],H=[...X,\"sanitize\",\"mergeOutput\",\"silentErrors\"];class Y{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}}class G extends Y{get needed(){return this.enabled||this.deps.size>0}constructor(e,s,i,n){if(super(),t(this,\"enabled\",!1),t(this,\"skip\",new Set),t(this,\"pick\",new Set),t(this,\"deps\",new Set),t(this,\"translateKeys\",!1),t(this,\"translateValues\",!1),t(this,\"reviveValues\",!1),this.key=e,this.enabled=s,this.parse=this.enabled,this.applyInheritables(n),this.canBeFiltered=$.includes(e),this.canBeFiltered&&(this.dict=I.get(e)),void 0!==i)if(Array.isArray(i))this.parse=this.enabled=!0,this.canBeFiltered&&i.length>0&&this.translateTagSet(i,this.pick);else if(\"object\"==typeof i){if(this.enabled=!0,this.parse=!1!==i.parse,this.canBeFiltered){let{pick:e,skip:t}=i;e&&e.length>0&&this.translateTagSet(e,this.pick),t&&t.length>0&&this.translateTagSet(t,this.skip)}this.applyInheritables(i)}else!0===i||!1===i?this.parse=this.enabled=i:o(`Invalid options argument: ${i}`)}applyInheritables(e){let t,s;for(t of X)s=e[t],void 0!==s&&(this[t]=s)}translateTagSet(e,t){if(this.dict){let s,i,{tagKeys:n,tagValues:r}=this.dict;for(s of e)\"string\"==typeof s?(i=r.indexOf(s),-1===i&&(i=n.indexOf(Number(s))),-1!==i&&t.add(Number(n[i]))):t.add(s)}else for(let s of e)t.add(s)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,te(this.pick,this.deps)):this.enabled&&this.pick.size>0&&te(this.pick,this.deps)}}var J={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},q=new Map;class Q extends Y{static useCached(e){let t=q.get(e);return void 0!==t||(t=new this(e),q.set(e,t)),t}constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):\"object\"==typeof e?this.setupFromObject(e):o(`Invalid options argument ${e}`),void 0===this.firstChunkSize&&(this.firstChunkSize=i?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=J[e];for(e of K)this[e]=new G(e,J[e],void 0,this)}setupFromTrue(){let e;for(e of M)this[e]=J[e];for(e of H)this[e]=J[e];for(e of W)this[e]=!0;for(e of K)this[e]=new G(e,!0,void 0,this)}setupFromArray(e){let t;for(t of M)this[t]=J[t];for(t of H)this[t]=J[t];for(t of W)this[t]=J[t];for(t of K)this[t]=new G(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,$)}setupFromObject(e){let t;for(t of($.ifd0=$.ifd0||$.image,$.ifd1=$.ifd1||$.thumbnail,Object.assign(this,e),M))this[t]=ee(e[t],J[t]);for(t of H)this[t]=ee(e[t],J[t]);for(t of W)this[t]=ee(e[t],J[t]);for(t of R)this[t]=new G(t,J[t],e[t],this);for(t of $)this[t]=new G(t,J[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,$,K),!0===e.tiff?this.batchEnableWithBool($,!0):!1===e.tiff?this.batchEnableWithUserValue($,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,$):\"object\"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,$)}batchEnableWithBool(e,t){for(let s of e)this[s].enabled=t}batchEnableWithUserValue(e,t){for(let s of e){let e=t[s];this[s].enabled=!1!==e&&void 0!==e}}setupGlobalFilters(e,t,s,i=s){if(e&&e.length){for(let e of i)this[e].enabled=!1;let t=Z(e,s);for(let[e,s]of t)te(this[e].pick,s),this[e].enabled=!0}else if(t&&t.length){let e=Z(t,s);for(let[t,s]of e)te(this[t].skip,s)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:s,iptc:i,icc:n}=this;this.makerNote?t.deps.add(P):t.skip.add(P),this.userComment?t.deps.add(z):t.skip.add(z),s.enabled||e.skip.add(700),i.enabled||e.skip.add(F),n.enabled||e.skip.add(j)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:s,interop:i}=this;i.needed&&(t.deps.add(D),e.deps.add(D)),t.needed&&e.deps.add(E),s.needed&&e.deps.add(_),this.tiff.enabled=$.some((e=>!0===this[e].enabled))||this.makerNote||this.userComment;for(let e of $)this[e].finalizeFilters()}get onlyTiff(){return!N.map((e=>this[e].enabled)).some((e=>!0===e))&&this.tiff.enabled}checkLoadedPlugins(){for(let e of R)this[e].enabled&&!b.has(e)&&g(\"segment parser\",e)}}function Z(e,t){let s,i,n,r,a=[];for(n of t){for(r of(s=I.get(n),i=[],s))(e.includes(r[0])||e.includes(r[1]))&&i.push(r[0]);i.length&&a.push([n,i])}return a}function ee(e,t){return void 0!==e?e:void 0!==t?t:void 0}function te(e,t){for(let s of t)e.add(s)}t(Q,\"default\",J);class se{constructor(e){t(this,\"parsers\",{}),t(this,\"output\",{}),t(this,\"errors\",[]),t(this,\"pushToErrors\",(e=>this.errors.push(e))),this.options=Q.useCached(e)}async read(e){this.file=await function(e,t){return\"string\"==typeof e?v(e,t):i&&!n&&e instanceof HTMLImageElement?v(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new p(e):i&&e instanceof Blob?S(e,t,\"blob\",x):void o(O)}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[s,i]of y)if(i.canHandle(e,t))return this.fileParser=new i(this.options,this.file,this.parsers),e[s]=!0;this.file.close&&this.file.close(),o(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),l(s=e)?void 0:s;var s}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map((async t=>{let s=await t.parse();t.assignToOutput(e,s)}));this.options.silentErrors&&(t=t.map((e=>e.catch(this.pushToErrors)))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,s=b.get(\"tiff\",e);var i;if(t.tiff?i={start:0,type:\"tiff\"}:t.jpeg&&(i=await this.fileParser.getOrFindSegment(\"tiff\")),void 0===i)return;let n=await this.fileParser.ensureSegmentChunk(i),r=this.parsers.tiff=new s(n,e,t),a=await r.extractThumbnail();return t.close&&t.close(),a}}async function ie(e,t){let s=new se(t);return await s.read(e),s.parse()}var ne=Object.freeze({__proto__:null,parse:ie,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q});class re{static findPosition(e,t){let s=e.getUint16(t+2)+2,i=\"function\"==typeof this.headerLength?this.headerLength(e,t,s):this.headerLength,n=t+i,r=s-i;return{offset:t,length:s,headerLength:i,start:n,size:r,end:n+r}}static parse(e,t={}){return new this(e,new Q({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof p?e:new p(e)}constructor(e,s={},i){t(this,\"errors\",[]),t(this,\"raw\",new Map),t(this,\"handleError\",(e=>{if(!this.options.silentErrors)throw e;this.errors.push(e.message)})),this.chunk=this.normalizeInput(e),this.file=i,this.type=this.constructor.type,this.globalOptions=this.options=s,this.localOptions=s[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let s=T.get(t),i=L.get(t),n=I.get(t),r=this.options[t],a=r.reviveValues&&!!s,h=r.translateValues&&!!i,f=r.translateKeys&&!!n,l={};for(let[t,r]of e)a&&s.has(t)?r=s.get(t)(r):h&&i.has(t)&&(r=this.translateValue(r,i.get(t))),f&&n.has(t)&&(t=n.get(t)||t),l[t]=r;return l}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,s){if(this.globalOptions.mergeOutput)return Object.assign(e,s);e[t]?Object.assign(e[t],s):e[t]=s}}t(re,\"headerLength\",4),t(re,\"type\",void 0),t(re,\"multiSegment\",!1),t(re,\"canHandle\",(()=>!1));function ae(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function he(e){return e>=224&&e<=239}function fe(e,t,s){for(let[i,n]of b)if(n.canHandle(e,t,s))return i}class le extends class{constructor(e,s,i){t(this,\"errors\",[]),t(this,\"ensureSegmentChunk\",(async e=>{let t=e.start,s=e.size||65536;if(this.file.chunked)if(this.file.available(t,s))e.chunk=this.file.subarray(t,s);else try{e.chunk=await this.file.readChunk(t,s)}catch(t){o(`Couldn't read segment: ${JSON.stringify(e)}. ${t.message}`)}else this.file.byteLength>t+s?e.chunk=this.file.subarray(t,s):void 0===e.size?e.chunk=this.file.subarray(t):o(\"Segment unreachable: \"+JSON.stringify(e));return e.chunk})),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=s,this.parsers=i}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let s=new(b.get(e))(t,this.options,this.file);return this.parsers[e]=s}createParsers(e){for(let t of e){let{type:e,chunk:s}=t,i=this.options[e];if(i&&i.enabled){let t=this.parsers[e];t&&t.append||t||this.createParser(e,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),t(this,\"appSegments\",[]),t(this,\"jpegSegments\",[]),t(this,\"unknownSegments\",[])}static canHandle(e,t){return 65496===t}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(b.keyList())):(e=void 0===e?b.keyList().filter((e=>this.options[e].enabled)):e.filter((e=>this.options[e].enabled&&b.has(e))),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:s,findAll:i,wanted:n,remaining:r}=this;if(!i&&this.file.chunked&&(i=Array.from(n).some((e=>{let t=b.get(e),s=this.options[e];return t.multiSegment&&s.multiSegment})),i&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,s.byteLength),!this.options.onlyTiff&&s.chunked){let t=!1;for(;r.size>0&&!t&&(s.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:i}=s,n=this.appSegments.some((e=>!this.file.available(e.offset||e.start,e.length||e.size)));if(t=e>i&&!n?!await s.readNextChunk(e):!await s.readNextChunk(i),void 0===(e=this.findAppSegmentsInRange(e,s.byteLength)))return}}}findAppSegmentsInRange(e,t){t-=2;let s,i,n,r,a,h,{file:f,findAll:l,wanted:o,remaining:u,options:d}=this;for(;e<t;e++)if(255===f.getUint8(e))if(s=f.getUint8(e+1),he(s)){if(i=f.getUint16(e+2),n=fe(f,e,i),n&&o.has(n)&&(r=b.get(n),a=r.findPosition(f,e),h=d[n],a.type=n,this.appSegments.push(a),!l&&(r.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=a.chunkNumber<a.chunkCount,this.unfinishedMultiSegment||u.delete(n)):u.delete(n),0===u.size)))break;d.recordUnknownSegments&&(a=re.findPosition(f,e),a.marker=s,this.unknownSegments.push(a)),e+=i+1}else if(ae(s)){if(i=f.getUint16(e+2),218===s&&!1!==d.stopAfterSos)return;d.recordJpegSegments&&this.jpegSegments.push({offset:e,length:i,marker:s}),e+=i+1}return e}mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))return;let e=function(e,t){let s,i,n,r=new Map;for(let a=0;a<e.length;a++)s=e[a],i=s[t],r.has(i)?n=r.get(i):r.set(i,n=[]),n.push(s);return Array.from(r)}(this.appSegments,\"type\");this.mergedAppSegments=e.map((([e,t])=>{let s=b.get(e,this.options);if(s.handleMultiSegments){return{type:e,chunk:s.handleMultiSegments(t)}}return t[0]}))}getSegment(e){return this.appSegments.find((t=>t.type===e))}async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}}t(le,\"type\",\"jpeg\"),y.set(\"jpeg\",le);const oe=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];class ue extends re{parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,s=new Map){let{pick:i,skip:n}=this.options[t];i=new Set(i);let r=i.size>0,a=0===n.size,h=this.chunk.getUint16(e);e+=2;for(let f=0;f<h;f++){let h=this.chunk.getUint16(e);if(r){if(i.has(h)&&(s.set(h,this.parseTag(e,h,t)),i.delete(h),0===i.size))break}else!a&&n.has(h)||s.set(h,this.parseTag(e,h,t));e+=12}return s}parseTag(e,t,s){let{chunk:i}=this,n=i.getUint16(e+2),r=i.getUint32(e+4),a=oe[n];if(a*r<=4?e+=8:e=i.getUint32(e+8),(n<1||n>13)&&o(`Invalid TIFF value type. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e}`),e>i.byteLength&&o(`Invalid TIFF value offset. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e} is outside of chunk size ${i.byteLength}`),1===n)return i.getUint8Array(e,r);if(2===n)return\"\"===(h=function(e){for(;e.endsWith(\"\\0\");)e=e.slice(0,-1);return e}(h=i.getString(e,r)).trim())?void 0:h;var h;if(7===n)return i.getUint8Array(e,r);if(1===r)return this.parseTagValue(n,e);{let t=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(n))(r),s=a;for(let i=0;i<r;i++)t[i]=this.parseTagValue(n,e),e+=s;return t}}parseTagValue(e,t){let{chunk:s}=this;switch(e){case 1:return s.getUint8(t);case 3:return s.getUint16(t);case 4:return s.getUint32(t);case 5:return s.getUint32(t)/s.getUint32(t+4);case 6:return s.getInt8(t);case 8:return s.getInt16(t);case 9:return s.getInt32(t);case 10:return s.getInt32(t)/s.getInt32(t+4);case 11:return s.getFloat(t);case 12:return s.getDouble(t);case 13:return s.getUint32(t);default:o(`Invalid tiff type ${e}`)}}}class de extends ue{static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let s=new Map;return this[t]=s,this.parseTags(e,t,s),s}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&o(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&o(`IFD0 offset points to outside of file.\\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,u(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return 0!==t.size?(this.exifOffset=t.get(E),this.interopOffset=t.get(D),this.gpsOffset=t.get(_),this.xmp=t.get(700),this.iptc=t.get(F),this.icc=t.get(j),this.options.sanitize&&(t.delete(E),t.delete(D),t.delete(_),t.delete(700),t.delete(F),t.delete(j)),t):void 0}async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.exifOffset)return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,u(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(D)),this.makerNote=e.get(P),this.userComment=e.get(z),this.options.sanitize&&(e.delete(D),e.delete(P),e.delete(z)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let s=e.get(t);s&&1===s.length&&e.set(t,s[0])}async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.gpsOffset)return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",ce(...e.get(2),e.get(1))),e.set(\"longitude\",ce(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),void 0!==this.interopOffset||this.exif||await this.parseExifBlock(),void 0!==this.interopOffset))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),void 0===this.ifd1)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,s,i={};for(t of $)if(e=this[t],!l(e))if(s=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(\"ifd1\"===t)continue;Object.assign(i,s)}else i[t]=s;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[s,i]of Object.entries(t))this.assignObjectToOutput(e,s,i)}}function ce(e,t,s,i){var n=e+t/60+s/3600;return\"S\"!==i&&\"W\"!==i||(n*=-1),n}t(de,\"type\",\"tiff\"),t(de,\"headerLength\",10),b.set(\"tiff\",de);var pe=Object.freeze({__proto__:null,default:ne,Exifr:se,fileParsers:y,segmentParsers:b,fileReaders:w,tagKeys:I,tagValues:L,tagRevivers:T,createDictionary:B,extendDictionary:V,fetchUrlAsArrayBuffer:U,readBlobAsArrayBuffer:x,chunkedProps:M,otherSegments:N,segments:R,tiffBlocks:$,segmentsAndBlocks:K,tiffExtractables:W,inheritables:X,allFormatters:H,Options:Q,parse:ie});const ge={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},me=Object.assign({},ge,{firstChunkSize:4e4,gps:[1,2,3,4]});const ye=Object.assign({},ge,{tiff:!1,ifd1:!0,mergeOutput:!1});const be=Object.assign({},ge,{firstChunkSize:4e4,ifd0:[274]});async function we(e){let t=new se(be);await t.read(e);let s=await t.parse();if(s&&s.ifd0)return s.ifd0[274]}const ke=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});if(e.rotateCanvas=!0,e.rotateCss=!0,\"object\"==typeof navigator){let t=navigator.userAgent;if(t.includes(\"iPad\")||t.includes(\"iPhone\")){let s=t.match(/OS (\\d+)_(\\d+)/);if(s){let[,t,i]=s,n=Number(t)+.1*Number(i);e.rotateCanvas=n<13.4,e.rotateCss=!1}}else if(t.includes(\"OS X 10\")){let[,s]=t.match(/OS X 10[_.](\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<15}if(t.includes(\"Chrome/\")){let[,s]=t.match(/Chrome\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<81}else if(t.includes(\"Firefox/\")){let[,s]=t.match(/Firefox\\/(\\d+)/);e.rotateCanvas=e.rotateCss=Number(s)<77}}class Oe extends p{constructor(...e){super(...e),t(this,\"ranges\",new ve),0!==this.byteLength&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,s){if(0===e&&0===this.byteLength&&s){let e=new DataView(s.buffer||s,s.byteOffset,s.byteLength);this._swapDataView(e)}else{let s=e+t;if(s>this.byteLength){let{dataView:e}=this._extend(s);this._swapDataView(e)}}}_extend(e){let t;t=h?a.allocUnsafe(e):new Uint8Array(e);let s=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:s}}subarray(e,t,s=!1){return t=t||this._lengthToEnd(e),s&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,s=!1){s&&this._tryExtend(t,e.byteLength,e);let i=super.set(e,t);return this.ranges.add(t,i.byteLength),i}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}}class ve{constructor(){t(this,\"list\",[])}get length(){return this.list.length}add(e,t,s=0){let i=e+t,n=this.list.filter((t=>Se(e,t.offset,i)||Se(e,t.end,i)));if(n.length>0){e=Math.min(e,...n.map((e=>e.offset))),i=Math.max(i,...n.map((e=>e.end))),t=i-e;let s=n.shift();s.offset=e,s.length=t,s.end=i,this.list=this.list.filter((e=>!n.includes(e)))}else this.list.push({offset:e,length:t,end:i})}available(e,t){let s=e+t;return this.list.some((t=>t.offset<=e&&s<=t.end))}}function Se(e,t,s){return e<=t&&t<=s}class Ae extends Oe{constructor(e,s){super(0),t(this,\"chunksRead\",0),this.input=e,this.options=s}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,s=await this.readChunk(e,t);return!!s&&s.byteLength===t}async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(e,t)))return this._readChunk(e,t)}safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}}w.set(\"blob\",class extends Ae{async readWhole(){this.chunked=!1;let e=await x(this.input);this._swapArrayBuffer(e)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(e,t){let s=t?e+t:void 0,i=this.input.slice(e,s),n=await x(i);return this.set(n,e,!0)}}),e.Exifr=se,e.Options=Q,e.allFormatters=H,e.chunkedProps=M,e.createDictionary=B,e.default=pe,e.extendDictionary=V,e.fetchUrlAsArrayBuffer=U,e.fileParsers=y,e.fileReaders=w,e.gps=async function(e){let t=new se(me);await t.read(e);let s=await t.parse();if(s&&s.gps){let{latitude:e,longitude:t}=s.gps;return{latitude:e,longitude:t}}},e.gpsOnlyOptions=me,e.inheritables=X,e.orientation=we,e.orientationOnlyOptions=be,e.otherSegments=N,e.parse=ie,e.readBlobAsArrayBuffer=x,e.rotation=async function(t){let s=await we(t);return Object.assign({canvas:e.rotateCanvas,css:e.rotateCss},ke[s])},e.rotations=ke,e.segmentParsers=b,e.segments=R,e.segmentsAndBlocks=K,e.tagKeys=I,e.tagRevivers=T,e.tagValues=L,e.thumbnail=async function(e){let t=new se(ye);await t.read(e);let s=await t.extractThumbnail();return s&&h?a.from(s):s},e.thumbnailOnlyOptions=ye,e.thumbnailUrl=async function(e){let t=await this.thumbnail(e);if(void 0!==t){let e=new Blob([t]);return URL.createObjectURL(e)}},e.tiffBlocks=$,e.tiffExtractables=W,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","\"use strict\";\n\nconst DATA_URL_PATTERN = /^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;\n\nfunction dataURItoBlob(dataURI, opts, toFile) {\n  var _ref, _opts$mimeType;\n\n  // get the base64 data\n  const dataURIData = DATA_URL_PATTERN.exec(dataURI); // user may provide mime type, if not get it from data URI\n\n  const mimeType = (_ref = (_opts$mimeType = opts.mimeType) != null ? _opts$mimeType : dataURIData == null ? void 0 : dataURIData[1]) != null ? _ref : 'plain/text';\n  let data;\n\n  if (dataURIData[2] != null) {\n    const binary = atob(decodeURIComponent(dataURIData[3]));\n    const bytes = new Uint8Array(binary.length);\n\n    for (let i = 0; i < binary.length; i++) {\n      bytes[i] = binary.charCodeAt(i);\n    }\n\n    data = [bytes];\n  } else {\n    data = [decodeURIComponent(dataURIData[3])];\n  } // Convert to a File?\n\n\n  if (toFile) {\n    return new File(data, opts.name || '', {\n      type: mimeType\n    });\n  }\n\n  return new Blob(data, {\n    type: mimeType\n  });\n}\n\nmodule.exports = dataURItoBlob;","\"use strict\";\n\nfunction isObjectURL(url) {\n  return url.startsWith('blob:');\n}\n\n/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @returns {boolean}\n */\nmodule.exports = isObjectURL;","\"use strict\";\n\nfunction isPreviewSupported(fileType) {\n  if (!fileType) return false; // list of images that browsers can preview\n\n  return /^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileType);\n}\n\nmodule.exports = isPreviewSupported;","\"use strict\";\n\nmodule.exports = {\n  strings: {\n    generatingThumbnails: 'Generating thumbnails...'\n  }\n};","\"use strict\";\n\nconst isDOMElement = require(\"./isDOMElement.js\");\n/**\n * Find one or more DOM elements.\n *\n * @param {string|Node} element\n * @returns {Node[]|null}\n */\n\n\nfunction findAllDOMElements(element) {\n  if (typeof element === 'string') {\n    const elements = document.querySelectorAll(element);\n    return elements.length === 0 ? null : Array.from(elements);\n  }\n\n  if (typeof element === 'object' && isDOMElement(element)) {\n    return [element];\n  }\n\n  return null;\n}\n\nmodule.exports = findAllDOMElements;","\"use strict\";\n\nconst webkitGetAsEntryApi = require(\"./utils/webkitGetAsEntryApi/index.js\");\n\nconst fallbackApi = require(\"./utils/fallbackApi.js\");\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is\n * dropped, and browser supports folder parsing - promise resolves to the flat\n * array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\")\n * if browser supports it. Otherwise it's undefined.\n *\n * @param {DataTransfer} dataTransfer\n * @param {Function} logDropError - a function that's called every time some\n * folder or some file error out (e.g. because of the folder name being too long\n * on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array<File>\n */\n\n\nasync function getDroppedFiles(dataTransfer, _temp) {\n  let {\n    logDropError = () => {}\n  } = _temp === void 0 ? {} : _temp;\n\n  // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n  try {\n    const accumulator = [];\n\n    for await (const file of webkitGetAsEntryApi(dataTransfer, logDropError)) {\n      accumulator.push(file);\n    }\n\n    return accumulator; // Otherwise just return all first-order files\n  } catch {\n    return fallbackApi(dataTransfer);\n  }\n}\n\nmodule.exports = getDroppedFiles;","\"use strict\";\n\nconst getFilesAndDirectoriesFromDirectory = require(\"./getFilesAndDirectoriesFromDirectory.js\");\n/**\n * Interop between deprecated webkitGetAsEntry and standard getAsFileSystemHandle.\n */\n\n\nfunction getAsFileSystemHandleFromEntry(entry, logDropError) {\n  if (entry == null) return entry;\n  return {\n    // eslint-disable-next-line no-nested-ternary\n    kind: entry.isFile ? 'file' : entry.isDirectory ? 'directory' : undefined,\n    name: entry.name,\n\n    getFile() {\n      return new Promise((resolve, reject) => entry.file(resolve, reject));\n    },\n\n    async *values() {\n      // If the file is a directory.\n      const directoryReader = entry.createReader();\n      const entries = await new Promise(resolve => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n          onSuccess: dirEntries => resolve(dirEntries.map(file => getAsFileSystemHandleFromEntry(file, logDropError)))\n        });\n      });\n      yield* entries;\n    }\n\n  };\n}\n\nasync function* createPromiseToAddFileOrParseDirectory(entry, relativePath) {\n  // For each dropped item, - make sure it's a file/directory, and start deepening in!\n  if (entry.kind === 'file') {\n    const file = await entry.getFile();\n\n    if (file !== null) {\n      file.relativePath = relativePath ? `${relativePath}/${entry.name}` : null;\n      yield file;\n    }\n  } else if (entry.kind === 'directory') {\n    for await (const handle of entry.values()) {\n      yield* createPromiseToAddFileOrParseDirectory(handle, `${relativePath}/${entry.name}`);\n    }\n  }\n}\n\nasync function* getFilesFromDataTransfer(dataTransfer, logDropError) {\n  const entries = await Promise.all(Array.from(dataTransfer.items, async item => {\n    var _await$item$getAsFile;\n\n    const lastResortFile = item.getAsFile(); // Chromium bug, see https://github.com/transloadit/uppy/issues/3505.\n\n    const entry = (_await$item$getAsFile = await (item.getAsFileSystemHandle == null ? void 0 : item.getAsFileSystemHandle())) != null ? _await$item$getAsFile : getAsFileSystemHandleFromEntry(item.webkitGetAsEntry(), logDropError);\n    return {\n      lastResortFile,\n      entry\n    };\n  }));\n\n  for (const {\n    lastResortFile,\n    entry\n  } of entries) {\n    // :entry can be null when we drop the url e.g.\n    if (entry != null) {\n      try {\n        yield* createPromiseToAddFileOrParseDirectory(entry, '');\n      } catch (err) {\n        if (lastResortFile) {\n          yield lastResortFile;\n        } else {\n          logDropError(err);\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = getFilesFromDataTransfer;","\"use strict\";\n\nfunction getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, _ref) {\n  let {\n    onSuccess\n  } = _ref;\n  directoryReader.readEntries(entries => {\n    const newEntries = [...oldEntries, ...entries]; // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory()\n    // must be called until it calls the onSuccess with an empty array.\n\n    if (entries.length) {\n      queueMicrotask(() => {\n        getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, {\n          onSuccess\n        });\n      }); // Done iterating this particular directory\n    } else {\n      onSuccess(newEntries);\n    }\n  }, // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n  error => {\n    logDropError(error);\n    onSuccess(oldEntries);\n  });\n}\n\n/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n *\n * @param {FileSystemDirectoryReader} directoryReader\n * @param {Array} oldEntries\n * @param {Function} logDropError\n * @param {Function} callback - called with ([ all files and directories in that directoryReader ])\n */\nmodule.exports = getFilesAndDirectoriesFromDirectory;","\"use strict\";\n\nconst toArray = require(\"../../toArray.js\"); // .files fallback, should be implemented in any browser\n\n\nfunction fallbackApi(dataTransfer) {\n  const files = toArray(dataTransfer.files);\n  return Promise.resolve(files);\n}\n\nmodule.exports = fallbackApi;","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","\"use strict\";\n\nconst debounce = require(\"lodash.debounce\");\n\nconst FOCUSABLE_ELEMENTS = require(\"@uppy/utils/lib/FOCUSABLE_ELEMENTS\");\n\nconst getActiveOverlayEl = require(\"./getActiveOverlayEl.js\");\n/*\n  Focuses on some element in the currently topmost overlay.\n\n  1. If there are some [data-uppy-super-focusable] elements rendered already - focuses\n     on the first superfocusable element, and leaves focus up to the control of\n     a user (until currently focused element disappears from the screen [which\n     can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n  2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses\n     on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\n\n\nfunction createSuperFocus() {\n  let lastFocusWasOnSuperFocusableEl = false;\n\n  const superFocus = (dashboardEl, activeOverlayType) => {\n    const overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n    const isFocusInOverlay = overlayEl.contains(document.activeElement); // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable\n    // element - then leave focus up to the user.\n    // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n\n    if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl) return;\n    const superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]'); // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n    // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the\n    // bg, - focus will be jumping to Done all the time.\n\n    if (isFocusInOverlay && !superFocusableEl) return;\n\n    if (superFocusableEl) {\n      superFocusableEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = true;\n    } else {\n      const firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n      firstEl == null ? void 0 : firstEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = false;\n    }\n  }; // ___Why do we need to debounce?\n  //    1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update()\n  //       already executed.\n  //    [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n  //    [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n  //    2. Performance: there can be many state update()s in a second, and this function is called every time.\n\n\n  return debounce(superFocus, 260);\n}\n\nmodule.exports = createSuperFocus;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst isDragDropSupported = require(\"@uppy/utils/lib/isDragDropSupported\");\n\nconst FileList = require(\"./FileList.js\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = require(\"./AddFilesPanel.js\");\n\nconst PickerPanelContent = require(\"./PickerPanelContent.js\");\n\nconst EditorPanel = require(\"./EditorPanel.js\");\n\nconst PanelTopBar = require(\"./PickerPanelTopBar.js\");\n\nconst FileCard = require(\"./FileCard/index.js\");\n\nconst Slide = require(\"./Slide.js\"); // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\n\nconst WIDTH_XL = 900;\nconst WIDTH_LG = 700;\nconst WIDTH_MD = 576;\nconst HEIGHT_MD = 400;\n\nfunction Dashboard(props) {\n  const noFiles = props.totalFileCount === 0;\n  const isSizeMD = props.containerWidth > WIDTH_MD;\n  const dashboardClassName = classNames({\n    'uppy-Dashboard': true,\n    'uppy-Dashboard--isDisabled': props.disabled,\n    'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n    'uppy-Dashboard--isClosing': props.isClosing,\n    'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n    'uppy-Dashboard--modal': !props.inline,\n    'uppy-size--md': props.containerWidth > WIDTH_MD,\n    'uppy-size--lg': props.containerWidth > WIDTH_LG,\n    'uppy-size--xl': props.containerWidth > WIDTH_XL,\n    'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n    'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n    'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible\n  }); // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n\n  let itemsPerRow = 1; // mobile\n\n  if (props.containerWidth > WIDTH_XL) {\n    itemsPerRow = 5;\n  } else if (props.containerWidth > WIDTH_LG) {\n    itemsPerRow = 4;\n  } else if (props.containerWidth > WIDTH_MD) {\n    itemsPerRow = 3;\n  }\n\n  const showFileList = props.showSelectedFiles && !noFiles;\n  const numberOfFilesForRecovery = props.recoveredState ? Object.keys(props.recoveredState.files).length : null;\n  const numberOfGhosts = props.files ? Object.keys(props.files).filter(fileID => props.files[fileID].isGhost).length : null;\n\n  const renderRestoredText = () => {\n    if (numberOfGhosts > 0) {\n      return props.i18n('recoveredXFiles', {\n        smart_count: numberOfGhosts\n      });\n    }\n\n    return props.i18n('recoveredAllFiles');\n  };\n\n  const dashboard = (0, _preact.h)(\"div\", {\n    className: dashboardClassName,\n    \"data-uppy-theme\": props.theme,\n    \"data-uppy-num-acquirers\": props.acquirers.length,\n    \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(),\n    \"aria-hidden\": props.inline ? 'false' : props.isHidden,\n    \"aria-disabled\": props.disabled,\n    \"aria-label\": !props.inline ? props.i18n('dashboardWindowTitle') : props.i18n('dashboardTitle'),\n    onPaste: props.handlePaste,\n    onDragOver: props.handleDragOver,\n    onDragLeave: props.handleDragLeave,\n    onDrop: props.handleDrop\n  }, (0, _preact.h)(\"div\", {\n    \"aria-hidden\": \"true\",\n    className: \"uppy-Dashboard-overlay\",\n    tabIndex: -1,\n    onClick: props.handleClickOutside\n  }), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-inner\",\n    \"aria-modal\": !props.inline && 'true',\n    role: !props.inline && 'dialog',\n    style: {\n      width: props.inline && props.width ? props.width : '',\n      height: props.inline && props.height ? props.height : ''\n    }\n  }, !props.inline ? (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-close\",\n    type: \"button\",\n    \"aria-label\": props.i18n('closeModal'),\n    title: props.i18n('closeModal'),\n    onClick: props.closeModal\n  }, (0, _preact.h)(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\")) : null, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-innerWrap\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-dropFilesHereHint\"\n  }, props.i18n('dropHint')), showFileList && (0, _preact.h)(PanelTopBar, props), numberOfFilesForRecovery && (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg\"\n  }, (0, _preact.h)(\"svg\", {\n    className: \"uppy-Dashboard-serviceMsg-icon\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"21\",\n    height: \"16\",\n    viewBox: \"0 0 24 19\"\n  }, (0, _preact.h)(\"g\", {\n    transform: \"translate(0 -1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",\n    fill: \"#FFD300\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#000\",\n    d: \"M11 6h2l-.3 8h-1.4z\"\n  }), (0, _preact.h)(\"circle\", {\n    fill: \"#000\",\n    cx: \"12\",\n    cy: \"17\",\n    r: \"1\"\n  }))), (0, _preact.h)(\"strong\", {\n    className: \"uppy-Dashboard-serviceMsg-title\"\n  }, props.i18n('sessionRestored')), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg-text\"\n  }, renderRestoredText())), showFileList ? (0, _preact.h)(FileList // eslint-disable-next-line react/jsx-props-no-spreading\n  , _extends({}, props, {\n    itemsPerRow: itemsPerRow\n  })) : // eslint-disable-next-line react/jsx-props-no-spreading\n  (0, _preact.h)(AddFiles, _extends({}, props, {\n    isSizeMD: isSizeMD\n  })), (0, _preact.h)(Slide, null, props.showAddFilesPanel ? (0, _preact.h)(AddFilesPanel, _extends({\n    key: \"AddFiles\"\n  }, props, {\n    isSizeMD: isSizeMD\n  })) : null), (0, _preact.h)(Slide, null, props.fileCardFor ? (0, _preact.h)(FileCard, _extends({\n    key: \"FileCard\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.activePickerPanel ? (0, _preact.h)(PickerPanelContent, _extends({\n    key: \"Picker\"\n  }, props)) : null), (0, _preact.h)(Slide, null, props.showFileEditor ? (0, _preact.h)(EditorPanel, _extends({\n    key: \"Editor\"\n  }, props)) : null), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-progressindicators\"\n  }, props.progressindicators.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })))));\n  return dashboard;\n}\n\nmodule.exports = Dashboard;","\"use strict\";\n\nfunction isDragDropSupported() {\n  const div = document.body;\n\n  if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n    return false;\n  }\n\n  if (!('FormData' in window)) {\n    return false;\n  }\n\n  if (!('FileReader' in window)) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n *\n * @returns {boolean}\n */\nmodule.exports = isDragDropSupported;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst classNames = require(\"classnames\");\n\nconst FileItem = require(\"./FileItem/index.js\");\n\nconst VirtualList = require(\"./VirtualList.js\");\n\nfunction chunks(list, size) {\n  const chunked = [];\n  let currentChunk = [];\n  list.forEach(item => {\n    if (currentChunk.length < size) {\n      currentChunk.push(item);\n    } else {\n      chunked.push(currentChunk);\n      currentChunk = [item];\n    }\n  });\n  if (currentChunk.length) chunked.push(currentChunk);\n  return chunked;\n}\n\nmodule.exports = props => {\n  const noFiles = props.totalFileCount === 0;\n  const dashboardFilesClass = classNames('uppy-Dashboard-files', {\n    'uppy-Dashboard-files--noFiles': noFiles\n  }); // It's not great that this is hardcoded!\n  // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n\n  const rowHeight = props.itemsPerRow === 1 // Mobile\n  ? 71 // 190px height + 2 * 5px margin\n  : 200;\n  const fileProps = {\n    // FIXME This is confusing, it's actually the Dashboard's plugin ID\n    id: props.id,\n    error: props.error,\n    // TODO move this to context\n    i18n: props.i18n,\n    uppy: props.uppy,\n    // features\n    acquirers: props.acquirers,\n    resumableUploads: props.resumableUploads,\n    individualCancellation: props.individualCancellation,\n    // visual options\n    hideRetryButton: props.hideRetryButton,\n    hidePauseResumeButton: props.hidePauseResumeButton,\n    hideCancelButton: props.hideCancelButton,\n    showLinkToFileUploadResult: props.showLinkToFileUploadResult,\n    showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete,\n    isWide: props.isWide,\n    metaFields: props.metaFields,\n    recoveredState: props.recoveredState,\n    // callbacks\n    toggleFileCard: props.toggleFileCard,\n    handleRequestThumbnail: props.handleRequestThumbnail,\n    handleCancelThumbnail: props.handleCancelThumbnail\n  };\n\n  const sortByGhostComesFirst = (file1, file2) => {\n    return props.files[file2].isGhost - props.files[file1].isGhost;\n  }; // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n\n\n  const files = Object.keys(props.files);\n  if (props.recoveredState) files.sort(sortByGhostComesFirst);\n  const rows = chunks(files, props.itemsPerRow);\n\n  const renderRow = row => // The `role=\"presentation` attribute ensures that the list items are properly\n  // associated with the `VirtualList` element.\n  // We use the first file ID as the key—this should not change across scroll rerenders\n  (0, _preact.h)(\"div\", {\n    role: \"presentation\",\n    key: row[0]\n  }, row.map(fileID => (0, _preact.h)(FileItem, _extends({\n    key: fileID,\n    uppy: props.uppy\n  }, fileProps, {\n    // eslint-disable-line react/jsx-props-no-spreading\n    role: \"listitem\",\n    openFileEditor: props.openFileEditor,\n    canEditFile: props.canEditFile,\n    toggleAddFilesPanel: props.toggleAddFilesPanel,\n    file: props.files[fileID]\n  }))));\n\n  return (0, _preact.h)(VirtualList, {\n    class: dashboardFilesClass,\n    role: \"list\",\n    data: rows,\n    renderRow: renderRow,\n    rowHeight: rowHeight\n  });\n};","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst shallowEqual = require(\"is-shallow-equal\");\n\nconst FilePreviewAndLink = require(\"./FilePreviewAndLink/index.js\");\n\nconst FileProgress = require(\"./FileProgress/index.js\");\n\nconst FileInfo = require(\"./FileInfo/index.js\");\n\nconst Buttons = require(\"./Buttons/index.js\");\n\nclass FileItem extends _preact.Component {\n  componentDidMount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  shouldComponentUpdate(nextProps) {\n    return !shallowEqual(this.props, nextProps);\n  } // VirtualList mounts FileItems again and they emit `thumbnail:request`\n  // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n\n\n  componentDidUpdate() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  }\n\n  componentWillUnmount() {\n    const {\n      file\n    } = this.props;\n\n    if (!file.preview) {\n      this.props.handleCancelThumbnail(file);\n    }\n  }\n\n  render() {\n    const {\n      file\n    } = this.props;\n    const isProcessing = file.progress.preprocess || file.progress.postprocess;\n    const isUploaded = file.progress.uploadComplete && !isProcessing && !file.error;\n    const uploadInProgressOrComplete = file.progress.uploadStarted || isProcessing;\n    const uploadInProgress = file.progress.uploadStarted && !file.progress.uploadComplete || isProcessing;\n    const error = file.error || false; // File that Golden Retriever was able to partly restore (only meta, not blob),\n    // users still need to re-add it, so it’s a ghost\n\n    const {\n      isGhost\n    } = file;\n    let showRemoveButton = this.props.individualCancellation ? !isUploaded : !uploadInProgress && !isUploaded;\n\n    if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n      showRemoveButton = true;\n    }\n\n    const dashboardItemClass = classNames({\n      'uppy-Dashboard-Item': true,\n      'is-inprogress': uploadInProgress && !this.props.recoveredState,\n      'is-processing': isProcessing,\n      'is-complete': isUploaded,\n      'is-error': !!error,\n      'is-resumable': this.props.resumableUploads,\n      'is-noIndividualCancellation': !this.props.individualCancellation,\n      'is-ghost': isGhost\n    });\n    return (0, _preact.h)(\"div\", {\n      className: dashboardItemClass,\n      id: `uppy_${file.id}`,\n      role: this.props.role\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-preview\"\n    }, (0, _preact.h)(FilePreviewAndLink, {\n      file: file,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      i18n: this.props.i18n,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(FileProgress, {\n      uppy: this.props.uppy,\n      file: file,\n      error: error,\n      isUploaded: isUploaded,\n      hideRetryButton: this.props.hideRetryButton,\n      hideCancelButton: this.props.hideCancelButton,\n      hidePauseResumeButton: this.props.hidePauseResumeButton,\n      recoveredState: this.props.recoveredState,\n      showRemoveButtonAfterComplete: this.props.showRemoveButtonAfterComplete,\n      resumableUploads: this.props.resumableUploads,\n      individualCancellation: this.props.individualCancellation,\n      i18n: this.props.i18n\n    })), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-fileInfoAndButtons\"\n    }, (0, _preact.h)(FileInfo, {\n      file: file,\n      id: this.props.id,\n      acquirers: this.props.acquirers,\n      containerWidth: this.props.containerWidth,\n      i18n: this.props.i18n,\n      toggleAddFilesPanel: this.props.toggleAddFilesPanel,\n      toggleFileCard: this.props.toggleFileCard,\n      metaFields: this.props.metaFields\n    }), (0, _preact.h)(Buttons, {\n      file: file,\n      metaFields: this.props.metaFields,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      showRemoveButton: showRemoveButton,\n      canEditFile: this.props.canEditFile,\n      uploadInProgressOrComplete: uploadInProgressOrComplete,\n      toggleFileCard: this.props.toggleFileCard,\n      openFileEditor: this.props.openFileEditor,\n      uppy: this.props.uppy,\n      i18n: this.props.i18n\n    })));\n  }\n\n}\n\nmodule.exports = FileItem;","module.exports = function isShallowEqual (a, b) {\n  if (a === b) return true\n  for (var i in a) if (!(i in b)) return false\n  for (var i in b) if (a[i] !== b[i]) return false\n  return true\n}\n","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst FilePreview = require(\"../../FilePreview.js\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst getFileTypeIcon = require(\"../../../utils/getFileTypeIcon.js\");\n\nfunction FilePreviewAndLink(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-previewInnerWrap\",\n    style: {\n      backgroundColor: getFileTypeIcon(props.file.type).color\n    }\n  }, props.showLinkToFileUploadResult && props.file.uploadURL && (0, _preact.h)(\"a\", {\n    className: \"uppy-Dashboard-Item-previewLink\",\n    href: props.file.uploadURL,\n    rel: \"noreferrer noopener\",\n    target: \"_blank\",\n    \"aria-label\": props.file.meta.name\n  }, (0, _preact.h)(\"span\", {\n    hidden: true\n  }, props.file.meta.name)), (0, _preact.h)(FilePreview, {\n    file: props.file\n  }), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FilePreviewAndLink;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction onPauseResumeCancelRetry(props) {\n  if (props.isUploaded) return;\n\n  if (props.error && !props.hideRetryButton) {\n    props.uppy.retryUpload(props.file.id);\n    return;\n  }\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    props.uppy.pauseResume(props.file.id);\n  } else if (props.individualCancellation && !props.hideCancelButton) {\n    props.uppy.removeFile(props.file.id);\n  }\n}\n\nfunction progressIndicatorTitle(props) {\n  if (props.isUploaded) {\n    return props.i18n('uploadComplete');\n  }\n\n  if (props.error) {\n    return props.i18n('retryUpload');\n  }\n\n  if (props.resumableUploads) {\n    if (props.file.isPaused) {\n      return props.i18n('resumeUpload');\n    }\n\n    return props.i18n('pauseUpload');\n  }\n\n  if (props.individualCancellation) {\n    return props.i18n('cancelUpload');\n  }\n\n  return '';\n}\n\nfunction ProgressIndicatorButton(props) {\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-progressIndicator\",\n    type: \"button\",\n    \"aria-label\": progressIndicatorTitle(props),\n    title: progressIndicatorTitle(props),\n    onClick: () => onPauseResumeCancelRetry(props)\n  }, props.children));\n}\n\nfunction ProgressCircleContainer(_ref) {\n  let {\n    children\n  } = _ref;\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"70\",\n    height: \"70\",\n    viewBox: \"0 0 36 36\",\n    className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"\n  }, children);\n}\n\nfunction ProgressCircle(_ref2) {\n  let {\n    progress\n  } = _ref2;\n  // circle length equals 2 * PI * R\n  const circleLength = 2 * Math.PI * 15;\n  return (0, _preact.h)(\"g\", null, (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--bg\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    \"stroke-width\": \"2\",\n    fill: \"none\"\n  }), (0, _preact.h)(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--progress\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    transform: \"rotate(-90, 18, 18)\",\n    fill: \"none\",\n    \"stroke-width\": \"2\",\n    \"stroke-dasharray\": circleLength,\n    \"stroke-dashoffset\": circleLength - circleLength / 100 * progress\n  }));\n}\n\nfunction FileProgress(props) {\n  // Nothing if upload has not started\n  if (!props.file.progress.uploadStarted) {\n    return null;\n  } // Green checkmark when complete\n\n\n  if (props.isUploaded) {\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progress\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-Item-progressIndicator\"\n    }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(\"circle\", {\n      r: \"15\",\n      cx: \"18\",\n      cy: \"18\",\n      fill: \"#1bb240\"\n    }), (0, _preact.h)(\"polygon\", {\n      className: \"uppy-Dashboard-Item-progressIcon--check\",\n      transform: \"translate(2, 3)\",\n      points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"\n    }))));\n  }\n\n  if (props.recoveredState) {\n    return undefined;\n  } // Retry button for error\n\n\n  if (props.error && !props.hideRetryButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",\n        width: \"28\",\n        height: \"31\",\n        viewBox: \"0 0 16 19\"\n      }, (0, _preact.h)(\"path\", {\n        d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M7.9 3H10v2H7.9z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"\n      }), (0, _preact.h)(\"path\", {\n        d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"\n      })))\n    );\n  } // Pause/resume button for resumable uploads\n\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), props.file.isPaused ? (0, _preact.h)(\"polygon\", {\n        className: \"uppy-Dashboard-Item-progressIcon--play\",\n        transform: \"translate(3, 3)\",\n        points: \"12 20 12 10 20 15\"\n      }) : (0, _preact.h)(\"g\", {\n        className: \"uppy-Dashboard-Item-progressIcon--pause\",\n        transform: \"translate(14.5, 13)\"\n      }, (0, _preact.h)(\"rect\", {\n        x: \"0\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }), (0, _preact.h)(\"rect\", {\n        x: \"5\",\n        y: \"0\",\n        width: \"2\",\n        height: \"10\",\n        rx: \"0\"\n      }))))\n    );\n  } // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n\n\n  if (!props.resumableUploads && props.individualCancellation && !props.hideCancelButton) {\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(ProgressIndicatorButton, props, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n        progress: props.file.progress.percentage\n      }), (0, _preact.h)(\"polygon\", {\n        className: \"cancel\",\n        transform: \"translate(2, 2)\",\n        points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"\n      })))\n    );\n  } // Just progress when buttons are disabled\n\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-progressIndicator\"\n  }, (0, _preact.h)(ProgressCircleContainer, null, (0, _preact.h)(ProgressCircle, {\n    progress: props.file.progress.percentage\n  }))));\n}\n\nmodule.exports = FileProgress;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst prettierBytes = require(\"@transloadit/prettier-bytes\");\n\nconst truncateString = require(\"@uppy/utils/lib/truncateString\");\n\nconst MetaErrorMessage = require(\"../MetaErrorMessage.js\");\n\nconst renderFileName = props => {\n  const {\n    author,\n    name\n  } = props.file.meta;\n\n  function getMaxNameLength() {\n    if (props.containerWidth <= 352) {\n      return 35;\n    }\n\n    if (props.containerWidth <= 576) {\n      return 60;\n    } // When `author` is present, we want to make sure\n    // the file name fits on one line so we can place\n    // the author on the second line.\n\n\n    return author ? 20 : 30;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-name\",\n    title: name\n  }, truncateString(name, getMaxNameLength()));\n};\n\nconst renderAuthor = props => {\n  const {\n    author\n  } = props.file.meta;\n  const {\n    providerName\n  } = props.file.remote;\n  const dot = `\\u00B7`;\n\n  if (!author) {\n    return null;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-author\"\n  }, (0, _preact.h)(\"a\", {\n    href: `${author.url}?utm_source=Companion&utm_medium=referral`,\n    target: \"_blank\",\n    rel: \"noopener noreferrer\"\n  }, truncateString(author.name, 13)), providerName ? (0, _preact.h)(_preact.Fragment, null, ` ${dot} `, providerName, ` ${dot} `) : null);\n};\n\nconst renderFileSize = props => props.file.size && (0, _preact.h)(\"div\", {\n  className: \"uppy-Dashboard-Item-statusSize\"\n}, prettierBytes(props.file.size));\n\nconst ReSelectButton = props => props.file.isGhost && (0, _preact.h)(\"span\", null, ' \\u2022 ', (0, _preact.h)(\"button\", {\n  className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",\n  type: \"button\",\n  onClick: props.toggleAddFilesPanel\n}, props.i18n('reSelect')));\n\nconst ErrorButton = _ref => {\n  let {\n    file,\n    onClick\n  } = _ref;\n\n  if (file.error) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-errorDetails\",\n      \"aria-label\": file.error,\n      \"data-microtip-position\": \"bottom\",\n      \"data-microtip-size\": \"medium\",\n      onClick: onClick,\n      type: \"button\"\n    }, \"?\");\n  }\n\n  return null;\n};\n\nfunction FileInfo(props) {\n  const {\n    file\n  } = props;\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileInfo\",\n    \"data-uppy-file-source\": file.source\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-fileName\"\n  }, renderFileName(props), (0, _preact.h)(ErrorButton, {\n    file: props.file // eslint-disable-next-line no-alert\n    ,\n    onClick: () => alert(props.file.error) // TODO: move to a custom alert implementation\n\n  })), (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-status\"\n  }, renderAuthor(props), renderFileSize(props), ReSelectButton(props)), (0, _preact.h)(MetaErrorMessage, {\n    file: props.file,\n    i18n: props.i18n,\n    toggleFileCard: props.toggleFileCard,\n    metaFields: props.metaFields\n  }));\n}\n\nmodule.exports = FileInfo;","\"use strict\";\n\n/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n *\n * @param {string} string - string to be truncated\n * @param {number} maxLength - maximum size of the resulting string\n * @returns {string}\n */\nconst separator = '...';\n\nfunction truncateString(string, maxLength) {\n  // Return the empty string if maxLength is zero\n  if (maxLength === 0) return ''; // Return original string if it's already shorter than maxLength\n\n  if (string.length <= maxLength) return string; // Return truncated substring appended of the ellipsis char if string can't be meaningfully truncated\n\n  if (maxLength <= separator.length + 1) return `${string.slice(0, maxLength - 1)}…`;\n  const charsToShow = maxLength - separator.length;\n  const frontChars = Math.ceil(charsToShow / 2);\n  const backChars = Math.floor(charsToShow / 2);\n  return string.slice(0, frontChars) + separator + string.slice(-backChars);\n}\n\nmodule.exports = truncateString;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst copyToClipboard = require(\"../../../utils/copyToClipboard.js\");\n\nfunction EditButton(_ref) {\n  let {\n    file,\n    uploadInProgressOrComplete,\n    metaFields,\n    canEditFile,\n    i18n,\n    onClick\n  } = _ref;\n\n  if (!uploadInProgressOrComplete && metaFields && metaFields.length > 0 || !uploadInProgressOrComplete && canEditFile(file)) {\n    return (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",\n      type: \"button\",\n      \"aria-label\": i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      title: i18n('editFileWithFilename', {\n        file: file.meta.name\n      }),\n      onClick: () => onClick()\n    }, (0, _preact.h)(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon\",\n      width: \"14\",\n      height: \"14\",\n      viewBox: \"0 0 14 14\"\n    }, (0, _preact.h)(\"g\", {\n      fillRule: \"evenodd\"\n    }, (0, _preact.h)(\"path\", {\n      d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",\n      fillRule: \"nonzero\"\n    }), (0, _preact.h)(\"rect\", {\n      x: \"1\",\n      y: \"12.293\",\n      width: \"11\",\n      height: \"1\",\n      rx: \".5\"\n    }), (0, _preact.h)(\"path\", {\n      fillRule: \"nonzero\",\n      d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"\n    }))));\n  }\n\n  return null;\n}\n\nfunction RemoveButton(_ref2) {\n  let {\n    i18n,\n    onClick,\n    file\n  } = _ref2;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",\n    type: \"button\",\n    \"aria-label\": i18n('removeFile', {\n      file: file.meta.name\n    }),\n    title: i18n('removeFile', {\n      file: file.meta.name\n    }),\n    onClick: () => onClick()\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"18\",\n    height: \"18\",\n    viewBox: \"0 0 18 18\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"\n  }), (0, _preact.h)(\"path\", {\n    fill: \"#FFF\",\n    d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"\n  })));\n}\n\nconst copyLinkToClipboard = (event, props) => {\n  copyToClipboard(props.file.uploadURL, props.i18n('copyLinkToClipboardFallback')).then(() => {\n    props.uppy.log('Link copied to clipboard.');\n    props.uppy.info(props.i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n  }).catch(props.uppy.log) // avoid losing focus\n  .then(() => event.target.focus({\n    preventScroll: true\n  }));\n};\n\nfunction CopyLinkButton(props) {\n  const {\n    i18n\n  } = props;\n  return (0, _preact.h)(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",\n    type: \"button\",\n    \"aria-label\": i18n('copyLink'),\n    title: i18n('copyLink'),\n    onClick: event => copyLinkToClipboard(event, props)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"14\",\n    height: \"14\",\n    viewBox: \"0 0 14 12\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"\n  })));\n}\n\nfunction Buttons(props) {\n  const {\n    uppy,\n    file,\n    uploadInProgressOrComplete,\n    canEditFile,\n    metaFields,\n    showLinkToFileUploadResult,\n    showRemoveButton,\n    i18n,\n    toggleFileCard,\n    openFileEditor\n  } = props;\n\n  const editAction = () => {\n    if (metaFields && metaFields.length > 0) {\n      toggleFileCard(true, file.id);\n    } else {\n      openFileEditor(file);\n    }\n  };\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-Dashboard-Item-actionWrapper\"\n  }, (0, _preact.h)(EditButton, {\n    i18n: i18n,\n    file: file,\n    uploadInProgressOrComplete: uploadInProgressOrComplete,\n    canEditFile: canEditFile,\n    metaFields: metaFields,\n    onClick: editAction\n  }), showLinkToFileUploadResult && file.uploadURL ? (0, _preact.h)(CopyLinkButton, {\n    file: file,\n    uppy: uppy,\n    i18n: i18n\n  }) : null, showRemoveButton ? (0, _preact.h)(RemoveButton, {\n    i18n: i18n,\n    file: file,\n    uppy: uppy,\n    onClick: () => props.uppy.removeFile(file.id, 'removed-by-user')\n  }) : null);\n}\n\nmodule.exports = Buttons;","\"use strict\";\n\nfunction copyToClipboard(textToCopy, fallbackString) {\n  // TODO: make `fallbackString` an optional parameter instead.\n  fallbackString || (fallbackString = 'Copy the URL below'); // eslint-disable-line no-param-reassign\n\n  return new Promise(resolve => {\n    const textArea = document.createElement('textarea');\n    textArea.setAttribute('style', {\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      width: '2em',\n      height: '2em',\n      padding: 0,\n      border: 'none',\n      outline: 'none',\n      boxShadow: 'none',\n      background: 'transparent'\n    });\n    textArea.value = textToCopy;\n    document.body.appendChild(textArea);\n    textArea.select();\n\n    const magicCopyFailed = () => {\n      document.body.removeChild(textArea); // eslint-disable-next-line no-alert\n\n      window.prompt(fallbackString, textToCopy);\n      resolve();\n    };\n\n    try {\n      const successful = document.execCommand('copy');\n\n      if (!successful) {\n        return magicCopyFailed('copy command unavailable');\n      }\n\n      document.body.removeChild(textArea);\n      return resolve();\n    } catch (err) {\n      document.body.removeChild(textArea);\n      return magicCopyFailed(err);\n    }\n  });\n}\n\n/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\nmodule.exports = copyToClipboard;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nconst STYLE_INNER = {\n  position: 'relative',\n  // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n  // and this additional property would hide things that we want to show.\n  //\n  // overflow: 'hidden',\n  width: '100%',\n  minHeight: '100%'\n};\nconst STYLE_CONTENT = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n  // stretch far beyond the content. For our use case, the content div actually can get its height from\n  // the elements inside it, so we don't need to specify a `height` property at all.\n  //\n  // height: '100%',\n  width: '100%',\n  overflow: 'visible'\n};\n\nclass VirtualList extends _preact.Component {\n  constructor(props) {\n    super(props); // The currently focused node, used to retain focus when the visible rows change.\n    // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n\n    this.handleScroll = () => {\n      this.setState({\n        offset: this.base.scrollTop\n      });\n    };\n\n    this.handleResize = () => {\n      this.resize();\n    };\n\n    this.focusElement = null;\n    this.state = {\n      offset: 0,\n      height: 0\n    };\n  }\n\n  componentDidMount() {\n    this.resize();\n    window.addEventListener('resize', this.handleResize);\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate() {\n    if (this.base.contains(document.activeElement)) {\n      this.focusElement = document.activeElement;\n    }\n  }\n\n  componentDidUpdate() {\n    // Maintain focus when rows are added and removed.\n    if (this.focusElement && this.focusElement.parentNode && document.activeElement !== this.focusElement) {\n      this.focusElement.focus();\n    }\n\n    this.focusElement = null;\n    this.resize();\n  }\n\n  componentWillUnmount() {\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  resize() {\n    const {\n      height\n    } = this.state;\n\n    if (height !== this.base.offsetHeight) {\n      this.setState({\n        height: this.base.offsetHeight\n      });\n    }\n  }\n\n  render(_ref) {\n    let {\n      data,\n      rowHeight,\n      renderRow,\n      overscanCount = 10,\n      ...props\n    } = _ref;\n    const {\n      offset,\n      height\n    } = this.state; // first visible row index\n\n    let start = Math.floor(offset / rowHeight); // actual number of visible rows (without overscan)\n\n    let visibleRowCount = Math.floor(height / rowHeight); // Overscan: render blocks of rows modulo an overscan row count\n    // This dramatically reduces DOM writes during scrolling\n\n    if (overscanCount) {\n      start = Math.max(0, start - start % overscanCount);\n      visibleRowCount += overscanCount;\n    } // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n\n\n    const end = start + visibleRowCount + 4; // data slice currently in viewport plus overscan items\n\n    const selection = data.slice(start, end);\n    const styleInner = { ...STYLE_INNER,\n      height: data.length * rowHeight\n    };\n    const styleContent = { ...STYLE_CONTENT,\n      top: start * rowHeight\n    }; // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n    // items by accessibility and outline tools.\n\n    return (// eslint-disable-next-line react/jsx-props-no-spreading\n      (0, _preact.h)(\"div\", _extends({\n        onScroll: this.handleScroll\n      }, props), (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleInner\n      }, (0, _preact.h)(\"div\", {\n        role: \"presentation\",\n        style: styleContent\n      }, selection.map(renderRow))))\n    );\n  }\n\n}\n\nmodule.exports = VirtualList;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst AddFiles = require(\"./AddFiles.js\");\n\nconst AddFilesPanel = props => {\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-Dashboard-AddFilesPanel', props.className),\n    \"data-uppy-panelType\": \"AddFiles\",\n    \"aria-hidden\": props.showAddFilesPanel\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18n('addingMoreFiles')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => props.toggleAddFilesPanel(false)\n  }, props.i18n('back'))), (0, _preact.h)(AddFiles, props));\n};\n\nmodule.exports = AddFilesPanel;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst ignoreEvent = require(\"../utils/ignoreEvent.js\");\n\nfunction PickerPanelContent(_ref) {\n  let {\n    activePickerPanel,\n    className,\n    hideAllPanels,\n    i18n,\n    state,\n    uppy\n  } = _ref;\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"PickerPanel\",\n    id: `uppy-DashboardContent-panel--${activePickerPanel.id}`,\n    onDragOver: ignoreEvent,\n    onDragLeave: ignoreEvent,\n    onDrop: ignoreEvent,\n    onPaste: ignoreEvent\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, i18n('importFrom', {\n    name: activePickerPanel.name\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: hideAllPanels\n  }, i18n('cancel'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, uppy.getPlugin(activePickerPanel.id).render(state)));\n}\n\nmodule.exports = PickerPanelContent;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nfunction EditorPanel(props) {\n  const file = props.files[props.fileCardFor];\n  return (0, _preact.h)(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', props.className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"FileEditor\",\n    id: \"uppy-DashboardContent-panel--editor\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18nArray('editing', {\n    file: (0, _preact.h)(\"span\", {\n      className: \"uppy-DashboardContent-titleFile\"\n    }, file.meta ? file.meta.name : file.name)\n  })), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.hideAllPanels\n  }, props.i18n('cancel')), (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-save\",\n    type: \"button\",\n    onClick: props.saveFileEditor\n  }, props.i18n('save'))), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, props.editors.map(target => {\n    return props.uppy.getPlugin(target.id).render(props.state);\n  })));\n}\n\nmodule.exports = EditorPanel;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst uploadStates = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete',\n  STATE_PAUSED: 'paused'\n};\n\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files) {\n  if (files === void 0) {\n    files = {};\n  }\n\n  if (isAllErrored) {\n    return uploadStates.STATE_ERROR;\n  }\n\n  if (isAllComplete) {\n    return uploadStates.STATE_COMPLETE;\n  }\n\n  if (isAllPaused) {\n    return uploadStates.STATE_PAUSED;\n  }\n\n  let state = uploadStates.STATE_WAITING;\n  const fileIDs = Object.keys(files);\n\n  for (let i = 0; i < fileIDs.length; i++) {\n    const {\n      progress\n    } = files[fileIDs[i]]; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return uploadStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n\n    if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n      state = uploadStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n\n    if (progress.postprocess && state !== uploadStates.STATE_UPLOADING && state !== uploadStates.STATE_PREPROCESSING) {\n      state = uploadStates.STATE_POSTPROCESSING;\n    }\n  }\n\n  return state;\n}\n\nfunction UploadStatus(_ref) {\n  let {\n    files,\n    i18n,\n    isAllComplete,\n    isAllErrored,\n    isAllPaused,\n    inProgressNotPausedFiles,\n    newFiles,\n    processingFiles\n  } = _ref;\n  const uploadingState = getUploadingState(isAllErrored, isAllComplete, isAllPaused, files);\n\n  switch (uploadingState) {\n    case 'uploading':\n      return i18n('uploadingXFiles', {\n        smart_count: inProgressNotPausedFiles.length\n      });\n\n    case 'preprocessing':\n    case 'postprocessing':\n      return i18n('processingXFiles', {\n        smart_count: processingFiles.length\n      });\n\n    case 'paused':\n      return i18n('uploadPaused');\n\n    case 'waiting':\n      return i18n('xFilesSelected', {\n        smart_count: newFiles.length\n      });\n\n    case 'complete':\n      return i18n('uploadComplete');\n\n    default:\n  }\n}\n\nfunction PanelTopBar(props) {\n  const {\n    i18n,\n    isAllComplete,\n    hideCancelButton,\n    maxNumberOfFiles,\n    toggleAddFilesPanel,\n    uppy\n  } = props;\n  let {\n    allowNewUpload\n  } = props; // TODO maybe this should be done in ../Dashboard.jsx, then just pass that down as `allowNewUpload`\n\n  if (allowNewUpload && maxNumberOfFiles) {\n    // eslint-disable-next-line react/destructuring-assignment\n    allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n  }\n\n  return (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, !isAllComplete && !hideCancelButton ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: () => uppy.cancelAll()\n  }, i18n('cancel')) : (0, _preact.h)(\"div\", null), (0, _preact.h)(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, (0, _preact.h)(UploadStatus, props)), allowNewUpload ? (0, _preact.h)(\"button\", {\n    className: \"uppy-DashboardContent-addMore\",\n    type: \"button\",\n    \"aria-label\": i18n('addMoreFiles'),\n    title: i18n('addMoreFiles'),\n    onClick: () => toggleAddFilesPanel(true)\n  }, (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\"\n  }, (0, _preact.h)(\"path\", {\n    d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"\n  })), (0, _preact.h)(\"span\", {\n    className: \"uppy-DashboardContent-addMoreCaption\"\n  }, i18n('addMore'))) : (0, _preact.h)(\"div\", null));\n}\n\nmodule.exports = PanelTopBar;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _nonSecure = require(\"nanoid/non-secure\");\n\nconst classNames = require(\"classnames\");\n\nconst getFileTypeIcon = require(\"../../utils/getFileTypeIcon.js\");\n\nconst ignoreEvent = require(\"../../utils/ignoreEvent.js\");\n\nconst FilePreview = require(\"../FilePreview.js\");\n\nclass FileCard extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.form = document.createElement('form');\n\n    this.updateMeta = (newVal, name) => {\n      this.setState(_ref => {\n        let {\n          formState\n        } = _ref;\n        return {\n          formState: { ...formState,\n            [name]: newVal\n          }\n        };\n      });\n    };\n\n    this.handleSave = e => {\n      e.preventDefault();\n      const fileID = this.props.fileCardFor;\n      this.props.saveFileCard(this.state.formState, fileID);\n    };\n\n    this.handleCancel = () => {\n      const {\n        currentImage\n      } = this.getPluginState();\n      const file = this.props.uppy.getFile(currentImage.id);\n      this.props.uppy.emit('file-editor:cancel', file);\n      this.props.toggleFileCard(false);\n    };\n\n    this.saveOnEnter = ev => {\n      if (ev.keyCode === 13) {\n        ev.stopPropagation();\n        ev.preventDefault();\n        const file = this.props.files[this.props.fileCardFor];\n        this.props.saveFileCard(this.state.formState, file.id);\n      }\n    };\n\n    this.renderMetaFields = () => {\n      const metaFields = this.getMetaFields() || [];\n      const fieldCSSClasses = {\n        text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input'\n      };\n      return metaFields.map(field => {\n        const id = `uppy-Dashboard-FileCard-input-${field.id}`;\n        const required = this.props.requiredMetaFields.includes(field.id);\n        return (0, _preact.h)(\"fieldset\", {\n          key: field.id,\n          className: \"uppy-Dashboard-FileCard-fieldset\"\n        }, (0, _preact.h)(\"label\", {\n          className: \"uppy-Dashboard-FileCard-label\",\n          htmlFor: id\n        }, field.name), field.render !== undefined ? field.render({\n          value: this.state.formState[field.id],\n          onChange: newVal => this.updateMeta(newVal, field.id),\n          fieldCSSClasses,\n          required,\n          form: this.form.id\n        }, _preact.h) : (0, _preact.h)(\"input\", {\n          className: fieldCSSClasses.text,\n          id: id,\n          form: this.form.id,\n          type: field.type || 'text',\n          required: required,\n          value: this.state.formState[field.id],\n          placeholder: field.placeholder // If `form` attribute is not supported, we need to capture pressing Enter to avoid bubbling in case Uppy is\n          // embedded inside a <form>.\n          ,\n          onKeyUp: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyDown: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onKeyPress: 'form' in HTMLInputElement.prototype ? undefined : this.saveOnEnter,\n          onInput: ev => this.updateMeta(ev.target.value, field.id),\n          \"data-uppy-super-focusable\": true\n        }));\n      });\n    };\n\n    const _file = this.props.files[this.props.fileCardFor];\n\n    const _metaFields = this.getMetaFields() || [];\n\n    const storedMetaData = {};\n\n    _metaFields.forEach(field => {\n      storedMetaData[field.id] = _file.meta[field.id] || '';\n    });\n\n    this.state = {\n      formState: storedMetaData\n    };\n    this.form.id = (0, _nonSecure.nanoid)();\n  } // TODO(aduh95): move this to `UNSAFE_componentWillMount` when updating to Preact X+.\n\n\n  componentWillMount() {\n    // eslint-disable-line react/no-deprecated\n    this.form.addEventListener('submit', this.handleSave);\n    document.body.appendChild(this.form);\n  }\n\n  componentWillUnmount() {\n    this.form.removeEventListener('submit', this.handleSave);\n    document.body.removeChild(this.form);\n  }\n\n  getMetaFields() {\n    return typeof this.props.metaFields === 'function' ? this.props.metaFields(this.props.files[this.props.fileCardFor]) : this.props.metaFields;\n  }\n\n  render() {\n    const file = this.props.files[this.props.fileCardFor];\n    const showEditButton = this.props.canEditFile(file);\n    return (0, _preact.h)(\"div\", {\n      className: classNames('uppy-Dashboard-FileCard', this.props.className),\n      \"data-uppy-panelType\": \"FileCard\",\n      onDragOver: ignoreEvent,\n      onDragLeave: ignoreEvent,\n      onDrop: ignoreEvent,\n      onPaste: ignoreEvent\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-bar\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-DashboardContent-title\",\n      role: \"heading\",\n      \"aria-level\": \"1\"\n    }, this.props.i18nArray('editing', {\n      file: (0, _preact.h)(\"span\", {\n        className: \"uppy-DashboardContent-titleFile\"\n      }, file.meta ? file.meta.name : file.name)\n    })), (0, _preact.h)(\"button\", {\n      className: \"uppy-DashboardContent-back\",\n      type: \"button\",\n      form: this.form.id,\n      title: this.props.i18n('finishEditingFile'),\n      onClick: this.handleCancel\n    }, this.props.i18n('cancel'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-inner\"\n    }, (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-preview\",\n      style: {\n        backgroundColor: getFileTypeIcon(file.type).color\n      }\n    }, (0, _preact.h)(FilePreview, {\n      file: file\n    }), showEditButton && (0, _preact.h)(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",\n      onClick: event => {\n        // When opening the image editor we want to save any meta fields changes.\n        // Otherwise it's confusing for the user to click save in the editor,\n        // but the changes here are discarded. This bypasses validation,\n        // but we are okay with that.\n        this.handleSave(event);\n        this.props.openFileEditor(file);\n      },\n      form: this.form.id\n    }, this.props.i18n('editFile'))), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-info\"\n    }, this.renderMetaFields()), (0, _preact.h)(\"div\", {\n      className: \"uppy-Dashboard-FileCard-actions\"\n    }, (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\" // If `form` attribute is supported, we want a submit button to trigger the form validation.\n      // Otherwise, fallback to a classic button with a onClick event handler.\n      ,\n      type: 'form' in HTMLButtonElement.prototype ? 'submit' : 'button',\n      onClick: 'form' in HTMLButtonElement.prototype ? undefined : this.handleSave,\n      form: this.form.id\n    }, this.props.i18n('saveChanges')), (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",\n      type: \"button\",\n      onClick: this.handleCancel,\n      form: this.form.id\n    }, this.props.i18n('cancel')))));\n  }\n\n}\n\nmodule.exports = FileCard;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nconst classNames = require(\"classnames\");\n\nconst transitionName = 'uppy-transition-slideDownUp';\nconst duration = 250;\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\n\nclass Slide extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      cachedChildren: null,\n      className: ''\n    };\n  } // TODO: refactor to stable lifecycle method\n  // eslint-disable-next-line\n\n\n  componentWillUpdate(nextProps) {\n    const {\n      cachedChildren\n    } = this.state;\n    const child = (0, _preact.toChildArray)(nextProps.children)[0];\n    if (cachedChildren === child) return null;\n    const patch = {\n      cachedChildren: child\n    }; // Enter transition\n\n    if (child && !cachedChildren) {\n      patch.className = `${transitionName}-enter`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.leaveTimeout);\n      this.leaveTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        // Force it to render before we add the active class\n        // this.base.getBoundingClientRect()\n        this.setState({\n          className: `${transitionName}-enter ${transitionName}-enter-active`\n        });\n        this.enterTimeout = setTimeout(() => {\n          this.setState({\n            className: ''\n          });\n        }, duration);\n      });\n    } // Leave transition\n\n\n    if (cachedChildren && !child && this.leaveTimeout === undefined) {\n      patch.cachedChildren = cachedChildren;\n      patch.className = `${transitionName}-leave`;\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.enterTimeout);\n      this.enterTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(() => {\n        this.setState({\n          className: `${transitionName}-leave ${transitionName}-leave-active`\n        });\n        this.leaveTimeout = setTimeout(() => {\n          this.setState({\n            cachedChildren: null,\n            className: ''\n          });\n        }, duration);\n      });\n    } // eslint-disable-next-line\n\n\n    this.setState(patch);\n  }\n\n  render() {\n    const {\n      cachedChildren,\n      className\n    } = this.state;\n\n    if (!cachedChildren) {\n      return null;\n    }\n\n    return (0, _preact.cloneElement)(cachedChildren, {\n      className: classNames(className, cachedChildren.props.className)\n    });\n  }\n\n}\n\nmodule.exports = Slide;","\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // When `inline: false`, used as the screen reader label for the button that closes the modal.\n    closeModal: 'Close Modal',\n    // Used as the screen reader label for the plus (+) button that shows the “Add more files” screen\n    addMoreFiles: 'Add more files',\n    addingMoreFiles: 'Adding more files',\n    // Used as the header for import panels, e.g., “Import from Google Drive”.\n    importFrom: 'Import from %{name}',\n    // When `inline: false`, used as the screen reader label for the dashboard modal.\n    dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n    // When `inline: true`, used as the screen reader label for the dashboard area.\n    dashboardTitle: 'Uppy Dashboard',\n    // Shown in the Informer when a link to a file was copied to the clipboard.\n    copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n    // Used when a link cannot be copied automatically — the user has to select the text from the\n    // input element below this string.\n    copyLinkToClipboardFallback: 'Copy the URL below',\n    // Used as the hover title and screen reader label for buttons that copy a file link.\n    copyLink: 'Copy link',\n    back: 'Back',\n    // Used as the screen reader label for buttons that remove a file.\n    removeFile: 'Remove file',\n    // Used as the screen reader label for buttons that open the metadata editor panel for a file.\n    editFile: 'Edit file',\n    // Shown in the panel header for the metadata editor. Rendered as “Editing image.png”.\n    editing: 'Editing %{file}',\n    // Used as the screen reader label for the button that saves metadata edits and returns to the\n    // file list view.\n    finishEditingFile: 'Finish editing file',\n    saveChanges: 'Save changes',\n    // Used as the label for the tab button that opens the system file selection dialog.\n    myDevice: 'My Device',\n    dropHint: 'Drop your files here',\n    // Used as the hover text and screen reader label for file progress indicators when\n    // they have been fully uploaded.\n    uploadComplete: 'Upload complete',\n    uploadPaused: 'Upload paused',\n    // Used as the hover text and screen reader label for the buttons to resume paused uploads.\n    resumeUpload: 'Resume upload',\n    // Used as the hover text and screen reader label for the buttons to pause uploads.\n    pauseUpload: 'Pause upload',\n    // Used as the hover text and screen reader label for the buttons to retry failed uploads.\n    retryUpload: 'Retry upload',\n    // Used as the hover text and screen reader label for the buttons to cancel uploads.\n    cancelUpload: 'Cancel upload',\n    // Used in a title, how many files are currently selected\n    xFilesSelected: {\n      0: '%{smart_count} file selected',\n      1: '%{smart_count} files selected'\n    },\n    uploadingXFiles: {\n      0: 'Uploading %{smart_count} file',\n      1: 'Uploading %{smart_count} files'\n    },\n    processingXFiles: {\n      0: 'Processing %{smart_count} file',\n      1: 'Processing %{smart_count} files'\n    },\n    // The \"powered by Uppy\" link at the bottom of the Dashboard.\n    poweredBy: 'Powered by %{uppy}',\n    addMore: 'Add more',\n    editFileWithFilename: 'Edit file %{file}',\n    save: 'Save',\n    cancel: 'Cancel',\n    dropPasteFiles: 'Drop files here or %{browseFiles}',\n    dropPasteFolders: 'Drop files here or %{browseFolders}',\n    dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n    dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n    dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n    dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n    importFiles: 'Import files from:',\n    browseFiles: 'browse files',\n    browseFolders: 'browse folders',\n    recoveredXFiles: {\n      0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n      1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.'\n    },\n    recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n    sessionRestored: 'Session restored',\n    reSelect: 'Re-select',\n    missingRequiredMetaFields: {\n      0: 'Missing required meta field: %{fields}.',\n      1: 'Missing required meta fields: %{fields}.'\n    }\n  }\n};","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\nvar getRandomValue = require('./lib/getRandomValue.js');\n\nvar c = 0,\n  blockSize = 4,\n  base = 36,\n  discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n  return pad((getRandomValue() *\n    discreteValues << 0)\n    .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n  c = c < discreteValues ? c : 0;\n  c++; // this is not subliminal\n  return c - 1;\n}\n\nfunction cuid () {\n  // Starting with a lowercase letter makes\n  // it HTML element ID friendly.\n  var letter = 'c', // hard-coded allows for sequential access\n\n    // timestamp\n    // warning: this exposes the exact date and time\n    // that the uid was created.\n    timestamp = (new Date().getTime()).toString(base),\n\n    // Prevent same-machine collisions.\n    counter = pad(safeCounter().toString(base), blockSize),\n\n    // A few chars to generate distinct ids for different\n    // clients (so different computers are far less\n    // likely to generate the same id)\n    print = fingerprint(),\n\n    // Grab some more chars from Math.random()\n    random = randomBlock() + randomBlock();\n\n  return letter + timestamp + counter + print + random;\n}\n\ncuid.slug = function slug () {\n  var date = new Date().getTime().toString(36),\n    counter = safeCounter().toString(36).slice(-4),\n    print = fingerprint().slice(0, 1) +\n      fingerprint().slice(-1),\n    random = randomBlock().slice(-2);\n\n  return date.slice(-2) +\n    counter + print + random;\n};\n\ncuid.isCuid = function isCuid (stringToCheck) {\n  if (typeof stringToCheck !== 'string') return false;\n  if (stringToCheck.startsWith('c')) return true;\n  return false;\n};\n\ncuid.isSlug = function isSlug (stringToCheck) {\n  if (typeof stringToCheck !== 'string') return false;\n  var stringLength = stringToCheck.length;\n  if (stringLength >= 7 && stringLength <= 10) return true;\n  return false;\n};\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env).length;\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n  navigator.userAgent.length).toString(36) +\n  globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n  return clientId;\n};\n","\nvar getRandomValue;\n\nvar crypto = typeof window !== 'undefined' &&\n  (window.crypto || window.msCrypto) ||\n  typeof self !== 'undefined' &&\n  self.crypto;\n\nif (crypto) {\n    var lim = Math.pow(2, 32) - 1;\n    getRandomValue = function () {\n        return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim);\n    };\n} else {\n    getRandomValue = Math.random;\n}\n\nmodule.exports = getRandomValue;\n","\"use strict\";\n\nfunction settle(promises) {\n  const resolutions = [];\n  const rejections = [];\n\n  function resolved(value) {\n    resolutions.push(value);\n  }\n\n  function rejected(error) {\n    rejections.push(error);\n  }\n\n  const wait = Promise.all(promises.map(promise => promise.then(resolved, rejected)));\n  return wait.then(() => {\n    return {\n      successful: resolutions,\n      failed: rejections\n    };\n  });\n}\n\nmodule.exports = settle;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nvar _core = require(\"@uppy/core\");\n\nvar _companionClient = require(\"@uppy/companion-client\");\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n\nconst UrlUI = require(\"./UrlUI.js\");\n\nconst forEachDroppedOrPastedUrl = require(\"./utils/forEachDroppedOrPastedUrl.js\");\n\nconst packageJson = {\n  \"version\": \"2.2.1\"\n};\n\nconst locale = require(\"./locale.js\");\n\nfunction UrlIcon() {\n  return (0, _preact.h)(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"32\",\n    height: \"32\",\n    viewBox: \"0 0 32 32\"\n  }, (0, _preact.h)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, (0, _preact.h)(\"rect\", {\n    className: \"uppy-ProviderIconBg\",\n    fill: \"#FF753E\",\n    width: \"32\",\n    height: \"32\",\n    rx: \"16\"\n  }), (0, _preact.h)(\"path\", {\n    d: \"M22.788 15.389l-2.199 2.19a3.184 3.184 0 0 1-.513.437c-.806.584-1.686.876-2.638.876a4.378 4.378 0 0 1-3.519-1.752c-.22-.292-.146-.802.147-1.021.293-.22.806-.146 1.026.146.953 1.313 2.785 1.532 4.105.583a.571.571 0 0 0 .293-.292l2.199-2.189c1.1-1.167 1.1-2.992-.073-4.086a2.976 2.976 0 0 0-4.105 0l-1.246 1.24a.71.71 0 0 1-1.026 0 .703.703 0 0 1 0-1.022l1.246-1.24a4.305 4.305 0 0 1 6.083 0c1.833 1.605 1.906 4.451.22 6.13zm-7.183 5.035l-1.246 1.24a2.976 2.976 0 0 1-4.105 0c-1.172-1.094-1.172-2.991-.073-4.086l2.2-2.19.292-.291c.66-.438 1.393-.657 2.2-.584.805.146 1.465.51 1.905 1.168.22.292.733.365 1.026.146.293-.22.367-.73.147-1.022-.733-.949-1.76-1.532-2.859-1.678-1.1-.22-2.272.073-3.225.802l-.44.438-2.199 2.19c-1.686 1.75-1.612 4.524.074 6.202.88.803 1.979 1.241 3.078 1.241 1.1 0 2.199-.438 3.079-1.24l1.246-1.241a.703.703 0 0 0 0-1.022c-.294-.292-.807-.365-1.1-.073z\",\n    fill: \"#FFF\",\n    fillRule: \"nonzero\"\n  })));\n}\n\nfunction addProtocolToURL(url) {\n  const protocolRegex = /^[a-z0-9]+:\\/\\//;\n  const defaultProtocol = 'http://';\n\n  if (protocolRegex.test(url)) {\n    return url;\n  }\n\n  return defaultProtocol + url;\n}\n\nfunction canHandleRootDrop(e) {\n  const items = toArray(e.dataTransfer.items);\n  const urls = items.filter(item => item.kind === 'string' && item.type === 'text/uri-list');\n  return urls.length > 0;\n}\n\nfunction checkIfCorrectURL(url) {\n  if (!url) return false;\n  const protocol = url.match(/^([a-z0-9]+):\\/\\//)[1];\n\n  if (protocol !== 'http' && protocol !== 'https') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction getFileNameFromUrl(url) {\n  const {\n    pathname\n  } = new URL(url);\n  return pathname.substring(pathname.lastIndexOf('/') + 1);\n}\n/**\n * Url\n *\n */\n\n\nclass Url extends _core.UIPlugin {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.id = this.opts.id || 'Url';\n    this.title = this.opts.title || 'Link';\n    this.type = 'acquirer';\n\n    this.icon = () => (0, _preact.h)(UrlIcon, null); // Set default options and locale\n\n\n    this.defaultLocale = locale;\n    const defaultOptions = {};\n    this.opts = { ...defaultOptions,\n      ...opts\n    };\n    this.i18nInit();\n    this.hostname = this.opts.companionUrl;\n\n    if (!this.hostname) {\n      throw new Error('Companion hostname is required, please consult https://uppy.io/docs/companion');\n    } // Bind all event handlers for referencability\n\n\n    this.getMeta = this.getMeta.bind(this);\n    this.addFile = this.addFile.bind(this);\n    this.handleRootDrop = this.handleRootDrop.bind(this);\n    this.handleRootPaste = this.handleRootPaste.bind(this);\n    this.client = new _companionClient.RequestClient(uppy, {\n      companionUrl: this.opts.companionUrl,\n      companionHeaders: this.opts.companionHeaders,\n      companionCookiesRule: this.opts.companionCookiesRule\n    });\n  }\n\n  getMeta(url) {\n    return this.client.post('url/meta', {\n      url\n    }).then(res => {\n      if (res.error) {\n        this.uppy.log('[URL] Error:');\n        this.uppy.log(res.error);\n        throw new Error('Failed to fetch the file');\n      }\n\n      return res;\n    });\n  }\n\n  async addFile(protocollessUrl, optionalMeta) {\n    if (optionalMeta === void 0) {\n      optionalMeta = undefined;\n    }\n\n    const url = this.addProtocolToURL(protocollessUrl);\n\n    if (!this.checkIfCorrectURL(url)) {\n      this.uppy.log(`[URL] Incorrect URL entered: ${url}`);\n      this.uppy.info(this.i18n('enterCorrectUrl'), 'error', 4000);\n      return undefined;\n    }\n\n    try {\n      const meta = await this.getMeta(url);\n      const tagFile = {\n        meta: optionalMeta,\n        source: this.id,\n        name: this.getFileNameFromUrl(url),\n        type: meta.type,\n        data: {\n          size: meta.size\n        },\n        isRemote: true,\n        body: {\n          url\n        },\n        remote: {\n          companionUrl: this.opts.companionUrl,\n          url: `${this.hostname}/url/get`,\n          body: {\n            fileId: url,\n            url\n          },\n          providerOptions: this.client.opts\n        }\n      };\n      this.uppy.log('[Url] Adding remote file');\n\n      try {\n        return this.uppy.addFile(tagFile);\n      } catch (err) {\n        if (!err.isRestriction) {\n          this.uppy.log(err);\n        }\n\n        return err;\n      }\n    } catch (err) {\n      this.uppy.log(err);\n      this.uppy.info({\n        message: this.i18n('failedToFetch'),\n        details: err\n      }, 'error', 4000);\n      return err;\n    }\n  }\n\n  handleRootDrop(e) {\n    forEachDroppedOrPastedUrl(e.dataTransfer, 'drop', url => {\n      this.uppy.log(`[URL] Adding file from dropped url: ${url}`);\n      this.addFile(url);\n    });\n  }\n\n  handleRootPaste(e) {\n    forEachDroppedOrPastedUrl(e.clipboardData, 'paste', url => {\n      this.uppy.log(`[URL] Adding file from pasted url: ${url}`);\n      this.addFile(url);\n    });\n  }\n\n  render() {\n    return (0, _preact.h)(UrlUI, {\n      i18n: this.i18n,\n      addFile: this.addFile\n    });\n  }\n\n  install() {\n    const {\n      target\n    } = this.opts;\n\n    if (target) {\n      this.mount(target, this);\n    }\n  }\n\n  uninstall() {\n    this.unmount();\n  }\n\n}\n\nUrl.VERSION = packageJson.version;\nmodule.exports = Url; // TODO: remove from prototype in the next major.\n\nUrl.prototype.addProtocolToURL = addProtocolToURL;\nUrl.prototype.canHandleRootDrop = canHandleRootDrop;\nUrl.prototype.checkIfCorrectURL = checkIfCorrectURL;\nUrl.prototype.getFileNameFromUrl = getFileNameFromUrl;","'use strict';\n/**\n * Manages communications with Companion\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = exports.SearchProvider = exports.RequestClient = exports.Provider = void 0;\n\nconst _0 = require(\"./RequestClient.js\");\n\nexports.RequestClient = _0;\n\nconst _1 = require(\"./Provider.js\");\n\nexports.Provider = _1;\n\nconst _2 = require(\"./SearchProvider.js\");\n\nexports.SearchProvider = _2;\n\nconst _3 = require(\"./Socket.js\");\n\nexports.Socket = _3;","\"use strict\";\n\nconst NetworkError = require(\"./NetworkError.js\");\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\n\n\nfunction fetchWithNetworkError() {\n  return fetch(...arguments).catch(err => {\n    if (err.name === 'AbortError') {\n      throw err;\n    } else {\n      throw new NetworkError(err);\n    }\n  });\n}\n\nmodule.exports = fetchWithNetworkError;","\"use strict\";\n\nclass NetworkError extends Error {\n  constructor(error, xhr) {\n    if (xhr === void 0) {\n      xhr = null;\n    }\n\n    super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n    this.cause = error;\n    this.isNetworkError = true;\n    this.request = xhr;\n  }\n\n}\n\nmodule.exports = NetworkError;","\"use strict\";\n\nconst hasProperty = require(\"./hasProperty.js\");\n\nclass ErrorWithCause extends Error {\n  constructor(message, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    super(message);\n    this.cause = options.cause;\n\n    if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n      this.isNetworkError = this.cause.isNetworkError;\n    }\n  }\n\n}\n\nmodule.exports = ErrorWithCause;","'use strict';\n\nclass AuthError extends Error {\n  constructor() {\n    super('Authorization required');\n    this.name = 'AuthError';\n    this.isAuthError = true;\n  }\n\n}\n\nmodule.exports = AuthError;","'use strict';\n\nvar tokenStorage = require(\"./tokenStorage.js\");\n\nconst RequestClient = require(\"./RequestClient.js\");\n\nconst getName = id => {\n  return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');\n};\n\nclass Provider extends RequestClient {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.provider = opts.provider;\n    this.id = this.provider;\n    this.name = this.opts.name || getName(this.id);\n    this.pluginId = this.opts.pluginId;\n    this.tokenKey = `companion-${this.pluginId}-auth-token`;\n    this.companionKeysParams = this.opts.companionKeysParams;\n    this.preAuthToken = null;\n  }\n\n  headers() {\n    return Promise.all([super.headers(), this.getAuthToken()]).then(_ref => {\n      let [headers, token] = _ref;\n      const authHeaders = {};\n\n      if (token) {\n        authHeaders['uppy-auth-token'] = token;\n      }\n\n      if (this.companionKeysParams) {\n        authHeaders['uppy-credentials-params'] = btoa(JSON.stringify({\n          params: this.companionKeysParams\n        }));\n      }\n\n      return { ...headers,\n        ...authHeaders\n      };\n    });\n  }\n\n  onReceiveResponse(response) {\n    response = super.onReceiveResponse(response); // eslint-disable-line no-param-reassign\n\n    const plugin = this.uppy.getPlugin(this.pluginId);\n    const oldAuthenticated = plugin.getPluginState().authenticated;\n    const authenticated = oldAuthenticated ? response.status !== 401 : response.status < 400;\n    plugin.setPluginState({\n      authenticated\n    });\n    return response;\n  }\n\n  setAuthToken(token) {\n    return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey, token);\n  }\n\n  getAuthToken() {\n    return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey);\n  }\n  /**\n   * Ensure we have a preauth token if necessary. Attempts to fetch one if we don't,\n   * or rejects if loading one fails.\n   */\n\n\n  async ensurePreAuth() {\n    if (this.companionKeysParams && !this.preAuthToken) {\n      await this.fetchPreAuthToken();\n\n      if (!this.preAuthToken) {\n        throw new Error('Could not load authentication data required for third-party login. Please try again later.');\n      }\n    }\n  }\n\n  authUrl(queries) {\n    if (queries === void 0) {\n      queries = {};\n    }\n\n    const params = new URLSearchParams(queries);\n\n    if (this.preAuthToken) {\n      params.set('uppyPreAuthToken', this.preAuthToken);\n    }\n\n    return `${this.hostname}/${this.id}/connect?${params}`;\n  }\n\n  fileUrl(id) {\n    return `${this.hostname}/${this.id}/get/${id}`;\n  }\n\n  async fetchPreAuthToken() {\n    if (!this.companionKeysParams) {\n      return;\n    }\n\n    try {\n      const res = await this.post(`${this.id}/preauth/`, {\n        params: this.companionKeysParams\n      });\n      this.preAuthToken = res.token;\n    } catch (err) {\n      this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${err}`, 'warning');\n    }\n  }\n\n  list(directory) {\n    return this.get(`${this.id}/list/${directory || ''}`);\n  }\n\n  logout() {\n    return this.get(`${this.id}/logout`).then(response => Promise.all([response, this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey)])).then(_ref2 => {\n      let [response] = _ref2;\n      return response;\n    });\n  }\n\n  static initPlugin(plugin, opts, defaultOpts) {\n    /* eslint-disable no-param-reassign */\n    plugin.type = 'acquirer';\n    plugin.files = [];\n\n    if (defaultOpts) {\n      plugin.opts = { ...defaultOpts,\n        ...opts\n      };\n    }\n\n    if (opts.serverUrl || opts.serverPattern) {\n      throw new Error('`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`');\n    }\n\n    if (opts.companionAllowedHosts) {\n      const pattern = opts.companionAllowedHosts; // validate companionAllowedHosts param\n\n      if (typeof pattern !== 'string' && !Array.isArray(pattern) && !(pattern instanceof RegExp)) {\n        throw new TypeError(`${plugin.id}: the option \"companionAllowedHosts\" must be one of string, Array, RegExp`);\n      }\n\n      plugin.opts.companionAllowedHosts = pattern;\n    } else if (/^(?!https?:\\/\\/).*$/i.test(opts.companionUrl)) {\n      // does not start with https://\n      plugin.opts.companionAllowedHosts = `https://${opts.companionUrl.replace(/^\\/\\//, '')}`;\n    } else {\n      plugin.opts.companionAllowedHosts = new URL(opts.companionUrl).origin;\n    }\n\n    plugin.storage = plugin.opts.storage || tokenStorage;\n    /* eslint-enable no-param-reassign */\n  }\n\n}\n\nmodule.exports = Provider;","'use strict';\n/**\n * This module serves as an Async wrapper for LocalStorage\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getItem = getItem;\nexports.removeItem = removeItem;\nexports.setItem = setItem;\n\nfunction setItem(key, value) {\n  return new Promise(resolve => {\n    localStorage.setItem(key, value);\n    resolve();\n  });\n}\n\nfunction getItem(key) {\n  return Promise.resolve(localStorage.getItem(key));\n}\n\nfunction removeItem(key) {\n  return new Promise(resolve => {\n    localStorage.removeItem(key);\n    resolve();\n  });\n}","'use strict';\n\nconst RequestClient = require(\"./RequestClient.js\");\n\nconst getName = id => {\n  return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');\n};\n\nclass SearchProvider extends RequestClient {\n  constructor(uppy, opts) {\n    super(uppy, opts);\n    this.provider = opts.provider;\n    this.id = this.provider;\n    this.name = this.opts.name || getName(this.id);\n    this.pluginId = this.opts.pluginId;\n  }\n\n  fileUrl(id) {\n    return `${this.hostname}/search/${this.id}/get/${id}`;\n  }\n\n  search(text, queries) {\n    return this.get(`search/${this.id}/list?q=${encodeURIComponent(text)}${queries ? `&${queries}` : ''}`);\n  }\n\n}\n\nmodule.exports = SearchProvider;","\"use strict\";\n\nlet _Symbol$for, _Symbol$for2;\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nconst ee = require(\"namespace-emitter\");\n\nvar _queued = /*#__PURE__*/_classPrivateFieldLooseKey(\"queued\");\n\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\n\nvar _isOpen = /*#__PURE__*/_classPrivateFieldLooseKey(\"isOpen\");\n\nvar _socket = /*#__PURE__*/_classPrivateFieldLooseKey(\"socket\");\n\nvar _handleMessage = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleMessage\");\n\n_Symbol$for = Symbol.for('uppy test: getSocket');\n_Symbol$for2 = Symbol.for('uppy test: getQueued');\n\nclass UppySocket {\n  constructor(opts) {\n    Object.defineProperty(this, _queued, {\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, _emitter, {\n      writable: true,\n      value: ee()\n    });\n    Object.defineProperty(this, _isOpen, {\n      writable: true,\n      value: false\n    });\n    Object.defineProperty(this, _socket, {\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, _handleMessage, {\n      writable: true,\n      value: e => {\n        try {\n          const message = JSON.parse(e.data);\n          this.emit(message.action, message.payload);\n        } catch (err) {\n          // TODO: use a more robust error handler.\n          console.log(err); // eslint-disable-line no-console\n        }\n      }\n    });\n    this.opts = opts;\n\n    if (!opts || opts.autoOpen !== false) {\n      this.open();\n    }\n  }\n\n  get isOpen() {\n    return _classPrivateFieldLooseBase(this, _isOpen)[_isOpen];\n  }\n\n  [_Symbol$for]() {\n    return _classPrivateFieldLooseBase(this, _socket)[_socket];\n  }\n\n  [_Symbol$for2]() {\n    return _classPrivateFieldLooseBase(this, _queued)[_queued];\n  }\n\n  open() {\n    _classPrivateFieldLooseBase(this, _socket)[_socket] = new WebSocket(this.opts.target);\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onopen = () => {\n      _classPrivateFieldLooseBase(this, _isOpen)[_isOpen] = true;\n\n      while (_classPrivateFieldLooseBase(this, _queued)[_queued].length > 0 && _classPrivateFieldLooseBase(this, _isOpen)[_isOpen]) {\n        const first = _classPrivateFieldLooseBase(this, _queued)[_queued].shift();\n\n        this.send(first.action, first.payload);\n      }\n    };\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onclose = () => {\n      _classPrivateFieldLooseBase(this, _isOpen)[_isOpen] = false;\n    };\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].onmessage = _classPrivateFieldLooseBase(this, _handleMessage)[_handleMessage];\n  }\n\n  close() {\n    var _classPrivateFieldLoo;\n\n    (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _socket)[_socket]) == null ? void 0 : _classPrivateFieldLoo.close();\n  }\n\n  send(action, payload) {\n    // attach uuid\n    if (!_classPrivateFieldLooseBase(this, _isOpen)[_isOpen]) {\n      _classPrivateFieldLooseBase(this, _queued)[_queued].push({\n        action,\n        payload\n      });\n\n      return;\n    }\n\n    _classPrivateFieldLooseBase(this, _socket)[_socket].send(JSON.stringify({\n      action,\n      payload\n    }));\n  }\n\n  on(action, handler) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(action, handler);\n  }\n\n  emit(action, payload) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(action, payload);\n  }\n\n  once(action, handler) {\n    _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(action, handler);\n  }\n\n}\n\nmodule.exports = UppySocket;","\"use strict\";\n\nvar _preact = require(\"preact\");\n\nclass UrlUI extends _preact.Component {\n  constructor(props) {\n    super(props);\n    this.handleKeyPress = this.handleKeyPress.bind(this);\n    this.handleClick = this.handleClick.bind(this);\n  }\n\n  componentDidMount() {\n    this.input.value = '';\n  }\n\n  handleKeyPress(ev) {\n    const {\n      addFile\n    } = this.props;\n\n    if (ev.keyCode === 13) {\n      addFile(this.input.value);\n    }\n  }\n\n  handleClick() {\n    const {\n      addFile\n    } = this.props;\n    addFile(this.input.value);\n  }\n\n  render() {\n    const {\n      i18n\n    } = this.props;\n    return (0, _preact.h)(\"div\", {\n      className: \"uppy-Url\"\n    }, (0, _preact.h)(\"input\", {\n      className: \"uppy-u-reset uppy-c-textInput uppy-Url-input\",\n      type: \"text\",\n      \"aria-label\": i18n('enterUrlToImport'),\n      placeholder: i18n('enterUrlToImport'),\n      onKeyUp: this.handleKeyPress,\n      ref: input => {\n        this.input = input;\n      },\n      \"data-uppy-super-focusable\": true\n    }), (0, _preact.h)(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Url-importButton\",\n      type: \"button\",\n      onClick: this.handleClick\n    }, i18n('import')));\n  }\n\n}\n\nmodule.exports = UrlUI;","\"use strict\";\n\nconst toArray = require(\"@uppy/utils/lib/toArray\");\n/*\n  SITUATION\n\n    1. Cross-browser dataTransfer.items\n\n      paste in chrome [Copy Image]:\n      0: {kind: \"file\", type: \"image/png\"}\n      1: {kind: \"string\", type: \"text/html\"}\n      paste in safari [Copy Image]:\n      0: {kind: \"file\", type: \"image/png\"}\n      1: {kind: \"string\", type: \"text/html\"}\n      2: {kind: \"string\", type: \"text/plain\"}\n      3: {kind: \"string\", type: \"text/uri-list\"}\n      paste in firefox [Copy Image]:\n      0: {kind: \"file\", type: \"image/png\"}\n      1: {kind: \"string\", type: \"text/html\"}\n\n      paste in chrome [Copy Image Address]:\n      0: {kind: \"string\", type: \"text/plain\"}\n      paste in safari [Copy Image Address]:\n      0: {kind: \"string\", type: \"text/plain\"}\n      1: {kind: \"string\", type: \"text/uri-list\"}\n      paste in firefox [Copy Image Address]:\n      0: {kind: \"string\", type: \"text/plain\"}\n\n      drop in chrome [from browser]:\n      0: {kind: \"string\", type: \"text/uri-list\"}\n      1: {kind: \"string\", type: \"text/html\"}\n      drop in safari [from browser]:\n      0: {kind: \"string\", type: \"text/uri-list\"}\n      1: {kind: \"string\", type: \"text/html\"}\n      2: {kind: \"file\", type: \"image/png\"}\n      drop in firefox [from browser]:\n      0: {kind: \"string\", type: \"text/uri-list\"}\n      1: {kind: \"string\", type: \"text/x-moz-url\"}\n      2: {kind: \"string\", type: \"text/plain\"}\n\n    2. We can determine if it's a 'copypaste' or a 'drop', but we can't discern between [Copy Image] and [Copy Image Address]\n\n  CONCLUSION\n\n    1. 'paste' ([Copy Image] or [Copy Image Address], we can't discern between these two)\n      Don't do anything if there is 'file' item. .handlePaste in the DashboardPlugin will deal with all 'file' items.\n      If there are no 'file' items - handle 'text/plain' items.\n\n    2. 'drop'\n      Take 'text/uri-list' items. Safari has an additional item of .kind === 'file', and you may worry about the item being\n      duplicated (first by DashboardPlugin, and then by UrlPlugin, now), but don't. Directory handling code won't pay\n      attention to this particular item of kind 'file'.\n*/\n\n/**\n * Finds all links dropped/pasted from one browser window to another.\n *\n * @param {object} dataTransfer - DataTransfer instance, e.g. e.clipboardData, or e.dataTransfer\n * @param {string} isDropOrPaste - either 'drop' or 'paste'\n * @param {Function} callback - (urlString) => {}\n */\n\n\nfunction forEachDroppedOrPastedUrl(dataTransfer, isDropOrPaste, callback) {\n  const items = toArray(dataTransfer.items);\n  let urlItems;\n\n  switch (isDropOrPaste) {\n    case 'paste':\n      {\n        const atLeastOneFileIsDragged = items.some(item => item.kind === 'file');\n\n        if (atLeastOneFileIsDragged) {\n          return;\n        }\n\n        urlItems = items.filter(item => item.kind === 'string' && item.type === 'text/plain');\n        break;\n      }\n\n    case 'drop':\n      {\n        urlItems = items.filter(item => item.kind === 'string' && item.type === 'text/uri-list');\n        break;\n      }\n\n    default:\n      {\n        throw new Error(`isDropOrPaste must be either 'drop' or 'paste', but it's ${isDropOrPaste}`);\n      }\n  }\n\n  urlItems.forEach(item => {\n    item.getAsString(urlString => callback(urlString));\n  });\n}\n\nmodule.exports = forEachDroppedOrPastedUrl;","\"use strict\";\n\nmodule.exports = {\n  strings: {\n    // Label for the \"Import\" button.\n    import: 'Import',\n    // Placeholder text for the URL input.\n    enterUrlToImport: 'Enter URL to import a file',\n    // Error message shown if Companion could not load a URL.\n    failedToFetch: 'Companion failed to fetch this URL, please make sure it’s correct',\n    // Error message shown if the input does not look like a URL.\n    enterCorrectUrl: 'Incorrect URL: Please make sure you are entering a direct link to a file'\n  }\n};"],"sourceRoot":""}