{"version":3,"sources":["webpack://shimano-experience-center/./src/components/atom/cta-generator/cta.js","webpack://shimano-experience-center/./src/components/atom/modal-generator/modal-generator.js","webpack://shimano-experience-center/./src/components/molecules/faq-category-filters/faq-category-filters.js","webpack://shimano-experience-center/./src/components/molecules/form-newsletter/form-newsletter.js","webpack://shimano-experience-center/./src/components/molecules/get-in-touch/get-in-touch.js","webpack://shimano-experience-center/./src/components/molecules/image-slider/image-slider.js","webpack://shimano-experience-center/./src/components/organisms/_master/footer-component/footer-component.js","webpack://shimano-experience-center/./src/components/organisms/_master/navigation/navigation.js","webpack://shimano-experience-center/./src/track.js","webpack://shimano-experience-center/./node_modules/desandro-matches-selector/matches-selector.js","webpack://shimano-experience-center/./node_modules/ev-emitter/ev-emitter.js","webpack://shimano-experience-center/./node_modules/fizzy-ui-utils/utils.js","webpack://shimano-experience-center/./node_modules/flickity-fade/flickity-fade.js","webpack://shimano-experience-center/./node_modules/flickity-hash/hash.js","webpack://shimano-experience-center/./node_modules/flickity/js/add-remove-cell.js","webpack://shimano-experience-center/./node_modules/flickity/js/animate.js","webpack://shimano-experience-center/./node_modules/flickity/js/cell.js","webpack://shimano-experience-center/./node_modules/flickity/js/drag.js","webpack://shimano-experience-center/./node_modules/flickity/js/flickity.js","webpack://shimano-experience-center/./node_modules/flickity/js/index.js","webpack://shimano-experience-center/./node_modules/flickity/js/lazyload.js","webpack://shimano-experience-center/./node_modules/flickity/js/page-dots.js","webpack://shimano-experience-center/./node_modules/flickity/js/player.js","webpack://shimano-experience-center/./node_modules/flickity/js/prev-next-button.js","webpack://shimano-experience-center/./node_modules/flickity/js/slide.js","webpack://shimano-experience-center/./node_modules/get-size/get-size.js","webpack://shimano-experience-center/./node_modules/unidragger/unidragger.js","webpack://shimano-experience-center/./node_modules/unipointer/unipointer.js","webpack://shimano-experience-center/webpack/bootstrap","webpack://shimano-experience-center/webpack/runtime/define property getters","webpack://shimano-experience-center/webpack/runtime/global","webpack://shimano-experience-center/webpack/runtime/hasOwnProperty shorthand","webpack://shimano-experience-center/webpack/runtime/make namespace object","webpack://shimano-experience-center/./node_modules/@vimeo/player/dist/player.es.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/enums.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/math.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/within.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/createPopper.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/popper.js","webpack://shimano-experience-center/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://shimano-experience-center/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://shimano-experience-center/./src/components/atom/video-generator/video-generator.js","webpack://shimano-experience-center/./src/assets/js/g2-utils.js","webpack://shimano-experience-center/./src/assets/js/bike-category-filters.js","webpack://shimano-experience-center/./src/assets/js/brand-category-filters.js","webpack://shimano-experience-center/./src/components/organisms/_master/analytics/analytics.js","webpack://shimano-experience-center/./src/app.js"],"names":["anchorsToSections","document","querySelectorAll","sections","handleSectionAnchorClick","event","preventDefault","element","targetPosition","startPosition","distance","startTime","targetSectionIndex","this","dataset","sectionTarget","length","offsetTop","window","pageYOffset","requestAnimationFrame","animation","currentTime","t","b","c","timeElapsed","run","d","scrollTo","forEach","addEventListener","jQuery","vimeoVideo","videoModel","shimanoModal","getElementById","activeNavElemet","$","addClass","button","relatedTarget","undefined","getAttribute","modalTarget","modalType","modalInput","html","modalExtraClasses","classList","body","style","overflow","removeClass","modalBodyInput","querySelector","innerHTML","preloadImage","prependTo","css","empty","on","modal","counter","e","each","index","elm","name","trim","filterButtons","createElement","setAttribute","textContent","appendChild","console","log","add","attr","mainSelector","tagCategory","target","data","idCategory","display","marginTop","toggleClass","forms","Array","prototype","slice","call","form","checkValidity","track","id","stopPropagation","setTimeout","firstError","is","trigger","inputRadio","i","onchange","checked","inputCheck","remove","Alpine","firstName","lastName","companyName","email","phoneNumber","requestType","message","hasError","status","loading","captcha","init","$watch","value","validate","validation","rule","required","field","error","noDataMessage","minLength","validationMessage","test","submissionFailed","submissionSuccess","key","validationResult","validateCaptcha","grecaptcha","enterprise","getResponse","isValid","submitData","formObject","formData","FormData","append","fetch","method","then","response","json","success","err","a","href","click","removeChild","Flickity","require","durationArticleSlider","imageSliders","resizeSliders","s","slider","resize","container","imageSlider","autoPlay","loop","pauseAutoPlayOnHover","prevNextButtons","pageDots","draggable","wrapAround","ready","find","change","dragStart","dragEnd","push","parent","appendTo","parents","parentElement","percentTimeArticleSlider","setInterval","next","startProgressbarArticleSlider","parseInt","accordionInitiated","handleResize","width","$accordion","$heading","children","first","$ul","last","$accordionItem","removeAttr","$window","innerWidth","headerNavi","headerNav","not","w","is_mobile","scrollTop","link","location","pathname","navbar","dis_con","discover_more","discoverMenu","subMenus","parentMenu","discoverContainer","dataSubTarget","animatedHamburger","allItemofSubMenus","carouselWrapper","main","language_selector","dropdown","lang","list","currentLocale","items","buttonLabel","discoverBtn","innerText","firstElementChild","contains","zIndex","item","currentTarget","getDiscoverClassElement","closeSublinks","hasClass","subCovers","mobileThreshold","initialDiff","lastWindowWidth","reload","scroll","targetId","subMenu","target_id","showElements","t_text","text","discover_more_text","close_text","dropdownList","$this","closest","myCollapsible","mobileMenuToggle","valid_string","v","valid_obj","Object","keys","msg","Error","is_defined","category","action","props","ecom","properties","component_element","ecommerce","color","args","arguments","unshift","apply","factory","matchesMethod","ElemProto","Element","matches","matchesSelector","prefixes","elem","selector","EvEmitter","proto","eventName","listener","events","_events","listeners","indexOf","once","onceEvents","_onceEvents","off","splice","emitEvent","onceListeners","allOff","utils","prop","num","div","arraySlice","makeArray","obj","isArray","removeFrom","ary","getParent","parentNode","getQueryElement","handleEvent","type","filterFindElements","elems","ffElems","HTMLElement","childElems","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","_this","docReady","callback","readyState","toDashed","str","replace","match","$1","$2","toLowerCase","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","options","JSON","parse","className","instance","Slide","slideUpdateTarget","updateTarget","fade","slideTargetX","x","firstCellX","cells","cell","targetX","renderPosition","setOpacity","alpha","opacity","createMethods","_createFade","fadeIndex","selectedIndex","prevSelectedIndex","onSelectFade","onDragEndFade","onSettleFade","onActivateFade","onDeactivateFade","updateSlides","slides","slide","Math","min","didDragEnd","selectedSlide","positionSlider","fadeSlides","dispatchScrollEvent","positionSliderAtSelected","setTranslateX","indexes","getFadeIndexes","fadeSlideA","fadeSlideB","wrapDifference","progress","fadeHideIndex","isDragging","getFadeDragWrapIndexes","getFadeDragLimitIndexes","distances","map","getSlideDistance","absDistances","abs","minDistance","closestIndex","len","delta","modulo","dragIndex","diff","diffPlus","slideableWidth","diffMinus","_getWrapShiftCells","shiftWrapCells","_createHash","hash","connectedHashLinks","onHashLinkClick","selectCell","history","replaceState","bind","activateHash","deactivateHash","onChangeHash","initialIndex","queryCell","getCellSlideIndex","connectHashLinks","disconnectHashLinks","selectedElement","url","links","connectHashLink","proxyLink","removeEventListener","insert","_makeCells","fragment","createDocumentFragment","getCellsFragment","isAppend","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","prepend","getCells","minCellIndex","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","_positionCells","setGallerySize","select","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","settle","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","transform","firstSlide","positionX","slidesWidth","dispatchEvent","velocity","position","percentPosition","round","size","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","create","destroy","unselect","side","originSide","removeAttribute","setPosition","setDefaultTarget","marginProperty","cellAlign","Unidragger","extend","defaults","dragThreshold","_touchActionValue","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","y","nodeName","focus","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStartPosition","startAnimation","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","max","endBound","getLastSlide","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","positiveResting","_getClosestResting","negativeResting","increment","Infinity","condition","contain","dist","minDist","isWrapAround","slideIndex","wrap","floor","staticClick","clickedCell","getParentCell","cellElem","cellIndex","onscroll","scrollMoveX","scrollMoveY","_pointerDone","animatePrototype","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","option","$element","constructor","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","guid","_createSlider","watchCSS","activate","opts","isActive","_filterFindCellElements","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","getLastCell","maxCellHeight","cellX","startCell","outerHeight","_containSlides","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateSelectedSlide","groupCells","number","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","Event","isWrap","isInstant","_wrapSelect","prevIndex","wrapIndex","backWrapDelta","forewardWrapDelta","previous","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","content","deactivate","onkeydown","isNotFocused","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","preventScroll","removeData","bridget","setJQuery","jq","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","src","srcset","onload","complete","onerror","Unipointer","PageDots","holder","dots","handleClick","onClick","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","count","newDots","dot","updateSelected","selectedDot","onTap","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","clear","stop","pause","unpause","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","shape","path","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","onclick","enable","disabled","lastIndex","boundIndex","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","parseFloat","isNaN","logError","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","padding","borderStyle","borderWidth","boxSizing","documentElement","setup","nodeType","innerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","isClickType","isOkay","_pointerReset","focused","blur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","definition","o","defineProperty","enumerable","get","g","globalThis","Function","hasOwnProperty","r","Symbol","toStringTag","_classCallCheck","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","isNode","toString","getMethodName","substr","toUpperCase","isDomElement","Boolean","ownerDocument","defaultView","isInteger","isFinite","isVimeoUrl","getVimeoUrl","oEmbedParameters","idOrUrl","arrayIndexOfSupport","postMessageSupport","postMessage","commonjsGlobal","self","WeakMap","object","genId","checkInstance","isObject","prefix","rand","random","substring","entry","_id","npo_src","context","builtInProp","cycle","scheduling_queue","ToString","timer","setImmediate","fn","val","config","schedule","drain","isThenable","_then","o_type","notify","chain","notifyIsolated","failure","cb","ret","reject","promise","resolve","triggered","def","def_wrapper","MakeDefWrapper","iteratePromises","arr","resolver","rejecter","idx","MakeDef","Promise","executor","__NPO__","Item","f","PromisePrototype","msgs","callbackMap","storeCallback","playerCallbacks","set","getCallbacks","removeCallback","swapCallbacks","oldElement","newElement","delete","getOEmbedParameters","reduce","params","param","createEmbed","_ref","firstChild","getOEmbedData","videoUrl","encodeURIComponent","xhr","XDomainRequest","XMLHttpRequest","open","responseText","domain_status_code","send","parseMessageData","warn","contentWindow","ieVersion","navigator","userAgent","stringify","origin","processData","callbacks","shiftCallbacks","playerMap","readyMap","screenfull","iframe","has","_window","readyPromise","_onMessage","source","isReadyEvent","isPingResponse","_originalElement","catch","exitFullscreen","exit","isFullscreen","protoProps","_this2","_this3","_this4","callMethod","language","kind","request","_this5","autopause","camera","muted","playbackRate","quality","volume","fnMap","l","eventNameMap","fullscreenchange","fullscreenerror","onFullScreenEntered","returnPromise","requestFullscreen","onFullScreenExit","defineProperties","fullscreenElement","fullscreenEnabled","initializeScreenfull","elements","handleError","initializeEmbeds","VimeoPlayerResizeEmbeds_","onMessage","iframes","bottom","resizeEmbeds","auto","basePlacements","start","end","clippingParents","popper","reference","variationPlacements","acc","placement","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","node","isElement","isHTMLElement","isShadowRoot","ShadowRoot","enabled","phase","styles","attributes","assign","effect","_ref2","initialStyles","strategy","top","margin","arrow","property","attribute","requires","getBasePlacement","split","getBoundingClientRect","includeScale","rect","getLayoutRect","clientRect","offsetLeft","child","rootNode","getRootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","perspective","willChange","filter","getContainingBlock","getMainAxisFromPlacement","within","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","offset","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","_options$scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","sort","computeAutoPlacement","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","scaleX","scaleY","isElementScaled","order","modifiers","visited","Set","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","_len","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","eventListeners","TRANSITION_END","getSelector","hrefAttr","includes","startsWith","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","jquery","getElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","RegExp","isVisible","getClientRects","getPropertyValue","isDisabled","Node","ELEMENT_NODE","hasAttribute","findShadowRoot","attachShadow","root","noop","reflow","getjQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","NAME","JQUERY_NO_CONFLICT","jQueryInterface","noConflict","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","floatTransitionDelay","getTransitionDurationFromElement","called","getNextActiveElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","getUidEvent","uid","getEvent","findHandler","delegationSelector","uidEventList","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","addHandler","oneOff","wrapFn","delegateTarget","handlers","previousFn","domElements","EventHandler","bootstrapDelegationHandler","bootstrapHandler","removeHandler","one","inNamespace","isNamespace","elementEvent","storeElementEvent","handlerKey","removeNamespacedHandlers","keyHandlers","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","elementMap","Data","instanceMap","from","BaseComponent","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","getInstance","enableDismissTrigger","component","clickEvent","tagName","getOrCreateInstance","Alert","close","_destroyElement","SELECTOR_DATA_TOGGLE$5","Button","toggle","normalizeData","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","pureKey","charAt","getDataAttribute","SelectorEngine","findOne","ancestor","prev","previousElementSibling","nextElementSibling","focusableChildren","focusables","join","el","NAME$b","Default$a","interval","keyboard","DefaultType$a","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLID","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE_ITEM","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","_addEventListeners","_slide","nextWhenVisible","clearInterval","_updateInterval","visibilityState","to","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","hasPointerPenTouch","clientX","move","itemImg","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","ride","carouselInterface","dataApiClickHandler","carousels","NAME$a","Default$9","DefaultType$9","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","tempActiveData","elemActive","dimension","_getDimension","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","NAME$9","ESCAPE_KEY$2","SPACE_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","REGEXP_KEYDOWN","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$8","popperConfig","autoClose","DefaultType$8","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","_completeHide","Default","DefaultType","referenceElement","_getPopperConfig","isDisplayStatic","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","toggles","composedPath","isMenuTarget","getToggleButton","clearMenus","dataApiKeydownHandler","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","styleProp","scrollbarWidth","_applyManipulationCallback","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","Default$7","rootElement","clickCallback","DefaultType$7","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","Default$6","trapElement","autofocus","DefaultType$6","EVENT_KEY$7","TAB_NAV_BACKWARD","FocusTrap","_isActive","_lastTabNavDirection","_handleFocusin","_handleKeydown","shiftKey","NAME$6","ESCAPE_KEY$1","Default$5","DefaultType$5","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","_resetAdjustments","isModalOverflowing","isBodyOverflowing","showEvent","allReadyOpen","NAME$5","Default$4","DefaultType$4","CLASS_NAME_SHOW$3","OPEN_SELECTOR","EVENT_HIDDEN$2","Offcanvas","visibility","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","regExp","attributeRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","NAME$4","DISALLOWED_ATTRIBUTES","DefaultType$3","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","area","br","col","code","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","small","span","sub","sup","strong","u","ul","Event$2","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","_disposePopper","isWithContent","shadowRoot","isInTheDom","getTitle","tipId","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","setContent","_sanitizeAndSetContent","templateElement","setElementContent","updateAttachment","_getDelegateConfig","_handlePopperPlacementChange","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","basicClassPrefixRegex","tabClass","token","tClass","Default$2","DefaultType$2","Event$1","Popover","_getContent","NAME$2","Default$1","DefaultType$1","CLASS_NAME_ACTIVE$1","SELECTOR_LINK_ITEMS","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","listGroup","navItem","spy","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","itemSelector","hideEvent","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting","tag","firstScriptTag","getElementsByTagName","onYouTubeIframeAPIReadyCustom","youtubeVideoID","videoEmbedID","YT","videoId","onReady","onPlayerReady","onStateChange","onPlayerStateChange","playerVars","autoplay","controls","enablejsapi","rel","wmode","youtube_id","totalViewedTime","endTime","totalViewedTimeSec","video","website","playVideo","PlayerState","ENDED","getTime","intPercent","vimeoPlayModal","vimeoVideoID","vimeoID","youkuPlayModal","youkuVideoID","YKU","client_id","vid","show_related","onPlayStart","onPlayEnd","bikeCategoriesFilterContainer","getAPIConfig","fields","facetField","locale","dataType","sortingStr","APIConfig","COLLECTION","queryParams","q","echoParams","fl","defType","wt","facet","rows","fq","setUrlParameter","pushState","removeParameterFromURL","addParameterToURL","_url","sourceURL","toReturn","params_arr","queryString","getUrl","filtersArr","entries","keyVal","filterString","getFiltersString","toggleFilter","filtersKey","selectedFilter","elemIndex","clearURLFilters","originalUrl","categoryFacetsKey","G2Helper","categoryFilterKey","categories","filters","custom_ss_brand_categories","clearFilters","refreshData","toggleCategory","categorySelected","URLSearchParams","search","getAll","fetchContent","jsonResponse","setInitialData","categoriesOriginalArr","facet_counts","facet_fields","docs","brandName","custom_s_bike_category","custom_s_bike_brand","trackParcer","trackerIdentifier","thisPage","mainName","feature","pageTitle","pageUrl","page","popoverTriggerEl","tooltipTriggerEl"],"mappings":"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","file":"js/bundle.js","sourcesContent":["const anchorsToSections = document.querySelectorAll(\"a[data-section-target]:not([data-section-target='-1'])\");\r\nconst sections = document.querySelectorAll(\"main section\");\r\n\r\nanchorsToSections.forEach(function(element) {\r\n element.addEventListener(\"click\", handleSectionAnchorClick);\r\n});\r\n\r\nfunction handleSectionAnchorClick(event) {\r\n event.preventDefault();\r\n let targetSection = this.dataset.sectionTarget;\r\n let targetSectionIndex = targetSection - 1;\r\n\r\n if (targetSectionIndex >= 0 && targetSectionIndex < sections.length) {\r\n let targetElement = sections[targetSectionIndex];\r\n\r\n // Smooth scroll animation\r\n scrollToElement(targetElement, 700);\r\n }\r\n}\r\n\r\nfunction scrollToElement(element, duration) {\r\n const targetPosition = element.offsetTop - 100;\r\n const startPosition = window.pageYOffset;\r\n const distance = targetPosition - startPosition;\r\n let startTime = null;\r\n\r\n function animation(currentTime) {\r\n if (startTime === null) startTime = currentTime;\r\n const timeElapsed = currentTime - startTime;\r\n const run = easeInOutQuad(timeElapsed, startPosition, distance, duration);\r\n window.scrollTo(0, run);\r\n if (timeElapsed < duration) requestAnimationFrame(animation);\r\n }\r\n\r\n function easeInOutQuad(t, b, c, d) {\r\n t /= d / 2;\r\n if (t < 1) return (c / 2) * t * t + b;\r\n t--;\r\n return (-c / 2) * (t * (t - 2) - 1) + b;\r\n }\r\n\r\n requestAnimationFrame(animation);\r\n}","jQuery(() => {\n var shimanoModal = document.getElementById('shimanoModal')\n var activeNavElemet = $('.navbar .nav-item .active')\n var vimeoVideo\n var videoModel\n if (shimanoModal !== null) {\n shimanoModal.addEventListener('show.bs.modal', (event) => {\n $('.navbar').addClass('invisible')\n // Button that triggered the modal\n let button = event.relatedTarget\n vimeoVideo = button.getAttribute('data-vimeo') != undefined\n // Extract info from data-bs-* attributes\n let modalTarget = button.getAttribute('data-bs-modalTarget')\n let modalType = button.getAttribute('data-bs-modalType')\n let modalInput = $(modalTarget).html()\n let modalExtraClasses = button.getAttribute('data-extra-class')\n // Add any custom classes to modal\n shimanoModal.classList = `modal fade ${modalExtraClasses != undefined ? modalExtraClasses : ''}`\n\n // Update the modal's content.\n document.body.style.overflow = 'auto'\n //this if statement is needed to remove content that is outside of the modal body\n if (modalType == 'modal-full-v2') {\n $('.navbar-brand').addClass('invisible')\n $('.modal-header').removeClass('container')\n $('.modal-header .close-modal-button').addClass('modal-v2__close-button')\n }\n let modalBodyInput = shimanoModal.querySelector('.modal-body')\n activeNavElemet.removeClass('active')\n\n modalBodyInput.innerHTML = modalInput\n if (modalType == 'modal-image') {\n let preloadImage = $('#preloaded-image')\n $(preloadImage).prependTo($('.modal-body'))\n }\n videoModel = $('#shimanoModal .modal-body #player')\n if (videoModel != null && vimeoVideo) {\n $('#shimanoModal .close-modal-button').css('top', '60px')\n }\n })\n shimanoModal.addEventListener('hide.bs.modal', (event) => {\n if (videoModel != null && vimeoVideo) {\n $('#shimanoModal .close-modal-button').css('top', 'auto')\n }\n //close\n $('.modal-header').addClass('container')\n $('.modal-header .close-modal-button').removeClass('modal-v2__close-button')\n activeNavElemet.addClass('active')\n $('.navbar').removeClass('invisible')\n $('.navbar-brand').removeClass('invisible')\n $('.navbar-nav .nav-link.active::before').css('visibility', 'visible')\n $('.modal-body').empty()\n })\n }\n\n $('.close-modal').on('click', () => {\n if (shimanoModal === null) return\n\n $('#shimanoModal').modal('hide')\n })\n})\n","let counter = 0\nfunction add(name) {\n if (!name.trim()) {\n return\n }\n\n const filterButtons = document.getElementById('filter-options')\n if (filterButtons) {\n const element = document.createElement('h2')\n\n element.setAttribute('data-category', name)\n element.setAttribute('name', name)\n element.setAttribute('id', counter)\n element.textContent = name\n element.setAttribute('class', 'header header__6 mb-2 btn-option')\n\n filterButtons.appendChild(element)\n counter++\n console.log(name)\n return\n }\n}\n\nwindow.addEventListener('load', (e) => {\n $('#contentFilter > li').each(function (index, elm) {\n add($(elm).attr('data-category'))\n })\n\n $('.faq-categories-list .btn-option').on('click', (event) => {\n const mainSelector = '.category-item'\n const tagCategory = $(event.target).data('category')\n const idCategory = $(event.target).attr('id')\n\n if (tagCategory) {\n $(mainSelector).css({display: 'none'})\n $(`${mainSelector}[data-category=\"${tagCategory}\"]`).css({\n display: 'list-item',\n marginTop: 0,\n })\n }\n\n if (tagCategory === 'all') {\n $(mainSelector).css({display: 'list-item', marginTop: ''})\n }\n\n $(`.faq-categories-list .btn-option`).toggleClass('btn-option__selected', false)\n $(`.faq-categories-list #${idCategory}`).toggleClass('btn-option__selected')\n })\n})\n",";(function () {\n 'use strict'\n\n var forms = document.querySelectorAll('.needs-validation')\n\n Array.prototype.slice.call(forms).forEach(function (form) {\n form.addEventListener(\n 'submit',\n function (event) {\n if (!form.checkValidity()) {\n event.preventDefault()\n event.stopPropagation()\n setTimeout(function () {\n let firstError = $('.invalid-feedback:visible:first').attr('data-info')\n track('Form', 'Submit Error ' + firstError, {form: {id: 'newsletter-form'}}, $(this))\n }, 1000)\n } else {\n track('Form', 'Submit Successful', {form: {id: 'newsletter-form'}}, $(this))\n }\n\n form.classList.add('was-validated')\n },\n false\n )\n })\n})()\n\n$(function () {\n // Since we use anchor taggs as buttons :)\n $('.submit-btn').on('click', function (e) {\n e.preventDefault()\n $('.inputRadio').each(function () {\n if ($(this).is(':invalid')) {\n document.getElementById('invalidRadio').style.display = 'block'\n }\n })\n $('.inputCheck').each(function () {\n var numberNotChecked = $('.inputCheck:not(\":checked\")').length\n if (numberNotChecked === 5) {\n element.classList.add('errorCheck')\n document.getElementById('invalidCheck').style.display = 'block'\n }\n })\n $('#newsletterform').trigger('submit')\n })\n $('#newsletterform').on('submit', function (e) {\n e.preventDefault()\n if (!this.checkValidity()) {\n e.preventDefault()\n let firstError = $('.invalid-feedback:visible:first').attr('data-info')\n track('Form', 'Submit Error ' + firstError, {form: {id: 'newsletter-form'}}, $(this))\n e.stopPropagation()\n } else {\n track('Form', 'Submit Successful', {form: {id: 'newsletter-form'}}, $(this))\n }\n\n this.classList.add('was-validated')\n })\n\n var inputRadio = document.querySelectorAll('input[name=gender]')\n\n for (var i in inputRadio) {\n inputRadio[i].onchange = function () {\n if (this.checked) {\n document.getElementById('invalidRadio').style.display = 'none'\n return\n }\n }\n }\n\n var inputCheck = document.querySelectorAll('.inputCheck')\n var element = document.getElementById('groupCheck')\n\n for (var i in inputCheck) {\n inputCheck[i].onchange = function () {\n if (this.checked) {\n document.getElementById('invalidCheck').style.display = 'none'\n element.classList.remove('errorCheck')\n return\n }\n }\n }\n\n $('.submit-btn').on('click', function () {\n $('.inputRadio').each(function () {\n if ($(this).is(':invalid')) {\n document.getElementById('invalidRadio').style.display = 'block'\n }\n })\n $('.inputCheck').each(function () {\n var numberNotChecked = $('.inputCheck:not(\":checked\")').length\n if (numberNotChecked === 5) {\n element.classList.add('errorCheck')\n document.getElementById('invalidCheck').style.display = 'block'\n }\n })\n })\n})\n","'use strict'\n\ndocument.addEventListener('alpine:init', () => {\n Alpine.data('getInTouchForm', () => {\n return {\n firstName: '',\n lastName: '',\n companyName: '',\n email: '',\n phoneNumber: '',\n requestType: '',\n message: '',\n hasError: false,\n status: false,\n loading: false,\n captcha: '',\n init() {\n this.$watch('firstName', (value) => this.validate('firstName'))\n this.$watch('lastName', (value) => this.validate('lastName'))\n this.$watch('email', (value) => this.validate('email'))\n this.$watch('phoneNumber', (value) => this.validate('phoneNumber'))\n this.$watch('companyName', (value) => this.validate('companyName'))\n },\n validation: {\n firstName: {\n rule: {\n required: function (field) {\n if (!!field.trim()) {\n return {error: false, noDataMessage: false}\n } else {\n return {error: true, noDataMessage: true}\n }\n },\n minLength: function (field, value = 2) {\n if (field && field.length >= value) {\n return {error: false, validationMessage: false}\n } else {\n return {error: true, validationMessage: true}\n }\n },\n },\n error: true,\n noDataMessage: false,\n validationMessage: false,\n },\n lastName: {\n rule: {\n required: function (field) {\n if (!!field.trim()) {\n return {error: false, noDataMessage: false}\n } else {\n return {error: true, noDataMessage: true}\n }\n },\n minLength: function (field, value = 2) {\n if (field && field.length >= value) {\n return {error: false, validationMessage: false}\n } else {\n return {error: true, validationMessage: true}\n }\n },\n },\n error: true,\n noDataMessage: false,\n validationMessage: false,\n },\n companyName: {\n rule: {\n required: function (field) {\n if (!!field.trim()) {\n return {error: false, noDataMessage: false}\n } else {\n return {error: true, noDataMessage: true}\n }\n },\n minLength: function (field, value = 2) {\n if (field && field.length >= value) {\n return {error: false, validationMessage: false}\n } else {\n return {error: true, validationMessage: true}\n }\n },\n },\n error: true,\n noDataMessage: false,\n validationMessage: false,\n },\n email: {\n rule: {\n required: function (field) {\n if (!!field.trim()) {\n return {error: false, noDataMessage: false}\n } else {\n return {error: true, noDataMessage: true}\n }\n },\n email: function (field) {\n const rgx =\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n if (rgx.test(field)) {\n return {error: false, validationMessage: false}\n } else {\n return {error: true, validationMessage: true}\n }\n },\n },\n error: true,\n noDataMessage: false,\n validationMessage: false,\n },\n phoneNumber: {\n rule: {\n required: function (field) {\n if (!!field) {\n return {error: false, noDataMessage: false}\n } else {\n return {error: true, noDataMessage: true}\n }\n },\n },\n error: true,\n noDataMessage: false,\n validationMessage: false,\n },\n captcha: {\n error: true,\n validationMessage: false,\n },\n form: {\n submissionFailed: false,\n submissionSuccess: false,\n },\n },\n validate(field) {\n for (const key in this.validation[field].rule) {\n const validationResult = this.validation[field].rule[key](this[field])\n\n if (validationResult.error) {\n this.validation[field].error = true\n this.validation[field].noDataMessage = validationResult.noDataMessage\n this.validation[field].validationMessage = validationResult.validationMessage\n this.hasError = true\n break\n }\n\n this.validation[field].error = false\n this.validation[field].noDataMessage = false\n this.validation[field].validationMessage = false\n this.hasError = false\n }\n },\n validateCaptcha() {\n this.captcha = grecaptcha?.enterprise?.getResponse()\n if (this.captcha) {\n this.validation['captcha'].error = false\n this.validation['captcha'].validationMessage = false\n this.hasError = false\n } else {\n this.validation['captcha'].error = true\n this.validation['captcha'].validationMessage = true\n this.hasError = true\n }\n },\n isValid() {\n this.validate('firstName')\n this.validate('lastName')\n this.validate('email')\n this.validate('phoneNumber')\n this.validate('companyName')\n this.validateCaptcha()\n\n return !this.hasError\n },\n submitData(element) {\n if (this.isValid()) {\n this.loading = true\n let formObject = {\n firstName: this.firstName,\n lastName: this.lastName,\n email: this.email,\n phoneNumber: this.phoneNumber,\n companyName: this.companyName,\n requestType: this.requestType || null,\n message: this.message || null,\n 'g-recaptcha-response': this.captcha,\n }\n\n let formData = new FormData()\n for (let key in formObject) {\n formData.append(key, formObject[key])\n }\n\n fetch('/form-submit/get-in-touch-api.aspx', {\n method: 'POST',\n body: formData,\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => {\n if (data.success && data.success === 'true') {\n this.validation['form'].submissionSuccess = true\n this.validation['form'].submissionFailed = false\n } else {\n this.validation['form'].submissionFailed = true\n this.validation['form'].submissionSuccess = false\n }\n })\n .catch((err) => {\n console.error(err)\n this.validation['form'].submissionFailed = true\n this.validation['form'].submissionSuccess = false\n })\n .finally(() => {\n this.loading = false\n // start pdf download\n const target = document.querySelector('.submit-btn')\n //window.open(target.href, '_blank');\n // Create a new a element\n let a = document.createElement('a')\n\n // set href and download attributes\n a.href = target.href\n a.target = target.target\n\n // Append the a tag temporarly to body and simulate click\n document.body.appendChild(a)\n a.click()\n\n // Eliminate from the DOM\n document.body.removeChild(a)\n })\n }\n },\n }\n })\n})\n","var Flickity = require('flickity')\n\nlet durationArticleSlider = 4\nlet intervalArticleSlider = 10\nlet imageSliders = []\n\n$(initSliders)\n\n$(window).on('resize', resizeSliders)\n\nfunction resizeSliders() {\n imageSliders.forEach((s, i) => {\n const slider = imageSliders[i]\n if (slider) {\n requestAnimationFrame(function () {\n slider.resize()\n })\n }\n })\n}\n\nfunction initSliders() {\n $('.image-slider__container').each(function () {\n const container = $(this)\n\n if (container.attr('data-carousel-duration')) {\n durationArticleSlider = $(container).attr('data-carousel-duration')\n }\n\n const imageSlider = new Flickity(container[0], {\n autoPlay: false,\n loop: false,\n pauseAutoPlayOnHover: true,\n prevNextButtons: false,\n pageDots: true,\n draggable: true,\n wrapAround: true,\n on: {\n ready: function () {\n container.find('.image-slider__item').each(function () {\n $(this).css('opacity', '1')\n })\n },\n change: function (index) {\n track('Image Slider', 'Slide ' + (index + 1) + ' Shown')\n },\n dragStart: function () {\n $('.image-slider__item').css('pointer-events', 'none')\n },\n dragEnd: function () {\n $('.image-slider__item').css('pointer-events', 'all')\n },\n },\n })\n\n imageSliders.push(imageSlider)\n\n container.parent().find('.flickity-page-dots .dot').html('')\n\n container.find('.flickity-page-dots').appendTo(container.parents().find('.image-slider__dots-wrap'))\n\n container.parent().on('mouseleave', function () {\n container.attr('is-paused', 'false')\n })\n\n container\n .parent()\n .find('.flickity-page-dots .dot')\n .on('click', function () {\n container.attr('is-paused', 'true')\n })\n\n startProgressbarArticleSlider(imageSlider)\n })\n\n $('.image-slider .flickity-page-dots .dot').on('DOMSubtreeModified', function () {\n $('.image-slider__dots-wrap .dot span').css('width', '0%')\n $('.image-slider__dots-wrap .dot.is-selected span').css('width', 0 + '%')\n })\n\n resizeSliders()\n}\n\nfunction startProgressbarArticleSlider(imageSlider) {\n $('.image-slider__dots-wrap .dot.is-selected span', imageSlider.element.parentElement).css('width', '0%')\n var percentTimeArticleSlider = 0\n var stepArticleSlider\n window.setInterval(function () {\n if ($(imageSlider.element).attr('is-paused') != 'true') {\n stepArticleSlider = (durationArticleSlider * 1000) / intervalArticleSlider\n percentTimeArticleSlider += 100 / stepArticleSlider\n\n $('.image-slider__dots-wrap .dot span', imageSlider.element.parentElement).css('width', '0%')\n $('.image-slider__dots-wrap .dot.is-selected span', imageSlider.element.parentElement).css('width', percentTimeArticleSlider + '%')\n\n if (percentTimeArticleSlider >= 100) {\n imageSlider.next()\n percentTimeArticleSlider = 0\n track('Image Slider', 'Next Auto')\n $('.image-slider__dots-wrap .dot span', imageSlider.element.parentElement).css('width', '0%')\n $('.image-slider__dots-wrap .dot.is-selected span', imageSlider.element.parentElement).css('width', 0 + '%')\n }\n }\n }, intervalArticleSlider)\n}\n\n$(document).on('click', '.image-slider__container .image-slider__item', function () {\n track('Image Slider', 'Slide ' + (parseInt($(this).attr('carousel-index')) + 1) + ' CTA Clicked')\n})\n","var accordionInitiated = false\n\n$(function () {\n var $window = $(window)\n $window.on('resize', function (e) {\n handleResize(e.target.innerWidth)\n })\n\n handleResize($window[0].innerWidth)\n})\n\nfunction handleResize(width) {\n if (width < 768) {\n initiateAccordion()\n accordionInitiated = true\n } else {\n removeAccordion()\n accordionInitiated = false\n }\n}\n\nfunction initiateAccordion() {\n if (accordionInitiated) return\n var $accordions = $('.link-group-accordion')\n $accordions.each(function (index, element) {\n var $accordion = $(this)\n var $heading = $accordion.children().first()\n var $ul = $accordion.children().last()\n\n $accordion.addClass('accordion')\n $accordion.append('
')\n var $accordionItem = $accordion.children('.accordion-item')\n $heading\n .addClass('accordion-header collapsed')\n .attr('type', 'button')\n .attr('data-bs-toggle', 'collapse')\n .attr('data-bs-target', '#collapse-' + index)\n $accordionItem.append($heading)\n $accordionItem.append(`\n
\n
\n `)\n $accordionItem.find(`#collapse-${index}`).append($ul)\n })\n}\n\nfunction removeAccordion() {\n if (!accordionInitiated) return\n var $accordions = $('.link-group-accordion')\n $accordions.each(function (index, element) {\n var $accordion = $(this)\n var $heading = $accordion.find('.accordion-header')\n var $ul = $accordion.find('.footer-links').first()\n $accordion.append($heading).append($ul)\n $heading.removeClass('accordion-header collapsed').removeAttr('type').removeAttr('data-bs-toggle').removeAttr('data-bs-target')\n\n $accordion.removeClass('accordion')\n $accordion.find('.accordion-item').remove()\n })\n}\n","const headerNavi = $('.header-nav')\r\nconst headerNav = headerNavi.not('.static-version')\r\nlet w = $(window).width()\r\nlet is_mobile = w >= 1023 ? false : true\r\n\r\nif (!is_mobile && $(document).scrollTop() > 65) {\r\n headerNav.addClass('shrink')\r\n}\r\n\r\n$('#navigation .nav-item .nav-link').each(function () {\r\n const link = $(this)\r\n if (link.attr('href') === window.location.pathname) link.addClass('active')\r\n})\r\n\r\nconst navbar = $('.navbar-collapse')\r\nconst dis_con = $('.discover-button')\r\nconst discover_more = $('.discover-more')\r\nconst discoverMenu = $('.discover-menu')\r\nconst subMenus = $('.sub-menus')\r\nconst parentMenu = $('.parent-menu')\r\nconst body = $('body')\r\nconst discoverContainer = $('.discover-container')\r\nconst dataSubTarget = $('[data-sub-target]')\r\nconst animatedHamburger = $('.animated-hamburger')\r\nconst navbarCover = $('.navbar')\r\nconst allItemofSubMenus = $('.sub-menus *')\r\nconst carouselWrapper = $('.hero-placeholder')\r\nconst main = $('main')\r\nconst language_selector = document.querySelectorAll('.language-dropdown')\r\nconst dropdown = $('.nav-link[data-dropdown]')\r\n\r\n// ---------------------------- LANGUAGE SELECTOR START -----------------------------\r\nif (!!language_selector.length) {\r\n var localeFolder = $(\"meta[name='locale']\").attr('content')\r\n\r\n language_selector.forEach((lang, i) => {\r\n let button = lang.querySelector('.language-dropdown__button')\r\n let list = lang.querySelector('.language-dropdown__list')\r\n let currentLocale = list.querySelector('.language-dropdown__list-item.active')\r\n let items = list.querySelectorAll('.language-dropdown__list-item')\r\n let buttonLabel = button.querySelector('.language-dropdown__button-label')\r\n let discoverBtn = document.querySelector('.discover-button')\r\n let defaultIndex = 1020\r\n let newIndex = 1021\r\n\r\n buttonLabel.innerText = currentLocale.firstElementChild.innerText\r\n\r\n button.addEventListener('click', function () {\r\n if (list.classList.contains('show')) {\r\n list.classList.remove('show')\r\n discoverBtn.style.zIndex = defaultIndex\r\n } else {\r\n list.classList.add('show')\r\n discoverBtn.style.zIndex = newIndex\r\n }\r\n })\r\n\r\n items.forEach((item) => {\r\n item.addEventListener('click', function (e) {\r\n buttonLabel.innerText = e.currentTarget.firstElementChild.innerText\r\n list.classList.remove('show')\r\n })\r\n })\r\n\r\n window.addEventListener('click', function (e) {\r\n if (!(e.target.classList.contains('language-dropdown__button') || e.target.parentElement.classList.contains('language-dropdown__button'))) {\r\n list.classList.remove('show')\r\n discoverBtn.style.zIndex = defaultIndex\r\n }\r\n })\r\n })\r\n}\r\n// ---------------------------- LANGUAGE SELECTOR START -----------------------------\r\n\r\n// To support pages with no hero. Please check newsletter page for example.\r\nconst getDiscoverClassElement = () => {\r\n return carouselWrapper.length ? carouselWrapper : main\r\n}\r\n\r\nconst closeDiscover = () => {\r\n getDiscoverClassElement().removeClass('discovered')\r\n discoverMenu.removeClass('discover-menu__show')\r\n discover_more.html('' + discover_more_text + '')\r\n}\r\n\r\nconst closeSublinks = () => {\r\n if (subMenus.hasClass('show')) {\r\n $('.sub-link', '.sub-menu-cover').removeClass('show active')\r\n $('.sub-menu-container').each(function () {\r\n var subCovers = $(this).find('.sub-menu-cover').first()\r\n subCovers.addClass('show active')\r\n subCovers.find('.sub-link').first().addClass('show active')\r\n })\r\n }\r\n}\r\n\r\nvar threshold = 1200\r\nvar mobileThreshold = 1024\r\nvar initialDiff = w >= threshold ? 1 : -1\r\nvar lastWindowWidth = w\r\n$(window).on('resize', function (e) {\r\n if (!is_mobile) {\r\n navbar.find(discover_more).appendTo(dis_con)\r\n }\r\n w = $(window).width()\r\n var currentDiff = w - threshold\r\n if (currentDiff * initialDiff < 0) {\r\n location.reload()\r\n }\r\n if (lastWindowWidth >= mobileThreshold && w < mobileThreshold) {\r\n location.reload()\r\n }\r\n if (lastWindowWidth < mobileThreshold && w >= mobileThreshold) {\r\n location.reload()\r\n }\r\n lastWindowWidth = w\r\n})\r\n\r\nif (!is_mobile) {\r\n subMenus.removeClass('closed')\r\n\r\n function showElements(elm) {\r\n var element = elm\r\n element.toggleClass('show')\r\n let target_id = element.data('sub-target')\r\n let target = $(\"[data-sub-menu='\" + target_id + \"']\")\r\n target.toggleClass('show')\r\n\r\n $('.sub-menu-container').each(function () {\r\n $(this).find('.sub-menu-cover').first().find('.sub-link').first().addClass('show')\r\n })\r\n // closeSublinks()\r\n }\r\n\r\n dataSubTarget.on('click', function (e) {\r\n e.preventDefault()\r\n\r\n dropdown.removeClass('show')\r\n dropdown.next('.nav-dropdown').removeClass('show')\r\n showElements($(this))\r\n })\r\n\r\n $('.sub-menus, [data-sub-target]').click(function (event) {\r\n event.stopPropagation()\r\n })\r\n\r\n discover_more.on('click', function (e) {\r\n e.preventDefault()\r\n getDiscoverClassElement().toggleClass('discovered')\r\n let t_text = $('.cta-text')\r\n discoverMenu.toggleClass('discover-menu__show')\r\n discover_more.html(\r\n t_text.text() == discover_more_text\r\n ? '' + close_text + ''\r\n : '' + discover_more_text + ''\r\n )\r\n\r\n if (discoverMenu.hasClass('discover-menu__show')) {\r\n track('Website Selector', 'Website Selector Opened')\r\n } else {\r\n track('Website Selector', 'Website Selector Closed')\r\n }\r\n })\r\n\r\n // ---------------------------------- DESKTOP DROPDOWN START ---------------------------------\r\n if (dropdown) {\r\n let dropdownList = $('.nav-dropdown')\r\n\r\n dropdown.on('click', function (e) {\r\n e.preventDefault()\r\n const $this = $(this)\r\n if ($this.hasClass('show')) {\r\n $this.removeClass('show')\r\n $this.next('.nav-dropdown').removeClass('show')\r\n return\r\n }\r\n subMenus.removeClass('show')\r\n dataSubTarget.removeClass('show')\r\n dropdownList.removeClass('show')\r\n $this.next('.nav-dropdown')?.toggleClass('show')\r\n $this.toggleClass('show')\r\n })\r\n }\r\n // ---------------------------------- DESKTOP DROPDOWN END ---------------------------------\r\n\r\n //Shrink\r\n $(window).scroll(function () {\r\n if ($(document).scrollTop() > 65) {\r\n headerNav.addClass('shrink')\r\n } else {\r\n headerNav.removeClass('shrink')\r\n if (discoverMenu.hasClass('discover-menu__show')) {\r\n closeDiscover()\r\n }\r\n }\r\n\r\n subMenus.removeClass('show')\r\n dataSubTarget.removeClass('show')\r\n\r\n dropdown.removeClass('show')\r\n dropdown.next('.nav-dropdown').removeClass('show')\r\n\r\n closeSublinks()\r\n })\r\n} else {\r\n //Shrink mobile\r\n $(window).scroll(function () {\r\n headerNav.addClass('mobile-shrink-active')\r\n\r\n if ($(document).scrollTop() > 40) {\r\n headerNav.addClass('shrink')\r\n } else {\r\n headerNav.removeClass('shrink')\r\n }\r\n\r\n subMenus.removeClass('show')\r\n dataSubTarget.removeClass('show')\r\n })\r\n\r\n allItemofSubMenus.removeClass('show active')\r\n\r\n dataSubTarget.on('click', function (e) {\r\n e.preventDefault()\r\n\r\n let targetId = $(this).data('sub-target')\r\n const subMenu = $(`.sub-menus[data-sub-menu=\"${targetId}\"]`)\r\n\r\n subMenus.removeClass('show')\r\n dropdown.next('.nav-dropdown').removeClass('show')\r\n dropdown.removeClass('show')\r\n if (subMenu.hasClass('show')) {\r\n subMenu.removeClass('show')\r\n } else {\r\n subMenu.addClass('show')\r\n }\r\n parentMenu.addClass('passed')\r\n subMenu.find('.sub-menu-cover:first-of-type').addClass('show')\r\n })\r\n}\r\n\r\nif (is_mobile) {\r\n $('.go-back-menu').on('click', function (e) {\r\n e.preventDefault()\r\n let element = $(this)\r\n if (element.hasClass('return-menu')) {\r\n parentMenu.removeClass('passed')\r\n discoverContainer.removeClass('active')\r\n }\r\n element.closest('.sub-menu-cover').removeClass('show')\r\n element.parents('.sub-menus').find('.passed').last().removeClass('passed')\r\n })\r\n var myCollapsible = document.getElementById('navigation')\r\n if (myCollapsible) {\r\n myCollapsible.addEventListener('hide.bs.collapse', function () {\r\n animatedHamburger.removeClass('open')\r\n parentMenu.removeClass('passed')\r\n allItemofSubMenus.removeClass('show active passed')\r\n body.css('overflow', 'visible')\r\n headerNavi.removeClass('active')\r\n headerNavi.parent('header').removeClass('active')\r\n subMenus.addClass('closed').removeClass('show')\r\n parentMenu.addClass('closed')\r\n discoverContainer.removeClass('active')\r\n track('Menu', 'Closed', {\r\n 'page-position': 'Header',\r\n })\r\n\r\n closeSublinks()\r\n })\r\n myCollapsible.addEventListener('shown.bs.collapse', function () {\r\n animatedHamburger.addClass('open')\r\n headerNavi.addClass('active')\r\n headerNavi.parent('header').addClass('active')\r\n body.css('overflow', 'hidden')\r\n subMenus.removeClass('closed')\r\n parentMenu.removeClass('closed')\r\n // language_selector.appendTo(navbar)\r\n discover_more.appendTo(navbar)\r\n track('Menu', 'Opened', {\r\n 'page-position': 'Header',\r\n })\r\n })\r\n }\r\n\r\n discover_more.on('click', function (e) {\r\n e.preventDefault()\r\n getDiscoverClassElement().toggleClass('discovered')\r\n if (discoverContainer.hasClass('active')) {\r\n parentMenu.removeClass('passed')\r\n discoverContainer.removeClass('active')\r\n } else {\r\n parentMenu.addClass('passed')\r\n discoverContainer.addClass('active')\r\n }\r\n })\r\n\r\n $('#my-booking').on('click', () => {\r\n const mobileMenuToggle = $('#close-menu .animated-hamburger')\r\n if (mobileMenuToggle.hasClass('open')) {\r\n mobileMenuToggle.trigger('click')\r\n }\r\n })\r\n}\r\n\r\nwindow.is_mobile = is_mobile\r\n","var valid_string = function (v) {\r\n return v && typeof v === 'string' && v !== ''\r\n}\r\nvar valid_obj = function (v) {\r\n return v && typeof v === 'object' && Object.keys(v).length\r\n}\r\nvar error = function (msg, v) {\r\n console.error('type=', typeof v, ' value=', v)\r\n throw new Error('TRACK v3.2: ' + msg + ', see debug value above')\r\n}\r\nvar is_defined = function (v) {\r\n return typeof v !== 'undefined'\r\n}\r\nvar log = function () {\r\n var color = 'background-color: black; color: white; padding: 2px'\r\n var args = Array.prototype.slice.call(arguments)\r\n args.unshift('%cTRACK v3.2:', color)\r\n console.log.apply(console, args)\r\n}\r\nwindow.track = function (category, action, props, element, ecom) {\r\n if (!valid_string(category)) error('invalid [category]', category)\r\n if (!valid_string(action)) error('invalid [action]', action)\r\n if (is_defined(props) && !valid_obj(props)) error('invalid [props]', props)\r\n if (is_defined(ecom) && !valid_obj(ecom)) error('invalid [ecom]', ecom)\r\n\r\n var event = {\r\n event: 'track_' + category + '_' + action,\r\n category: category,\r\n action: action,\r\n }\r\n if (props) event.properties = props\r\n if (element) event.component_element = element\r\n\r\n if (ecom) {\r\n if ('ecommerce' in ecom) {\r\n ecom = ecom.ecommerce\r\n }\r\n event.ecommerce = ecom\r\n }\r\n // Initializing DL if GTM hasn't loaded yet and pushing data\r\n window['dataLayer'] = window['dataLayer'] || []\r\n // Clearing ecommerce object to be safe\r\n window['dataLayer'].push({ ecommerce: null })\r\n window['dataLayer'].push(event)\r\n log('category=', category, ' action=', action, ' props=', props, ' element=', element, ' ecom=', ecom)\r\n}\r\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\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\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 if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\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\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\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 if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\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\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\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\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\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};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar 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 */\nutils.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 )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\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 +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","/**\n * Flickity fade v1.0.0\n * Fade between Flickity slides\n */\n\n/* jshint browser: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( this, function factory( Flickity, utils ) {\n\n// ---- Slide ---- //\n\nvar Slide = Flickity.Slide;\n\nvar slideUpdateTarget = Slide.prototype.updateTarget;\nSlide.prototype.updateTarget = function() {\n slideUpdateTarget.apply( this, arguments );\n if ( !this.parent.options.fade ) {\n return;\n }\n // position cells at selected target\n var slideTargetX = this.target - this.x;\n var firstCellX = this.cells[0].x;\n this.cells.forEach( function( cell ) {\n var targetX = cell.x - firstCellX - slideTargetX;\n cell.renderPosition( targetX );\n });\n};\n\nSlide.prototype.setOpacity = function( alpha ) {\n this.cells.forEach( function( cell ) {\n cell.element.style.opacity = alpha;\n });\n};\n\n// ---- Flickity ---- //\n\nvar proto = Flickity.prototype;\n\nFlickity.createMethods.push('_createFade');\n\nproto._createFade = function() {\n this.fadeIndex = this.selectedIndex;\n this.prevSelectedIndex = this.selectedIndex;\n this.on( 'select', this.onSelectFade );\n this.on( 'dragEnd', this.onDragEndFade );\n this.on( 'settle', this.onSettleFade );\n this.on( 'activate', this.onActivateFade );\n this.on( 'deactivate', this.onDeactivateFade );\n};\n\nvar updateSlides = proto.updateSlides;\nproto.updateSlides = function() {\n updateSlides.apply( this, arguments );\n if ( !this.options.fade ) {\n return;\n }\n // set initial opacity\n this.slides.forEach( function( slide, i ) {\n var alpha = i == this.selectedIndex ? 1 : 0;\n slide.setOpacity( alpha );\n }, this );\n};\n\n/* ---- events ---- */\n\nproto.onSelectFade = function() {\n // in case of resize, keep fadeIndex within current count\n this.fadeIndex = Math.min( this.prevSelectedIndex, this.slides.length - 1 );\n this.prevSelectedIndex = this.selectedIndex;\n};\n\nproto.onSettleFade = function() {\n delete this.didDragEnd;\n if ( !this.options.fade ) {\n return;\n }\n // set full and 0 opacity on selected & faded slides\n this.selectedSlide.setOpacity( 1 );\n var fadedSlide = this.slides[ this.fadeIndex ];\n if ( fadedSlide && this.fadeIndex != this.selectedIndex ) {\n this.slides[ this.fadeIndex ].setOpacity( 0 );\n }\n};\n\nproto.onDragEndFade = function() {\n // set flag\n this.didDragEnd = true;\n};\n\nproto.onActivateFade = function() {\n if ( this.options.fade ) {\n this.element.classList.add('is-fade');\n }\n};\n\nproto.onDeactivateFade = function() {\n if ( !this.options.fade ) {\n return;\n }\n this.element.classList.remove('is-fade');\n // reset opacity\n this.slides.forEach( function( slide ) {\n slide.setOpacity('');\n });\n};\n\n/* ---- position & fading ---- */\n\nvar positionSlider = proto.positionSlider;\nproto.positionSlider = function() {\n if ( !this.options.fade ) {\n positionSlider.apply( this, arguments );\n return;\n }\n\n this.fadeSlides();\n this.dispatchScrollEvent();\n};\n\nvar positionSliderAtSelected = proto.positionSliderAtSelected;\nproto.positionSliderAtSelected = function() {\n if ( this.options.fade ) {\n // position fade slider at origin\n this.setTranslateX( 0 );\n }\n positionSliderAtSelected.apply( this, arguments );\n};\n\nproto.fadeSlides = function() {\n if ( this.slides.length < 2 ) {\n return;\n }\n // get slides to fade-in & fade-out\n var indexes = this.getFadeIndexes();\n var fadeSlideA = this.slides[ indexes.a ];\n var fadeSlideB = this.slides[ indexes.b ];\n var distance = this.wrapDifference( fadeSlideA.target, fadeSlideB.target );\n var progress = this.wrapDifference( fadeSlideA.target, -this.x );\n progress = progress / distance;\n\n fadeSlideA.setOpacity( 1 - progress );\n fadeSlideB.setOpacity( progress );\n\n // hide previous slide\n var fadeHideIndex = indexes.a;\n if ( this.isDragging ) {\n fadeHideIndex = progress > 0.5 ? indexes.a : indexes.b;\n }\n var isNewHideIndex = this.fadeHideIndex != undefined &&\n this.fadeHideIndex != fadeHideIndex &&\n this.fadeHideIndex != indexes.a &&\n this.fadeHideIndex != indexes.b;\n if ( isNewHideIndex ) {\n // new fadeHideSlide set, hide previous\n this.slides[ this.fadeHideIndex ].setOpacity( 0 );\n }\n this.fadeHideIndex = fadeHideIndex;\n};\n\nproto.getFadeIndexes = function() {\n if ( !this.isDragging && !this.didDragEnd ) {\n return {\n a: this.fadeIndex,\n b: this.selectedIndex,\n };\n }\n if ( this.options.wrapAround ) {\n return this.getFadeDragWrapIndexes();\n } else {\n return this.getFadeDragLimitIndexes();\n }\n};\n\nproto.getFadeDragWrapIndexes = function() {\n var distances = this.slides.map( function( slide, i ) {\n return this.getSlideDistance( -this.x, i );\n }, this );\n var absDistances = distances.map( function( distance ) {\n return Math.abs( distance );\n });\n var minDistance = Math.min.apply( Math, absDistances );\n var closestIndex = absDistances.indexOf( minDistance );\n var distance = distances[ closestIndex ];\n var len = this.slides.length;\n\n var delta = distance >= 0 ? 1 : -1;\n return {\n a: closestIndex,\n b: utils.modulo( closestIndex + delta, len ),\n };\n};\n\nproto.getFadeDragLimitIndexes = function() {\n // calculate closest previous slide\n var dragIndex = 0;\n for ( var i=0; i < this.slides.length - 1; i++ ) {\n var slide = this.slides[i];\n if ( -this.x < slide.target ) {\n break;\n }\n dragIndex = i;\n }\n return {\n a: dragIndex,\n b: dragIndex + 1,\n };\n};\n\nproto.wrapDifference = function( a, b ) {\n var diff = b - a;\n\n if ( !this.options.wrapAround ) {\n return diff;\n }\n\n var diffPlus = diff + this.slideableWidth;\n var diffMinus = diff - this.slideableWidth;\n if ( Math.abs( diffPlus ) < Math.abs( diff ) ) {\n diff = diffPlus;\n }\n if ( Math.abs( diffMinus ) < Math.abs( diff ) ) {\n diff = diffMinus;\n }\n return diff;\n};\n\n// ---- wrapAround ---- //\n\nvar _getWrapShiftCells = proto._getWrapShiftCells;\nproto._getWrapShiftCells = function() {\n if ( !this.options.fade ) {\n _getWrapShiftCells.apply( this, arguments );\n }\n};\n\nvar shiftWrapCells = proto.shiftWrapCells;\nproto.shiftWrapCells = function() {\n if ( !this.options.fade ) {\n shiftWrapCells.apply( this, arguments );\n }\n};\n\nreturn Flickity;\n\n}));\n","/*!\n * Flickity hash v1.0.3\n * Enable hash navigation for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity')\n );\n } else {\n // browser global\n factory(\n window.Flickity\n );\n }\n\n}( window, function factory( Flickity ) {\n\n'use strict';\n\nFlickity.createMethods.push('_createHash');\n\nvar proto = Flickity.prototype;\n\nproto._createHash = function() {\n if ( !this.options.hash ) {\n return;\n }\n this.connectedHashLinks = [];\n // hash link listener\n // use HTML5 history pushState to prevent page scroll jump\n this.onHashLinkClick = function( event ) {\n event.preventDefault();\n this.selectCell( event.currentTarget.hash );\n history.replaceState( null, '', event.currentTarget.hash );\n }.bind( this );\n\n // events\n this.on( 'activate', this.activateHash );\n this.on( 'deactivate', this.deactivateHash );\n};\n\nproto.activateHash = function() {\n this.on( 'change', this.onChangeHash );\n\n // overwrite initialIndex\n if ( this.options.initialIndex === undefined && location.hash ) {\n var cell = this.queryCell( location.hash );\n if ( cell ) {\n this.options.initialIndex = this.getCellSlideIndex( cell );\n }\n }\n\n this.connectHashLinks();\n};\n\n\nproto.deactivateHash = function() {\n this.off( 'change', this.onChangeHash );\n this.disconnectHashLinks();\n};\n\nproto.onChangeHash = function() {\n var id = this.selectedElement.id;\n if ( id ) {\n var url = '#' + id;\n history.replaceState( null, '', url );\n }\n};\n\n\nproto.connectHashLinks = function() {\n var links = document.querySelectorAll('a');\n for ( var i=0; i < links.length; i++ ) {\n this.connectHashLink( links[i] );\n }\n};\n\n// used to test if link is on same page\nvar proxyLink = document.createElement('a');\n\nproto.connectHashLink = function( link ) {\n if ( !link.hash ) {\n return;\n }\n // check that link is for the same page\n proxyLink.href = link.href;\n if ( proxyLink.pathname != location.pathname ) {\n return;\n }\n var cell = this.queryCell( link.hash );\n if ( !cell ) {\n return;\n }\n link.addEventListener( 'click', this.onHashLinkClick );\n this.connectedHashLinks.push( link );\n};\n\nproto.disconnectHashLinks = function() {\n this.connectedHashLinks.forEach( function( link ) {\n link.removeEventListener( 'click', this.onHashLinkClick );\n }, this );\n this.connectedHashLinks = [];\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\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 */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\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 this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\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\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\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 */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\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\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.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\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._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\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.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\nproto.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\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.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\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._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 );\n // 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 if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {} );\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.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 if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._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 };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\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\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\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 &&\n -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 delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\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 */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // 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 while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\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 */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // 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 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 return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.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};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\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\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._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\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\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 */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\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 }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\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 ) +\n ( 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\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\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 }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n 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};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar 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\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\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 ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\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\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 */\nproto.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 if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\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 */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\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 if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\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 */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.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 if ( index != -1 ) {\n return i;\n }\n }\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 */\nproto.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 if ( cell.element == elem ) {\n return cell;\n }\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 */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\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 */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\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 if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\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 */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.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};\n\n// ----- focus ----- //\n\nproto.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({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\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\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction 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 if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\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\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.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 if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.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\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.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 }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\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\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\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\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\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\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.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;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\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\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.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\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.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' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\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\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._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\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\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 == '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\n}( window, function factory() {\n'use strict';\n\nfunction 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\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.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\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\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/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\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 */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- 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 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\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\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\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // 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\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\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\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._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};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._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\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._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 );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\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\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\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 elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._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;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*! @vimeo/player v2.15.3 | (c) 2021 Vimeo | MIT License | https://github.com/vimeo/player.js */\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\n/**\n * @module lib/functions\n */\n\n/**\n * Check to see this is a node environment.\n * @type {Boolean}\n */\n\n/* global global */\nvar isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';\n/**\n * Get the name of the method for a given getter or setter.\n *\n * @param {string} prop The name of the property.\n * @param {string} type Either “get” or “set”.\n * @return {string}\n */\n\nfunction getMethodName(prop, type) {\n if (prop.indexOf(type.toLowerCase()) === 0) {\n return prop;\n }\n\n return \"\".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));\n}\n/**\n * Check to see if the object is a DOM Element.\n *\n * @param {*} element The object to check.\n * @return {boolean}\n */\n\nfunction isDomElement(element) {\n return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);\n}\n/**\n * Check to see whether the value is a number.\n *\n * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html\n * @param {*} value The value to check.\n * @param {boolean} integer Check if the value is an integer.\n * @return {boolean}\n */\n\nfunction isInteger(value) {\n // eslint-disable-next-line eqeqeq\n return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;\n}\n/**\n * Check to see if the URL is a Vimeo url.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\n\nfunction isVimeoUrl(url) {\n return /^(https?:)?\\/\\/((player|www)\\.)?vimeo\\.com(?=$|\\/)/.test(url);\n}\n/**\n * Get the Vimeo URL from an element.\n * The element must have either a data-vimeo-id or data-vimeo-url attribute.\n *\n * @param {object} oEmbedParameters The oEmbed parameters.\n * @return {string}\n */\n\nfunction getVimeoUrl() {\n var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var id = oEmbedParameters.id;\n var url = oEmbedParameters.url;\n var idOrUrl = id || url;\n\n if (!idOrUrl) {\n throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');\n }\n\n if (isInteger(idOrUrl)) {\n return \"https://vimeo.com/\".concat(idOrUrl);\n }\n\n if (isVimeoUrl(idOrUrl)) {\n return idOrUrl.replace('http:', 'https:');\n }\n\n if (id) {\n throw new TypeError(\"\\u201C\".concat(id, \"\\u201D is not a valid video id.\"));\n }\n\n throw new TypeError(\"\\u201C\".concat(idOrUrl, \"\\u201D is not a vimeo.com url.\"));\n}\n\nvar arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';\nvar postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';\n\nif (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) {\n throw new Error('Sorry, the Vimeo Player API is not available in this browser.');\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*!\n * weakmap-polyfill v2.0.1 - ECMAScript6 WeakMap polyfill\n * https://github.com/polygonplanet/weakmap-polyfill\n * Copyright (c) 2015-2020 Polygon Planet \n * @license MIT\n */\n(function (self) {\n\n if (self.WeakMap) {\n return;\n }\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n var defineProperty = function (object, name, value) {\n if (Object.defineProperty) {\n Object.defineProperty(object, name, {\n configurable: true,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n\n self.WeakMap = function () {\n // ECMA-262 23.3 WeakMap Objects\n function WeakMap() {\n if (this === void 0) {\n throw new TypeError(\"Constructor WeakMap requires 'new'\");\n }\n\n defineProperty(this, '_id', genId('_WeakMap')); // ECMA-262 23.3.1.1 WeakMap([iterable])\n\n if (arguments.length > 0) {\n // Currently, WeakMap `iterable` argument is not supported\n throw new TypeError('WeakMap iterable is not supported');\n }\n } // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)\n\n\n defineProperty(WeakMap.prototype, 'delete', function (key) {\n checkInstance(this, 'delete');\n\n if (!isObject(key)) {\n return false;\n }\n\n var entry = key[this._id];\n\n if (entry && entry[0] === key) {\n delete key[this._id];\n return true;\n }\n\n return false;\n }); // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)\n\n defineProperty(WeakMap.prototype, 'get', function (key) {\n checkInstance(this, 'get');\n\n if (!isObject(key)) {\n return void 0;\n }\n\n var entry = key[this._id];\n\n if (entry && entry[0] === key) {\n return entry[1];\n }\n\n return void 0;\n }); // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)\n\n defineProperty(WeakMap.prototype, 'has', function (key) {\n checkInstance(this, 'has');\n\n if (!isObject(key)) {\n return false;\n }\n\n var entry = key[this._id];\n\n if (entry && entry[0] === key) {\n return true;\n }\n\n return false;\n }); // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)\n\n defineProperty(WeakMap.prototype, 'set', function (key, value) {\n checkInstance(this, 'set');\n\n if (!isObject(key)) {\n throw new TypeError('Invalid value used as weak map key');\n }\n\n var entry = key[this._id];\n\n if (entry && entry[0] === key) {\n entry[1] = value;\n return this;\n }\n\n defineProperty(key, this._id, [key, value]);\n return this;\n });\n\n function checkInstance(x, methodName) {\n if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n }\n }\n\n function genId(prefix) {\n return prefix + '_' + rand() + '.' + rand();\n }\n\n function rand() {\n return Math.random().toString().substring(2);\n }\n\n defineProperty(WeakMap, '_polyfill', true);\n return WeakMap;\n }();\n\n function isObject(x) {\n return Object(x) === x;\n }\n})(typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n(function UMD(name, context, definition) {\n // special form of UMD for polyfilling across evironments\n context[name] = context[name] || definition();\n\n if ( module.exports) {\n module.exports = context[name];\n }\n})(\"Promise\", typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal, function DEF() {\n\n var builtInProp,\n cycle,\n scheduling_queue,\n ToString = Object.prototype.toString,\n timer = typeof setImmediate != \"undefined\" ? function timer(fn) {\n return setImmediate(fn);\n } : setTimeout; // dammit, IE8.\n\n try {\n Object.defineProperty({}, \"x\", {});\n\n builtInProp = function builtInProp(obj, name, val, config) {\n return Object.defineProperty(obj, name, {\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n } catch (err) {\n builtInProp = function builtInProp(obj, name, val) {\n obj[name] = val;\n return obj;\n };\n } // Note: using a queue instead of array for efficiency\n\n\n scheduling_queue = function Queue() {\n var first, last, item;\n\n function Item(fn, self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn, self) {\n item = new Item(fn, self);\n\n if (last) {\n last.next = item;\n } else {\n first = item;\n }\n\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n }();\n\n function schedule(fn, self) {\n scheduling_queue.add(fn, self);\n\n if (!cycle) {\n cycle = timer(scheduling_queue.drain);\n }\n } // promise duck typing\n\n\n function isThenable(o) {\n var _then,\n o_type = typeof o;\n\n if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n _then = o.then;\n }\n\n return typeof _then == \"function\" ? _then : false;\n }\n\n function notify() {\n for (var i = 0; i < this.chain.length; i++) {\n notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);\n }\n\n this.chain.length = 0;\n } // NOTE: This is a separate function to isolate\n // the `try..catch` so that other code can be\n // optimized better\n\n\n function notifyIsolated(self, cb, chain) {\n var ret, _then;\n\n try {\n if (cb === false) {\n chain.reject(self.msg);\n } else {\n if (cb === true) {\n ret = self.msg;\n } else {\n ret = cb.call(void 0, self.msg);\n }\n\n if (ret === chain.promise) {\n chain.reject(TypeError(\"Promise-chain cycle\"));\n } else if (_then = isThenable(ret)) {\n _then.call(ret, chain.resolve, chain.reject);\n } else {\n chain.resolve(ret);\n }\n }\n } catch (err) {\n chain.reject(err);\n }\n }\n\n function resolve(msg) {\n var _then,\n self = this; // already triggered?\n\n\n if (self.triggered) {\n return;\n }\n\n self.triggered = true; // unwrap\n\n if (self.def) {\n self = self.def;\n }\n\n try {\n if (_then = isThenable(msg)) {\n schedule(function () {\n var def_wrapper = new MakeDefWrapper(self);\n\n try {\n _then.call(msg, function $resolve$() {\n resolve.apply(def_wrapper, arguments);\n }, function $reject$() {\n reject.apply(def_wrapper, arguments);\n });\n } catch (err) {\n reject.call(def_wrapper, err);\n }\n });\n } else {\n self.msg = msg;\n self.state = 1;\n\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n } catch (err) {\n reject.call(new MakeDefWrapper(self), err);\n }\n }\n\n function reject(msg) {\n var self = this; // already triggered?\n\n if (self.triggered) {\n return;\n }\n\n self.triggered = true; // unwrap\n\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n\n function iteratePromises(Constructor, arr, resolver, rejecter) {\n for (var idx = 0; idx < arr.length; idx++) {\n (function IIFE(idx) {\n Constructor.resolve(arr[idx]).then(function $resolver$(msg) {\n resolver(idx, msg);\n }, rejecter);\n })(idx);\n }\n }\n\n function MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n }\n\n function MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n }\n\n function Promise(executor) {\n if (typeof executor != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n if (this.__NPO__ !== 0) {\n throw TypeError(\"Not a promise\");\n } // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n\n\n this.__NPO__ = 1;\n var def = new MakeDef(this);\n\n this[\"then\"] = function then(success, failure) {\n var o = {\n success: typeof success == \"function\" ? success : true,\n failure: typeof failure == \"function\" ? failure : false\n }; // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n\n o.promise = new this.constructor(function extractChain(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n\n if (def.state !== 0) {\n schedule(notify, def);\n }\n\n return o.promise;\n };\n\n this[\"catch\"] = function $catch$(failure) {\n return this.then(void 0, failure);\n };\n\n try {\n executor.call(void 0, function publicResolve(msg) {\n resolve.call(def, msg);\n }, function publicReject(msg) {\n reject.call(def, msg);\n });\n } catch (err) {\n reject.call(def, err);\n }\n }\n\n var PromisePrototype = builtInProp({}, \"constructor\", Promise,\n /*configurable=*/\n false); // Note: Android 4 cannot use `Object.defineProperty(..)` here\n\n Promise.prototype = PromisePrototype; // built-in \"brand\" to signal an \"uninitialized\" promise\n\n builtInProp(PromisePrototype, \"__NPO__\", 0,\n /*configurable=*/\n false);\n builtInProp(Promise, \"resolve\", function Promise$resolve(msg) {\n var Constructor = this; // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n\n if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n return msg;\n }\n\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n resolve(msg);\n });\n });\n builtInProp(Promise, \"reject\", function Promise$reject(msg) {\n return new this(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n reject(msg);\n });\n });\n builtInProp(Promise, \"all\", function Promise$all(arr) {\n var Constructor = this; // spec mandated checks\n\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n var len = arr.length,\n msgs = Array(len),\n count = 0;\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n msgs[idx] = msg;\n\n if (++count === len) {\n resolve(msgs);\n }\n }, reject);\n });\n });\n builtInProp(Promise, \"race\", function Promise$race(arr) {\n var Constructor = this; // spec mandated checks\n\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n resolve(msg);\n }, reject);\n });\n });\n return Promise;\n});\n});\n\n/**\n * @module lib/callbacks\n */\nvar callbackMap = new WeakMap();\n/**\n * Store a callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback\n * The callback to call or an object with resolve and reject functions for a promise.\n * @return {void}\n */\n\nfunction storeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n\n if (!(name in playerCallbacks)) {\n playerCallbacks[name] = [];\n }\n\n playerCallbacks[name].push(callback);\n callbackMap.set(player.element, playerCallbacks);\n}\n/**\n * Get the callbacks for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @return {function[]}\n */\n\nfunction getCallbacks(player, name) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n return playerCallbacks[name] || [];\n}\n/**\n * Remove a stored callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @param {function} [callback] The specific callback to remove.\n * @return {boolean} Was this the last callback?\n */\n\nfunction removeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n\n if (!playerCallbacks[name]) {\n return true;\n } // If no callback is passed, remove all callbacks for the event\n\n\n if (!callback) {\n playerCallbacks[name] = [];\n callbackMap.set(player.element, playerCallbacks);\n return true;\n }\n\n var index = playerCallbacks[name].indexOf(callback);\n\n if (index !== -1) {\n playerCallbacks[name].splice(index, 1);\n }\n\n callbackMap.set(player.element, playerCallbacks);\n return playerCallbacks[name] && playerCallbacks[name].length === 0;\n}\n/**\n * Return the first stored callback for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @return {function} The callback, or false if there were none\n */\n\nfunction shiftCallbacks(player, name) {\n var playerCallbacks = getCallbacks(player, name);\n\n if (playerCallbacks.length < 1) {\n return false;\n }\n\n var callback = playerCallbacks.shift();\n removeCallback(player, name, callback);\n return callback;\n}\n/**\n * Move callbacks associated with an element to another element.\n *\n * @param {HTMLElement} oldElement The old element.\n * @param {HTMLElement} newElement The new element.\n * @return {void}\n */\n\nfunction swapCallbacks(oldElement, newElement) {\n var playerCallbacks = callbackMap.get(oldElement);\n callbackMap.set(newElement, playerCallbacks);\n callbackMap.delete(oldElement);\n}\n\n/**\n * @module lib/embed\n */\nvar oEmbedParameters = ['autopause', 'autoplay', 'background', 'byline', 'color', 'controls', 'dnt', 'height', 'id', 'loop', 'maxheight', 'maxwidth', 'muted', 'playsinline', 'portrait', 'responsive', 'speed', 'texttrack', 'title', 'transparent', 'url', 'width'];\n/**\n * Get the 'data-vimeo'-prefixed attributes from an element as an object.\n *\n * @param {HTMLElement} element The element.\n * @param {Object} [defaults={}] The default values to use.\n * @return {Object}\n */\n\nfunction getOEmbedParameters(element) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return oEmbedParameters.reduce(function (params, param) {\n var value = element.getAttribute(\"data-vimeo-\".concat(param));\n\n if (value || value === '') {\n params[param] = value === '' ? 1 : value;\n }\n\n return params;\n }, defaults);\n}\n/**\n * Create an embed from oEmbed data inside an element.\n *\n * @param {object} data The oEmbed data.\n * @param {HTMLElement} element The element to put the iframe in.\n * @return {HTMLIFrameElement} The iframe embed.\n */\n\nfunction createEmbed(_ref, element) {\n var html = _ref.html;\n\n if (!element) {\n throw new TypeError('An element must be provided');\n }\n\n if (element.getAttribute('data-vimeo-initialized') !== null) {\n return element.querySelector('iframe');\n }\n\n var div = document.createElement('div');\n div.innerHTML = html;\n element.appendChild(div.firstChild);\n element.setAttribute('data-vimeo-initialized', 'true');\n return element.querySelector('iframe');\n}\n/**\n * Make an oEmbed call for the specified URL.\n *\n * @param {string} videoUrl The vimeo.com url for the video.\n * @param {Object} [params] Parameters to pass to oEmbed.\n * @param {HTMLElement} element The element.\n * @return {Promise}\n */\n\nfunction getOEmbedData(videoUrl) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var element = arguments.length > 2 ? arguments[2] : undefined;\n return new Promise(function (resolve, reject) {\n if (!isVimeoUrl(videoUrl)) {\n throw new TypeError(\"\\u201C\".concat(videoUrl, \"\\u201D is not a vimeo.com url.\"));\n }\n\n var url = \"https://vimeo.com/api/oembed.json?url=\".concat(encodeURIComponent(videoUrl));\n\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n url += \"&\".concat(param, \"=\").concat(encodeURIComponent(params[param]));\n }\n }\n\n var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();\n xhr.open('GET', url, true);\n\n xhr.onload = function () {\n if (xhr.status === 404) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D was not found.\")));\n return;\n }\n\n if (xhr.status === 403) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n\n try {\n var json = JSON.parse(xhr.responseText); // Check api response for 403 on oembed\n\n if (json.domain_status_code === 403) {\n // We still want to create the embed to give users visual feedback\n createEmbed(json, element);\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n\n xhr.onerror = function () {\n var status = xhr.status ? \" (\".concat(xhr.status, \")\") : '';\n reject(new Error(\"There was an error fetching the embed code from Vimeo\".concat(status, \".\")));\n };\n\n xhr.send();\n });\n}\n/**\n * Initialize all embeds within a specific element\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\n\nfunction initializeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));\n\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error creating an embed: \".concat(error));\n }\n };\n\n elements.forEach(function (element) {\n try {\n // Skip any that have data-vimeo-defer\n if (element.getAttribute('data-vimeo-defer') !== null) {\n return;\n }\n\n var params = getOEmbedParameters(element);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n return createEmbed(data, element);\n }).catch(handleError);\n } catch (error) {\n handleError(error);\n }\n });\n}\n/**\n * Resize embeds when messaged by the player.\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\n\nfunction resizeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoPlayerResizeEmbeds_) {\n return;\n }\n\n window.VimeoPlayerResizeEmbeds_ = true;\n\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n } // 'spacechange' is fired only on embeds with cards\n\n\n if (!event.data || event.data.event !== 'spacechange') {\n return;\n }\n\n var iframes = parent.querySelectorAll('iframe');\n\n for (var i = 0; i < iframes.length; i++) {\n if (iframes[i].contentWindow !== event.source) {\n continue;\n } // Change padding-bottom of the enclosing div to accommodate\n // card carousel without distorting aspect ratio\n\n\n var space = iframes[i].parentElement;\n space.style.paddingBottom = \"\".concat(event.data.data[0].bottom, \"px\");\n break;\n }\n };\n\n window.addEventListener('message', onMessage);\n}\n\n/**\n * @module lib/postmessage\n */\n/**\n * Parse a message received from postMessage.\n *\n * @param {*} data The data received from postMessage.\n * @return {object}\n */\n\nfunction parseMessageData(data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n // If the message cannot be parsed, throw the error as a warning\n console.warn(error);\n return {};\n }\n }\n\n return data;\n}\n/**\n * Post a message to the specified target.\n *\n * @param {Player} player The player object to use.\n * @param {string} method The API method to call.\n * @param {object} params The parameters to send to the player.\n * @return {void}\n */\n\nfunction postMessage(player, method, params) {\n if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {\n return;\n }\n\n var message = {\n method: method\n };\n\n if (params !== undefined) {\n message.value = params;\n } // IE 8 and 9 do not support passing messages, so stringify them\n\n\n var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));\n\n if (ieVersion >= 8 && ieVersion < 10) {\n message = JSON.stringify(message);\n }\n\n player.element.contentWindow.postMessage(message, player.origin);\n}\n/**\n * Parse the data received from a message event.\n *\n * @param {Player} player The player that received the message.\n * @param {(Object|string)} data The message data. Strings will be parsed into JSON.\n * @return {void}\n */\n\nfunction processData(player, data) {\n data = parseMessageData(data);\n var callbacks = [];\n var param;\n\n if (data.event) {\n if (data.event === 'error') {\n var promises = getCallbacks(player, data.data.method);\n promises.forEach(function (promise) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n promise.reject(error);\n removeCallback(player, data.data.method, promise);\n });\n }\n\n callbacks = getCallbacks(player, \"event:\".concat(data.event));\n param = data.data;\n } else if (data.method) {\n var callback = shiftCallbacks(player, data.method);\n\n if (callback) {\n callbacks.push(callback);\n param = data.value;\n }\n }\n\n callbacks.forEach(function (callback) {\n try {\n if (typeof callback === 'function') {\n callback.call(player, param);\n return;\n }\n\n callback.resolve(param);\n } catch (e) {// empty\n }\n });\n}\n\n/* MIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nTerms */\nfunction initializeScreenfull() {\n var fn = function () {\n var val;\n var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'], // New WebKit\n ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'], // Old WebKit\n ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n var i = 0;\n var l = fnMap.length;\n var ret = {};\n\n for (; i < l; i++) {\n val = fnMap[i];\n\n if (val && val[1] in document) {\n for (i = 0; i < val.length; i++) {\n ret[fnMap[0][i]] = val[i];\n }\n\n return ret;\n }\n }\n\n return false;\n }();\n\n var eventNameMap = {\n fullscreenchange: fn.fullscreenchange,\n fullscreenerror: fn.fullscreenerror\n };\n var screenfull = {\n request: function request(element) {\n return new Promise(function (resolve, reject) {\n var onFullScreenEntered = function onFullScreenEntered() {\n screenfull.off('fullscreenchange', onFullScreenEntered);\n resolve();\n };\n\n screenfull.on('fullscreenchange', onFullScreenEntered);\n element = element || document.documentElement;\n var returnPromise = element[fn.requestFullscreen]();\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject);\n }\n });\n },\n exit: function exit() {\n return new Promise(function (resolve, reject) {\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n\n var onFullScreenExit = function onFullScreenExit() {\n screenfull.off('fullscreenchange', onFullScreenExit);\n resolve();\n };\n\n screenfull.on('fullscreenchange', onFullScreenExit);\n var returnPromise = document[fn.exitFullscreen]();\n\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject);\n }\n });\n },\n on: function on(event, callback) {\n var eventName = eventNameMap[event];\n\n if (eventName) {\n document.addEventListener(eventName, callback);\n }\n },\n off: function off(event, callback) {\n var eventName = eventNameMap[event];\n\n if (eventName) {\n document.removeEventListener(eventName, callback);\n }\n }\n };\n Object.defineProperties(screenfull, {\n isFullscreen: {\n get: function get() {\n return Boolean(document[fn.fullscreenElement]);\n }\n },\n element: {\n enumerable: true,\n get: function get() {\n return document[fn.fullscreenElement];\n }\n },\n isEnabled: {\n enumerable: true,\n get: function get() {\n // Coerce to boolean in case of old WebKit\n return Boolean(document[fn.fullscreenEnabled]);\n }\n }\n });\n return screenfull;\n}\n\nvar playerMap = new WeakMap();\nvar readyMap = new WeakMap();\nvar screenfull = {};\n\nvar Player = /*#__PURE__*/function () {\n /**\n * Create a Player.\n *\n * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo\n * player iframe, and id, or a jQuery object.\n * @param {object} [options] oEmbed parameters to use when creating an embed in the element.\n * @return {Player}\n */\n function Player(element) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Player);\n\n /* global jQuery */\n if (window.jQuery && element instanceof jQuery) {\n if (element.length > 1 && window.console && console.warn) {\n console.warn('A jQuery object with multiple elements was passed, using the first element.');\n }\n\n element = element[0];\n } // Find an element by ID\n\n\n if (typeof document !== 'undefined' && typeof element === 'string') {\n element = document.getElementById(element);\n } // Not an element!\n\n\n if (!isDomElement(element)) {\n throw new TypeError('You must pass either a valid element or a valid id.');\n } // Already initialized an embed in this div, so grab the iframe\n\n\n if (element.nodeName !== 'IFRAME') {\n var iframe = element.querySelector('iframe');\n\n if (iframe) {\n element = iframe;\n }\n } // iframe url is not a Vimeo url\n\n\n if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {\n throw new Error('The player element passed isn’t a Vimeo embed.');\n } // If there is already a player object in the map, return that\n\n\n if (playerMap.has(element)) {\n return playerMap.get(element);\n }\n\n this._window = element.ownerDocument.defaultView;\n this.element = element;\n this.origin = '*';\n var readyPromise = new npo_src(function (resolve, reject) {\n _this._onMessage = function (event) {\n if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {\n return;\n }\n\n if (_this.origin === '*') {\n _this.origin = event.origin;\n }\n\n var data = parseMessageData(event.data);\n var isError = data && data.event === 'error';\n var isReadyError = isError && data.data && data.data.method === 'ready';\n\n if (isReadyError) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n reject(error);\n return;\n }\n\n var isReadyEvent = data && data.event === 'ready';\n var isPingResponse = data && data.method === 'ping';\n\n if (isReadyEvent || isPingResponse) {\n _this.element.setAttribute('data-ready', 'true');\n\n resolve();\n return;\n }\n\n processData(_this, data);\n };\n\n _this._window.addEventListener('message', _this._onMessage);\n\n if (_this.element.nodeName !== 'IFRAME') {\n var params = getOEmbedParameters(element, options);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n var iframe = createEmbed(data, element); // Overwrite element with the new iframe,\n // but store reference to the original element\n\n _this.element = iframe;\n _this._originalElement = element;\n swapCallbacks(element, iframe);\n playerMap.set(_this.element, _this);\n return data;\n }).catch(reject);\n }\n }); // Store a copy of this Player in the map\n\n readyMap.set(this, readyPromise);\n playerMap.set(this.element, this); // Send a ping to the iframe so the ready promise will be resolved if\n // the player is already ready.\n\n if (this.element.nodeName === 'IFRAME') {\n postMessage(this, 'ping');\n }\n\n if (screenfull.isEnabled) {\n var exitFullscreen = function exitFullscreen() {\n return screenfull.exit();\n };\n\n screenfull.on('fullscreenchange', function () {\n if (screenfull.isFullscreen) {\n storeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n } else {\n removeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n } // eslint-disable-next-line\n\n\n _this.ready().then(function () {\n postMessage(_this, 'fullscreenchange', screenfull.isFullscreen);\n });\n });\n }\n\n return this;\n }\n /**\n * Get a promise for a method.\n *\n * @param {string} name The API method to call.\n * @param {Object} [args={}] Arguments to send via postMessage.\n * @return {Promise}\n */\n\n\n _createClass(Player, [{\n key: \"callMethod\",\n value: function callMethod(name) {\n var _this2 = this;\n\n var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new npo_src(function (resolve, reject) {\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n return _this2.ready().then(function () {\n storeCallback(_this2, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this2, name, args);\n }).catch(reject);\n });\n }\n /**\n * Get a promise for the value of a player property.\n *\n * @param {string} name The property name\n * @return {Promise}\n */\n\n }, {\n key: \"get\",\n value: function get(name) {\n var _this3 = this;\n\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'get'); // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n\n return _this3.ready().then(function () {\n storeCallback(_this3, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this3, name);\n }).catch(reject);\n });\n }\n /**\n * Get a promise for setting the value of a player property.\n *\n * @param {string} name The API method to call.\n * @param {mixed} value The value to set.\n * @return {Promise}\n */\n\n }, {\n key: \"set\",\n value: function set(name, value) {\n var _this4 = this;\n\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'set');\n\n if (value === undefined || value === null) {\n throw new TypeError('There must be a value to set.');\n } // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n\n\n return _this4.ready().then(function () {\n storeCallback(_this4, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this4, name, value);\n }).catch(reject);\n });\n }\n /**\n * Add an event listener for the specified event. Will call the\n * callback with a single parameter, `data`, that contains the data for\n * that event.\n *\n * @param {string} eventName The name of the event.\n * @param {function(*)} callback The function to call when the event fires.\n * @return {void}\n */\n\n }, {\n key: \"on\",\n value: function on(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n\n if (!callback) {\n throw new TypeError('You must pass a callback function.');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n\n var callbacks = getCallbacks(this, \"event:\".concat(eventName));\n\n if (callbacks.length === 0) {\n this.callMethod('addEventListener', eventName).catch(function () {// Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n\n storeCallback(this, \"event:\".concat(eventName), callback);\n }\n /**\n * Remove an event listener for the specified event. Will remove all\n * listeners for that event if a `callback` isn’t passed, or only that\n * specific callback if it is passed.\n *\n * @param {string} eventName The name of the event.\n * @param {function} [callback] The specific callback to remove.\n * @return {void}\n */\n\n }, {\n key: \"off\",\n value: function off(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n\n if (callback && typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n\n var lastCallback = removeCallback(this, \"event:\".concat(eventName), callback); // If there are no callbacks left, remove the listener\n\n if (lastCallback) {\n this.callMethod('removeEventListener', eventName).catch(function (e) {// Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n }\n /**\n * A promise to load a new video.\n *\n * @promise LoadVideoPromise\n * @fulfill {number} The video with this id successfully loaded.\n * @reject {TypeError} The id was not a number.\n */\n\n /**\n * Load a new video into this embed. The promise will be resolved if\n * the video is successfully loaded, or it will be rejected if it could\n * not be loaded.\n *\n * @param {number|object} options The id of the video or an object with embed options.\n * @return {LoadVideoPromise}\n */\n\n }, {\n key: \"loadVideo\",\n value: function loadVideo(options) {\n return this.callMethod('loadVideo', options);\n }\n /**\n * A promise to perform an action when the Player is ready.\n *\n * @todo document errors\n * @promise LoadVideoPromise\n * @fulfill {void}\n */\n\n /**\n * Trigger a function when the player iframe has initialized. You do not\n * need to wait for `ready` to trigger to begin adding event listeners\n * or calling other methods.\n *\n * @return {ReadyPromise}\n */\n\n }, {\n key: \"ready\",\n value: function ready() {\n var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {\n reject(new Error('Unknown player. Probably unloaded.'));\n });\n return npo_src.resolve(readyPromise);\n }\n /**\n * A promise to add a cue point to the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point to use for removeCuePoint.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n\n /**\n * Add a cue point to the player.\n *\n * @param {number} time The time for the cue point.\n * @param {object} [data] Arbitrary data to be returned with the cue point.\n * @return {AddCuePointPromise}\n */\n\n }, {\n key: \"addCuePoint\",\n value: function addCuePoint(time) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.callMethod('addCuePoint', {\n time: time,\n data: data\n });\n }\n /**\n * A promise to remove a cue point from the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point that was removed.\n * @reject {InvalidCuePoint} The cue point with the specified id was not\n * found.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n\n /**\n * Remove a cue point from the video.\n *\n * @param {string} id The id of the cue point to remove.\n * @return {RemoveCuePointPromise}\n */\n\n }, {\n key: \"removeCuePoint\",\n value: function removeCuePoint(id) {\n return this.callMethod('removeCuePoint', id);\n }\n /**\n * A representation of a text track on a video.\n *\n * @typedef {Object} VimeoTextTrack\n * @property {string} language The ISO language code.\n * @property {string} kind The kind of track it is (captions or subtitles).\n * @property {string} label The human‐readable label for the track.\n */\n\n /**\n * A promise to enable a text track.\n *\n * @promise EnableTextTrackPromise\n * @fulfill {VimeoTextTrack} The text track that was enabled.\n * @reject {InvalidTrackLanguageError} No track was available with the\n * specified language.\n * @reject {InvalidTrackError} No track was available with the specified\n * language and kind.\n */\n\n /**\n * Enable the text track with the specified language, and optionally the\n * specified kind (captions or subtitles).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {string} language The two‐letter language code.\n * @param {string} [kind] The kind of track to enable (captions or subtitles).\n * @return {EnableTextTrackPromise}\n */\n\n }, {\n key: \"enableTextTrack\",\n value: function enableTextTrack(language, kind) {\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n\n return this.callMethod('enableTextTrack', {\n language: language,\n kind: kind\n });\n }\n /**\n * A promise to disable the active text track.\n *\n * @promise DisableTextTrackPromise\n * @fulfill {void} The track was disabled.\n */\n\n /**\n * Disable the currently-active text track.\n *\n * @return {DisableTextTrackPromise}\n */\n\n }, {\n key: \"disableTextTrack\",\n value: function disableTextTrack() {\n return this.callMethod('disableTextTrack');\n }\n /**\n * A promise to pause the video.\n *\n * @promise PausePromise\n * @fulfill {void} The video was paused.\n */\n\n /**\n * Pause the video if it’s playing.\n *\n * @return {PausePromise}\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n return this.callMethod('pause');\n }\n /**\n * A promise to play the video.\n *\n * @promise PlayPromise\n * @fulfill {void} The video was played.\n */\n\n /**\n * Play the video if it’s paused. **Note:** on iOS and some other\n * mobile devices, you cannot programmatically trigger play. Once the\n * viewer has tapped on the play button in the player, however, you\n * will be able to use this function.\n *\n * @return {PlayPromise}\n */\n\n }, {\n key: \"play\",\n value: function play() {\n return this.callMethod('play');\n }\n /**\n * Request that the player enters fullscreen.\n * @return {Promise}\n */\n\n }, {\n key: \"requestFullscreen\",\n value: function requestFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.request(this.element);\n }\n\n return this.callMethod('requestFullscreen');\n }\n /**\n * Request that the player exits fullscreen.\n * @return {Promise}\n */\n\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.exit();\n }\n\n return this.callMethod('exitFullscreen');\n }\n /**\n * Returns true if the player is currently fullscreen.\n * @return {Promise}\n */\n\n }, {\n key: \"getFullscreen\",\n value: function getFullscreen() {\n if (screenfull.isEnabled) {\n return npo_src.resolve(screenfull.isFullscreen);\n }\n\n return this.get('fullscreen');\n }\n /**\n * Request that the player enters picture-in-picture.\n * @return {Promise}\n */\n\n }, {\n key: \"requestPictureInPicture\",\n value: function requestPictureInPicture() {\n return this.callMethod('requestPictureInPicture');\n }\n /**\n * Request that the player exits picture-in-picture.\n * @return {Promise}\n */\n\n }, {\n key: \"exitPictureInPicture\",\n value: function exitPictureInPicture() {\n return this.callMethod('exitPictureInPicture');\n }\n /**\n * Returns true if the player is currently picture-in-picture.\n * @return {Promise}\n */\n\n }, {\n key: \"getPictureInPicture\",\n value: function getPictureInPicture() {\n return this.get('pictureInPicture');\n }\n /**\n * A promise to unload the video.\n *\n * @promise UnloadPromise\n * @fulfill {void} The video was unloaded.\n */\n\n /**\n * Return the player to its initial state.\n *\n * @return {UnloadPromise}\n */\n\n }, {\n key: \"unload\",\n value: function unload() {\n return this.callMethod('unload');\n }\n /**\n * Cleanup the player and remove it from the DOM\n *\n * It won't be usable and a new one should be constructed\n * in order to do any operations.\n *\n * @return {Promise}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n\n return new npo_src(function (resolve) {\n readyMap.delete(_this5);\n playerMap.delete(_this5.element);\n\n if (_this5._originalElement) {\n playerMap.delete(_this5._originalElement);\n\n _this5._originalElement.removeAttribute('data-vimeo-initialized');\n }\n\n if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) {\n _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode);\n } else {\n _this5.element.parentNode.removeChild(_this5.element);\n }\n } // If the clip is private there is a case where the element stays the\n // div element. Destroy should reset the div and remove the iframe child.\n\n\n if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) {\n _this5.element.removeAttribute('data-vimeo-initialized');\n\n var iframe = _this5.element.querySelector('iframe');\n\n if (iframe && iframe.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) {\n iframe.parentNode.parentNode.removeChild(iframe.parentNode);\n } else {\n iframe.parentNode.removeChild(iframe);\n }\n }\n }\n\n _this5._window.removeEventListener('message', _this5._onMessage);\n\n resolve();\n });\n }\n /**\n * A promise to get the autopause behavior of the video.\n *\n * @promise GetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n\n /**\n * Get the autopause behavior for this player.\n *\n * @return {GetAutopausePromise}\n */\n\n }, {\n key: \"getAutopause\",\n value: function getAutopause() {\n return this.get('autopause');\n }\n /**\n * A promise to set the autopause behavior of the video.\n *\n * @promise SetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n\n /**\n * Enable or disable the autopause behavior of this player.\n *\n * By default, when another video is played in the same browser, this\n * player will automatically pause. Unless you have a specific reason\n * for doing so, we recommend that you leave autopause set to the\n * default (`true`).\n *\n * @param {boolean} autopause\n * @return {SetAutopausePromise}\n */\n\n }, {\n key: \"setAutopause\",\n value: function setAutopause(autopause) {\n return this.set('autopause', autopause);\n }\n /**\n * A promise to get the buffered property of the video.\n *\n * @promise GetBufferedPromise\n * @fulfill {Array} Buffered Timeranges converted to an Array.\n */\n\n /**\n * Get the buffered property of the video.\n *\n * @return {GetBufferedPromise}\n */\n\n }, {\n key: \"getBuffered\",\n value: function getBuffered() {\n return this.get('buffered');\n }\n /**\n * @typedef {Object} CameraProperties\n * @prop {number} props.yaw - Number between 0 and 360.\n * @prop {number} props.pitch - Number between -90 and 90.\n * @prop {number} props.roll - Number between -180 and 180.\n * @prop {number} props.fov - The field of view in degrees.\n */\n\n /**\n * A promise to get the camera properties of the player.\n *\n * @promise GetCameraPromise\n * @fulfill {CameraProperties} The camera properties.\n */\n\n /**\n * For 360° videos get the camera properties for this player.\n *\n * @return {GetCameraPromise}\n */\n\n }, {\n key: \"getCameraProps\",\n value: function getCameraProps() {\n return this.get('cameraProps');\n }\n /**\n * A promise to set the camera properties of the player.\n *\n * @promise SetCameraPromise\n * @fulfill {Object} The camera was successfully set.\n * @reject {RangeError} The range was out of bounds.\n */\n\n /**\n * For 360° videos set the camera properties for this player.\n *\n * @param {CameraProperties} camera The camera properties\n * @return {SetCameraPromise}\n */\n\n }, {\n key: \"setCameraProps\",\n value: function setCameraProps(camera) {\n return this.set('cameraProps', camera);\n }\n /**\n * A representation of a chapter.\n *\n * @typedef {Object} VimeoChapter\n * @property {number} startTime The start time of the chapter.\n * @property {object} title The title of the chapter.\n * @property {number} index The place in the order of Chapters. Starts at 1.\n */\n\n /**\n * A promise to get chapters for the video.\n *\n * @promise GetChaptersPromise\n * @fulfill {VimeoChapter[]} The chapters for the video.\n */\n\n /**\n * Get an array of all the chapters for the video.\n *\n * @return {GetChaptersPromise}\n */\n\n }, {\n key: \"getChapters\",\n value: function getChapters() {\n return this.get('chapters');\n }\n /**\n * A promise to get the currently active chapter.\n *\n * @promise GetCurrentChaptersPromise\n * @fulfill {VimeoChapter|undefined} The current chapter for the video.\n */\n\n /**\n * Get the currently active chapter for the video.\n *\n * @return {GetCurrentChaptersPromise}\n */\n\n }, {\n key: \"getCurrentChapter\",\n value: function getCurrentChapter() {\n return this.get('currentChapter');\n }\n /**\n * A promise to get the color of the player.\n *\n * @promise GetColorPromise\n * @fulfill {string} The hex color of the player.\n */\n\n /**\n * Get the color for this player.\n *\n * @return {GetColorPromise}\n */\n\n }, {\n key: \"getColor\",\n value: function getColor() {\n return this.get('color');\n }\n /**\n * A promise to set the color of the player.\n *\n * @promise SetColorPromise\n * @fulfill {string} The color was successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n\n /**\n * Set the color of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n *\n * @param {string} color The hex or rgb color string to set.\n * @return {SetColorPromise}\n */\n\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n return this.set('color', color);\n }\n /**\n * A representation of a cue point.\n *\n * @typedef {Object} VimeoCuePoint\n * @property {number} time The time of the cue point.\n * @property {object} data The data passed when adding the cue point.\n * @property {string} id The unique id for use with removeCuePoint.\n */\n\n /**\n * A promise to get the cue points of a video.\n *\n * @promise GetCuePointsPromise\n * @fulfill {VimeoCuePoint[]} The cue points added to the video.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n\n /**\n * Get an array of the cue points added to the video.\n *\n * @return {GetCuePointsPromise}\n */\n\n }, {\n key: \"getCuePoints\",\n value: function getCuePoints() {\n return this.get('cuePoints');\n }\n /**\n * A promise to get the current time of the video.\n *\n * @promise GetCurrentTimePromise\n * @fulfill {number} The current time in seconds.\n */\n\n /**\n * Get the current playback position in seconds.\n *\n * @return {GetCurrentTimePromise}\n */\n\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.get('currentTime');\n }\n /**\n * A promise to set the current time of the video.\n *\n * @promise SetCurrentTimePromise\n * @fulfill {number} The actual current time that was set.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n */\n\n /**\n * Set the current playback position in seconds. If the player was\n * paused, it will remain paused. Likewise, if the player was playing,\n * it will resume playing once the video has buffered.\n *\n * You can provide an accurate time and the player will attempt to seek\n * to as close to that time as possible. The exact time will be the\n * fulfilled value of the promise.\n *\n * @param {number} currentTime\n * @return {SetCurrentTimePromise}\n */\n\n }, {\n key: \"setCurrentTime\",\n value: function setCurrentTime(currentTime) {\n return this.set('currentTime', currentTime);\n }\n /**\n * A promise to get the duration of the video.\n *\n * @promise GetDurationPromise\n * @fulfill {number} The duration in seconds.\n */\n\n /**\n * Get the duration of the video in seconds. It will be rounded to the\n * nearest second before playback begins, and to the nearest thousandth\n * of a second after playback begins.\n *\n * @return {GetDurationPromise}\n */\n\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.get('duration');\n }\n /**\n * A promise to get the ended state of the video.\n *\n * @promise GetEndedPromise\n * @fulfill {boolean} Whether or not the video has ended.\n */\n\n /**\n * Get the ended state of the video. The video has ended if\n * `currentTime === duration`.\n *\n * @return {GetEndedPromise}\n */\n\n }, {\n key: \"getEnded\",\n value: function getEnded() {\n return this.get('ended');\n }\n /**\n * A promise to get the loop state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the player is set to loop.\n */\n\n /**\n * Get the loop state of the player.\n *\n * @return {GetLoopPromise}\n */\n\n }, {\n key: \"getLoop\",\n value: function getLoop() {\n return this.get('loop');\n }\n /**\n * A promise to set the loop state of the player.\n *\n * @promise SetLoopPromise\n * @fulfill {boolean} The loop state that was set.\n */\n\n /**\n * Set the loop state of the player. When set to `true`, the player\n * will start over immediately once playback ends.\n *\n * @param {boolean} loop\n * @return {SetLoopPromise}\n */\n\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n return this.set('loop', loop);\n }\n /**\n * A promise to set the muted state of the player.\n *\n * @promise SetMutedPromise\n * @fulfill {boolean} The muted state that was set.\n */\n\n /**\n * Set the muted state of the player. When set to `true`, the player\n * volume will be muted.\n *\n * @param {boolean} muted\n * @return {SetMutedPromise}\n */\n\n }, {\n key: \"setMuted\",\n value: function setMuted(muted) {\n return this.set('muted', muted);\n }\n /**\n * A promise to get the muted state of the player.\n *\n * @promise GetMutedPromise\n * @fulfill {boolean} Whether or not the player is muted.\n */\n\n /**\n * Get the muted state of the player.\n *\n * @return {GetMutedPromise}\n */\n\n }, {\n key: \"getMuted\",\n value: function getMuted() {\n return this.get('muted');\n }\n /**\n * A promise to get the paused state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the video is paused.\n */\n\n /**\n * Get the paused state of the player.\n *\n * @return {GetLoopPromise}\n */\n\n }, {\n key: \"getPaused\",\n value: function getPaused() {\n return this.get('paused');\n }\n /**\n * A promise to get the playback rate of the player.\n *\n * @promise GetPlaybackRatePromise\n * @fulfill {number} The playback rate of the player on a scale from 0.5 to 2.\n */\n\n /**\n * Get the playback rate of the player on a scale from `0.5` to `2`.\n *\n * @return {GetPlaybackRatePromise}\n */\n\n }, {\n key: \"getPlaybackRate\",\n value: function getPlaybackRate() {\n return this.get('playbackRate');\n }\n /**\n * A promise to set the playbackrate of the player.\n *\n * @promise SetPlaybackRatePromise\n * @fulfill {number} The playback rate was set.\n * @reject {RangeError} The playback rate was less than 0.5 or greater than 2.\n */\n\n /**\n * Set the playback rate of the player on a scale from `0.5` to `2`. When set\n * via the API, the playback rate will not be synchronized to other\n * players or stored as the viewer's preference.\n *\n * @param {number} playbackRate\n * @return {SetPlaybackRatePromise}\n */\n\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(playbackRate) {\n return this.set('playbackRate', playbackRate);\n }\n /**\n * A promise to get the played property of the video.\n *\n * @promise GetPlayedPromise\n * @fulfill {Array} Played Timeranges converted to an Array.\n */\n\n /**\n * Get the played property of the video.\n *\n * @return {GetPlayedPromise}\n */\n\n }, {\n key: \"getPlayed\",\n value: function getPlayed() {\n return this.get('played');\n }\n /**\n * A promise to get the qualities available of the current video.\n *\n * @promise GetQualitiesPromise\n * @fulfill {Array} The qualities of the video.\n */\n\n /**\n * Get the qualities of the current video.\n *\n * @return {GetQualitiesPromise}\n */\n\n }, {\n key: \"getQualities\",\n value: function getQualities() {\n return this.get('qualities');\n }\n /**\n * A promise to get the current set quality of the video.\n *\n * @promise GetQualityPromise\n * @fulfill {string} The current set quality.\n */\n\n /**\n * Get the current set quality of the video.\n *\n * @return {GetQualityPromise}\n */\n\n }, {\n key: \"getQuality\",\n value: function getQuality() {\n return this.get('quality');\n }\n /**\n * A promise to set the video quality.\n *\n * @promise SetQualityPromise\n * @fulfill {number} The quality was set.\n * @reject {RangeError} The quality is not available.\n */\n\n /**\n * Set a video quality.\n *\n * @param {string} quality\n * @return {SetQualityPromise}\n */\n\n }, {\n key: \"setQuality\",\n value: function setQuality(quality) {\n return this.set('quality', quality);\n }\n /**\n * A promise to get the seekable property of the video.\n *\n * @promise GetSeekablePromise\n * @fulfill {Array} Seekable Timeranges converted to an Array.\n */\n\n /**\n * Get the seekable property of the video.\n *\n * @return {GetSeekablePromise}\n */\n\n }, {\n key: \"getSeekable\",\n value: function getSeekable() {\n return this.get('seekable');\n }\n /**\n * A promise to get the seeking property of the player.\n *\n * @promise GetSeekingPromise\n * @fulfill {boolean} Whether or not the player is currently seeking.\n */\n\n /**\n * Get if the player is currently seeking.\n *\n * @return {GetSeekingPromise}\n */\n\n }, {\n key: \"getSeeking\",\n value: function getSeeking() {\n return this.get('seeking');\n }\n /**\n * A promise to get the text tracks of a video.\n *\n * @promise GetTextTracksPromise\n * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.\n */\n\n /**\n * Get an array of the text tracks that exist for the video.\n *\n * @return {GetTextTracksPromise}\n */\n\n }, {\n key: \"getTextTracks\",\n value: function getTextTracks() {\n return this.get('textTracks');\n }\n /**\n * A promise to get the embed code for the video.\n *\n * @promise GetVideoEmbedCodePromise\n * @fulfill {string} The `