{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/flickity/js/flickity.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/unipointer/unipointer.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/flickity/js/index.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/lodash/_arraySample.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/isArray.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/sample.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/flickity/js/cell.js","webpack:///./node_modules/flickity/js/slide.js","webpack:///./node_modules/flickity/js/animate.js","webpack:///./node_modules/flickity/js/drag.js","webpack:///./node_modules/unidragger/unidragger.js","webpack:///./node_modules/flickity/js/prev-next-button.js","webpack:///./node_modules/flickity/js/page-dots.js","webpack:///./node_modules/flickity/js/player.js","webpack:///./node_modules/flickity/js/add-remove-cell.js","webpack:///./node_modules/flickity/js/lazyload.js","webpack:///./node_modules/flickity-imagesloaded/flickity-imagesloaded.js","webpack:///./node_modules/imagesloaded/imagesloaded.js","webpack:///./node_modules/lodash/_baseRandom.js","webpack:///./node_modules/lodash/_baseSample.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./app/frontend/images/favicons/favicon.ico","webpack:///./app/frontend/images/favicons/favicon-16x16.png","webpack:///./app/frontend/images/favicons/favicon-32x32.png","webpack:///./app/frontend/images/favicons/apple-touch-icon.png","webpack:///./app/frontend/images/magic_modules/homepage_grid_module/hgm_pattern-0.png","webpack:///./app/frontend/images/magic_modules/homepage_grid_module/hgm_pattern-1.png","webpack:///./app/frontend/images/magic_modules/homepage_grid_module/hgm_pattern-2.png","webpack:///./app/frontend/images/magic_modules/homepage_grid_module/hgm_pattern-3.png","webpack:///./app/frontend/images/png/newsletter_logo.png","webpack:///./app/frontend/javascript/tufts_app.js","webpack:///./app/frontend/javascript/scripts/carousel.js","webpack:///./app/frontend/javascript/scripts/text_reveal.js","webpack:///./app/frontend/javascript/scripts/marquee.js","webpack:///./app/frontend/javascript/scripts/accordion.js","webpack:///./app/frontend/javascript/components/site_header.js","webpack:///./app/frontend/javascript/components/mobile_search_form.js","webpack:///./app/frontend/javascript/components/collection_search.js","webpack:///./app/frontend/javascript/components/program_grid.js","webpack:///./app/frontend/javascript/scripts/happening_today_badge.js","webpack:///./app/frontend/javascript/magic_modules/homepage_grid_module.js","webpack:///./app/frontend/javascript/utilities/index.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./app/frontend/javascript/controllers/application.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./app/frontend/javascript/controllers/hello_controller.js","webpack:///./app/frontend/javascript/controllers/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","iterator","obj","constructor","window","factory","matchesSelector","utils","a","b","prop","num","div","arraySlice","Array","slice","makeArray","isArray","undefined","length","removeFrom","ary","index","indexOf","splice","getParent","elem","selector","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","method","type","this","filterFindElements","elems","ffElems","forEach","HTMLElement","push","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","args","arguments","_this","setTimeout","apply","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","options","attr","getAttribute","JSON","parse","error","className","instance","data","EvEmitter","getSize","Cell","Slide","animatePrototype","getComputedStyle","moveElements","toElem","appendChild","shift","GUID","instances","Flickity","element","queryElement","flickityGUID","option","$element","extend","defaults","_create","accessibility","cellAlign","freeScrollFriction","friction","namespaceJQueryEvents","percentPosition","resize","selectedAttraction","setGallerySize","createMethods","proto","id","guid","eventName","selectedIndex","restingFrames","x","velocity","originSide","rightToLeft","viewport","createElement","_createSlider","watchCSS","on","listener","activate","opts","isActive","classList","add","_filterFindCellElements","children","slider","reloadCells","tabIndex","emitEvent","selectInitialIndex","isInitActivated","dispatchEvent","style","cellSelector","cells","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","slides","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","size","outerWidth","len","cell","setPosition","Math","max","outerHeight","slideableWidth","updateSlides","_containSlides","slidesWidth","target","slide","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","updateTarget","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","innerWidth","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","selectedSlide","wrapAround","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","Event","trigger","select","isWrap","isInstant","_wrapSelect","modulo","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","destroy","removeChild","removeAttribute","removeEventListener","allOff","removeData","bridget","setJQuery","jq","events","_events","listeners","once","onceEvents","_onceEvents","off","onceListeners","noop","Unipointer","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","isPointerDown","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","_Symbol","getRawTag","objectToString","symToStringTag","getStyleSize","parseFloat","isNaN","logError","message","measurements","measurementsLength","getZeroSize","width","innerHeight","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","documentElement","round","nodeType","display","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","baseRandom","array","freeGlobal","freeSelf","self","root","Function","global","webpackPolyfill","deprecate","paths","arraySample","baseSample","collection","matchesMethod","ElemProto","Element","matches","prefixes","parent","position","setAttribute","side","renderPosition","setDefaultTarget","marginProperty","getPositionValue","wrapShift","isOriginLeft","lastCell","lastMargin","isAnimating","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","translateX","transform","firstSlide","positionX","progress","isFreeScrolling","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","Unidragger","draggable","dragThreshold","_touchActionValue","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","focusNodes","INPUT","TEXTAREA","SELECT","nodeName","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","isTouchScrolling","_dragPointerUp","dragStart","dragStartPosition","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","staticClick","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","_bindHandles","touchAction","handle","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","isClickType","isOkay","focused","blur","isDragging","_dragStart","_dragEnd","_staticClick","isPreventingClicks","onclick","isIgnoringMouseUp","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","arrowShape","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","insert","isAppend","insertCellElement","insertBefore","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","imagesLoaded","_createImagesLoaded","onImagesLoadedProgress","$","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","fn","promise","nativeFloor","nativeRandom","random","lower","upper","values","baseValues","keys","arrayMap","props","iteratee","result","arrayLikeKeys","baseKeys","isArrayLike","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","baseIsArguments","isObjectLike","objectProto","propertyIsEnumerable","baseGetTag","g","e","nativeObjectToString","toString","isOwn","tag","unmasked","stubFalse","freeExports","freeModule","Buffer","reIsUint","test","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isLength","typedArrayTags","func","freeProcess","process","types","require","binding","isPrototype","nativeKeys","Ctor","overArg","arg","isFunction","isObject","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","configurable","writable","err","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","done","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","resolve","reject","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","rootFontSize","App","getRootFontSize","breakpoints","xl","lg","md","sm","xs","breakpoint","getBreakpoint","config","throttle","debounce","reduce","acc","eventConfig","originalEvent","previousBreakpoint","currentBreakpoint","current","fontSize","warn","assign","viewportWidth","entries","find","minViewportSize","Carousel","setElements","initializeFlickity","defaultState","setUpEvents","maxIndex","carouselWrapper","previousControls","previousControl","nextControls","nextControl","caption","defaultConfig","control","render","renderCaption","renderCount","innerHTML","currentSlide","updateIndex","TextReveal","ele","wrapper","addButton","contains","Marquee","innerWrapper","textWrapper","inputText","textWidth","text","textClone","cloneNode","textWrapperClone","Accordion","stopPropagation","SiteHeader","MobileSearchForm","icon","input","form","CollectionSearch","arrow","placeholder","ProgramGrid","showMoreBtn","showMoreBtnMobile","showLessBtn","hiddenCards","hiddenCardsMobile","card","HappeningTodayBadge","properties","sample","rotation","color","badge","backgroundColor","top","HomepageGridModule","cards","imagePlaceholder","imageClone","interval","hoverTime","zoomedImageWidth","zIndexCounter","nodeToExpand","imageExpanded","imageToExpand","shouldExpand","item","zIndex","appendToCard","mouseEnterHandler","handleMouseEnter","mouseLeaveHandler","handleMouseLeave","imageHandler","expandImage","timer","clearInterval","transition","opacity","visibility","stopTimer","resetImage","startTimer","bringNodeToFront","renderExpandedImage","baseUrl","includes","transformations","pathParts","split","imgID","transformationsEncoded","join","Util","dataset","baseImageUrl","imageSrc","getZoomedImgSrc","homepageGridModules","asyncGeneratorStep","gen","_next","_throw","arr","from","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_i","_s","_e","_arr","_n","_d","_defineProperty","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","f","normalCompletion","didErr","step","_e3","return","minLen","arr2","Constructor","descriptor","protoProps","staticProps","EventListener","eventTarget","eventOptions","unorderedBindings","Set","delete","_step","extendedEvent","_stopImmediatePropagation","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_iterator","bindings","sort","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","connect","disconnect","fetchEventListenerForBinding","bindingConnected","bindingDisconnected","detail","handleError","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","set","parts","descriptorPattern","parseEventTarget","eventTargetName","camelize","_","char","toUpperCase","capitalize","dasherize","Action","tagName","defaultEventNames","getDefaultEventNameForElement","eventNameSuffix","getParamsFromEventTargetAttributes","params","pattern","RegExp","attributes","_ref","o_O","typecast","token","descriptorString","trim","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","currentTarget","actionEvent","logDebugActivity","scope","containsElement","ElementObserver","mutationObserverInit","childList","subtree","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","takeRecords","matchElementsInTree","_Array$from","has","removeElement","_i2","_Array$from2","_element","addElement","_step2","_iterator2","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","_i3","_Array$from3","elementFromNode","processTree","_i4","_Array$from4","elementIsActive","tree","processor","_step3","_iterator3","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","start","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","_this2","stringMap","attributeOldValue","_step4","_iterator4","knownAttributeNames","refreshAttribute","_step5","_iterator5","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","_oldValue","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","_add","del","prune","Multimap","valuesByKey","some","filter","_ref2","_ref3","_ref4","_ref5","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","getValuesForKey","tokens","_this4","tokenMatched","_this5","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","findIndex","_ref6","_ref7","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","_this6","forToken","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","hasValue","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_step6","_iterator6","valueDescriptors","_ref9","rawValue","rawOldValue","changedMethodName","changedMethod","reader","_this7","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref10","connectTarget","_ref11","disconnectTarget","_a","_this8","targetConnected","_this9","targetDisconnected","_step7","_iterator7","_step8","_iterator8","_this10","functionName","controllerConstructor","bindingObserver","dispatcher","valueObserver","targetObserver","initialize","parentElement","invokeControllerMethod","_len","_key","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","bless","shadowConstructor","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","_constructor","_super2","Module","blessDefinition","contextsByScope","connectedContexts","fetchContextForScope","ClassMap","getDataKey","getAll","getAttributeNameForKey","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_this11","_len2","targetNames","_key2","findTarget","findLegacyTarget","_this12","_len3","_key3","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","_this13","targetDescriptor","targetAttribute","revisedAttributeName","guide","Scope","_this14","classes","closest","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","unloadIdentifier","connectModule","disconnectModule","connectContextForScope","disconnectContextForScope","defaultSchema","Application","_this15","logFormattedMessage","router","_start","_callee","_context","shouldLoad","head","_this16","_len4","rest","_key4","definitions","loadDefinition","_this17","_len5","_key5","identifiers","getContextForElementAndIdentifier","groupCollapsed","groupEnd","parseValueDefinitionPair","_ref15","_ref16","typeDefinition","typeFromObject","typeObject","parseValueTypeConstant","defaultValueType","parseValueTypeDefault","default","parseValueTypeObject","typeFromDefaultValue","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Number","boolean","string","writeJSON","stringify","Controller","_ref17","_ref17$target","_ref17$detail","_ref17$prefix","prefix","_ref17$bubbles","bubbles","_ref17$cancelable","cancelable","CustomEvent","blessings","classDefinition","_ref12","getAttributeName","targetDefinition","_ref13","findAll","valueDefinitionPairs","propertyDescriptorMap","_this18","valueDefinitionPair","valueDescriptor","_ref14","read","write","propertiesForValueDefinitionPair","Stimulus","_templateObject","_templateObject2","textContent","base","desc","_taggedTemplateLiteral","strings","raw","freeze","_wrapNativeSuper","Class","_cache","Wrapper","_construct","Parent","register","HelloController","customElements","polyfillWrapFlushCallback","BuiltInHTMLElement","wrapperForTheName","raise","errorConstructor","requestSubmit","submitter","DOMException","validateSubmitter","click","HTMLFormElement","FrameLoadingStyle","submittersByForm","clickCaptured","candidate","navigator","vendor","SubmitEvent","FrameElement","_HTMLElement","_super","loaded","delegateConstructor","loadingStyleChanged","sourceURLChanged","disabledChanged","lazy","eager","frameLoadingStyleFromString","isLoading","ownerDocument","isPreview","_b","expandURL","locatable","URL","baseURI","getAnchor","anchorMatch","hash","href","getAction","getExtension","pathname","getPathComponents","getLastPathComponent","isPrefixedBy","baseURL","origin","endsWith","getPrefix","startsWith","locationIsVisitable","location","rootLocation","getRequestURL","anchor","toCacheKey","FetchMethod","FetchResponse","response","ok","succeeded","statusCode","redirected","contentType","status","header","clone","isHTML","headers","dispatch","nextAnimationFrame","parseHTMLDocument","html","DOMParser","parseFromString","unindent","lines","interpolate","indent","line","uuid","markAsBusy","_elements","localName","clearBusyState","_elements2","FormSubmissionState","FormEnctype","FetchRequest","URLSearchParams","abortController","AbortController","resolveRequestPromise","defaultHeaders","_allowRequestToBeIntercepted","_receive","_perform","searchParams","abort","fetchOptions","prepareHeadersForRequest","allowRequestToBeIntercepted","requestStarted","fetch","receive","t0","requestErrored","requestFinished","_callee2","fetchResponse","_context2","defaultPrevented","requestPreventedHandlingResponse","requestSucceededWithResponse","requestFailedWithResponse","_x","credentials","redirect","isIdempotent","signal","abortSignal","referrer","_callee3","requestInterception","_context3","resume","_x2","AppearanceObserver","_this3","intersect","lastEntry","isIntersecting","elementAppearedInViewport","intersectionObserver","IntersectionObserver","unobserve","StreamMessage","templateElement","foreignElements","importNode","templateChildren","streamElements","FormSubmission","formElement","mustRedirect","initialized","formData","buildFormData","mergeFormDataEntries","fetchRequest","post","put","patch","fetchMethodFromString","formElementAction","enctype","urlEncoded","stringFormData","encoding","multipart","plain","formEnctypeFromString","confirmationMessage","_callee4","_FormSubmissionState","requesting","_context4","needsConfirmation","confirmMethod","perform","_FormSubmissionState2","stopping","stopped","cancel","request","cookieName","cookie","decodeURIComponent","getCookieValue","getMetaContent","waiting","formSubmission","formSubmissionStarted","success","clientError","serverError","formSubmissionFailedWithResponse","requestMustRedirect","responseSucceededWithoutRedirect","formSubmissionErrored","receiving","formSubmissionSucceededWithResponse","formSubmissionFinished","FormData","File","search","Snapshot","getElementForAnchor","snapshot","permanentElementMap","permanentElements","currentPermanentElement","newPermanentElement","getPermanentElementById","FormInterceptor","submitBubbled","shouldInterceptFormSubmission","formSubmissionIntercepted","View","resolveRenderPromise","resolveInterceptionPromise","_renderSnapshot","_render","scrollToElement","focusElement","scrollToPosition","scrollToAnchor","scrollIntoView","scrollRoot","_callee5","renderer","shouldRender","renderInterception","_context5","newSnapshot","renderPromise","prepareToRenderSnapshot","allowsImmediateRender","renderSnapshot","viewRenderedSnapshot","finishRenderingSnapshot","invalidate","_x3","viewInvalidated","markAsPreview","prepareToRender","_callee6","_context6","_x4","finishRendering","FrameView","_View","LinkInterceptor","clickBubbled","respondsToEventTarget","clickEvent","linkClicked","shouldInterceptLinkClick","linkClickIntercepted","willVisit","Bardo","replaceNewPermanentElementWithPlaceholder","replaceCurrentPermanentElementWithClone","replacePlaceholderWithPermanentElement","permanentElement","createPlaceholderForPermanentElement","replaceWith","getPlaceholderById","placeholders","bardo","enter","leave","Renderer","currentSnapshot","willRender","resolvingFunctions","createdScriptElement","cspNonce","nonce","destinationElement","sourceElement","_arr2","copyElementAttributes","preservingPermanentElements","connectedSnapshot","firstAutofocusableElement","elementIsFocusable","getPermanentElementMapForSnapshot","_Renderer","FrameRenderer","_render2","_super3","_callee7","_context7","loadFrameElement","scrollFrameIntoView","focusFirstAutofocusableElement","activateScriptElements","destinationRange","createRange","selectNodeContents","currentElement","deleteContents","frameElement","newElement","sourceRange","extractContents","autoscroll","firstElementChild","block","newScriptElements","inertScriptElement","activatedScriptElement","createScriptElement","ProgressBar","hiding","visible","trickle","setValue","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","installStylesheetElement","installProgressElement","startTrickling","fadeProgressElement","uninstallProgressElement","stopTrickling","firstChild","animationDuration","trickleInterval","setInterval","defaultCSS","HeadSnapshot","_Snapshot","_super4","detailsByOuterHTML","elementIsNoscript","elementWithoutNonce","outerHTML","details","elementType","tracked","elementIsTracked","getElementsMatchingTypeNotInSnapshot","matchedType","_this15$detailsByOute","findMetaElementByName","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","TimingMetric","VisitState","PageSnapshot","_Snapshot2","_super5","headSnapshot","getSetting","cacheControlValue","getMetaValue","fromDocument","SystemStatusCode","defaultOptions","historyChanged","visitCachedSnapshot","Visit","restorationIdentifier","timingMetrics","followedRedirect","scrolled","snapshotCached","_Object$assign2","snapshotHTML","isSamePage","locationWithActionIsSamePage","_render3","_requestFailedWithResponse","_requestSucceededWithResponse","adapter","view","history","getRestorationDataForIdentifier","recordTimingMetric","visitStart","visitStarted","cancelRender","canceled","visitEnd","completed","visitCompleted","followRedirect","failed","visitFailed","actionForHistory","getHistoryMethodForAction","hasPreloadedResponse","simulateRequest","shouldIssueRequest","startRequest","recordResponse","finishRequest","requestStart","visitRequestStarted","isSuccessful","visitRequestCompleted","visitRequestFailedWithStatusCode","requestEnd","visitRequestFinished","_this$response","responseHTML","_callee8","_context8","cacheSnapshot","renderPage","fromHTMLString","visitRendered","renderError","fail","getCachedSnapshotForLocation","getPreloadedSnapshot","hasAnchor","isPreviewable","getCachedSnapshot","_this19","_callee9","_context9","redirectedToLocation","visitProposedToLocation","_this20","_callee10","_context10","_callee11","_context11","contentTypeMismatch","_x5","_x6","_callee12","_context12","_x7","_x8","networkFailure","scrollToRestoredPosition","scrollToTop","visitScrolledToSamePageLocation","lastRenderedLocation","scrollPosition","restorationData","metric","getTime","replaceState","pushState","hasCachedSnapshot","_this21","_callee13","_this22","_context13","frame","performScroll","_x9","cancelAnimationFrame","BrowserAdapter","session","_this23","progressBar","showProgressBar","show","startVisit","visit","loadCachedSnapshot","issueRequest","changeHistory","goToSamePageAnchor","showVisitProgressBarAfterDelay","loadResponse","timeoutFailure","reload","hideVisitProgressBar","showFormProgressBarAfterDelay","hideFormProgressBar","visitProgressBarTimeout","progressBarDelay","hide","formProgressBarTimeout","CacheObserver","removeStaleElements","FormSubmitObserver","_this24","submitCaptured","willSubmitForm","formSubmitted","FrameRedirector","linkInterceptor","formInterceptor","shouldRedirect","findFrameElement","shouldSubmit","meta","History","_this25","pageLoaded","onPopState","shouldHandlePopState","turbo","historyPoppedToLocationWithRestorationIdentifier","onPageLoad","_callee14","_context14","_x10","additionalData","previousScrollRestoration","scrollRestoration","pageIsLoaded","LinkClickObserver","_this26","clickEventIsSignificant","composedPath","link","findLinkFromClickTarget","_location","getLocationForLink","willFollowLinkToLocation","followedLinkToLocation","isContentEditable","which","altKey","ctrlKey","metaKey","shiftKey","isAction","PageStage","Navigator","_formSubmissionFailedWithResponse","_formSubmissionSucceededWithResponse","allowsVisitingLocationWithAction","currentVisit","_callee15","visitOptions","_context15","clearSnapshotCache","getActionForFormSubmission","proposeVisit","_x11","_x12","_callee16","_context16","_x13","_x14","currentAnchor","isRestorationToTop","oldURL","newURL","PageObserver","_this27","stage","initial","interpretReadyState","pageIsInteractive","pageIsComplete","pageWillUnload","loading","interactive","pageBecameInteractive","ScrollObserver","_this28","onScroll","updatePosition","scrollPositionChanged","StreamObserver","_this29","sources","inspectFetchResponse","fetchResponseFromEvent","fetchResponseIsStream","receiveMessageResponse","receiveMessageEvent","receiveMessageHTML","_receiveMessageResponse","source","streamSourceIsConnected","_callee17","_context17","_x15","receivedMessageFromStream","_Renderer2","ErrorRenderer","_render4","_super6","_callee18","_context18","replaceHeadAndBody","_document","replaceChild","newHead","scriptElements","replaceableElement","_Renderer3","PageRenderer","_render5","_super7","isVisitable","trackedElementsAreIdentical","mergeHead","_callee19","_context19","replaceBody","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","_this30","activateNewBody","assignNewBody","currentHeadSnapshot","trackedElementSignature","newHeadSnapshot","newHeadStylesheetElements","_step9","_iterator9","newHeadScriptElements","_step10","_iterator10","currentHeadProvisionalElements","_step11","_iterator11","newHeadProvisionalElements","adoptNode","activateNewBodyScriptElements","_step12","_iterator12","newBodyScriptElements","HTMLBodyElement","getStylesheetElementsNotInSnapshot","getScriptElementsNotInSnapshot","provisionalElements","SnapshotCache","snapshots","unshift","_step13","_iterator13","_View2","PageView","_cacheSnapshot","_super8","_this31","snapshotCache","_callee20","_location2","cachedSnapshot","_context20","shouldCacheSnapshot","viewWillCacheSnapshot","fromElement","isCacheable","Session","pageObserver","cacheObserver","linkClickObserver","formSubmitObserver","scrollObserver","streamObserver","frameRedirector","drive","enabled","connectStreamSource","disconnectStreamSource","delay","pageInvalidated","updateRestorationData","elementDriveEnabled","applicationAllowsFollowingLinkToLocation","getActionForLink","convertLinkWithMethodClickToFormSubmission","linkMethod","getTargetFrameForLink","applicationAllowsVisitingLocation","extendURLWithDeprecatedProperties","silent","notifyApplicationAfterVisitingLocation","notifyApplicationAfterPageLoad","getTimingMetrics","notifyApplicationAfterVisitingSamePageLocation","submitForm","assumeControlOfScrollRestoration","relinquishControlOfScrollRestoration","renderStreamMessage","notifyApplicationBeforeCachingSnapshot","_ref18","notifyApplicationBeforeRender","notifyApplicationAfterRender","notifyApplicationAfterFrameLoad","notifyApplicationAfterFrameRender","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","newBody","timing","HashChangeEvent","container","deprecatedLocationPropertyDescriptors","absoluteURL","navigator$1","Turbo","registerAdapter","clearCache","setProgressBarDelay","setConfirmMethod","FrameController","fetchResponseLoaded","currentFetchRequest","resolveVisitPromise","connected","hasBeenLoaded","settingSourceURL","appearanceObserver","_extractForeignFrameElement","_visit","_requestSucceededWithResponse2","_loadResponse","_loadSourceURL","reloadable","loadingStyle","loadSourceURL","_callee21","previousURL","_context21","sourceURL","currentURL","_callee22","_parseHTMLDocument","_context22","extractForeignFrameElement","t1","frameRendered","frameLoaded","t2","_x16","shouldInterceptNavigation","navigateFrame","_callee23","_context23","_x17","_x18","_ref19","proposeVisitIfNavigatedWithAction","_ref20","_callee24","_this32","_context24","_x19","SnapshotSubstitution","getFrameElementById","_callee25","_context25","CSS","escape","activateElement","_x20","formActionIsVisitable","_this33","_ref21","getElementById","connectedCallback","disconnectedCallback","StreamActions","after","_this34","targetElements","templateContent","nextSibling","_this35","removeDuplicateTargetChildren","before","_this36","_this37","_this38","_this39","_HTMLElement2","StreamElement","_render6","_connectedCallback","_super9","_callee26","_context26","_callee28","_this40","_context28","_callee27","_context27","beforeRenderEvent","performAction","duplicateChildren","existingChildren","flatMap","newChildrenIds","actionFunction","targetElementsById","targetElementsByQuery","HTMLTemplateElement","description","currentScript"],"mappings":"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","file":"js/application-60ee040c7b9ffafea082.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://d1djpsj9eoa7wx.cloudfront.net/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 70);\n","module.exports = require(\"regenerator-runtime\");\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['desandro-matches-selector/matches-selector'], function (matchesSelector) {\n return factory(window, matchesSelector);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('desandro-matches-selector'));\n } else {\n // browser global\n window.fizzyUIUtils = factory(window, window.matchesSelector);\n }\n})(window, function factory(window, matchesSelector) {\n 'use strict';\n\n var utils = {}; // ----- extend ----- //\n // extends objects\n\n utils.extend = function (a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n\n return a;\n }; // ----- modulo ----- //\n\n\n utils.modulo = function (num, div) {\n return (num % div + div) % div;\n }; // ----- makeArray ----- //\n\n\n var arraySlice = Array.prototype.slice; // turn element or nodeList into an array\n\n utils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n } // return empty array if undefined or null. #6\n\n\n if (obj === null || obj === undefined) {\n return [];\n }\n\n var isArrayLike = _typeof(obj) == 'object' && typeof obj.length == 'number';\n\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n } // array of single index\n\n\n return [obj];\n }; // ----- removeFrom ----- //\n\n\n utils.removeFrom = function (ary, obj) {\n var index = ary.indexOf(obj);\n\n if (index != -1) {\n ary.splice(index, 1);\n }\n }; // ----- getParent ----- //\n\n\n utils.getParent = function (elem, selector) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentNode;\n\n if (matchesSelector(elem, selector)) {\n return elem;\n }\n }\n }; // ----- getQueryElement ----- //\n // use element as selector string\n\n\n utils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n\n return elem;\n }; // ----- handleEvent ----- //\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\n\n\n utils.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n }; // ----- filterFindElements ----- //\n\n\n utils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n var ffElems = [];\n elems.forEach(function (elem) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n } // add elem if no selector\n\n\n if (!selector) {\n ffElems.push(elem);\n return;\n } // filter & find items if we have a selector\n // filter\n\n\n if (matchesSelector(elem, selector)) {\n ffElems.push(elem);\n } // find children\n\n\n var childElems = elem.querySelectorAll(selector); // concat childElems to filterFound array\n\n for (var i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n return ffElems;\n }; // ----- debounceMethod ----- //\n\n\n utils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100; // original method\n\n var method = _class.prototype[methodName];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[methodName] = function () {\n var timeout = this[timeoutName];\n clearTimeout(timeout);\n var args = arguments;\n\n var _this = this;\n\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n }; // ----- docReady ----- //\n\n\n utils.docReady = function (callback) {\n var readyState = document.readyState;\n\n if (readyState == 'complete' || readyState == 'interactive') {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout(callback);\n } else {\n document.addEventListener('DOMContentLoaded', callback);\n }\n }; // ----- htmlInit ----- //\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\n\n\n utils.toDashed = function (str) {\n return str.replace(/(.)([A-Z])/g, function (match, $1, $2) {\n return $1 + '-' + $2;\n }).toLowerCase();\n };\n\n var console = window.console;\n /**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\n\n utils.htmlInit = function (WidgetClass, namespace) {\n utils.docReady(function () {\n var dashedNamespace = utils.toDashed(namespace);\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll('[' + dataAttr + ']');\n var jsDashElems = document.querySelectorAll('.js-' + dashedNamespace);\n var elems = utils.makeArray(dataAttrElems).concat(utils.makeArray(jsDashElems));\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n elems.forEach(function (elem) {\n var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n var options;\n\n try {\n options = attr && JSON.parse(attr);\n } catch (error) {\n // log error, do not initialize\n if (console) {\n console.error('Error parsing ' + dataAttr + ' on ' + elem.className + ': ' + error);\n }\n\n return;\n } // initialize\n\n\n var instance = new WidgetClass(elem, options); // make available via $().data('namespace')\n\n if (jQuery) {\n jQuery.data(elem, namespace, instance);\n }\n });\n });\n }; // ----- ----- //\n\n\n return utils;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Flickity main\n\n/* eslint-disable max-params */\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './cell', './slide', './animate'], function (EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n return factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'), require('./cell'), require('./slide'), require('./animate'));\n } else {\n // browser global\n var _Flickity = window.Flickity;\n window.Flickity = factory(window, window.EvEmitter, window.getSize, window.fizzyUIUtils, _Flickity.Cell, _Flickity.Slide, _Flickity.animatePrototype);\n }\n})(window, function factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n /* eslint-enable max-params */\n 'use strict'; // vars\n\n var jQuery = window.jQuery;\n var getComputedStyle = window.getComputedStyle;\n var console = window.console;\n\n function moveElements(elems, toElem) {\n elems = utils.makeArray(elems);\n\n while (elems.length) {\n toElem.appendChild(elems.shift());\n }\n } // -------------------------- Flickity -------------------------- //\n // globally unique identifiers\n\n\n var GUID = 0; // internal store of all Flickity intances\n\n var instances = {};\n\n function Flickity(element, options) {\n var queryElement = utils.getQueryElement(element);\n\n if (!queryElement) {\n if (console) {\n console.error('Bad element for Flickity: ' + (queryElement || element));\n }\n\n return;\n }\n\n this.element = queryElement; // do not initialize twice on same element\n\n if (this.element.flickityGUID) {\n var instance = instances[this.element.flickityGUID];\n if (instance) instance.option(options);\n return instance;\n } // add jQuery\n\n\n if (jQuery) {\n this.$element = jQuery(this.element);\n } // options\n\n\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options); // kick things off\n\n this._create();\n }\n\n Flickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075,\n // friction when free-scrolling\n friction: 0.28,\n // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true // watchCSS: false,\n // wrapAround: false\n\n }; // hash of methods triggered on _create()\n\n Flickity.createMethods = [];\n var proto = Flickity.prototype; // inherit EventEmitter\n\n utils.extend(proto, EvEmitter.prototype);\n\n proto._create = function () {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n\n instances[id] = this; // associate via id\n // initial properties\n\n this.selectedIndex = 0; // how many frames slider has been in same position\n\n this.restingFrames = 0; // initial physics properties\n\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left'; // create viewport & slider\n\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n\n this._createSlider();\n\n if (this.options.resize || this.options.watchCSS) {\n window.addEventListener('resize', this);\n } // add listeners from on option\n\n\n for (var eventName in this.options.on) {\n var listener = this.options.on[eventName];\n this.on(eventName, listener);\n }\n\n Flickity.createMethods.forEach(function (method) {\n this[method]();\n }, this);\n\n if (this.options.watchCSS) {\n this.watchCSS();\n } else {\n this.activate();\n }\n };\n /**\n * set options\n * @param {Object} opts - options to extend\n */\n\n\n proto.option = function (opts) {\n utils.extend(this.options, opts);\n };\n\n proto.activate = function () {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n\n if (this.options.rightToLeft) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize(); // move initial cell elements so they can be loaded as cells\n\n var cellElems = this._filterFindCellElements(this.element.children);\n\n moveElements(cellElems, this.slider);\n this.viewport.appendChild(this.slider);\n this.element.appendChild(this.viewport); // get cells from children\n\n this.reloadCells();\n\n if (this.options.accessibility) {\n // allow element to focusable\n this.element.tabIndex = 0; // listen for key presses\n\n this.element.addEventListener('keydown', this);\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex(); // flag for initial activation, for using initialIndex\n\n this.isInitActivated = true; // ready event. #493\n\n this.dispatchEvent('ready');\n }; // slider positions the cells\n\n\n proto._createSlider = function () {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[this.originSide] = 0;\n this.slider = slider;\n };\n\n proto._filterFindCellElements = function (elems) {\n return utils.filterFindElements(elems, this.options.cellSelector);\n }; // goes through all children\n\n\n proto.reloadCells = function () {\n // collection of item elements\n this.cells = this._makeCells(this.slider.children);\n this.positionCells();\n\n this._getWrapShiftCells();\n\n this.setGallerySize();\n };\n /**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\n\n\n proto._makeCells = function (elems) {\n var cellElems = this._filterFindCellElements(elems); // create new Flickity for collection\n\n\n var cells = cellElems.map(function (cellElem) {\n return new Cell(cellElem, this);\n }, this);\n return cells;\n };\n\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n\n proto.getLastSlide = function () {\n return this.slides[this.slides.length - 1];\n }; // positions all cells\n\n\n proto.positionCells = function () {\n // size all cells\n this._sizeCells(this.cells); // position all cells\n\n\n this._positionCells(0);\n };\n /**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\n\n\n proto._positionCells = function (index) {\n index = index || 0; // also measure maxCellHeight\n // start 0 if positioning all cells\n\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0; // get cellX\n\n if (index > 0) {\n var startCell = this.cells[index - 1];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n\n var len = this.cells.length;\n\n for (var i = index; i < len; i++) {\n var cell = this.cells[i];\n cell.setPosition(cellX);\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max(cell.size.outerHeight, this.maxCellHeight);\n } // keep track of cellX for wrap-around\n\n\n this.slideableWidth = cellX; // slides\n\n this.updateSlides(); // contain slides target\n\n this._containSlides(); // update slidesWidth\n\n\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n };\n /**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\n\n\n proto._sizeCells = function (cells) {\n cells.forEach(function (cell) {\n cell.getSize();\n });\n }; // -------------------------- -------------------------- //\n\n\n proto.updateSlides = function () {\n this.slides = [];\n\n if (!this.cells.length) {\n return;\n }\n\n var slide = new Slide(this);\n this.slides.push(slide);\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach(function (cell, i) {\n // just add cell if first cell in slide\n if (!slide.cells.length) {\n slide.addCell(cell);\n return;\n }\n\n var slideWidth = slide.outerWidth - slide.firstMargin + (cell.size.outerWidth - cell.size[nextMargin]);\n\n if (canCellFit.call(this, i, slideWidth)) {\n slide.addCell(cell);\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n slide = new Slide(this);\n this.slides.push(slide);\n slide.addCell(cell);\n }\n }, this); // last slide\n\n slide.updateTarget(); // update .selectedSlide\n\n this.updateSelectedSlide();\n };\n\n proto._getCanCellFit = function () {\n var groupCells = this.options.groupCells;\n\n if (!groupCells) {\n return function () {\n return false;\n };\n } else if (typeof groupCells == 'number') {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt(groupCells, 10);\n return function (i) {\n return i % number !== 0;\n };\n } // default, group by width of slide\n // parse '75%\n\n\n var percentMatch = typeof groupCells == 'string' && groupCells.match(/^(\\d+)%$/);\n var percent = percentMatch ? parseInt(percentMatch[1], 10) / 100 : 1;\n return function (i, slideWidth) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= (this.size.innerWidth + 1) * percent;\n };\n }; // alias _init for jQuery plugin .flickity()\n\n\n proto._init = proto.reposition = function () {\n this.positionCells();\n this.positionSliderAtSelected();\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n };\n\n var cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n };\n\n proto.setCellAlign = function () {\n var shorthand = cellAlignShorthands[this.options.cellAlign];\n this.cellAlign = shorthand ? shorthand[this.originSide] : this.options.cellAlign;\n };\n\n proto.setGallerySize = function () {\n if (this.options.setGallerySize) {\n var height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n };\n\n proto._getWrapShiftCells = function () {\n // only for wrap-around\n if (!this.options.wrapAround) {\n return;\n } // unshift previous cells\n\n\n this._unshiftCells(this.beforeShiftCells);\n\n this._unshiftCells(this.afterShiftCells); // get before cells\n // initial gap\n\n\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells(gapX, cellIndex, -1); // get after cells\n // ending gap between last cell and end of gallery viewport\n\n gapX = this.size.innerWidth - this.cursorPosition; // start cloning at first cell, working forwards\n\n this.afterShiftCells = this._getGapCells(gapX, 0, 1);\n };\n\n proto._getGapCells = function (gapX, cellIndex, increment) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n\n while (gapX > 0) {\n var cell = this.cells[cellIndex];\n\n if (!cell) {\n break;\n }\n\n cells.push(cell);\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n\n return cells;\n }; // ----- contain ----- //\n // contain cell targets so no excess sliding\n\n\n proto._containSlides = function () {\n if (!this.options.contain || this.options.wrapAround || !this.cells.length) {\n return;\n }\n\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[endMargin]; // content is less than gallery size\n\n var isContentSmaller = contentWidth < this.size.innerWidth; // bounds\n\n var beginBound = this.cursorPosition + this.cells[0].size[beginMargin];\n var endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign); // contain each cell target\n\n this.slides.forEach(function (slide) {\n if (isContentSmaller) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max(slide.target, beginBound);\n slide.target = Math.min(slide.target, endBound);\n }\n }, this);\n }; // ----- ----- //\n\n /**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\n\n\n proto.dispatchEvent = function (type, event, args) {\n var emitArgs = event ? [event].concat(args) : args;\n this.emitEvent(type, emitArgs);\n\n if (jQuery && this.$element) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n\n if (event) {\n // create jQuery event\n var jQEvent = new jQuery.Event(event);\n jQEvent.type = type;\n $event = jQEvent;\n }\n\n this.$element.trigger($event, args);\n }\n }; // -------------------------- select -------------------------- //\n\n /**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\n\n\n proto.select = function (index, isWrap, isInstant) {\n if (!this.isActive) {\n return;\n }\n\n index = parseInt(index, 10);\n\n this._wrapSelect(index);\n\n if (this.options.wrapAround || isWrap) {\n index = utils.modulo(index, this.slides.length);\n } // bail if invalid index\n\n\n if (!this.slides[index]) {\n return;\n }\n\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n\n if (isInstant) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n\n if (this.options.adaptiveHeight) {\n this.setGallerySize();\n } // events\n\n\n this.dispatchEvent('select', null, [index]); // change event if new index\n\n if (index != prevIndex) {\n this.dispatchEvent('change', null, [index]);\n } // old v1 event name, remove in v3\n\n\n this.dispatchEvent('cellSelect');\n }; // wraps position for wrapAround, to move to closest slide. #113\n\n\n proto._wrapSelect = function (index) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n\n if (!isWrapping) {\n return index;\n }\n\n var wrapIndex = utils.modulo(index, len); // go to shortest\n\n var delta = Math.abs(wrapIndex - this.selectedIndex);\n var backWrapDelta = Math.abs(wrapIndex + len - this.selectedIndex);\n var forewardWrapDelta = Math.abs(wrapIndex - len - this.selectedIndex);\n\n if (!this.isDragSelect && backWrapDelta < delta) {\n index += len;\n } else if (!this.isDragSelect && forewardWrapDelta < delta) {\n index -= len;\n } // wrap position so slider is within normal area\n\n\n if (index < 0) {\n this.x -= this.slideableWidth;\n } else if (index >= len) {\n this.x += this.slideableWidth;\n }\n };\n\n proto.previous = function (isWrap, isInstant) {\n this.select(this.selectedIndex - 1, isWrap, isInstant);\n };\n\n proto.next = function (isWrap, isInstant) {\n this.select(this.selectedIndex + 1, isWrap, isInstant);\n };\n\n proto.updateSelectedSlide = function () {\n var slide = this.slides[this.selectedIndex]; // selectedIndex could be outside of slides, if triggered before resize()\n\n if (!slide) {\n return;\n } // unselect previous selected slide\n\n\n this.unselectSelectedSlide(); // update new selected slide\n\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements(); // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n };\n\n proto.unselectSelectedSlide = function () {\n if (this.selectedSlide) {\n this.selectedSlide.unselect();\n }\n };\n\n proto.selectInitialIndex = function () {\n var initialIndex = this.options.initialIndex; // already activated, select previous selectedIndex\n\n if (this.isInitActivated) {\n this.select(this.selectedIndex, false, true);\n return;\n } // select with selector string\n\n\n if (initialIndex && typeof initialIndex == 'string') {\n var cell = this.queryCell(initialIndex);\n\n if (cell) {\n this.selectCell(initialIndex, false, true);\n return;\n }\n }\n\n var index = 0; // select with number\n\n if (initialIndex && this.slides[initialIndex]) {\n index = initialIndex;\n } // select instantly\n\n\n this.select(index, false, true);\n };\n /**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\n\n\n proto.selectCell = function (value, isWrap, isInstant) {\n // get cell\n var cell = this.queryCell(value);\n\n if (!cell) {\n return;\n }\n\n var index = this.getCellSlideIndex(cell);\n this.select(index, isWrap, isInstant);\n };\n\n proto.getCellSlideIndex = function (cell) {\n // get index of slides that has cell\n for (var i = 0; i < this.slides.length; i++) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf(cell);\n\n if (index != -1) {\n return i;\n }\n }\n }; // -------------------------- get cells -------------------------- //\n\n /**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\n\n\n proto.getCell = function (elem) {\n // loop through cells to get the one that matches\n for (var i = 0; i < this.cells.length; i++) {\n var cell = this.cells[i];\n\n if (cell.element == elem) {\n return cell;\n }\n }\n };\n /**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\n\n\n proto.getCells = function (elems) {\n elems = utils.makeArray(elems);\n var cells = [];\n elems.forEach(function (elem) {\n var cell = this.getCell(elem);\n\n if (cell) {\n cells.push(cell);\n }\n }, this);\n return cells;\n };\n /**\n * get cell elements\n * @returns {Array} cellElems\n */\n\n\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n /**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\n\n\n proto.getParentCell = function (elem) {\n // first check if elem is cell\n var cell = this.getCell(elem);\n\n if (cell) {\n return cell;\n } // try to get parent cell elem\n\n\n elem = utils.getParent(elem, '.flickity-slider > *');\n return this.getCell(elem);\n };\n /**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\n\n\n proto.getAdjacentCellElements = function (adjCount, index) {\n if (!adjCount) {\n return this.selectedSlide.getCellElements();\n }\n\n index = index === undefined ? this.selectedIndex : index;\n var len = this.slides.length;\n\n if (1 + adjCount * 2 >= len) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n\n for (var i = index - adjCount; i <= index + adjCount; i++) {\n var slideIndex = this.options.wrapAround ? utils.modulo(i, len) : i;\n var slide = this.slides[slideIndex];\n\n if (slide) {\n cellElems = cellElems.concat(slide.getCellElements());\n }\n }\n\n return cellElems;\n };\n /**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\n\n\n proto.queryCell = function (selector) {\n if (typeof selector == 'number') {\n // use number as index\n return this.cells[selector];\n }\n\n if (typeof selector == 'string') {\n // do not select invalid selectors from hash: #123, #/. #791\n if (selector.match(/^[#.]?[\\d/]/)) {\n return;\n } // use string as selector, get element\n\n\n selector = this.element.querySelector(selector);\n } // get cell from element\n\n\n return this.getCell(selector);\n }; // -------------------------- events -------------------------- //\n\n\n proto.uiChange = function () {\n this.emitEvent('uiChange');\n }; // keep focus on element when child UI elements are clicked\n\n\n proto.childUIPointerDown = function (event) {\n // HACK iOS does not allow touch events to bubble up?!\n if (event.type != 'touchstart') {\n event.preventDefault();\n }\n\n this.focus();\n }; // ----- resize ----- //\n\n\n proto.onresize = function () {\n this.watchCSS();\n this.resize();\n };\n\n utils.debounceMethod(Flickity, 'onresize', 150);\n\n proto.resize = function () {\n if (!this.isActive) {\n return;\n }\n\n this.getSize(); // wrap values\n\n if (this.options.wrapAround) {\n this.x = utils.modulo(this.x, this.slideableWidth);\n }\n\n this.positionCells();\n\n this._getWrapShiftCells();\n\n this.setGallerySize();\n this.emitEvent('resize'); // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell(selectedElement, false, true);\n }; // watches the :after property, activates/deactivates\n\n\n proto.watchCSS = function () {\n var watchOption = this.options.watchCSS;\n\n if (!watchOption) {\n return;\n }\n\n var afterContent = getComputedStyle(this.element, ':after').content; // activate if :after { content: 'flickity' }\n\n if (afterContent.indexOf('flickity') != -1) {\n this.activate();\n } else {\n this.deactivate();\n }\n }; // ----- keydown ----- //\n // go previous/next if left/right keys pressed\n\n\n proto.onkeydown = function (event) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n\n if (!this.options.accessibility || isNotFocused) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[event.keyCode];\n\n if (handler) {\n handler.call(this);\n }\n };\n\n Flickity.keyboardHandlers = {\n // left arrow\n 37: function _() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[leftMethod]();\n },\n // right arrow\n 39: function _() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[rightMethod]();\n }\n }; // ----- focus ----- //\n\n proto.focus = function () {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({\n preventScroll: true\n }); // hack to fix scroll jump after focus, #76\n\n if (window.pageYOffset != prevScrollY) {\n window.scrollTo(window.pageXOffset, prevScrollY);\n }\n }; // -------------------------- destroy -------------------------- //\n // deactivate all Flickity functionality, but keep stuff available\n\n\n proto.deactivate = function () {\n if (!this.isActive) {\n return;\n }\n\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide(); // destroy cells\n\n this.cells.forEach(function (cell) {\n cell.destroy();\n });\n this.element.removeChild(this.viewport); // move child elements back into element\n\n moveElements(this.slider.children, this.element);\n\n if (this.options.accessibility) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener('keydown', this);\n } // set flags\n\n\n this.isActive = false;\n this.emitEvent('deactivate');\n };\n\n proto.destroy = function () {\n this.deactivate();\n window.removeEventListener('resize', this);\n this.allOff();\n this.emitEvent('destroy');\n\n if (jQuery && this.$element) {\n jQuery.removeData(this.element, 'flickity');\n }\n\n delete this.element.flickityGUID;\n delete instances[this.guid];\n }; // -------------------------- prototype -------------------------- //\n\n\n utils.extend(proto, animatePrototype); // -------------------------- extras -------------------------- //\n\n /**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\n\n Flickity.data = function (elem) {\n elem = utils.getQueryElement(elem);\n var id = elem && elem.flickityGUID;\n return id && instances[id];\n };\n\n utils.htmlInit(Flickity, 'flickity');\n\n if (jQuery && jQuery.bridget) {\n jQuery.bridget('flickity', Flickity);\n } // set internal jQuery, for Webpack + jQuery v3, #478\n\n\n Flickity.setJQuery = function (jq) {\n jQuery = jq;\n };\n\n Flickity.Cell = Cell;\n Flickity.Slide = Slide;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n(function (global, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /* globals define, module, window */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n})(typeof window != 'undefined' ? window : this, function () {\n \"use strict\";\n\n function EvEmitter() {}\n\n var proto = EvEmitter.prototype;\n\n proto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // set events hash\n\n\n var events = this._events = this._events || {}; // set listeners array\n\n var listeners = events[eventName] = events[eventName] || []; // only add once\n\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n\n return this;\n };\n\n proto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // add event\n\n\n this.on(eventName, listener); // set once flag\n // set onceEvents hash\n\n var onceEvents = this._onceEvents = this._onceEvents || {}; // set onceListeners object\n\n var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; // set flag\n\n onceListeners[listener] = true;\n return this;\n };\n\n proto.off = function (eventName, listener) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n }\n\n var index = listeners.indexOf(listener);\n\n if (index != -1) {\n listeners.splice(index, 1);\n }\n\n return this;\n };\n\n proto.emitEvent = function (eventName, args) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n } // copy over to avoid interference if .off() in listener\n\n\n listeners = listeners.slice(0);\n args = args || []; // once stuff\n\n var onceListeners = this._onceEvents && this._onceEvents[eventName];\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n var isOnce = onceListeners && onceListeners[listener];\n\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener); // unset once flag\n\n delete onceListeners[listener];\n } // trigger listener\n\n\n listener.apply(this, args);\n }\n\n return this;\n };\n\n proto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n };\n\n return EvEmitter;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n(function (window, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /*global define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.Unipointer = factory(window, window.EvEmitter);\n }\n})(window, function factory(window, EvEmitter) {\n 'use strict';\n\n function noop() {}\n\n function Unipointer() {} // inherit EvEmitter\n\n\n var proto = Unipointer.prototype = Object.create(EvEmitter.prototype);\n\n proto.bindStartEvent = function (elem) {\n this._bindStartEvent(elem, true);\n };\n\n proto.unbindStartEvent = function (elem) {\n this._bindStartEvent(elem, false);\n };\n /**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\n\n\n proto._bindStartEvent = function (elem, isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener'; // default to mouse events\n\n var startEvent = 'mousedown';\n\n if (window.PointerEvent) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ('ontouchstart' in window) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\n }\n\n elem[bindMethod](startEvent, this);\n }; // trigger handler methods for events\n\n\n proto.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n }; // returns the touch that we're keeping track of\n\n\n proto.getTouch = function (touches) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n\n if (touch.identifier == this.pointerIdentifier) {\n return touch;\n }\n }\n }; // ----- start event ----- //\n\n\n proto.onmousedown = function (event) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n\n if (button && button !== 0 && button !== 1) {\n return;\n }\n\n this._pointerDown(event, event);\n };\n\n proto.ontouchstart = function (event) {\n this._pointerDown(event, event.changedTouches[0]);\n };\n\n proto.onpointerdown = function (event) {\n this._pointerDown(event, event);\n };\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto._pointerDown = function (event, pointer) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if (event.button || this.isPointerDown) {\n return;\n }\n\n this.isPointerDown = true; // save pointer identifier to match up touch events\n\n this.pointerIdentifier = pointer.pointerId !== undefined ? // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n this.pointerDown(event, pointer);\n };\n\n proto.pointerDown = function (event, pointer) {\n this._bindPostStartEvents(event);\n\n this.emitEvent('pointerDown', [event, pointer]);\n }; // hash of events to be bound after start event\n\n\n var postStartEvents = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n };\n\n proto._bindPostStartEvents = function (event) {\n if (!event) {\n return;\n } // get proper events to match start event\n\n\n var events = postStartEvents[event.type]; // bind events to node\n\n events.forEach(function (eventName) {\n window.addEventListener(eventName, this);\n }, this); // save these arguments\n\n this._boundPointerEvents = events;\n };\n\n proto._unbindPostStartEvents = function () {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if (!this._boundPointerEvents) {\n return;\n }\n\n this._boundPointerEvents.forEach(function (eventName) {\n window.removeEventListener(eventName, this);\n }, this);\n\n delete this._boundPointerEvents;\n }; // ----- move event ----- //\n\n\n proto.onmousemove = function (event) {\n this._pointerMove(event, event);\n };\n\n proto.onpointermove = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerMove(event, event);\n }\n };\n\n proto.ontouchmove = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerMove(event, touch);\n }\n };\n /**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerMove = function (event, pointer) {\n this.pointerMove(event, pointer);\n }; // public\n\n\n proto.pointerMove = function (event, pointer) {\n this.emitEvent('pointerMove', [event, pointer]);\n }; // ----- end event ----- //\n\n\n proto.onmouseup = function (event) {\n this._pointerUp(event, event);\n };\n\n proto.onpointerup = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerUp(event, event);\n }\n };\n\n proto.ontouchend = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerUp(event, touch);\n }\n };\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerUp = function (event, pointer) {\n this._pointerDone();\n\n this.pointerUp(event, pointer);\n }; // public\n\n\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n }; // ----- pointer done ----- //\n // triggered on pointer up & pointer cancel\n\n\n proto._pointerDone = function () {\n this._pointerReset();\n\n this._unbindPostStartEvents();\n\n this.pointerDone();\n };\n\n proto._pointerReset = function () {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n };\n\n proto.pointerDone = noop; // ----- pointer cancel ----- //\n\n proto.onpointercancel = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerCancel(event, event);\n }\n };\n\n proto.ontouchcancel = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerCancel(event, touch);\n }\n };\n /**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerCancel = function (event, pointer) {\n this._pointerDone();\n\n this.pointerCancel(event, pointer);\n }; // public\n\n\n proto.pointerCancel = function (event, pointer) {\n this.emitEvent('pointerCancel', [event, pointer]);\n }; // ----- ----- //\n // utility function for getting x/y coords from event\n\n\n Unipointer.getPointerPoint = function (pointer) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n }; // ----- ----- //\n\n\n return Unipointer;\n});","var _Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n/** `Object#toString` result references. */\n\n\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\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 != null && _typeof(value) == 'object';\n}\n\nmodule.exports = isObjectLike;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Flickity v2.2.2\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', './drag', './prev-next-button', './page-dots', './player', './add-remove-cell', './lazyload'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('./flickity'), require('./drag'), require('./prev-next-button'), require('./page-dots'), require('./player'), require('./add-remove-cell'), require('./lazyload'));\n }\n})(window, function factory(Flickity) {\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n/* globals console: false */\n(function (window, factory) {\n /* jshint strict: false */\n\n /* globals define, module */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n})(window, function factory() {\n 'use strict'; // -------------------------- helpers -------------------------- //\n // get a number from a string, not a percentage\n\n function getStyleSize(value) {\n var num = parseFloat(value); // not a percent like '100%', and a number\n\n var isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n }\n\n function noop() {}\n\n var logError = typeof console == 'undefined' ? noop : function (message) {\n console.error(message);\n }; // -------------------------- measurements -------------------------- //\n\n var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n var measurementsLength = measurements.length;\n\n function getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n\n return size;\n } // -------------------------- getStyle -------------------------- //\n\n /**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\n\n function getStyle(elem) {\n var style = getComputedStyle(elem);\n\n if (!style) {\n logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See https://bit.ly/getsizebug1');\n }\n\n return style;\n } // -------------------------- setup -------------------------- //\n\n\n var isSetup = false;\n var isBoxSizeOuter;\n /**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\n\n function setup() {\n // setup once\n if (isSetup) {\n return;\n }\n\n isSetup = true; // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n var body = document.body || document.documentElement;\n body.appendChild(div);\n var style = getStyle(div); // round value for browser zoom. desandro/masonry#928\n\n isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n body.removeChild(div);\n } // -------------------------- getSize -------------------------- //\n\n\n function getSize(elem) {\n setup(); // use querySeletor if elem is string\n\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n } // do not proceed on non-objects\n\n\n if (!elem || _typeof(elem) != 'object' || !elem.nodeType) {\n return;\n }\n\n var style = getStyle(elem); // if hidden, everything is 0\n\n if (style.display == 'none') {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; // get all measurements\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value); // any 'auto', 'medium' value will be 0\n\n size[measurement] = !isNaN(num) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; // overwrite width and height if we can get it from style\n\n var styleWidth = getStyleSize(style.width);\n\n if (styleWidth !== false) {\n size.width = styleWidth + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n var styleHeight = getStyleSize(style.height);\n\n if (styleHeight !== false) {\n size.height = styleHeight + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n }\n\n return getSize;\n});","var baseRandom = require('./_baseRandom');\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n\n\nfunction arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nmodule.exports = arraySample;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar _Symbol = root.Symbol;\nmodule.exports = _Symbol;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = require('./_freeGlobal');\n/** Detect free variable `self`. */\n\n\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","/**\n * Checks if `value` is classified as an `Array` object.\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 array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nmodule.exports = isArray;","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;","var arraySample = require('./_arraySample'),\n baseSample = require('./_baseSample'),\n isArray = require('./isArray');\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n\n\nfunction sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n}\n\nmodule.exports = sample;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n(function (window, factory) {\n /*global define: false, module: false */\n 'use strict'; // universal module definition\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n var matchesMethod = function () {\n var ElemProto = window.Element.prototype; // check for the standard method name first\n\n if (ElemProto.matches) {\n return 'matches';\n } // check un-prefixed\n\n\n if (ElemProto.matchesSelector) {\n return 'matchesSelector';\n } // check vendor prefixes\n\n\n var prefixes = ['webkit', 'moz', 'ms', 'o'];\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n\n if (ElemProto[method]) {\n return method;\n }\n }\n }();\n\n return function matchesSelector(elem, selector) {\n return elem[matchesMethod](selector);\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Flickity.Cell\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['get-size/get-size'], function (getSize) {\n return factory(window, getSize);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('get-size'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(window, window.getSize);\n }\n})(window, function factory(window, getSize) {\n 'use strict';\n\n function Cell(elem, parent) {\n this.element = elem;\n this.parent = parent;\n this.create();\n }\n\n var proto = Cell.prototype;\n\n proto.create = function () {\n this.element.style.position = 'absolute';\n this.element.setAttribute('aria-hidden', 'true');\n this.x = 0;\n this.shift = 0;\n };\n\n proto.destroy = function () {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[side] = '';\n this.element.removeAttribute('aria-hidden');\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n };\n\n proto.setPosition = function (x) {\n this.x = x;\n this.updateTarget();\n this.renderPosition(x);\n }; // setDefaultTarget v1 method, backwards compatibility, remove in v3\n\n\n proto.updateTarget = proto.setDefaultTarget = function () {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[marginProperty] + this.size.width * this.parent.cellAlign;\n };\n\n proto.renderPosition = function (x) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[side] = this.parent.getPositionValue(x);\n };\n\n proto.select = function () {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n };\n\n proto.unselect = function () {\n this.element.classList.remove('is-selected');\n this.element.setAttribute('aria-hidden', 'true');\n };\n /**\n * @param {Integer} shift - 0, 1, or -1\n */\n\n\n proto.wrapShift = function (shift) {\n this.shift = shift;\n this.renderPosition(this.x + this.parent.slideableWidth * shift);\n };\n\n proto.remove = function () {\n this.element.parentNode.removeChild(this.element);\n };\n\n return Cell;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// slide\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n function Slide(parent) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n }\n\n var proto = Slide.prototype;\n\n proto.addCell = function (cell) {\n this.cells.push(cell);\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max(cell.size.outerHeight, this.height); // first cell stuff\n\n if (this.cells.length == 1) {\n this.x = cell.x; // x comes from first cell\n\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[beginMargin];\n }\n };\n\n proto.updateTarget = function () {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[endMargin] : 0;\n var slideWidth = this.outerWidth - (this.firstMargin + lastMargin);\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n };\n\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n\n proto.select = function () {\n this.cells.forEach(function (cell) {\n cell.select();\n });\n };\n\n proto.unselect = function () {\n this.cells.forEach(function (cell) {\n cell.unselect();\n });\n };\n\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n\n return Slide;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// animate\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['fizzy-ui-utils/utils'], function (utils) {\n return factory(window, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(window, window.fizzyUIUtils);\n }\n})(window, function factory(window, utils) {\n 'use strict'; // -------------------------- animate -------------------------- //\n\n var proto = {};\n\n proto.startAnimation = function () {\n if (this.isAnimating) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n };\n\n proto.animate = function () {\n this.applyDragForce();\n this.applySelectedAttraction();\n var previousX = this.x;\n this.integratePhysics();\n this.positionSlider();\n this.settle(previousX); // animate next frame\n\n if (this.isAnimating) {\n var _this = this;\n\n requestAnimationFrame(function animateFrame() {\n _this.animate();\n });\n }\n };\n\n proto.positionSlider = function () {\n var x = this.x; // wrap position around\n\n if (this.options.wrapAround && this.cells.length > 1) {\n x = utils.modulo(x, this.slideableWidth);\n x -= this.slideableWidth;\n this.shiftWrapCells(x);\n }\n\n this.setTranslateX(x, this.isAnimating);\n this.dispatchScrollEvent();\n };\n\n proto.setTranslateX = function (x, is3d) {\n x += this.cursorPosition; // reverse if right-to-left and using transform\n\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue(x); // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n\n this.slider.style.transform = is3d ? 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n };\n\n proto.dispatchScrollEvent = function () {\n var firstSlide = this.slides[0];\n\n if (!firstSlide) {\n return;\n }\n\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent('scroll', null, [progress, positionX]);\n };\n\n proto.positionSliderAtSelected = function () {\n if (!this.cells.length) {\n return;\n }\n\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n\n this.positionSlider();\n };\n\n proto.getPositionValue = function (position) {\n if (this.options.percentPosition) {\n // percent position, round to 2 digits, like 12.34%\n return Math.round(position / this.size.innerWidth * 10000) * 0.01 + '%';\n } else {\n // pixel positioning\n return Math.round(position) + 'px';\n }\n };\n\n proto.settle = function (previousX) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown && Math.round(this.x * 100) == Math.round(previousX * 100);\n\n if (isResting) {\n this.restingFrames++;\n } // stop animating if resting for 3 or more frames\n\n\n if (this.restingFrames > 2) {\n this.isAnimating = false;\n delete this.isFreeScrolling; // render position with translateX when settled\n\n this.positionSlider();\n this.dispatchEvent('settle', null, [this.selectedIndex]);\n }\n };\n\n proto.shiftWrapCells = function (x) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n\n this._shiftCells(this.beforeShiftCells, beforeGap, -1); // shift after cells\n\n\n var afterGap = this.size.innerWidth - (x + this.slideableWidth + this.cursorPosition);\n\n this._shiftCells(this.afterShiftCells, afterGap, 1);\n };\n\n proto._shiftCells = function (cells, gap, shift) {\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift(cellShift);\n gap -= cell.size.outerWidth;\n }\n };\n\n proto._unshiftCells = function (cells) {\n if (!cells || !cells.length) {\n return;\n }\n\n for (var i = 0; i < cells.length; i++) {\n cells[i].wrapShift(0);\n }\n }; // -------------------------- physics -------------------------- //\n\n\n proto.integratePhysics = function () {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n };\n\n proto.applyForce = function (force) {\n this.velocity += force;\n };\n\n proto.getFrictionFactor = function () {\n return 1 - this.options[this.isFreeScrolling ? 'freeScrollFriction' : 'friction'];\n };\n\n proto.getRestingPosition = function () {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / (1 - this.getFrictionFactor());\n };\n\n proto.applyDragForce = function () {\n if (!this.isDraggable || !this.isPointerDown) {\n return;\n } // change the position to drag position by applying force\n\n\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce(dragForce);\n };\n\n proto.applySelectedAttraction = function () {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n\n if (dragDown || this.isFreeScrolling || !this.slides.length) {\n return;\n }\n\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce(force);\n };\n\n return proto;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// drag\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'unidragger/unidragger', 'fizzy-ui-utils/utils'], function (Flickity, Unidragger, utils) {\n return factory(window, Flickity, Unidragger, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unidragger'), require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = factory(window, window.Flickity, window.Unidragger, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unidragger, utils) {\n 'use strict'; // ----- defaults ----- //\n\n utils.extend(Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3\n }); // ----- create ----- //\n\n Flickity.createMethods.push('_createDrag'); // -------------------------- drag prototype -------------------------- //\n\n var proto = Flickity.prototype;\n utils.extend(proto, Unidragger.prototype);\n proto._touchActionValue = 'pan-y'; // -------------------------- -------------------------- //\n\n var isTouch = ('createTouch' in document);\n var isTouchmoveScrollCanceled = false;\n\n proto._createDrag = function () {\n this.on('activate', this.onActivateDrag);\n this.on('uiChange', this._uiChangeDrag);\n this.on('deactivate', this.onDeactivateDrag);\n this.on('cellChange', this.updateDraggable); // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n\n if (isTouch && !isTouchmoveScrollCanceled) {\n window.addEventListener('touchmove', function () {});\n isTouchmoveScrollCanceled = true;\n }\n };\n\n proto.onActivateDrag = function () {\n this.handles = [this.viewport];\n this.bindHandles();\n this.updateDraggable();\n };\n\n proto.onDeactivateDrag = function () {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n };\n\n proto.updateDraggable = function () {\n // disable dragging if less than 2 slides. #278\n if (this.options.draggable == '>1') {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n\n if (this.isDraggable) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n }; // backwards compatibility\n\n\n proto.bindDrag = function () {\n this.options.draggable = true;\n this.updateDraggable();\n };\n\n proto.unbindDrag = function () {\n this.options.draggable = false;\n this.updateDraggable();\n };\n\n proto._uiChangeDrag = function () {\n delete this.isFreeScrolling;\n }; // -------------------------- pointer events -------------------------- //\n\n\n proto.pointerDown = function (event, pointer) {\n if (!this.isDraggable) {\n this._pointerDownDefault(event, pointer);\n\n return;\n }\n\n var isOkay = this.okayPointerDown(event);\n\n if (!isOkay) {\n return;\n }\n\n this._pointerDownPreventDefault(event);\n\n this.pointerDownFocus(event); // blur\n\n if (document.activeElement != this.element) {\n // do not blur if already focused\n this.pointerDownBlur();\n } // stop if it was moving\n\n\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down'); // track scrolling\n\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener('scroll', this);\n\n this._pointerDownDefault(event, pointer);\n }; // default pointerDown logic, used for staticClick\n\n\n proto._pointerDownDefault = function (event, pointer) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY\n }; // bind move and end events\n\n this._bindPostStartEvents(event);\n\n this.dispatchEvent('pointerDown', event, [pointer]);\n };\n\n var focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true\n };\n\n proto.pointerDownFocus = function (event) {\n var isFocusNode = focusNodes[event.target.nodeName];\n\n if (!isFocusNode) {\n this.focus();\n }\n };\n\n proto._pointerDownPreventDefault = function (event) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[event.target.nodeName];\n\n if (!isTouchStart && !isTouchPointer && !isFocusNode) {\n event.preventDefault();\n }\n }; // ----- move ----- //\n\n\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > this.options.dragThreshold;\n }; // ----- up ----- //\n\n\n proto.pointerUp = function (event, pointer) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent('pointerUp', event, [pointer]);\n\n this._dragPointerUp(event, pointer);\n };\n\n proto.pointerDone = function () {\n window.removeEventListener('scroll', this);\n delete this.pointerDownScroll;\n }; // -------------------------- dragging -------------------------- //\n\n\n proto.dragStart = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener('scroll', this);\n this.dispatchEvent('dragStart', event, [pointer]);\n };\n\n proto.pointerMove = function (event, pointer) {\n var moveVector = this._dragPointerMove(event, pointer);\n\n this.dispatchEvent('pointerMove', event, [pointer, moveVector]);\n\n this._dragMove(event, pointer, moveVector);\n };\n\n proto.dragMove = function (event, pointer, moveVector) {\n if (!this.isDraggable) {\n return;\n }\n\n event.preventDefault();\n this.previousDragX = this.dragX; // reverse if right-to-left\n\n var direction = this.options.rightToLeft ? -1 : 1;\n\n if (this.options.wrapAround) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if (!this.options.wrapAround && this.slides.length) {\n // slow drag\n var originBound = Math.max(-this.slides[0].target, this.dragStartPosition);\n dragX = dragX > originBound ? (dragX + originBound) * 0.5 : dragX;\n var endBound = Math.min(-this.getLastSlide().target, this.dragStartPosition);\n dragX = dragX < endBound ? (dragX + endBound) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n this.dragMoveTime = new Date();\n this.dispatchEvent('dragMove', event, [pointer, moveVector]);\n };\n\n proto.dragEnd = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n\n if (this.options.freeScroll) {\n this.isFreeScrolling = true;\n } // set selectedIndex based on where flick will end up\n\n\n var index = this.dragEndRestingSelect();\n\n if (this.options.freeScroll && !this.options.wrapAround) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target && -restingX < this.getLastSlide().target;\n } else if (!this.options.freeScroll && index == this.selectedIndex) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n\n delete this.previousDragX; // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n\n this.isDragSelect = this.options.wrapAround;\n this.select(index);\n delete this.isDragSelect;\n this.dispatchEvent('dragEnd', event, [pointer]);\n };\n\n proto.dragEndRestingSelect = function () {\n var restingX = this.getRestingPosition(); // how far away from selected slide\n\n var distance = Math.abs(this.getSlideDistance(-restingX, this.selectedIndex)); // get closet resting going up and going down\n\n var positiveResting = this._getClosestResting(restingX, distance, 1);\n\n var negativeResting = this._getClosestResting(restingX, distance, -1); // use closer resting for wrap-around\n\n\n var index = positiveResting.distance < negativeResting.distance ? positiveResting.index : negativeResting.index;\n return index;\n };\n /**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\n\n\n proto._getClosestResting = function (restingX, distance, increment) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ? // if contain, keep going if distance is equal to minDistance\n function (dist, minDist) {\n return dist <= minDist;\n } : function (dist, minDist) {\n return dist < minDist;\n };\n\n while (condition(distance, minDistance)) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance(-restingX, index);\n\n if (distance === null) {\n break;\n }\n\n distance = Math.abs(distance);\n }\n\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n };\n /**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\n\n\n proto.getSlideDistance = function (x, index) {\n var len = this.slides.length; // wrap around if at least 2 slides\n\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo(index, len) : index;\n var slide = this.slides[slideIndex];\n\n if (!slide) {\n return null;\n } // add distance for wrap-around slides\n\n\n var wrap = isWrapAround ? this.slideableWidth * Math.floor(index / len) : 0;\n return x - (slide.target + wrap);\n };\n\n proto.dragEndBoostSelect = function () {\n // do not boost if no previousDragX or dragMoveTime\n if (this.previousDragX === undefined || !this.dragMoveTime || // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100) {\n return 0;\n }\n\n var distance = this.getSlideDistance(-this.dragX, this.selectedIndex);\n var delta = this.previousDragX - this.dragX;\n\n if (distance > 0 && delta > 0) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if (distance < 0 && delta < 0) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n\n return 0;\n }; // ----- staticClick ----- //\n\n\n proto.staticClick = function (event, pointer) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell(event.target);\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf(clickedCell);\n this.dispatchEvent('staticClick', event, [pointer, cellElem, cellIndex]);\n }; // ----- scroll ----- //\n\n\n proto.onscroll = function () {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y; // cancel click/tap if scroll is too much\n\n if (Math.abs(scrollMoveX) > 3 || Math.abs(scrollMoveY) > 3) {\n this._pointerDone();\n }\n }; // ----- utils ----- //\n\n\n function getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n } // ----- ----- //\n\n\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Unidragger v2.3.1\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['unipointer/unipointer'], function (Unipointer) {\n return factory(window, Unipointer);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('unipointer'));\n } else {\n // browser global\n window.Unidragger = factory(window, window.Unipointer);\n }\n})(window, function factory(window, Unipointer) {\n 'use strict'; // -------------------------- Unidragger -------------------------- //\n\n function Unidragger() {} // inherit Unipointer & EvEmitter\n\n\n var proto = Unidragger.prototype = Object.create(Unipointer.prototype); // ----- bind start ----- //\n\n proto.bindHandles = function () {\n this._bindHandles(true);\n };\n\n proto.unbindHandles = function () {\n this._bindHandles(false);\n };\n /**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\n\n\n proto._bindHandles = function (isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd; // bind each handle\n\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n\n for (var i = 0; i < this.handles.length; i++) {\n var handle = this.handles[i];\n\n this._bindStartEvent(handle, isAdd);\n\n handle[bindMethod]('click', this); // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n\n if (window.PointerEvent) {\n handle.style.touchAction = touchAction;\n }\n }\n }; // prototype so it can be overwriteable by Flickity\n\n\n proto._touchActionValue = 'none'; // ----- start event ----- //\n\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n proto.pointerDown = function (event, pointer) {\n var isOkay = this.okayPointerDown(event);\n\n if (!isOkay) {\n return;\n } // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n\n\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY\n };\n event.preventDefault();\n this.pointerDownBlur(); // bind move and end events\n\n this._bindPostStartEvents(event);\n\n this.emitEvent('pointerDown', [event, pointer]);\n }; // nodes that have text fields\n\n\n var cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true\n }; // input types that do not have text fields\n\n var clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true\n }; // dismiss inputs with text fields. flickity#403, flickity#404\n\n proto.okayPointerDown = function (event) {\n var isCursorNode = cursorNodes[event.target.nodeName];\n var isClickType = clickTypes[event.target.type];\n var isOkay = !isCursorNode || isClickType;\n\n if (!isOkay) {\n this._pointerReset();\n }\n\n return isOkay;\n }; // kludge to blur previously focused input\n\n\n proto.pointerDownBlur = function () {\n var focused = document.activeElement; // do not blur body for IE10, metafizzy/flickity#117\n\n var canBlur = focused && focused.blur && focused != document.body;\n\n if (canBlur) {\n focused.blur();\n }\n }; // ----- move event ----- //\n\n /**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto.pointerMove = function (event, pointer) {\n var moveVector = this._dragPointerMove(event, pointer);\n\n this.emitEvent('pointerMove', [event, pointer, moveVector]);\n\n this._dragMove(event, pointer, moveVector);\n }; // base pointer move logic\n\n\n proto._dragPointerMove = function (event, pointer) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n }; // start drag if pointer has moved far enough to start drag\n\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this._dragStart(event, pointer);\n }\n\n return moveVector;\n }; // condition if pointer has moved far enough to start drag\n\n\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n }; // ----- end event ----- //\n\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n\n this._dragPointerUp(event, pointer);\n };\n\n proto._dragPointerUp = function (event, pointer) {\n if (this.isDragging) {\n this._dragEnd(event, pointer);\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick(event, pointer);\n }\n }; // -------------------------- drag -------------------------- //\n // dragStart\n\n\n proto._dragStart = function (event, pointer) {\n this.isDragging = true; // prevent clicks\n\n this.isPreventingClicks = true;\n this.dragStart(event, pointer);\n };\n\n proto.dragStart = function (event, pointer) {\n this.emitEvent('dragStart', [event, pointer]);\n }; // dragMove\n\n\n proto._dragMove = function (event, pointer, moveVector) {\n // do not drag if not dragging yet\n if (!this.isDragging) {\n return;\n }\n\n this.dragMove(event, pointer, moveVector);\n };\n\n proto.dragMove = function (event, pointer, moveVector) {\n event.preventDefault();\n this.emitEvent('dragMove', [event, pointer, moveVector]);\n }; // dragEnd\n\n\n proto._dragEnd = function (event, pointer) {\n // set flags\n this.isDragging = false; // re-enable clicking async\n\n setTimeout(function () {\n delete this.isPreventingClicks;\n }.bind(this));\n this.dragEnd(event, pointer);\n };\n\n proto.dragEnd = function (event, pointer) {\n this.emitEvent('dragEnd', [event, pointer]);\n }; // ----- onclick ----- //\n // handle all clicks and prevent clicks when dragging\n\n\n proto.onclick = function (event) {\n if (this.isPreventingClicks) {\n event.preventDefault();\n }\n }; // ----- staticClick ----- //\n // triggered after pointer down & up with no/tiny movement\n\n\n proto._staticClick = function (event, pointer) {\n // ignore emulated mouse up clicks\n if (this.isIgnoringMouseUp && event.type == 'mouseup') {\n return;\n }\n\n this.staticClick(event, pointer); // set flag for emulated clicks 300ms after touchend\n\n if (event.type != 'mouseup') {\n this.isIgnoringMouseUp = true; // reset flag after 300ms\n\n setTimeout(function () {\n delete this.isIgnoringMouseUp;\n }.bind(this), 400);\n }\n };\n\n proto.staticClick = function (event, pointer) {\n this.emitEvent('staticClick', [event, pointer]);\n }; // ----- utils ----- //\n\n\n Unidragger.getPointerPoint = Unipointer.getPointerPoint; // ----- ----- //\n\n return Unidragger;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// prev/next buttons\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n 'use strict';\n\n var svgURI = 'http://www.w3.org/2000/svg'; // -------------------------- PrevNextButton -------------------------- //\n\n function PrevNextButton(direction, parent) {\n this.direction = direction;\n this.parent = parent;\n\n this._create();\n }\n\n PrevNextButton.prototype = Object.create(Unipointer.prototype);\n\n PrevNextButton.prototype._create = function () {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next'; // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n\n element.setAttribute('type', 'button'); // init as disabled\n\n this.disable();\n element.setAttribute('aria-label', this.isPrevious ? 'Previous' : 'Next'); // create arrow\n\n var svg = this.createSVG();\n element.appendChild(svg); // events\n\n this.parent.on('select', this.update.bind(this));\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n\n PrevNextButton.prototype.activate = function () {\n this.bindStartEvent(this.element);\n this.element.addEventListener('click', this); // add to DOM\n\n this.parent.element.appendChild(this.element);\n };\n\n PrevNextButton.prototype.deactivate = function () {\n // remove from DOM\n this.parent.element.removeChild(this.element); // click events\n\n this.unbindStartEvent(this.element);\n this.element.removeEventListener('click', this);\n };\n\n PrevNextButton.prototype.createSVG = function () {\n var svg = document.createElementNS(svgURI, 'svg');\n svg.setAttribute('class', 'flickity-button-icon');\n svg.setAttribute('viewBox', '0 0 100 100');\n var path = document.createElementNS(svgURI, 'path');\n var pathMovements = getArrowMovements(this.parent.options.arrowShape);\n path.setAttribute('d', pathMovements);\n path.setAttribute('class', 'arrow'); // rotate arrow\n\n if (!this.isLeft) {\n path.setAttribute('transform', 'translate(100, 100) rotate(180) ');\n }\n\n svg.appendChild(path);\n return svg;\n }; // get SVG path movmement\n\n\n function getArrowMovements(shape) {\n // use shape as movement if string\n if (typeof shape == 'string') {\n return shape;\n } // create movement string\n\n\n return 'M ' + shape.x0 + ',50' + ' L ' + shape.x1 + ',' + (shape.y1 + 50) + ' L ' + shape.x2 + ',' + (shape.y2 + 50) + ' L ' + shape.x3 + ',50 ' + ' L ' + shape.x2 + ',' + (50 - shape.y2) + ' L ' + shape.x1 + ',' + (50 - shape.y1) + ' Z';\n }\n\n PrevNextButton.prototype.handleEvent = utils.handleEvent;\n\n PrevNextButton.prototype.onclick = function () {\n if (!this.isEnabled) {\n return;\n }\n\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[method]();\n }; // ----- ----- //\n\n\n PrevNextButton.prototype.enable = function () {\n if (this.isEnabled) {\n return;\n }\n\n this.element.disabled = false;\n this.isEnabled = true;\n };\n\n PrevNextButton.prototype.disable = function () {\n if (!this.isEnabled) {\n return;\n }\n\n this.element.disabled = true;\n this.isEnabled = false;\n };\n\n PrevNextButton.prototype.update = function () {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides; // enable is wrapAround and at least 2 slides\n\n if (this.parent.options.wrapAround && slides.length > 1) {\n this.enable();\n return;\n }\n\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[method]();\n };\n\n PrevNextButton.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n }; // -------------------------- Flickity prototype -------------------------- //\n\n\n utils.extend(Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60,\n y1: 50,\n x2: 70,\n y2: 40,\n x3: 30\n }\n });\n Flickity.createMethods.push('_createPrevNextButtons');\n var proto = Flickity.prototype;\n\n proto._createPrevNextButtons = function () {\n if (!this.options.prevNextButtons) {\n return;\n }\n\n this.prevButton = new PrevNextButton(-1, this);\n this.nextButton = new PrevNextButton(1, this);\n this.on('activate', this.activatePrevNextButtons);\n };\n\n proto.activatePrevNextButtons = function () {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on('deactivate', this.deactivatePrevNextButtons);\n };\n\n proto.deactivatePrevNextButtons = function () {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off('deactivate', this.deactivatePrevNextButtons);\n }; // -------------------------- -------------------------- //\n\n\n Flickity.PrevNextButton = PrevNextButton;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// page dots\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n // -------------------------- PageDots -------------------------- //\n 'use strict';\n\n function PageDots(parent) {\n this.parent = parent;\n\n this._create();\n }\n\n PageDots.prototype = Object.create(Unipointer.prototype);\n\n PageDots.prototype._create = function () {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots'; // create dots, array of elements\n\n this.dots = []; // events\n\n this.handleClick = this.onClick.bind(this);\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n\n PageDots.prototype.activate = function () {\n this.setDots();\n this.holder.addEventListener('click', this.handleClick);\n this.bindStartEvent(this.holder); // add to DOM\n\n this.parent.element.appendChild(this.holder);\n };\n\n PageDots.prototype.deactivate = function () {\n this.holder.removeEventListener('click', this.handleClick);\n this.unbindStartEvent(this.holder); // remove from DOM\n\n this.parent.element.removeChild(this.holder);\n };\n\n PageDots.prototype.setDots = function () {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n\n if (delta > 0) {\n this.addDots(delta);\n } else if (delta < 0) {\n this.removeDots(-delta);\n }\n };\n\n PageDots.prototype.addDots = function (count) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for (var i = length; i < max; i++) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute('aria-label', 'Page dot ' + (i + 1));\n fragment.appendChild(dot);\n newDots.push(dot);\n }\n\n this.holder.appendChild(fragment);\n this.dots = this.dots.concat(newDots);\n };\n\n PageDots.prototype.removeDots = function (count) {\n // remove from this.dots collection\n var removeDots = this.dots.splice(this.dots.length - count, count); // remove from DOM\n\n removeDots.forEach(function (dot) {\n this.holder.removeChild(dot);\n }, this);\n };\n\n PageDots.prototype.updateSelected = function () {\n // remove selected class on previous\n if (this.selectedDot) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n } // don't proceed if no dots\n\n\n if (!this.dots.length) {\n return;\n }\n\n this.selectedDot = this.dots[this.parent.selectedIndex];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute('aria-current', 'step');\n };\n\n PageDots.prototype.onTap = // old method name, backwards-compatible\n PageDots.prototype.onClick = function (event) {\n var target = event.target; // only care about dot clicks\n\n if (target.nodeName != 'LI') {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf(target);\n this.parent.select(index);\n };\n\n PageDots.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n };\n\n Flickity.PageDots = PageDots; // -------------------------- Flickity -------------------------- //\n\n utils.extend(Flickity.defaults, {\n pageDots: true\n });\n Flickity.createMethods.push('_createPageDots');\n var proto = Flickity.prototype;\n\n proto._createPageDots = function () {\n if (!this.options.pageDots) {\n return;\n }\n\n this.pageDots = new PageDots(this); // events\n\n this.on('activate', this.activatePageDots);\n this.on('select', this.updateSelectedPageDots);\n this.on('cellChange', this.updatePageDots);\n this.on('resize', this.updatePageDots);\n this.on('deactivate', this.deactivatePageDots);\n };\n\n proto.activatePageDots = function () {\n this.pageDots.activate();\n };\n\n proto.updateSelectedPageDots = function () {\n this.pageDots.updateSelected();\n };\n\n proto.updatePageDots = function () {\n this.pageDots.setDots();\n };\n\n proto.deactivatePageDots = function () {\n this.pageDots.deactivate();\n }; // ----- ----- //\n\n\n Flickity.PageDots = PageDots;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// player & autoPlay\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter', 'fizzy-ui-utils/utils', './flickity'], function (EvEmitter, utils, Flickity) {\n return factory(EvEmitter, utils, Flickity);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('ev-emitter'), require('fizzy-ui-utils'), require('./flickity'));\n } else {\n // browser global\n factory(window.EvEmitter, window.fizzyUIUtils, window.Flickity);\n }\n})(window, function factory(EvEmitter, utils, Flickity) {\n 'use strict'; // -------------------------- Player -------------------------- //\n\n function Player(parent) {\n this.parent = parent;\n this.state = 'stopped'; // visibility change event handler\n\n this.onVisibilityChange = this.visibilityChange.bind(this);\n this.onVisibilityPlay = this.visibilityPlay.bind(this);\n }\n\n Player.prototype = Object.create(EvEmitter.prototype); // start play\n\n Player.prototype.play = function () {\n if (this.state == 'playing') {\n return;\n } // do not play if page is hidden, start playing when page is visible\n\n\n var isPageHidden = document.hidden;\n\n if (isPageHidden) {\n document.addEventListener('visibilitychange', this.onVisibilityPlay);\n return;\n }\n\n this.state = 'playing'; // listen to visibility change\n\n document.addEventListener('visibilitychange', this.onVisibilityChange); // start ticking\n\n this.tick();\n };\n\n Player.prototype.tick = function () {\n // do not tick if not playing\n if (this.state != 'playing') {\n return;\n }\n\n var time = this.parent.options.autoPlay; // default to 3 seconds\n\n time = typeof time == 'number' ? time : 3000;\n\n var _this = this; // HACK: reset ticks if stopped and started within interval\n\n\n this.clear();\n this.timeout = setTimeout(function () {\n _this.parent.next(true);\n\n _this.tick();\n }, time);\n };\n\n Player.prototype.stop = function () {\n this.state = 'stopped';\n this.clear(); // remove visibility change event\n\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n };\n\n Player.prototype.clear = function () {\n clearTimeout(this.timeout);\n };\n\n Player.prototype.pause = function () {\n if (this.state == 'playing') {\n this.state = 'paused';\n this.clear();\n }\n };\n\n Player.prototype.unpause = function () {\n // re-start play if paused\n if (this.state == 'paused') {\n this.play();\n }\n }; // pause if page visibility is hidden, unpause if visible\n\n\n Player.prototype.visibilityChange = function () {\n var isPageHidden = document.hidden;\n this[isPageHidden ? 'pause' : 'unpause']();\n };\n\n Player.prototype.visibilityPlay = function () {\n this.play();\n document.removeEventListener('visibilitychange', this.onVisibilityPlay);\n }; // -------------------------- Flickity -------------------------- //\n\n\n utils.extend(Flickity.defaults, {\n pauseAutoPlayOnHover: true\n });\n Flickity.createMethods.push('_createPlayer');\n var proto = Flickity.prototype;\n\n proto._createPlayer = function () {\n this.player = new Player(this);\n this.on('activate', this.activatePlayer);\n this.on('uiChange', this.stopPlayer);\n this.on('pointerDown', this.stopPlayer);\n this.on('deactivate', this.deactivatePlayer);\n };\n\n proto.activatePlayer = function () {\n if (!this.options.autoPlay) {\n return;\n }\n\n this.player.play();\n this.element.addEventListener('mouseenter', this);\n }; // Player API, don't hate the ... thanks I know where the door is\n\n\n proto.playPlayer = function () {\n this.player.play();\n };\n\n proto.stopPlayer = function () {\n this.player.stop();\n };\n\n proto.pausePlayer = function () {\n this.player.pause();\n };\n\n proto.unpausePlayer = function () {\n this.player.unpause();\n };\n\n proto.deactivatePlayer = function () {\n this.player.stop();\n this.element.removeEventListener('mouseenter', this);\n }; // ----- mouseenter/leave ----- //\n // pause auto-play on hover\n\n\n proto.onmouseenter = function () {\n if (!this.options.pauseAutoPlayOnHover) {\n return;\n }\n\n this.player.pause();\n this.element.addEventListener('mouseleave', this);\n }; // resume auto-play on hover off\n\n\n proto.onmouseleave = function () {\n this.player.unpause();\n this.element.removeEventListener('mouseleave', this);\n }; // ----- ----- //\n\n\n Flickity.Player = Player;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// add, remove cell\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n 'use strict'; // append cells to a document fragment\n\n function getCellsFragment(cells) {\n var fragment = document.createDocumentFragment();\n cells.forEach(function (cell) {\n fragment.appendChild(cell.element);\n });\n return fragment;\n } // -------------------------- add/remove cell prototype -------------------------- //\n\n\n var proto = Flickity.prototype;\n /**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\n\n proto.insert = function (elems, index) {\n var cells = this._makeCells(elems);\n\n if (!cells || !cells.length) {\n return;\n }\n\n var len = this.cells.length; // default to append\n\n index = index === undefined ? len : index; // add cells with document fragment\n\n var fragment = getCellsFragment(cells); // append to slider\n\n var isAppend = index == len;\n\n if (isAppend) {\n this.slider.appendChild(fragment);\n } else {\n var insertCellElement = this.cells[index].element;\n this.slider.insertBefore(fragment, insertCellElement);\n } // add to this.cells\n\n\n if (index === 0) {\n // prepend, add to start\n this.cells = cells.concat(this.cells);\n } else if (isAppend) {\n // append, add to end\n this.cells = this.cells.concat(cells);\n } else {\n // insert in this.cells\n var endCells = this.cells.splice(index, len - index);\n this.cells = this.cells.concat(cells).concat(endCells);\n }\n\n this._sizeCells(cells);\n\n this.cellChange(index, true);\n };\n\n proto.append = function (elems) {\n this.insert(elems, this.cells.length);\n };\n\n proto.prepend = function (elems) {\n this.insert(elems, 0);\n };\n /**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\n\n\n proto.remove = function (elems) {\n var cells = this.getCells(elems);\n\n if (!cells || !cells.length) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1; // remove cells from collection & DOM\n\n cells.forEach(function (cell) {\n cell.remove();\n var index = this.cells.indexOf(cell);\n minCellIndex = Math.min(index, minCellIndex);\n utils.removeFrom(this.cells, cell);\n }, this);\n this.cellChange(minCellIndex, true);\n };\n /**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\n\n\n proto.cellSizeChange = function (elem) {\n var cell = this.getCell(elem);\n\n if (!cell) {\n return;\n }\n\n cell.getSize();\n var index = this.cells.indexOf(cell);\n this.cellChange(index);\n };\n /**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\n\n\n proto.cellChange = function (changedCellIndex, isPositioningSlider) {\n var prevSelectedElem = this.selectedElement;\n\n this._positionCells(changedCellIndex);\n\n this._getWrapShiftCells();\n\n this.setGallerySize(); // update selectedIndex\n // try to maintain position & select previous selected element\n\n var cell = this.getCell(prevSelectedElem);\n\n if (cell) {\n this.selectedIndex = this.getCellSlideIndex(cell);\n }\n\n this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex);\n this.emitEvent('cellChange', [changedCellIndex]); // position slider\n\n this.select(this.selectedIndex); // do not position slider after lazy load\n\n if (isPositioningSlider) {\n this.positionSliderAtSelected();\n }\n }; // ----- ----- //\n\n\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// lazyload\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n 'use strict';\n\n Flickity.createMethods.push('_createLazyload');\n var proto = Flickity.prototype;\n\n proto._createLazyload = function () {\n this.on('select', this.lazyLoad);\n };\n\n proto.lazyLoad = function () {\n var lazyLoad = this.options.lazyLoad;\n\n if (!lazyLoad) {\n return;\n } // get adjacent cells, use lazyLoad option for adjacent count\n\n\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements(adjCount); // get lazy images in those cells\n\n var lazyImages = [];\n cellElems.forEach(function (cellElem) {\n var lazyCellImages = getCellLazyImages(cellElem);\n lazyImages = lazyImages.concat(lazyCellImages);\n }); // load lazy images\n\n lazyImages.forEach(function (img) {\n new LazyLoader(img, this);\n }, this);\n };\n\n function getCellLazyImages(cellElem) {\n // check if cell element is lazy image\n if (cellElem.nodeName == 'IMG') {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n\n if (lazyloadAttr || srcAttr || srcsetAttr) {\n return [cellElem];\n }\n } // select lazy images in cell\n\n\n var lazySelector = 'img[data-flickity-lazyload], ' + 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll(lazySelector);\n return utils.makeArray(imgs);\n } // -------------------------- LazyLoader -------------------------- //\n\n /**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\n\n\n function LazyLoader(img, flickity) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n }\n\n LazyLoader.prototype.handleEvent = utils.handleEvent;\n\n LazyLoader.prototype.load = function () {\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this); // get src & srcset\n\n var src = this.img.getAttribute('data-flickity-lazyload') || this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset'); // set src & serset\n\n this.img.src = src;\n\n if (srcset) {\n this.img.setAttribute('srcset', srcset);\n } // remove attr\n\n\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n };\n\n LazyLoader.prototype.onload = function (event) {\n this.complete(event, 'flickity-lazyloaded');\n };\n\n LazyLoader.prototype.onerror = function (event) {\n this.complete(event, 'flickity-lazyerror');\n };\n\n LazyLoader.prototype.complete = function (event, className) {\n // unbind events\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n var cell = this.flickity.getParentCell(this.img);\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange(cellElem);\n this.img.classList.add(className);\n this.flickity.dispatchEvent('lazyLoad', event, cellElem);\n }; // ----- ----- //\n\n\n Flickity.LazyLoader = LazyLoader;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['flickity/js/index', 'imagesloaded/imagesloaded'], function (Flickity, imagesLoaded) {\n return factory(window, Flickity, imagesLoaded);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('flickity'), require('imagesloaded'));\n } else {\n // browser global\n window.Flickity = factory(window, window.Flickity, window.imagesLoaded);\n }\n})(window, function factory(window, Flickity, imagesLoaded) {\n 'use strict';\n\n Flickity.createMethods.push('_createImagesLoaded');\n var proto = Flickity.prototype;\n\n proto._createImagesLoaded = function () {\n this.on('activate', this.imagesLoaded);\n };\n\n proto.imagesLoaded = function () {\n if (!this.options.imagesLoaded) {\n return;\n }\n\n var _this = this;\n\n function onImagesLoadedProgress(instance, image) {\n var cell = _this.getParentCell(image.img);\n\n _this.cellSizeChange(cell && cell.element);\n\n if (!_this.options.freeScroll) {\n _this.positionSliderAtSelected();\n }\n }\n\n imagesLoaded(this.slider).on('progress', onImagesLoadedProgress);\n };\n\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n(function (window, factory) {\n 'use strict'; // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.imagesLoaded = factory(window, window.EvEmitter);\n }\n})(typeof window !== 'undefined' ? window : this, // -------------------------- factory -------------------------- //\nfunction factory(window, EvEmitter) {\n 'use strict';\n\n var $ = window.jQuery;\n var console = window.console; // -------------------------- helpers -------------------------- //\n // extend objects\n\n function extend(a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n\n return a;\n }\n\n var arraySlice = Array.prototype.slice; // turn element or nodeList into an array\n\n function makeArray(obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n }\n\n var isArrayLike = _typeof(obj) == 'object' && typeof obj.length == 'number';\n\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n } // array of single index\n\n\n return [obj];\n } // -------------------------- imagesLoaded -------------------------- //\n\n /**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\n\n\n function ImagesLoaded(elem, options, onAlways) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if (!(this instanceof ImagesLoaded)) {\n return new ImagesLoaded(elem, options, onAlways);\n } // use elem as selector string\n\n\n var queryElem = elem;\n\n if (typeof elem == 'string') {\n queryElem = document.querySelectorAll(elem);\n } // bail if bad element\n\n\n if (!queryElem) {\n console.error('Bad element for imagesLoaded ' + (queryElem || elem));\n return;\n }\n\n this.elements = makeArray(queryElem);\n this.options = extend({}, this.options); // shift arguments if no options set\n\n if (typeof options == 'function') {\n onAlways = options;\n } else {\n extend(this.options, options);\n }\n\n if (onAlways) {\n this.on('always', onAlways);\n }\n\n this.getImages();\n\n if ($) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n } // HACK check async to allow time to bind listeners\n\n\n setTimeout(this.check.bind(this));\n }\n\n ImagesLoaded.prototype = Object.create(EvEmitter.prototype);\n ImagesLoaded.prototype.options = {};\n\n ImagesLoaded.prototype.getImages = function () {\n this.images = []; // filter & find items if we have an item selector\n\n this.elements.forEach(this.addElementImages, this);\n };\n /**\n * @param {Node} element\n */\n\n\n ImagesLoaded.prototype.addElementImages = function (elem) {\n // filter siblings\n if (elem.nodeName == 'IMG') {\n this.addImage(elem);\n } // get background image on element\n\n\n if (this.options.background === true) {\n this.addElementBackgroundImages(elem);\n } // find children\n // no non-element nodes, #143\n\n\n var nodeType = elem.nodeType;\n\n if (!nodeType || !elementNodeTypes[nodeType]) {\n return;\n }\n\n var childImgs = elem.querySelectorAll('img'); // concat childElems to filterFound array\n\n for (var i = 0; i < childImgs.length; i++) {\n var img = childImgs[i];\n this.addImage(img);\n } // get child background images\n\n\n if (typeof this.options.background == 'string') {\n var children = elem.querySelectorAll(this.options.background);\n\n for (i = 0; i < children.length; i++) {\n var child = children[i];\n this.addElementBackgroundImages(child);\n }\n }\n };\n\n var elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n };\n\n ImagesLoaded.prototype.addElementBackgroundImages = function (elem) {\n var style = getComputedStyle(elem);\n\n if (!style) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n } // get url inside url(\"...\")\n\n\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec(style.backgroundImage);\n\n while (matches !== null) {\n var url = matches && matches[2];\n\n if (url) {\n this.addBackground(url, elem);\n }\n\n matches = reURL.exec(style.backgroundImage);\n }\n };\n /**\n * @param {Image} img\n */\n\n\n ImagesLoaded.prototype.addImage = function (img) {\n var loadingImage = new LoadingImage(img);\n this.images.push(loadingImage);\n };\n\n ImagesLoaded.prototype.addBackground = function (url, elem) {\n var background = new Background(url, elem);\n this.images.push(background);\n };\n\n ImagesLoaded.prototype.check = function () {\n var _this = this;\n\n this.progressedCount = 0;\n this.hasAnyBroken = false; // complete if no images\n\n if (!this.images.length) {\n this.complete();\n return;\n }\n\n function onProgress(image, elem, message) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout(function () {\n _this.progress(image, elem, message);\n });\n }\n\n this.images.forEach(function (loadingImage) {\n loadingImage.once('progress', onProgress);\n loadingImage.check();\n });\n };\n\n ImagesLoaded.prototype.progress = function (image, elem, message) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; // progress event\n\n this.emitEvent('progress', [this, image, elem]);\n\n if (this.jqDeferred && this.jqDeferred.notify) {\n this.jqDeferred.notify(this, image);\n } // check if completed\n\n\n if (this.progressedCount == this.images.length) {\n this.complete();\n }\n\n if (this.options.debug && console) {\n console.log('progress: ' + message, image, elem);\n }\n };\n\n ImagesLoaded.prototype.complete = function () {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent(eventName, [this]);\n this.emitEvent('always', [this]);\n\n if (this.jqDeferred) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[jqMethod](this);\n }\n }; // -------------------------- -------------------------- //\n\n\n function LoadingImage(img) {\n this.img = img;\n }\n\n LoadingImage.prototype = Object.create(EvEmitter.prototype);\n\n LoadingImage.prototype.check = function () {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n\n if (isComplete) {\n // report based on naturalWidth\n this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');\n return;\n } // If none of the checks above matched, simulate loading on detached element.\n\n\n this.proxyImage = new Image();\n this.proxyImage.addEventListener('load', this);\n this.proxyImage.addEventListener('error', this); // bind to image as well for Firefox. #191\n\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this);\n this.proxyImage.src = this.img.src;\n };\n\n LoadingImage.prototype.getIsImageComplete = function () {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n };\n\n LoadingImage.prototype.confirm = function (isLoaded, message) {\n this.isLoaded = isLoaded;\n this.emitEvent('progress', [this, this.img, message]);\n }; // ----- events ----- //\n // trigger specified handler for event type\n\n\n LoadingImage.prototype.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n };\n\n LoadingImage.prototype.onload = function () {\n this.confirm(true, 'onload');\n this.unbindEvents();\n };\n\n LoadingImage.prototype.onerror = function () {\n this.confirm(false, 'onerror');\n this.unbindEvents();\n };\n\n LoadingImage.prototype.unbindEvents = function () {\n this.proxyImage.removeEventListener('load', this);\n this.proxyImage.removeEventListener('error', this);\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n }; // -------------------------- Background -------------------------- //\n\n\n function Background(url, element) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n } // inherit LoadingImage prototype\n\n\n Background.prototype = Object.create(LoadingImage.prototype);\n\n Background.prototype.check = function () {\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this);\n this.img.src = this.url; // check if image is already complete\n\n var isComplete = this.getIsImageComplete();\n\n if (isComplete) {\n this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');\n this.unbindEvents();\n }\n };\n\n Background.prototype.unbindEvents = function () {\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n };\n\n Background.prototype.confirm = function (isLoaded, message) {\n this.isLoaded = isLoaded;\n this.emitEvent('progress', [this, this.element, message]);\n }; // -------------------------- jQuery -------------------------- //\n\n\n ImagesLoaded.makeJQueryPlugin = function (jQuery) {\n jQuery = jQuery || window.jQuery;\n\n if (!jQuery) {\n return;\n } // set local variable\n\n\n $ = jQuery; // $().imagesLoaded()\n\n $.fn.imagesLoaded = function (options, callback) {\n var instance = new ImagesLoaded(this, options, callback);\n return instance.jqDeferred.promise($(this));\n };\n }; // try making plugin\n\n\n ImagesLoaded.makeJQueryPlugin(); // -------------------------- -------------------------- //\n\n return ImagesLoaded;\n});","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;","var arraySample = require('./_arraySample'),\n values = require('./values');\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n\n\nfunction baseSample(collection) {\n return arraySample(values(collection));\n}\n\nmodule.exports = baseSample;","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\n\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;","var arrayMap = require('./_arrayMap');\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n\n\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nmodule.exports = arrayMap;","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = arrayLikeKeys;","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n\nmodule.exports = baseTimes;","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]';\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var _Symbol = require('./_Symbol');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nmodule.exports = getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar root = require('./_root'),\n stubFalse = require('./stubFalse');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n var type = _typeof(value);\n\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = require('./_freeGlobal');\n/** Detect free variable `exports`. */\n\n\nvar freeExports = (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n } // Legacy `process.binding('util')` for Node.js < 10.\n\n\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n\nmodule.exports = nodeUtil;","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseKeys;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n\nmodule.exports = isPrototype;","var overArg = require('./_overArg');\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeKeys = overArg(Object.keys, Object);\nmodule.exports = nativeKeys;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n/** `Object#toString` result references. */\n\n\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n/**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\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\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = __webpack_public_path__ + \"media/images/favicons/favicon-3b77703b85da51e791b00e4021a2d4e9.ico\";","module.exports = __webpack_public_path__ + \"media/images/favicons/favicon-16x16-f2ccd86ea8cfe753efd1bdc5a0039b3c.png\";","module.exports = __webpack_public_path__ + \"media/images/favicons/favicon-32x32-170624b52ded660486fd70f806ce4287.png\";","module.exports = __webpack_public_path__ + \"media/images/favicons/apple-touch-icon-cb704187f060484ed2d53e1f944cf965.png\";","module.exports = __webpack_public_path__ + \"media/images/magic_modules/homepage_grid_module/hgm_pattern-0-747b5b041fc91f7b93d75977d9cdab28.png\";","module.exports = __webpack_public_path__ + \"media/images/magic_modules/homepage_grid_module/hgm_pattern-1-42a5cae8807ea57c85362d3f4ad89ded.png\";","module.exports = __webpack_public_path__ + \"media/images/magic_modules/homepage_grid_module/hgm_pattern-2-bac0656b5200d325d7e57e80af53dca8.png\";","module.exports = __webpack_public_path__ + \"media/images/magic_modules/homepage_grid_module/hgm_pattern-3-d53c69c6770ec02a77e7a11def1ebe9e.png\";","module.exports = __webpack_public_path__ + \"media/images/png/newsletter_logo-c2e6928eab588036033a728f723a949e.png\";","// UNCOMMENT FOR DEBOUNCE OR THROTTLE SUPPORT. NOTE: REQUIRES LODASH TO BE INSTALLED\n// import debounce from \"lodash/debounce\";\n// import throttle from \"lodash/throttle\";\n\nclass App {\n constructor() {\n this.rootFontSize = App.getRootFontSize();\n\n // NOTE: breakpoints in rem units\n // NOTE: MAKE THIS MATCH YOUR SCSS BREAKPOINTS\n this.breakpoints = {\n xl: 100, // 1600px+\n lg: 75, // 1200px – 1599px\n md: 37.5, // 600px – 1199px\n sm: 22.5, // 360px – 599px\n xs: 0, // 0px – 359px\n };\n\n // Initial state\n this.state = {\n breakpoint: this.getBreakpoint(),\n };\n\n // Recognized events\n const config = [\n { parent: document, type: \"DOMContentLoaded\" },\n { parent: document, type: \"turbolinks:load\" },\n { parent: document, type: \"pageLoad\" },\n { parent: document, type: \"focusin\" },\n { parent: document, type: \"focusout\" },\n { parent: document, type: \"click\" },\n { parent: document, type: \"change\" },\n { parent: document, type: \"keydown\" },\n { parent: document, type: \"keyup\" },\n { parent: window, type: \"scroll\", throttle: 100 },\n { parent: window, type: \"resize\", debounce: 200 },\n { parent: window, type: \"breakpoint\" },\n ];\n\n // Build standardized events object\n this.events = config.reduce((acc, { type }) => {\n acc[type] = {};\n return acc;\n }, {});\n\n // Attach a listener for each registered event type,\n // optionally debouncing the handlers.\n config.forEach((eventConfig) => {\n const executeAllHandlers = (originalEvent) => {\n this.trigger(eventConfig.type, originalEvent);\n };\n\n // UNCOMMENT FOR DEBOUNCE OR THROTTLE SUPPORT. NOTE: REQUIRES LODASH TO BE INSTALLED\n // if (eventConfig.debounce) {\n // executeAllHandlers = debounce(executeAllHandlers, eventConfig.debounce);\n // } else if (eventConfig.throttle) {\n // executeAllHandlers = throttle(executeAllHandlers, eventConfig.throttle);\n // }\n\n eventConfig.parent.addEventListener(eventConfig.type, executeAllHandlers);\n });\n\n // Setup custom events\n this.addEventListener(\"resize\", {\n name: \"breakpoint-checker\",\n handler: () => {\n const previousBreakpoint = this.state.breakpoint;\n const currentBreakpoint = this.getBreakpoint();\n if (currentBreakpoint !== this.state.breakpoint) {\n this.state.breakpoint = currentBreakpoint;\n this.trigger(\"breakpoint\", {\n previous: previousBreakpoint,\n current: currentBreakpoint,\n });\n }\n },\n });\n\n this.addEventListener(\"turbolinks:load\", () => {\n this.trigger(\"pageLoad\", {\n target: document.body,\n });\n });\n }\n\n addEventListener(type, e) {\n if (!type || !this.events[type]) {\n /* eslint-disable no-console */\n console.warn(\n `Could not add event listener because \"${type}\" is not one of the expected events. Expected:`,\n Object.keys(this.events)\n );\n return false;\n }\n\n const name = e.name || Object.keys(this.events[type]).length;\n const handler = e instanceof Function ? e : e.handler;\n this.events[type][name] = handler;\n\n return this.removeEventListener.bind(this, type, name);\n }\n\n removeEventListener(type, data) {\n const name = typeof data === \"string\" ? data : data.name;\n if (this.events[type] && this.events[type][name]) {\n delete this.events[type][name];\n }\n }\n\n trigger(type, originalEvent) {\n if (!this.events[type]) {\n return;\n }\n\n Object.values(this.events[type]).forEach((handler) => {\n if (handler instanceof Function) {\n handler(originalEvent);\n }\n });\n }\n\n updateState(update) {\n this.state = Object.assign({}, this.state, update);\n }\n\n // NOTE: do not call this method directly. Opt instead to use `this.state.breakpoint`\n getBreakpoint() {\n const viewportWidth = window.innerWidth / this.rootFontSize;\n const [breakpoint] = Object.entries(this.breakpoints).find(\n ([_, minViewportSize]) => viewportWidth >= minViewportSize // eslint-disable-line no-unused-vars\n );\n return breakpoint;\n }\n\n // NOTE: css media queries use rem units, so our js recreation of breakpoint should too.\n // We need the root font size in pixels to convert `window.innerWidth` to rem units.\n // `getComputedStyle` causes DOM reflow, though, so we want to minimize how often we check it.\n static getRootFontSize() {\n return parseFloat(getComputedStyle(document.documentElement).fontSize);\n }\n}\nexport default new App();\n","import Flickity from \"flickity\";\nimport App from \"../tufts_app\";\n\nrequire(\"flickity-imagesloaded\");\n\nexport class Carousel {\n constructor(element, elements = {}) {\n this.setElements(element, elements);\n\n // FLICKITY\n this.initializeFlickity();\n\n // STATE\n this.state = this.defaultState;\n\n // EVENTS\n this.setUpEvents();\n }\n\n get defaultState() {\n return {\n index: 0,\n maxIndex: this.flickity.slides.length - 1,\n };\n }\n\n setElements(element, elements) {\n this.element = element;\n this.carouselWrapper =\n elements.carouselWrapper ||\n element.querySelector(\".js-carousel__flickity\");\n this.previousControls =\n elements.previousControl ||\n element.querySelectorAll(\".js-carousel__previous\");\n this.nextControls =\n elements.nextControl || element.querySelectorAll(\".js-carousel__next\");\n this.caption =\n elements.caption || element.querySelector(\".js-carousel__caption\");\n this.count = elements.count || element.querySelector(\".js-carousel__count\");\n }\n\n initializeFlickity() {\n this.flickity = new Flickity(this.carouselWrapper, this.defaultConfig);\n }\n\n setUpEvents() {\n if (this.nextControls) {\n this.nextControls.forEach((control) => {\n control.addEventListener(\"click\", () => {\n this.next();\n });\n });\n }\n\n if (this.previousControls) {\n this.previousControls.forEach((control) => {\n control.addEventListener(\"click\", () => {\n this.previous();\n });\n });\n }\n }\n\n update(update) {\n this.state = Object.assign(this.state, update);\n this.render(update);\n }\n\n render(update) {\n if (update.hasOwnProperty(\"index\")) {\n this.renderCaption();\n this.renderCount();\n }\n }\n\n renderCaption() {\n this.caption.innerHTML = this.currentSlide.querySelector(\n \".js-carousel__slide-caption\"\n ).innerHTML;\n }\n\n renderCount() {\n this.count.innerHTML = `${this.state.index + 1}/${\n this.flickity.slides.length\n }`;\n }\n\n next() {\n this.flickity.next();\n this.updateIndex();\n }\n\n previous() {\n this.flickity.previous();\n this.updateIndex();\n }\n\n updateIndex() {\n const index = this.flickity.selectedIndex;\n this.update({ index });\n }\n\n /* eslint-disable class-methods-use-this */\n get defaultConfig() {\n return {\n wrapAround: true,\n prevNextButtons: false,\n pageDots: true,\n imagesLoaded: true,\n };\n }\n\n get currentSlide() {\n return this.flickity.slides[this.state.index].cells[0].element;\n }\n}\n\nexport const init = () => {\n App.addEventListener(\"pageLoad\", () => {\n [...document.querySelectorAll(\".js-carousel\")].forEach((instance) => {\n return new Carousel(instance);\n });\n });\n};\n","import App from \"../tufts_app\";\n\nclass TextReveal {\n constructor(ele) {\n this.wrapper = ele;\n this.button;\n\n this.addButton();\n\n this.wrapper.addEventListener(\"click\", () => {\n if (this.wrapper.classList.contains(\"collapse\")) {\n this.wrapper.classList.remove(\"collapse\");\n this.wrapper.removeChild(this.button);\n }\n });\n }\n\n addButton() {\n this.button = document.createElement(\"button\");\n this.button.classList.add(\"text-reveal-button\");\n this.button.setAttribute(\"aria-label\", \"Reveal more\");\n this.button.innerHTML = `\n \n `;\n this.wrapper.appendChild(this.button);\n }\n}\n\nexport const init = () => {\n App.addEventListener(\"pageLoad\", () => {\n [...document.querySelectorAll(\".js-text-reveal\")].map((ele) => {\n return new TextReveal(ele);\n });\n });\n};\n","import App from \"../tufts_app\";\n\nclass Marquee {\n constructor(ele) {\n this.element = ele;\n this.innerWrapper = this.element.querySelector(\".js-marquee-inner\");\n this.textWrapper = this.innerWrapper.querySelector(\n \".js-marquee-text-wrapper\"\n );\n this.inputText = this.textWrapper.querySelectorAll(\".js-marquee-text\");\n\n /*\n --------------\n INITIAL RENDER\n --------------\n */\n\n let textWidth = this.textWrapper.offsetWidth;\n while (textWidth <= this.innerWrapper.offsetWidth) {\n this.inputText.forEach((text) => {\n // clone all of the text nodes and add them until desired width is achieved\n const textClone = text.cloneNode(true);\n this.textWrapper.append(textClone);\n });\n textWidth = this.textWrapper.offsetWidth;\n }\n\n // we need two textWrappers one after the other to make an infinite scrolling animations\n this.textWrapperClone = this.textWrapper.cloneNode(true);\n this.innerWrapper.append(this.textWrapperClone);\n\n this.element.classList.add(\"marquee--running\");\n }\n}\n\nexport const init = () => {\n App.addEventListener(\"pageLoad\", () => {\n [...document.querySelectorAll(\".js-marquee\")].map((ele) => {\n return new Marquee(ele);\n });\n });\n};\n","import App from \"../tufts_app\";\n\nclass Accordion {\n constructor(ele) {\n this.wrapper = ele;\n this.content = this.wrapper.querySelector(\".js-accordion-content\");\n\n this.content.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n });\n\n this.wrapper.addEventListener(\"click\", () => {\n if (this.wrapper.classList.contains(\"collapse\")) {\n this.wrapper.classList.remove(\"collapse\");\n } else {\n this.wrapper.classList.add(\"collapse\");\n }\n });\n }\n}\n\nexport const init = () => {\n App.addEventListener(\"pageLoad\", () => {\n [...document.querySelectorAll(\".js-accordion\")].map((ele) => {\n return new Accordion(ele);\n });\n });\n};\n","class SiteHeader {\n constructor(ele) {\n this.ele = ele;\n\n this.ele.addEventListener(\"click\", () => {\n if (this.ele.classList.contains(\"active\")) {\n this.ele.classList.remove(\"active\");\n } else {\n this.ele.classList.add(\"active\");\n }\n });\n }\n}\n\nexport const init = () => {\n document.addEventListener(\"turbolinks:load\", () => {\n [...document.querySelectorAll(\".js-site-header\")].map(\n (ele) => new SiteHeader(ele)\n );\n });\n};\n","import App from \"../tufts_app\";\n\nclass MobileSearchForm {\n constructor(ele) {\n this.wrapper = ele;\n this.icon = this.wrapper.querySelector(\".js-mobile-search-icon\");\n this.input = this.wrapper.querySelector(\"input\");\n this.form = this.wrapper.querySelector(\"form\");\n\n this.wrapper.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n });\n\n this.icon.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n\n if (!this.wrapper.classList.contains(\"active\")) {\n this.wrapper.classList.add(\"active\");\n this.input.focus();\n } else {\n this.form.submit();\n }\n });\n }\n}\n\nexport const init = () => {\n App.addEventListener(\"pageLoad\", () => {\n [...document.querySelectorAll(\".js-mobile-search-form\")].map((ele) => {\n return new MobileSearchForm(ele);\n });\n });\n};\n","class CollectionSearch {\n constructor(ele) {\n this.ele = ele;\n this.input = this.ele.querySelector(\"input[type='text']\");\n this.form = this.ele.querySelector(\".js-collection-search-form\");\n this.arrow = this.ele.querySelector(\".js-collection-search-arrow\");\n\n this.ele.addEventListener(\"click\", () => {\n this.input.placeholder = \"\";\n });\n\n this.arrow.addEventListener(\"click\", () => {\n this.form.submit();\n });\n }\n}\n\nexport const init = () => {\n document.addEventListener(\"turbolinks:load\", () => {\n [...document.querySelectorAll(\".js-collection-search\")].map(\n (ele) => new CollectionSearch(ele)\n );\n });\n};\n","class ProgramGrid {\n constructor(ele) {\n this.ele = ele;\n this.showMoreBtn = this.ele.querySelector(\".js-program-grid-show-more\");\n this.showMoreBtnMobile = this.ele.querySelector(\n \".js-program-grid-show-more-mobile\"\n );\n this.showLessBtn = this.ele.querySelector(\".js-program-grid-show-less\");\n this.hiddenCards = this.ele.querySelectorAll(\".js-program-card-hidden\");\n this.hiddenCardsMobile = this.ele.querySelectorAll(\n \".js-program-grid-card-desktop\"\n );\n\n if (this.showMoreBtn) {\n this.showMoreBtn.addEventListener(\"click\", () => {\n this.hiddenCards.forEach((card) => card.classList.remove(\"hidden\"));\n this.showMoreBtn.classList.add(\"hidden\");\n this.showLessBtn.classList.remove(\"hidden\");\n });\n\n this.showLessBtn.addEventListener(\"click\", () => {\n this.hiddenCards.forEach((card) => card.classList.add(\"hidden\"));\n this.showLessBtn.classList.add(\"hidden\");\n this.showMoreBtn.classList.remove(\"hidden\");\n });\n }\n\n if (this.showMoreBtnMobile) {\n this.showMoreBtnMobile.addEventListener(\"click\", () => {\n this.hiddenCardsMobile.forEach((card) => card.classList.add(\"show\"));\n this.showMoreBtnMobile.classList.add(\"hidden\");\n });\n }\n }\n}\n\nexport const init = () => {\n document.addEventListener(\"turbolinks:load\", () => {\n [...document.querySelectorAll(\".js-program-grid\")].map(\n (ele) => new ProgramGrid(ele)\n );\n });\n};\n","import sample from \"lodash/sample\";\n\nexport class HappeningTodayBadge {\n constructor(ele) {\n this.card = ele.querySelector(\".hgm__card-inner\");\n\n this.properties = sample([\n { x: \"60%\", y: \"46%\", rotation: \"-13deg\", color: \"#C0F550\" },\n { x: \"69%\", y: \"39%\", rotation: \"36.89deg\", color: \"#4ADBDB\" },\n { x: \"15%\", y: \"85%\", rotation: \"-28deg\", color: \"#A290FF\" },\n { x: \"15%\", y: \"15%\", rotation: \"17deg\", color: \"#BA700C\" },\n ]);\n\n this.badge = document.createElement(\"div\");\n this.badge.innerHTML = \"Happening today!\";\n this.badge.classList.add(\"happening-today-badge\");\n this.badge.style.backgroundColor = this.properties.color;\n this.badge.style.transform = `rotate(${this.properties.rotation})`;\n this.badge.style.left = this.properties.x;\n this.badge.style.top = this.properties.y;\n\n this.card.append(this.badge);\n }\n\n appendToCard() {\n this.card.append(this.badge);\n }\n}\n","/* JavaScript for HomepageGridModule */\n\nimport * as Util from \"../utilities\";\nimport { HappeningTodayBadge } from \"../scripts/happening_today_badge\";\n\n// Export the class itself\nexport class HomepageGridModule {\n constructor(element) {\n // elements\n this.element = element;\n this.cards = this.element.querySelectorAll(\".js-hgm-card\");\n this.imagePlaceholder = this.element.querySelector(\n \".js-hgm-image-placeholder\"\n );\n this.imageClone = this.imagePlaceholder.querySelector(\n \".js-hgm-image-clone\"\n );\n this.interval = null;\n this.hoverTime = 500;\n this.zoomedImageWidth = 1280;\n this.zIndexCounter = 0;\n\n this.state = {\n nodeToExpand: null,\n imageExpanded: false,\n imageToExpand: null,\n shouldExpand: this.cards.length > 1,\n };\n\n // initial render\n this.cards.forEach((item) => {\n const card = item;\n card.style.zIndex = 0;\n\n if (card.querySelector(\".js-happening-today\")) {\n const badge = new HappeningTodayBadge(card);\n badge.appendToCard();\n }\n });\n this.render(this.state);\n\n // event listeners\n this.mouseEnterHandler = this.handleMouseEnter.bind(this);\n this.mouseLeaveHandler = this.handleMouseLeave.bind(this);\n\n this.cards.forEach((item) => {\n item.addEventListener(\"mouseenter\", this.mouseEnterHandler);\n item.addEventListener(\"mouseleave\", this.mouseLeaveHandler);\n });\n }\n\n handleMouseEnter(e) {\n this.update({ nodeToExpand: e.target });\n }\n\n handleMouseLeave() {\n this.update({ nodeToExpand: null });\n }\n\n startTimer() {\n this.imageHandler = this.expandImage.bind(this);\n this.timer = setTimeout(this.imageHandler, this.hoverTime);\n }\n\n stopTimer() {\n clearTimeout(this.timer);\n }\n\n expandImage() {\n this.update({ imageExpanded: true });\n }\n\n resetImage() {\n this.update({ imageExpanded: false });\n clearInterval(this.interval);\n if (this.imagePlaceholder) {\n this.imagePlaceholder.style.zIndex = -1;\n this.imageClone.style.transition = \"opacity 0s\";\n this.imageClone.style.opacity = 0;\n this.imageClone.style.visibility = \"hidden\";\n this.imageClone.innerHTML = \"\";\n }\n\n if (this.state.imageToExpand) {\n this.state.imageToExpand.style.transition = \"opacity 0s\";\n this.state.imageToExpand.style.opacity = 1;\n this.state.imageToExpand.style.visibility = \"visible\";\n this.state.imageToExpand = null;\n }\n }\n\n // State management functions\n\n update(update) {\n this.state = Object.assign(this.state, update);\n this.render(update);\n }\n\n render(update) {\n if (update.hasOwnProperty(\"nodeToExpand\")) {\n if (!this.state.nodeToExpand && this.state.shouldExpand) {\n this.stopTimer();\n this.resetImage();\n } else if (this.state.nodeToExpand && this.state.shouldExpand) {\n this.startTimer();\n this.bringNodeToFront();\n }\n }\n if (update.hasOwnProperty(\"imageExpanded\")) {\n this.renderExpandedImage();\n }\n }\n\n bringNodeToFront() {\n setTimeout(() => {\n this.zIndexCounter += 1;\n\n if (this.state.nodeToExpand) {\n this.state.nodeToExpand.style.zIndex = this.zIndexCounter;\n }\n }, 150);\n }\n\n getZoomedImgSrc(baseUrl) {\n // If using default background image, do not do all this filepicker stuff\n if (baseUrl.includes(\"filestack\") === false) return baseUrl;\n\n const resizeTransformation = `resize=width:${this.zoomedImageWidth},fit:max`;\n const formatTransformation = \"output=f:jpg,background:white\";\n const transformationString = [\n resizeTransformation,\n formatTransformation,\n ].join(\"/\");\n return Util.getFilepickerUrl(baseUrl, transformationString);\n }\n\n // animateExpandingImage(left, top, width, height, wrapperWidth, wrapperHeight) {\n // let [leftPos, topPos, eleWidth, eleHeight] = [left, top, width, height];\n //\n // // TODO: Figure out this math!!\n // const leftExpansionRate = wrapperWidth / left;\n // const topExpansionRate = wrapperHeight / top;\n // const verticalExpansionRate = 100 / (100 - height);\n // const horizontalExpansionRate = 100 / (100 - width);\n //\n // const expand = () => {\n // if (leftPos <= 0 && topPos <= 0 && eleWidth >= 100 && eleHeight >= 100) {\n // clearInterval(this.interval);\n // }\n // if (leftPos > 0) {\n // leftPos -= leftExpansionRate;\n // }\n //\n // if (topPos > 0) {\n // topPos -= topExpansionRate;\n // }\n //\n // if (eleWidth < 100) {\n // eleWidth += horizontalExpansionRate;\n // }\n //\n // if (eleHeight < 100) {\n // eleHeight += verticalExpansionRate;\n // }\n //\n // this.imageClone.style.width = `${eleWidth}%`;\n // this.imageClone.style.height = `${eleHeight}%`;\n // this.imageClone.style.left = `${leftPos}px`;\n // this.imageClone.style.top = `${topPos}px`;\n // };\n //\n // this.interval = setInterval(expand, 10); // draw every 10ms\n // }\n\n renderExpandedImage() {\n if (!this.state.imageExpanded) {\n return;\n }\n\n // NOTE: This code is an effort to implement expanding images. Leaving it here for now\n\n // set elements\n // this.state.imageToExpand =\n // this.state.nodeToExpand.querySelector(\".js-hgm-image\");\n // let imageRect = this.state.imageToExpand.getBoundingClientRect();\n // let wrapperRect = this.imagePlaceholder.getBoundingClientRect();\n\n // images left and top positions inside wrapper\n\n // let imageCloneWidth = (imageRect.width / wrapperRect.width) * 100;\n // let imageCloneHeight = (imageRect.height / wrapperRect.height) * 100;\n //\n // let imagePosLeft = imageRect.left - wrapperRect.left;\n // let imagePosTop = imageRect.top - wrapperRect.top;\n\n // this.imageClone.style.width = `${imageCloneWidth}%`;\n // this.imageClone.style.height = `${imageCloneHeight}%`;\n // this.imageClone.style.left = `${imagePosLeft}px`;\n // this.imageClone.style.top = `${imagePosTop}px`;\n // this.imageClone.style.transition = \"width 1s, height 1s\";\n\n // this.imageClone.style.width = \"100%\";\n // this.imageClone.style.height = \"100%\";\n // this.imageClone.style.left = \"0\";\n // this.imageClone.style.top = \"0\";\n // this.imageClone.style.opacity = 0;\n // this.imageClone.style.visibility = \"hidden\";\n\n // CLONES IMAGE AND PLACES IN WRAPPER\n const baseUrl = this.state.nodeToExpand.dataset.baseImageUrl;\n const imageSrc = this.getZoomedImgSrc(baseUrl);\n\n Util.loadImage(imageSrc, (img) => {\n this.imageClone.append(img);\n this.imagePlaceholder.style.zIndex = this.zIndexCounter;\n this.imageClone.style.transition = \"opacity 1s\";\n\n setTimeout(() => {\n this.imageClone.style.opacity = 1;\n this.imageClone.style.visibility = \"visible\";\n }, 250);\n\n // TODO: evenly expand image to fill the image placeholder div\n\n // this.animateExpandingImage(\n // imagePosLeft,\n // imagePosTop,\n // imageCloneWidth,\n // imageCloneHeight,\n // wrapperRect.width,\n // wrapperRect.height\n // );\n });\n }\n}\n\n// Exports an array of all the current instances\nexport const homepageGridModules = {\n current: [],\n};\n\n// Export an init function that looks for and instantiates the module on pageload\nexport const init = () => {\n // Initialize any instances of the HomepageGridModule on any given page\n document.addEventListener(\"turbolinks:load\", () => {\n homepageGridModules.current = [\n ...document.querySelectorAll(\".js-homepage-grid-module\"),\n ].map((instance) => new HomepageGridModule(instance));\n });\n};\n","export const getFilepickerUrl = (baseUrl, transformations) => {\n const pathParts = baseUrl.split(\"/\");\n const imgID = pathParts.pop();\n const transformationsEncoded =\n typeof transformations === \"string\"\n ? transformations\n : transformations.join(\"/\");\n const urlPath = pathParts.concat(transformationsEncoded, imgID).join(\"/\");\n return urlPath.toString();\n};\n\nexport const loadImage = (src, next) => {\n const img = new Image();\n img.onload = next(img);\n img.src = src;\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/*\nStimulus 3.0.1\nCopyright © 2021 Basecamp, LLC\n */\nvar EventListener = /*#__PURE__*/function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n _classCallCheck(this, EventListener);\n\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n _createClass(EventListener, [{\n key: \"connect\",\n value: function connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var extendedEvent = extendEvent(event);\n\n var _iterator = _createForOfIteratorHelper(this.bindings),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var binding = _step.value;\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n }]);\n\n return EventListener;\n}();\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var _stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n\n _stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher(application) {\n _classCallCheck(this, Dispatcher);\n\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n _createClass(Dispatcher, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n }\n }, {\n key: \"eventListeners\",\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"fetchEventListenerForBinding\",\n value: function fetchEventListenerForBinding(binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n }, {\n key: \"fetchEventListener\",\n value: function fetchEventListener(eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n }\n }, {\n key: \"createEventListener\",\n value: function createEventListener(eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n }\n }, {\n key: \"fetchEventListenerMapForEventTarget\",\n value: function fetchEventListenerMapForEventTarget(eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n }\n }, {\n key: \"cacheKey\",\n value: function cacheKey(eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\".concat(eventOptions[key] ? \"\" : \"!\").concat(key));\n });\n return parts.join(\":\");\n }\n }]);\n\n return Dispatcher;\n}();\n\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\n\nfunction parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n return Object.assign(options, _defineProperty({}, token.replace(/^!/, \"\"), !/^!/.test(token)));\n }, {});\n}\n\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n return char.toUpperCase();\n });\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\".concat(char.toLowerCase());\n });\n}\n\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nvar Action = /*#__PURE__*/function () {\n function Action(element, index, descriptor) {\n _classCallCheck(this, Action);\n\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n _createClass(Action, [{\n key: \"toString\",\n value: function toString() {\n var eventNameSuffix = this.eventTargetName ? \"@\".concat(this.eventTargetName) : \"\";\n return \"\".concat(this.eventName).concat(eventNameSuffix, \"->\").concat(this.identifier, \"#\").concat(this.methodName);\n }\n }, {\n key: \"params\",\n get: function get() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n } else {\n return {};\n }\n }\n }, {\n key: \"getParamsFromEventTargetAttributes\",\n value: function getParamsFromEventTargetAttributes(eventTarget) {\n var params = {};\n var pattern = new RegExp(\"^data-\".concat(this.identifier, \"-(.+)-param$\"));\n var attributes = Array.from(eventTarget.attributes);\n attributes.forEach(function (_ref) {\n var name = _ref.name,\n value = _ref.value;\n var match = name.match(pattern);\n var key = match && match[1];\n\n if (key) {\n Object.assign(params, _defineProperty({}, camelize(key), typecast(value)));\n }\n });\n return params;\n }\n }, {\n key: \"eventTargetName\",\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n }\n }], [{\n key: \"forToken\",\n value: function forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n }]);\n\n return Action;\n}();\n\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"details\": function details(e) {\n return \"toggle\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"input\";\n }\n};\n\nfunction getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nvar Binding = /*#__PURE__*/function () {\n function Binding(context, action) {\n _classCallCheck(this, Binding);\n\n this.context = context;\n this.action = action;\n }\n\n _createClass(Binding, [{\n key: \"index\",\n get: function get() {\n return this.action.index;\n }\n }, {\n key: \"eventTarget\",\n get: function get() {\n return this.action.eventTarget;\n }\n }, {\n key: \"eventOptions\",\n get: function get() {\n return this.action.eventOptions;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n }\n }, {\n key: \"eventName\",\n get: function get() {\n return this.action.eventName;\n }\n }, {\n key: \"method\",\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\".concat(this.action, \"\\\" references undefined method \\\"\").concat(this.methodName, \"\\\"\"));\n }\n }, {\n key: \"invokeWithEvent\",\n value: function invokeWithEvent(event) {\n var target = event.target,\n currentTarget = event.currentTarget;\n\n try {\n var params = this.action.params;\n var actionEvent = Object.assign(event, {\n params: params\n });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, {\n event: event,\n target: target,\n currentTarget: currentTarget,\n action: this.methodName\n });\n } catch (error) {\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\".concat(this.action, \"\\\"\"), detail);\n }\n }\n }, {\n key: \"willBeInvokedByEvent\",\n value: function willBeInvokedByEvent(event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"methodName\",\n get: function get() {\n return this.action.methodName;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return Binding;\n}();\n\nvar ElementObserver = /*#__PURE__*/function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n _classCallCheck(this, ElementObserver);\n\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n _createClass(ElementObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n\n callback();\n\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _Array$from = Array.from(this.elements); _i < _Array$from.length; _i++) {\n var element = _Array$from[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _i2 = 0, _Array$from2 = Array.from(matches); _i2 < _Array$from2.length; _i2++) {\n var _element = _Array$from2[_i2];\n this.addElement(_element);\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator2 = _createForOfIteratorHelper(mutations),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mutation = _step2.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n }, {\n key: \"processAttributeChange\",\n value: function processAttributeChange(node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n }, {\n key: \"processRemovedNodes\",\n value: function processRemovedNodes(nodes) {\n for (var _i3 = 0, _Array$from3 = Array.from(nodes); _i3 < _Array$from3.length; _i3++) {\n var node = _Array$from3[_i3];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n }, {\n key: \"processAddedNodes\",\n value: function processAddedNodes(nodes) {\n for (var _i4 = 0, _Array$from4 = Array.from(nodes); _i4 < _Array$from4.length; _i4++) {\n var node = _Array$from4[_i4];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return this.delegate.matchElement(element);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree() {\n var tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n }, {\n key: \"processTree\",\n value: function processTree(tree, processor) {\n var _iterator3 = _createForOfIteratorHelper(this.matchElementsInTree(tree)),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n processor.call(this, element);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"elementFromNode\",\n value: function elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n }, {\n key: \"elementIsActive\",\n value: function elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n }, {\n key: \"addElement\",\n value: function addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n }, {\n key: \"removeElement\",\n value: function removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n }]);\n\n return ElementObserver;\n}();\n\nvar AttributeObserver = /*#__PURE__*/function () {\n function AttributeObserver(element, attributeName, delegate) {\n _classCallCheck(this, AttributeObserver);\n\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n _createClass(AttributeObserver, [{\n key: \"element\",\n get: function get() {\n return this.elementObserver.element;\n }\n }, {\n key: \"selector\",\n get: function get() {\n return \"[\".concat(this.attributeName, \"]\");\n }\n }, {\n key: \"start\",\n value: function start() {\n this.elementObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.elementObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.elementObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.elementObserver.refresh();\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.elementObserver.started;\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree(tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n }, {\n key: \"elementMatched\",\n value: function elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementUnmatched\",\n value: function elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementAttributeChanged\",\n value: function elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n }]);\n\n return AttributeObserver;\n}();\n\nvar StringMapObserver = /*#__PURE__*/function () {\n function StringMapObserver(element, delegate) {\n var _this2 = this;\n\n _classCallCheck(this, StringMapObserver);\n\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this2.processMutations(mutations);\n });\n }\n\n _createClass(StringMapObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var _iterator4 = _createForOfIteratorHelper(this.knownAttributeNames),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var attributeName = _step4.value;\n this.refreshAttribute(attributeName, null);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator5 = _createForOfIteratorHelper(mutations),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var mutation = _step5.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n }, {\n key: \"refreshAttribute\",\n value: function refreshAttribute(attributeName, oldValue) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n var value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n\n if (value == null) {\n var _oldValue = this.stringMap.get(attributeName);\n\n this.stringMap.delete(attributeName);\n if (_oldValue) this.stringMapKeyRemoved(key, attributeName, _oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n }, {\n key: \"knownAttributeNames\",\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n }, {\n key: \"currentAttributeNames\",\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n }\n }, {\n key: \"recordedAttributeNames\",\n get: function get() {\n return Array.from(this.stringMap.keys());\n }\n }]);\n\n return StringMapObserver;\n}();\n\nfunction _add(map, key, value) {\n fetch(map, key).add(value);\n}\n\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\n\nfunction fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\n\nfunction prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nvar Multimap = /*#__PURE__*/function () {\n function Multimap() {\n _classCallCheck(this, Multimap);\n\n this.valuesByKey = new Map();\n }\n\n _createClass(Multimap, [{\n key: \"keys\",\n get: function get() {\n return Array.from(this.valuesByKey.keys());\n }\n }, {\n key: \"values\",\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n }\n }, {\n key: \"size\",\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _add(this.valuesByKey, key, value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n }, {\n key: \"has\",\n value: function has(key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n }, {\n key: \"hasKey\",\n value: function hasKey(key) {\n return this.valuesByKey.has(key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n }\n }, {\n key: \"getValuesForKey\",\n value: function getValuesForKey(key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n values = _ref3[1];\n\n return values.has(value);\n }).map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n key = _ref5[0],\n values = _ref5[1];\n\n return key;\n });\n }\n }]);\n\n return Multimap;\n}();\n\nvar IndexedMultimap = /*#__PURE__*/function (_Multimap) {\n _inherits(IndexedMultimap, _Multimap);\n\n var _super = _createSuper(IndexedMultimap);\n\n function IndexedMultimap() {\n var _this3;\n\n _classCallCheck(this, IndexedMultimap);\n\n _this3 = _super.call(this);\n _this3.keysByValue = new Map();\n return _this3;\n }\n\n _createClass(IndexedMultimap, [{\n key: \"values\",\n get: function get() {\n return Array.from(this.keysByValue.keys());\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"add\", this).call(this, key, value);\n\n _add(this.keysByValue, value, key);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"delete\", this).call(this, key, value);\n\n del(this.keysByValue, value, key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n return this.keysByValue.has(value);\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n }]);\n\n return IndexedMultimap;\n}(Multimap);\n\nvar TokenListObserver = /*#__PURE__*/function () {\n function TokenListObserver(element, attributeName, delegate) {\n _classCallCheck(this, TokenListObserver);\n\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n _createClass(TokenListObserver, [{\n key: \"started\",\n get: function get() {\n return this.attributeObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.attributeObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.attributeObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.attributeObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.attributeObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.attributeObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.attributeObserver.attributeName;\n }\n }, {\n key: \"elementMatchedAttribute\",\n value: function elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n }, {\n key: \"elementAttributeValueChanged\",\n value: function elementAttributeValueChanged(element) {\n var _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n }, {\n key: \"elementUnmatchedAttribute\",\n value: function elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n }, {\n key: \"tokensMatched\",\n value: function tokensMatched(tokens) {\n var _this4 = this;\n\n tokens.forEach(function (token) {\n return _this4.tokenMatched(token);\n });\n }\n }, {\n key: \"tokensUnmatched\",\n value: function tokensUnmatched(tokens) {\n var _this5 = this;\n\n tokens.forEach(function (token) {\n return _this5.tokenUnmatched(token);\n });\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n }, {\n key: \"refreshTokensForElement\",\n value: function refreshTokensForElement(element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n previousToken = _ref7[0],\n currentToken = _ref7[1];\n\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n }, {\n key: \"readTokensForElement\",\n value: function readTokensForElement(element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n }]);\n\n return TokenListObserver;\n}();\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nvar ValueListObserver = /*#__PURE__*/function () {\n function ValueListObserver(element, attributeName, delegate) {\n _classCallCheck(this, ValueListObserver);\n\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n _createClass(ValueListObserver, [{\n key: \"started\",\n get: function get() {\n return this.tokenListObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.tokenListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.tokenListObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.tokenListObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.tokenListObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.tokenListObserver.attributeName;\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n }, {\n key: \"fetchParseResultForToken\",\n value: function fetchParseResultForToken(token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n }\n }, {\n key: \"fetchValuesByTokenForElement\",\n value: function fetchValuesByTokenForElement(element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n }\n }, {\n key: \"parseToken\",\n value: function parseToken(token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n }\n }]);\n\n return ValueListObserver;\n}();\n\nvar BindingObserver = /*#__PURE__*/function () {\n function BindingObserver(context, delegate) {\n _classCallCheck(this, BindingObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n _createClass(BindingObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"actionAttribute\",\n get: function get() {\n return this.schema.actionAttribute;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.context.schema;\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n }\n }, {\n key: \"connectAction\",\n value: function connectAction(action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n }, {\n key: \"disconnectAction\",\n value: function disconnectAction(action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n }, {\n key: \"disconnectAllActions\",\n value: function disconnectAllActions() {\n var _this6 = this;\n\n this.bindings.forEach(function (binding) {\n return _this6.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n }]);\n\n return BindingObserver;\n}();\n\nvar ValueObserver = /*#__PURE__*/function () {\n function ValueObserver(context, receiver) {\n _classCallCheck(this, ValueObserver);\n\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n\n _createClass(ValueObserver, [{\n key: \"start\",\n value: function start() {\n this.stringMapObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.stringMapObserver.stop();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"getStringMapKeyForAttribute\",\n value: function getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n var descriptor = this.valueDescriptorMap[attributeName];\n\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, name, oldValue) {\n var descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n\n this.invokeChangedCallback(name, value, oldValue);\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n var descriptor = this.valueDescriptorNameMap[key];\n\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n }, {\n key: \"invokeChangedCallbacksForDefaultValues\",\n value: function invokeChangedCallbacksForDefaultValues() {\n var _iterator6 = _createForOfIteratorHelper(this.valueDescriptors),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _ref9 = _step6.value;\n var key = _ref9.key;\n var name = _ref9.name;\n var defaultValue = _ref9.defaultValue;\n var writer = _ref9.writer;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }, {\n key: \"invokeChangedCallback\",\n value: function invokeChangedCallback(name, rawValue, rawOldValue) {\n var changedMethodName = \"\".concat(name, \"Changed\");\n var changedMethod = this.receiver[changedMethodName];\n\n if (typeof changedMethod == \"function\") {\n var descriptor = this.valueDescriptorNameMap[name];\n var value = descriptor.reader(rawValue);\n var oldValue = rawOldValue;\n\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n\n changedMethod.call(this.receiver, value, oldValue);\n }\n }\n }, {\n key: \"valueDescriptors\",\n get: function get() {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n }\n }, {\n key: \"valueDescriptorNameMap\",\n get: function get() {\n var _this7 = this;\n\n var descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(function (key) {\n var descriptor = _this7.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(attributeName) {\n var descriptor = this.valueDescriptorNameMap[attributeName];\n var hasMethodName = \"has\".concat(capitalize(descriptor.name));\n return this.receiver[hasMethodName];\n }\n }]);\n\n return ValueObserver;\n}();\n\nvar TargetObserver = /*#__PURE__*/function () {\n function TargetObserver(context, delegate) {\n _classCallCheck(this, TargetObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n\n _createClass(TargetObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(_ref10) {\n var element = _ref10.element,\n name = _ref10.content;\n\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(_ref11) {\n var element = _ref11.element,\n name = _ref11.content;\n this.disconnectTarget(element, name);\n }\n }, {\n key: \"connectTarget\",\n value: function connectTarget(element, name) {\n var _this8 = this;\n\n var _a;\n\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this8.delegate.targetConnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectTarget\",\n value: function disconnectTarget(element, name) {\n var _this9 = this;\n\n var _a;\n\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this9.delegate.targetDisconnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectAllTargets\",\n value: function disconnectAllTargets() {\n var _iterator7 = _createForOfIteratorHelper(this.targetsByName.keys),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var name = _step7.value;\n\n var _iterator8 = _createForOfIteratorHelper(this.targetsByName.getValuesForKey(name)),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n this.disconnectTarget(element, name);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return \"data-\".concat(this.context.identifier, \"-target\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return TargetObserver;\n}();\n\nvar Context = /*#__PURE__*/function () {\n function Context(module, scope) {\n var _this10 = this;\n\n _classCallCheck(this, Context);\n\n this.logDebugActivity = function (functionName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var identifier = _this10.identifier,\n controller = _this10.controller,\n element = _this10.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n\n _this10.application.logDebugActivity(_this10.identifier, functionName, detail);\n };\n\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n _createClass(Context, [{\n key: \"connect\",\n value: function connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n }, {\n key: \"application\",\n get: function get() {\n return this.module.application;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.module.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"dispatcher\",\n get: function get() {\n return this.application.dispatcher;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"parentElement\",\n get: function get() {\n return this.element.parentElement;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"targetConnected\",\n value: function targetConnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetConnected\"), element);\n }\n }, {\n key: \"targetDisconnected\",\n value: function targetDisconnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetDisconnected\"), element);\n }\n }, {\n key: \"invokeControllerMethod\",\n value: function invokeControllerMethod(methodName) {\n var controller = this.controller;\n\n if (typeof controller[methodName] == \"function\") {\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 controller[methodName].apply(controller, args);\n }\n }\n }]);\n\n return Context;\n}();\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\n\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, _toConsumableArray(getOwnStaticObjectPairs(constructor, propertyName)));\n return pairs;\n }, []);\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, _defineProperty({}, key, descriptor));\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return [].concat(_toConsumableArray(Object.getOwnPropertyNames(object)), _toConsumableArray(Object.getOwnPropertySymbols(object)));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, this instanceof extended ? this.constructor : void 0);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return /*#__PURE__*/function (_constructor) {\n _inherits(extended, _constructor);\n\n var _super2 = _createSuper(extended);\n\n function extended() {\n _classCallCheck(this, extended);\n\n return _super2.apply(this, arguments);\n }\n\n return extended;\n }(constructor);\n };\n }\n}();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nvar Module = /*#__PURE__*/function () {\n function Module(application, definition) {\n _classCallCheck(this, Module);\n\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n _createClass(Module, [{\n key: \"identifier\",\n get: function get() {\n return this.definition.identifier;\n }\n }, {\n key: \"controllerConstructor\",\n get: function get() {\n return this.definition.controllerConstructor;\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return Array.from(this.connectedContexts);\n }\n }, {\n key: \"connectContextForScope\",\n value: function connectContextForScope(scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n }, {\n key: \"disconnectContextForScope\",\n value: function disconnectContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n }, {\n key: \"fetchContextForScope\",\n value: function fetchContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n }\n }]);\n\n return Module;\n}();\n\nvar ClassMap = /*#__PURE__*/function () {\n function ClassMap(scope) {\n _classCallCheck(this, ClassMap);\n\n this.scope = scope;\n }\n\n _createClass(ClassMap, [{\n key: \"has\",\n value: function has(name) {\n return this.data.has(this.getDataKey(name));\n }\n }, {\n key: \"get\",\n value: function get(name) {\n return this.getAll(name)[0];\n }\n }, {\n key: \"getAll\",\n value: function getAll(name) {\n var tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n }, {\n key: \"getDataKey\",\n value: function getDataKey(name) {\n return \"\".concat(name, \"-class\");\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }]);\n\n return ClassMap;\n}();\n\nvar DataMap = /*#__PURE__*/function () {\n function DataMap(scope) {\n _classCallCheck(this, DataMap);\n\n this.scope = scope;\n }\n\n _createClass(DataMap, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n }, {\n key: \"has\",\n value: function has(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n if (this.has(key)) {\n var name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"getAttributeNameForKey\",\n value: function getAttributeNameForKey(key) {\n return \"data-\".concat(this.identifier, \"-\").concat(dasherize(key));\n }\n }]);\n\n return DataMap;\n}();\n\nvar Guide = /*#__PURE__*/function () {\n function Guide(logger) {\n _classCallCheck(this, Guide);\n\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n _createClass(Guide, [{\n key: \"warn\",\n value: function warn(object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n }]);\n\n return Guide;\n}();\n\nfunction attributeValueContainsToken(attributeName, token) {\n return \"[\".concat(attributeName, \"~=\\\"\").concat(token, \"\\\"]\");\n}\n\nvar TargetSet = /*#__PURE__*/function () {\n function TargetSet(scope) {\n _classCallCheck(this, TargetSet);\n\n this.scope = scope;\n }\n\n _createClass(TargetSet, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.scope.schema;\n }\n }, {\n key: \"has\",\n value: function has(targetName) {\n return this.find(targetName) != null;\n }\n }, {\n key: \"find\",\n value: function find() {\n var _this11 = this;\n\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n targetNames[_key2] = arguments[_key2];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this11.findTarget(targetName) || _this11.findLegacyTarget(targetName);\n }, undefined);\n }\n }, {\n key: \"findAll\",\n value: function findAll() {\n var _this12 = this;\n\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return [].concat(_toConsumableArray(targets), _toConsumableArray(_this12.findAllTargets(targetName)), _toConsumableArray(_this12.findAllLegacyTargets(targetName)));\n }, []);\n }\n }, {\n key: \"findTarget\",\n value: function findTarget(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n }, {\n key: \"findAllTargets\",\n value: function findAllTargets(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n }, {\n key: \"getSelectorForTargetName\",\n value: function getSelectorForTargetName(targetName) {\n var attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n }, {\n key: \"findLegacyTarget\",\n value: function findLegacyTarget(targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n }, {\n key: \"findAllLegacyTargets\",\n value: function findAllLegacyTargets(targetName) {\n var _this13 = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this13.deprecate(element, targetName);\n });\n }\n }, {\n key: \"getLegacySelectorForTargetName\",\n value: function getLegacySelectorForTargetName(targetName) {\n var targetDescriptor = \"\".concat(this.identifier, \".\").concat(targetName);\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n }, {\n key: \"deprecate\",\n value: function deprecate(element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n var revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, \"target:\".concat(targetName), \"Please replace \".concat(attributeName, \"=\\\"\").concat(identifier, \".\").concat(targetName, \"\\\" with \").concat(revisedAttributeName, \"=\\\"\").concat(targetName, \"\\\". \") + \"The \".concat(attributeName, \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n }\n }, {\n key: \"guide\",\n get: function get() {\n return this.scope.guide;\n }\n }]);\n\n return TargetSet;\n}();\n\nvar Scope = /*#__PURE__*/function () {\n function Scope(schema, element, identifier, logger) {\n var _this14 = this;\n\n _classCallCheck(this, Scope);\n\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = function (element) {\n return element.closest(_this14.controllerSelector) === _this14.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n\n _createClass(Scope, [{\n key: \"findElement\",\n value: function findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n }, {\n key: \"findAllElements\",\n value: function findAllElements(selector) {\n return [].concat(_toConsumableArray(this.element.matches(selector) ? [this.element] : []), _toConsumableArray(this.queryElements(selector).filter(this.containsElement)));\n }\n }, {\n key: \"queryElements\",\n value: function queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n }, {\n key: \"controllerSelector\",\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n }]);\n\n return Scope;\n}();\n\nvar ScopeObserver = /*#__PURE__*/function () {\n function ScopeObserver(element, schema, delegate) {\n _classCallCheck(this, ScopeObserver);\n\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n _createClass(ScopeObserver, [{\n key: \"start\",\n value: function start() {\n this.valueListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.valueListObserver.stop();\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n }, {\n key: \"fetchScopesByIdentifierForElement\",\n value: function fetchScopesByIdentifierForElement(element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n }\n }]);\n\n return ScopeObserver;\n}();\n\nvar Router = /*#__PURE__*/function () {\n function Router(application) {\n _classCallCheck(this, Router);\n\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n _createClass(Router, [{\n key: \"element\",\n get: function get() {\n return this.application.element;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"logger\",\n get: function get() {\n return this.application.logger;\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"modules\",\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scopeObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scopeObserver.stop();\n }\n }, {\n key: \"loadDefinition\",\n value: function loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n }\n }, {\n key: \"unloadIdentifier\",\n value: function unloadIdentifier(identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n }\n }, {\n key: \"getContextForElementAndIdentifier\",\n value: function getContextForElementAndIdentifier(element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n }, {\n key: \"createScopeForElementAndIdentifier\",\n value: function createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n }, {\n key: \"scopeConnected\",\n value: function scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n }, {\n key: \"scopeDisconnected\",\n value: function scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n }, {\n key: \"connectModule\",\n value: function connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n }\n }, {\n key: \"disconnectModule\",\n value: function disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n }\n }]);\n\n return Router;\n}();\n\nvar defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: function targetAttributeForScope(identifier) {\n return \"data-\".concat(identifier, \"-target\");\n }\n};\n\nvar Application = /*#__PURE__*/function () {\n function Application() {\n var _this15 = this;\n\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n\n _classCallCheck(this, Application);\n\n this.logger = console;\n this.debug = false;\n\n this.logDebugActivity = function (identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_this15.debug) {\n _this15.logFormattedMessage(identifier, functionName, detail);\n }\n };\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n _createClass(Application, [{\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return domReady();\n\n case 2:\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n }, {\n key: \"register\",\n value: function register(identifier, controllerConstructor) {\n if (controllerConstructor.shouldLoad) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n }\n }\n }, {\n key: \"load\",\n value: function load(head) {\n var _this16 = this;\n\n for (var _len4 = arguments.length, rest = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n rest[_key4 - 1] = arguments[_key4];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this16.router.loadDefinition(definition);\n });\n }\n }, {\n key: \"unload\",\n value: function unload(head) {\n var _this17 = this;\n\n for (var _len5 = arguments.length, rest = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n rest[_key5 - 1] = arguments[_key5];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this17.router.unloadIdentifier(identifier);\n });\n }\n }, {\n key: \"controllers\",\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n }\n }, {\n key: \"getControllerForElementAndIdentifier\",\n value: function getControllerForElementAndIdentifier(element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n var _a;\n\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n }, {\n key: \"logFormattedMessage\",\n value: function logFormattedMessage(identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(\"\".concat(identifier, \" #\").concat(functionName));\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n }], [{\n key: \"start\",\n value: function start(element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n }\n }]);\n\n return Application;\n}();\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", function () {\n return resolve();\n });\n } else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n var _ref12;\n\n return _ref12 = {}, _defineProperty(_ref12, \"\".concat(key, \"Class\"), {\n get: function get() {\n var classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\".concat(attribute, \"\\\"\"));\n }\n }\n }), _defineProperty(_ref12, \"\".concat(key, \"Classes\"), {\n get: function get() {\n return this.classes.getAll(key);\n }\n }), _defineProperty(_ref12, \"has\".concat(capitalize(key), \"Class\"), {\n get: function get() {\n return this.classes.has(key);\n }\n }), _ref12;\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n var _ref13;\n\n return _ref13 = {}, _defineProperty(_ref13, \"\".concat(name, \"Target\"), {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\".concat(name, \"\\\" for \\\"\").concat(this.identifier, \"\\\" controller\"));\n }\n }\n }), _defineProperty(_ref13, \"\".concat(name, \"Targets\"), {\n get: function get() {\n return this.targets.findAll(name);\n }\n }), _defineProperty(_ref13, \"has\".concat(capitalize(name), \"Target\"), {\n get: function get() {\n return this.targets.has(name);\n }\n }), _ref13;\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this18 = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n var attributeName = _this18.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, _defineProperty({}, attributeName, valueDescriptor));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _ref14;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return _ref14 = {}, _defineProperty(_ref14, name, {\n get: function get() {\n var value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }), _defineProperty(_ref14, \"has\".concat(capitalize(name)), {\n get: function get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }), _ref14;\n}\n\nfunction parseValueDefinitionPair(_ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n token = _ref16[0],\n typeDefinition = _ref16[1];\n\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\n\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n}\n\nfunction parseValueTypeDefault(defaultValue) {\n switch (_typeof(defaultValue)) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\n\nfunction parseValueTypeObject(typeObject) {\n var typeFromObject = parseValueTypeConstant(typeObject.type);\n\n if (typeFromObject) {\n var defaultValueType = parseValueTypeDefault(typeObject.default);\n\n if (typeFromObject !== defaultValueType) {\n throw new Error(\"Type \\\"\".concat(typeFromObject, \"\\\" must match the type of the default value. Given default value: \\\"\").concat(typeObject.default, \"\\\" as \\\"\").concat(defaultValueType, \"\\\"\"));\n }\n\n return typeFromObject;\n }\n}\n\nfunction parseValueTypeDefinition(typeDefinition) {\n var typeFromObject = parseValueTypeObject(typeDefinition);\n var typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n var typeFromConstant = parseValueTypeConstant(typeDefinition);\n var type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n throw new Error(\"Unknown value type \\\"\".concat(typeDefinition, \"\\\"\"));\n}\n\nfunction defaultValueForDefinition(typeDefinition) {\n var constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n var defaultValue = typeDefinition.default;\n if (defaultValue !== undefined) return defaultValue;\n return typeDefinition;\n}\n\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n var key = \"\".concat(dasherize(token), \"-value\");\n var type = parseValueTypeDefinition(typeDefinition);\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\n\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n\n boolean: false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nvar readers = {\n array: function array(value) {\n var array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n\n return array;\n },\n boolean: function boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function number(value) {\n return Number(value);\n },\n object: function object(value) {\n var object = JSON.parse(value);\n\n if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n\n return object;\n },\n string: function string(value) {\n return value;\n }\n};\nvar writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return \"\".concat(value);\n}\n\nvar Controller = /*#__PURE__*/function () {\n function Controller(context) {\n _classCallCheck(this, Controller);\n\n this.context = context;\n }\n\n _createClass(Controller, [{\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.scope.targets;\n }\n }, {\n key: \"classes\",\n get: function get() {\n return this.scope.classes;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }, {\n key: \"initialize\",\n value: function initialize() {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"dispatch\",\n value: function dispatch(eventName) {\n var _ref17 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref17$target = _ref17.target,\n target = _ref17$target === void 0 ? this.element : _ref17$target,\n _ref17$detail = _ref17.detail,\n detail = _ref17$detail === void 0 ? {} : _ref17$detail,\n _ref17$prefix = _ref17.prefix,\n prefix = _ref17$prefix === void 0 ? this.identifier : _ref17$prefix,\n _ref17$bubbles = _ref17.bubbles,\n bubbles = _ref17$bubbles === void 0 ? true : _ref17$bubbles,\n _ref17$cancelable = _ref17.cancelable,\n cancelable = _ref17$cancelable === void 0 ? true : _ref17$cancelable;\n\n var type = prefix ? \"\".concat(prefix, \":\").concat(eventName) : eventName;\n var event = new CustomEvent(type, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n }], [{\n key: \"shouldLoad\",\n get: function get() {\n return true;\n }\n }]);\n\n return Controller;\n}();\n\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, _add as add, defaultSchema, del, fetch, prune };","import { Application } from \"@hotwired/stimulus\";\n\nconst application = Application.start();\n\n// Configure Stimulus development experience\napplication.debug = false;\nwindow.Stimulus = application;\n\nexport { application };\n","var _templateObject, _templateObject2;\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/*\nTurbo 7.1.0\nCopyright © 2021 Basecamp, LLC\n */\n(function () {\n if (window.Reflect === undefined || window.customElements === undefined || window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n\n var BuiltInHTMLElement = HTMLElement;\n var wrapperForTheName = {\n 'HTMLElement': function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n }\n };\n window.HTMLElement = wrapperForTheName['HTMLElement'];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\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\n * all 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\n * THE SOFTWARE.\n */\n\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return;\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\n\nvar submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n var candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\n\nfunction clickCaptured(event) {\n var submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return;\n var prototype;\n\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n } else if (\"SubmitEvent\" in window) {\n return;\n } else {\n prototype = window.Event.prototype;\n }\n\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get: function get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\n\nvar FrameLoadingStyle;\n\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\n\nvar FrameElement = /*#__PURE__*/function (_HTMLElement) {\n _inherits(FrameElement, _HTMLElement);\n\n var _super = _createSuper(FrameElement);\n\n function FrameElement() {\n var _this;\n\n _classCallCheck(this, FrameElement);\n\n _this = _super.call(this);\n _this.loaded = Promise.resolve();\n _this.delegate = new FrameElement.delegateConstructor(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(FrameElement, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n this.delegate.connect();\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n this.delegate.disconnect();\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var src = this.src;\n this.src = null;\n this.src = src;\n }\n }, {\n key: \"attributeChangedCallback\",\n value: function attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else {\n this.delegate.disabledChanged();\n }\n }\n }, {\n key: \"src\",\n get: function get() {\n return this.getAttribute(\"src\");\n },\n set: function set(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n }, {\n key: \"loading\",\n get: function get() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n },\n set: function set(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n }, {\n key: \"disabled\",\n get: function get() {\n return this.hasAttribute(\"disabled\");\n },\n set: function set(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n }, {\n key: \"autoscroll\",\n get: function get() {\n return this.hasAttribute(\"autoscroll\");\n },\n set: function set(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n }, {\n key: \"complete\",\n get: function get() {\n return !this.delegate.isLoading;\n }\n }, {\n key: \"isActive\",\n get: function get() {\n return this.ownerDocument === document && !this.isPreview;\n }\n }, {\n key: \"isPreview\",\n get: function get() {\n var _a, _b;\n\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n }], [{\n key: \"observedAttributes\",\n get: function get() {\n return [\"disabled\", \"loading\", \"src\"];\n }\n }]);\n\n return FrameElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\n\nfunction getAnchor(url) {\n var anchorMatch;\n\n if (url.hash) {\n return url.hash.slice(1);\n } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\n\nfunction getAction(form, submitter) {\n var action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\n\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml))$/);\n}\n\nfunction isPrefixedBy(baseURL, url) {\n var prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\n\nfunction getRequestURL(url) {\n var anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nvar FetchResponse = /*#__PURE__*/function () {\n function FetchResponse(response) {\n _classCallCheck(this, FetchResponse);\n\n this.response = response;\n }\n\n _createClass(FetchResponse, [{\n key: \"succeeded\",\n get: function get() {\n return this.response.ok;\n }\n }, {\n key: \"failed\",\n get: function get() {\n return !this.succeeded;\n }\n }, {\n key: \"clientError\",\n get: function get() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n }, {\n key: \"serverError\",\n get: function get() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n }, {\n key: \"redirected\",\n get: function get() {\n return this.response.redirected;\n }\n }, {\n key: \"location\",\n get: function get() {\n return expandURL(this.response.url);\n }\n }, {\n key: \"isHTML\",\n get: function get() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n }, {\n key: \"statusCode\",\n get: function get() {\n return this.response.status;\n }\n }, {\n key: \"contentType\",\n get: function get() {\n return this.header(\"Content-Type\");\n }\n }, {\n key: \"responseText\",\n get: function get() {\n return this.response.clone().text();\n }\n }, {\n key: \"responseHTML\",\n get: function get() {\n if (this.isHTML) {\n return this.response.clone().text();\n } else {\n return Promise.resolve(undefined);\n }\n }\n }, {\n key: \"header\",\n value: function header(name) {\n return this.response.headers.get(name);\n }\n }]);\n\n return FetchResponse;\n}();\n\nfunction dispatch(eventName) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n target = _ref.target,\n cancelable = _ref.cancelable,\n detail = _ref.detail;\n\n var event = new CustomEvent(eventName, {\n cancelable: cancelable,\n bubbles: true,\n detail: detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event;\n}\n\nfunction nextAnimationFrame() {\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n return resolve();\n });\n });\n}\n\nfunction nextEventLoopTick() {\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return resolve();\n }, 0);\n });\n}\n\nfunction nextMicrotask() {\n return Promise.resolve();\n}\n\nfunction parseHTMLDocument() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return new DOMParser().parseFromString(html, \"text/html\");\n}\n\nfunction unindent(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n var match = lines[0].match(/^\\s+/);\n var indent = match ? match[0].length : 0;\n return lines.map(function (line) {\n return line.slice(indent);\n }).join(\"\\n\");\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce(function (result, string, i) {\n var value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\n\nfunction uuid() {\n return Array.apply(null, {\n length: 36\n }).map(function (_, i) {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n } else if (i == 14) {\n return \"4\";\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n } else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\n\nfunction getAttribute(attributeName) {\n for (var _len2 = arguments.length, elements = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n elements[_key2 - 1] = arguments[_key2];\n }\n\n var _iterator = _createForOfIteratorHelper(elements.map(function (element) {\n return element === null || element === void 0 ? void 0 : element.getAttribute(attributeName);\n })),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var value = _step.value;\n if (typeof value == \"string\") return value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n}\n\nfunction markAsBusy() {\n for (var _len3 = arguments.length, elements = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n elements[_key3] = arguments[_key3];\n }\n\n for (var _i = 0, _elements = elements; _i < _elements.length; _i++) {\n var element = _elements[_i];\n\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState() {\n for (var _len4 = arguments.length, elements = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n elements[_key4] = arguments[_key4];\n }\n\n for (var _i2 = 0, _elements2 = elements; _i2 < _elements2.length; _i2++) {\n var element = _elements2[_i2];\n\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nvar FetchMethod;\n\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n\n case \"post\":\n return FetchMethod.post;\n\n case \"put\":\n return FetchMethod.put;\n\n case \"patch\":\n return FetchMethod.patch;\n\n case \"delete\":\n return FetchMethod.delete;\n }\n}\n\nvar FetchRequest = /*#__PURE__*/function () {\n function FetchRequest(delegate, method, location) {\n var body = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n var target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n\n _classCallCheck(this, FetchRequest);\n\n this.abortController = new AbortController();\n\n this.resolveRequestPromise = function (value) {};\n\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n\n _createClass(FetchRequest, [{\n key: \"location\",\n get: function get() {\n return this.url;\n }\n }, {\n key: \"params\",\n get: function get() {\n return this.url.searchParams;\n }\n }, {\n key: \"entries\",\n get: function get() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.abortController.abort();\n }\n }, {\n key: \"perform\",\n value: function () {\n var _perform = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var _a, _b, fetchOptions, response;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n fetchOptions = this.fetchOptions;\n (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n _context.next = 4;\n return this.allowRequestToBeIntercepted(fetchOptions);\n\n case 4:\n _context.prev = 4;\n this.delegate.requestStarted(this);\n _context.next = 8;\n return fetch(this.url.href, fetchOptions);\n\n case 8:\n response = _context.sent;\n _context.next = 11;\n return this.receive(response);\n\n case 11:\n return _context.abrupt(\"return\", _context.sent);\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context[\"catch\"](4);\n\n if (!(_context.t0.name !== 'AbortError')) {\n _context.next = 19;\n break;\n }\n\n this.delegate.requestErrored(this, _context.t0);\n throw _context.t0;\n\n case 19:\n _context.prev = 19;\n this.delegate.requestFinished(this);\n return _context.finish(19);\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 14, 19, 22]]);\n }));\n\n function perform() {\n return _perform.apply(this, arguments);\n }\n\n return perform;\n }()\n }, {\n key: \"receive\",\n value: function () {\n var _receive = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(response) {\n var fetchResponse, event;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n fetchResponse = new FetchResponse(response);\n event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: {\n fetchResponse: fetchResponse\n },\n target: this.target\n });\n\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n\n return _context2.abrupt(\"return\", fetchResponse);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function receive(_x) {\n return _receive.apply(this, arguments);\n }\n\n return receive;\n }()\n }, {\n key: \"fetchOptions\",\n get: function get() {\n var _a;\n\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href\n };\n }\n }, {\n key: \"defaultHeaders\",\n get: function get() {\n return {\n \"Accept\": \"text/html, application/xhtml+xml\"\n };\n }\n }, {\n key: \"isIdempotent\",\n get: function get() {\n return this.method == FetchMethod.get;\n }\n }, {\n key: \"abortSignal\",\n get: function get() {\n return this.abortController.signal;\n }\n }, {\n key: \"allowRequestToBeIntercepted\",\n value: function () {\n var _allowRequestToBeIntercepted = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(fetchOptions) {\n var _this2 = this;\n\n var requestInterception, event;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n requestInterception = new Promise(function (resolve) {\n return _this2.resolveRequestPromise = resolve;\n });\n event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions: fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise\n },\n target: this.target\n });\n\n if (!event.defaultPrevented) {\n _context3.next = 5;\n break;\n }\n\n _context3.next = 5;\n return requestInterception;\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function allowRequestToBeIntercepted(_x2) {\n return _allowRequestToBeIntercepted.apply(this, arguments);\n }\n\n return allowRequestToBeIntercepted;\n }()\n }]);\n\n return FetchRequest;\n}();\n\nvar AppearanceObserver = /*#__PURE__*/function () {\n function AppearanceObserver(delegate, element) {\n var _this3 = this;\n\n _classCallCheck(this, AppearanceObserver);\n\n this.started = false;\n\n this.intersect = function (entries) {\n var lastEntry = entries.slice(-1)[0];\n\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n _this3.delegate.elementAppearedInViewport(_this3.element);\n }\n };\n\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n _createClass(AppearanceObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n }]);\n\n return AppearanceObserver;\n}();\n\nvar StreamMessage = /*#__PURE__*/function () {\n function StreamMessage(html) {\n _classCallCheck(this, StreamMessage);\n\n this.templateElement = document.createElement(\"template\");\n this.templateElement.innerHTML = html;\n }\n\n _createClass(StreamMessage, [{\n key: \"fragment\",\n get: function get() {\n var fragment = document.createDocumentFragment();\n\n var _iterator2 = _createForOfIteratorHelper(this.foreignElements),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var element = _step2.value;\n fragment.appendChild(document.importNode(element, true));\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return fragment;\n }\n }, {\n key: \"foreignElements\",\n get: function get() {\n return this.templateChildren.reduce(function (streamElements, child) {\n if (child.tagName.toLowerCase() == \"turbo-stream\") {\n return [].concat(_toConsumableArray(streamElements), [child]);\n } else {\n return streamElements;\n }\n }, []);\n }\n }, {\n key: \"templateChildren\",\n get: function get() {\n return Array.from(this.templateElement.content.children);\n }\n }], [{\n key: \"wrap\",\n value: function wrap(message) {\n if (typeof message == \"string\") {\n return new this(message);\n } else {\n return message;\n }\n }\n }]);\n\n return StreamMessage;\n}();\n\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nvar FormSubmissionState;\n\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\n\nvar FormEnctype;\n\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\n\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n\n case FormEnctype.plain:\n return FormEnctype.plain;\n\n default:\n return FormEnctype.urlEncoded;\n }\n}\n\nvar FormSubmission = /*#__PURE__*/function () {\n function FormSubmission(delegate, formElement, submitter) {\n var mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n _classCallCheck(this, FormSubmission);\n\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, _toConsumableArray(this.body.entries()));\n }\n\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n\n _createClass(FormSubmission, [{\n key: \"method\",\n get: function get() {\n var _a;\n\n var method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n }, {\n key: \"action\",\n get: function get() {\n var _a;\n\n var formElementAction = typeof this.formElement.action === 'string' ? this.formElement.action : null;\n return ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formaction\")) || this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }, {\n key: \"body\",\n get: function get() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n } else {\n return this.formData;\n }\n }\n }, {\n key: \"enctype\",\n get: function get() {\n var _a;\n\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n }, {\n key: \"isIdempotent\",\n get: function get() {\n return this.fetchRequest.isIdempotent;\n }\n }, {\n key: \"stringFormData\",\n get: function get() {\n return _toConsumableArray(this.formData).reduce(function (entries, _ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n name = _ref3[0],\n value = _ref3[1];\n\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n }, {\n key: \"confirmationMessage\",\n get: function get() {\n return this.formElement.getAttribute(\"data-turbo-confirm\");\n }\n }, {\n key: \"needsConfirmation\",\n get: function get() {\n return this.confirmationMessage !== null;\n }\n }, {\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n var _FormSubmissionState, initialized, requesting, answer;\n\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _FormSubmissionState = FormSubmissionState, initialized = _FormSubmissionState.initialized, requesting = _FormSubmissionState.requesting;\n\n if (!this.needsConfirmation) {\n _context4.next = 5;\n break;\n }\n\n answer = FormSubmission.confirmMethod(this.confirmationMessage, this.formElement);\n\n if (answer) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt(\"return\");\n\n case 5:\n if (!(this.state == initialized)) {\n _context4.next = 8;\n break;\n }\n\n this.state = requesting;\n return _context4.abrupt(\"return\", this.fetchRequest.perform());\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n var _FormSubmissionState2 = FormSubmissionState,\n stopping = _FormSubmissionState2.stopping,\n stopped = _FormSubmissionState2.stopped;\n\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n }, {\n key: \"prepareHeadersForRequest\",\n value: function prepareHeadersForRequest(headers, request) {\n if (!request.isIdempotent) {\n var token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n\n if (token) {\n headers[\"X-CSRF-Token\"] = token;\n }\n\n headers[\"Accept\"] = [StreamMessage.contentType, headers[\"Accept\"]].join(\", \");\n }\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted(request) {\n var _a;\n\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: {\n formSubmission: this\n }\n });\n this.delegate.formSubmissionStarted(this);\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(request, response) {\n this.result = {\n success: response.succeeded,\n fetchResponse: response\n };\n }\n }, {\n key: \"requestSucceededWithResponse\",\n value: function requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n var error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = {\n success: true,\n fetchResponse: response\n };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n }, {\n key: \"requestFailedWithResponse\",\n value: function requestFailedWithResponse(request, response) {\n this.result = {\n success: false,\n fetchResponse: response\n };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n }, {\n key: \"requestErrored\",\n value: function requestErrored(request, error) {\n this.result = {\n success: false,\n error: error\n };\n this.delegate.formSubmissionErrored(this, error);\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished(request) {\n var _a;\n\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({\n formSubmission: this\n }, this.result)\n });\n this.delegate.formSubmissionFinished(this);\n }\n }, {\n key: \"requestMustRedirect\",\n value: function requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n }], [{\n key: \"confirmMethod\",\n value: function confirmMethod(message, element) {\n return confirm(message);\n }\n }]);\n\n return FormSubmission;\n}();\n\nfunction buildFormData(formElement, submitter) {\n var formData = new FormData(formElement);\n var name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n var value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n\n if (name && value != null && formData.get(name) != value) {\n formData.append(name, value);\n }\n\n return formData;\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n var cookies = document.cookie ? document.cookie.split(\"; \") : [];\n var cookie = cookies.find(function (cookie) {\n return cookie.startsWith(cookieName);\n });\n\n if (cookie) {\n var value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\n\nfunction getMetaContent(name) {\n var element = document.querySelector(\"meta[name=\\\"\".concat(name, \"\\\"]\"));\n return element && element.content;\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\n\nfunction mergeFormDataEntries(url, entries) {\n var searchParams = new URLSearchParams();\n\n var _iterator3 = _createForOfIteratorHelper(entries),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _ref6 = _step3.value;\n\n var _ref5 = _slicedToArray(_ref6, 2);\n\n var name = _ref5[0];\n var value = _ref5[1];\n if (value instanceof File) continue;\n searchParams.append(name, value);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n url.search = searchParams.toString();\n return url;\n}\n\nvar Snapshot = /*#__PURE__*/function () {\n function Snapshot(element) {\n _classCallCheck(this, Snapshot);\n\n this.element = element;\n }\n\n _createClass(Snapshot, [{\n key: \"children\",\n get: function get() {\n return _toConsumableArray(this.element.children);\n }\n }, {\n key: \"hasAnchor\",\n value: function hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n }, {\n key: \"getElementForAnchor\",\n value: function getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(\"[id='\".concat(anchor, \"'], a[name='\").concat(anchor, \"']\")) : null;\n }\n }, {\n key: \"isConnected\",\n get: function get() {\n return this.element.isConnected;\n }\n }, {\n key: \"firstAutofocusableElement\",\n get: function get() {\n return this.element.querySelector(\"[autofocus]\");\n }\n }, {\n key: \"permanentElements\",\n get: function get() {\n return _toConsumableArray(this.element.querySelectorAll(\"[id][data-turbo-permanent]\"));\n }\n }, {\n key: \"getPermanentElementById\",\n value: function getPermanentElementById(id) {\n return this.element.querySelector(\"#\".concat(id, \"[data-turbo-permanent]\"));\n }\n }, {\n key: \"getPermanentElementMapForSnapshot\",\n value: function getPermanentElementMapForSnapshot(snapshot) {\n var permanentElementMap = {};\n\n var _iterator4 = _createForOfIteratorHelper(this.permanentElements),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var currentPermanentElement = _step4.value;\n var id = currentPermanentElement.id;\n var newPermanentElement = snapshot.getPermanentElementById(id);\n\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return permanentElementMap;\n }\n }]);\n\n return Snapshot;\n}();\n\nvar FormInterceptor = /*#__PURE__*/function () {\n function FormInterceptor(delegate, element) {\n var _this4 = this;\n\n _classCallCheck(this, FormInterceptor);\n\n this.submitBubbled = function (event) {\n var form = event.target;\n\n if (!event.defaultPrevented && form instanceof HTMLFormElement && form.closest(\"turbo-frame, html\") == _this4.element) {\n var submitter = event.submitter || undefined;\n var method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.method;\n\n if (method != \"dialog\" && _this4.delegate.shouldInterceptFormSubmission(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n _this4.delegate.formSubmissionIntercepted(form, submitter);\n }\n }\n };\n\n this.delegate = delegate;\n this.element = element;\n }\n\n _createClass(FormInterceptor, [{\n key: \"start\",\n value: function start() {\n this.element.addEventListener(\"submit\", this.submitBubbled);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.element.removeEventListener(\"submit\", this.submitBubbled);\n }\n }]);\n\n return FormInterceptor;\n}();\n\nvar View = /*#__PURE__*/function () {\n function View(delegate, element) {\n _classCallCheck(this, View);\n\n this.resolveRenderPromise = function (value) {};\n\n this.resolveInterceptionPromise = function (value) {};\n\n this.delegate = delegate;\n this.element = element;\n }\n\n _createClass(View, [{\n key: \"scrollToAnchor\",\n value: function scrollToAnchor(anchor) {\n var element = this.snapshot.getElementForAnchor(anchor);\n\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }\n }, {\n key: \"scrollToAnchorFromLocation\",\n value: function scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n }, {\n key: \"scrollToElement\",\n value: function scrollToElement(element) {\n element.scrollIntoView();\n }\n }, {\n key: \"focusElement\",\n value: function focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition(_ref7) {\n var x = _ref7.x,\n y = _ref7.y;\n this.scrollRoot.scrollTo(x, y);\n }\n }, {\n key: \"scrollToTop\",\n value: function scrollToTop() {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }, {\n key: \"scrollRoot\",\n get: function get() {\n return window;\n }\n }, {\n key: \"render\",\n value: function () {\n var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(renderer) {\n var _this5 = this;\n\n var isPreview, shouldRender, snapshot, renderInterception, immediateRender;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n isPreview = renderer.isPreview, shouldRender = renderer.shouldRender, snapshot = renderer.newSnapshot;\n\n if (!shouldRender) {\n _context5.next = 22;\n break;\n }\n\n _context5.prev = 2;\n this.renderPromise = new Promise(function (resolve) {\n return _this5.resolveRenderPromise = resolve;\n });\n this.renderer = renderer;\n this.prepareToRenderSnapshot(renderer);\n renderInterception = new Promise(function (resolve) {\n return _this5.resolveInterceptionPromise = resolve;\n });\n immediateRender = this.delegate.allowsImmediateRender(snapshot, this.resolveInterceptionPromise);\n\n if (immediateRender) {\n _context5.next = 11;\n break;\n }\n\n _context5.next = 11;\n return renderInterception;\n\n case 11:\n _context5.next = 13;\n return this.renderSnapshot(renderer);\n\n case 13:\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.finishRenderingSnapshot(renderer);\n\n case 15:\n _context5.prev = 15;\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n return _context5.finish(15);\n\n case 20:\n _context5.next = 23;\n break;\n\n case 22:\n this.invalidate();\n\n case 23:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[2,, 15, 20]]);\n }));\n\n function render(_x3) {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"invalidate\",\n value: function invalidate() {\n this.delegate.viewInvalidated();\n }\n }, {\n key: \"prepareToRenderSnapshot\",\n value: function prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n renderer.prepareToRender();\n }\n }, {\n key: \"markAsPreview\",\n value: function markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n }, {\n key: \"renderSnapshot\",\n value: function () {\n var _renderSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(renderer) {\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return renderer.render();\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n function renderSnapshot(_x4) {\n return _renderSnapshot.apply(this, arguments);\n }\n\n return renderSnapshot;\n }()\n }, {\n key: \"finishRenderingSnapshot\",\n value: function finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n }]);\n\n return View;\n}();\n\nvar FrameView = /*#__PURE__*/function (_View) {\n _inherits(FrameView, _View);\n\n var _super2 = _createSuper(FrameView);\n\n function FrameView() {\n _classCallCheck(this, FrameView);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(FrameView, [{\n key: \"invalidate\",\n value: function invalidate() {\n this.element.innerHTML = \"\";\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return new Snapshot(this.element);\n }\n }]);\n\n return FrameView;\n}(View);\n\nvar LinkInterceptor = /*#__PURE__*/function () {\n function LinkInterceptor(delegate, element) {\n var _this6 = this;\n\n _classCallCheck(this, LinkInterceptor);\n\n this.clickBubbled = function (event) {\n if (_this6.respondsToEventTarget(event.target)) {\n _this6.clickEvent = event;\n } else {\n delete _this6.clickEvent;\n }\n };\n\n this.linkClicked = function (event) {\n if (_this6.clickEvent && _this6.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (_this6.delegate.shouldInterceptLinkClick(event.target, event.detail.url)) {\n _this6.clickEvent.preventDefault();\n\n event.preventDefault();\n\n _this6.delegate.linkClickIntercepted(event.target, event.detail.url);\n }\n }\n\n delete _this6.clickEvent;\n };\n\n this.willVisit = function () {\n delete _this6.clickEvent;\n };\n\n this.delegate = delegate;\n this.element = element;\n }\n\n _createClass(LinkInterceptor, [{\n key: \"start\",\n value: function start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n }, {\n key: \"respondsToEventTarget\",\n value: function respondsToEventTarget(target) {\n var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n }]);\n\n return LinkInterceptor;\n}();\n\nvar Bardo = /*#__PURE__*/function () {\n function Bardo(permanentElementMap) {\n _classCallCheck(this, Bardo);\n\n this.permanentElementMap = permanentElementMap;\n }\n\n _createClass(Bardo, [{\n key: \"enter\",\n value: function enter() {\n for (var id in this.permanentElementMap) {\n var _this$permanentElemen = _slicedToArray(this.permanentElementMap[id], 2),\n newPermanentElement = _this$permanentElemen[1];\n\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n }, {\n key: \"leave\",\n value: function leave() {\n for (var id in this.permanentElementMap) {\n var _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[id], 1),\n currentPermanentElement = _this$permanentElemen2[0];\n\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n }\n }\n }, {\n key: \"replaceNewPermanentElementWithPlaceholder\",\n value: function replaceNewPermanentElementWithPlaceholder(permanentElement) {\n var placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n }, {\n key: \"replaceCurrentPermanentElementWithClone\",\n value: function replaceCurrentPermanentElementWithClone(permanentElement) {\n var clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n }, {\n key: \"replacePlaceholderWithPermanentElement\",\n value: function replacePlaceholderWithPermanentElement(permanentElement) {\n var placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n }, {\n key: \"getPlaceholderById\",\n value: function getPlaceholderById(id) {\n return this.placeholders.find(function (element) {\n return element.content == id;\n });\n }\n }, {\n key: \"placeholders\",\n get: function get() {\n return _toConsumableArray(document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\"));\n }\n }], [{\n key: \"preservingPermanentElements\",\n value: function preservingPermanentElements(permanentElementMap, callback) {\n var bardo = new this(permanentElementMap);\n bardo.enter();\n callback();\n bardo.leave();\n }\n }]);\n\n return Bardo;\n}();\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n var element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nvar Renderer = /*#__PURE__*/function () {\n function Renderer(currentSnapshot, newSnapshot, isPreview) {\n var _this7 = this;\n\n var willRender = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n _classCallCheck(this, Renderer);\n\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.promise = new Promise(function (resolve, reject) {\n return _this7.resolvingFunctions = {\n resolve: resolve,\n reject: reject\n };\n });\n }\n\n _createClass(Renderer, [{\n key: \"shouldRender\",\n get: function get() {\n return true;\n }\n }, {\n key: \"prepareToRender\",\n value: function prepareToRender() {\n return;\n }\n }, {\n key: \"finishRendering\",\n value: function finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n }, {\n key: \"createScriptElement\",\n value: function createScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n } else {\n var createdScriptElement = document.createElement(\"script\");\n\n if (this.cspNonce) {\n createdScriptElement.nonce = this.cspNonce;\n }\n\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n }\n }, {\n key: \"preservingPermanentElements\",\n value: function preservingPermanentElements(callback) {\n Bardo.preservingPermanentElements(this.permanentElementMap, callback);\n }\n }, {\n key: \"focusFirstAutofocusableElement\",\n value: function focusFirstAutofocusableElement() {\n var element = this.connectedSnapshot.firstAutofocusableElement;\n\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n }, {\n key: \"connectedSnapshot\",\n get: function get() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n }, {\n key: \"currentElement\",\n get: function get() {\n return this.currentSnapshot.element;\n }\n }, {\n key: \"newElement\",\n get: function get() {\n return this.newSnapshot.element;\n }\n }, {\n key: \"permanentElementMap\",\n get: function get() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n }, {\n key: \"cspNonce\",\n get: function get() {\n var _a;\n\n return (_a = document.head.querySelector('meta[name=\"csp-nonce\"]')) === null || _a === void 0 ? void 0 : _a.getAttribute(\"content\");\n }\n }]);\n\n return Renderer;\n}();\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (var _i3 = 0, _arr2 = _toConsumableArray(sourceElement.attributes); _i3 < _arr2.length; _i3++) {\n var _ref9 = _arr2[_i3];\n var name = _ref9.name;\n var value = _ref9.value;\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nvar FrameRenderer = /*#__PURE__*/function (_Renderer) {\n _inherits(FrameRenderer, _Renderer);\n\n var _super3 = _createSuper(FrameRenderer);\n\n function FrameRenderer() {\n _classCallCheck(this, FrameRenderer);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(FrameRenderer, [{\n key: \"shouldRender\",\n get: function get() {\n return true;\n }\n }, {\n key: \"render\",\n value: function () {\n var _render2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {\n var _this8 = this;\n\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return nextAnimationFrame();\n\n case 2:\n this.preservingPermanentElements(function () {\n _this8.loadFrameElement();\n });\n this.scrollFrameIntoView();\n _context7.next = 6;\n return nextAnimationFrame();\n\n case 6:\n this.focusFirstAutofocusableElement();\n _context7.next = 9;\n return nextAnimationFrame();\n\n case 9:\n this.activateScriptElements();\n\n case 10:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function render() {\n return _render2.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"loadFrameElement\",\n value: function loadFrameElement() {\n var _a;\n\n var destinationRange = document.createRange();\n destinationRange.selectNodeContents(this.currentElement);\n destinationRange.deleteContents();\n var frameElement = this.newElement;\n var sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n this.currentElement.appendChild(sourceRange.extractContents());\n }\n }\n }, {\n key: \"scrollFrameIntoView\",\n value: function scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n var element = this.currentElement.firstElementChild;\n var block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n\n if (element) {\n element.scrollIntoView({\n block: block\n });\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"activateScriptElements\",\n value: function activateScriptElements() {\n var _iterator5 = _createForOfIteratorHelper(this.newScriptElements),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var inertScriptElement = _step5.value;\n var activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }, {\n key: \"newScriptElements\",\n get: function get() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n }]);\n\n return FrameRenderer;\n}(Renderer);\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n } else {\n return defaultValue;\n }\n}\n\nvar ProgressBar = /*#__PURE__*/function () {\n function ProgressBar() {\n var _this9 = this;\n\n _classCallCheck(this, ProgressBar);\n\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n\n this.trickle = function () {\n _this9.setValue(_this9.value + Math.random() / 100);\n };\n\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n _createClass(ProgressBar, [{\n key: \"show\",\n value: function show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this10 = this;\n\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(function () {\n _this10.uninstallProgressElement();\n\n _this10.stopTrickling();\n\n _this10.visible = false;\n _this10.hiding = false;\n });\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n this.refresh();\n }\n }, {\n key: \"installStylesheetElement\",\n value: function installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n }, {\n key: \"installProgressElement\",\n value: function installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n }, {\n key: \"fadeProgressElement\",\n value: function fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n }, {\n key: \"uninstallProgressElement\",\n value: function uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n }, {\n key: \"startTrickling\",\n value: function startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n }, {\n key: \"stopTrickling\",\n value: function stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this11 = this;\n\n requestAnimationFrame(function () {\n _this11.progressElement.style.width = \"\".concat(10 + _this11.value * 90, \"%\");\n });\n }\n }, {\n key: \"createStylesheetElement\",\n value: function createStylesheetElement() {\n var element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n return element;\n }\n }, {\n key: \"createProgressElement\",\n value: function createProgressElement() {\n var element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n }], [{\n key: \"defaultCSS\",\n get: function get() {\n return unindent(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n .turbo-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition:\\n width \", \"ms ease-out,\\n opacity \", \"ms \", \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n }\\n \"])), ProgressBar.animationDuration, ProgressBar.animationDuration / 2, ProgressBar.animationDuration / 2);\n }\n }]);\n\n return ProgressBar;\n}();\n\nProgressBar.animationDuration = 300;\n\nvar HeadSnapshot = /*#__PURE__*/function (_Snapshot) {\n _inherits(HeadSnapshot, _Snapshot);\n\n var _super4 = _createSuper(HeadSnapshot);\n\n function HeadSnapshot() {\n var _this12;\n\n _classCallCheck(this, HeadSnapshot);\n\n _this12 = _super4.apply(this, arguments);\n _this12.detailsByOuterHTML = _this12.children.filter(function (element) {\n return !elementIsNoscript(element);\n }).map(function (element) {\n return elementWithoutNonce(element);\n }).reduce(function (result, element) {\n var outerHTML = element.outerHTML;\n var details = outerHTML in result ? result[outerHTML] : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return Object.assign(Object.assign({}, result), _defineProperty({}, outerHTML, Object.assign(Object.assign({}, details), {\n elements: [].concat(_toConsumableArray(details.elements), [element])\n })));\n }, {});\n return _this12;\n }\n\n _createClass(HeadSnapshot, [{\n key: \"trackedElementSignature\",\n get: function get() {\n var _this13 = this;\n\n return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n return _this13.detailsByOuterHTML[outerHTML].tracked;\n }).join(\"\");\n }\n }, {\n key: \"getScriptElementsNotInSnapshot\",\n value: function getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n }, {\n key: \"getStylesheetElementsNotInSnapshot\",\n value: function getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n }, {\n key: \"getElementsMatchingTypeNotInSnapshot\",\n value: function getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n var _this14 = this;\n\n return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n return !(outerHTML in snapshot.detailsByOuterHTML);\n }).map(function (outerHTML) {\n return _this14.detailsByOuterHTML[outerHTML];\n }).filter(function (_ref10) {\n var type = _ref10.type;\n return type == matchedType;\n }).map(function (_ref11) {\n var _ref11$elements = _slicedToArray(_ref11.elements, 1),\n element = _ref11$elements[0];\n\n return element;\n });\n }\n }, {\n key: \"provisionalElements\",\n get: function get() {\n var _this15 = this;\n\n return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n var _this15$detailsByOute = _this15.detailsByOuterHTML[outerHTML],\n type = _this15$detailsByOute.type,\n tracked = _this15$detailsByOute.tracked,\n elements = _this15$detailsByOute.elements;\n\n if (type == null && !tracked) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(elements));\n } else if (elements.length > 1) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(elements.slice(1)));\n } else {\n return result;\n }\n }, []);\n }\n }, {\n key: \"getMetaValue\",\n value: function getMetaValue(name) {\n var element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n }, {\n key: \"findMetaElementByName\",\n value: function findMetaElementByName(name) {\n var _this16 = this;\n\n return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n var _this16$detailsByOute = _slicedToArray(_this16.detailsByOuterHTML[outerHTML].elements, 1),\n element = _this16$detailsByOute[0];\n\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n }]);\n\n return HeadSnapshot;\n}(Snapshot);\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\n\nfunction elementIsScript(element) {\n var tagName = element.tagName.toLowerCase();\n return tagName == \"script\";\n}\n\nfunction elementIsNoscript(element) {\n var tagName = element.tagName.toLowerCase();\n return tagName == \"noscript\";\n}\n\nfunction elementIsStylesheet(element) {\n var tagName = element.tagName.toLowerCase();\n return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n var tagName = element.tagName.toLowerCase();\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element;\n}\n\nvar PageSnapshot = /*#__PURE__*/function (_Snapshot2) {\n _inherits(PageSnapshot, _Snapshot2);\n\n var _super5 = _createSuper(PageSnapshot);\n\n function PageSnapshot(element, headSnapshot) {\n var _this17;\n\n _classCallCheck(this, PageSnapshot);\n\n _this17 = _super5.call(this, element);\n _this17.headSnapshot = headSnapshot;\n return _this17;\n }\n\n _createClass(PageSnapshot, [{\n key: \"clone\",\n value: function clone() {\n return new PageSnapshot(this.element.cloneNode(true), this.headSnapshot);\n }\n }, {\n key: \"headElement\",\n get: function get() {\n return this.headSnapshot.element;\n }\n }, {\n key: \"rootLocation\",\n get: function get() {\n var _a;\n\n var root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n }, {\n key: \"cacheControlValue\",\n get: function get() {\n return this.getSetting(\"cache-control\");\n }\n }, {\n key: \"isPreviewable\",\n get: function get() {\n return this.cacheControlValue != \"no-preview\";\n }\n }, {\n key: \"isCacheable\",\n get: function get() {\n return this.cacheControlValue != \"no-cache\";\n }\n }, {\n key: \"isVisitable\",\n get: function get() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n }, {\n key: \"getSetting\",\n value: function getSetting(name) {\n return this.headSnapshot.getMetaValue(\"turbo-\".concat(name));\n }\n }], [{\n key: \"fromHTMLString\",\n value: function fromHTMLString() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return this.fromDocument(parseHTMLDocument(html));\n }\n }, {\n key: \"fromElement\",\n value: function fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n }, {\n key: \"fromDocument\",\n value: function fromDocument(_ref12) {\n var head = _ref12.head,\n body = _ref12.body;\n return new this(body, new HeadSnapshot(head));\n }\n }]);\n\n return PageSnapshot;\n}(Snapshot);\n\nvar TimingMetric;\n\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\n\nvar VisitState;\n\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\n\nvar defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: function visitCachedSnapshot() {},\n willRender: true\n};\nvar SystemStatusCode;\n\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\n\nvar Visit = /*#__PURE__*/function () {\n function Visit(delegate, location, restorationIdentifier) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Visit);\n\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n var _Object$assign2 = Object.assign(Object.assign({}, defaultOptions), options),\n action = _Object$assign2.action,\n historyChanged = _Object$assign2.historyChanged,\n referrer = _Object$assign2.referrer,\n snapshotHTML = _Object$assign2.snapshotHTML,\n response = _Object$assign2.response,\n visitCachedSnapshot = _Object$assign2.visitCachedSnapshot,\n willRender = _Object$assign2.willRender;\n\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.scrolled = !willRender;\n }\n\n _createClass(Visit, [{\n key: \"adapter\",\n get: function get() {\n return this.delegate.adapter;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this.delegate.view;\n }\n }, {\n key: \"history\",\n get: function get() {\n return this.delegate.history;\n }\n }, {\n key: \"restorationData\",\n get: function get() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n }, {\n key: \"silent\",\n get: function get() {\n return this.isSamePage;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n }, {\n key: \"complete\",\n value: function complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n this.followRedirect();\n }\n }\n }, {\n key: \"fail\",\n value: function fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n }, {\n key: \"changeHistory\",\n value: function changeHistory() {\n var _a;\n\n if (!this.historyChanged) {\n var actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n var method = this.getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n }, {\n key: \"issueRequest\",\n value: function issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n }, {\n key: \"simulateRequest\",\n value: function simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n }, {\n key: \"startRequest\",\n value: function startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n }, {\n key: \"recordResponse\",\n value: function recordResponse() {\n var response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n this.response = response;\n\n if (response) {\n var statusCode = response.statusCode;\n\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n }, {\n key: \"finishRequest\",\n value: function finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n }, {\n key: \"loadResponse\",\n value: function loadResponse() {\n var _this18 = this;\n\n if (this.response) {\n var _this$response = this.response,\n statusCode = _this$response.statusCode,\n responseHTML = _this$response.responseHTML;\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _this18.cacheSnapshot();\n\n if (!_this18.view.renderPromise) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return _this18.view.renderPromise;\n\n case 4:\n if (!(isSuccessful(statusCode) && responseHTML != null)) {\n _context8.next = 11;\n break;\n }\n\n _context8.next = 7;\n return _this18.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, _this18.willRender);\n\n case 7:\n _this18.adapter.visitRendered(_this18);\n\n _this18.complete();\n\n _context8.next = 15;\n break;\n\n case 11:\n _context8.next = 13;\n return _this18.view.renderError(PageSnapshot.fromHTMLString(responseHTML));\n\n case 13:\n _this18.adapter.visitRendered(_this18);\n\n _this18.fail();\n\n case 15:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n })));\n }\n }\n }, {\n key: \"getCachedSnapshot\",\n value: function getCachedSnapshot() {\n var snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n }, {\n key: \"getPreloadedSnapshot\",\n value: function getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n }, {\n key: \"hasCachedSnapshot\",\n value: function hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n }, {\n key: \"loadCachedSnapshot\",\n value: function loadCachedSnapshot() {\n var _this19 = this;\n\n var snapshot = this.getCachedSnapshot();\n\n if (snapshot) {\n var isPreview = this.shouldIssueRequest();\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {\n return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _this19.cacheSnapshot();\n\n if (!_this19.isSamePage) {\n _context9.next = 5;\n break;\n }\n\n _this19.adapter.visitRendered(_this19);\n\n _context9.next = 12;\n break;\n\n case 5:\n if (!_this19.view.renderPromise) {\n _context9.next = 8;\n break;\n }\n\n _context9.next = 8;\n return _this19.view.renderPromise;\n\n case 8:\n _context9.next = 10;\n return _this19.view.renderPage(snapshot, isPreview, _this19.willRender);\n\n case 10:\n _this19.adapter.visitRendered(_this19);\n\n if (!isPreview) {\n _this19.complete();\n }\n\n case 12:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n })));\n }\n }\n }, {\n key: \"followRedirect\",\n value: function followRedirect() {\n var _a;\n\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: 'replace',\n response: this.response\n });\n this.followedRedirect = true;\n }\n }\n }, {\n key: \"goToSamePageAnchor\",\n value: function goToSamePageAnchor() {\n var _this20 = this;\n\n if (this.isSamePage) {\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {\n return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _this20.cacheSnapshot();\n\n _this20.adapter.visitRendered(_this20);\n\n case 2:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n })));\n }\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted() {\n this.startRequest();\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(request, response) {}\n }, {\n key: \"requestSucceededWithResponse\",\n value: function () {\n var _requestSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(request, response) {\n var responseHTML, redirected, statusCode;\n return _regeneratorRuntime.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return response.responseHTML;\n\n case 2:\n responseHTML = _context11.sent;\n redirected = response.redirected, statusCode = response.statusCode;\n\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected: redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n });\n }\n\n case 5:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function requestSucceededWithResponse(_x5, _x6) {\n return _requestSucceededWithResponse.apply(this, arguments);\n }\n\n return requestSucceededWithResponse;\n }()\n }, {\n key: \"requestFailedWithResponse\",\n value: function () {\n var _requestFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(request, response) {\n var responseHTML, redirected, statusCode;\n return _regeneratorRuntime.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return response.responseHTML;\n\n case 2:\n responseHTML = _context12.sent;\n redirected = response.redirected, statusCode = response.statusCode;\n\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected: redirected\n });\n } else {\n this.recordResponse({\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n });\n }\n\n case 5:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function requestFailedWithResponse(_x7, _x8) {\n return _requestFailedWithResponse.apply(this, arguments);\n }\n\n return requestFailedWithResponse;\n }()\n }, {\n key: \"requestErrored\",\n value: function requestErrored(request, error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished() {\n this.finishRequest();\n }\n }, {\n key: \"performScroll\",\n value: function performScroll() {\n if (!this.scrolled) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n }, {\n key: \"scrollToRestoredPosition\",\n value: function scrollToRestoredPosition() {\n var scrollPosition = this.restorationData.scrollPosition;\n\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n }, {\n key: \"scrollToAnchor\",\n value: function scrollToAnchor() {\n var anchor = getAnchor(this.location);\n\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n }, {\n key: \"recordTimingMetric\",\n value: function recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n }, {\n key: \"getTimingMetrics\",\n value: function getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n }, {\n key: \"getHistoryMethodForAction\",\n value: function getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n }, {\n key: \"hasPreloadedResponse\",\n value: function hasPreloadedResponse() {\n return _typeof(this.response) == \"object\";\n }\n }, {\n key: \"shouldIssueRequest\",\n value: function shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n } else {\n return this.willRender;\n }\n }\n }, {\n key: \"cacheSnapshot\",\n value: function cacheSnapshot() {\n var _this21 = this;\n\n if (!this.snapshotCached) {\n this.view.cacheSnapshot().then(function (snapshot) {\n return snapshot && _this21.visitCachedSnapshot(snapshot);\n });\n this.snapshotCached = true;\n }\n }\n }, {\n key: \"render\",\n value: function () {\n var _render3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(callback) {\n var _this22 = this;\n\n return _regeneratorRuntime.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n this.cancelRender();\n _context13.next = 3;\n return new Promise(function (resolve) {\n _this22.frame = requestAnimationFrame(function () {\n return resolve();\n });\n });\n\n case 3:\n _context13.next = 5;\n return callback();\n\n case 5:\n delete this.frame;\n this.performScroll();\n\n case 7:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function render(_x9) {\n return _render3.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"cancelRender\",\n value: function cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n }]);\n\n return Visit;\n}();\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nvar BrowserAdapter = /*#__PURE__*/function () {\n function BrowserAdapter(session) {\n var _this23 = this;\n\n _classCallCheck(this, BrowserAdapter);\n\n this.progressBar = new ProgressBar();\n\n this.showProgressBar = function () {\n _this23.progressBar.show();\n };\n\n this.session = session;\n }\n\n _createClass(BrowserAdapter, [{\n key: \"visitProposedToLocation\",\n value: function visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, uuid(), options);\n }\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.changeHistory();\n visit.goToSamePageAnchor();\n }\n }, {\n key: \"visitRequestStarted\",\n value: function visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n }, {\n key: \"visitRequestCompleted\",\n value: function visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n }, {\n key: \"visitRequestFailedWithStatusCode\",\n value: function visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload();\n\n default:\n return visit.loadResponse();\n }\n }\n }, {\n key: \"visitRequestFinished\",\n value: function visitRequestFinished(visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(visit) {}\n }, {\n key: \"pageInvalidated\",\n value: function pageInvalidated() {\n this.reload();\n }\n }, {\n key: \"visitFailed\",\n value: function visitFailed(visit) {}\n }, {\n key: \"visitRendered\",\n value: function visitRendered(visit) {}\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n }, {\n key: \"showVisitProgressBarAfterDelay\",\n value: function showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }, {\n key: \"hideVisitProgressBar\",\n value: function hideVisitProgressBar() {\n this.progressBar.hide();\n\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n }, {\n key: \"showFormProgressBarAfterDelay\",\n value: function showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n }, {\n key: \"hideFormProgressBar\",\n value: function hideFormProgressBar() {\n this.progressBar.hide();\n\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n }, {\n key: \"reload\",\n value: function reload() {\n window.location.reload();\n }\n }, {\n key: \"navigator\",\n get: function get() {\n return this.session.navigator;\n }\n }]);\n\n return BrowserAdapter;\n}();\n\nvar CacheObserver = /*#__PURE__*/function () {\n function CacheObserver() {\n _classCallCheck(this, CacheObserver);\n\n this.started = false;\n }\n\n _createClass(CacheObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n }, {\n key: \"removeStaleElements\",\n value: function removeStaleElements() {\n var staleElements = _toConsumableArray(document.querySelectorAll('[data-turbo-cache=\"false\"]'));\n\n var _iterator6 = _createForOfIteratorHelper(staleElements),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var element = _step6.value;\n element.remove();\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }]);\n\n return CacheObserver;\n}();\n\nvar FormSubmitObserver = /*#__PURE__*/function () {\n function FormSubmitObserver(delegate) {\n var _this24 = this;\n\n _classCallCheck(this, FormSubmitObserver);\n\n this.started = false;\n\n this.submitCaptured = function () {\n removeEventListener(\"submit\", _this24.submitBubbled, false);\n addEventListener(\"submit\", _this24.submitBubbled, false);\n };\n\n this.submitBubbled = function (event) {\n if (!event.defaultPrevented) {\n var form = event.target instanceof HTMLFormElement ? event.target : undefined;\n var submitter = event.submitter || undefined;\n\n if (form) {\n var method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n\n if (method != \"dialog\" && _this24.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n\n _this24.delegate.formSubmitted(form, submitter);\n }\n }\n }\n };\n\n this.delegate = delegate;\n }\n\n _createClass(FormSubmitObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n }]);\n\n return FormSubmitObserver;\n}();\n\nvar FrameRedirector = /*#__PURE__*/function () {\n function FrameRedirector(element) {\n _classCallCheck(this, FrameRedirector);\n\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formInterceptor = new FormInterceptor(this, element);\n }\n\n _createClass(FrameRedirector, [{\n key: \"start\",\n value: function start() {\n this.linkInterceptor.start();\n this.formInterceptor.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n }, {\n key: \"shouldInterceptLinkClick\",\n value: function shouldInterceptLinkClick(element, url) {\n return this.shouldRedirect(element);\n }\n }, {\n key: \"linkClickIntercepted\",\n value: function linkClickIntercepted(element, url) {\n var frame = this.findFrameElement(element);\n\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url);\n }\n }\n }, {\n key: \"shouldInterceptFormSubmission\",\n value: function shouldInterceptFormSubmission(element, submitter) {\n return this.shouldSubmit(element, submitter);\n }\n }, {\n key: \"formSubmissionIntercepted\",\n value: function formSubmissionIntercepted(element, submitter) {\n var frame = this.findFrameElement(element, submitter);\n\n if (frame) {\n frame.removeAttribute(\"reloadable\");\n frame.delegate.formSubmissionIntercepted(element, submitter);\n }\n }\n }, {\n key: \"shouldSubmit\",\n value: function shouldSubmit(form, submitter) {\n var _a;\n\n var action = getAction(form, submitter);\n var meta = this.element.ownerDocument.querySelector(\"meta[name=\\\"turbo-root\\\"]\");\n var rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n }, {\n key: \"shouldRedirect\",\n value: function shouldRedirect(element, submitter) {\n var frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n }, {\n key: \"findFrameElement\",\n value: function findFrameElement(element, submitter) {\n var id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n\n if (id && id != \"_top\") {\n var frame = this.element.querySelector(\"#\".concat(id, \":not([disabled])\"));\n\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n }]);\n\n return FrameRedirector;\n}();\n\nvar History = /*#__PURE__*/function () {\n function History(delegate) {\n var _this25 = this;\n\n _classCallCheck(this, History);\n\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n\n this.onPopState = function (event) {\n if (_this25.shouldHandlePopState()) {\n var _ref16 = event.state || {},\n turbo = _ref16.turbo;\n\n if (turbo) {\n _this25.location = new URL(window.location.href);\n var restorationIdentifier = turbo.restorationIdentifier;\n _this25.restorationIdentifier = restorationIdentifier;\n\n _this25.delegate.historyPoppedToLocationWithRestorationIdentifier(_this25.location, restorationIdentifier);\n }\n }\n };\n\n this.onPageLoad = /*#__PURE__*/function () {\n var _ref17 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(event) {\n return _regeneratorRuntime.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return nextMicrotask();\n\n case 2:\n _this25.pageLoaded = true;\n\n case 3:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14);\n }));\n\n return function (_x10) {\n return _ref17.apply(this, arguments);\n };\n }();\n\n this.delegate = delegate;\n }\n\n _createClass(History, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n }, {\n key: \"push\",\n value: function push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n }, {\n key: \"replace\",\n value: function replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n }, {\n key: \"update\",\n value: function update(method, location) {\n var restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n var state = {\n turbo: {\n restorationIdentifier: restorationIdentifier\n }\n };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n }, {\n key: \"getRestorationDataForIdentifier\",\n value: function getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n }, {\n key: \"updateRestorationData\",\n value: function updateRestorationData(additionalData) {\n var restorationIdentifier = this.restorationIdentifier;\n var restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n }, {\n key: \"assumeControlOfScrollRestoration\",\n value: function assumeControlOfScrollRestoration() {\n var _a;\n\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n }, {\n key: \"relinquishControlOfScrollRestoration\",\n value: function relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n }, {\n key: \"shouldHandlePopState\",\n value: function shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n }, {\n key: \"pageIsLoaded\",\n value: function pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n }]);\n\n return History;\n}();\n\nvar LinkClickObserver = /*#__PURE__*/function () {\n function LinkClickObserver(delegate) {\n var _this26 = this;\n\n _classCallCheck(this, LinkClickObserver);\n\n this.started = false;\n\n this.clickCaptured = function () {\n removeEventListener(\"click\", _this26.clickBubbled, false);\n addEventListener(\"click\", _this26.clickBubbled, false);\n };\n\n this.clickBubbled = function (event) {\n if (_this26.clickEventIsSignificant(event)) {\n var target = event.composedPath && event.composedPath()[0] || event.target;\n\n var link = _this26.findLinkFromClickTarget(target);\n\n if (link) {\n var _location = _this26.getLocationForLink(link);\n\n if (_this26.delegate.willFollowLinkToLocation(link, _location)) {\n event.preventDefault();\n\n _this26.delegate.followedLinkToLocation(link, _location);\n }\n }\n }\n };\n\n this.delegate = delegate;\n }\n\n _createClass(LinkClickObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n }, {\n key: \"clickEventIsSignificant\",\n value: function clickEventIsSignificant(event) {\n return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n }\n }, {\n key: \"findLinkFromClickTarget\",\n value: function findLinkFromClickTarget(target) {\n if (target instanceof Element) {\n return target.closest(\"a[href]:not([target^=_]):not([download])\");\n }\n }\n }, {\n key: \"getLocationForLink\",\n value: function getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n }]);\n\n return LinkClickObserver;\n}();\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nvar Navigator = /*#__PURE__*/function () {\n function Navigator(delegate) {\n _classCallCheck(this, Navigator);\n\n this.delegate = delegate;\n }\n\n _createClass(Navigator, [{\n key: \"proposeVisit\",\n value: function proposeVisit(location) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n } else {\n window.location.href = location.toString();\n }\n }\n }\n }, {\n key: \"startVisit\",\n value: function startVisit(locatable, restorationIdentifier) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({\n referrer: this.location\n }, options));\n this.currentVisit.start();\n }\n }, {\n key: \"submitForm\",\n value: function submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n }, {\n key: \"adapter\",\n get: function get() {\n return this.delegate.adapter;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this.delegate.view;\n }\n }, {\n key: \"history\",\n get: function get() {\n return this.delegate.history;\n }\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === 'function') {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n }, {\n key: \"formSubmissionSucceededWithResponse\",\n value: function () {\n var _formSubmissionSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15(formSubmission, fetchResponse) {\n var responseHTML, statusCode, redirected, action, visitOptions;\n return _regeneratorRuntime.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (!(formSubmission == this.formSubmission)) {\n _context15.next = 5;\n break;\n }\n\n _context15.next = 3;\n return fetchResponse.responseHTML;\n\n case 3:\n responseHTML = _context15.sent;\n\n if (responseHTML) {\n if (formSubmission.method != FetchMethod.get) {\n this.view.clearSnapshotCache();\n }\n\n statusCode = fetchResponse.statusCode, redirected = fetchResponse.redirected;\n action = this.getActionForFormSubmission(formSubmission);\n visitOptions = {\n action: action,\n response: {\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n\n case 5:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function formSubmissionSucceededWithResponse(_x11, _x12) {\n return _formSubmissionSucceededWithResponse.apply(this, arguments);\n }\n\n return formSubmissionSucceededWithResponse;\n }()\n }, {\n key: \"formSubmissionFailedWithResponse\",\n value: function () {\n var _formSubmissionFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee16(formSubmission, fetchResponse) {\n var responseHTML, snapshot;\n return _regeneratorRuntime.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return fetchResponse.responseHTML;\n\n case 2:\n responseHTML = _context16.sent;\n\n if (!responseHTML) {\n _context16.next = 14;\n break;\n }\n\n snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n if (!fetchResponse.serverError) {\n _context16.next = 10;\n break;\n }\n\n _context16.next = 8;\n return this.view.renderError(snapshot);\n\n case 8:\n _context16.next = 12;\n break;\n\n case 10:\n _context16.next = 12;\n return this.view.renderPage(snapshot);\n\n case 12:\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n\n case 14:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function formSubmissionFailedWithResponse(_x13, _x14) {\n return _formSubmissionFailedWithResponse.apply(this, arguments);\n }\n\n return formSubmissionFailedWithResponse;\n }()\n }, {\n key: \"formSubmissionErrored\",\n value: function formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === 'function') {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n }, {\n key: \"locationWithActionIsSamePage\",\n value: function locationWithActionIsSamePage(location, action) {\n var anchor = getAnchor(location);\n var currentAnchor = getAnchor(this.view.lastRenderedLocation);\n var isRestorationToTop = action === 'restore' && typeof anchor === 'undefined';\n return action !== \"replace\" && getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor);\n }\n }, {\n key: \"visitScrolledToSamePageLocation\",\n value: function visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n }, {\n key: \"location\",\n get: function get() {\n return this.history.location;\n }\n }, {\n key: \"restorationIdentifier\",\n get: function get() {\n return this.history.restorationIdentifier;\n }\n }, {\n key: \"getActionForFormSubmission\",\n value: function getActionForFormSubmission(formSubmission) {\n var formElement = formSubmission.formElement,\n submitter = formSubmission.submitter;\n var action = getAttribute(\"data-turbo-action\", submitter, formElement);\n return isAction(action) ? action : \"advance\";\n }\n }]);\n\n return Navigator;\n}();\n\nvar PageStage;\n\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\n\nvar PageObserver = /*#__PURE__*/function () {\n function PageObserver(delegate) {\n var _this27 = this;\n\n _classCallCheck(this, PageObserver);\n\n this.stage = PageStage.initial;\n this.started = false;\n\n this.interpretReadyState = function () {\n var readyState = _this27.readyState;\n\n if (readyState == \"interactive\") {\n _this27.pageIsInteractive();\n } else if (readyState == \"complete\") {\n _this27.pageIsComplete();\n }\n };\n\n this.pageWillUnload = function () {\n _this27.delegate.pageWillUnload();\n };\n\n this.delegate = delegate;\n }\n\n _createClass(PageObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n }, {\n key: \"pageIsInteractive\",\n value: function pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n }, {\n key: \"pageIsComplete\",\n value: function pageIsComplete() {\n this.pageIsInteractive();\n\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n }, {\n key: \"readyState\",\n get: function get() {\n return document.readyState;\n }\n }]);\n\n return PageObserver;\n}();\n\nvar ScrollObserver = /*#__PURE__*/function () {\n function ScrollObserver(delegate) {\n var _this28 = this;\n\n _classCallCheck(this, ScrollObserver);\n\n this.started = false;\n\n this.onScroll = function () {\n _this28.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n };\n\n this.delegate = delegate;\n }\n\n _createClass(ScrollObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n }, {\n key: \"updatePosition\",\n value: function updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n }]);\n\n return ScrollObserver;\n}();\n\nvar StreamObserver = /*#__PURE__*/function () {\n function StreamObserver(delegate) {\n var _this29 = this;\n\n _classCallCheck(this, StreamObserver);\n\n this.sources = new Set();\n this.started = false;\n\n this.inspectFetchResponse = function (event) {\n var response = fetchResponseFromEvent(event);\n\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n\n _this29.receiveMessageResponse(response);\n }\n };\n\n this.receiveMessageEvent = function (event) {\n if (_this29.started && typeof event.data == \"string\") {\n _this29.receiveMessageHTML(event.data);\n }\n };\n\n this.delegate = delegate;\n }\n\n _createClass(StreamObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n }, {\n key: \"connectStreamSource\",\n value: function connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n }, {\n key: \"disconnectStreamSource\",\n value: function disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n }, {\n key: \"streamSourceIsConnected\",\n value: function streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n }, {\n key: \"receiveMessageResponse\",\n value: function () {\n var _receiveMessageResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17(response) {\n var html;\n return _regeneratorRuntime.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return response.responseHTML;\n\n case 2:\n html = _context17.sent;\n\n if (html) {\n this.receiveMessageHTML(html);\n }\n\n case 4:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function receiveMessageResponse(_x15) {\n return _receiveMessageResponse.apply(this, arguments);\n }\n\n return receiveMessageResponse;\n }()\n }, {\n key: \"receiveMessageHTML\",\n value: function receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(new StreamMessage(html));\n }\n }]);\n\n return StreamObserver;\n}();\n\nfunction fetchResponseFromEvent(event) {\n var _a;\n\n var fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\n\nfunction fetchResponseIsStream(response) {\n var _a;\n\n var contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nvar ErrorRenderer = /*#__PURE__*/function (_Renderer2) {\n _inherits(ErrorRenderer, _Renderer2);\n\n var _super6 = _createSuper(ErrorRenderer);\n\n function ErrorRenderer() {\n _classCallCheck(this, ErrorRenderer);\n\n return _super6.apply(this, arguments);\n }\n\n _createClass(ErrorRenderer, [{\n key: \"render\",\n value: function () {\n var _render4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee18() {\n return _regeneratorRuntime.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n this.replaceHeadAndBody();\n this.activateScriptElements();\n\n case 2:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function render() {\n return _render4.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"replaceHeadAndBody\",\n value: function replaceHeadAndBody() {\n var _document = document,\n documentElement = _document.documentElement,\n head = _document.head,\n body = _document.body;\n documentElement.replaceChild(this.newHead, head);\n documentElement.replaceChild(this.newElement, body);\n }\n }, {\n key: \"activateScriptElements\",\n value: function activateScriptElements() {\n var _iterator7 = _createForOfIteratorHelper(this.scriptElements),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var replaceableElement = _step7.value;\n var parentNode = replaceableElement.parentNode;\n\n if (parentNode) {\n var element = this.createScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"newHead\",\n get: function get() {\n return this.newSnapshot.headSnapshot.element;\n }\n }, {\n key: \"scriptElements\",\n get: function get() {\n return _toConsumableArray(document.documentElement.querySelectorAll(\"script\"));\n }\n }]);\n\n return ErrorRenderer;\n}(Renderer);\n\nvar PageRenderer = /*#__PURE__*/function (_Renderer3) {\n _inherits(PageRenderer, _Renderer3);\n\n var _super7 = _createSuper(PageRenderer);\n\n function PageRenderer() {\n _classCallCheck(this, PageRenderer);\n\n return _super7.apply(this, arguments);\n }\n\n _createClass(PageRenderer, [{\n key: \"shouldRender\",\n get: function get() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n }, {\n key: \"prepareToRender\",\n value: function prepareToRender() {\n this.mergeHead();\n }\n }, {\n key: \"render\",\n value: function () {\n var _render5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19() {\n return _regeneratorRuntime.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n if (this.willRender) {\n this.replaceBody();\n }\n\n case 1:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function render() {\n return _render5.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"finishRendering\",\n value: function finishRendering() {\n _get(_getPrototypeOf(PageRenderer.prototype), \"finishRendering\", this).call(this);\n\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n }, {\n key: \"currentHeadSnapshot\",\n get: function get() {\n return this.currentSnapshot.headSnapshot;\n }\n }, {\n key: \"newHeadSnapshot\",\n get: function get() {\n return this.newSnapshot.headSnapshot;\n }\n }, {\n key: \"newElement\",\n get: function get() {\n return this.newSnapshot.element;\n }\n }, {\n key: \"mergeHead\",\n value: function mergeHead() {\n this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n this.removeCurrentHeadProvisionalElements();\n this.copyNewHeadProvisionalElements();\n }\n }, {\n key: \"replaceBody\",\n value: function replaceBody() {\n var _this30 = this;\n\n this.preservingPermanentElements(function () {\n _this30.activateNewBody();\n\n _this30.assignNewBody();\n });\n }\n }, {\n key: \"trackedElementsAreIdentical\",\n get: function get() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n }, {\n key: \"copyNewHeadStylesheetElements\",\n value: function copyNewHeadStylesheetElements() {\n var _iterator8 = _createForOfIteratorHelper(this.newHeadStylesheetElements),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n document.head.appendChild(element);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n }, {\n key: \"copyNewHeadScriptElements\",\n value: function copyNewHeadScriptElements() {\n var _iterator9 = _createForOfIteratorHelper(this.newHeadScriptElements),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var element = _step9.value;\n document.head.appendChild(this.createScriptElement(element));\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n }, {\n key: \"removeCurrentHeadProvisionalElements\",\n value: function removeCurrentHeadProvisionalElements() {\n var _iterator10 = _createForOfIteratorHelper(this.currentHeadProvisionalElements),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var element = _step10.value;\n document.head.removeChild(element);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }, {\n key: \"copyNewHeadProvisionalElements\",\n value: function copyNewHeadProvisionalElements() {\n var _iterator11 = _createForOfIteratorHelper(this.newHeadProvisionalElements),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var element = _step11.value;\n document.head.appendChild(element);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n }\n }, {\n key: \"activateNewBody\",\n value: function activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n }, {\n key: \"activateNewBodyScriptElements\",\n value: function activateNewBodyScriptElements() {\n var _iterator12 = _createForOfIteratorHelper(this.newBodyScriptElements),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var inertScriptElement = _step12.value;\n var activatedScriptElement = this.createScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n }, {\n key: \"assignNewBody\",\n value: function assignNewBody() {\n if (document.body && this.newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(this.newElement);\n } else {\n document.documentElement.appendChild(this.newElement);\n }\n }\n }, {\n key: \"newHeadStylesheetElements\",\n get: function get() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n }, {\n key: \"newHeadScriptElements\",\n get: function get() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n }, {\n key: \"currentHeadProvisionalElements\",\n get: function get() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n }, {\n key: \"newHeadProvisionalElements\",\n get: function get() {\n return this.newHeadSnapshot.provisionalElements;\n }\n }, {\n key: \"newBodyScriptElements\",\n get: function get() {\n return this.newElement.querySelectorAll(\"script\");\n }\n }]);\n\n return PageRenderer;\n}(Renderer);\n\nvar SnapshotCache = /*#__PURE__*/function () {\n function SnapshotCache(size) {\n _classCallCheck(this, SnapshotCache);\n\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n\n _createClass(SnapshotCache, [{\n key: \"has\",\n value: function has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n }, {\n key: \"get\",\n value: function get(location) {\n if (this.has(location)) {\n var snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n }, {\n key: \"put\",\n value: function put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.snapshots = {};\n }\n }, {\n key: \"read\",\n value: function read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n }, {\n key: \"write\",\n value: function write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n }, {\n key: \"touch\",\n value: function touch(location) {\n var key = toCacheKey(location);\n var index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n }, {\n key: \"trim\",\n value: function trim() {\n var _iterator13 = _createForOfIteratorHelper(this.keys.splice(this.size)),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var key = _step13.value;\n delete this.snapshots[key];\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n }\n }]);\n\n return SnapshotCache;\n}();\n\nvar PageView = /*#__PURE__*/function (_View2) {\n _inherits(PageView, _View2);\n\n var _super8 = _createSuper(PageView);\n\n function PageView() {\n var _this31;\n\n _classCallCheck(this, PageView);\n\n _this31 = _super8.apply(this, arguments);\n _this31.snapshotCache = new SnapshotCache(10);\n _this31.lastRenderedLocation = new URL(location.href);\n return _this31;\n }\n\n _createClass(PageView, [{\n key: \"renderPage\",\n value: function renderPage(snapshot) {\n var isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var willRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var renderer = new PageRenderer(this.snapshot, snapshot, isPreview, willRender);\n return this.render(renderer);\n }\n }, {\n key: \"renderError\",\n value: function renderError(snapshot) {\n var renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer);\n }\n }, {\n key: \"clearSnapshotCache\",\n value: function clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n }, {\n key: \"cacheSnapshot\",\n value: function () {\n var _cacheSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20() {\n var snapshot, _location2, cachedSnapshot;\n\n return _regeneratorRuntime.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n if (!this.shouldCacheSnapshot) {\n _context20.next = 8;\n break;\n }\n\n this.delegate.viewWillCacheSnapshot();\n snapshot = this.snapshot, _location2 = this.lastRenderedLocation;\n _context20.next = 5;\n return nextEventLoopTick();\n\n case 5:\n cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(_location2, cachedSnapshot);\n return _context20.abrupt(\"return\", cachedSnapshot);\n\n case 8:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function cacheSnapshot() {\n return _cacheSnapshot.apply(this, arguments);\n }\n\n return cacheSnapshot;\n }()\n }, {\n key: \"getCachedSnapshotForLocation\",\n value: function getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return PageSnapshot.fromElement(this.element);\n }\n }, {\n key: \"shouldCacheSnapshot\",\n get: function get() {\n return this.snapshot.isCacheable;\n }\n }]);\n\n return PageView;\n}(View);\n\nvar Session = /*#__PURE__*/function () {\n function Session() {\n _classCallCheck(this, Session);\n\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this);\n this.formSubmitObserver = new FormSubmitObserver(this);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.frameRedirector = new FrameRedirector(document.documentElement);\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n }\n\n _createClass(Session, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.started = true;\n this.enabled = true;\n }\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled = false;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n }, {\n key: \"registerAdapter\",\n value: function registerAdapter(adapter) {\n this.adapter = adapter;\n }\n }, {\n key: \"visit\",\n value: function visit(location) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }, {\n key: \"connectStreamSource\",\n value: function connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n }, {\n key: \"disconnectStreamSource\",\n value: function disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n }, {\n key: \"renderStreamMessage\",\n value: function renderStreamMessage(message) {\n document.documentElement.appendChild(StreamMessage.wrap(message).fragment);\n }\n }, {\n key: \"clearCache\",\n value: function clearCache() {\n this.view.clearSnapshotCache();\n }\n }, {\n key: \"setProgressBarDelay\",\n value: function setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n }, {\n key: \"location\",\n get: function get() {\n return this.history.location;\n }\n }, {\n key: \"restorationIdentifier\",\n get: function get() {\n return this.history.restorationIdentifier;\n }\n }, {\n key: \"historyPoppedToLocationWithRestorationIdentifier\",\n value: function historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true\n });\n } else {\n this.adapter.pageInvalidated();\n }\n }\n }, {\n key: \"scrollPositionChanged\",\n value: function scrollPositionChanged(position) {\n this.history.updateRestorationData({\n scrollPosition: position\n });\n }\n }, {\n key: \"willFollowLinkToLocation\",\n value: function willFollowLinkToLocation(link, location) {\n return this.elementDriveEnabled(link) && locationIsVisitable(location, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location);\n }\n }, {\n key: \"followedLinkToLocation\",\n value: function followedLinkToLocation(link, location) {\n var action = this.getActionForLink(link);\n this.convertLinkWithMethodClickToFormSubmission(link) || this.visit(location.href, {\n action: action\n });\n }\n }, {\n key: \"convertLinkWithMethodClickToFormSubmission\",\n value: function convertLinkWithMethodClickToFormSubmission(link) {\n var linkMethod = link.getAttribute(\"data-turbo-method\");\n\n if (linkMethod) {\n var form = document.createElement(\"form\");\n form.method = linkMethod;\n form.action = link.getAttribute(\"href\") || \"undefined\";\n form.hidden = true;\n\n if (link.hasAttribute(\"data-turbo-confirm\")) {\n form.setAttribute(\"data-turbo-confirm\", link.getAttribute(\"data-turbo-confirm\"));\n }\n\n var frame = this.getTargetFrameForLink(link);\n\n if (frame) {\n form.setAttribute(\"data-turbo-frame\", frame);\n form.addEventListener(\"turbo:submit-start\", function () {\n return form.remove();\n });\n } else {\n form.addEventListener(\"submit\", function () {\n return form.remove();\n });\n }\n\n document.body.appendChild(form);\n return dispatch(\"submit\", {\n cancelable: true,\n target: form\n });\n } else {\n return false;\n }\n }\n }, {\n key: \"allowsVisitingLocationWithAction\",\n value: function allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n }, {\n key: \"visitProposedToLocation\",\n value: function visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n extendURLWithDeprecatedProperties(visit.location);\n\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(visit) {\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n }, {\n key: \"locationWithActionIsSamePage\",\n value: function locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n }, {\n key: \"visitScrolledToSamePageLocation\",\n value: function visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n }, {\n key: \"willSubmitForm\",\n value: function willSubmitForm(form, submitter) {\n var action = getAction(form, submitter);\n return this.elementDriveEnabled(form) && (!submitter || this.elementDriveEnabled(submitter)) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n }, {\n key: \"formSubmitted\",\n value: function formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n }, {\n key: \"pageBecameInteractive\",\n value: function pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n }, {\n key: \"pageLoaded\",\n value: function pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n }, {\n key: \"pageWillUnload\",\n value: function pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n }, {\n key: \"receivedMessageFromStream\",\n value: function receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n }, {\n key: \"viewWillCacheSnapshot\",\n value: function viewWillCacheSnapshot() {\n var _a;\n\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n }, {\n key: \"allowsImmediateRender\",\n value: function allowsImmediateRender(_ref18, resume) {\n var element = _ref18.element;\n var event = this.notifyApplicationBeforeRender(element, resume);\n return !event.defaultPrevented;\n }\n }, {\n key: \"viewRenderedSnapshot\",\n value: function viewRenderedSnapshot(snapshot, isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n }, {\n key: \"viewInvalidated\",\n value: function viewInvalidated() {\n this.adapter.pageInvalidated();\n }\n }, {\n key: \"frameLoaded\",\n value: function frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n }, {\n key: \"frameRendered\",\n value: function frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n }, {\n key: \"applicationAllowsFollowingLinkToLocation\",\n value: function applicationAllowsFollowingLinkToLocation(link, location) {\n var event = this.notifyApplicationAfterClickingLinkToLocation(link, location);\n return !event.defaultPrevented;\n }\n }, {\n key: \"applicationAllowsVisitingLocation\",\n value: function applicationAllowsVisitingLocation(location) {\n var event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n }, {\n key: \"notifyApplicationAfterClickingLinkToLocation\",\n value: function notifyApplicationAfterClickingLinkToLocation(link, location) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationBeforeVisitingLocation\",\n value: function notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationAfterVisitingLocation\",\n value: function notifyApplicationAfterVisitingLocation(location, action) {\n markAsBusy(document.documentElement);\n return dispatch(\"turbo:visit\", {\n detail: {\n url: location.href,\n action: action\n }\n });\n }\n }, {\n key: \"notifyApplicationBeforeCachingSnapshot\",\n value: function notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n }, {\n key: \"notifyApplicationBeforeRender\",\n value: function notifyApplicationBeforeRender(newBody, resume) {\n return dispatch(\"turbo:before-render\", {\n detail: {\n newBody: newBody,\n resume: resume\n },\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationAfterRender\",\n value: function notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n }, {\n key: \"notifyApplicationAfterPageLoad\",\n value: function notifyApplicationAfterPageLoad() {\n var timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n clearBusyState(document.documentElement);\n return dispatch(\"turbo:load\", {\n detail: {\n url: this.location.href,\n timing: timing\n }\n });\n }\n }, {\n key: \"notifyApplicationAfterVisitingSamePageLocation\",\n value: function notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n }));\n }\n }, {\n key: \"notifyApplicationAfterFrameLoad\",\n value: function notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", {\n target: frame\n });\n }\n }, {\n key: \"notifyApplicationAfterFrameRender\",\n value: function notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: {\n fetchResponse: fetchResponse\n },\n target: frame,\n cancelable: true\n });\n }\n }, {\n key: \"elementDriveEnabled\",\n value: function elementDriveEnabled(element) {\n var container = element === null || element === void 0 ? void 0 : element.closest(\"[data-turbo]\");\n\n if (this.drive) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n } else {\n return true;\n }\n } else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n } else {\n return false;\n }\n }\n }\n }, {\n key: \"getActionForLink\",\n value: function getActionForLink(link) {\n var action = link.getAttribute(\"data-turbo-action\");\n return isAction(action) ? action : \"advance\";\n }\n }, {\n key: \"getTargetFrameForLink\",\n value: function getTargetFrameForLink(link) {\n var frame = link.getAttribute(\"data-turbo-frame\");\n\n if (frame) {\n return frame;\n } else {\n var container = link.closest(\"turbo-frame\");\n\n if (container) {\n return container.id;\n }\n }\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return this.view.snapshot;\n }\n }]);\n\n return Session;\n}();\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nvar deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get: function get() {\n return this.toString();\n }\n }\n};\nvar session = new Session();\nvar navigator$1 = session.navigator;\n\nfunction start() {\n session.start();\n}\n\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\nfunction clearCache() {\n session.clearCache();\n}\n\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\n\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod\n});\n\nvar FrameController = /*#__PURE__*/function () {\n function FrameController(element) {\n _classCallCheck(this, FrameController);\n\n this.fetchResponseLoaded = function (fetchResponse) {};\n\n this.currentFetchRequest = null;\n\n this.resolveVisitPromise = function () {};\n\n this.connected = false;\n this.hasBeenLoaded = false;\n this.settingSourceURL = false;\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.formInterceptor = new FormInterceptor(this, this.element);\n }\n\n _createClass(FrameController, [{\n key: \"connect\",\n value: function connect() {\n if (!this.connected) {\n this.connected = true;\n this.reloadable = false;\n\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n\n this.linkInterceptor.start();\n this.formInterceptor.start();\n this.sourceURLChanged();\n }\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.linkInterceptor.stop();\n this.formInterceptor.stop();\n }\n }\n }, {\n key: \"disabledChanged\",\n value: function disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n }, {\n key: \"sourceURLChanged\",\n value: function sourceURLChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n }, {\n key: \"loadingStyleChanged\",\n value: function loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n }, {\n key: \"loadSourceURL\",\n value: function () {\n var _loadSourceURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21() {\n var previousURL;\n return _regeneratorRuntime.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n if (!(!this.settingSourceURL && this.enabled && this.isActive && (this.reloadable || this.sourceURL != this.currentURL))) {\n _context21.next = 16;\n break;\n }\n\n previousURL = this.currentURL;\n this.currentURL = this.sourceURL;\n\n if (!this.sourceURL) {\n _context21.next = 16;\n break;\n }\n\n _context21.prev = 4;\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n _context21.next = 9;\n return this.element.loaded;\n\n case 9:\n this.hasBeenLoaded = true;\n _context21.next = 16;\n break;\n\n case 12:\n _context21.prev = 12;\n _context21.t0 = _context21[\"catch\"](4);\n this.currentURL = previousURL;\n throw _context21.t0;\n\n case 16:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _callee21, this, [[4, 12]]);\n }));\n\n function loadSourceURL() {\n return _loadSourceURL.apply(this, arguments);\n }\n\n return loadSourceURL;\n }()\n }, {\n key: \"loadResponse\",\n value: function () {\n var _loadResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(fetchResponse) {\n var html, _parseHTMLDocument, body, snapshot, renderer;\n\n return _regeneratorRuntime.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n _context22.prev = 1;\n _context22.next = 4;\n return fetchResponse.responseHTML;\n\n case 4:\n html = _context22.sent;\n\n if (!html) {\n _context22.next = 21;\n break;\n }\n\n _parseHTMLDocument = parseHTMLDocument(html), body = _parseHTMLDocument.body;\n _context22.t0 = Snapshot;\n _context22.next = 10;\n return this.extractForeignFrameElement(body);\n\n case 10:\n _context22.t1 = _context22.sent;\n snapshot = new _context22.t0(_context22.t1);\n renderer = new FrameRenderer(this.view.snapshot, snapshot, false, false);\n\n if (!this.view.renderPromise) {\n _context22.next = 16;\n break;\n }\n\n _context22.next = 16;\n return this.view.renderPromise;\n\n case 16:\n _context22.next = 18;\n return this.view.render(renderer);\n\n case 18:\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n\n case 21:\n _context22.next = 27;\n break;\n\n case 23:\n _context22.prev = 23;\n _context22.t2 = _context22[\"catch\"](1);\n console.error(_context22.t2);\n this.view.invalidate();\n\n case 27:\n _context22.prev = 27;\n\n this.fetchResponseLoaded = function () {};\n\n return _context22.finish(27);\n\n case 30:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _callee22, this, [[1, 23, 27, 30]]);\n }));\n\n function loadResponse(_x16) {\n return _loadResponse.apply(this, arguments);\n }\n\n return loadResponse;\n }()\n }, {\n key: \"elementAppearedInViewport\",\n value: function elementAppearedInViewport(element) {\n this.loadSourceURL();\n }\n }, {\n key: \"shouldInterceptLinkClick\",\n value: function shouldInterceptLinkClick(element, url) {\n if (element.hasAttribute(\"data-turbo-method\")) {\n return false;\n } else {\n return this.shouldInterceptNavigation(element);\n }\n }\n }, {\n key: \"linkClickIntercepted\",\n value: function linkClickIntercepted(element, url) {\n this.reloadable = true;\n this.navigateFrame(element, url);\n }\n }, {\n key: \"shouldInterceptFormSubmission\",\n value: function shouldInterceptFormSubmission(element, submitter) {\n return this.shouldInterceptNavigation(element, submitter);\n }\n }, {\n key: \"formSubmissionIntercepted\",\n value: function formSubmissionIntercepted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.reloadable = false;\n this.formSubmission = new FormSubmission(this, element, submitter);\n var fetchRequest = this.formSubmission.fetchRequest;\n this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n this.formSubmission.start();\n }\n }, {\n key: \"prepareHeadersForRequest\",\n value: function prepareHeadersForRequest(headers, request) {\n headers[\"Turbo-Frame\"] = this.id;\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted(request) {\n markAsBusy(this.element);\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(request, response) {\n this.resolveVisitPromise();\n }\n }, {\n key: \"requestSucceededWithResponse\",\n value: function () {\n var _requestSucceededWithResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(request, response) {\n return _regeneratorRuntime.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n _context23.next = 2;\n return this.loadResponse(response);\n\n case 2:\n this.resolveVisitPromise();\n\n case 3:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function requestSucceededWithResponse(_x17, _x18) {\n return _requestSucceededWithResponse2.apply(this, arguments);\n }\n\n return requestSucceededWithResponse;\n }()\n }, {\n key: \"requestFailedWithResponse\",\n value: function requestFailedWithResponse(request, response) {\n console.error(response);\n this.resolveVisitPromise();\n }\n }, {\n key: \"requestErrored\",\n value: function requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished(request) {\n clearBusyState(this.element);\n }\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(_ref19) {\n var formElement = _ref19.formElement;\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n }, {\n key: \"formSubmissionSucceededWithResponse\",\n value: function formSubmissionSucceededWithResponse(formSubmission, response) {\n var frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n this.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n }, {\n key: \"formSubmissionFailedWithResponse\",\n value: function formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n }, {\n key: \"formSubmissionErrored\",\n value: function formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(_ref20) {\n var formElement = _ref20.formElement;\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n }, {\n key: \"allowsImmediateRender\",\n value: function allowsImmediateRender(snapshot, resume) {\n return true;\n }\n }, {\n key: \"viewRenderedSnapshot\",\n value: function viewRenderedSnapshot(snapshot, isPreview) {}\n }, {\n key: \"viewInvalidated\",\n value: function viewInvalidated() {}\n }, {\n key: \"visit\",\n value: function () {\n var _visit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(url) {\n var _this32 = this;\n\n var _a, request;\n\n return _regeneratorRuntime.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return _context24.abrupt(\"return\", new Promise(function (resolve) {\n _this32.resolveVisitPromise = function () {\n _this32.resolveVisitPromise = function () {};\n\n _this32.currentFetchRequest = null;\n resolve();\n };\n\n request.perform();\n }));\n\n case 4:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function visit(_x19) {\n return _visit.apply(this, arguments);\n }\n\n return visit;\n }()\n }, {\n key: \"navigateFrame\",\n value: function navigateFrame(element, url, submitter) {\n var frame = this.findFrameElement(element, submitter);\n this.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n frame.setAttribute(\"reloadable\", \"\");\n frame.src = url;\n }\n }, {\n key: \"proposeVisitIfNavigatedWithAction\",\n value: function proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n var action = getAttribute(\"data-turbo-action\", submitter, element, frame);\n\n if (isAction(action)) {\n var _SnapshotSubstitution = new SnapshotSubstitution(frame),\n visitCachedSnapshot = _SnapshotSubstitution.visitCachedSnapshot;\n\n frame.delegate.fetchResponseLoaded = function (fetchResponse) {\n if (frame.src) {\n var statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n var responseHTML = frame.ownerDocument.documentElement.outerHTML;\n var response = {\n statusCode: statusCode,\n redirected: redirected,\n responseHTML: responseHTML\n };\n session.visit(frame.src, {\n action: action,\n response: response,\n visitCachedSnapshot: visitCachedSnapshot,\n willRender: false\n });\n }\n };\n }\n }\n }, {\n key: \"findFrameElement\",\n value: function findFrameElement(element, submitter) {\n var _a;\n\n var id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n }, {\n key: \"extractForeignFrameElement\",\n value: function () {\n var _extractForeignFrameElement = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25(container) {\n var element, id;\n return _regeneratorRuntime.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n id = CSS.escape(this.id);\n _context25.prev = 1;\n\n if (!(element = activateElement(container.querySelector(\"turbo-frame#\".concat(id)), this.currentURL))) {\n _context25.next = 4;\n break;\n }\n\n return _context25.abrupt(\"return\", element);\n\n case 4:\n if (!(element = activateElement(container.querySelector(\"turbo-frame[src][recurse~=\".concat(id, \"]\")), this.currentURL))) {\n _context25.next = 10;\n break;\n }\n\n _context25.next = 7;\n return element.loaded;\n\n case 7:\n _context25.next = 9;\n return this.extractForeignFrameElement(element);\n\n case 9:\n return _context25.abrupt(\"return\", _context25.sent);\n\n case 10:\n console.error(\"Response has no matching element\"));\n _context25.next = 16;\n break;\n\n case 13:\n _context25.prev = 13;\n _context25.t0 = _context25[\"catch\"](1);\n console.error(_context25.t0);\n\n case 16:\n return _context25.abrupt(\"return\", new FrameElement());\n\n case 17:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _callee25, this, [[1, 13]]);\n }));\n\n function extractForeignFrameElement(_x20) {\n return _extractForeignFrameElement.apply(this, arguments);\n }\n\n return extractForeignFrameElement;\n }()\n }, {\n key: \"formActionIsVisitable\",\n value: function formActionIsVisitable(form, submitter) {\n var action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n }, {\n key: \"shouldInterceptNavigation\",\n value: function shouldInterceptNavigation(element, submitter) {\n var id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n\n if (id) {\n var frameElement = getFrameElementById(id);\n\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n\n if (!session.elementDriveEnabled(element)) {\n return false;\n }\n\n if (submitter && !session.elementDriveEnabled(submitter)) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"id\",\n get: function get() {\n return this.element.id;\n }\n }, {\n key: \"enabled\",\n get: function get() {\n return !this.element.disabled;\n }\n }, {\n key: \"sourceURL\",\n get: function get() {\n if (this.element.src) {\n return this.element.src;\n }\n },\n set: function set(sourceURL) {\n this.settingSourceURL = true;\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n this.currentURL = this.element.src;\n this.settingSourceURL = false;\n }\n }, {\n key: \"reloadable\",\n get: function get() {\n var frame = this.findFrameElement(this.element);\n return frame.hasAttribute(\"reloadable\");\n },\n set: function set(value) {\n var frame = this.findFrameElement(this.element);\n\n if (value) {\n frame.setAttribute(\"reloadable\", \"\");\n } else {\n frame.removeAttribute(\"reloadable\");\n }\n }\n }, {\n key: \"loadingStyle\",\n get: function get() {\n return this.element.loading;\n }\n }, {\n key: \"isLoading\",\n get: function get() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n }, {\n key: \"isActive\",\n get: function get() {\n return this.element.isActive && this.connected;\n }\n }, {\n key: \"rootLocation\",\n get: function get() {\n var _a;\n\n var meta = this.element.ownerDocument.querySelector(\"meta[name=\\\"turbo-root\\\"]\");\n var root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n }]);\n\n return FrameController;\n}();\n\nvar SnapshotSubstitution = function SnapshotSubstitution(element) {\n var _this33 = this;\n\n _classCallCheck(this, SnapshotSubstitution);\n\n this.visitCachedSnapshot = function (_ref21) {\n var element = _ref21.element;\n\n var _a;\n\n var id = _this33.id,\n clone = _this33.clone;\n (_a = element.querySelector(\"#\" + id)) === null || _a === void 0 ? void 0 : _a.replaceWith(clone);\n };\n\n this.clone = element.cloneNode(true);\n this.id = element.id;\n};\n\nfunction getFrameElementById(id) {\n if (id != null) {\n var element = document.getElementById(id);\n\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\n\nfunction activateElement(element, currentURL) {\n if (element) {\n var src = element.getAttribute(\"src\");\n\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(\"Matching element has a source URL which references itself\"));\n }\n\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nvar StreamActions = {\n after: function after() {\n var _this34 = this;\n\n this.targetElements.forEach(function (e) {\n var _a;\n\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(_this34.templateContent, e.nextSibling);\n });\n },\n append: function append() {\n var _this35 = this;\n\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(function (e) {\n return e.append(_this35.templateContent);\n });\n },\n before: function before() {\n var _this36 = this;\n\n this.targetElements.forEach(function (e) {\n var _a;\n\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(_this36.templateContent, e);\n });\n },\n prepend: function prepend() {\n var _this37 = this;\n\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(function (e) {\n return e.prepend(_this37.templateContent);\n });\n },\n remove: function remove() {\n this.targetElements.forEach(function (e) {\n return e.remove();\n });\n },\n replace: function replace() {\n var _this38 = this;\n\n this.targetElements.forEach(function (e) {\n return e.replaceWith(_this38.templateContent);\n });\n },\n update: function update() {\n var _this39 = this;\n\n this.targetElements.forEach(function (e) {\n e.innerHTML = \"\";\n e.append(_this39.templateContent);\n });\n }\n};\n\nvar StreamElement = /*#__PURE__*/function (_HTMLElement2) {\n _inherits(StreamElement, _HTMLElement2);\n\n var _super9 = _createSuper(StreamElement);\n\n function StreamElement() {\n _classCallCheck(this, StreamElement);\n\n return _super9.apply(this, arguments);\n }\n\n _createClass(StreamElement, [{\n key: \"connectedCallback\",\n value: function () {\n var _connectedCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee26() {\n return _regeneratorRuntime.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n _context26.prev = 0;\n _context26.next = 3;\n return this.render();\n\n case 3:\n _context26.next = 8;\n break;\n\n case 5:\n _context26.prev = 5;\n _context26.t0 = _context26[\"catch\"](0);\n console.error(_context26.t0);\n\n case 8:\n _context26.prev = 8;\n this.disconnect();\n return _context26.finish(8);\n\n case 11:\n case \"end\":\n return _context26.stop();\n }\n }\n }, _callee26, this, [[0, 5, 8, 11]]);\n }));\n\n function connectedCallback() {\n return _connectedCallback.apply(this, arguments);\n }\n\n return connectedCallback;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee28() {\n var _this40 = this;\n\n var _a;\n\n return _regeneratorRuntime.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n return _context28.abrupt(\"return\", (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27() {\n return _regeneratorRuntime.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n if (!_this40.dispatchEvent(_this40.beforeRenderEvent)) {\n _context27.next = 4;\n break;\n }\n\n _context27.next = 3;\n return nextAnimationFrame();\n\n case 3:\n _this40.performAction();\n\n case 4:\n case \"end\":\n return _context27.stop();\n }\n }\n }, _callee27);\n }))());\n\n case 1:\n case \"end\":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function render() {\n return _render6.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n try {\n this.remove();\n } catch (_a) {}\n }\n }, {\n key: \"removeDuplicateTargetChildren\",\n value: function removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach(function (c) {\n return c.remove();\n });\n }\n }, {\n key: \"duplicateChildren\",\n get: function get() {\n var _a;\n\n var existingChildren = this.targetElements.flatMap(function (e) {\n return _toConsumableArray(e.children);\n }).filter(function (c) {\n return !!c.id;\n });\n\n var newChildrenIds = _toConsumableArray((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children).filter(function (c) {\n return !!c.id;\n }).map(function (c) {\n return c.id;\n });\n\n return existingChildren.filter(function (c) {\n return newChildrenIds.includes(c.id);\n });\n }\n }, {\n key: \"performAction\",\n get: function get() {\n if (this.action) {\n var actionFunction = StreamActions[this.action];\n\n if (actionFunction) {\n return actionFunction;\n }\n\n this.raise(\"unknown action\");\n }\n\n this.raise(\"action attribute is missing\");\n }\n }, {\n key: \"targetElements\",\n get: function get() {\n if (this.target) {\n return this.targetElementsById;\n } else if (this.targets) {\n return this.targetElementsByQuery;\n } else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n }, {\n key: \"templateContent\",\n get: function get() {\n return this.templateElement.content.cloneNode(true);\n }\n }, {\n key: \"templateElement\",\n get: function get() {\n if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n\n this.raise(\"first child element must be a element\");\n }\n }, {\n key: \"action\",\n get: function get() {\n return this.getAttribute(\"action\");\n }\n }, {\n key: \"target\",\n get: function get() {\n return this.getAttribute(\"target\");\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.getAttribute(\"targets\");\n }\n }, {\n key: \"raise\",\n value: function raise(message) {\n throw new Error(\"\".concat(this.description, \": \").concat(message));\n }\n }, {\n key: \"description\",\n get: function get() {\n var _a, _b;\n\n return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"\";\n }\n }, {\n key: \"beforeRenderEvent\",\n get: function get() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true\n });\n }\n }, {\n key: \"targetElementsById\",\n get: function get() {\n var _a;\n\n var element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n\n if (element !== null) {\n return [element];\n } else {\n return [];\n }\n }\n }, {\n key: \"targetElementsByQuery\",\n get: function get() {\n var _a;\n\n var elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements);\n } else {\n return [];\n }\n }\n }]);\n\n return StreamElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nFrameElement.delegateConstructor = FrameController;\ncustomElements.define(\"turbo-frame\", FrameElement);\ncustomElements.define(\"turbo-stream\", StreamElement);\n\n(function () {\n var element = document.currentScript;\n if (!element) return;\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return;\n\n while (element = element.parentElement) {\n if (element == document.body) {\n return console.warn(unindent(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n You are loading Turbo from a